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

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

Issue 468643002: Revert 288464 "[Sync] Cleanup datatype configuration error handl..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: 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;
49 48
50 ACTION_P(InvokeOnConfigureStart, pss) { 49 ACTION_P(InvokeOnConfigureStart, pss) {
51 ProfileSyncService* service = 50 ProfileSyncService* service =
52 static_cast<ProfileSyncService*>(pss); 51 static_cast<ProfileSyncService*>(pss);
53 service->OnConfigureStart(); 52 service->OnConfigureStart();
54 } 53 }
55 54
56 ACTION_P3(InvokeOnConfigureDone, pss, error_callback, result) { 55 ACTION_P2(InvokeOnConfigureDone, pss, result) {
57 ProfileSyncService* service = 56 ProfileSyncService* service =
58 static_cast<ProfileSyncService*>(pss); 57 static_cast<ProfileSyncService*>(pss);
59 DataTypeManager::ConfigureResult configure_result = 58 DataTypeManager::ConfigureResult configure_result =
60 static_cast<DataTypeManager::ConfigureResult>(result); 59 static_cast<DataTypeManager::ConfigureResult>(result);
61 if (result.status == sync_driver::DataTypeManager::ABORTED)
62 error_callback.Run();
63 service->OnConfigureDone(configure_result); 60 service->OnConfigureDone(configure_result);
64 } 61 }
65 62
66 class ProfileSyncServiceStartupTest : public testing::Test { 63 class ProfileSyncServiceStartupTest : public testing::Test {
67 public: 64 public:
68 ProfileSyncServiceStartupTest() 65 ProfileSyncServiceStartupTest()
69 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD | 66 : thread_bundle_(content::TestBrowserThreadBundle::REAL_DB_THREAD |
70 content::TestBrowserThreadBundle::REAL_FILE_THREAD | 67 content::TestBrowserThreadBundle::REAL_FILE_THREAD |
71 content::TestBrowserThreadBundle::REAL_IO_THREAD), 68 content::TestBrowserThreadBundle::REAL_IO_THREAD),
72 profile_manager_(TestingBrowserProcess::GetGlobal()), 69 profile_manager_(TestingBrowserProcess::GetGlobal()),
73 sync_(NULL), 70 sync_(NULL) {}
74 failed_data_types_handler_(NULL) {}
75 71
76 virtual ~ProfileSyncServiceStartupTest() { 72 virtual ~ProfileSyncServiceStartupTest() {
77 } 73 }
78 74
79 virtual void SetUp() { 75 virtual void SetUp() {
80 CHECK(profile_manager_.SetUp()); 76 CHECK(profile_manager_.SetUp());
81 77
82 TestingProfile::TestingFactories testing_facotries; 78 TestingProfile::TestingFactories testing_facotries;
83 testing_facotries.push_back( 79 testing_facotries.push_back(
84 std::make_pair(SigninManagerFactory::GetInstance(), 80 std::make_pair(SigninManagerFactory::GetInstance(),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 } 120 }
125 121
126 ProfileSyncComponentsFactoryMock* components_factory_mock() { 122 ProfileSyncComponentsFactoryMock* components_factory_mock() {
127 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory()); 123 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory());
128 } 124 }
129 125
130 FakeSigninManagerForTesting* fake_signin() { 126 FakeSigninManagerForTesting* fake_signin() {
131 return static_cast<FakeSigninManagerForTesting*>(sync_->signin()); 127 return static_cast<FakeSigninManagerForTesting*>(sync_->signin());
132 } 128 }
133 129
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
144 protected: 130 protected:
145 void SimulateTestUserSignin() { 131 void SimulateTestUserSignin() {
146 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 132 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
147 "test_user@gmail.com"); 133 "test_user@gmail.com");
148 #if !defined(OS_CHROMEOS) 134 #if !defined(OS_CHROMEOS)
149 fake_signin()->SignIn("test_user@gmail.com", ""); 135 fake_signin()->SignIn("test_user@gmail.com", "");
150 #else 136 #else
151 fake_signin()->SetAuthenticatedUsername("test_user@gmail.com"); 137 fake_signin()->SetAuthenticatedUsername("test_user@gmail.com");
152 sync_->GoogleSigninSucceeded("test_user@gmail.com", ""); 138 sync_->GoogleSigninSucceeded("test_user@gmail.com", "");
153 #endif 139 #endif
154 } 140 }
155 141
156 DataTypeManagerMock* SetUpDataTypeManager() { 142 DataTypeManagerMock* SetUpDataTypeManager() {
157 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); 143 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
158 EXPECT_CALL(*components_factory_mock(), 144 EXPECT_CALL(*components_factory_mock(),
159 CreateDataTypeManager(_, _, _, _, _, _)). 145 CreateDataTypeManager(_, _, _, _, _, _)).
160 WillOnce(DoAll(SaveArg<5>(&failed_data_types_handler_), 146 WillOnce(Return(data_type_manager));
161 Return(data_type_manager)));
162 return data_type_manager; 147 return data_type_manager;
163 } 148 }
164 149
165 browser_sync::SyncBackendHostMock* SetUpSyncBackendHost() { 150 browser_sync::SyncBackendHostMock* SetUpSyncBackendHost() {
166 browser_sync::SyncBackendHostMock* sync_backend_host = 151 browser_sync::SyncBackendHostMock* sync_backend_host =
167 new browser_sync::SyncBackendHostMock(); 152 new browser_sync::SyncBackendHostMock();
168 EXPECT_CALL(*components_factory_mock(), 153 EXPECT_CALL(*components_factory_mock(),
169 CreateSyncBackendHost(_, _, _, _, _)). 154 CreateSyncBackendHost(_, _, _, _, _)).
170 WillOnce(Return(sync_backend_host)); 155 WillOnce(Return(sync_backend_host));
171 return sync_backend_host; 156 return sync_backend_host;
172 } 157 }
173 158
174 content::TestBrowserThreadBundle thread_bundle_; 159 content::TestBrowserThreadBundle thread_bundle_;
175 TestingProfileManager profile_manager_; 160 TestingProfileManager profile_manager_;
176 TestingProfile* profile_; 161 TestingProfile* profile_;
177 ProfileSyncService* sync_; 162 ProfileSyncService* sync_;
178 ProfileSyncServiceObserverMock observer_; 163 ProfileSyncServiceObserverMock observer_;
179 sync_driver::FailedDataTypesHandler* failed_data_types_handler_;
180 }; 164 };
181 165
182 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { 166 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest {
183 public: 167 public:
184 virtual void SetUp() { 168 virtual void SetUp() {
185 ProfileSyncServiceStartupTest::SetUp(); 169 ProfileSyncServiceStartupTest::SetUp();
186 sync_ = static_cast<ProfileSyncService*>( 170 sync_ = static_cast<ProfileSyncService*>(
187 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 171 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
188 profile_, BuildCrosService)); 172 profile_, BuildCrosService));
189 sync_->AddObserver(&observer_); 173 sync_->AddObserver(&observer_);
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { 501 TEST_F(ProfileSyncServiceStartupTest, StartFailure) {
518 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 502 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
519 "test_user@gmail.com"); 503 "test_user@gmail.com");
520 SigninManagerFactory::GetForProfile(profile_) 504 SigninManagerFactory::GetForProfile(profile_)
521 ->SetAuthenticatedUsername("test_user@gmail.com"); 505 ->SetAuthenticatedUsername("test_user@gmail.com");
522 CreateSyncService(); 506 CreateSyncService();
523 sync_->SetSyncSetupCompleted(); 507 sync_->SetSyncSetupCompleted();
524 SetUpSyncBackendHost(); 508 SetUpSyncBackendHost();
525 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 509 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
526 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; 510 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;
527 DataTypeManager::ConfigureResult result( 518 DataTypeManager::ConfigureResult result(
528 status, 519 status,
520 syncer::ModelTypeSet(),
521 errors,
522 syncer::ModelTypeSet(),
529 syncer::ModelTypeSet()); 523 syncer::ModelTypeSet());
530 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly( 524 EXPECT_CALL(*data_type_manager, Configure(_, _)).
531 DoAll(InvokeOnConfigureStart(sync_), 525 WillRepeatedly(
532 InvokeOnConfigureDone( 526 DoAll(InvokeOnConfigureStart(sync_),
533 sync_, 527 InvokeOnConfigureDone(sync_, result)));
534 base::Bind(&ProfileSyncServiceStartupTest::SetError,
535 base::Unretained(this)),
536 result)));
537 EXPECT_CALL(*data_type_manager, state()). 528 EXPECT_CALL(*data_type_manager, state()).
538 WillOnce(Return(DataTypeManager::STOPPED)); 529 WillOnce(Return(DataTypeManager::STOPPED));
539 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 530 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
540 IssueTestTokens(); 531 IssueTestTokens();
541 sync_->Initialize(); 532 sync_->Initialize();
542 EXPECT_TRUE(sync_->HasUnrecoverableError()); 533 EXPECT_TRUE(sync_->HasUnrecoverableError());
543 } 534 }
544 535
545 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 536 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
546 // Pre load the tokens 537 // Pre load the tokens
547 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 538 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
548 "test_user@gmail.com"); 539 "test_user@gmail.com");
549 SigninManagerFactory::GetForProfile(profile_) 540 SigninManagerFactory::GetForProfile(profile_)
550 ->SetAuthenticatedUsername("test_user@gmail.com"); 541 ->SetAuthenticatedUsername("test_user@gmail.com");
551 CreateSyncService(); 542 CreateSyncService();
552 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); 543 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
553 mock_sbh->set_fail_initial_download(true); 544 mock_sbh->set_fail_initial_download(true);
554 545
555 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 546 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
556 547
557 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 548 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
558 sync_->Initialize(); 549 sync_->Initialize();
559 550
560 sync_->SetSetupInProgress(true); 551 sync_->SetSetupInProgress(true);
561 IssueTestTokens(); 552 IssueTestTokens();
562 sync_->SetSetupInProgress(false); 553 sync_->SetSetupInProgress(false);
563 EXPECT_FALSE(sync_->sync_initialized()); 554 EXPECT_FALSE(sync_->sync_initialized());
564 } 555 }
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/sync/profile_sync_service.cc ('k') | trunk/src/components/sync_driver/data_type_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698