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