Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(982)

Side by Side Diff: chrome/browser/sync/test/integration/quiesce_status_change_checker.cc

Issue 2354613002: [Sync] Fix namespaces for the browser_sync component. (Closed)
Patch Set: Address comments. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync/test/integration/quiesce_status_change_checker.h" 5 #include "chrome/browser/sync/test/integration/quiesce_status_change_checker.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/scoped_observer.h" 10 #include "base/scoped_observer.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "components/browser_sync/profile_sync_service.h" 13 #include "components/browser_sync/profile_sync_service.h"
14 #include "components/sync/engine/cycle/sync_cycle_snapshot.h" 14 #include "components/sync/engine/cycle/sync_cycle_snapshot.h"
15 15
16 namespace { 16 namespace {
17 17
18 // Returns true if this service is disabled. 18 // Returns true if this service is disabled.
19 bool IsSyncDisabled(ProfileSyncService* service) { 19 bool IsSyncDisabled(browser_sync::ProfileSyncService* service) {
20 return !service->IsSetupInProgress() && !service->IsFirstSetupComplete(); 20 return !service->IsSetupInProgress() && !service->IsFirstSetupComplete();
21 } 21 }
22 22
23 // Returns true if these services have matching progress markers. 23 // Returns true if these services have matching progress markers.
24 bool ProgressMarkersMatch(const ProfileSyncService* service1, 24 bool ProgressMarkersMatch(const browser_sync::ProfileSyncService* service1,
25 const ProfileSyncService* service2) { 25 const browser_sync::ProfileSyncService* service2) {
26 const syncer::ModelTypeSet common_types = 26 const syncer::ModelTypeSet common_types =
27 Intersection(service1->GetActiveDataTypes(), 27 Intersection(service1->GetActiveDataTypes(),
28 service2->GetActiveDataTypes()); 28 service2->GetActiveDataTypes());
29 29
30 const syncer::SyncCycleSnapshot& snap1 = service1->GetLastCycleSnapshot(); 30 const syncer::SyncCycleSnapshot& snap1 = service1->GetLastCycleSnapshot();
31 const syncer::SyncCycleSnapshot& snap2 = service2->GetLastCycleSnapshot(); 31 const syncer::SyncCycleSnapshot& snap2 = service2->GetLastCycleSnapshot();
32 32
33 for (syncer::ModelTypeSet::Iterator type_it = common_types.First(); 33 for (syncer::ModelTypeSet::Iterator type_it = common_types.First();
34 type_it.Good(); type_it.Inc()) { 34 type_it.Good(); type_it.Inc()) {
35 // Look up the progress markers. Fail if either one is missing. 35 // Look up the progress markers. Fail if either one is missing.
(...skipping 27 matching lines...) Expand all
63 // safest time to check it is when the ProfileSyncService emits an 63 // safest time to check it is when the ProfileSyncService emits an
64 // OnStateChanged() event. This class waits for those events and updates its 64 // OnStateChanged() event. This class waits for those events and updates its
65 // cached HasLatestProgressMarkers state every time that event occurs. 65 // cached HasLatestProgressMarkers state every time that event occurs.
66 // 66 //
67 // See the comments in UpdatedProgressMarkerChecker for more details. 67 // See the comments in UpdatedProgressMarkerChecker for more details.
68 // 68 //
69 // The long-term plan is to deprecate this hack by replacing all its usees with 69 // The long-term plan is to deprecate this hack by replacing all its usees with
70 // more reliable status checkers. 70 // more reliable status checkers.
71 class ProgressMarkerWatcher : public sync_driver::SyncServiceObserver { 71 class ProgressMarkerWatcher : public sync_driver::SyncServiceObserver {
72 public: 72 public:
73 ProgressMarkerWatcher( 73 ProgressMarkerWatcher(browser_sync::ProfileSyncService* service,
74 ProfileSyncService* service, 74 QuiesceStatusChangeChecker* quiesce_checker);
75 QuiesceStatusChangeChecker* quiesce_checker);
76 ~ProgressMarkerWatcher() override; 75 ~ProgressMarkerWatcher() override;
77 void OnStateChanged() override; 76 void OnStateChanged() override;
78 77
79 bool HasLatestProgressMarkers(); 78 bool HasLatestProgressMarkers();
80 bool IsSyncDisabled(); 79 bool IsSyncDisabled();
81 80
82 private: 81 private:
83 void UpdateHasLatestProgressMarkers(); 82 void UpdateHasLatestProgressMarkers();
84 83
85 ProfileSyncService* service_; 84 browser_sync::ProfileSyncService* service_;
86 QuiesceStatusChangeChecker* quiesce_checker_; 85 QuiesceStatusChangeChecker* quiesce_checker_;
87 ScopedObserver<ProfileSyncService, ProgressMarkerWatcher> scoped_observer_; 86 ScopedObserver<browser_sync::ProfileSyncService, ProgressMarkerWatcher>
87 scoped_observer_;
88 bool probably_has_latest_progress_markers_; 88 bool probably_has_latest_progress_markers_;
89 }; 89 };
90 90
91 ProgressMarkerWatcher::ProgressMarkerWatcher( 91 ProgressMarkerWatcher::ProgressMarkerWatcher(
92 ProfileSyncService* service, 92 browser_sync::ProfileSyncService* service,
93 QuiesceStatusChangeChecker* quiesce_checker) 93 QuiesceStatusChangeChecker* quiesce_checker)
94 : service_(service), 94 : service_(service),
95 quiesce_checker_(quiesce_checker), 95 quiesce_checker_(quiesce_checker),
96 scoped_observer_(this), 96 scoped_observer_(this),
97 probably_has_latest_progress_markers_(false) { 97 probably_has_latest_progress_markers_(false) {
98 scoped_observer_.Add(service); 98 scoped_observer_.Add(service);
99 UpdateHasLatestProgressMarkers(); 99 UpdateHasLatestProgressMarkers();
100 } 100 }
101 101
102 ProgressMarkerWatcher::~ProgressMarkerWatcher() { } 102 ProgressMarkerWatcher::~ProgressMarkerWatcher() { }
103 103
104 void ProgressMarkerWatcher::OnStateChanged() { 104 void ProgressMarkerWatcher::OnStateChanged() {
105 UpdateHasLatestProgressMarkers(); 105 UpdateHasLatestProgressMarkers();
106 quiesce_checker_->OnServiceStateChanged(service_); 106 quiesce_checker_->OnServiceStateChanged(service_);
107 } 107 }
(...skipping 28 matching lines...) Expand all
136 136
137 bool ProgressMarkerWatcher::HasLatestProgressMarkers() { 137 bool ProgressMarkerWatcher::HasLatestProgressMarkers() {
138 return probably_has_latest_progress_markers_; 138 return probably_has_latest_progress_markers_;
139 } 139 }
140 140
141 bool ProgressMarkerWatcher::IsSyncDisabled() { 141 bool ProgressMarkerWatcher::IsSyncDisabled() {
142 return ::IsSyncDisabled(service_); 142 return ::IsSyncDisabled(service_);
143 } 143 }
144 144
145 QuiesceStatusChangeChecker::QuiesceStatusChangeChecker( 145 QuiesceStatusChangeChecker::QuiesceStatusChangeChecker(
146 std::vector<ProfileSyncService*> services) 146 std::vector<browser_sync::ProfileSyncService*> services)
147 : services_(services) { 147 : services_(services) {
148 DCHECK_LE(1U, services_.size()); 148 DCHECK_LE(1U, services_.size());
149 for (size_t i = 0; i < services_.size(); ++i) { 149 for (size_t i = 0; i < services_.size(); ++i) {
150 observers_.push_back(new ProgressMarkerWatcher(services[i], this)); 150 observers_.push_back(new ProgressMarkerWatcher(services[i], this));
151 } 151 }
152 } 152 }
153 153
154 QuiesceStatusChangeChecker::~QuiesceStatusChangeChecker() {} 154 QuiesceStatusChangeChecker::~QuiesceStatusChangeChecker() {}
155 155
156 void QuiesceStatusChangeChecker::Wait() { 156 void QuiesceStatusChangeChecker::Wait() {
157 DVLOG(1) << "Await: " << GetDebugMessage(); 157 DVLOG(1) << "Await: " << GetDebugMessage();
(...skipping 13 matching lines...) Expand all
171 if ((*it)->IsSyncDisabled()) { 171 if ((*it)->IsSyncDisabled()) {
172 continue; // Skip disabled services. 172 continue; // Skip disabled services.
173 } 173 }
174 174
175 if (!(*it)->HasLatestProgressMarkers()) { 175 if (!(*it)->HasLatestProgressMarkers()) {
176 DVLOG(1) << "Not quiesced: Progress markers are old."; 176 DVLOG(1) << "Not quiesced: Progress markers are old.";
177 return false; 177 return false;
178 } 178 }
179 } 179 }
180 180
181 std::vector<ProfileSyncService*> enabled_services; 181 std::vector<browser_sync::ProfileSyncService*> enabled_services;
182 for (std::vector<ProfileSyncService*>::const_iterator it = services_.begin(); 182 for (std::vector<browser_sync::ProfileSyncService*>::const_iterator it =
183 services_.begin();
183 it != services_.end(); ++it) { 184 it != services_.end(); ++it) {
184 if (!IsSyncDisabled(*it)) { 185 if (!IsSyncDisabled(*it)) {
185 enabled_services.push_back(*it); 186 enabled_services.push_back(*it);
186 } 187 }
187 } 188 }
188 189
189 // Return true if we have nothing to compare against. 190 // Return true if we have nothing to compare against.
190 if (enabled_services.size() <= 1) { 191 if (enabled_services.size() <= 1) {
191 return true; 192 return true;
192 } 193 }
193 194
194 std::vector<ProfileSyncService*>::const_iterator it1 = 195 std::vector<browser_sync::ProfileSyncService*>::const_iterator it1 =
195 enabled_services.begin(); 196 enabled_services.begin();
196 std::vector<ProfileSyncService*>::const_iterator it2 = 197 std::vector<browser_sync::ProfileSyncService*>::const_iterator it2 =
197 enabled_services.begin(); 198 enabled_services.begin();
198 it2++; 199 it2++;
199 200
200 while (it2 != enabled_services.end()) { 201 while (it2 != enabled_services.end()) {
201 // Return false if there is a progress marker mismatch. 202 // Return false if there is a progress marker mismatch.
202 if (!ProgressMarkersMatch(*it1, *it2)) { 203 if (!ProgressMarkersMatch(*it1, *it2)) {
203 DVLOG(1) << "Not quiesced: Progress marker mismatch."; 204 DVLOG(1) << "Not quiesced: Progress marker mismatch.";
204 return false; 205 return false;
205 } 206 }
206 it1++; 207 it1++;
207 it2++; 208 it2++;
208 } 209 }
209 210
210 return true; 211 return true;
211 } 212 }
212 213
213 std::string QuiesceStatusChangeChecker::GetDebugMessage() const { 214 std::string QuiesceStatusChangeChecker::GetDebugMessage() const {
214 return base::StringPrintf("Waiting for quiescence of %" PRIuS " clients", 215 return base::StringPrintf("Waiting for quiescence of %" PRIuS " clients",
215 services_.size()); 216 services_.size());
216 } 217 }
217 218
218 void QuiesceStatusChangeChecker::OnServiceStateChanged( 219 void QuiesceStatusChangeChecker::OnServiceStateChanged(
219 ProfileSyncService* service) { 220 browser_sync::ProfileSyncService* service) {
220 CheckExitCondition(); 221 CheckExitCondition();
221 } 222 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698