Chromium Code Reviews| Index: chrome/browser/extensions/api/image_writer_private/removable_storage_provider_chromeos.cc |
| diff --git a/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_chromeos.cc b/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_chromeos.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..33c34ab1a0930e6f7e8c7f6e3ebfeece9971c747 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_chromeos.cc |
| @@ -0,0 +1,54 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
|
tbarzic
2014/03/22 02:01:02
s/2013/2014
Drew Haven
2014/03/24 22:33:25
Done.
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/extensions/api/image_writer_private/removable_storage_provider.h" |
| +#include "chromeos/disks/disk_mount_manager.h" |
| + |
| +namespace extensions { |
| + |
| +const char kUnknownSDDiskModel[] = "SD Card"; |
| +const char kUnknownUSBDiskModel[] = "USB Drive"; |
| + |
| +using chromeos::disks::DiskMountManager; |
| + |
|
tbarzic
2014/03/22 02:01:02
add // static
Drew Haven
2014/03/24 22:33:25
Done.
|
| +// The Chrome OS implementation takes advantage of the Chrome OS |
| +// DiskMountManager. This does not expose whether the device is a removable or |
| +// fixed disk. In fact, some SD cards will present themselves as fixed disks |
| +// (see http://crbug.com/340761). Thus we just expose all USB and SD drives. |
| +void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) { |
| + scoped_refptr<StorageDeviceList> device_list(new StorageDeviceList()); |
| + |
| + DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance(); |
| + const DiskMountManager::DiskMap& disks = disk_mount_manager->disks(); |
| + |
| + for (DiskMountManager::DiskMap::const_iterator iter = disks.begin(); |
| + iter != disks.end(); |
| + ++iter) { |
| + const DiskMountManager::Disk& disk = *iter->second; |
| + if (disk.is_parent() && !disk.on_boot_device() && disk.has_media() && |
| + (disk.device_type() == chromeos::DEVICE_TYPE_USB || |
| + disk.device_type() == chromeos::DEVICE_TYPE_SD)) { |
| + linked_ptr<api::image_writer_private::RemovableStorageDevice> device( |
| + new api::image_writer_private::RemovableStorageDevice()); |
| + device->capacity = disk.total_size_in_bytes(); |
| + device->storage_unit_id = disk.file_path(); |
| + device->vendor = disk.vendor_name(); |
| + device->model = disk.product_name(); |
| + |
| + if (device->model.empty() && device->vendor.empty()) { |
| + if (disk.device_type() == chromeos::DEVICE_TYPE_USB) { |
| + device->model = kUnknownUSBDiskModel; |
| + } else { |
| + device->model = kUnknownSDDiskModel; |
| + } |
| + } |
| + |
| + device_list->data.push_back(device); |
| + } |
| + } |
| + |
| + callback.Run(device_list, true); |
| +} |
| + |
| +} // namespace extensions |