1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROMEOS_DBUS_FAKE_CROS_DISKS_CLIENT_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CHROMEOS_DBUS_FAKE_CROS_DISKS_CLIENT_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/callback.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/dbus/cros_disks_client.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// A fake implementation of CrosDiskeClient. This class provides a fake behavior 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// and the user of this class can raise a fake mouse events. 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FakeCrosDisksClient : public CrosDisksClient { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FakeCrosDisksClient(); 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~FakeCrosDisksClient(); 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // CrosDisksClient overrides 23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void Init(dbus::Bus* bus) OVERRIDE; 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void Mount(const std::string& source_path, 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& source_format, 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& mount_label, 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& callback, 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& error_callback) OVERRIDE; 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void Unmount(const std::string& device_path, 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UnmountOptions options, 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Closure& callback, 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Closure& error_callback) OVERRIDE; 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void EnumerateAutoMountableDevices( 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const EnumerateAutoMountableDevicesCallback& callback, 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& error_callback) OVERRIDE; 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void EnumerateMountEntries( 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const EnumerateMountEntriesCallback& callback, 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& error_callback) OVERRIDE; 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void Format(const std::string& device_path, 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& filesystem, 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::Closure& callback, 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::Closure& error_callback) OVERRIDE; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void GetDeviceProperties( 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& device_path, 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GetDevicePropertiesCallback& callback, 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& error_callback) OVERRIDE; 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetMountEventHandler( 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const MountEventHandler& mount_event_handler) OVERRIDE; 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetMountCompletedHandler( 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const MountCompletedHandler& mount_completed_handler) OVERRIDE; 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetFormatCompletedHandler( 52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const FormatCompletedHandler& format_completed_handler) OVERRIDE; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Used in tests to simulate signals sent by cros disks layer. 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Invokes handlers set in |SetMountEventHandler|, |SetMountCompletedHandler|, 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // and |SetFormatCompletedHandler|. 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool SendMountEvent(MountEventType event, const std::string& path); 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool SendMountCompletedEvent(MountError error_code, 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& source_path, 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MountType mount_type, 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& mount_path); 62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool SendFormatCompletedEvent(FormatError error_code, 63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& device_path); 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Returns how many times Unmount() was called. 66a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) int unmount_call_count() const { 67a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return unmount_call_count_; 68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 69a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 70a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Returns the |device_path| parameter from the last invocation of Unmount(). 71a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) const std::string& last_unmount_device_path() const { 72a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return last_unmount_device_path_; 73a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 74a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 75a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Returns the |options| parameter from the last invocation of Unmount(). 76a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) UnmountOptions last_unmount_options() const { 77a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return last_unmount_options_; 78a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 79a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 80a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Makes the subsequent Unmount() calls fail. Unmount() succeeds by default. 81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) void MakeUnmountFail() { 82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) unmount_success_ = false; 83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 85a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Sets a listener callbackif the following Unmount() call is success or not. 86a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Unmount() calls the corresponding callback given as a parameter. 87a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) void set_unmount_listener(base::Closure listener) { 88a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) unmount_listener_ = listener; 89a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 90a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns how many times Format() was called. 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int format_call_count() const { 93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return format_call_count_; 94a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 95a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns the |device_path| parameter from the last invocation of Format(). 97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& last_format_device_path() const { 98010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return last_format_device_path_; 99a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 100a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 101010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns the |filesystem| parameter from the last invocation of Format(). 102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& last_format_filesystem() const { 103010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return last_format_filesystem_; 104a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 105a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Makes the subsequent Format() calls fail. Format() succeeds by default. 107010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void MakeFormatFail() { 108010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) format_success_ = false; 109a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 110a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MountEventHandler mount_event_handler_; 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MountCompletedHandler mount_completed_handler_; 114010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) FormatCompletedHandler format_completed_handler_; 115a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 116a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) int unmount_call_count_; 117a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) std::string last_unmount_device_path_; 118a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) UnmountOptions last_unmount_options_; 119a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) bool unmount_success_; 120a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) base::Closure unmount_listener_; 121010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int format_call_count_; 122010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) std::string last_format_device_path_; 123010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) std::string last_format_filesystem_; 124010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool format_success_; 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROMEOS_DBUS_FAKE_CROS_DISKS_CLIENT_H_ 130