15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync_file_system/mock_remote_file_sync_service.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/location.h" 11b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "base/message_loop/message_loop_proxy.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "webkit/browser/fileapi/file_system_url.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::_; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Invoke; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Return; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sync_file_system { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MockRemoteFileSyncService::MockRemoteFileSyncService() 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : conflict_resolution_policy_(CONFLICT_RESOLUTION_POLICY_MANUAL) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef MockRemoteFileSyncService self; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, AddServiceObserver(_)) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Invoke(this, &self::AddServiceObserverStub)); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, AddFileStatusObserver(_)) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Invoke(this, &self::AddFileStatusObserverStub)); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, RegisterOriginForTrackingChanges(_, _)) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Invoke(this, &self::RegisterOriginForTrackingChangesStub)); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, UnregisterOriginForTrackingChanges(_, _)) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault( 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Invoke(this, &self::UnregisterOriginForTrackingChangesStub)); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, UninstallOrigin(_, _)) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Invoke(this, &self::DeleteOriginDirectoryStub)); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, ProcessRemoteChange(_)) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillByDefault(Invoke(this, &self::ProcessRemoteChangeStub)); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ON_CALL(*this, GetLocalChangeProcessor()) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Return(&mock_local_change_processor_)); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, IsConflicting(_)) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Return(false)); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, GetCurrentState()) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Return(REMOTE_SERVICE_OK)); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, SetConflictResolutionPolicy(_)) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Invoke(this, &self::SetConflictResolutionPolicyStub)); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ON_CALL(*this, GetConflictResolutionPolicy()) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .WillByDefault(Invoke(this, &self::GetConflictResolutionPolicyStub)); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockRemoteFileSyncService::~MockRemoteFileSyncService() { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::ListValue> MockRemoteFileSyncService::DumpFiles( 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const GURL& origin) { 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return scoped_ptr<base::ListValue>(); 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::NotifyRemoteChangeQueueUpdated( 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 pending_changes) { 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FOR_EACH_OBSERVER(Observer, service_observers_, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnRemoteChangeQueueUpdated(pending_changes)); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::NotifyRemoteServiceStateUpdated( 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemoteServiceState state, 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& description) { 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FOR_EACH_OBSERVER(Observer, service_observers_, 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnRemoteServiceStateUpdated(state, description)); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::NotifyFileStatusChanged( 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const fileapi::FileSystemURL& url, 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncFileStatus sync_status, 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncAction action_taken, 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncDirection direction) { 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FOR_EACH_OBSERVER(FileStatusObserver, file_status_observers_, 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnFileStatusChanged(url, sync_status, 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) action_taken, direction)); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::AddServiceObserverStub(Observer* observer) { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service_observers_.AddObserver(observer); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::AddFileStatusObserverStub( 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FileStatusObserver* observer) { 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) file_status_observers_.AddObserver(observer); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::RegisterOriginForTrackingChangesStub( 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& origin, 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SyncStatusCallback& callback) { 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::MessageLoopProxy::current()->PostTask( 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FROM_HERE, 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(callback, SYNC_STATUS_OK)); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::UnregisterOriginForTrackingChangesStub( 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& origin, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SyncStatusCallback& callback) { 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::MessageLoopProxy::current()->PostTask( 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FROM_HERE, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(callback, SYNC_STATUS_OK)); 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockRemoteFileSyncService::DeleteOriginDirectoryStub( 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& origin, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SyncStatusCallback& callback) { 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::MessageLoopProxy::current()->PostTask( 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FROM_HERE, 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(callback, SYNC_STATUS_OK)); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::ProcessRemoteChangeStub( 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SyncFileCallback& callback) { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::MessageLoopProxy::current()->PostTask( 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FROM_HERE, 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(callback, SYNC_STATUS_NO_CHANGE_TO_SYNC, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fileapi::FileSystemURL())); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SyncStatusCode MockRemoteFileSyncService::SetConflictResolutionPolicyStub( 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ConflictResolutionPolicy policy) { 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) conflict_resolution_policy_ = policy; 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return SYNC_STATUS_OK; 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ConflictResolutionPolicy 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MockRemoteFileSyncService::GetConflictResolutionPolicyStub() const { 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return conflict_resolution_policy_; 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace sync_file_system 134