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