Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6737)

Unified Diff: chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.cc

Issue 294163008: Adds USB writing for OS X. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@list-devices
Patch Set: Creates a location for code shared between browser and utility process. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.cc
diff --git a/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.cc b/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.cc
index c59c6b4d82e52519e237e6cab3088792af0ed424..4df7c5fa5181cb6244c5ed268be7d2c6959435e1 100644
--- a/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.cc
+++ b/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.cc
@@ -4,12 +4,11 @@
#include "chrome/browser/extensions/api/image_writer_private/removable_storage_provider_mac.h"
-#include <IOKit/storage/IOStorageProtocolCharacteristics.h>
-
#include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h"
#include "base/time/time.h"
#include "chrome/browser/extensions/api/image_writer_private/removable_storage_provider.h"
+#include "chrome/common/extensions/image_writer_util_mac.h"
#include "content/public/browser/browser_thread.h"
namespace extensions {
@@ -64,7 +63,7 @@ void RemovableStorageProviderMac::ProcessDisk(
void RemovableStorageProviderMac::AddDisk(
base::ScopedCFTypeRef<CFDictionaryRef> dict) {
- if (DiskIsValidTarget(dict.get())) {
+ if (extensions::image_writer::IsRemovableDevice(dict.get())) {
CFStringRef cf_bsd_name = base::mac::GetValueFromDictionary<CFStringRef>(
dict, kDADiskDescriptionMediaBSDNameKey);
CFStringRef cf_vendor = base::mac::GetValueFromDictionary<CFStringRef>(
@@ -108,61 +107,6 @@ void RemovableStorageProviderMac::DiskAppearedCallback(DADiskRef disk,
}
// static
-bool RemovableStorageProviderMac::DiskIsValidTarget(CFDictionaryRef dict) {
- CFBooleanRef internal = base::mac::GetValueFromDictionary<CFBooleanRef>(
- dict, kDADiskDescriptionDeviceInternalKey);
- CFStringRef protocol = base::mac::GetValueFromDictionary<CFStringRef>(
- dict, kDADiskDescriptionDeviceProtocolKey);
- CFStringRef io_reg_path = base::mac::GetValueFromDictionary<CFStringRef>(
- dict, kDADiskDescriptionDevicePathKey);
- CFBooleanRef ejectable = base::mac::GetValueFromDictionary<CFBooleanRef>(
- dict, kDADiskDescriptionMediaEjectableKey);
- CFBooleanRef removable = base::mac::GetValueFromDictionary<CFBooleanRef>(
- dict, kDADiskDescriptionMediaRemovableKey);
- CFBooleanRef whole = base::mac::GetValueFromDictionary<CFBooleanRef>(
- dict, kDADiskDescriptionMediaWholeKey);
- CFStringRef kind = base::mac::GetValueFromDictionary<CFStringRef>(
- dict, kDADiskDescriptionMediaKindKey);
-
- // A drive is a USB stick iff:
- // - it is not internal
- // - it is attached to the USB bus
- // - it is ejectable (because it will be ejected after written to)
- // - it is removable
- // - it is the whole drive (although the use of
- // kDADiskDescriptionMatchMediaWhole should have ensured this)
- // - it is of type IOMedia (external DVD drives and the like are IOCDMedia
- // or
- // IODVDMedia)
- bool is_usb_stick =
- !CFBooleanGetValue(internal) &&
- CFEqual(protocol, CFSTR(kIOPropertyPhysicalInterconnectTypeUSB)) &&
- CFBooleanGetValue(ejectable) && CFBooleanGetValue(removable) &&
- CFBooleanGetValue(whole) &&
- CFStringCompare(kind, CFSTR("IOMedia"), 0) == kCFCompareEqualTo;
-
- // A drive is an SD card iff:
- // - it is attached to the USB bus
- // - it is ejectable (because it will be ejected after written to)
- // - it is removable
- // - it is the whole drive (although the use of
- // kDADiskDescriptionMatchMediaWhole should have ensured this)
- // - it is of type IOMedia (external DVD drives and the like are IOCDMedia
- // or
- // IODVDMedia)
- // - the IORegistry device path contains "AppleUSBCardReader"
- bool is_sd_card =
- CFEqual(protocol, CFSTR(kIOPropertyPhysicalInterconnectTypeUSB)) &&
- CFBooleanGetValue(ejectable) && CFBooleanGetValue(removable) &&
- CFBooleanGetValue(whole) &&
- CFStringCompare(kind, CFSTR("IOMedia"), 0) == kCFCompareEqualTo &&
- CFStringFind(io_reg_path, CFSTR("AppleUSBCardReader"), 0).location !=
- kCFNotFound;
-
- return is_usb_stick || is_sd_card;
-}
-
-// static
void RemovableStorageProviderMac::ProviderDeleter(
RemovableStorageProviderMac* provider,
const DeviceListReadyCallback& callback,

Powered by Google App Engine
This is Rietveld 408576698