Home | History | Annotate | Download | only in cros
      1 // Copyright (c) 2011 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/cros/mock_mount_library.h"
      6 
      7 #include "base/message_loop.h"
      8 #include "base/string_util.h"
      9 #include "chrome/browser/chromeos/cros/cros_library.h"
     10 #include "content/browser/browser_thread.h"
     11 
     12 namespace chromeos {
     13 
     14 using testing::_;
     15 using testing::Invoke;
     16 
     17 const char* kTestSystemPath = "/this/system/path";
     18 const char* kTestDevicePath = "/this/device/path";
     19 const char* kTestMountPath = "/media/foofoo";
     20 const char* kTestFilePath = "/this/file/path";
     21 const char* kTestDeviceLabel = "A label";
     22 const char* kTestDriveLabel = "Another label";
     23 const char* kTestParentPath = "/this/is/my/parent";
     24 
     25 void MockMountLibrary::AddObserverInternal(MountLibrary::Observer* observer) {
     26   observers_.AddObserver(observer);
     27 }
     28 
     29 void MockMountLibrary::RemoveObserverInternal(
     30     MountLibrary::Observer* observer) {
     31   observers_.RemoveObserver(observer);
     32 }
     33 
     34 MockMountLibrary::MockMountLibrary() {
     35   ON_CALL(*this, AddObserver(_))
     36       .WillByDefault(Invoke(this, &MockMountLibrary::AddObserverInternal));
     37   ON_CALL(*this, RemoveObserver(_))
     38       .WillByDefault(Invoke(this, &MockMountLibrary::RemoveObserverInternal));
     39   ON_CALL(*this, disks())
     40       .WillByDefault(Invoke(this, &MockMountLibrary::disksInternal));
     41 }
     42 
     43 MockMountLibrary::~MockMountLibrary() {
     44 
     45 }
     46 
     47 void MockMountLibrary::FireDeviceInsertEvents() {
     48 
     49   scoped_ptr<MountLibrary::Disk> disk1(new MountLibrary::Disk(
     50       std::string(kTestDevicePath),
     51       std::string(),
     52       std::string(kTestSystemPath),
     53       std::string(kTestFilePath),
     54       std::string(),
     55       std::string(kTestDriveLabel),
     56       std::string(kTestParentPath),
     57       FLASH,
     58       4294967295U,
     59       false,
     60       false,
     61       true,
     62       false));
     63 
     64   disks_.clear();
     65   disks_.insert(std::pair<std::string, MountLibrary::Disk*>(
     66       std::string(kTestDevicePath), disk1.get()));
     67 
     68   // Device Added
     69   chromeos::MountLibraryEventType evt;
     70   evt = chromeos::MOUNT_DEVICE_ADDED;
     71   UpdateDeviceChanged(evt, kTestSystemPath);
     72 
     73   // Disk Added
     74   evt = chromeos::MOUNT_DISK_ADDED;
     75   UpdateDiskChanged(evt, disk1.get());
     76 
     77   // Disk Changed
     78   scoped_ptr<MountLibrary::Disk> disk2(new MountLibrary::Disk(
     79       std::string(kTestDevicePath),
     80       std::string(kTestMountPath),
     81       std::string(kTestSystemPath),
     82       std::string(kTestFilePath),
     83       std::string(kTestDeviceLabel),
     84       std::string(kTestDriveLabel),
     85       std::string(kTestParentPath),
     86       FLASH,
     87       1073741824,
     88       false,
     89       false,
     90       true,
     91       false));
     92   disks_.clear();
     93   disks_.insert(std::pair<std::string, MountLibrary::Disk*>(
     94       std::string(kTestDevicePath), disk2.get()));
     95   evt = chromeos::MOUNT_DISK_CHANGED;
     96   UpdateDiskChanged(evt, disk2.get());
     97 }
     98 
     99 void MockMountLibrary::FireDeviceRemoveEvents() {
    100   scoped_ptr<MountLibrary::Disk> disk(new MountLibrary::Disk(
    101       std::string(kTestDevicePath),
    102       std::string(kTestMountPath),
    103       std::string(kTestSystemPath),
    104       std::string(kTestFilePath),
    105       std::string(kTestDeviceLabel),
    106       std::string(kTestDriveLabel),
    107       std::string(kTestParentPath),
    108       FLASH,
    109       1073741824,
    110       false,
    111       false,
    112       true,
    113       false));
    114   disks_.clear();
    115   disks_.insert(std::pair<std::string, MountLibrary::Disk*>(
    116       std::string(kTestDevicePath), disk.get()));
    117   UpdateDiskChanged(chromeos::MOUNT_DISK_REMOVED, disk.get());
    118 }
    119 
    120 void MockMountLibrary::UpdateDiskChanged(MountLibraryEventType evt,
    121                                          const MountLibrary::Disk* disk) {
    122   // Make sure we run on UI thread.
    123   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
    124 
    125   FOR_EACH_OBSERVER(Observer, observers_, DiskChanged(evt, disk));
    126 }
    127 
    128 
    129 void MockMountLibrary::UpdateDeviceChanged(MountLibraryEventType evt,
    130                                            const std::string& path) {
    131   // Make sure we run on UI thread.
    132   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
    133 
    134   FOR_EACH_OBSERVER(Observer, observers_, DeviceChanged(evt, path));
    135 }
    136 
    137 }  // namespace chromeos
    138