Home | History | Annotate | Download | only in storage_monitor
      1 // Copyright 2014 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 PortableDeviceWatcherWin to expose some
      6 // functionality for testing.
      7 
      8 #ifndef COMPONENTS_STORAGE_MONITOR_TEST_PORTABLE_DEVICE_WATCHER_WIN_H_
      9 #define COMPONENTS_STORAGE_MONITOR_TEST_PORTABLE_DEVICE_WATCHER_WIN_H_
     10 
     11 #include <string>
     12 
     13 #include "base/strings/string16.h"
     14 #include "components/storage_monitor/portable_device_watcher_win.h"
     15 
     16 namespace storage_monitor {
     17 
     18 class TestPortableDeviceWatcherWin : public PortableDeviceWatcherWin {
     19  public:
     20   // MTP device PnP identifiers.
     21   static const base::char16 kMTPDeviceWithMultipleStorages[];
     22   static const base::char16 kMTPDeviceWithInvalidInfo[];
     23   static const base::char16 kMTPDeviceWithValidInfo[];
     24 
     25   // MTP device storage unique identifier.
     26   static const char kStorageUniqueIdA[];
     27 
     28   TestPortableDeviceWatcherWin();
     29   virtual ~TestPortableDeviceWatcherWin();
     30 
     31   // Returns the persistent storage unique id of the device specified by the
     32   // |pnp_device_id|. |storage_object_id| specifies the string ID that uniquely
     33   // identifies the object on the device.
     34   static std::string GetMTPStorageUniqueId(
     35       const base::string16& pnp_device_id,
     36       const base::string16& storage_object_id);
     37 
     38   // Returns a list of storage object identifiers of the media transfer protocol
     39   // (MTP) device given a |pnp_device_id|.
     40   static PortableDeviceWatcherWin::StorageObjectIDs GetMTPStorageObjectIds(
     41       const base::string16& pnp_device_id);
     42 
     43   // Gets the media transfer protocol (MTP) device storage details given a
     44   // |pnp_device_id| and |storage_object_id|.
     45   static void GetMTPStorageDetails(const base::string16& pnp_device_id,
     46                                    const base::string16& storage_object_id,
     47                                    base::string16* device_location,
     48                                    std::string* unique_id,
     49                                    base::string16* name);
     50 
     51   // Returns a list of device storage details for the given device specified by
     52   // |pnp_device_id|.
     53   static PortableDeviceWatcherWin::StorageObjects GetDeviceStorageObjects(
     54       const base::string16& pnp_device_id);
     55 
     56   // Used by MediaFileSystemRegistry unit test.
     57   void set_use_dummy_mtp_storage_info(bool use_dummy_info) {
     58     use_dummy_mtp_storage_info_ = use_dummy_info;
     59   }
     60 
     61  private:
     62   // PortableDeviceWatcherWin:
     63   virtual void EnumerateAttachedDevices() OVERRIDE;
     64   virtual void HandleDeviceAttachEvent(
     65       const base::string16& pnp_device_id) OVERRIDE;
     66   virtual bool GetMTPStorageInfoFromDeviceId(
     67       const std::string& storage_device_id,
     68       base::string16* device_location,
     69       base::string16* storage_object_id) const OVERRIDE;
     70 
     71   // Set to true to get dummy storage details from
     72   // GetMTPStorageInfoFromDeviceId().
     73   bool use_dummy_mtp_storage_info_;
     74 
     75   DISALLOW_COPY_AND_ASSIGN(TestPortableDeviceWatcherWin);
     76 };
     77 
     78 }  // namespace storage_monitor
     79 
     80 #endif  // COMPONENTS_STORAGE_MONITOR_TEST_PORTABLE_DEVICE_WATCHER_WIN_H_
     81