1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__
#define COMPONENTS_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__
#include <memory>
#include <string>
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "components/sync/base/model_type.h"
#include "components/sync/driver/sync_api_component_factory.h"
#include "components/version_info/version_info.h"
#include "url/gurl.h"
class OAuth2TokenService;
namespace autofill {
class AutofillWebDataService;
}
namespace password_manager {
class PasswordStore;
}
namespace net {
class URLRequestContextGetter;
}
namespace browser_sync {
class ProfileSyncComponentsFactoryImpl
: public syncer::SyncApiComponentFactory {
public:
// Constructs a ProfileSyncComponentsFactoryImpl.
//
// |sync_service_url| is the base URL of the sync server.
//
// |token_service| must outlive the ProfileSyncComponentsFactoryImpl.
//
// |url_request_context_getter| must outlive the
// ProfileSyncComponentsFactoryImpl.
ProfileSyncComponentsFactoryImpl(
syncer::SyncClient* sync_client,
version_info::Channel channel,
const std::string& version,
bool is_tablet,
const base::CommandLine& command_line,
const char* history_disabled_pref,
const GURL& sync_service_url,
const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread,
const scoped_refptr<base::SingleThreadTaskRunner>& db_thread,
OAuth2TokenService* token_service,
net::URLRequestContextGetter* url_request_context_getter,
const scoped_refptr<autofill::AutofillWebDataService>& web_data_service,
const scoped_refptr<password_manager::PasswordStore>& password_store);
~ProfileSyncComponentsFactoryImpl() override;
// SyncApiComponentFactory implementation:
void RegisterDataTypes(
syncer::SyncService* sync_service,
const RegisterDataTypesMethod& register_platform_types_method) override;
syncer::DataTypeManager* CreateDataTypeManager(
syncer::ModelTypeSet initial_types,
const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
debug_info_listener,
const syncer::DataTypeController::TypeMap* controllers,
const syncer::DataTypeEncryptionHandler* encryption_handler,
syncer::ModelTypeConfigurer* configurer,
syncer::DataTypeManagerObserver* observer) override;
syncer::SyncEngine* CreateSyncEngine(
const std::string& name,
invalidation::InvalidationService* invalidator,
const base::WeakPtr<syncer::SyncPrefs>& sync_prefs,
const base::FilePath& sync_data_folder) override;
std::unique_ptr<syncer::LocalDeviceInfoProvider>
CreateLocalDeviceInfoProvider() override;
std::unique_ptr<syncer::AttachmentService> CreateAttachmentService(
std::unique_ptr<syncer::AttachmentStoreForSync> attachment_store,
const syncer::UserShare& user_share,
const std::string& store_birthday,
syncer::ModelType model_type,
syncer::AttachmentService::Delegate* delegate) override;
syncer::SyncApiComponentFactory::SyncComponents CreateBookmarkSyncComponents(
syncer::SyncService* sync_service,
std::unique_ptr<syncer::DataTypeErrorHandler> error_handler) override;
// Sets a bit that determines whether PREFERENCES should be registered with a
// ModelTypeController for testing purposes.
static void OverridePrefsForUssTest(bool use_uss);
private:
// Register data types which are enabled on both desktop and mobile.
// |disabled_types| and |enabled_types| correspond only to those types
// being explicitly enabled/disabled by the command line.
void RegisterCommonDataTypes(syncer::SyncService* sync_service,
syncer::ModelTypeSet disabled_types,
syncer::ModelTypeSet enabled_types);
void DisableBrokenType(syncer::ModelType type,
const tracked_objects::Location& from_here,
const std::string& message);
// Client/platform specific members.
syncer::SyncClient* const sync_client_;
const version_info::Channel channel_;
const std::string version_;
const bool is_tablet_;
const base::CommandLine command_line_;
const char* history_disabled_pref_;
const GURL sync_service_url_;
const scoped_refptr<base::SingleThreadTaskRunner> ui_thread_;
const scoped_refptr<base::SingleThreadTaskRunner> db_thread_;
OAuth2TokenService* const token_service_;
net::URLRequestContextGetter* const url_request_context_getter_;
const scoped_refptr<autofill::AutofillWebDataService> web_data_service_;
const scoped_refptr<password_manager::PasswordStore> password_store_;
base::WeakPtrFactory<ProfileSyncComponentsFactoryImpl> weak_factory_;
// Whether to override PREFERENCES to use USS.
static bool override_prefs_controller_to_uss_for_test_;
DISALLOW_COPY_AND_ASSIGN(ProfileSyncComponentsFactoryImpl);
};
} // namespace browser_sync
#endif // COMPONENTS_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__
|