File: workspace_desk_helper.cc

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (130 lines) | stat: -rw-r--r-- 3,661 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/sync/test/integration/workspace_desk_helper.h"

#include <sstream>

#include "base/check_op.h"
#include "base/memory/raw_ptr.h"
#include "chrome/browser/sync/test/integration/sync_test.h"
#include "components/desks_storage/core/desk_model.h"
#include "components/desks_storage/core/desk_model_observer.h"
#include "components/desks_storage/core/desk_sync_service.h"

namespace workspace_desk_helper {

DeskUuidChecker::DeskUuidChecker(desks_storage::DeskSyncService* service,
                                 const base::Uuid& uuid)
    : uuid_(uuid), service_(service) {
  DCHECK(service);
  service->GetDeskModel()->AddObserver(this);
}

DeskUuidChecker::~DeskUuidChecker() {
  service_->GetDeskModel()->RemoveObserver(this);
}

bool DeskUuidChecker::IsExitConditionSatisfied(std::ostream* os) {
  *os << "Waiting for data for uuid '" + uuid_.AsLowercaseString() +
             "' to be added/updated.";

  desks_storage::DeskModel* model = service_->GetDeskModel();
  for (const base::Uuid& uuid : model->GetAllEntryUuids()) {
    if (uuid == uuid_) {
      return true;
    }
  }
  return false;
}

void DeskUuidChecker::DeskModelLoaded() {
  CheckExitCondition();
}

void DeskUuidChecker::EntriesAddedOrUpdatedRemotely(
    const std::vector<raw_ptr<const ash::DeskTemplate, VectorExperimental>>&
        new_entries) {
  CheckExitCondition();
}

void DeskUuidChecker::EntriesRemovedRemotely(
    const std::vector<base::Uuid>& uuids) {
  CheckExitCondition();
}

// DeskUuidDeletedChecker
DeskUuidDeletedChecker::DeskUuidDeletedChecker(
    desks_storage::DeskSyncService* service,
    const base::Uuid& uuid)
    : uuid_(uuid), service_(service) {
  DCHECK(service);
  service->GetDeskModel()->AddObserver(this);
}

DeskUuidDeletedChecker::~DeskUuidDeletedChecker() {
  service_->GetDeskModel()->RemoveObserver(this);
}

bool DeskUuidDeletedChecker::IsExitConditionSatisfied(std::ostream* os) {
  *os << "Waiting for data for uuid '" + uuid_.AsLowercaseString() +
             "' to be deleted.";

  desks_storage::DeskModel* model = service_->GetDeskModel();
  for (const base::Uuid& uuid : model->GetAllEntryUuids()) {
    if (uuid == uuid_) {
      return false;
    }
  }
  return true;
}

void DeskUuidDeletedChecker::DeskModelLoaded() {
  CheckExitCondition();
}

void DeskUuidDeletedChecker::EntriesAddedOrUpdatedRemotely(
    const std::vector<raw_ptr<const ash::DeskTemplate, VectorExperimental>>&
        new_entries) {
  CheckExitCondition();
}

void DeskUuidDeletedChecker::EntriesRemovedRemotely(
    const std::vector<base::Uuid>& uuids) {
  CheckExitCondition();
}

// DeskModelReadyChecker
DeskModelReadyChecker::DeskModelReadyChecker(
    desks_storage::DeskSyncService* service)
    : service_(service) {
  DCHECK(service);
  service->GetDeskModel()->AddObserver(this);
}

DeskModelReadyChecker::~DeskModelReadyChecker() {
  service_->GetDeskModel()->RemoveObserver(this);
}

bool DeskModelReadyChecker::IsExitConditionSatisfied(std::ostream* os) {
  *os << "Waiting for model to become ready.";
  return service_->GetDeskModel()->IsReady();
}

void DeskModelReadyChecker::DeskModelLoaded() {
  CheckExitCondition();
}

void DeskModelReadyChecker::EntriesAddedOrUpdatedRemotely(
    const std::vector<raw_ptr<const ash::DeskTemplate, VectorExperimental>>&
        new_entries) {
  CheckExitCondition();
}

void DeskModelReadyChecker::EntriesRemovedRemotely(
    const std::vector<base::Uuid>& uuids) {
  CheckExitCondition();
}

}  // namespace workspace_desk_helper