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 virtual ~FakeSyncManager();
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 virtual 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 virtual 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 virtual void Init(InitArgs* args) OVERRIDE;
81 virtual ModelTypeSet InitialSyncEndedTypes() OVERRIDE;
82 virtual ModelTypeSet GetTypesWithEmptyProgressMarkerToken(
83 ModelTypeSet types) OVERRIDE;
84 virtual bool PurgePartiallySyncedTypes() OVERRIDE;
85 virtual void UpdateCredentials(const SyncCredentials& credentials) OVERRIDE;
86 virtual void StartSyncingNormally(
87 const ModelSafeRoutingInfo& routing_info) OVERRIDE;
88 virtual void ConfigureSyncer(
89 ConfigureReason reason,
90 ModelTypeSet to_download,
91 ModelTypeSet to_purge,
92 ModelTypeSet to_journal,
93 ModelTypeSet to_unapply,
94 const ModelSafeRoutingInfo& new_routing_info,
95 const base::Closure& ready_task,
96 const base::Closure& retry_task) OVERRIDE;
97 virtual void AddObserver(Observer* observer) OVERRIDE;
98 virtual void RemoveObserver(Observer* observer) OVERRIDE;
99 virtual SyncStatus GetDetailedStatus() const OVERRIDE;
100 virtual void SaveChanges() OVERRIDE;
101 virtual void ShutdownOnSyncThread(ShutdownReason reason) OVERRIDE;
102 virtual UserShare* GetUserShare() OVERRIDE;
103 virtual syncer::SyncContextProxy* GetSyncContextProxy() OVERRIDE;
104 virtual const std::string cache_guid() OVERRIDE;
105 virtual bool ReceivedExperiment(Experiments* experiments) OVERRIDE;
106 virtual bool HasUnsyncedItems() OVERRIDE;
107 virtual SyncEncryptionHandler* GetEncryptionHandler() OVERRIDE;
108 virtual ScopedVector<syncer::ProtocolEvent>
109 GetBufferedProtocolEvents() OVERRIDE;
110 virtual scoped_ptr<base::ListValue> GetAllNodesForType(
111 syncer::ModelType type) OVERRIDE;
112 virtual void RefreshTypes(ModelTypeSet types) OVERRIDE;
113 virtual void RegisterDirectoryTypeDebugInfoObserver(
114 syncer::TypeDebugInfoObserver* observer) OVERRIDE;
115 virtual void UnregisterDirectoryTypeDebugInfoObserver(
116 syncer::TypeDebugInfoObserver* observer) OVERRIDE;
117 virtual bool HasDirectoryTypeDebugInfoObserver(
118 syncer::TypeDebugInfoObserver* observer) OVERRIDE;
119 virtual void RequestEmitDebugInfo() OVERRIDE;
122 scoped_refptr<base::SequencedTaskRunner> sync_task_runner_;
124 ObserverList<SyncManager::Observer> observers_;
126 // Faked directory state.
127 ModelTypeSet initial_sync_ended_types_;
128 ModelTypeSet progress_marker_types_;
130 // Test specific state.
131 // The types that should fail configuration attempts. These types will not
132 // have their progress markers or initial_sync_ended bits set.
133 ModelTypeSet configure_fail_types_;
134 // The set of types that have been cleaned up.
135 ModelTypeSet cleaned_types_;
136 // The set of types that have been downloaded.
137 ModelTypeSet downloaded_types_;
138 // The set of types that have been enabled.
139 ModelTypeSet enabled_types_;
141 // The types for which a refresh was most recently requested.
142 ModelTypeSet last_refresh_request_types_;
144 // The most recent configure reason.
145 ConfigureReason last_configure_reason_;
147 scoped_ptr<FakeSyncEncryptionHandler> fake_encryption_handler_;
149 TestUserShare test_user_share_;
151 NullSyncContextProxy null_sync_context_proxy_;
153 DISALLOW_COPY_AND_ASSIGN(FakeSyncManager);
156 } // namespace syncer
158 #endif // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_