mock_remote_file_sync_service.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 CHROME_BROWSER_SYNC_FILE_SYSTEM_MOCK_REMOTE_FILE_SYNC_SERVICE_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_MOCK_REMOTE_FILE_SYNC_SERVICE_H_ 7 8#include <map> 9 10#include "base/memory/scoped_ptr.h" 11#include "base/observer_list.h" 12#include "chrome/browser/sync_file_system/file_status_observer.h" 13#include "chrome/browser/sync_file_system/mock_local_change_processor.h" 14#include "chrome/browser/sync_file_system/remote_change_processor.h" 15#include "chrome/browser/sync_file_system/remote_file_sync_service.h" 16#include "googleurl/src/gurl.h" 17#include "testing/gmock/include/gmock/gmock.h" 18#include "webkit/fileapi/syncable/sync_callbacks.h" 19#include "webkit/fileapi/syncable/sync_direction.h" 20#include "webkit/fileapi/syncable/sync_file_metadata.h" 21 22namespace sync_file_system { 23 24class MockRemoteFileSyncService : public RemoteFileSyncService { 25 public: 26 static const char kServiceName[]; 27 28 MockRemoteFileSyncService(); 29 virtual ~MockRemoteFileSyncService(); 30 31 // RemoteFileSyncService overrides. 32 MOCK_METHOD1(AddServiceObserver, 33 void(RemoteFileSyncService::Observer* observer)); 34 MOCK_METHOD1(AddFileStatusObserver, 35 void(FileStatusObserver* observer)); 36 MOCK_METHOD2(RegisterOriginForTrackingChanges, 37 void(const GURL& origin, const SyncStatusCallback& callback)); 38 MOCK_METHOD2(UnregisterOriginForTrackingChanges, 39 void(const GURL& origin, const SyncStatusCallback& callback)); 40 MOCK_METHOD2(EnableOriginForTrackingChanges, 41 void(const GURL& origin, const SyncStatusCallback& callback)); 42 MOCK_METHOD2(DisableOriginForTrackingChanges, 43 void(const GURL& origin, const SyncStatusCallback& callback)); 44 MOCK_METHOD2(UninstallOrigin, 45 void(const GURL& origin, const SyncStatusCallback& callback)); 46 MOCK_METHOD1(ProcessRemoteChange, 47 void(const SyncFileCallback& callback)); 48 MOCK_METHOD1(SetRemoteChangeProcessor, 49 void(RemoteChangeProcessor* processor)); 50 MOCK_METHOD0(GetLocalChangeProcessor, LocalChangeProcessor*()); 51 MOCK_METHOD1(IsConflicting, bool(const fileapi::FileSystemURL& url)); 52 MOCK_METHOD2(GetRemoteFileMetadata, 53 void(const fileapi::FileSystemURL& url, 54 const SyncFileMetadataCallback& callback)); 55 MOCK_CONST_METHOD0(GetCurrentState, 56 RemoteServiceState()); 57 MOCK_CONST_METHOD0(GetServiceName, const char*()); 58 MOCK_METHOD1(SetSyncEnabled, void(bool)); 59 MOCK_METHOD1(SetConflictResolutionPolicy, 60 SyncStatusCode(ConflictResolutionPolicy)); 61 MOCK_CONST_METHOD0(GetConflictResolutionPolicy, 62 ConflictResolutionPolicy()); 63 64 // Send notifications to the observers. 65 // Can be used in the mock implementation. 66 void NotifyRemoteChangeQueueUpdated(int64 pending_changes); 67 void NotifyRemoteServiceStateUpdated( 68 RemoteServiceState state, 69 const std::string& description); 70 void NotifyFileStatusChanged( 71 const fileapi::FileSystemURL& url, 72 SyncFileStatus sync_status, 73 SyncAction action_taken, 74 SyncDirection direction); 75 76 // Sets conflict file information. The information is returned by 77 // the default action for GetRemoteConflictFileInfo. 78 void add_conflict_file(const fileapi::FileSystemURL& url, 79 const SyncFileMetadata& metadata) { 80 conflict_file_urls_[url.origin()].insert(url); 81 conflict_file_metadata_[url] = metadata; 82 } 83 84 void reset_conflict_files() { 85 conflict_file_urls_.clear(); 86 conflict_file_metadata_.clear(); 87 } 88 89 private: 90 typedef std::map<GURL, fileapi::FileSystemURLSet> OriginToURLSetMap; 91 typedef std::map<fileapi::FileSystemURL, SyncFileMetadata, 92 fileapi::FileSystemURL::Comparator> FileMetadataMap; 93 94 void AddServiceObserverStub(Observer* observer); 95 void AddFileStatusObserverStub(FileStatusObserver* observer); 96 void RegisterOriginForTrackingChangesStub( 97 const GURL& origin, const SyncStatusCallback& callback); 98 void UnregisterOriginForTrackingChangesStub( 99 const GURL& origin, const SyncStatusCallback& callback); 100 void DeleteOriginDirectoryStub( 101 const GURL& origin, const SyncStatusCallback& callback); 102 void ProcessRemoteChangeStub(const SyncFileCallback& callback); 103 void GetRemoteFileMetadataStub( 104 const fileapi::FileSystemURL& url, 105 const SyncFileMetadataCallback& callback); 106 SyncStatusCode SetConflictResolutionPolicyStub( 107 ConflictResolutionPolicy policy); 108 ConflictResolutionPolicy GetConflictResolutionPolicyStub() const; 109 110 OriginToURLSetMap conflict_file_urls_; 111 FileMetadataMap conflict_file_metadata_; 112 113 // For default implementation. 114 ::testing::NiceMock<MockLocalChangeProcessor> mock_local_change_processor_; 115 116 ObserverList<Observer> service_observers_; 117 ObserverList<FileStatusObserver> file_status_observers_; 118 119 ConflictResolutionPolicy conflict_resolution_policy_; 120 121 DISALLOW_COPY_AND_ASSIGN(MockRemoteFileSyncService); 122}; 123 124} // namespace sync_file_system 125 126#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_MOCK_REMOTE_FILE_SYNC_SERVICE_H_ 127