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
|
// Copyright 2015 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_SYNC_DRIVER_SYNC_CLIENT_H_
#define COMPONENTS_SYNC_DRIVER_SYNC_CLIENT_H_
#include "base/callback_forward.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "components/sync/base/extensions_activity.h"
#include "components/sync/base/model_type.h"
#include "components/sync/driver/sync_api_component_factory.h"
#include "components/sync/engine/model_safe_worker.h"
#include "components/sync/model/model_type_sync_bridge.h"
class BookmarkUndoService;
class PrefService;
namespace autofill {
class PersonalDataManager;
} // namespace autofill
namespace bookmarks {
class BookmarkModel;
} // namespace bookmarks
namespace favicon {
class FaviconService;
} // namespace favicon
namespace history {
class HistoryService;
} // namespace history
namespace invalidation {
class InvalidationService;
} // namespace invalidation
namespace sync_sessions {
class SyncSessionsClient;
} // namespace sync_sessions
namespace syncer {
class SyncService;
class SyncableService;
// Interface for clients of the Sync API to plumb through necessary dependent
// components. This interface is purely for abstracting dependencies, and
// should not contain any non-trivial functional logic.
//
// Note: on some platforms, getters might return nullptr. Callers are expected
// to handle these scenarios gracefully.
class SyncClient {
public:
SyncClient();
virtual ~SyncClient();
// Initializes the sync client with the specified sync service.
virtual void Initialize() = 0;
// Returns the current SyncService instance.
virtual SyncService* GetSyncService() = 0;
// Returns the current profile's preference service.
virtual PrefService* GetPrefService() = 0;
// DataType specific service getters.
virtual bookmarks::BookmarkModel* GetBookmarkModel() = 0;
virtual favicon::FaviconService* GetFaviconService() = 0;
virtual history::HistoryService* GetHistoryService() = 0;
virtual bool HasPasswordStore() = 0;
// Returns a callback that will register the types specific to the current
// platform.
virtual SyncApiComponentFactory::RegisterDataTypesMethod
GetRegisterPlatformTypesCallback() = 0;
// Returns a callback that will be invoked when password sync state has
// potentially been changed.
virtual base::Closure GetPasswordStateChangedCallback() = 0;
virtual autofill::PersonalDataManager* GetPersonalDataManager() = 0;
virtual BookmarkUndoService* GetBookmarkUndoServiceIfExists() = 0;
virtual invalidation::InvalidationService* GetInvalidationService() = 0;
virtual scoped_refptr<ExtensionsActivity> GetExtensionsActivity() = 0;
virtual sync_sessions::SyncSessionsClient* GetSyncSessionsClient() = 0;
// Returns a weak pointer to the syncable service specified by |type|.
// Weak pointer may be unset if service is already destroyed.
// Note: Should only be dereferenced from the model type thread.
virtual base::WeakPtr<SyncableService> GetSyncableServiceForType(
ModelType type) = 0;
// Returns a weak pointer to the ModelTypeSyncBridge specified by |type|. Weak
// pointer may be unset if service is already destroyed.
// Note: Should only be dereferenced from the model type thread.
virtual base::WeakPtr<ModelTypeSyncBridge> GetSyncBridgeForModelType(
ModelType type) = 0;
// Creates and returns a new ModelSafeWorker for the group, or null if one
// cannot be created.
// TODO(maxbogue): Move this inside SyncApiComponentFactory.
virtual scoped_refptr<ModelSafeWorker> CreateModelWorkerForGroup(
ModelSafeGroup group) = 0;
// Returns the current SyncApiComponentFactory instance.
virtual SyncApiComponentFactory* GetSyncApiComponentFactory() = 0;
private:
DISALLOW_COPY_AND_ASSIGN(SyncClient);
};
} // namespace syncer
#endif // COMPONENTS_SYNC_DRIVER_SYNC_CLIENT_H_
|