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