Home | History | Annotate | Download | only in storage_monitor
      1 // Copyright (c) 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 // This file contains a subclass of VolumeMountWatcherWin to expose some
      6 // functionality for testing.
      7 
      8 #ifndef CHROME_BROWSER_STORAGE_MONITOR_TEST_VOLUME_MOUNT_WATCHER_WIN_H_
      9 #define CHROME_BROWSER_STORAGE_MONITOR_TEST_VOLUME_MOUNT_WATCHER_WIN_H_
     10 
     11 #include <string>
     12 #include <vector>
     13 
     14 #include "base/strings/string16.h"
     15 #include "base/synchronization/waitable_event.h"
     16 #include "chrome/browser/storage_monitor/volume_mount_watcher_win.h"
     17 
     18 namespace base {
     19 class FilePath;
     20 }
     21 
     22 namespace chrome {
     23 namespace test {
     24 
     25 class TestVolumeMountWatcherWin : public VolumeMountWatcherWin {
     26  public:
     27   TestVolumeMountWatcherWin();
     28   virtual ~TestVolumeMountWatcherWin();
     29 
     30   static bool GetDeviceRemovable(const base::FilePath& device_path,
     31                                  bool* removable);
     32 
     33   void AddDeviceForTesting(const base::FilePath& device_path,
     34                            const std::string& device_id,
     35                            const base::string16& device_name,
     36                            uint64 total_size_in_bytes);
     37 
     38   void SetAttachedDevicesFake();
     39 
     40   void FlushWorkerPoolForTesting();
     41 
     42   virtual void DeviceCheckComplete(const base::FilePath& device_path);
     43 
     44   const std::vector<base::FilePath>& devices_checked() const {
     45       return devices_checked_;
     46   }
     47 
     48   void BlockDeviceCheckForTesting();
     49 
     50   void ReleaseDeviceCheck();
     51 
     52   // VolumeMountWatcherWin:
     53   virtual GetAttachedDevicesCallbackType
     54       GetAttachedDevicesCallback() const OVERRIDE;
     55   virtual GetDeviceDetailsCallbackType
     56       GetDeviceDetailsCallback() const OVERRIDE;
     57 
     58   // Should be used by unit tests to make sure the worker pool doesn't survive
     59   // into other test runs.
     60   void ShutdownWorkerPool();
     61 
     62  private:
     63   std::vector<base::FilePath> devices_checked_;
     64   scoped_ptr<base::WaitableEvent> device_check_complete_event_;
     65   bool attached_devices_fake_;
     66 
     67   DISALLOW_COPY_AND_ASSIGN(TestVolumeMountWatcherWin);
     68 };
     69 
     70 }  // namespace test
     71 }  // namespace chrome
     72 
     73 #endif  // CHROME_BROWSER_STORAGE_MONITOR_TEST_VOLUME_MOUNT_WATCHER_WIN_H_
     74