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

Side by Side Diff: chrome/browser/sync/glue/sync_backend_host_unittest.cc

Issue 17127002: Correctly integrate StoragePartition into TestingProfile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix InstantNTP test. Created 7 years, 5 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 "chrome/browser/sync/glue/sync_backend_host.h" 5 #include "chrome/browser/sync/glue/sync_backend_host.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 8
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/synchronization/waitable_event.h" 12 #include "base/synchronization/waitable_event.h"
13 #include "base/test/test_timeouts.h" 13 #include "base/test/test_timeouts.h"
14 #include "chrome/browser/chrome_notification_types.h" 14 #include "chrome/browser/chrome_notification_types.h"
15 #include "chrome/browser/invalidation/invalidator_storage.h" 15 #include "chrome/browser/invalidation/invalidator_storage.h"
16 #include "chrome/browser/prefs/pref_service_syncable.h" 16 #include "chrome/browser/prefs/pref_service_syncable.h"
17 #include "chrome/browser/sync/glue/device_info.h" 17 #include "chrome/browser/sync/glue/device_info.h"
18 #include "chrome/browser/sync/glue/synced_device_tracker.h" 18 #include "chrome/browser/sync/glue/synced_device_tracker.h"
19 #include "chrome/browser/sync/sync_prefs.h" 19 #include "chrome/browser/sync/sync_prefs.h"
20 #include "chrome/test/base/testing_profile.h" 20 #include "chrome/test/base/testing_profile.h"
21 #include "components/user_prefs/pref_registry_syncable.h" 21 #include "components/user_prefs/pref_registry_syncable.h"
22 #include "content/public/browser/notification_service.h" 22 #include "content/public/browser/notification_service.h"
23 #include "content/public/test/test_browser_thread.h" 23 #include "content/public/test/test_browser_thread_bundle.h"
24 #include "content/public/test/test_utils.h"
24 #include "google/cacheinvalidation/include/types.h" 25 #include "google/cacheinvalidation/include/types.h"
25 #include "net/url_request/test_url_fetcher_factory.h" 26 #include "net/url_request/test_url_fetcher_factory.h"
26 #include "sync/internal_api/public/base/model_type.h" 27 #include "sync/internal_api/public/base/model_type.h"
27 #include "sync/internal_api/public/engine/model_safe_worker.h" 28 #include "sync/internal_api/public/engine/model_safe_worker.h"
28 #include "sync/internal_api/public/sync_manager_factory.h" 29 #include "sync/internal_api/public/sync_manager_factory.h"
29 #include "sync/internal_api/public/test/fake_sync_manager.h" 30 #include "sync/internal_api/public/test/fake_sync_manager.h"
30 #include "sync/internal_api/public/util/experiments.h" 31 #include "sync/internal_api/public/util/experiments.h"
31 #include "sync/notifier/invalidator_state.h" 32 #include "sync/notifier/invalidator_state.h"
32 #include "sync/notifier/object_id_invalidation_map_test_util.h" 33 #include "sync/notifier/object_id_invalidation_map_test_util.h"
33 #include "sync/protocol/encryption.pb.h" 34 #include "sync/protocol/encryption.pb.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 private: 129 private:
129 syncer::ModelTypeSet initial_sync_ended_types_; 130 syncer::ModelTypeSet initial_sync_ended_types_;
130 syncer::ModelTypeSet progress_marker_types_; 131 syncer::ModelTypeSet progress_marker_types_;
131 syncer::ModelTypeSet configure_fail_types_; 132 syncer::ModelTypeSet configure_fail_types_;
132 FakeSyncManager* fake_manager_; 133 FakeSyncManager* fake_manager_;
133 }; 134 };
134 135
135 class SyncBackendHostTest : public testing::Test { 136 class SyncBackendHostTest : public testing::Test {
136 protected: 137 protected:
137 SyncBackendHostTest() 138 SyncBackendHostTest()
138 : ui_thread_(BrowserThread::UI, &ui_loop_), 139 : thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD),
139 io_thread_(BrowserThread::IO),
140 fake_manager_(NULL) {} 140 fake_manager_(NULL) {}
141 141
142 virtual ~SyncBackendHostTest() {} 142 virtual ~SyncBackendHostTest() {}
143 143
144 virtual void SetUp() OVERRIDE { 144 virtual void SetUp() OVERRIDE {
145 io_thread_.StartIOThread();
146 profile_.reset(new TestingProfile()); 145 profile_.reset(new TestingProfile());
147 profile_->CreateRequestContext();
148 sync_prefs_.reset(new SyncPrefs(profile_->GetPrefs())); 146 sync_prefs_.reset(new SyncPrefs(profile_->GetPrefs()));
149 backend_.reset(new SyncBackendHost( 147 backend_.reset(new SyncBackendHost(
150 profile_->GetDebugName(), 148 profile_->GetDebugName(),
151 profile_.get(), 149 profile_.get(),
152 sync_prefs_->AsWeakPtr())); 150 sync_prefs_->AsWeakPtr()));
153 credentials_.email = "user@example.com"; 151 credentials_.email = "user@example.com";
154 credentials_.sync_token = "sync_token"; 152 credentials_.sync_token = "sync_token";
155 153
156 // These types are always implicitly enabled. 154 // These types are always implicitly enabled.
157 enabled_types_.PutAll(syncer::ControlTypes()); 155 enabled_types_.PutAll(syncer::ControlTypes());
(...skipping 13 matching lines...) Expand all
171 virtual void TearDown() OVERRIDE { 169 virtual void TearDown() OVERRIDE {
172 if (backend_) { 170 if (backend_) {
173 backend_->StopSyncingForShutdown(); 171 backend_->StopSyncingForShutdown();
174 backend_->Shutdown(false); 172 backend_->Shutdown(false);
175 } 173 }
176 backend_.reset(); 174 backend_.reset();
177 sync_prefs_.reset(); 175 sync_prefs_.reset();
178 profile_.reset(); 176 profile_.reset();
179 // Pump messages posted by the sync thread (which may end up 177 // Pump messages posted by the sync thread (which may end up
180 // posting on the IO thread). 178 // posting on the IO thread).
181 ui_loop_.RunUntilIdle(); 179 base::RunLoop().RunUntilIdle();
182 io_thread_.Stop(); 180 content::RunAllPendingInMessageLoop(BrowserThread::IO);
183 // Pump any messages posted by the IO thread. 181 // Pump any messages posted by the IO thread.
184 ui_loop_.RunUntilIdle(); 182 base::RunLoop().RunUntilIdle();
185 } 183 }
186 184
187 // Synchronously initializes the backend. 185 // Synchronously initializes the backend.
188 void InitializeBackend(bool expect_success) { 186 void InitializeBackend(bool expect_success) {
189 EXPECT_CALL(mock_frontend_, OnBackendInitialized(_, _, expect_success)). 187 EXPECT_CALL(mock_frontend_, OnBackendInitialized(_, _, expect_success)).
190 WillOnce(InvokeWithoutArgs(QuitMessageLoop)); 188 WillOnce(InvokeWithoutArgs(QuitMessageLoop));
191 backend_->Initialize(&mock_frontend_, 189 backend_->Initialize(&mock_frontend_,
192 syncer::WeakHandle<syncer::JsEventHandler>(), 190 syncer::WeakHandle<syncer::JsEventHandler>(),
193 GURL(std::string()), 191 GURL(std::string()),
194 credentials_, 192 credentials_,
195 true, 193 true,
196 &fake_manager_factory_, 194 &fake_manager_factory_,
197 &handler_, 195 &handler_,
198 NULL); 196 NULL);
199 ui_loop_.PostDelayedTask(FROM_HERE, 197 base::RunLoop run_loop;
200 ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); 198 BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE,
201 ui_loop_.Run(); 199 run_loop.QuitClosure(),
200 TestTimeouts::action_timeout());
201 run_loop.Run();
202 // |fake_manager_factory_|'s fake_manager() is set on the sync 202 // |fake_manager_factory_|'s fake_manager() is set on the sync
203 // thread, but we can rely on the message loop barriers to 203 // thread, but we can rely on the message loop barriers to
204 // guarantee that we see the updated value. 204 // guarantee that we see the updated value.
205 fake_manager_ = fake_manager_factory_.fake_manager(); 205 fake_manager_ = fake_manager_factory_.fake_manager();
206 DCHECK(fake_manager_); 206 DCHECK(fake_manager_);
207 } 207 }
208 208
209 // Synchronously configures the backend's datatypes. 209 // Synchronously configures the backend's datatypes.
210 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add, 210 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add,
211 syncer::ModelTypeSet types_to_remove) { 211 syncer::ModelTypeSet types_to_remove) {
212 BackendDataTypeConfigurer::DataTypeConfigStateMap config_state_map; 212 BackendDataTypeConfigurer::DataTypeConfigStateMap config_state_map;
213 BackendDataTypeConfigurer::SetDataTypesState( 213 BackendDataTypeConfigurer::SetDataTypesState(
214 BackendDataTypeConfigurer::CONFIGURE_ACTIVE, 214 BackendDataTypeConfigurer::CONFIGURE_ACTIVE,
215 types_to_add, 215 types_to_add,
216 &config_state_map); 216 &config_state_map);
217 BackendDataTypeConfigurer::SetDataTypesState( 217 BackendDataTypeConfigurer::SetDataTypesState(
218 BackendDataTypeConfigurer::DISABLED, 218 BackendDataTypeConfigurer::DISABLED,
219 types_to_remove, &config_state_map); 219 types_to_remove, &config_state_map);
220 220
221 types_to_add.PutAll(syncer::ControlTypes()); 221 types_to_add.PutAll(syncer::ControlTypes());
222 backend_->ConfigureDataTypes( 222 backend_->ConfigureDataTypes(
223 syncer::CONFIGURE_REASON_RECONFIGURATION, 223 syncer::CONFIGURE_REASON_RECONFIGURATION,
224 config_state_map, 224 config_state_map,
225 base::Bind(&SyncBackendHostTest::DownloadReady, 225 base::Bind(&SyncBackendHostTest::DownloadReady,
226 base::Unretained(this)), 226 base::Unretained(this)),
227 base::Bind(&SyncBackendHostTest::OnDownloadRetry, 227 base::Bind(&SyncBackendHostTest::OnDownloadRetry,
228 base::Unretained(this))); 228 base::Unretained(this)));
229 ui_loop_.PostDelayedTask(FROM_HERE, 229 base::RunLoop run_loop;
230 ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); 230 BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE,
231 ui_loop_.Run(); 231 run_loop.QuitClosure(),
232 TestTimeouts::action_timeout());
233 run_loop.Run();
232 } 234 }
233 235
234 void IssueRefreshRequest(syncer::ModelTypeSet types) { 236 void IssueRefreshRequest(syncer::ModelTypeSet types) {
235 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 237 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
236 238
237 content::NotificationService::current()->Notify( 239 content::NotificationService::current()->Notify(
238 chrome::NOTIFICATION_SYNC_REFRESH_LOCAL, 240 chrome::NOTIFICATION_SYNC_REFRESH_LOCAL,
239 content::Source<Profile>(profile_.get()), 241 content::Source<Profile>(profile_.get()),
240 content::Details<syncer::ModelTypeSet>(&types)); 242 content::Details<syncer::ModelTypeSet>(&types));
241 } 243 }
242 244
243 protected: 245 protected:
244 void DownloadReady(syncer::ModelTypeSet succeeded_types, 246 void DownloadReady(syncer::ModelTypeSet succeeded_types,
245 syncer::ModelTypeSet failed_types) { 247 syncer::ModelTypeSet failed_types) {
246 base::MessageLoop::current()->Quit(); 248 base::MessageLoop::current()->Quit();
247 } 249 }
248 250
249 void OnDownloadRetry() { 251 void OnDownloadRetry() {
250 NOTIMPLEMENTED(); 252 NOTIMPLEMENTED();
251 } 253 }
252 254
253 base::MessageLoop ui_loop_; 255 content::TestBrowserThreadBundle thread_bundle_;
254 content::TestBrowserThread ui_thread_;
255 content::TestBrowserThread io_thread_;
256 StrictMock<MockSyncFrontend> mock_frontend_; 256 StrictMock<MockSyncFrontend> mock_frontend_;
257 syncer::SyncCredentials credentials_; 257 syncer::SyncCredentials credentials_;
258 syncer::TestUnrecoverableErrorHandler handler_; 258 syncer::TestUnrecoverableErrorHandler handler_;
259 scoped_ptr<TestingProfile> profile_; 259 scoped_ptr<TestingProfile> profile_;
260 scoped_ptr<SyncPrefs> sync_prefs_; 260 scoped_ptr<SyncPrefs> sync_prefs_;
261 scoped_ptr<SyncBackendHost> backend_; 261 scoped_ptr<SyncBackendHost> backend_;
262 FakeSyncManager* fake_manager_; 262 FakeSyncManager* fake_manager_;
263 FakeSyncManagerFactory fake_manager_factory_; 263 FakeSyncManagerFactory fake_manager_factory_;
264 syncer::ModelTypeSet enabled_types_; 264 syncer::ModelTypeSet enabled_types_;
265 }; 265 };
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 TEST_F(SyncBackendHostTest, DownloadControlTypesRestart) { 684 TEST_F(SyncBackendHostTest, DownloadControlTypesRestart) {
685 sync_prefs_->SetSyncSetupCompleted(); 685 sync_prefs_->SetSyncSetupCompleted();
686 InitializeBackend(true); 686 InitializeBackend(true);
687 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE, 687 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE,
688 fake_manager_->GetAndResetConfigureReason()); 688 fake_manager_->GetAndResetConfigureReason());
689 } 689 }
690 690
691 } // namespace 691 } // namespace
692 692
693 } // namespace browser_sync 693 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698