Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / sync / internal_api / public / test / fake_sync_manager.h
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.
4
5 #ifndef SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_
6 #define SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_
7
8 #include <string>
9
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"
15
16 class GURL;
17
18 namespace base {
19 class SequencedTaskRunner;
20 }
21
22 namespace syncer {
23
24 class FakeSyncEncryptionHandler;
25
26 class FakeSyncManager : public SyncManager {
27  public:
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.
31   //
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.
35   //
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();
44
45   // Returns those types that have been cleaned (purged from the directory)
46   // since the last call to GetAndResetCleanedTypes(), or since startup if never
47   // called.
48   ModelTypeSet GetAndResetCleanedTypes();
49
50   // Returns those types that have been downloaded since the last call to
51   // GetAndResetDownloadedTypes(), or since startup if never called.
52   ModelTypeSet GetAndResetDownloadedTypes();
53
54   // Returns those types that have been marked as enabled since the
55   // last call to GetAndResetEnabledTypes(), or since startup if never
56   // called.
57   ModelTypeSet GetAndResetEnabledTypes();
58
59   // Returns the types that have most recently received a refresh request.
60   ModelTypeSet GetLastRefreshRequestTypes();
61
62   // Returns the most recent configuration reason since the last call to
63   // GetAndResetConfigureReason, or since startup if never called.
64   ConfigureReason GetAndResetConfigureReason();
65
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;
70
71   // Posts a method to update the invalidator state on the sync thread.
72   virtual void SetInvalidatorEnabled(bool invalidator_enabled) OVERRIDE;
73
74   // Block until the sync thread has finished processing any pending messages.
75   void WaitForSyncThread();
76
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;
120
121  private:
122   scoped_refptr<base::SequencedTaskRunner> sync_task_runner_;
123
124   ObserverList<SyncManager::Observer> observers_;
125
126   // Faked directory state.
127   ModelTypeSet initial_sync_ended_types_;
128   ModelTypeSet progress_marker_types_;
129
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_;
140
141   // The types for which a refresh was most recently requested.
142   ModelTypeSet last_refresh_request_types_;
143
144   // The most recent configure reason.
145   ConfigureReason last_configure_reason_;
146
147   scoped_ptr<FakeSyncEncryptionHandler> fake_encryption_handler_;
148
149   TestUserShare test_user_share_;
150
151   NullSyncContextProxy null_sync_context_proxy_;
152
153   DISALLOW_COPY_AND_ASSIGN(FakeSyncManager);
154 };
155
156 }  // namespace syncer
157
158 #endif  // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_