| 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 <memory> | 5 #include <memory> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 #include "components/sync/driver/sync_prefs.h" | 26 #include "components/sync/driver/sync_prefs.h" |
| 27 #include "components/sync/driver/sync_service_observer.h" | 27 #include "components/sync/driver/sync_service_observer.h" |
| 28 #include "components/syncable_prefs/pref_service_syncable.h" | 28 #include "components/syncable_prefs/pref_service_syncable.h" |
| 29 #include "google_apis/gaia/gaia_auth_consumer.h" | 29 #include "google_apis/gaia/gaia_auth_consumer.h" |
| 30 #include "google_apis/gaia/gaia_constants.h" | 30 #include "google_apis/gaia/gaia_constants.h" |
| 31 #include "google_apis/gaia/oauth2_token_service.h" | 31 #include "google_apis/gaia/oauth2_token_service.h" |
| 32 #include "net/url_request/url_request_test_util.h" | 32 #include "net/url_request/url_request_test_util.h" |
| 33 #include "testing/gmock/include/gmock/gmock.h" | 33 #include "testing/gmock/include/gmock/gmock.h" |
| 34 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
| 35 | 35 |
| 36 using sync_driver::DataTypeManager; | 36 using syncer::DataTypeManager; |
| 37 using sync_driver::DataTypeManagerMock; | 37 using syncer::DataTypeManagerMock; |
| 38 using syncer::SyncBackendHostMock; |
| 38 using testing::_; | 39 using testing::_; |
| 39 using testing::AnyNumber; | 40 using testing::AnyNumber; |
| 40 using testing::DoAll; | 41 using testing::DoAll; |
| 41 using testing::Mock; | 42 using testing::Mock; |
| 42 using testing::Return; | 43 using testing::Return; |
| 43 | 44 |
| 44 namespace browser_sync { | 45 namespace browser_sync { |
| 45 | 46 |
| 46 namespace { | 47 namespace { |
| 47 | 48 |
| 48 const char kGaiaId[] = "12345"; | 49 const char kGaiaId[] = "12345"; |
| 49 const char kEmail[] = "test_user@gmail.com"; | 50 const char kEmail[] = "test_user@gmail.com"; |
| 50 const char kDummyPassword[] = ""; | 51 const char kDummyPassword[] = ""; |
| 51 | 52 |
| 52 class SyncServiceObserverMock : public sync_driver::SyncServiceObserver { | 53 class SyncServiceObserverMock : public syncer::SyncServiceObserver { |
| 53 public: | 54 public: |
| 54 SyncServiceObserverMock(); | 55 SyncServiceObserverMock(); |
| 55 virtual ~SyncServiceObserverMock(); | 56 virtual ~SyncServiceObserverMock(); |
| 56 | 57 |
| 57 MOCK_METHOD0(OnStateChanged, void()); | 58 MOCK_METHOD0(OnStateChanged, void()); |
| 58 }; | 59 }; |
| 59 | 60 |
| 60 SyncServiceObserverMock::SyncServiceObserverMock() {} | 61 SyncServiceObserverMock::SyncServiceObserverMock() {} |
| 61 | 62 |
| 62 SyncServiceObserverMock::~SyncServiceObserverMock() {} | 63 SyncServiceObserverMock::~SyncServiceObserverMock() {} |
| 63 | 64 |
| 64 } // namespace | 65 } // namespace |
| 65 | 66 |
| 66 ACTION_P(InvokeOnConfigureStart, sync_service) { | 67 ACTION_P(InvokeOnConfigureStart, sync_service) { |
| 67 sync_service->OnConfigureStart(); | 68 sync_service->OnConfigureStart(); |
| 68 } | 69 } |
| 69 | 70 |
| 70 ACTION_P3(InvokeOnConfigureDone, sync_service, error_callback, result) { | 71 ACTION_P3(InvokeOnConfigureDone, sync_service, error_callback, result) { |
| 71 DataTypeManager::ConfigureResult configure_result = | 72 DataTypeManager::ConfigureResult configure_result = |
| 72 static_cast<DataTypeManager::ConfigureResult>(result); | 73 static_cast<DataTypeManager::ConfigureResult>(result); |
| 73 if (result.status == sync_driver::DataTypeManager::ABORTED) | 74 if (result.status == syncer::DataTypeManager::ABORTED) |
| 74 error_callback.Run(&configure_result); | 75 error_callback.Run(&configure_result); |
| 75 sync_service->OnConfigureDone(configure_result); | 76 sync_service->OnConfigureDone(configure_result); |
| 76 } | 77 } |
| 77 | 78 |
| 78 class ProfileSyncServiceStartupTest : public testing::Test { | 79 class ProfileSyncServiceStartupTest : public testing::Test { |
| 79 public: | 80 public: |
| 80 ProfileSyncServiceStartupTest() { | 81 ProfileSyncServiceStartupTest() { |
| 81 profile_sync_service_bundle_.auth_service() | 82 profile_sync_service_bundle_.auth_service() |
| 82 ->set_auto_post_fetch_response_on_message_loop(true); | 83 ->set_auto_post_fetch_response_on_message_loop(true); |
| 83 } | 84 } |
| 84 | 85 |
| 85 ~ProfileSyncServiceStartupTest() override { | 86 ~ProfileSyncServiceStartupTest() override { |
| 86 sync_service_->RemoveObserver(&observer_); | 87 sync_service_->RemoveObserver(&observer_); |
| 87 sync_service_->Shutdown(); | 88 sync_service_->Shutdown(); |
| 88 } | 89 } |
| 89 | 90 |
| 90 void CreateSyncService(ProfileSyncService::StartBehavior start_behavior) { | 91 void CreateSyncService(ProfileSyncService::StartBehavior start_behavior) { |
| 91 component_factory_ = profile_sync_service_bundle_.component_factory(); | 92 component_factory_ = profile_sync_service_bundle_.component_factory(); |
| 92 ProfileSyncServiceBundle::SyncClientBuilder builder( | 93 ProfileSyncServiceBundle::SyncClientBuilder builder( |
| 93 &profile_sync_service_bundle_); | 94 &profile_sync_service_bundle_); |
| 94 ProfileSyncService::InitParams init_params = | 95 ProfileSyncService::InitParams init_params = |
| 95 profile_sync_service_bundle_.CreateBasicInitParams(start_behavior, | 96 profile_sync_service_bundle_.CreateBasicInitParams(start_behavior, |
| 96 builder.Build()); | 97 builder.Build()); |
| 97 | 98 |
| 98 sync_service_.reset(new ProfileSyncService(std::move(init_params))); | 99 sync_service_.reset(new ProfileSyncService(std::move(init_params))); |
| 99 sync_service_->RegisterDataTypeController( | 100 sync_service_->RegisterDataTypeController( |
| 100 base::MakeUnique<sync_driver::FakeDataTypeController>( | 101 base::MakeUnique<syncer::FakeDataTypeController>(syncer::BOOKMARKS)); |
| 101 syncer::BOOKMARKS)); | |
| 102 sync_service_->AddObserver(&observer_); | 102 sync_service_->AddObserver(&observer_); |
| 103 } | 103 } |
| 104 | 104 |
| 105 void IssueTestTokens(const std::string& account_id) { | 105 void IssueTestTokens(const std::string& account_id) { |
| 106 profile_sync_service_bundle_.auth_service()->UpdateCredentials( | 106 profile_sync_service_bundle_.auth_service()->UpdateCredentials( |
| 107 account_id, "oauth2_login_token"); | 107 account_id, "oauth2_login_token"); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void SetError(DataTypeManager::ConfigureResult* result) { | 110 void SetError(DataTypeManager::ConfigureResult* result) { |
| 111 sync_driver::DataTypeStatusTable::TypeErrorMap errors; | 111 syncer::DataTypeStatusTable::TypeErrorMap errors; |
| 112 errors[syncer::BOOKMARKS] = | 112 errors[syncer::BOOKMARKS] = |
| 113 syncer::SyncError(FROM_HERE, syncer::SyncError::UNRECOVERABLE_ERROR, | 113 syncer::SyncError(FROM_HERE, syncer::SyncError::UNRECOVERABLE_ERROR, |
| 114 "Error", syncer::BOOKMARKS); | 114 "Error", syncer::BOOKMARKS); |
| 115 result->data_type_status_table.UpdateFailedDataTypes(errors); | 115 result->data_type_status_table.UpdateFailedDataTypes(errors); |
| 116 } | 116 } |
| 117 | 117 |
| 118 protected: | 118 protected: |
| 119 std::string SimulateTestUserSignin(ProfileSyncService* sync_service) { | 119 std::string SimulateTestUserSignin(ProfileSyncService* sync_service) { |
| 120 std::string account_id = | 120 std::string account_id = |
| 121 profile_sync_service_bundle_.account_tracker()->SeedAccountInfo(kGaiaId, | 121 profile_sync_service_bundle_.account_tracker()->SeedAccountInfo(kGaiaId, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 148 } | 148 } |
| 149 | 149 |
| 150 PrefService* pref_service() { | 150 PrefService* pref_service() { |
| 151 return profile_sync_service_bundle_.pref_service(); | 151 return profile_sync_service_bundle_.pref_service(); |
| 152 } | 152 } |
| 153 | 153 |
| 154 base::MessageLoop message_loop_; | 154 base::MessageLoop message_loop_; |
| 155 ProfileSyncServiceBundle profile_sync_service_bundle_; | 155 ProfileSyncServiceBundle profile_sync_service_bundle_; |
| 156 std::unique_ptr<ProfileSyncService> sync_service_; | 156 std::unique_ptr<ProfileSyncService> sync_service_; |
| 157 SyncServiceObserverMock observer_; | 157 SyncServiceObserverMock observer_; |
| 158 sync_driver::DataTypeStatusTable data_type_status_table_; | 158 syncer::DataTypeStatusTable data_type_status_table_; |
| 159 SyncApiComponentFactoryMock* component_factory_ = nullptr; | 159 syncer::SyncApiComponentFactoryMock* component_factory_ = nullptr; |
| 160 }; | 160 }; |
| 161 | 161 |
| 162 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { | 162 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { |
| 163 public: | 163 public: |
| 164 ProfileSyncServiceStartupCrosTest() { | 164 ProfileSyncServiceStartupCrosTest() { |
| 165 CreateSyncService(ProfileSyncService::AUTO_START); | 165 CreateSyncService(ProfileSyncService::AUTO_START); |
| 166 SimulateTestUserSignin(nullptr); | 166 SimulateTestUserSignin(nullptr); |
| 167 EXPECT_TRUE( | 167 EXPECT_TRUE( |
| 168 profile_sync_service_bundle_.signin_manager()->IsAuthenticated()); | 168 profile_sync_service_bundle_.signin_manager()->IsAuthenticated()); |
| 169 } | 169 } |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { | 172 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { |
| 173 // We've never completed startup. | 173 // We've never completed startup. |
| 174 pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete); | 174 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 175 CreateSyncService(ProfileSyncService::MANUAL_START); | 175 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 176 SetUpSyncBackendHost(); | 176 SetUpSyncBackendHost(); |
| 177 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 177 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 178 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 178 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
| 179 | 179 |
| 180 // Should not actually start, rather just clean things up and wait | 180 // Should not actually start, rather just clean things up and wait |
| 181 // to be enabled. | 181 // to be enabled. |
| 182 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 182 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 183 sync_service_->Initialize(); | 183 sync_service_->Initialize(); |
| 184 | 184 |
| 185 // Preferences should be back to defaults. | 185 // Preferences should be back to defaults. |
| 186 EXPECT_EQ(0, | 186 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); |
| 187 pref_service()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime)); | |
| 188 EXPECT_FALSE( | 187 EXPECT_FALSE( |
| 189 pref_service()->GetBoolean(sync_driver::prefs::kSyncFirstSetupComplete)); | 188 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); |
| 190 Mock::VerifyAndClearExpectations(data_type_manager); | 189 Mock::VerifyAndClearExpectations(data_type_manager); |
| 191 | 190 |
| 192 // Then start things up. | 191 // Then start things up. |
| 193 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); | 192 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); |
| 194 EXPECT_CALL(*data_type_manager, state()) | 193 EXPECT_CALL(*data_type_manager, state()) |
| 195 .WillOnce(Return(DataTypeManager::CONFIGURED)) | 194 .WillOnce(Return(DataTypeManager::CONFIGURED)) |
| 196 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 195 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 197 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 196 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 198 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 197 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 199 | 198 |
| 200 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 199 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 201 | 200 |
| 202 // Simulate successful signin as test_user. | 201 // Simulate successful signin as test_user. |
| 203 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 202 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 204 // Create some tokens in the token service. | 203 // Create some tokens in the token service. |
| 205 IssueTestTokens(account_id); | 204 IssueTestTokens(account_id); |
| 206 | 205 |
| 207 // Simulate the UI telling sync it has finished setting up. | 206 // Simulate the UI telling sync it has finished setting up. |
| 208 sync_blocker.reset(); | 207 sync_blocker.reset(); |
| 209 sync_service_->SetFirstSetupComplete(); | 208 sync_service_->SetFirstSetupComplete(); |
| 210 EXPECT_TRUE(sync_service_->IsSyncActive()); | 209 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 211 } | 210 } |
| 212 | 211 |
| 213 // TODO(pavely): Reenable test once android is switched to oauth2. | 212 // TODO(pavely): Reenable test once android is switched to oauth2. |
| 214 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { | 213 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { |
| 215 // We've never completed startup. | 214 // We've never completed startup. |
| 216 pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete); | 215 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 217 CreateSyncService(ProfileSyncService::MANUAL_START); | 216 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 218 | 217 |
| 219 // Should not actually start, rather just clean things up and wait | 218 // Should not actually start, rather just clean things up and wait |
| 220 // to be enabled. | 219 // to be enabled. |
| 221 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) | 220 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) |
| 222 .Times(0); | 221 .Times(0); |
| 223 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 222 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 224 sync_service_->Initialize(); | 223 sync_service_->Initialize(); |
| 225 | 224 |
| 226 // Preferences should be back to defaults. | 225 // Preferences should be back to defaults. |
| 227 EXPECT_EQ(0, | 226 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); |
| 228 pref_service()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime)); | |
| 229 EXPECT_FALSE( | 227 EXPECT_FALSE( |
| 230 pref_service()->GetBoolean(sync_driver::prefs::kSyncFirstSetupComplete)); | 228 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); |
| 231 | 229 |
| 232 // Then start things up. | 230 // Then start things up. |
| 233 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 231 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 234 | 232 |
| 235 // Simulate successful signin as test_user. | 233 // Simulate successful signin as test_user. |
| 236 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 234 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 237 | 235 |
| 238 profile_sync_service_bundle_.auth_service()->LoadCredentials(account_id); | 236 profile_sync_service_bundle_.auth_service()->LoadCredentials(account_id); |
| 239 | 237 |
| 240 sync_blocker.reset(); | 238 sync_blocker.reset(); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 sync_blocker.reset(); | 275 sync_blocker.reset(); |
| 278 | 276 |
| 279 // Verify we successfully finish startup and configuration. | 277 // Verify we successfully finish startup and configuration. |
| 280 EXPECT_TRUE(sync_service_->IsSyncActive()); | 278 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 281 } | 279 } |
| 282 | 280 |
| 283 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { | 281 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { |
| 284 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) | 282 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) |
| 285 .Times(0); | 283 .Times(0); |
| 286 EXPECT_CALL(*component_factory_, CreateSyncBackendHost(_, _, _, _)).Times(0); | 284 EXPECT_CALL(*component_factory_, CreateSyncBackendHost(_, _, _, _)).Times(0); |
| 287 pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete); | 285 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 288 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 286 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 289 | 287 |
| 290 sync_service_->Initialize(); | 288 sync_service_->Initialize(); |
| 291 // Sync should not start because there are no tokens yet. | 289 // Sync should not start because there are no tokens yet. |
| 292 EXPECT_FALSE(sync_service_->IsSyncActive()); | 290 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 293 sync_service_->SetFirstSetupComplete(); | 291 sync_service_->SetFirstSetupComplete(); |
| 294 | 292 |
| 295 // Sync should not start because there are still no tokens. | 293 // Sync should not start because there are still no tokens. |
| 296 EXPECT_FALSE(sync_service_->IsSyncActive()); | 294 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 297 } | 295 } |
| 298 | 296 |
| 299 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { | 297 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { |
| 300 SetUpSyncBackendHost(); | 298 SetUpSyncBackendHost(); |
| 301 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 299 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 302 pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete); | 300 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 303 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 301 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 304 EXPECT_CALL(*data_type_manager, state()) | 302 EXPECT_CALL(*data_type_manager, state()) |
| 305 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 303 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 306 EXPECT_CALL(*data_type_manager, Stop()); | 304 EXPECT_CALL(*data_type_manager, Stop()); |
| 307 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 305 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 308 | 306 |
| 309 IssueTestTokens( | 307 IssueTestTokens( |
| 310 profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount( | 308 profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount( |
| 311 "12345", kEmail)); | 309 "12345", kEmail)); |
| 312 sync_service_->Initialize(); | 310 sync_service_->Initialize(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 329 IssueTestTokens(account_id); | 327 IssueTestTokens(account_id); |
| 330 | 328 |
| 331 sync_service_->Initialize(); | 329 sync_service_->Initialize(); |
| 332 } | 330 } |
| 333 | 331 |
| 334 // Test that we can recover from a case where a bug in the code resulted in | 332 // Test that we can recover from a case where a bug in the code resulted in |
| 335 // OnUserChoseDatatypes not being properly called and datatype preferences | 333 // OnUserChoseDatatypes not being properly called and datatype preferences |
| 336 // therefore being left unset. | 334 // therefore being left unset. |
| 337 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { | 335 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { |
| 338 // Clear the datatype preference fields (simulating bug 154940). | 336 // Clear the datatype preference fields (simulating bug 154940). |
| 339 pref_service()->ClearPref(sync_driver::prefs::kSyncKeepEverythingSynced); | 337 pref_service()->ClearPref(syncer::prefs::kSyncKeepEverythingSynced); |
| 340 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 338 syncer::ModelTypeSet user_types = syncer::UserTypes(); |
| 341 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); iter.Good(); | 339 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); iter.Good(); |
| 342 iter.Inc()) { | 340 iter.Inc()) { |
| 343 pref_service()->ClearPref( | 341 pref_service()->ClearPref( |
| 344 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get())); | 342 syncer::SyncPrefs::GetPrefNameForDataType(iter.Get())); |
| 345 } | 343 } |
| 346 | 344 |
| 347 // Pre load the tokens | 345 // Pre load the tokens |
| 348 CreateSyncService(ProfileSyncService::MANUAL_START); | 346 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 349 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 347 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 350 sync_service_->SetFirstSetupComplete(); | 348 sync_service_->SetFirstSetupComplete(); |
| 351 SetUpSyncBackendHost(); | 349 SetUpSyncBackendHost(); |
| 352 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 350 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 353 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 351 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 354 EXPECT_CALL(*data_type_manager, state()) | 352 EXPECT_CALL(*data_type_manager, state()) |
| 355 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 353 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 356 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 354 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 357 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 355 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 358 | 356 |
| 359 IssueTestTokens(account_id); | 357 IssueTestTokens(account_id); |
| 360 sync_service_->Initialize(); | 358 sync_service_->Initialize(); |
| 361 | 359 |
| 362 EXPECT_TRUE(pref_service()->GetBoolean( | 360 EXPECT_TRUE( |
| 363 sync_driver::prefs::kSyncKeepEverythingSynced)); | 361 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
| 364 } | 362 } |
| 365 | 363 |
| 366 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 364 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
| 367 // case where only bookmarks are enabled. | 365 // case where only bookmarks are enabled. |
| 368 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { | 366 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { |
| 369 // Explicitly set Keep Everything Synced to false and have only bookmarks | 367 // Explicitly set Keep Everything Synced to false and have only bookmarks |
| 370 // enabled. | 368 // enabled. |
| 371 pref_service()->SetBoolean(sync_driver::prefs::kSyncKeepEverythingSynced, | 369 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); |
| 372 false); | |
| 373 | 370 |
| 374 // Pre load the tokens | 371 // Pre load the tokens |
| 375 CreateSyncService(ProfileSyncService::MANUAL_START); | 372 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 376 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 373 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 377 sync_service_->SetFirstSetupComplete(); | 374 sync_service_->SetFirstSetupComplete(); |
| 378 SetUpSyncBackendHost(); | 375 SetUpSyncBackendHost(); |
| 379 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 376 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 380 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 377 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 381 EXPECT_CALL(*data_type_manager, state()) | 378 EXPECT_CALL(*data_type_manager, state()) |
| 382 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 379 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 383 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 380 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 384 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 381 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 385 IssueTestTokens(account_id); | 382 IssueTestTokens(account_id); |
| 386 sync_service_->Initialize(); | 383 sync_service_->Initialize(); |
| 387 | 384 |
| 388 EXPECT_FALSE(pref_service()->GetBoolean( | 385 EXPECT_FALSE( |
| 389 sync_driver::prefs::kSyncKeepEverythingSynced)); | 386 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
| 390 } | 387 } |
| 391 | 388 |
| 392 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 389 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
| 393 // Service should not be started by Initialize() since it's managed. | 390 // Service should not be started by Initialize() since it's managed. |
| 394 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); | 391 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); |
| 395 CreateSyncService(ProfileSyncService::MANUAL_START); | 392 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 396 | 393 |
| 397 // Disable sync through policy. | 394 // Disable sync through policy. |
| 398 pref_service()->SetBoolean(sync_driver::prefs::kSyncManaged, true); | 395 pref_service()->SetBoolean(syncer::prefs::kSyncManaged, true); |
| 399 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) | 396 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) |
| 400 .Times(0); | 397 .Times(0); |
| 401 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 398 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 402 | 399 |
| 403 sync_service_->Initialize(); | 400 sync_service_->Initialize(); |
| 404 } | 401 } |
| 405 | 402 |
| 406 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 403 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
| 407 CreateSyncService(ProfileSyncService::MANUAL_START); | 404 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 408 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 405 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 409 sync_service_->SetFirstSetupComplete(); | 406 sync_service_->SetFirstSetupComplete(); |
| 410 SetUpSyncBackendHost(); | 407 SetUpSyncBackendHost(); |
| 411 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 408 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 412 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 409 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 413 EXPECT_CALL(*data_type_manager, state()) | 410 EXPECT_CALL(*data_type_manager, state()) |
| 414 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 411 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 415 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 412 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 416 IssueTestTokens(account_id); | 413 IssueTestTokens(account_id); |
| 417 sync_service_->Initialize(); | 414 sync_service_->Initialize(); |
| 418 EXPECT_TRUE(sync_service_->IsBackendInitialized()); | 415 EXPECT_TRUE(sync_service_->IsBackendInitialized()); |
| 419 EXPECT_TRUE(sync_service_->IsSyncActive()); | 416 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 420 | 417 |
| 421 // The service should stop when switching to managed mode. | 418 // The service should stop when switching to managed mode. |
| 422 Mock::VerifyAndClearExpectations(data_type_manager); | 419 Mock::VerifyAndClearExpectations(data_type_manager); |
| 423 EXPECT_CALL(*data_type_manager, state()) | 420 EXPECT_CALL(*data_type_manager, state()) |
| 424 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 421 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 425 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 422 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 426 pref_service()->SetBoolean(sync_driver::prefs::kSyncManaged, true); | 423 pref_service()->SetBoolean(syncer::prefs::kSyncManaged, true); |
| 427 EXPECT_FALSE(sync_service_->IsBackendInitialized()); | 424 EXPECT_FALSE(sync_service_->IsBackendInitialized()); |
| 428 // Note that PSS no longer references |data_type_manager| after stopping. | 425 // Note that PSS no longer references |data_type_manager| after stopping. |
| 429 | 426 |
| 430 // When switching back to unmanaged, the state should change but sync should | 427 // When switching back to unmanaged, the state should change but sync should |
| 431 // not start automatically because IsFirstSetupComplete() will be false. | 428 // not start automatically because IsFirstSetupComplete() will be false. |
| 432 // A new DataTypeManager should not be created. | 429 // A new DataTypeManager should not be created. |
| 433 Mock::VerifyAndClearExpectations(data_type_manager); | 430 Mock::VerifyAndClearExpectations(data_type_manager); |
| 434 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) | 431 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) |
| 435 .Times(0); | 432 .Times(0); |
| 436 pref_service()->ClearPref(sync_driver::prefs::kSyncManaged); | 433 pref_service()->ClearPref(syncer::prefs::kSyncManaged); |
| 437 EXPECT_FALSE(sync_service_->IsBackendInitialized()); | 434 EXPECT_FALSE(sync_service_->IsBackendInitialized()); |
| 438 EXPECT_FALSE(sync_service_->IsSyncActive()); | 435 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 439 } | 436 } |
| 440 | 437 |
| 441 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { | 438 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { |
| 442 CreateSyncService(ProfileSyncService::MANUAL_START); | 439 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 443 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 440 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 444 sync_service_->SetFirstSetupComplete(); | 441 sync_service_->SetFirstSetupComplete(); |
| 445 SetUpSyncBackendHost(); | 442 SetUpSyncBackendHost(); |
| 446 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 443 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 462 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); | 459 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); |
| 463 } | 460 } |
| 464 | 461 |
| 465 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 462 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
| 466 // Pre load the tokens | 463 // Pre load the tokens |
| 467 CreateSyncService(ProfileSyncService::MANUAL_START); | 464 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 468 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 465 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 469 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); | 466 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); |
| 470 mock_sbh->set_fail_initial_download(true); | 467 mock_sbh->set_fail_initial_download(true); |
| 471 | 468 |
| 472 pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete); | 469 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 473 | 470 |
| 474 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 471 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 475 sync_service_->Initialize(); | 472 sync_service_->Initialize(); |
| 476 | 473 |
| 477 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 474 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 478 IssueTestTokens(account_id); | 475 IssueTestTokens(account_id); |
| 479 sync_blocker.reset(); | 476 sync_blocker.reset(); |
| 480 EXPECT_FALSE(sync_service_->IsSyncActive()); | 477 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 481 } | 478 } |
| 482 | 479 |
| 483 } // namespace browser_sync | 480 } // namespace browser_sync |
| OLD | NEW |