Remove PlatformFile from dbus/file_descriptor
[chromium-blink-merge.git] / sync / internal_api / public / internal_components_factory.h
blobf43804ac4d6aecef6398b5912b9ce0160468315c
1 // Copyright 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.
4 //
5 // InternalComponentsFactory exists so that tests can override creation of
6 // components used by the SyncManager that are not exposed across the sync
7 // API boundary.
9 #ifndef SYNC_INTERNAL_API_PUBLIC_INTERNAL_COMPONENTS_FACTORY_H_
10 #define SYNC_INTERNAL_API_PUBLIC_INTERNAL_COMPONENTS_FACTORY_H_
12 #include <string>
13 #include <vector>
15 #include "base/files/file_path.h"
16 #include "sync/base/sync_export.h"
17 #include "sync/internal_api/public/engine/model_safe_worker.h"
19 namespace syncer {
21 class CancelationSignal;
22 class ExtensionsActivity;
23 class ModelTypeRegistry;
24 class ServerConnectionManager;
25 class SyncEngineEventListener;
26 class SyncScheduler;
28 namespace sessions {
29 class DebugInfoGetter;
30 class SyncSessionContext;
33 namespace syncable {
34 class Directory;
35 class DirectoryBackingStore;
38 class SYNC_EXPORT InternalComponentsFactory {
39 public:
40 enum EncryptionMethod {
41 ENCRYPTION_LEGACY,
42 // Option to enable support for keystore key based encryption.
43 ENCRYPTION_KEYSTORE
46 enum BackoffOverride {
47 BACKOFF_NORMAL,
48 // Use this value for integration testing to avoid long delays /
49 // timing out tests. Uses kInitialBackoffShortRetrySeconds (see
50 // polling_constants.h) for all initial retries.
51 BACKOFF_SHORT_INITIAL_RETRY_OVERRIDE
54 enum PreCommitUpdatesPolicy {
55 // By default, the server will enable or disable this experiment through the
56 // sync protocol's experiments data type.
57 SERVER_CONTROLLED_PRE_COMMIT_UPDATE_AVOIANCE,
59 // This flag overrides the server's decision and enables the pre-commit
60 // update avoidance experiment.
61 FORCE_ENABLE_PRE_COMMIT_UPDATE_AVOIDANCE,
64 // Configuration options for internal components. This struct is expected
65 // to grow and shrink over time with transient features / experiments,
66 // roughly following command line flags in chrome. Implementations of
67 // InternalComponentsFactory can use this information to build components
68 // with appropriate bells and whistles.
69 struct Switches {
70 EncryptionMethod encryption_method;
71 BackoffOverride backoff_override;
72 PreCommitUpdatesPolicy pre_commit_updates_policy;
75 virtual ~InternalComponentsFactory() {}
77 virtual scoped_ptr<SyncScheduler> BuildScheduler(
78 const std::string& name,
79 sessions::SyncSessionContext* context,
80 CancelationSignal* cancelation_signal) = 0;
82 virtual scoped_ptr<sessions::SyncSessionContext> BuildContext(
83 ServerConnectionManager* connection_manager,
84 syncable::Directory* directory,
85 ExtensionsActivity* extensions_activity,
86 const std::vector<SyncEngineEventListener*>& listeners,
87 sessions::DebugInfoGetter* debug_info_getter,
88 ModelTypeRegistry* model_type_registry,
89 const std::string& invalidator_client_id) = 0;
91 virtual scoped_ptr<syncable::DirectoryBackingStore>
92 BuildDirectoryBackingStore(
93 const std::string& dir_name,
94 const base::FilePath& backing_filepath) = 0;
96 // Returns the Switches struct that this object is using as configuration, if
97 // the implementation is making use of one.
98 virtual Switches GetSwitches() const = 0;
101 } // namespace syncer
103 #endif // SYNC_INTERNAL_API_PUBLIC_INTERNAL_COMPONENTS_FACTORY_H_