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

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

Issue 490643004: sync: Refactor migration integration tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync/test/integration/migration_watcher.h"
6
7 #include "chrome/browser/sync/profile_sync_service.h"
8 #include "chrome/browser/sync/test/integration/migration_waiter.h"
9 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
10
11 MigrationWatcher::MigrationWatcher(ProfileSyncServiceHarness* harness)
12 : harness_(harness), migration_waiter_(NULL) {
13 browser_sync::BackendMigrator* migrator =
14 harness_->service()->GetBackendMigratorForTest();
15 // PSS must have a migrator after sync is setup and initial data type
16 // configuration is complete.
17 migrator->AddMigrationObserver(this);
18 }
19
20 MigrationWatcher::~MigrationWatcher() {
21 DCHECK(!migration_waiter_);
22 }
23
24 bool MigrationWatcher::HasPendingBackendMigration() const {
25 browser_sync::BackendMigrator* migrator =
26 harness_->service()->GetBackendMigratorForTest();
27 return migrator && migrator->state() != browser_sync::BackendMigrator::IDLE;
28 }
29
30 syncer::ModelTypeSet MigrationWatcher::GetMigratedTypes() const {
31 return migrated_types_;
32 }
33
34 void MigrationWatcher::OnMigrationStateChange() {
35 if (HasPendingBackendMigration()) {
36 // A new bunch of data types are in the process of being migrated. Merge
37 // them into |pending_types_|.
38 pending_types_.PutAll(harness_->service()
39 ->GetBackendMigratorForTest()
40 ->GetPendingMigrationTypesForTest());
41 DVLOG(1) << harness_->profile_debug_name()
42 << ": new pending migration types "
43 << syncer::ModelTypeSetToString(pending_types_);
44 } else {
45 // Migration just finished for a bunch of data types. Merge them into
46 // |migrated_types_|.
47 migrated_types_.PutAll(pending_types_);
Nicolas Zea 2014/08/20 22:24:10 Does migrated_types_ == ProtocolTypes().Differenc
rlarocque 2014/08/21 00:41:20 No, that won't work. This MigrationWatcher can li
48 pending_types_.Clear();
49 DVLOG(1) << harness_->profile_debug_name() << ": new migrated types "
50 << syncer::ModelTypeSetToString(migrated_types_);
51 }
52
53 // Manually trigger a check of the exit condition.
54 if (migration_waiter_)
55 migration_waiter_->OnMigrationStateChange();
56 }
57
58 void MigrationWatcher::set_migration_waiter(MigrationWaiter* waiter) {
59 DCHECK(!migration_waiter_);
60 migration_waiter_ = waiter;
61 }
62
63 void MigrationWatcher::clear_migration_waiter() {
64 DCHECK(migration_waiter_);
65 migration_waiter_ = NULL;
66 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698