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/null_sync_core_proxy.h"
14 #include "sync/internal_api/public/test/test_user_share.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 ModelTypeSet
InitialSyncEndedTypes() OVERRIDE
;
100 virtual ModelTypeSet
GetTypesWithEmptyProgressMarkerToken(
101 ModelTypeSet types
) OVERRIDE
;
102 virtual bool PurgePartiallySyncedTypes() OVERRIDE
;
103 virtual void UpdateCredentials(const SyncCredentials
& credentials
) OVERRIDE
;
104 virtual void StartSyncingNormally(
105 const ModelSafeRoutingInfo
& routing_info
) OVERRIDE
;
106 virtual void ConfigureSyncer(
107 ConfigureReason reason
,
108 ModelTypeSet to_download
,
109 ModelTypeSet to_purge
,
110 ModelTypeSet to_journal
,
111 ModelTypeSet to_unapply
,
112 const ModelSafeRoutingInfo
& new_routing_info
,
113 const base::Closure
& ready_task
,
114 const base::Closure
& retry_task
) OVERRIDE
;
115 virtual void AddObserver(Observer
* observer
) OVERRIDE
;
116 virtual void RemoveObserver(Observer
* observer
) OVERRIDE
;
117 virtual SyncStatus
GetDetailedStatus() const OVERRIDE
;
118 virtual void SaveChanges() OVERRIDE
;
119 virtual void ShutdownOnSyncThread() OVERRIDE
;
120 virtual UserShare
* GetUserShare() OVERRIDE
;
121 virtual syncer::SyncCoreProxy
* GetSyncCoreProxy() OVERRIDE
;
122 virtual const std::string
cache_guid() OVERRIDE
;
123 virtual bool ReceivedExperiment(Experiments
* experiments
) OVERRIDE
;
124 virtual bool HasUnsyncedItems() OVERRIDE
;
125 virtual SyncEncryptionHandler
* GetEncryptionHandler() OVERRIDE
;
126 virtual ScopedVector
<syncer::ProtocolEvent
>
127 GetBufferedProtocolEvents() OVERRIDE
;
128 virtual scoped_ptr
<base::ListValue
> GetAllNodesForType(
129 syncer::ModelType type
) OVERRIDE
;
130 virtual void RefreshTypes(ModelTypeSet types
) OVERRIDE
;
131 virtual void RegisterDirectoryTypeDebugInfoObserver(
132 syncer::TypeDebugInfoObserver
* observer
) OVERRIDE
;
133 virtual void UnregisterDirectoryTypeDebugInfoObserver(
134 syncer::TypeDebugInfoObserver
* observer
) OVERRIDE
;
135 virtual bool HasDirectoryTypeDebugInfoObserver(
136 syncer::TypeDebugInfoObserver
* observer
) OVERRIDE
;
137 virtual void RequestEmitDebugInfo() OVERRIDE
;
140 scoped_refptr
<base::SequencedTaskRunner
> sync_task_runner_
;
142 ObserverList
<SyncManager::Observer
> observers_
;
144 // Faked directory state.
145 ModelTypeSet initial_sync_ended_types_
;
146 ModelTypeSet progress_marker_types_
;
148 // Test specific state.
149 // The types that should fail configuration attempts. These types will not
150 // have their progress markers or initial_sync_ended bits set.
151 ModelTypeSet configure_fail_types_
;
152 // The set of types that have been cleaned up.
153 ModelTypeSet cleaned_types_
;
154 // The set of types that have been downloaded.
155 ModelTypeSet downloaded_types_
;
156 // The set of types that have been enabled.
157 ModelTypeSet enabled_types_
;
159 // The types for which a refresh was most recently requested.
160 ModelTypeSet last_refresh_request_types_
;
162 // The most recent configure reason.
163 ConfigureReason last_configure_reason_
;
165 scoped_ptr
<FakeSyncEncryptionHandler
> fake_encryption_handler_
;
167 TestUserShare test_user_share_
;
169 NullSyncCoreProxy null_sync_core_proxy_
;
171 DISALLOW_COPY_AND_ASSIGN(FakeSyncManager
);
174 } // namespace syncer
176 #endif // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_