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

Side by Side Diff: chrome/browser/sync/profile_sync_service_harness.cc

Issue 13197004: Draft: InvalidationService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Passes tests Created 7 years, 8 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/profile_sync_service_harness.h" 5 #include "chrome/browser/sync/profile_sync_service_harness.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <iterator> 8 #include <iterator>
9 #include <ostream> 9 #include <ostream>
10 #include <set> 10 #include <set>
11 #include <sstream> 11 #include <sstream>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/base64.h" 14 #include "base/base64.h"
15 #include "base/bind.h" 15 #include "base/bind.h"
16 #include "base/command_line.h" 16 #include "base/command_line.h"
17 #include "base/compiler_specific.h" 17 #include "base/compiler_specific.h"
18 #include "base/json/json_writer.h" 18 #include "base/json/json_writer.h"
19 #include "base/location.h" 19 #include "base/location.h"
20 #include "base/logging.h" 20 #include "base/logging.h"
21 #include "base/memory/ref_counted.h" 21 #include "base/memory/ref_counted.h"
22 #include "base/message_loop.h" 22 #include "base/message_loop.h"
23 #include "chrome/browser/p2p_invalidation_service.h"
23 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
24 #include "chrome/browser/signin/signin_manager.h" 25 #include "chrome/browser/signin/signin_manager.h"
25 #include "chrome/browser/sync/about_sync_util.h" 26 #include "chrome/browser/sync/about_sync_util.h"
26 #include "chrome/browser/sync/glue/data_type_controller.h" 27 #include "chrome/browser/sync/glue/data_type_controller.h"
27 #include "chrome/browser/sync/profile_sync_service_factory.h" 28 #include "chrome/browser/sync/profile_sync_service_factory.h"
28 #include "chrome/common/chrome_switches.h" 29 #include "chrome/common/chrome_switches.h"
29 #include "sync/internal_api/public/base/progress_marker_map.h" 30 #include "sync/internal_api/public/base/progress_marker_map.h"
30 #include "sync/internal_api/public/sessions/sync_session_snapshot.h" 31 #include "sync/internal_api/public/sessions/sync_session_snapshot.h"
31 #include "sync/internal_api/public/util/sync_string_conversions.h" 32 #include "sync/internal_api/public/util/sync_string_conversions.h"
32 33
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 } 95 }
95 96
96 bool StateChangeTimeoutEvent::Abort() { 97 bool StateChangeTimeoutEvent::Abort() {
97 aborted_ = true; 98 aborted_ = true;
98 caller_ = NULL; 99 caller_ = NULL;
99 return !did_timeout_; 100 return !did_timeout_;
100 } 101 }
101 102
102 ProfileSyncServiceHarness::ProfileSyncServiceHarness( 103 ProfileSyncServiceHarness::ProfileSyncServiceHarness(
103 Profile* profile, 104 Profile* profile,
105 P2PInvalidationService* p2p_invalidation_service,
104 const std::string& username, 106 const std::string& username,
105 const std::string& password) 107 const std::string& password)
106 : waiting_for_encryption_type_(syncer::UNSPECIFIED), 108 : waiting_for_encryption_type_(syncer::UNSPECIFIED),
107 wait_state_(INITIAL_WAIT_STATE), 109 wait_state_(INITIAL_WAIT_STATE),
108 profile_(profile), 110 profile_(profile),
109 service_(NULL), 111 service_(NULL),
112 p2p_invalidation_service_(p2p_invalidation_service),
110 progress_marker_partner_(NULL), 113 progress_marker_partner_(NULL),
111 username_(username), 114 username_(username),
112 password_(password), 115 password_(password),
113 profile_debug_name_(profile->GetDebugName()), 116 profile_debug_name_(profile->GetDebugName()),
114 waiting_for_status_change_(false) { 117 waiting_for_status_change_(false) {
118 DCHECK(p2p_invalidation_service);
115 if (IsSyncAlreadySetup()) { 119 if (IsSyncAlreadySetup()) {
116 service_ = ProfileSyncServiceFactory::GetInstance()->GetForProfile( 120 service_ = ProfileSyncServiceFactory::GetInstance()->GetForProfile(
117 profile_); 121 profile_);
118 service_->AddObserver(this); 122 service_->AddObserver(this);
119 ignore_result(TryListeningToMigrationEvents()); 123 ignore_result(TryListeningToMigrationEvents());
120 wait_state_ = FULLY_SYNCED; 124 wait_state_ = FULLY_SYNCED;
121 } 125 }
122 } 126 }
123 127
124 ProfileSyncServiceHarness::~ProfileSyncServiceHarness() { 128 ProfileSyncServiceHarness::~ProfileSyncServiceHarness() {
125 if (service_->HasObserver(this)) 129 if (service_->HasObserver(this))
126 service_->RemoveObserver(this); 130 service_->RemoveObserver(this);
127 } 131 }
128 132
129 // static 133 // static
130 ProfileSyncServiceHarness* ProfileSyncServiceHarness::CreateAndAttach( 134 ProfileSyncServiceHarness* ProfileSyncServiceHarness::CreateAndAttach(
131 Profile* profile) { 135 Profile* profile, P2PInvalidationService *p2p_invalidation_service) {
132 ProfileSyncServiceFactory* f = ProfileSyncServiceFactory::GetInstance(); 136 ProfileSyncServiceFactory* f = ProfileSyncServiceFactory::GetInstance();
133 if (!f->HasProfileSyncService(profile)) { 137 if (!f->HasProfileSyncService(profile)) {
134 NOTREACHED() << "Profile has never signed into sync."; 138 NOTREACHED() << "Profile has never signed into sync.";
135 return NULL; 139 return NULL;
136 } 140 }
137 return new ProfileSyncServiceHarness(profile, "", ""); 141 return new ProfileSyncServiceHarness(profile,
142 p2p_invalidation_service,
143 "",
144 "");
138 } 145 }
139 146
140 void ProfileSyncServiceHarness::SetCredentials(const std::string& username, 147 void ProfileSyncServiceHarness::SetCredentials(const std::string& username,
141 const std::string& password) { 148 const std::string& password) {
142 username_ = username; 149 username_ = username;
143 password_ = password; 150 password_ = password;
144 } 151 }
145 152
146 bool ProfileSyncServiceHarness::IsSyncAlreadySetup() { 153 bool ProfileSyncServiceHarness::IsSyncAlreadySetup() {
147 return ProfileSyncServiceFactory::GetInstance()->HasProfileSyncService( 154 return ProfileSyncServiceFactory::GetInstance()->HasProfileSyncService(
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 // classes using the the UI message loop. Defer to their handling. 464 // classes using the the UI message loop. Defer to their handling.
458 break; 465 break;
459 } 466 }
460 return original_wait_state != wait_state_; 467 return original_wait_state != wait_state_;
461 } 468 }
462 469
463 void ProfileSyncServiceHarness::OnStateChanged() { 470 void ProfileSyncServiceHarness::OnStateChanged() {
464 RunStateChangeMachine(); 471 RunStateChangeMachine();
465 } 472 }
466 473
474 void ProfileSyncServiceHarness::OnSyncCycleCompleted() {
475 // Integration tests still use p2p notifications.
476 const SyncSessionSnapshot& snap = GetLastSessionSnapshot();
477 bool is_notifiable_commit =
478 (snap.model_neutral_state().num_successful_commits > 0);
479 if (is_notifiable_commit) {
480 const syncer::ObjectIdInvalidationMap& invalidation_map =
481 ModelTypeInvalidationMapToObjectIdInvalidationMap(
482 snap.source().types);
483 p2p_invalidation_service_->SendInvalidation(invalidation_map);
484 }
485
486 OnStateChanged();
487 }
488
467 void ProfileSyncServiceHarness::OnMigrationStateChange() { 489 void ProfileSyncServiceHarness::OnMigrationStateChange() {
468 // Update migration state. 490 // Update migration state.
469 if (HasPendingBackendMigration()) { 491 if (HasPendingBackendMigration()) {
470 // Merge current pending migration types into 492 // Merge current pending migration types into
471 // |pending_migration_types_|. 493 // |pending_migration_types_|.
472 pending_migration_types_.PutAll( 494 pending_migration_types_.PutAll(
473 service()->GetBackendMigratorForTest()-> 495 service()->GetBackendMigratorForTest()->
474 GetPendingMigrationTypesForTest()); 496 GetPendingMigrationTypesForTest());
475 DVLOG(1) << profile_debug_name_ << ": new pending migration types " 497 DVLOG(1) << profile_debug_name_ << ": new pending migration types "
476 << syncer::ModelTypeSetToString(pending_migration_types_); 498 << syncer::ModelTypeSetToString(pending_migration_types_);
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 1154
1133 std::string ProfileSyncServiceHarness::GetServiceStatus() { 1155 std::string ProfileSyncServiceHarness::GetServiceStatus() {
1134 scoped_ptr<DictionaryValue> value( 1156 scoped_ptr<DictionaryValue> value(
1135 sync_ui_util::ConstructAboutInformation(service_)); 1157 sync_ui_util::ConstructAboutInformation(service_));
1136 std::string service_status; 1158 std::string service_status;
1137 base::JSONWriter::WriteWithOptions(value.get(), 1159 base::JSONWriter::WriteWithOptions(value.get(),
1138 base::JSONWriter::OPTIONS_PRETTY_PRINT, 1160 base::JSONWriter::OPTIONS_PRETTY_PRINT,
1139 &service_status); 1161 &service_status);
1140 return service_status; 1162 return service_status;
1141 } 1163 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698