mock_remote_file_sync_service.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <string>
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/bind.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/location.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/message_loop/message_loop_proxy.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "webkit/browser/fileapi/file_system_url.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochusing ::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)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockRemoteFileSyncService::MockRemoteFileSyncService()
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : conflict_resolution_policy_(CONFLICT_RESOLUTION_POLICY_MANUAL),
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      state_(REMOTE_SERVICE_OK) {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef MockRemoteFileSyncService self;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, AddServiceObserver(_))
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(Invoke(this, &self::AddServiceObserverStub));
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, AddFileStatusObserver(_))
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(Invoke(this, &self::AddFileStatusObserverStub));
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, RegisterOrigin(_, _))
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(Invoke(this, &self::RegisterOriginStub));
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, UninstallOrigin(_, _, _))
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          Invoke(this, &self::DeleteOriginDirectoryStub));
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, ProcessRemoteChange(_))
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(Invoke(this, &self::ProcessRemoteChangeStub));
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, GetLocalChangeProcessor())
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(Return(&mock_local_change_processor_));
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ON_CALL(*this, GetCurrentState())
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      .WillByDefault(Invoke(this, &self::GetCurrentStateStub));
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockRemoteFileSyncService::~MockRemoteFileSyncService() {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::DumpFiles(const GURL& origin,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          const ListCallback& callback) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback.Run(scoped_ptr<base::ListValue>());
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::DumpDatabase(const ListCallback& callback) {
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback.Run(scoped_ptr<base::ListValue>());
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::SetServiceState(RemoteServiceState state) {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  state_ = state;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::NotifyRemoteChangeQueueUpdated(
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64 pending_changes) {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOR_EACH_OBSERVER(Observer, service_observers_,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    OnRemoteChangeQueueUpdated(pending_changes));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::NotifyRemoteServiceStateUpdated(
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    RemoteServiceState state,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& description) {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOR_EACH_OBSERVER(Observer, service_observers_,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    OnRemoteServiceStateUpdated(state, description));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::NotifyFileStatusChanged(
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const fileapi::FileSystemURL& url,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SyncFileStatus sync_status,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SyncAction action_taken,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SyncDirection direction) {
76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FOR_EACH_OBSERVER(FileStatusObserver, file_status_observers_,
77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    OnFileStatusChanged(url, sync_status,
78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                        action_taken, direction));
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRemoteFileSyncService::AddServiceObserverStub(Observer* observer) {
82  service_observers_.AddObserver(observer);
83}
84
85void MockRemoteFileSyncService::AddFileStatusObserverStub(
86    FileStatusObserver* observer) {
87  file_status_observers_.AddObserver(observer);
88}
89
90void MockRemoteFileSyncService::RegisterOriginStub(
91    const GURL& origin,
92    const SyncStatusCallback& callback) {
93  base::MessageLoopProxy::current()->PostTask(
94      FROM_HERE,
95      base::Bind(callback, SYNC_STATUS_OK));
96}
97
98void MockRemoteFileSyncService::DeleteOriginDirectoryStub(
99    const GURL& origin,
100    UninstallFlag flag,
101    const SyncStatusCallback& callback) {
102  base::MessageLoopProxy::current()->PostTask(
103      FROM_HERE,
104      base::Bind(callback, SYNC_STATUS_OK));
105}
106
107void MockRemoteFileSyncService::ProcessRemoteChangeStub(
108    const SyncFileCallback& callback) {
109  base::MessageLoopProxy::current()->PostTask(
110      FROM_HERE,
111      base::Bind(callback, SYNC_STATUS_NO_CHANGE_TO_SYNC,
112                 fileapi::FileSystemURL()));
113}
114
115RemoteServiceState MockRemoteFileSyncService::GetCurrentStateStub() const {
116  return state_;
117}
118
119}  // namespace sync_file_system
120