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

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

Issue 23382008: Making OAuth2TokenService multi-login aware, updating callers, minor fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing to include the update to ProfileSyncService: r224220 Created 7 years, 3 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 "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 true); 131 true);
132 } 132 }
133 133
134 void CreateSyncService() { 134 void CreateSyncService() {
135 sync_ = static_cast<TestProfileSyncService*>( 135 sync_ = static_cast<TestProfileSyncService*>(
136 ProfileSyncServiceFactory::GetForProfile(profile_.get())); 136 ProfileSyncServiceFactory::GetForProfile(profile_.get()));
137 sync_->AddObserver(&observer_); 137 sync_->AddObserver(&observer_);
138 sync_->set_synchronous_sync_configuration(); 138 sync_->set_synchronous_sync_configuration();
139 } 139 }
140 140
141 void IssueTestTokens() {
142 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
143 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
144 TokenServiceFactory::GetForProfile(profile_.get())
145 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token");
146 }
147
141 protected: 148 protected:
142 DataTypeManagerMock* SetUpDataTypeManager() { 149 DataTypeManagerMock* SetUpDataTypeManager() {
143 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); 150 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
144 EXPECT_CALL(*sync_->components_factory_mock(), 151 EXPECT_CALL(*sync_->components_factory_mock(),
145 CreateDataTypeManager(_, _, _, _, _, _)). 152 CreateDataTypeManager(_, _, _, _, _, _)).
146 WillOnce(Return(data_type_manager)); 153 WillOnce(Return(data_type_manager));
147 return data_type_manager; 154 return data_type_manager;
148 } 155 }
149 156
150 content::TestBrowserThreadBundle thread_bundle_; 157 content::TestBrowserThreadBundle thread_bundle_;
(...skipping 13 matching lines...) Expand all
164 sync_->set_synchronous_sync_configuration(); 171 sync_->set_synchronous_sync_configuration();
165 } 172 }
166 173
167 static BrowserContextKeyedService* BuildCrosService( 174 static BrowserContextKeyedService* BuildCrosService(
168 content::BrowserContext* context) { 175 content::BrowserContext* context) {
169 Profile* profile = static_cast<Profile*>(context); 176 Profile* profile = static_cast<Profile*>(context);
170 SigninManagerBase* signin = 177 SigninManagerBase* signin =
171 SigninManagerFactory::GetForProfile(profile); 178 SigninManagerFactory::GetForProfile(profile);
172 profile->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 179 profile->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
173 "test_user@gmail.com"); 180 "test_user@gmail.com");
174 OAuth2TokenService* oauth2_token_service = 181 ProfileOAuth2TokenService* oauth2_token_service =
175 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); 182 ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
176 signin->Initialize(profile, NULL); 183 signin->Initialize(profile, NULL);
177 EXPECT_FALSE(signin->GetAuthenticatedUsername().empty()); 184 EXPECT_FALSE(signin->GetAuthenticatedUsername().empty());
178 return new TestProfileSyncService( 185 return new TestProfileSyncService(
179 new ProfileSyncComponentsFactoryMock(), 186 new ProfileSyncComponentsFactoryMock(),
180 profile, 187 profile,
181 signin, 188 signin,
182 oauth2_token_service, 189 oauth2_token_service,
183 ProfileSyncService::AUTO_START, 190 ProfileSyncService::AUTO_START,
184 true); 191 true);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 225 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
219 "test_user@gmail.com"); 226 "test_user@gmail.com");
220 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com"); 227 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com");
221 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", ""); 228 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", "");
222 content::NotificationService::current()->Notify( 229 content::NotificationService::current()->Notify(
223 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 230 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
224 content::Source<Profile>(profile_.get()), 231 content::Source<Profile>(profile_.get()),
225 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 232 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
226 233
227 // Create some tokens in the token service. 234 // Create some tokens in the token service.
228 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 235 IssueTestTokens();
229 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
230 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
231 GaiaConstants::kSyncService, "token");
232 236
233 // Simulate the UI telling sync it has finished setting up. 237 // Simulate the UI telling sync it has finished setting up.
234 sync_->SetSetupInProgress(false); 238 sync_->SetSetupInProgress(false);
235 EXPECT_TRUE(sync_->ShouldPushChanges()); 239 EXPECT_TRUE(sync_->ShouldPushChanges());
236 } 240 }
237 241
238 // TODO(pavely): Reenable test once android is switched to oauth2. 242 // TODO(pavely): Reenable test once android is switched to oauth2.
239 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { 243 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) {
240 // We've never completed startup. 244 // We've never completed startup.
241 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 245 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 353
350 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 354 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
351 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 355 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
352 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 356 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
353 EXPECT_CALL(*data_type_manager, Configure(_, _)); 357 EXPECT_CALL(*data_type_manager, Configure(_, _));
354 EXPECT_CALL(*data_type_manager, state()). 358 EXPECT_CALL(*data_type_manager, state()).
355 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 359 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
356 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 360 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
357 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 361 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
358 362
359 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 363 IssueTestTokens();
360 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
361 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
362 GaiaConstants::kSyncService, "sync_token");
363 sync_->Initialize(); 364 sync_->Initialize();
364 EXPECT_TRUE(sync_->ShouldPushChanges()); 365 EXPECT_TRUE(sync_->ShouldPushChanges());
365 } 366 }
366 367
367 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { 368 TEST_F(ProfileSyncServiceStartupTest, StartNormal) {
368 // Pre load the tokens 369 // Pre load the tokens
369 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 370 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
370 "test_user@gmail.com"); 371 "test_user@gmail.com");
371 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 372 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
372 profile_.get(), NULL); 373 profile_.get(), NULL);
373 CreateSyncService(); 374 CreateSyncService();
374 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 375 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
375 EXPECT_CALL(*data_type_manager, Configure(_, _)); 376 EXPECT_CALL(*data_type_manager, Configure(_, _));
376 EXPECT_CALL(*data_type_manager, state()). 377 EXPECT_CALL(*data_type_manager, state()).
377 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 378 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
378 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 379 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
379 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 380 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
380 381
381 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 382 IssueTestTokens();
382 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
383 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
384 GaiaConstants::kSyncService, "sync_token");
385 383
386 sync_->Initialize(); 384 sync_->Initialize();
387 } 385 }
388 386
389 // Test that we can recover from a case where a bug in the code resulted in 387 // Test that we can recover from a case where a bug in the code resulted in
390 // OnUserChoseDatatypes not being properly called and datatype preferences 388 // OnUserChoseDatatypes not being properly called and datatype preferences
391 // therefore being left unset. 389 // therefore being left unset.
392 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 390 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
393 // Clear the datatype preference fields (simulating bug 154940). 391 // Clear the datatype preference fields (simulating bug 154940).
394 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); 392 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced);
(...skipping 10 matching lines...) Expand all
405 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 403 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
406 profile_.get(), NULL); 404 profile_.get(), NULL);
407 CreateSyncService(); 405 CreateSyncService();
408 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 406 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
409 EXPECT_CALL(*data_type_manager, Configure(_, _)); 407 EXPECT_CALL(*data_type_manager, Configure(_, _));
410 EXPECT_CALL(*data_type_manager, state()). 408 EXPECT_CALL(*data_type_manager, state()).
411 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 409 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
412 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 410 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
413 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 411 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
414 412
415 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 413 IssueTestTokens();
416 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
417 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
418 GaiaConstants::kSyncService, "sync_token");
419 sync_->Initialize(); 414 sync_->Initialize();
420 415
421 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 416 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
422 prefs::kSyncKeepEverythingSynced)); 417 prefs::kSyncKeepEverythingSynced));
423 } 418 }
424 419
425 // Verify that the recovery of datatype preferences doesn't overwrite a valid 420 // Verify that the recovery of datatype preferences doesn't overwrite a valid
426 // case where only bookmarks are enabled. 421 // case where only bookmarks are enabled.
427 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { 422 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) {
428 // Explicitly set Keep Everything Synced to false and have only bookmarks 423 // Explicitly set Keep Everything Synced to false and have only bookmarks
429 // enabled. 424 // enabled.
430 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); 425 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false);
431 426
432 // Pre load the tokens 427 // Pre load the tokens
433 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 428 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
434 "test_user@gmail.com"); 429 "test_user@gmail.com");
435 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 430 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
436 profile_.get(), NULL); 431 profile_.get(), NULL);
437 CreateSyncService(); 432 CreateSyncService();
438 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 433 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
439 EXPECT_CALL(*data_type_manager, Configure(_, _)); 434 EXPECT_CALL(*data_type_manager, Configure(_, _));
440 EXPECT_CALL(*data_type_manager, state()). 435 EXPECT_CALL(*data_type_manager, state()).
441 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 436 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
442 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 437 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
443 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 438 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
444 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 439 IssueTestTokens();
445 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
446 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
447 GaiaConstants::kSyncService, "sync_token");
448 sync_->Initialize(); 440 sync_->Initialize();
449 441
450 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 442 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
451 prefs::kSyncKeepEverythingSynced)); 443 prefs::kSyncKeepEverythingSynced));
452 } 444 }
453 445
454 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { 446 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) {
455 // Service should not be started by Initialize() since it's managed. 447 // Service should not be started by Initialize() since it's managed.
456 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 448 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
457 "test_user@gmail.com"); 449 "test_user@gmail.com");
(...skipping 14 matching lines...) Expand all
472 464
473 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 465 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
474 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 466 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
475 "test_user@gmail.com"); 467 "test_user@gmail.com");
476 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 468 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
477 profile_.get(), NULL); 469 profile_.get(), NULL);
478 CreateSyncService(); 470 CreateSyncService();
479 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 471 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
480 EXPECT_CALL(*data_type_manager, Configure(_, _)); 472 EXPECT_CALL(*data_type_manager, Configure(_, _));
481 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 473 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
482 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 474 IssueTestTokens();
483 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
484 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
485 GaiaConstants::kSyncService, "token");
486 sync_->Initialize(); 475 sync_->Initialize();
487 476
488 // The service should stop when switching to managed mode. 477 // The service should stop when switching to managed mode.
489 Mock::VerifyAndClearExpectations(data_type_manager); 478 Mock::VerifyAndClearExpectations(data_type_manager);
490 EXPECT_CALL(*data_type_manager, state()). 479 EXPECT_CALL(*data_type_manager, state()).
491 WillOnce(Return(DataTypeManager::CONFIGURED)); 480 WillOnce(Return(DataTypeManager::CONFIGURED));
492 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 481 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
493 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 482 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
494 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 483 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
495 484
(...skipping 27 matching lines...) Expand all
523 errors, 512 errors,
524 syncer::ModelTypeSet(), 513 syncer::ModelTypeSet(),
525 syncer::ModelTypeSet()); 514 syncer::ModelTypeSet());
526 EXPECT_CALL(*data_type_manager, Configure(_, _)). 515 EXPECT_CALL(*data_type_manager, Configure(_, _)).
527 WillRepeatedly( 516 WillRepeatedly(
528 DoAll(InvokeOnConfigureStart(sync_), 517 DoAll(InvokeOnConfigureStart(sync_),
529 InvokeOnConfigureDone(sync_, result))); 518 InvokeOnConfigureDone(sync_, result)));
530 EXPECT_CALL(*data_type_manager, state()). 519 EXPECT_CALL(*data_type_manager, state()).
531 WillOnce(Return(DataTypeManager::STOPPED)); 520 WillOnce(Return(DataTypeManager::STOPPED));
532 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 521 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
533 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 522 IssueTestTokens();
534 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
535 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
536 GaiaConstants::kSyncService, "token");
537 sync_->Initialize(); 523 sync_->Initialize();
538 EXPECT_TRUE(sync_->HasUnrecoverableError()); 524 EXPECT_TRUE(sync_->HasUnrecoverableError());
539 } 525 }
540 526
541 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 527 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
542 // Pre load the tokens 528 // Pre load the tokens
543 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 529 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
544 "test_user@gmail.com"); 530 "test_user@gmail.com");
545 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 531 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
546 profile_.get(), NULL); 532 profile_.get(), NULL);
547 CreateSyncService(); 533 CreateSyncService();
548 534
549 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 535 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
550 536
551 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 537 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
552 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 538 IssueTestTokens();
553 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
554 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
555 GaiaConstants::kSyncService, "token");
556 sync_->fail_initial_download(); 539 sync_->fail_initial_download();
557 540
558 sync_->SetSetupInProgress(true); 541 sync_->SetSetupInProgress(true);
559 sync_->Initialize(); 542 sync_->Initialize();
560 sync_->SetSetupInProgress(false); 543 sync_->SetSetupInProgress(false);
561 EXPECT_FALSE(sync_->sync_initialized()); 544 EXPECT_FALSE(sync_->sync_initialized());
562 EXPECT_TRUE(sync_->GetBackendForTest()); 545 EXPECT_TRUE(sync_->GetBackendForTest());
563 } 546 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698