Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / sync / test_profile_sync_service.cc
blobd739ded11f6d87faeea8b96e9f55dafac4690345
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
3 // found in the LICENSE file.
5 #include "chrome/browser/sync/test_profile_sync_service.h"
7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
9 #include "chrome/browser/signin/signin_manager.h"
10 #include "chrome/browser/signin/signin_manager_factory.h"
11 #include "chrome/browser/sync/glue/sync_backend_host.h"
12 #include "chrome/browser/sync/glue/sync_backend_host_core.h"
13 #include "chrome/browser/sync/profile_sync_components_factory.h"
14 #include "chrome/browser/sync/profile_sync_components_factory_mock.h"
15 #include "chrome/browser/sync/test/test_http_bridge_factory.h"
16 #include "sync/internal_api/public/test/sync_manager_factory_for_profile_sync_test.h"
17 #include "sync/internal_api/public/test/test_internal_components_factory.h"
18 #include "sync/internal_api/public/user_share.h"
19 #include "sync/js/js_reply_handler.h"
20 #include "sync/protocol/encryption.pb.h"
22 using syncer::InternalComponentsFactory;
23 using syncer::TestInternalComponentsFactory;
24 using syncer::UserShare;
26 namespace browser_sync {
28 SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest(
29 Profile* profile,
30 const base::WeakPtr<SyncPrefs>& sync_prefs,
31 base::Closure& callback)
32 : browser_sync::SyncBackendHostImpl(
33 profile->GetDebugName(), profile, sync_prefs),
34 callback_(callback) {}
36 SyncBackendHostForProfileSyncTest::~SyncBackendHostForProfileSyncTest() {}
38 void SyncBackendHostForProfileSyncTest::InitCore(
39 scoped_ptr<DoInitializeOptions> options) {
40 options->http_bridge_factory =
41 scoped_ptr<syncer::HttpPostProviderFactory>(
42 new browser_sync::TestHttpBridgeFactory());
43 options->sync_manager_factory.reset(
44 new syncer::SyncManagerFactoryForProfileSyncTest(callback_));
45 options->credentials.email = "testuser@gmail.com";
46 options->credentials.sync_token = "token";
47 options->restored_key_for_bootstrapping = "";
49 // It'd be nice if we avoided creating the InternalComponentsFactory in the
50 // first place, but SyncBackendHost will have created one by now so we must
51 // free it. Grab the switches to pass on first.
52 InternalComponentsFactory::Switches factory_switches =
53 options->internal_components_factory->GetSwitches();
54 options->internal_components_factory.reset(
55 new TestInternalComponentsFactory(factory_switches,
56 syncer::STORAGE_IN_MEMORY));
58 SyncBackendHostImpl::InitCore(options.Pass());
61 void SyncBackendHostForProfileSyncTest::RequestConfigureSyncer(
62 syncer::ConfigureReason reason,
63 syncer::ModelTypeSet to_download,
64 syncer::ModelTypeSet to_purge,
65 syncer::ModelTypeSet to_journal,
66 syncer::ModelTypeSet to_unapply,
67 syncer::ModelTypeSet to_ignore,
68 const syncer::ModelSafeRoutingInfo& routing_info,
69 const base::Callback<void(syncer::ModelTypeSet,
70 syncer::ModelTypeSet)>& ready_task,
71 const base::Closure& retry_callback) {
72 syncer::ModelTypeSet failed_configuration_types;
74 // The first parameter there should be the set of enabled types. That's not
75 // something we have access to from this strange test harness. We'll just
76 // send back the list of newly configured types instead and hope it doesn't
77 // break anything.
78 FinishConfigureDataTypesOnFrontendLoop(
79 syncer::Difference(to_download, failed_configuration_types),
80 syncer::Difference(to_download, failed_configuration_types),
81 failed_configuration_types,
82 ready_task);
85 } // namespace browser_sync
87 syncer::TestIdFactory* TestProfileSyncService::id_factory() {
88 return &id_factory_;
91 syncer::WeakHandle<syncer::JsEventHandler>
92 TestProfileSyncService::GetJsEventHandler() {
93 return syncer::WeakHandle<syncer::JsEventHandler>();
96 TestProfileSyncService::TestProfileSyncService(
97 ProfileSyncComponentsFactory* factory,
98 Profile* profile,
99 SigninManagerBase* signin,
100 ProfileOAuth2TokenService* oauth2_token_service,
101 ProfileSyncService::StartBehavior behavior)
102 : ProfileSyncService(factory,
103 profile,
104 signin,
105 oauth2_token_service,
106 behavior) {
107 SetSyncSetupCompleted();
110 TestProfileSyncService::~TestProfileSyncService() {
113 // static
114 BrowserContextKeyedService* TestProfileSyncService::BuildAutoStartAsyncInit(
115 content::BrowserContext* context) {
116 Profile* profile = static_cast<Profile*>(context);
117 SigninManagerBase* signin =
118 SigninManagerFactory::GetForProfile(profile);
119 ProfileOAuth2TokenService* oauth2_token_service =
120 ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
121 ProfileSyncComponentsFactoryMock* factory =
122 new ProfileSyncComponentsFactoryMock();
123 return new TestProfileSyncService(factory,
124 profile,
125 signin,
126 oauth2_token_service,
127 ProfileSyncService::AUTO_START);
130 ProfileSyncComponentsFactoryMock*
131 TestProfileSyncService::components_factory_mock() {
132 // We always create a mock factory, see Build* routines.
133 return static_cast<ProfileSyncComponentsFactoryMock*>(factory());
136 void TestProfileSyncService::OnConfigureDone(
137 const browser_sync::DataTypeManager::ConfigureResult& result) {
138 ProfileSyncService::OnConfigureDone(result);
139 base::MessageLoop::current()->Quit();
142 UserShare* TestProfileSyncService::GetUserShare() const {
143 return backend_->GetUserShare();
146 void TestProfileSyncService::CreateBackend() {
147 backend_.reset(new browser_sync::SyncBackendHostForProfileSyncTest(
148 profile(),
149 sync_prefs_.AsWeakPtr(),
150 callback_));