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 #ifndef SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_
6 #define SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_
10 #include "base/memory/ref_counted.h"
11 #include "base/observer_list.h"
12 #include "sync/internal_api/public/sync_manager.h"
13 #include "sync/internal_api/public/test/test_user_share.h"
14 #include "sync/notifier/invalidator_registrar.h"
17 class SequencedTaskRunner;
22 class FakeSyncEncryptionHandler;
24 class FakeSyncManager : public SyncManager {
26 // |initial_sync_ended_types|: The set of types that have initial_sync_ended
27 // set to true. This value will be used by InitialSyncEndedTypes() until the
28 // next configuration is performed.
30 // |progress_marker_types|: The set of types that have valid progress
31 // markers. This will be used by GetTypesWithEmptyProgressMarkerToken() until
32 // the next configuration is performed.
34 // |configure_fail_types|: The set of types that will fail
35 // configuration. Once ConfigureSyncer is called, the
36 // |initial_sync_ended_types_| and |progress_marker_types_| will be updated
37 // to include those types that didn't fail.
38 FakeSyncManager(ModelTypeSet initial_sync_ended_types,
39 ModelTypeSet progress_marker_types,
40 ModelTypeSet configure_fail_types);
41 virtual ~FakeSyncManager();
43 // Returns those types that have been cleaned (purged from the directory)
44 // since the last call to GetAndResetCleanedTypes(), or since startup if never
46 ModelTypeSet GetAndResetCleanedTypes();
48 // Returns those types that have been downloaded since the last call to
49 // GetAndResetDownloadedTypes(), or since startup if never called.
50 ModelTypeSet GetAndResetDownloadedTypes();
52 // Returns those types that have been marked as enabled since the
53 // last call to GetAndResetEnabledTypes(), or since startup if never
55 ModelTypeSet GetAndResetEnabledTypes();
57 // Returns the types that have most recently received a refresh request.
58 ModelTypeSet GetLastRefreshRequestTypes();
60 // Returns the most recent configuration reason since the last call to
61 // GetAndResetConfigureReason, or since startup if never called.
62 ConfigureReason GetAndResetConfigureReason();
64 // Posts a method to invalidate the given IDs on the sync thread.
65 virtual void OnIncomingInvalidation(
66 const ObjectIdInvalidationMap& invalidation_map) OVERRIDE;
68 // Posts a method to update the invalidator state on the sync thread.
69 virtual void OnInvalidatorStateChange(InvalidatorState state) OVERRIDE;
71 // Returns this class name for logging purposes.
72 virtual std::string GetOwnerName() const OVERRIDE;
74 // Block until the sync thread has finished processing any pending messages.
75 void WaitForSyncThread();
77 // SyncManager implementation.
78 // Note: we treat whatever message loop this is called from as the sync
79 // loop for purposes of callbacks.
81 const base::FilePath& database_location,
82 const WeakHandle<JsEventHandler>& event_handler,
83 const std::string& sync_server_and_path,
86 scoped_ptr<HttpPostProviderFactory> post_factory,
87 const std::vector<scoped_refptr<ModelSafeWorker> >& workers,
88 ExtensionsActivity* extensions_activity,
89 ChangeDelegate* change_delegate,
90 const SyncCredentials& credentials,
91 const std::string& invalidator_client_id,
92 const std::string& restored_key_for_bootstrapping,
93 const std::string& restored_keystore_key_for_bootstrapping,
94 InternalComponentsFactory* internal_components_factory,
96 scoped_ptr<UnrecoverableErrorHandler> unrecoverable_error_handler,
97 ReportUnrecoverableErrorFunction report_unrecoverable_error_function,
98 CancelationSignal* cancelation_signal) OVERRIDE;
99 virtual void ThrowUnrecoverableError() OVERRIDE;
100 virtual ModelTypeSet InitialSyncEndedTypes() OVERRIDE;
101 virtual ModelTypeSet GetTypesWithEmptyProgressMarkerToken(
102 ModelTypeSet types) OVERRIDE;
103 virtual bool PurgePartiallySyncedTypes() OVERRIDE;
104 virtual void UpdateCredentials(const SyncCredentials& credentials) OVERRIDE;
105 virtual void StartSyncingNormally(
106 const ModelSafeRoutingInfo& routing_info) OVERRIDE;
107 virtual void ConfigureSyncer(
108 ConfigureReason reason,
109 ModelTypeSet to_download,
110 ModelTypeSet to_purge,
111 ModelTypeSet to_journal,
112 ModelTypeSet to_unapply,
113 const ModelSafeRoutingInfo& new_routing_info,
114 const base::Closure& ready_task,
115 const base::Closure& retry_task) OVERRIDE;
116 virtual void AddObserver(Observer* observer) OVERRIDE;
117 virtual void RemoveObserver(Observer* observer) OVERRIDE;
118 virtual SyncStatus GetDetailedStatus() const OVERRIDE;
119 virtual void SaveChanges() OVERRIDE;
120 virtual void ShutdownOnSyncThread() OVERRIDE;
121 virtual UserShare* GetUserShare() OVERRIDE;
122 virtual syncer::SyncCore* GetSyncCore() OVERRIDE;
123 virtual const std::string cache_guid() OVERRIDE;
124 virtual bool ReceivedExperiment(Experiments* experiments) OVERRIDE;
125 virtual bool HasUnsyncedItems() OVERRIDE;
126 virtual SyncEncryptionHandler* GetEncryptionHandler() OVERRIDE;
127 virtual void RefreshTypes(ModelTypeSet types) OVERRIDE;
130 scoped_refptr<base::SequencedTaskRunner> sync_task_runner_;
132 ObserverList<SyncManager::Observer> observers_;
134 // Faked directory state.
135 ModelTypeSet initial_sync_ended_types_;
136 ModelTypeSet progress_marker_types_;
138 // Test specific state.
139 // The types that should fail configuration attempts. These types will not
140 // have their progress markers or initial_sync_ended bits set.
141 ModelTypeSet configure_fail_types_;
142 // The set of types that have been cleaned up.
143 ModelTypeSet cleaned_types_;
144 // The set of types that have been downloaded.
145 ModelTypeSet downloaded_types_;
146 // The set of types that have been enabled.
147 ModelTypeSet enabled_types_;
149 // Faked invalidator state.
150 InvalidatorRegistrar registrar_;
152 // The types for which a refresh was most recently requested.
153 ModelTypeSet last_refresh_request_types_;
155 // The most recent configure reason.
156 ConfigureReason last_configure_reason_;
158 scoped_ptr<FakeSyncEncryptionHandler> fake_encryption_handler_;
160 TestUserShare test_user_share_;
162 DISALLOW_COPY_AND_ASSIGN(FakeSyncManager);
165 } // namespace syncer
167 #endif // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_