Home | History | Annotate | Download | only in test
      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_core_proxy.h"
     14 #include "sync/internal_api/public/test/test_user_share.h"
     15 
     16 namespace base {
     17 class SequencedTaskRunner;
     18 }
     19 
     20 namespace syncer {
     21 
     22 class FakeSyncEncryptionHandler;
     23 
     24 class FakeSyncManager : public SyncManager {
     25  public:
     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.
     29   //
     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.
     33   //
     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();
     42 
     43   // Returns those types that have been cleaned (purged from the directory)
     44   // since the last call to GetAndResetCleanedTypes(), or since startup if never
     45   // called.
     46   ModelTypeSet GetAndResetCleanedTypes();
     47 
     48   // Returns those types that have been downloaded since the last call to
     49   // GetAndResetDownloadedTypes(), or since startup if never called.
     50   ModelTypeSet GetAndResetDownloadedTypes();
     51 
     52   // Returns those types that have been marked as enabled since the
     53   // last call to GetAndResetEnabledTypes(), or since startup if never
     54   // called.
     55   ModelTypeSet GetAndResetEnabledTypes();
     56 
     57   // Returns the types that have most recently received a refresh request.
     58   ModelTypeSet GetLastRefreshRequestTypes();
     59 
     60   // Returns the most recent configuration reason since the last call to
     61   // GetAndResetConfigureReason, or since startup if never called.
     62   ConfigureReason GetAndResetConfigureReason();
     63 
     64   // Posts a method to invalidate the given IDs on the sync thread.
     65   virtual void OnIncomingInvalidation(
     66       const ObjectIdInvalidationMap& invalidation_map) OVERRIDE;
     67 
     68   // Posts a method to update the invalidator state on the sync thread.
     69   virtual void OnInvalidatorStateChange(InvalidatorState state) OVERRIDE;
     70 
     71   // Returns this class name for logging purposes.
     72   virtual std::string GetOwnerName() const 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(
     81       const base::FilePath& database_location,
     82       const WeakHandle<JsEventHandler>& event_handler,
     83       const std::string& sync_server_and_path,
     84       int sync_server_port,
     85       bool use_ssl,
     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,
     95       Encryptor* encryptor,
     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;
    138 
    139  private:
    140   scoped_refptr<base::SequencedTaskRunner> sync_task_runner_;
    141 
    142   ObserverList<SyncManager::Observer> observers_;
    143 
    144   // Faked directory state.
    145   ModelTypeSet initial_sync_ended_types_;
    146   ModelTypeSet progress_marker_types_;
    147 
    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_;
    158 
    159   // The types for which a refresh was most recently requested.
    160   ModelTypeSet last_refresh_request_types_;
    161 
    162   // The most recent configure reason.
    163   ConfigureReason last_configure_reason_;
    164 
    165   scoped_ptr<FakeSyncEncryptionHandler> fake_encryption_handler_;
    166 
    167   TestUserShare test_user_share_;
    168 
    169   NullSyncCoreProxy null_sync_core_proxy_;
    170 
    171   DISALLOW_COPY_AND_ASSIGN(FakeSyncManager);
    172 };
    173 
    174 }  // namespace syncer
    175 
    176 #endif  // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_MANAGER_H_
    177