fake_disk_mount_manager.cc revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h"
6
7#include "base/callback.h"
8#include "base/stl_util.h"
9
10namespace file_manager {
11
12FakeDiskMountManager::MountRequest::MountRequest(
13    const std::string& source_path,
14    const std::string& source_format,
15    const std::string& mount_label,
16    chromeos::MountType type)
17    : source_path(source_path),
18      source_format(source_format),
19      mount_label(mount_label),
20      type(type) {
21}
22
23FakeDiskMountManager::UnmountRequest::UnmountRequest(
24    const std::string& mount_path,
25    chromeos::UnmountOptions options)
26    : mount_path(mount_path),
27      options(options) {
28}
29
30FakeDiskMountManager::FakeDiskMountManager() {
31}
32
33FakeDiskMountManager::~FakeDiskMountManager() {
34  STLDeleteValues(&disks_);
35}
36
37void FakeDiskMountManager::AddObserver(Observer* observer) {
38  DCHECK(observer);
39  observers_.AddObserver(observer);
40}
41
42void FakeDiskMountManager::RemoveObserver(Observer* observer) {
43  DCHECK(observer);
44  observers_.RemoveObserver(observer);
45}
46
47const chromeos::disks::DiskMountManager::DiskMap&
48FakeDiskMountManager::disks() const {
49  return disks_;
50}
51
52const chromeos::disks::DiskMountManager::Disk*
53FakeDiskMountManager::FindDiskBySourcePath(
54    const std::string& source_path) const {
55  DiskMap::const_iterator iter = disks_.find(source_path);
56  if (iter == disks_.end())
57    return NULL;
58  return iter->second;
59}
60
61const chromeos::disks::DiskMountManager::MountPointMap&
62FakeDiskMountManager::mount_points() const {
63  return mount_points_;
64}
65
66void FakeDiskMountManager::EnsureMountInfoRefreshed(
67    const EnsureMountInfoRefreshedCallback& callback) {
68  callback.Run(true);
69}
70
71void FakeDiskMountManager::MountPath(const std::string& source_path,
72                                     const std::string& source_format,
73                                     const std::string& mount_label,
74                                     chromeos::MountType type) {
75  mount_requests_.push_back(
76      MountRequest(source_path, source_format, mount_label, type));
77
78  const MountPointInfo mount_point(
79      source_path,
80      source_path,
81      type,
82      chromeos::disks::MOUNT_CONDITION_NONE);
83  mount_points_.insert(make_pair(source_path, mount_point));
84  FOR_EACH_OBSERVER(DiskMountManager::Observer, observers_,
85                    OnMountEvent(DiskMountManager::MOUNTING,
86                                 chromeos::MOUNT_ERROR_NONE,
87                                 mount_point));
88}
89
90void FakeDiskMountManager::UnmountPath(const std::string& mount_path,
91                                       chromeos::UnmountOptions options,
92                                       const UnmountPathCallback& callback) {
93  unmount_requests_.push_back(UnmountRequest(mount_path, options));
94
95  MountPointMap::iterator iter = mount_points_.find(mount_path);
96  if (iter == mount_points_.end())
97    return;
98  const MountPointInfo mount_point = iter->second;
99  mount_points_.erase(iter);
100  FOR_EACH_OBSERVER(DiskMountManager::Observer, observers_,
101                    OnMountEvent(DiskMountManager::UNMOUNTING,
102                                 chromeos::MOUNT_ERROR_NONE,
103                                 mount_point));
104  // Currently |callback| is just ignored.
105}
106
107void FakeDiskMountManager::FormatMountedDevice(const std::string& mount_path) {
108}
109
110void FakeDiskMountManager::UnmountDeviceRecursively(
111    const std::string& device_path,
112    const UnmountDeviceRecursivelyCallbackType& callback) {
113}
114
115bool FakeDiskMountManager::AddDiskForTest(Disk* disk) {
116  DCHECK(disk);
117  return disks_.insert(make_pair(disk->device_path(), disk)).second;
118}
119
120bool FakeDiskMountManager::AddMountPointForTest(
121    const MountPointInfo& mount_point) {
122  return false;
123}
124
125void FakeDiskMountManager::InvokeDiskEventForTest(
126    chromeos::disks::DiskMountManager::DiskEvent event,
127    const chromeos::disks::DiskMountManager::Disk* disk) {
128  FOR_EACH_OBSERVER(chromeos::disks::DiskMountManager::Observer,
129                    observers_,
130                    OnDiskEvent(event, disk));
131}
132
133}  // namespace file_manager
134