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_ 159