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

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

Issue 420633002: [Sync] Cleanup datatype configuration error handling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/file_util.h" 5 #include "base/file_util.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/prefs/pref_service_syncable.h" 9 #include "chrome/browser/prefs/pref_service_syncable.h"
10 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 10 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
(...skipping 27 matching lines...) Expand all
38 using browser_sync::SyncBackendHostMock; 38 using browser_sync::SyncBackendHostMock;
39 using content::BrowserThread; 39 using content::BrowserThread;
40 using sync_driver::DataTypeManager; 40 using sync_driver::DataTypeManager;
41 using sync_driver::DataTypeManagerMock; 41 using sync_driver::DataTypeManagerMock;
42 using testing::_; 42 using testing::_;
43 using testing::AnyNumber; 43 using testing::AnyNumber;
44 using testing::DoAll; 44 using testing::DoAll;
45 using testing::InvokeArgument; 45 using testing::InvokeArgument;
46 using testing::Mock; 46 using testing::Mock;
47 using testing::Return; 47 using testing::Return;
48 using testing::SaveArg;
48 49
49 ACTION_P(InvokeOnConfigureStart, pss) { 50 ACTION_P(InvokeOnConfigureStart, pss) {
50 ProfileSyncService* service = 51 ProfileSyncService* service =
51 static_cast<ProfileSyncService*>(pss); 52 static_cast<ProfileSyncService*>(pss);
52 service->OnConfigureStart(); 53 service->OnConfigureStart();
53 } 54 }
54 55
55 ACTION_P2(InvokeOnConfigureDone, pss, result) { 56 ACTION_P3(InvokeOnConfigureDone, pss, error_callback, result) {
56 ProfileSyncService* service = 57 ProfileSyncService* service =
57 static_cast<ProfileSyncService*>(pss); 58 static_cast<ProfileSyncService*>(pss);
58 DataTypeManager::ConfigureResult configure_result = 59 DataTypeManager::ConfigureResult configure_result =
59 static_cast<DataTypeManager::ConfigureResult>(result); 60 static_cast<DataTypeManager::ConfigureResult>(result);
61 if (result.status == sync_driver::DataTypeManager::ABORTED)
62 error_callback.Run();
60 service->OnConfigureDone(configure_result); 63 service->OnConfigureDone(configure_result);
61 } 64 }
62 65
63 class ProfileSyncServiceStartupTest : public testing::Test { 66 class ProfileSyncServiceStartupTest : public testing::Test {
64 public: 67 public:
65 ProfileSyncServiceStartupTest() 68 ProfileSyncServiceStartupTest()
66 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD | 69 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD |
67 content::TestBrowserThreadBundle::REAL_FILE_THREAD | 70 content::TestBrowserThreadBundle::REAL_FILE_THREAD |
68 content::TestBrowserThreadBundle::REAL_IO_THREAD), 71 content::TestBrowserThreadBundle::REAL_IO_THREAD),
69 profile_manager_(TestingBrowserProcess::GetGlobal()), 72 profile_manager_(TestingBrowserProcess::GetGlobal()),
70 sync_(NULL) {} 73 sync_(NULL),
74 failed_data_types_handler_(NULL) {}
71 75
72 virtual ~ProfileSyncServiceStartupTest() { 76 virtual ~ProfileSyncServiceStartupTest() {
73 } 77 }
74 78
75 virtual void SetUp() { 79 virtual void SetUp() {
76 CHECK(profile_manager_.SetUp()); 80 CHECK(profile_manager_.SetUp());
77 81
78 TestingProfile::TestingFactories testing_facotries; 82 TestingProfile::TestingFactories testing_facotries;
79 testing_facotries.push_back( 83 testing_facotries.push_back(
80 std::make_pair(SigninManagerFactory::GetInstance(), 84 std::make_pair(SigninManagerFactory::GetInstance(),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 } 124 }
121 125
122 ProfileSyncComponentsFactoryMock* components_factory_mock() { 126 ProfileSyncComponentsFactoryMock* components_factory_mock() {
123 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory()); 127 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory());
124 } 128 }
125 129
126 FakeSigninManagerForTesting* fake_signin() { 130 FakeSigninManagerForTesting* fake_signin() {
127 return static_cast<FakeSigninManagerForTesting*>(sync_->signin()); 131 return static_cast<FakeSigninManagerForTesting*>(sync_->signin());
128 } 132 }
129 133
134 void SetError() {
135 sync_driver::FailedDataTypesHandler::TypeErrorMap errors;
136 errors[syncer::BOOKMARKS] =
137 syncer::SyncError(FROM_HERE,
138 syncer::SyncError::UNRECOVERABLE_ERROR,
139 "Error",
140 syncer::BOOKMARKS);
141 failed_data_types_handler_->UpdateFailedDataTypes(errors);
142 }
143
130 protected: 144 protected:
131 void SimulateTestUserSignin() { 145 void SimulateTestUserSignin() {
132 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 146 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
133 "test_user@gmail.com"); 147 "test_user@gmail.com");
134 #if !defined(OS_CHROMEOS) 148 #if !defined(OS_CHROMEOS)
135 fake_signin()->SignIn("test_user@gmail.com", ""); 149 fake_signin()->SignIn("test_user@gmail.com", "");
136 #else 150 #else
137 fake_signin()->SetAuthenticatedUsername("test_user@gmail.com"); 151 fake_signin()->SetAuthenticatedUsername("test_user@gmail.com");
138 sync_->GoogleSigninSucceeded("test_user@gmail.com", ""); 152 sync_->GoogleSigninSucceeded("test_user@gmail.com", "");
139 #endif 153 #endif
140 } 154 }
141 155
142 DataTypeManagerMock* SetUpDataTypeManager() { 156 DataTypeManagerMock* SetUpDataTypeManager() {
143 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); 157 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
144 EXPECT_CALL(*components_factory_mock(), 158 EXPECT_CALL(*components_factory_mock(),
145 CreateDataTypeManager(_, _, _, _, _, _)). 159 CreateDataTypeManager(_, _, _, _, _, _)).
146 WillOnce(Return(data_type_manager)); 160 WillOnce(DoAll(SaveArg<5>(&failed_data_types_handler_),
161 Return(data_type_manager)));
147 return data_type_manager; 162 return data_type_manager;
148 } 163 }
149 164
150 browser_sync::SyncBackendHostMock* SetUpSyncBackendHost() { 165 browser_sync::SyncBackendHostMock* SetUpSyncBackendHost() {
151 browser_sync::SyncBackendHostMock* sync_backend_host = 166 browser_sync::SyncBackendHostMock* sync_backend_host =
152 new browser_sync::SyncBackendHostMock(); 167 new browser_sync::SyncBackendHostMock();
153 EXPECT_CALL(*components_factory_mock(), 168 EXPECT_CALL(*components_factory_mock(),
154 CreateSyncBackendHost(_, _, _, _, _)). 169 CreateSyncBackendHost(_, _, _, _, _)).
155 WillOnce(Return(sync_backend_host)); 170 WillOnce(Return(sync_backend_host));
156 return sync_backend_host; 171 return sync_backend_host;
157 } 172 }
158 173
159 content::TestBrowserThreadBundle thread_bundle_; 174 content::TestBrowserThreadBundle thread_bundle_;
160 TestingProfileManager profile_manager_; 175 TestingProfileManager profile_manager_;
161 TestingProfile* profile_; 176 TestingProfile* profile_;
162 ProfileSyncService* sync_; 177 ProfileSyncService* sync_;
163 ProfileSyncServiceObserverMock observer_; 178 ProfileSyncServiceObserverMock observer_;
179 sync_driver::FailedDataTypesHandler* failed_data_types_handler_;
164 }; 180 };
165 181
166 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { 182 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest {
167 public: 183 public:
168 virtual void SetUp() { 184 virtual void SetUp() {
169 ProfileSyncServiceStartupTest::SetUp(); 185 ProfileSyncServiceStartupTest::SetUp();
170 sync_ = static_cast<ProfileSyncService*>( 186 sync_ = static_cast<ProfileSyncService*>(
171 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 187 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
172 profile_, BuildCrosService)); 188 profile_, BuildCrosService));
173 sync_->AddObserver(&observer_); 189 sync_->AddObserver(&observer_);
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { 517 TEST_F(ProfileSyncServiceStartupTest, StartFailure) {
502 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 518 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
503 "test_user@gmail.com"); 519 "test_user@gmail.com");
504 SigninManagerFactory::GetForProfile(profile_) 520 SigninManagerFactory::GetForProfile(profile_)
505 ->SetAuthenticatedUsername("test_user@gmail.com"); 521 ->SetAuthenticatedUsername("test_user@gmail.com");
506 CreateSyncService(); 522 CreateSyncService();
507 sync_->SetSyncSetupCompleted(); 523 sync_->SetSyncSetupCompleted();
508 SetUpSyncBackendHost(); 524 SetUpSyncBackendHost();
509 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 525 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
510 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; 526 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED;
511 syncer::SyncError error(
512 FROM_HERE,
513 syncer::SyncError::DATATYPE_ERROR,
514 "Association failed.",
515 syncer::BOOKMARKS);
516 std::map<syncer::ModelType, syncer::SyncError> errors;
517 errors[syncer::BOOKMARKS] = error;
518 DataTypeManager::ConfigureResult result( 527 DataTypeManager::ConfigureResult result(
519 status, 528 status,
520 syncer::ModelTypeSet(),
521 errors,
522 syncer::ModelTypeSet(),
523 syncer::ModelTypeSet()); 529 syncer::ModelTypeSet());
524 EXPECT_CALL(*data_type_manager, Configure(_, _)). 530 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly(
525 WillRepeatedly( 531 DoAll(InvokeOnConfigureStart(sync_),
526 DoAll(InvokeOnConfigureStart(sync_), 532 InvokeOnConfigureDone(
527 InvokeOnConfigureDone(sync_, result))); 533 sync_,
534 base::Bind(&ProfileSyncServiceStartupTest::SetError,
535 base::Unretained(this)),
536 result)));
528 EXPECT_CALL(*data_type_manager, state()). 537 EXPECT_CALL(*data_type_manager, state()).
529 WillOnce(Return(DataTypeManager::STOPPED)); 538 WillOnce(Return(DataTypeManager::STOPPED));
530 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 539 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
531 IssueTestTokens(); 540 IssueTestTokens();
532 sync_->Initialize(); 541 sync_->Initialize();
533 EXPECT_TRUE(sync_->HasUnrecoverableError()); 542 EXPECT_TRUE(sync_->HasUnrecoverableError());
534 } 543 }
535 544
536 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 545 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
537 // Pre load the tokens 546 // Pre load the tokens
538 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 547 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
539 "test_user@gmail.com"); 548 "test_user@gmail.com");
540 SigninManagerFactory::GetForProfile(profile_) 549 SigninManagerFactory::GetForProfile(profile_)
541 ->SetAuthenticatedUsername("test_user@gmail.com"); 550 ->SetAuthenticatedUsername("test_user@gmail.com");
542 CreateSyncService(); 551 CreateSyncService();
543 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); 552 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
544 mock_sbh->set_fail_initial_download(true); 553 mock_sbh->set_fail_initial_download(true);
545 554
546 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 555 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
547 556
548 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 557 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
549 sync_->Initialize(); 558 sync_->Initialize();
550 559
551 sync_->SetSetupInProgress(true); 560 sync_->SetSetupInProgress(true);
552 IssueTestTokens(); 561 IssueTestTokens();
553 sync_->SetSetupInProgress(false); 562 sync_->SetSetupInProgress(false);
554 EXPECT_FALSE(sync_->sync_initialized()); 563 EXPECT_FALSE(sync_->sync_initialized());
555 } 564 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.cc ('k') | components/sync_driver/data_type_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698