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_context_proxy.h"
14 #include "sync/internal_api/public/test/test_user_share.h"
19 class SequencedTaskRunner
;
24 class FakeSyncEncryptionHandler
;
26 class FakeSyncManager
: public SyncManager
{
28 // |initial_sync_ended_types|: The set of types that have initial_sync_ended
29 // set to true. This value will be used by InitialSyncEndedTypes() until the
30 // next configuration is performed.
32 // |progress_marker_types|: The set of types that have valid progress
33 // markers. This will be used by GetTypesWithEmptyProgressMarkerToken() until
34 // the next configuration is performed.
36 // |configure_fail_types|: The set of types that will fail
37 // configuration. Once ConfigureSyncer is called, the
38 // |initial_sync_ended_types_| and |progress_marker_types_| will be updated
39 // to include those types that didn't fail.
40 FakeSyncManager(ModelTypeSet initial_sync_ended_types
,
41 ModelTypeSet progress_marker_types
,
42 ModelTypeSet configure_fail_types
);
43 ~FakeSyncManager() override
;
45 // Returns those types that have been cleaned (purged from the directory)
46 // since the last call to GetAndResetCleanedTypes(), or since startup if never
48 ModelTypeSet
GetAndResetCleanedTypes();
50 // Returns those types that have been downloaded since the last call to
51 // GetAndResetDownloadedTypes(), or since startup if never called.
52 ModelTypeSet
GetAndResetDownloadedTypes();
54 // Returns those types that have been marked as enabled since the
55 // last call to GetAndResetEnabledTypes(), or since startup if never
57 ModelTypeSet
GetAndResetEnabledTypes();
59 // Returns the types that have most recently received a refresh request.
60 ModelTypeSet
GetLastRefreshRequestTypes();
62 // Returns the most recent configuration reason since the last call to
63 // GetAndResetConfigureReason, or since startup if never called.
64 ConfigureReason
GetAndResetConfigureReason();
66 // Posts a method to invalidate the given IDs on the sync thread.
67 void OnIncomingInvalidation(
68 syncer::ModelType type
,
69 scoped_ptr
<InvalidationInterface
> interface
) override
;
71 // Posts a method to update the invalidator state on the sync thread.
72 void SetInvalidatorEnabled(bool invalidator_enabled
) 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.
80 void Init(InitArgs
* args
) override
;
81 ModelTypeSet
InitialSyncEndedTypes() override
;
82 ModelTypeSet
GetTypesWithEmptyProgressMarkerToken(
83 ModelTypeSet types
) override
;
84 bool PurgePartiallySyncedTypes() override
;
85 void UpdateCredentials(const SyncCredentials
& credentials
) override
;
86 void StartSyncingNormally(const ModelSafeRoutingInfo
& routing_info
,
87 base::Time last_poll_time
) override
;
88 void ConfigureSyncer(ConfigureReason reason
,
89 ModelTypeSet to_download
,
90 ModelTypeSet to_purge
,
91 ModelTypeSet to_journal
,
92 ModelTypeSet to_unapply
,
93 const ModelSafeRoutingInfo
& new_routing_info
,
94 const base::Closure
& ready_task
,
95 const base::Closure
& retry_task
) override
;
96 void AddObserver(Observer
* observer
) override
;
97 void RemoveObserver(Observer
* observer
) override
;
98 SyncStatus
GetDetailedStatus() const override
;
99 void SaveChanges() override
;
100 void ShutdownOnSyncThread(ShutdownReason reason
) override
;
101 UserShare
* GetUserShare() override
;
102 syncer::SyncContextProxy
* GetSyncContextProxy() override
;
103 const std::string
cache_guid() override
;
104 bool ReceivedExperiment(Experiments
* experiments
) override
;
105 bool HasUnsyncedItems() override
;
106 SyncEncryptionHandler
* GetEncryptionHandler() override
;
107 ScopedVector
<syncer::ProtocolEvent
> GetBufferedProtocolEvents() override
;
108 scoped_ptr
<base::ListValue
> GetAllNodesForType(
109 syncer::ModelType type
) override
;
110 void RefreshTypes(ModelTypeSet types
) override
;
111 void RegisterDirectoryTypeDebugInfoObserver(
112 syncer::TypeDebugInfoObserver
* observer
) override
;
113 void UnregisterDirectoryTypeDebugInfoObserver(
114 syncer::TypeDebugInfoObserver
* observer
) override
;
115 bool HasDirectoryTypeDebugInfoObserver(
116 syncer::TypeDebugInfoObserver
* observer
) override
;
117 void RequestEmitDebugInfo() override
;
120 scoped_refptr
<base::SequencedTaskRunner
> sync_task_runner_
;
122 ObserverList
<SyncManager::Observer
> observers_
;
124 // Faked directory state.
125 ModelTypeSet initial_sync_ended_types_
;
126 ModelTypeSet progress_marker_types_
;
128 // Test specific state.
129 // The types that should fail configuration attempts. These types will not
130 // have their progress markers or initial_sync_ended bits set.
131 ModelTypeSet configure_fail_types_
;
132 // The set of types that have been cleaned up.
133 ModelTypeSet cleaned_types_
;
134 // The set of types that have been downloaded.
135 ModelTypeSet downloaded_types_
;
136 // The set of types that have been enabled.
137 ModelTypeSet enabled_types_
;
139 // The types for which a refresh was most recently requested.
140 ModelTypeSet last_refresh_request_types_
;
142 // The most recent configure reason.
143 ConfigureReason last_configure_reason_
;
145 scoped_ptr
<FakeSyncEncryptionHandler
> fake_encryption_handler_
;
147 TestUserShare test_user_share_
;
149 NullSyncContextProxy null_sync_context_proxy_
;
151 DISALLOW_COPY_AND_ASSIGN(FakeSyncManager
);
154 } // namespace syncer
156 #endif // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_