OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/system_info_storage/storage_info_provide
r.h" | 5 #include "chrome/browser/extensions/api/system_info_storage/storage_info_provide
r.h" |
6 | 6 |
7 #include <CoreFoundation/CoreFoundation.h> | 7 #include <CoreFoundation/CoreFoundation.h> |
8 #include <IOKit/IOBSD.h> | 8 #include <IOKit/IOBSD.h> |
9 #include <IOKit/IOKitLib.h> | 9 #include <IOKit/IOKitLib.h> |
10 #include <IOKit/storage/IOMedia.h> | 10 #include <IOKit/storage/IOMedia.h> |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 &media_iterator); | 98 &media_iterator); |
99 if (retval != KERN_SUCCESS) | 99 if (retval != KERN_SUCCESS) |
100 return; | 100 return; |
101 | 101 |
102 base::mac::ScopedIOObject<io_iterator_t> iterator(media_iterator); | 102 base::mac::ScopedIOObject<io_iterator_t> iterator(media_iterator); |
103 media_iterator = IO_OBJECT_NULL; | 103 media_iterator = IO_OBJECT_NULL; |
104 | 104 |
105 for (base::mac::ScopedIOObject<io_service_t> media(IOIteratorNext(iterator)); | 105 for (base::mac::ScopedIOObject<io_service_t> media(IOIteratorNext(iterator)); |
106 media; | 106 media; |
107 media.reset(IOIteratorNext(iterator))) { | 107 media.reset(IOIteratorNext(iterator))) { |
108 base::mac::ScopedCFTypeRef<CFTypeRef> dev_path_cf( | 108 base::ScopedCFTypeRef<CFTypeRef> dev_path_cf( |
109 IORegistryEntryCreateCFProperty(media, | 109 IORegistryEntryCreateCFProperty( |
110 CFSTR(kIOBSDNameKey), | 110 media, CFSTR(kIOBSDNameKey), kCFAllocatorDefault, 0)); |
111 kCFAllocatorDefault, | |
112 0)); | |
113 | 111 |
114 if (!dev_path_cf) | 112 if (!dev_path_cf) |
115 continue; | 113 continue; |
116 | 114 |
117 std::string dev_path(_PATH_DEV); | 115 std::string dev_path(_PATH_DEV); |
118 dev_path.append( | 116 dev_path.append( |
119 base::SysCFStringRefToUTF8( | 117 base::SysCFStringRefToUTF8( |
120 base::mac::CFCast<CFStringRef>(dev_path_cf))); | 118 base::mac::CFCast<CFStringRef>(dev_path_cf))); |
121 | 119 |
122 base::mac::ScopedCFTypeRef<CFTypeRef> removable_cf( | 120 base::ScopedCFTypeRef<CFTypeRef> removable_cf( |
123 IORegistryEntryCreateCFProperty(media, | 121 IORegistryEntryCreateCFProperty( |
124 CFSTR(kIOMediaEjectableKey), | 122 media, CFSTR(kIOMediaEjectableKey), kCFAllocatorDefault, 0)); |
125 kCFAllocatorDefault, | |
126 0)); | |
127 if (!removable_cf) | 123 if (!removable_cf) |
128 dev_path_to_type_map_[dev_path] = systeminfo::kStorageTypeUnknown; | 124 dev_path_to_type_map_[dev_path] = systeminfo::kStorageTypeUnknown; |
129 else if (CFBooleanGetValue(base::mac::CFCast<CFBooleanRef>(removable_cf))) | 125 else if (CFBooleanGetValue(base::mac::CFCast<CFBooleanRef>(removable_cf))) |
130 dev_path_to_type_map_[dev_path] = systeminfo::kStorageTypeRemovable; | 126 dev_path_to_type_map_[dev_path] = systeminfo::kStorageTypeRemovable; |
131 else | 127 else |
132 dev_path_to_type_map_[dev_path] = systeminfo::kStorageTypeFixed; | 128 dev_path_to_type_map_[dev_path] = systeminfo::kStorageTypeFixed; |
133 } | 129 } |
134 } | 130 } |
135 | 131 |
136 } // namespace | 132 } // namespace |
137 | 133 |
138 // static | 134 // static |
139 StorageInfoProvider* StorageInfoProvider::Get() { | 135 StorageInfoProvider* StorageInfoProvider::Get() { |
140 return StorageInfoProvider::GetInstance<StorageInfoProviderMac>(); | 136 return StorageInfoProvider::GetInstance<StorageInfoProviderMac>(); |
141 } | 137 } |
142 | 138 |
143 } // namespace extensions | 139 } // namespace extensions |
OLD | NEW |