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)#include "chromeos/dbus/fake_cros_disks_client.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "base/bind.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/logging.h" 99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 10a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)FakeCrosDisksClient::FakeCrosDisksClient() 14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : unmount_call_count_(0), 15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) unmount_success_(true), 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) format_call_count_(0), 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) format_success_(true) { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)FakeCrosDisksClient::~FakeCrosDisksClient() { 21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void FakeCrosDisksClient::Init(dbus::Bus* bus) { 24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void FakeCrosDisksClient::Mount(const std::string& source_path, 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& source_format, 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& mount_label, 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& callback, 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& error_callback) { 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void FakeCrosDisksClient::Unmount(const std::string& device_path, 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UnmountOptions options, 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Closure& callback, 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Closure& error_callback) { 37a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) DCHECK(!callback.is_null()); 38a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) DCHECK(!error_callback.is_null()); 39a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 40a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) unmount_call_count_++; 41a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) last_unmount_device_path_ = device_path; 42a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) last_unmount_options_ = options; 43a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) base::MessageLoopProxy::current()->PostTask( 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FROM_HERE, unmount_success_ ? callback : error_callback); 45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if (!unmount_listener_.is_null()) 46a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) unmount_listener_.Run(); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void FakeCrosDisksClient::EnumerateAutoMountableDevices( 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const EnumerateAutoMountableDevicesCallback& callback, 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& error_callback) { 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeCrosDisksClient::EnumerateMountEntries( 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const EnumerateMountEntriesCallback& callback, 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& error_callback) { 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void FakeCrosDisksClient::Format(const std::string& device_path, 60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& filesystem, 61010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::Closure& callback, 62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::Closure& error_callback) { 63a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) DCHECK(!callback.is_null()); 64a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) DCHECK(!error_callback.is_null()); 65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) format_call_count_++; 67010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) last_format_device_path_ = device_path; 68010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) last_format_filesystem_ = filesystem; 69010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (format_success_) { 70010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::MessageLoopProxy::current()->PostTask(FROM_HERE, callback); 71a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } else { 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::MessageLoopProxy::current()->PostTask(FROM_HERE, error_callback); 73a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void FakeCrosDisksClient::GetDeviceProperties( 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& device_path, 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GetDevicePropertiesCallback& callback, 797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::Closure& error_callback) { 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void FakeCrosDisksClient::SetMountEventHandler( 83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const MountEventHandler& mount_event_handler) { 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mount_event_handler_ = mount_event_handler; 85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void FakeCrosDisksClient::SetMountCompletedHandler( 88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const MountCompletedHandler& mount_completed_handler) { 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mount_completed_handler_ = mount_completed_handler; 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void FakeCrosDisksClient::SetFormatCompletedHandler( 93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const FormatCompletedHandler& format_completed_handler) { 94010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) format_completed_handler_ = format_completed_handler; 95010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool FakeCrosDisksClient::SendMountEvent(MountEventType event, 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& path) { 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mount_event_handler_.is_null()) 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return false; 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mount_event_handler_.Run(event, path); 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool FakeCrosDisksClient::SendMountCompletedEvent( 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MountError error_code, 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& source_path, 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MountType mount_type, 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& mount_path) { 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mount_completed_handler_.is_null()) 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return false; 112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) mount_completed_handler_.Run( 113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) MountEntry(error_code, source_path, mount_type, mount_path)); 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 117010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)bool FakeCrosDisksClient::SendFormatCompletedEvent( 118010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) FormatError error_code, 119010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& device_path) { 120010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (format_completed_handler_.is_null()) 121010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return false; 122010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) format_completed_handler_.Run(error_code, device_path); 123010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return true; 124010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 125010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 127