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

Side by Side Diff: components/storage_monitor/media_transfer_protocol_device_observer_linux.cc

Issue 287613002: Fill |model_name| and |vendor_name| fields of StorageInfo for MTP devices. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Test for the newly filled members. Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 "components/storage_monitor/media_transfer_protocol_device_observer_lin ux.h" 5 #include "components/storage_monitor/media_transfer_protocol_device_observer_lin ux.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 const std::string data_store_id = 87 const std::string data_store_id =
88 GetStorageIdFromStorageName(storage_info.storage_name()); 88 GetStorageIdFromStorageName(storage_info.storage_name());
89 if (!data_store_id.empty()) 89 if (!data_store_id.empty())
90 device_label += GetFormattedIdString(data_store_id); 90 device_label += GetFormattedIdString(data_store_id);
91 } 91 }
92 } 92 }
93 return base::UTF8ToUTF16(device_label); 93 return base::UTF8ToUTF16(device_label);
94 } 94 }
95 95
96 // Helper function to get the device storage details such as device id, label 96 // Helper function to get the device storage details such as device id, label
97 // and location. On success and fills in |id|, |label| and |location|. 97 // and location. On success and fills in |id|, |label|, |location|,
98 // |vendor_name|, and |product_name|.
98 void GetStorageInfo(const std::string& storage_name, 99 void GetStorageInfo(const std::string& storage_name,
99 device::MediaTransferProtocolManager* mtp_manager, 100 device::MediaTransferProtocolManager* mtp_manager,
100 std::string* id, 101 std::string* id,
101 base::string16* label, 102 base::string16* label,
102 std::string* location) { 103 std::string* location,
104 base::string16* vendor_name,
105 base::string16* product_name) {
103 DCHECK(!storage_name.empty()); 106 DCHECK(!storage_name.empty());
104 const MtpStorageInfo* storage_info = 107 const MtpStorageInfo* storage_info =
105 mtp_manager->GetStorageInfo(storage_name); 108 mtp_manager->GetStorageInfo(storage_name);
106 109
107 if (!storage_info) 110 if (!storage_info)
108 return; 111 return;
109 112
110 *id = GetDeviceIdFromStorageInfo(*storage_info); 113 *id = GetDeviceIdFromStorageInfo(*storage_info);
111 *label = GetDeviceLabelFromStorageInfo(*storage_info); 114 *label = GetDeviceLabelFromStorageInfo(*storage_info);
112 *location = GetDeviceLocationFromStorageName(storage_name); 115 *location = GetDeviceLocationFromStorageName(storage_name);
116 *vendor_name = base::UTF8ToUTF16(storage_info->vendor());
117 *product_name = base::UTF8ToUTF16(storage_info->product());
113 } 118 }
114 119
115 } // namespace 120 } // namespace
116 121
117 MediaTransferProtocolDeviceObserverLinux:: 122 MediaTransferProtocolDeviceObserverLinux::
118 MediaTransferProtocolDeviceObserverLinux( 123 MediaTransferProtocolDeviceObserverLinux(
119 StorageMonitor::Receiver* receiver, 124 StorageMonitor::Receiver* receiver,
120 device::MediaTransferProtocolManager* mtp_manager) 125 device::MediaTransferProtocolManager* mtp_manager)
121 : mtp_manager_(mtp_manager), 126 : mtp_manager_(mtp_manager),
122 get_storage_info_func_(&GetStorageInfo), 127 get_storage_info_func_(&GetStorageInfo),
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 void MediaTransferProtocolDeviceObserverLinux::StorageChanged( 190 void MediaTransferProtocolDeviceObserverLinux::StorageChanged(
186 bool is_attached, 191 bool is_attached,
187 const std::string& storage_name) { 192 const std::string& storage_name) {
188 DCHECK(!storage_name.empty()); 193 DCHECK(!storage_name.empty());
189 194
190 // New storage is attached. 195 // New storage is attached.
191 if (is_attached) { 196 if (is_attached) {
192 std::string device_id; 197 std::string device_id;
193 base::string16 storage_label; 198 base::string16 storage_label;
194 std::string location; 199 std::string location;
200 base::string16 vendor_name;
201 base::string16 product_name;
195 get_storage_info_func_(storage_name, mtp_manager_, 202 get_storage_info_func_(storage_name, mtp_manager_,
196 &device_id, &storage_label, &location); 203 &device_id, &storage_label, &location,
204 &vendor_name, &product_name);
197 205
198 // Keep track of device id and device name to see how often we receive 206 // Keep track of device id and device name to see how often we receive
199 // empty values. 207 // empty values.
200 MediaStorageUtil::RecordDeviceInfoHistogram(false, device_id, 208 MediaStorageUtil::RecordDeviceInfoHistogram(false, device_id,
201 storage_label); 209 storage_label);
202 if (device_id.empty() || storage_label.empty()) 210 if (device_id.empty() || storage_label.empty())
203 return; 211 return;
204 212
205 DCHECK(!ContainsKey(storage_map_, location)); 213 DCHECK(!ContainsKey(storage_map_, location));
206 214
207 StorageInfo storage_info(device_id, location, storage_label, 215 StorageInfo storage_info(device_id, location, storage_label,
208 base::string16(), base::string16(), 0); 216 vendor_name, product_name, 0);
209 storage_map_[location] = storage_info; 217 storage_map_[location] = storage_info;
210 notifications_->ProcessAttach(storage_info); 218 notifications_->ProcessAttach(storage_info);
211 } else { 219 } else {
212 // Existing storage is detached. 220 // Existing storage is detached.
213 StorageLocationToInfoMap::iterator it = 221 StorageLocationToInfoMap::iterator it =
214 storage_map_.find(GetDeviceLocationFromStorageName(storage_name)); 222 storage_map_.find(GetDeviceLocationFromStorageName(storage_name));
215 if (it == storage_map_.end()) 223 if (it == storage_map_.end())
216 return; 224 return;
217 notifications_->ProcessDetach(it->second.device_id()); 225 notifications_->ProcessDetach(it->second.device_id());
218 storage_map_.erase(it); 226 storage_map_.erase(it);
(...skipping 16 matching lines...) Expand all
235 if (it->second.device_id() == device_id) { 243 if (it->second.device_id() == device_id) {
236 *location = it->first; 244 *location = it->first;
237 return true; 245 return true;
238 } 246 }
239 } 247 }
240 248
241 return false; 249 return false;
242 } 250 }
243 251
244 } // namespace storage_monitor 252 } // namespace storage_monitor
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698