Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| 11 #include "chrome/browser/invalidation/invalidation_service_factory.h" | 11 #include "chrome/browser/invalidation/invalidation_service_factory.h" |
| 12 #include "chrome/browser/signin/signin_manager.h" | 12 #include "chrome/browser/signin/signin_manager.h" |
| 13 #include "chrome/browser/signin/signin_manager_factory.h" | 13 #include "chrome/browser/signin/signin_manager_factory.h" |
| 14 #include "chrome/browser/signin/token_service.h" | 14 #include "chrome/browser/signin/token_service.h" |
| 15 #include "chrome/browser/signin/token_service_factory.h" | 15 #include "chrome/browser/signin/token_service_factory.h" |
| 16 #include "chrome/browser/sync/fake_oauth2_token_service.h" | 16 #include "chrome/browser/sync/fake_oauth2_token_service.h" |
| 17 #include "chrome/browser/sync/glue/bookmark_data_type_controller.h" | 17 #include "chrome/browser/sync/glue/bookmark_data_type_controller.h" |
| 18 #include "chrome/browser/sync/glue/data_type_controller.h" | 18 #include "chrome/browser/sync/glue/data_type_controller.h" |
| 19 #include "chrome/browser/sync/glue/sync_backend_host_mock.h" | |
| 19 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" | 20 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" |
| 20 #include "chrome/browser/sync/test_profile_sync_service.h" | 21 #include "chrome/browser/sync/test_profile_sync_service.h" |
| 21 #include "chrome/common/chrome_version_info.h" | 22 #include "chrome/common/chrome_version_info.h" |
| 22 #include "chrome/common/pref_names.h" | 23 #include "chrome/common/pref_names.h" |
| 23 #include "chrome/test/base/testing_pref_service_syncable.h" | 24 #include "chrome/test/base/testing_pref_service_syncable.h" |
| 24 #include "chrome/test/base/testing_profile.h" | 25 #include "chrome/test/base/testing_profile.h" |
| 25 #include "content/public/test/test_browser_thread_bundle.h" | 26 #include "content/public/test/test_browser_thread_bundle.h" |
| 26 #include "content/public/test/test_utils.h" | 27 #include "content/public/test/test_utils.h" |
| 27 #include "google/cacheinvalidation/include/types.h" | 28 #include "google/cacheinvalidation/include/types.h" |
| 28 #include "google_apis/gaia/gaia_constants.h" | 29 #include "google_apis/gaia/gaia_constants.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 52 } | 53 } |
| 53 | 54 |
| 54 class ProfileSyncServiceTest : public testing::Test { | 55 class ProfileSyncServiceTest : public testing::Test { |
| 55 protected: | 56 protected: |
| 56 ProfileSyncServiceTest() | 57 ProfileSyncServiceTest() |
| 57 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD | | 58 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD | |
| 58 content::TestBrowserThreadBundle::REAL_FILE_THREAD | | 59 content::TestBrowserThreadBundle::REAL_FILE_THREAD | |
| 59 content::TestBrowserThreadBundle::REAL_IO_THREAD) { | 60 content::TestBrowserThreadBundle::REAL_IO_THREAD) { |
| 60 } | 61 } |
| 61 | 62 |
| 62 virtual void SetUp() OVERRIDE { | 63 virtual ~ProfileSyncServiceTest() {} |
| 64 | |
| 65 virtual void SetUp() OVERRIDE { | |
| 63 TestingProfile::Builder builder; | 66 TestingProfile::Builder builder; |
| 64 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(), | 67 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(), |
| 65 FakeOAuth2TokenService::BuildTokenService); | 68 FakeOAuth2TokenService::BuildTokenService); |
| 66 profile_ = builder.Build().Pass(); | 69 profile_ = builder.Build().Pass(); |
| 67 invalidation::InvalidationServiceFactory::GetInstance()-> | 70 invalidation::InvalidationServiceFactory::GetInstance()-> |
| 68 SetBuildOnlyFakeInvalidatorsForTest(true); | 71 SetBuildOnlyFakeInvalidatorsForTest(true); |
| 69 } | 72 } |
| 70 | 73 |
| 71 virtual void TearDown() OVERRIDE { | 74 virtual void TearDown() OVERRIDE { |
| 72 // Kill the service before the profile. | 75 // Kill the service before the profile. |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 165 : service_(service), first_setup_in_progress_(false) {} | 168 : service_(service), first_setup_in_progress_(false) {} |
| 166 virtual void OnStateChanged() OVERRIDE { | 169 virtual void OnStateChanged() OVERRIDE { |
| 167 first_setup_in_progress_ = service_->FirstSetupInProgress(); | 170 first_setup_in_progress_ = service_->FirstSetupInProgress(); |
| 168 } | 171 } |
| 169 bool first_setup_in_progress() const { return first_setup_in_progress_; } | 172 bool first_setup_in_progress() const { return first_setup_in_progress_; } |
| 170 private: | 173 private: |
| 171 ProfileSyncService* service_; | 174 ProfileSyncService* service_; |
| 172 bool first_setup_in_progress_; | 175 bool first_setup_in_progress_; |
| 173 }; | 176 }; |
| 174 | 177 |
| 175 TEST_F(ProfileSyncServiceTest, InitialState) { | 178 // A variant of the SyncBackendHostMock that won't automatically |
| 176 SigninManagerBase* signin = | 179 // call back when asked to initialized. Allows us to test things |
| 177 SigninManagerFactory::GetForProfile(profile_.get()); | 180 // that could happen while backend init is in progress. |
| 178 ProfileOAuth2TokenService* oauth2_token_service = | 181 class SyncBackendHostNoReturn : public SyncBackendHostMock { |
| 179 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); | 182 virtual void Initialize( |
| 180 service_.reset(new TestProfileSyncService( | 183 SyncFrontend* frontend, |
| 181 new ProfileSyncComponentsFactoryMock(), | 184 scoped_ptr<base::Thread> sync_thread, |
| 182 profile_.get(), | 185 const syncer::WeakHandle<syncer::JsEventHandler>& event_handler, |
| 183 signin, | 186 const GURL& service_url, |
| 184 oauth2_token_service, | 187 const syncer::SyncCredentials& credentials, |
| 185 ProfileSyncService::MANUAL_START, | 188 bool delete_sync_data_folder, |
| 186 true)); | 189 scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory, |
| 187 service_->Initialize(); | 190 scoped_ptr<syncer::UnrecoverableErrorHandler> unrecoverable_error_handler, |
| 188 EXPECT_TRUE( | 191 syncer::ReportUnrecoverableErrorFunction |
| 189 service_->sync_service_url().spec() == | 192 report_unrecoverable_error_function) OVERRIDE {} |
| 190 ProfileSyncService::kSyncServerUrl || | 193 }; |
| 191 service_->sync_service_url().spec() == | 194 |
| 192 ProfileSyncService::kDevServerUrl); | 195 ACTION(ReturnNewSyncBackendHostMock) { |
| 193 } | 196 return new browser_sync::SyncBackendHostMock(); |
| 194 | 197 } |
| 195 // Tests that the sync service doesn't forget to notify observers about | 198 |
| 196 // setup state. | 199 ACTION(ReturnNewSyncBackendHostNoReturn) { |
| 197 TEST(ProfileSyncServiceTestBasic, SetupInProgress) { | 200 return new browser_sync::SyncBackendHostNoReturn(); |
| 198 ProfileSyncService service( | 201 } |
| 199 NULL, NULL, NULL, NULL, ProfileSyncService::MANUAL_START); | 202 |
| 200 TestProfileSyncServiceObserver observer(&service); | 203 // A test harness that uses a real ProfileSyncService and in most cases a |
| 201 service.AddObserver(&observer); | 204 // MockSyncBackendHost. |
| 202 service.SetSetupInProgress(true); | 205 // |
| 206 // This is useful if we want to test the ProfileSyncService and don't care about | |
| 207 // testing the SyncBackendHost. It's easier to use than the other tests, since | |
| 208 // it doesn't involve any threads. | |
| 209 class ProfileSyncServiceSimpleTest : public ::testing::Test { | |
| 210 protected: | |
| 211 ProfileSyncServiceSimpleTest() | |
| 212 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD | | |
|
Nicolas Zea
2013/11/13 23:49:00
if these test don't involve threads, is the thread
rlarocque
2013/11/14 00:41:38
Apparently yes. There seems to be something in th
| |
| 213 content::TestBrowserThreadBundle::REAL_FILE_THREAD | | |
| 214 content::TestBrowserThreadBundle::REAL_IO_THREAD) {} | |
| 215 virtual ~ProfileSyncServiceSimpleTest() {} | |
| 216 | |
| 217 virtual void SetUp() OVERRIDE { | |
| 218 TestingProfile::Builder builder; | |
| 219 | |
| 220 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(), | |
| 221 FakeOAuth2TokenService::BuildTokenService); | |
| 222 invalidation::InvalidationServiceFactory::GetInstance()-> | |
| 223 SetBuildOnlyFakeInvalidatorsForTest(true); | |
| 224 | |
| 225 profile_ = builder.Build().Pass(); | |
| 226 } | |
| 227 | |
| 228 virtual void TearDown() OVERRIDE { | |
| 229 // Kill the service before the profile. | |
| 230 if (service_) | |
| 231 service_->Shutdown(); | |
| 232 | |
| 233 service_.reset(); | |
| 234 profile_.reset(); | |
| 235 | |
| 236 // Pump messages posted by the sync thread (which may end up | |
| 237 // posting on the IO thread). | |
| 238 base::RunLoop().RunUntilIdle(); | |
| 239 content::RunAllPendingInMessageLoop(content::BrowserThread::IO); | |
|
Nicolas Zea
2013/11/13 23:49:00
Similar question about this?
rlarocque
2013/11/14 00:41:38
I'm mostly sure this is unnecessary. The ThreadBu
| |
| 240 base::RunLoop().RunUntilIdle(); | |
| 241 } | |
| 242 | |
| 243 void IssueTestTokens() { | |
| 244 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()) | |
| 245 ->UpdateCredentials("test", "oauth2_login_token"); | |
| 246 } | |
| 247 | |
| 248 void CreateService(ProfileSyncService::StartBehavior behavior) { | |
| 249 SigninManagerBase* signin = | |
| 250 SigninManagerFactory::GetForProfile(profile_.get()); | |
| 251 signin->SetAuthenticatedUsername("test"); | |
| 252 ProfileOAuth2TokenService* oauth2_token_service = | |
| 253 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); | |
| 254 components_factory_ = new StrictMock<ProfileSyncComponentsFactoryMock>(); | |
| 255 service_.reset(new ProfileSyncService( | |
| 256 components_factory_, | |
| 257 profile_.get(), | |
| 258 signin, | |
| 259 oauth2_token_service, | |
| 260 behavior)); | |
| 261 } | |
| 262 | |
| 263 void ShutdownAndDeleteService() { | |
| 264 if (service_) | |
| 265 service_->Shutdown(); | |
| 266 service_.reset(); | |
| 267 } | |
| 268 | |
| 269 void Initialize() { | |
| 270 service_->Initialize(); | |
| 271 } | |
| 272 | |
| 273 void ExpectDataTypeManagerCreation() { | |
| 274 EXPECT_CALL(*components_factory_, CreateDataTypeManager(_, _, _, _, _, _)). | |
| 275 WillOnce(ReturnNewDataTypeManager()); | |
| 276 } | |
| 277 | |
| 278 void ExpectSyncBackendHostCreation() { | |
| 279 EXPECT_CALL(*components_factory_, CreateSyncBackendHost(_, _, _)). | |
| 280 WillOnce(ReturnNewSyncBackendHostMock()); | |
| 281 } | |
| 282 | |
| 283 void PrepareDelayedInitSyncBackendHost() { | |
| 284 EXPECT_CALL(*components_factory_, CreateSyncBackendHost(_, _, _)). | |
| 285 WillOnce(ReturnNewSyncBackendHostNoReturn()); | |
| 286 } | |
| 287 | |
| 288 TestingProfile* profile() { | |
| 289 return profile_.get(); | |
| 290 } | |
| 291 | |
| 292 ProfileSyncService* service() { | |
| 293 return service_.get(); | |
| 294 } | |
| 295 | |
| 296 ProfileSyncComponentsFactoryMock* components_factory() { | |
| 297 return components_factory_; | |
| 298 } | |
| 299 | |
| 300 private: | |
| 301 scoped_ptr<TestingProfile> profile_; | |
| 302 scoped_ptr<ProfileSyncService> service_; | |
| 303 | |
| 304 // Pointer to the components factory. Not owned. May be null. | |
| 305 ProfileSyncComponentsFactoryMock* components_factory_; | |
| 306 | |
| 307 content::TestBrowserThreadBundle thread_bundle_; | |
| 308 }; | |
| 309 | |
| 310 // Verify that the server URLs are sane. | |
| 311 TEST_F(ProfileSyncServiceSimpleTest, InitialState) { | |
| 312 CreateService(ProfileSyncService::AUTO_START); | |
| 313 Initialize(); | |
| 314 const std::string& url = service()->sync_service_url().spec(); | |
| 315 EXPECT_TRUE(url == ProfileSyncService::kSyncServerUrl || | |
| 316 url == ProfileSyncService::kDevServerUrl); | |
| 317 } | |
| 318 | |
| 319 // Verify a successful initialization. | |
| 320 TEST_F(ProfileSyncServiceSimpleTest, SuccessfulInitialization) { | |
| 321 profile()->GetTestingPrefService()->SetManagedPref( | |
| 322 prefs::kSyncManaged, | |
| 323 Value::CreateBooleanValue(false)); | |
| 324 IssueTestTokens(); | |
| 325 CreateService(ProfileSyncService::AUTO_START); | |
| 326 ExpectDataTypeManagerCreation(); | |
| 327 ExpectSyncBackendHostCreation(); | |
| 328 Initialize(); | |
| 329 EXPECT_FALSE(service()->IsManaged()); | |
| 330 EXPECT_TRUE(service()->sync_initialized()); | |
| 331 } | |
| 332 | |
| 333 | |
| 334 // Verify that the SetSetupInProgress function call updates state | |
| 335 // and notifies observers. | |
| 336 TEST_F(ProfileSyncServiceSimpleTest, SetupInProgress) { | |
| 337 CreateService(ProfileSyncService::MANUAL_START); | |
| 338 Initialize(); | |
| 339 | |
| 340 TestProfileSyncServiceObserver observer(service()); | |
| 341 service()->AddObserver(&observer); | |
| 342 | |
| 343 service()->SetSetupInProgress(true); | |
| 203 EXPECT_TRUE(observer.first_setup_in_progress()); | 344 EXPECT_TRUE(observer.first_setup_in_progress()); |
| 204 service.SetSetupInProgress(false); | 345 service()->SetSetupInProgress(false); |
| 205 EXPECT_FALSE(observer.first_setup_in_progress()); | 346 EXPECT_FALSE(observer.first_setup_in_progress()); |
| 206 service.RemoveObserver(&observer); | 347 |
| 207 } | 348 service()->RemoveObserver(&observer); |
| 208 | 349 } |
| 209 TEST_F(ProfileSyncServiceTest, DisabledByPolicy) { | 350 |
| 210 profile_->GetTestingPrefService()->SetManagedPref( | 351 // Verify that disable by enterprise policy works. |
| 352 TEST_F(ProfileSyncServiceSimpleTest, DisabledByPolicyBeforeInit) { | |
| 353 profile()->GetTestingPrefService()->SetManagedPref( | |
| 211 prefs::kSyncManaged, | 354 prefs::kSyncManaged, |
| 212 Value::CreateBooleanValue(true)); | 355 Value::CreateBooleanValue(true)); |
| 213 SigninManagerBase* signin = | 356 IssueTestTokens(); |
| 214 SigninManagerFactory::GetForProfile(profile_.get()); | 357 CreateService(ProfileSyncService::AUTO_START); |
| 215 ProfileOAuth2TokenService* oauth2_token_service = | 358 Initialize(); |
| 216 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); | 359 EXPECT_TRUE(service()->IsManaged()); |
| 217 service_.reset(new TestProfileSyncService( | 360 EXPECT_FALSE(service()->sync_initialized()); |
| 218 new ProfileSyncComponentsFactoryMock(), | 361 } |
| 219 profile_.get(), | 362 |
| 220 signin, | 363 // Verify that disable by enterprise policy works even after the backend has |
| 221 oauth2_token_service, | 364 // been initialized. |
| 222 ProfileSyncService::MANUAL_START, | 365 TEST_F(ProfileSyncServiceSimpleTest, DisabledByPolicyAfterInit) { |
| 223 true)); | 366 IssueTestTokens(); |
| 224 service_->Initialize(); | 367 CreateService(ProfileSyncService::AUTO_START); |
| 225 EXPECT_TRUE(service_->IsManaged()); | 368 ExpectDataTypeManagerCreation(); |
| 226 } | 369 ExpectSyncBackendHostCreation(); |
| 227 | 370 Initialize(); |
| 228 TEST_F(ProfileSyncServiceTest, AbortedByShutdown) { | 371 |
| 229 SigninManagerBase* signin = | 372 EXPECT_FALSE(service()->IsManaged()); |
| 230 SigninManagerFactory::GetForProfile(profile_.get()); | 373 EXPECT_TRUE(service()->sync_initialized()); |
| 231 signin->SetAuthenticatedUsername("test"); | 374 |
| 232 ProfileOAuth2TokenService* oauth2_token_service = | 375 profile()->GetTestingPrefService()->SetManagedPref( |
| 233 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); | 376 prefs::kSyncManaged, |
| 234 ProfileSyncComponentsFactoryMock* factory = | 377 Value::CreateBooleanValue(true)); |
| 235 new ProfileSyncComponentsFactoryMock(); | 378 |
| 236 service_.reset(new TestProfileSyncService( | 379 EXPECT_TRUE(service()->IsManaged()); |
| 237 factory, | 380 EXPECT_FALSE(service()->sync_initialized()); |
| 238 profile_.get(), | 381 } |
| 239 signin, | 382 |
| 240 oauth2_token_service, | 383 // Exercies the ProfileSyncService's code paths related to getting shut down |
| 241 ProfileSyncService::AUTO_START, | 384 // before the backend initialize call returns. |
| 242 true)); | 385 TEST_F(ProfileSyncServiceSimpleTest, AbortedByShutdown) { |
| 243 EXPECT_CALL(*factory, CreateDataTypeManager(_, _, _, _, _, _)).Times(0); | 386 CreateService(ProfileSyncService::AUTO_START); |
| 244 EXPECT_CALL(*factory, CreateBookmarkSyncComponents(_, _)). | 387 PrepareDelayedInitSyncBackendHost(); |
| 245 Times(0); | 388 |
| 246 service_->RegisterDataTypeController( | 389 IssueTestTokens(); |
| 247 new BookmarkDataTypeController(service_->factory(), | 390 Initialize(); |
| 248 profile_.get(), | 391 EXPECT_FALSE(service()->sync_initialized()); |
| 249 service_.get())); | 392 |
| 250 | 393 ShutdownAndDeleteService(); |
| 251 service_->Initialize(); | 394 } |
| 252 service_->Shutdown(); | 395 |
| 253 service_.reset(); | 396 // Test StopAndSuppress() before we've initialized the backend. |
| 254 } | 397 TEST_F(ProfileSyncServiceSimpleTest, EarlyStopAndSuppress) { |
| 255 | 398 CreateService(ProfileSyncService::AUTO_START); |
| 256 TEST_F(ProfileSyncServiceTest, DisableAndEnableSyncTemporarily) { | 399 IssueTestTokens(); |
| 257 SigninManagerBase* signin = | 400 |
| 258 SigninManagerFactory::GetForProfile(profile_.get()); | 401 service()->StopAndSuppress(); |
| 259 signin->SetAuthenticatedUsername("test"); | 402 EXPECT_TRUE(profile()->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); |
| 260 ProfileOAuth2TokenService* oauth2_token_service = | 403 |
| 261 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); | 404 // Because of supression, this should fail. |
| 262 ProfileSyncComponentsFactoryMock* factory = | 405 Initialize(); |
| 263 new ProfileSyncComponentsFactoryMock(); | 406 EXPECT_FALSE(service()->sync_initialized()); |
| 264 service_.reset(new TestProfileSyncService( | 407 |
| 265 factory, | 408 // Remove suppression. This should be enough to allow init to happen. |
| 266 profile_.get(), | 409 ExpectDataTypeManagerCreation(); |
| 267 signin, | 410 ExpectSyncBackendHostCreation(); |
| 268 oauth2_token_service, | 411 service()->UnsuppressAndStart(); |
| 269 ProfileSyncService::AUTO_START, | 412 EXPECT_TRUE(service()->sync_initialized()); |
| 270 true)); | |
| 271 // Register the bookmark data type. | |
| 272 EXPECT_CALL(*factory, CreateDataTypeManager(_, _, _, _, _, _)). | |
| 273 WillRepeatedly(ReturnNewDataTypeManager()); | |
| 274 | |
| 275 IssueTestTokens(); | |
| 276 | |
| 277 service_->Initialize(); | |
| 278 EXPECT_TRUE(service_->sync_initialized()); | |
| 279 EXPECT_TRUE(service_->GetBackendForTest() != NULL); | |
| 280 EXPECT_FALSE( | 413 EXPECT_FALSE( |
| 281 profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); | 414 profile()->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); |
| 282 | 415 } |
| 283 service_->StopAndSuppress(); | 416 |
| 284 EXPECT_FALSE(service_->sync_initialized()); | 417 // Test StopAndSuppress() after we've initialized the backend. |
| 285 EXPECT_TRUE( | 418 TEST_F(ProfileSyncServiceSimpleTest, DisableAndEnableSyncTemporarily) { |
| 286 profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); | 419 CreateService(ProfileSyncService::AUTO_START); |
| 287 | 420 IssueTestTokens(); |
| 288 service_->UnsuppressAndStart(); | 421 ExpectDataTypeManagerCreation(); |
| 289 EXPECT_TRUE(service_->sync_initialized()); | 422 ExpectSyncBackendHostCreation(); |
| 423 Initialize(); | |
| 424 | |
| 425 EXPECT_TRUE(service()->sync_initialized()); | |
| 426 EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); | |
| 427 | |
| 428 testing::Mock::VerifyAndClearExpectations(components_factory()); | |
| 429 | |
| 430 service()->StopAndSuppress(); | |
| 431 EXPECT_FALSE(service()->sync_initialized()); | |
| 432 EXPECT_TRUE(profile()->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); | |
| 433 | |
| 434 ExpectDataTypeManagerCreation(); | |
| 435 ExpectSyncBackendHostCreation(); | |
| 436 | |
| 437 service()->UnsuppressAndStart(); | |
| 438 EXPECT_TRUE(service()->sync_initialized()); | |
| 290 EXPECT_FALSE( | 439 EXPECT_FALSE( |
| 291 profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); | 440 profile()->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); |
| 292 } | 441 } |
| 293 | 442 |
| 294 // Certain ProfileSyncService tests don't apply to Chrome OS, for example | 443 // Certain ProfileSyncService tests don't apply to Chrome OS, for example |
| 295 // things that deal with concepts like "signing out" and policy. | 444 // things that deal with concepts like "signing out" and policy. |
| 296 #if !defined (OS_CHROMEOS) | 445 #if !defined (OS_CHROMEOS) |
| 297 | 446 |
| 298 TEST_F(ProfileSyncServiceTest, EnableSyncAndSignOut) { | 447 TEST_F(ProfileSyncServiceSimpleTest, EnableSyncAndSignOut) { |
| 299 SigninManager* signin = | 448 CreateService(ProfileSyncService::AUTO_START); |
| 300 SigninManagerFactory::GetForProfile(profile_.get()); | 449 ExpectDataTypeManagerCreation(); |
| 301 signin->SetAuthenticatedUsername("test"); | 450 ExpectSyncBackendHostCreation(); |
| 302 ProfileOAuth2TokenService* oauth2_token_service = | 451 IssueTestTokens(); |
| 303 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); | 452 Initialize(); |
| 304 ProfileSyncComponentsFactoryMock* factory = | 453 |
| 305 new ProfileSyncComponentsFactoryMock(); | 454 EXPECT_TRUE(service()->sync_initialized()); |
| 306 service_.reset(new TestProfileSyncService( | 455 EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); |
| 307 factory, | 456 |
| 308 profile_.get(), | 457 SigninManagerFactory::GetForProfile(profile())->SignOut(); |
| 309 signin, | 458 EXPECT_FALSE(service()->sync_initialized()); |
| 310 oauth2_token_service, | |
| 311 ProfileSyncService::AUTO_START, | |
| 312 true)); | |
| 313 // Register the bookmark data type. | |
| 314 EXPECT_CALL(*factory, CreateDataTypeManager(_, _, _, _, _, _)). | |
| 315 WillRepeatedly(ReturnNewDataTypeManager()); | |
| 316 | |
| 317 IssueTestTokens(); | |
| 318 | |
| 319 service_->Initialize(); | |
| 320 EXPECT_TRUE(service_->sync_initialized()); | |
| 321 EXPECT_TRUE(service_->GetBackendForTest() != NULL); | |
| 322 EXPECT_FALSE( | |
| 323 profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)); | |
| 324 | |
| 325 signin->SignOut(); | |
| 326 EXPECT_FALSE(service_->sync_initialized()); | |
| 327 } | 459 } |
| 328 | 460 |
| 329 #endif // !defined(OS_CHROMEOS) | 461 #endif // !defined(OS_CHROMEOS) |
| 330 | 462 |
| 331 TEST_F(ProfileSyncServiceTest, JsControllerHandlersBasic) { | 463 TEST_F(ProfileSyncServiceTest, JsControllerHandlersBasic) { |
| 332 StartSyncService(); | 464 StartSyncService(); |
| 333 EXPECT_TRUE(service_->sync_initialized()); | 465 EXPECT_TRUE(service_->sync_initialized()); |
| 334 EXPECT_TRUE(service_->GetBackendForTest() != NULL); | 466 EXPECT_TRUE(service_->GetBackendForTest() != NULL); |
| 335 | 467 |
| 336 base::WeakPtr<syncer::JsController> js_controller = | 468 base::WeakPtr<syncer::JsController> js_controller = |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 514 EXPECT_TRUE(token_status.next_token_request_time.is_null()); | 646 EXPECT_TRUE(token_status.next_token_request_time.is_null()); |
| 515 | 647 |
| 516 // Simulate successful connection. | 648 // Simulate successful connection. |
| 517 service_->OnConnectionStatusChange(syncer::CONNECTION_OK); | 649 service_->OnConnectionStatusChange(syncer::CONNECTION_OK); |
| 518 token_status = service_->GetSyncTokenStatus(); | 650 token_status = service_->GetSyncTokenStatus(); |
| 519 EXPECT_EQ(syncer::CONNECTION_OK, token_status.connection_status); | 651 EXPECT_EQ(syncer::CONNECTION_OK, token_status.connection_status); |
| 520 } | 652 } |
| 521 | 653 |
| 522 } // namespace | 654 } // namespace |
| 523 } // namespace browser_sync | 655 } // namespace browser_sync |
| OLD | NEW |