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

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

Issue 15421011: Use OAuth2 token for sync (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 7 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 (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/test_profile_sync_service.h" 5 #include "chrome/browser/sync/test_profile_sync_service.h"
6 6
7 #include "chrome/browser/signin/signin_manager.h" 7 #include "chrome/browser/signin/signin_manager.h"
8 #include "chrome/browser/signin/signin_manager_factory.h" 8 #include "chrome/browser/signin/signin_manager_factory.h"
9 #include "chrome/browser/sync/glue/data_type_controller.h" 9 #include "chrome/browser/sync/glue/data_type_controller.h"
10 #include "chrome/browser/sync/glue/sync_backend_host.h" 10 #include "chrome/browser/sync/glue/sync_backend_host.h"
(...skipping 15 matching lines...) Expand all
26 using syncer::sessions::SyncSourceInfo; 26 using syncer::sessions::SyncSourceInfo;
27 using syncer::UserShare; 27 using syncer::UserShare;
28 using syncer::syncable::Directory; 28 using syncer::syncable::Directory;
29 using syncer::DEVICE_INFO; 29 using syncer::DEVICE_INFO;
30 using syncer::EXPERIMENTS; 30 using syncer::EXPERIMENTS;
31 using syncer::NIGORI; 31 using syncer::NIGORI;
32 using syncer::PRIORITY_PREFERENCES; 32 using syncer::PRIORITY_PREFERENCES;
33 33
34 namespace browser_sync { 34 namespace browser_sync {
35 35
36 MessageLoopRunner::MessageLoopRunner()
37 : running_(false) {
38 }
39
40 MessageLoopRunner::~MessageLoopRunner() {
41 DCHECK(!running_);
42 }
43
44 void MessageLoopRunner::Run() {
45 if (running_)
46 return;
47 running_ = true;
48 MessageLoop::current()->Run();
49 running_ = false;
50 }
51
52 void MessageLoopRunner::Quit() {
53 if (running_)
54 MessageLoop::current()->Quit();
55 }
56
36 SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest( 57 SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest(
37 Profile* profile, 58 Profile* profile,
38 const base::WeakPtr<SyncPrefs>& sync_prefs, 59 const base::WeakPtr<SyncPrefs>& sync_prefs,
39 const base::WeakPtr<InvalidatorStorage>& invalidator_storage, 60 const base::WeakPtr<InvalidatorStorage>& invalidator_storage,
40 syncer::TestIdFactory& id_factory, 61 syncer::TestIdFactory& id_factory,
41 base::Closure& callback, 62 base::Closure& callback,
42 bool set_initial_sync_ended_on_init, 63 bool set_initial_sync_ended_on_init,
43 bool synchronous_init, 64 bool synchronous_init,
44 bool fail_initial_download, 65 bool fail_initial_download,
45 syncer::StorageOption storage_option) 66 syncer::StorageOption storage_option,
67 MessageLoopRunner* message_loop_runner)
46 : browser_sync::SyncBackendHost( 68 : browser_sync::SyncBackendHost(
47 profile->GetDebugName(), profile, sync_prefs, invalidator_storage), 69 profile->GetDebugName(), profile, sync_prefs, invalidator_storage),
48 weak_ptr_factory_(this), 70 weak_ptr_factory_(this),
49 id_factory_(id_factory), 71 id_factory_(id_factory),
50 callback_(callback), 72 callback_(callback),
51 fail_initial_download_(fail_initial_download), 73 fail_initial_download_(fail_initial_download),
52 set_initial_sync_ended_on_init_(set_initial_sync_ended_on_init), 74 set_initial_sync_ended_on_init_(set_initial_sync_ended_on_init),
53 synchronous_init_(synchronous_init), 75 synchronous_init_(synchronous_init),
54 storage_option_(storage_option) {} 76 storage_option_(storage_option),
77 message_loop_runner_(message_loop_runner) {}
55 78
56 SyncBackendHostForProfileSyncTest::~SyncBackendHostForProfileSyncTest() {} 79 SyncBackendHostForProfileSyncTest::~SyncBackendHostForProfileSyncTest() {}
57 80
58 namespace { 81 namespace {
59 82
60 scoped_ptr<syncer::HttpPostProviderFactory> MakeTestHttpBridgeFactory() { 83 scoped_ptr<syncer::HttpPostProviderFactory> MakeTestHttpBridgeFactory() {
61 return scoped_ptr<syncer::HttpPostProviderFactory>( 84 return scoped_ptr<syncer::HttpPostProviderFactory>(
62 new browser_sync::TestHttpBridgeFactory()); 85 new browser_sync::TestHttpBridgeFactory());
63 } 86 }
64 87
(...skipping 16 matching lines...) Expand all
81 test_options.internal_components_factory->GetSwitches(); 104 test_options.internal_components_factory->GetSwitches();
82 delete test_options.internal_components_factory; 105 delete test_options.internal_components_factory;
83 106
84 test_options.internal_components_factory = 107 test_options.internal_components_factory =
85 new TestInternalComponentsFactory(factory_switches, storage); 108 new TestInternalComponentsFactory(factory_switches, storage);
86 109
87 SyncBackendHost::InitCore(test_options); 110 SyncBackendHost::InitCore(test_options);
88 if (synchronous_init_) { 111 if (synchronous_init_) {
89 // The SyncBackend posts a task to the current loop when 112 // The SyncBackend posts a task to the current loop when
90 // initialization completes. 113 // initialization completes.
91 MessageLoop::current()->Run(); 114 message_loop_runner_->Run();
92 } 115 }
93 } 116 }
94 117
95 void SyncBackendHostForProfileSyncTest::UpdateCredentials( 118 void SyncBackendHostForProfileSyncTest::UpdateCredentials(
96 const syncer::SyncCredentials& credentials) { 119 const syncer::SyncCredentials& credentials) {
97 // If we had failed the initial download, complete initialization now. 120 // If we had failed the initial download, complete initialization now.
98 if (!initial_download_closure_.is_null()) { 121 if (!initial_download_closure_.is_null()) {
99 initial_download_closure_.Run(); 122 initial_download_closure_.Run();
100 initial_download_closure_.Reset(); 123 initial_download_closure_.Reset();
101 } 124 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 restored_types = syncer::ModelTypeSet::All(); 180 restored_types = syncer::ModelTypeSet::All();
158 } 181 }
159 182
160 initial_download_closure_ = base::Bind( 183 initial_download_closure_ = base::Bind(
161 &SyncBackendHostForProfileSyncTest::ContinueInitialization, 184 &SyncBackendHostForProfileSyncTest::ContinueInitialization,
162 weak_ptr_factory_.GetWeakPtr(), 185 weak_ptr_factory_.GetWeakPtr(),
163 js_backend, 186 js_backend,
164 debug_info_listener, 187 debug_info_listener,
165 restored_types); 188 restored_types);
166 if (fail_initial_download_) { 189 if (fail_initial_download_) {
190 // HandleInitializationCompletedOnFrontendLoop(false);
tim (not reviewing) 2013/05/23 19:03:42 Tidy up.
pavely 2013/05/30 07:42:12 Done.
167 frontend()->OnSyncConfigureRetry(); 191 frontend()->OnSyncConfigureRetry();
168 if (synchronous_init_) 192 if (synchronous_init_)
169 MessageLoop::current()->Quit(); 193 message_loop_runner_->Quit();
170 } else { 194 } else {
171 initial_download_closure_.Run(); 195 initial_download_closure_.Run();
172 initial_download_closure_.Reset(); 196 initial_download_closure_.Reset();
173 } 197 }
174 } 198 }
175 199
176 void SyncBackendHostForProfileSyncTest::EmitOnInvalidatorStateChange( 200 void SyncBackendHostForProfileSyncTest::EmitOnInvalidatorStateChange(
177 syncer::InvalidatorState state) { 201 syncer::InvalidatorState state) {
178 frontend()->OnInvalidatorStateChange(state); 202 frontend()->OnInvalidatorStateChange(state);
179 } 203 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 bool synchronous_backend_initialization) 236 bool synchronous_backend_initialization)
213 : ProfileSyncService(factory, 237 : ProfileSyncService(factory,
214 profile, 238 profile,
215 signin, 239 signin,
216 behavior), 240 behavior),
217 synchronous_backend_initialization_( 241 synchronous_backend_initialization_(
218 synchronous_backend_initialization), 242 synchronous_backend_initialization),
219 synchronous_sync_configuration_(false), 243 synchronous_sync_configuration_(false),
220 set_initial_sync_ended_on_init_(true), 244 set_initial_sync_ended_on_init_(true),
221 fail_initial_download_(false), 245 fail_initial_download_(false),
222 storage_option_(syncer::STORAGE_IN_MEMORY) { 246 storage_option_(syncer::STORAGE_IN_MEMORY),
247 message_loop_runner_() {
tim (not reviewing) 2013/05/23 19:03:42 Remove unnecessary initializer.
pavely 2013/05/30 07:42:12 Done.
223 SetSyncSetupCompleted(); 248 SetSyncSetupCompleted();
224 } 249 }
225 250
226 TestProfileSyncService::~TestProfileSyncService() { 251 TestProfileSyncService::~TestProfileSyncService() {
227 } 252 }
228 253
229 // static 254 // static
230 ProfileKeyedService* TestProfileSyncService::BuildAutoStartAsyncInit( 255 ProfileKeyedService* TestProfileSyncService::BuildAutoStartAsyncInit(
231 content::BrowserContext* context) { 256 content::BrowserContext* context) {
232 Profile* profile = static_cast<Profile*>(context); 257 Profile* profile = static_cast<Profile*>(context);
233 SigninManagerBase* signin = 258 SigninManagerBase* signin =
234 SigninManagerFactory::GetForProfile(profile); 259 SigninManagerFactory::GetForProfile(profile);
235 ProfileSyncComponentsFactoryMock* factory = 260 ProfileSyncComponentsFactoryMock* factory =
236 new ProfileSyncComponentsFactoryMock(); 261 new ProfileSyncComponentsFactoryMock();
237 return new TestProfileSyncService( 262 return new TestProfileSyncService(
238 factory, profile, signin, ProfileSyncService::AUTO_START, false); 263 factory, profile, signin, ProfileSyncService::AUTO_START, false);
239 } 264 }
240 265
241 ProfileSyncComponentsFactoryMock* 266 ProfileSyncComponentsFactoryMock*
242 TestProfileSyncService::components_factory_mock() { 267 TestProfileSyncService::components_factory_mock() {
243 // We always create a mock factory, see Build* routines. 268 // We always create a mock factory, see Build* routines.
244 return static_cast<ProfileSyncComponentsFactoryMock*>(factory()); 269 return static_cast<ProfileSyncComponentsFactoryMock*>(factory());
245 } 270 }
246 271
272 void TestProfileSyncService::RequestAccessToken(
273 bool invalidate_previous_token,
274 bool invoke_callback) {
275 ProfileSyncService::RequestAccessToken(invalidate_previous_token,
276 invoke_callback);
tim (not reviewing) 2013/05/23 19:03:42 nit - indent is off (4 spaces).
pavely 2013/05/30 07:42:12 Done.
277 if (synchronous_backend_initialization_ && invoke_callback) {
278 message_loop_runner_.Run();
279 }
280 }
281
282 void TestProfileSyncService::OnGetTokenFailure(
283 const OAuth2TokenService::Request* request,
284 const GoogleServiceAuthError& error) {
285 ProfileSyncService::OnGetTokenFailure(request, error);
286 if (synchronous_backend_initialization_) {
287 message_loop_runner_.Quit();
288 }
289 }
290
291
247 void TestProfileSyncService::OnBackendInitialized( 292 void TestProfileSyncService::OnBackendInitialized(
248 const syncer::WeakHandle<syncer::JsBackend>& backend, 293 const syncer::WeakHandle<syncer::JsBackend>& backend,
249 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& 294 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
250 debug_info_listener, 295 debug_info_listener,
251 bool success) { 296 bool success) {
252 ProfileSyncService::OnBackendInitialized(backend, 297 ProfileSyncService::OnBackendInitialized(backend,
253 debug_info_listener, 298 debug_info_listener,
254 success); 299 success);
255 300
256 // TODO(akalin): Figure out a better way to do this. 301 // TODO(akalin): Figure out a better way to do this.
257 if (synchronous_backend_initialization_) { 302 if (synchronous_backend_initialization_) {
258 MessageLoop::current()->Quit(); 303 message_loop_runner_.Quit();
tim (not reviewing) 2013/05/23 19:03:42 :/ This seems to make it worse than before, it's
259 } 304 }
260 } 305 }
261 306
262 void TestProfileSyncService::OnConfigureDone( 307 void TestProfileSyncService::OnConfigureDone(
263 const browser_sync::DataTypeManager::ConfigureResult& result) { 308 const browser_sync::DataTypeManager::ConfigureResult& result) {
264 ProfileSyncService::OnConfigureDone(result); 309 ProfileSyncService::OnConfigureDone(result);
265 if (!synchronous_sync_configuration_) 310 if (!synchronous_sync_configuration_)
266 MessageLoop::current()->Quit(); 311 MessageLoop::current()->Quit();
267 } 312 }
268 313
(...skipping 18 matching lines...) Expand all
287 void TestProfileSyncService::CreateBackend() { 332 void TestProfileSyncService::CreateBackend() {
288 backend_.reset(new browser_sync::SyncBackendHostForProfileSyncTest( 333 backend_.reset(new browser_sync::SyncBackendHostForProfileSyncTest(
289 profile(), 334 profile(),
290 sync_prefs_.AsWeakPtr(), 335 sync_prefs_.AsWeakPtr(),
291 invalidator_storage_.AsWeakPtr(), 336 invalidator_storage_.AsWeakPtr(),
292 id_factory_, 337 id_factory_,
293 callback_, 338 callback_,
294 set_initial_sync_ended_on_init_, 339 set_initial_sync_ended_on_init_,
295 synchronous_backend_initialization_, 340 synchronous_backend_initialization_,
296 fail_initial_download_, 341 fail_initial_download_,
297 storage_option_)); 342 storage_option_,
343 &message_loop_runner_));
298 } 344 }
345
346 scoped_ptr<OAuth2TokenService::Request> FakeOAuth2TokenService::StartRequest(
347 const OAuth2TokenService::ScopeSet& scopes,
348 OAuth2TokenService::Consumer* consumer) {
349 // Ensure token in question is cached and never expires. Request will succeed
350 // without network IO.
351 RegisterCacheEntry(GetRefreshToken(), scopes, "access_token",
352 base::Time::Max());
tim (not reviewing) 2013/05/23 19:03:42 indent is off.
pavely 2013/05/30 07:42:12 Done.
353 return ProfileOAuth2TokenService::StartRequest(scopes, consumer);
354 }
355
356 ProfileKeyedService* FakeOAuth2TokenService::BuildTokenService(
357 content::BrowserContext* context) {
358 Profile* profile = static_cast<Profile*>(context);
359
360 FakeOAuth2TokenService* service =
361 new FakeOAuth2TokenService(profile->GetRequestContext());
362 service->Initialize(profile);
363 return service;
364 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698