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

Side by Side Diff: extensions/browser/api/hid/hid_device_manager.cc

Issue 1902873002: Convert //extensions/browser/api from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
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 "extensions/browser/api/hid/hid_device_manager.h" 5 #include "extensions/browser/api/hid/hid_device_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/lazy_instance.h" 13 #include "base/lazy_instance.h"
14 #include "base/memory/ptr_util.h"
14 #include "device/core/device_client.h" 15 #include "device/core/device_client.h"
15 #include "device/hid/hid_device_filter.h" 16 #include "device/hid/hid_device_filter.h"
16 #include "device/hid/hid_service.h" 17 #include "device/hid/hid_service.h"
17 #include "extensions/browser/api/device_permissions_manager.h" 18 #include "extensions/browser/api/device_permissions_manager.h"
18 #include "extensions/common/permissions/permissions_data.h" 19 #include "extensions/common/permissions/permissions_data.h"
19 #include "extensions/common/permissions/usb_device_permission.h" 20 #include "extensions/common/permissions/usb_device_permission.h"
20 21
21 namespace hid = extensions::api::hid; 22 namespace hid = extensions::api::hid;
22 23
23 using device::HidDeviceFilter; 24 using device::HidDeviceFilter;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 115 }
115 116
116 void HidDeviceManager::GetApiDevices( 117 void HidDeviceManager::GetApiDevices(
117 const Extension* extension, 118 const Extension* extension,
118 const std::vector<HidDeviceFilter>& filters, 119 const std::vector<HidDeviceFilter>& filters,
119 const GetApiDevicesCallback& callback) { 120 const GetApiDevicesCallback& callback) {
120 DCHECK(thread_checker_.CalledOnValidThread()); 121 DCHECK(thread_checker_.CalledOnValidThread());
121 LazyInitialize(); 122 LazyInitialize();
122 123
123 if (enumeration_ready_) { 124 if (enumeration_ready_) {
124 scoped_ptr<base::ListValue> devices = 125 std::unique_ptr<base::ListValue> devices =
125 CreateApiDeviceList(extension, filters); 126 CreateApiDeviceList(extension, filters);
126 base::MessageLoop::current()->PostTask( 127 base::MessageLoop::current()->PostTask(
127 FROM_HERE, base::Bind(callback, base::Passed(&devices))); 128 FROM_HERE, base::Bind(callback, base::Passed(&devices)));
128 } else { 129 } else {
129 pending_enumerations_.push_back( 130 pending_enumerations_.push_back(base::WrapUnique(
130 make_scoped_ptr(new GetApiDevicesParams(extension, filters, callback))); 131 new GetApiDevicesParams(extension, filters, callback)));
131 } 132 }
132 } 133 }
133 134
134 scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevicesFromList( 135 std::unique_ptr<base::ListValue> HidDeviceManager::GetApiDevicesFromList(
135 const std::vector<scoped_refptr<HidDeviceInfo>>& devices) { 136 const std::vector<scoped_refptr<HidDeviceInfo>>& devices) {
136 DCHECK(thread_checker_.CalledOnValidThread()); 137 DCHECK(thread_checker_.CalledOnValidThread());
137 scoped_ptr<base::ListValue> device_list(new base::ListValue()); 138 std::unique_ptr<base::ListValue> device_list(new base::ListValue());
138 for (const auto& device : devices) { 139 for (const auto& device : devices) {
139 const auto device_entry = resource_ids_.find(device->device_id()); 140 const auto device_entry = resource_ids_.find(device->device_id());
140 DCHECK(device_entry != resource_ids_.end()); 141 DCHECK(device_entry != resource_ids_.end());
141 142
142 hid::HidDeviceInfo device_info; 143 hid::HidDeviceInfo device_info;
143 device_info.device_id = device_entry->second; 144 device_info.device_id = device_entry->second;
144 PopulateHidDeviceInfo(&device_info, device); 145 PopulateHidDeviceInfo(&device_info, device);
145 device_list->Append(device_info.ToValue().release()); 146 device_list->Append(device_info.ToValue().release());
146 } 147 }
147 return device_list; 148 return device_list;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 resource_ids_[device_info->device_id()] = new_id; 218 resource_ids_[device_info->device_id()] = new_id;
218 device_ids_[new_id] = device_info->device_id(); 219 device_ids_[new_id] = device_info->device_id();
219 220
220 // Don't generate events during the initial enumeration. 221 // Don't generate events during the initial enumeration.
221 if (enumeration_ready_ && event_router_) { 222 if (enumeration_ready_ && event_router_) {
222 api::hid::HidDeviceInfo api_device_info; 223 api::hid::HidDeviceInfo api_device_info;
223 api_device_info.device_id = new_id; 224 api_device_info.device_id = new_id;
224 PopulateHidDeviceInfo(&api_device_info, device_info); 225 PopulateHidDeviceInfo(&api_device_info, device_info);
225 226
226 if (api_device_info.collections.size() > 0) { 227 if (api_device_info.collections.size() > 0) {
227 scoped_ptr<base::ListValue> args( 228 std::unique_ptr<base::ListValue> args(
228 hid::OnDeviceAdded::Create(api_device_info)); 229 hid::OnDeviceAdded::Create(api_device_info));
229 DispatchEvent(events::HID_ON_DEVICE_ADDED, hid::OnDeviceAdded::kEventName, 230 DispatchEvent(events::HID_ON_DEVICE_ADDED, hid::OnDeviceAdded::kEventName,
230 std::move(args), device_info); 231 std::move(args), device_info);
231 } 232 }
232 } 233 }
233 } 234 }
234 235
235 void HidDeviceManager::OnDeviceRemoved( 236 void HidDeviceManager::OnDeviceRemoved(
236 scoped_refptr<HidDeviceInfo> device_info) { 237 scoped_refptr<HidDeviceInfo> device_info) {
237 DCHECK(thread_checker_.CalledOnValidThread()); 238 DCHECK(thread_checker_.CalledOnValidThread());
238 const auto& resource_entry = resource_ids_.find(device_info->device_id()); 239 const auto& resource_entry = resource_ids_.find(device_info->device_id());
239 DCHECK(resource_entry != resource_ids_.end()); 240 DCHECK(resource_entry != resource_ids_.end());
240 int resource_id = resource_entry->second; 241 int resource_id = resource_entry->second;
241 const auto& device_entry = device_ids_.find(resource_id); 242 const auto& device_entry = device_ids_.find(resource_id);
242 DCHECK(device_entry != device_ids_.end()); 243 DCHECK(device_entry != device_ids_.end());
243 resource_ids_.erase(resource_entry); 244 resource_ids_.erase(resource_entry);
244 device_ids_.erase(device_entry); 245 device_ids_.erase(device_entry);
245 246
246 if (event_router_) { 247 if (event_router_) {
247 DCHECK(enumeration_ready_); 248 DCHECK(enumeration_ready_);
248 scoped_ptr<base::ListValue> args(hid::OnDeviceRemoved::Create(resource_id)); 249 std::unique_ptr<base::ListValue> args(
250 hid::OnDeviceRemoved::Create(resource_id));
249 DispatchEvent(events::HID_ON_DEVICE_REMOVED, 251 DispatchEvent(events::HID_ON_DEVICE_REMOVED,
250 hid::OnDeviceRemoved::kEventName, std::move(args), 252 hid::OnDeviceRemoved::kEventName, std::move(args),
251 device_info); 253 device_info);
252 } 254 }
253 } 255 }
254 256
255 void HidDeviceManager::LazyInitialize() { 257 void HidDeviceManager::LazyInitialize() {
256 DCHECK(thread_checker_.CalledOnValidThread()); 258 DCHECK(thread_checker_.CalledOnValidThread());
257 259
258 if (initialized_) { 260 if (initialized_) {
259 return; 261 return;
260 } 262 }
261 263
262 HidService* hid_service = device::DeviceClient::Get()->GetHidService(); 264 HidService* hid_service = device::DeviceClient::Get()->GetHidService();
263 DCHECK(hid_service); 265 DCHECK(hid_service);
264 hid_service->GetDevices(base::Bind(&HidDeviceManager::OnEnumerationComplete, 266 hid_service->GetDevices(base::Bind(&HidDeviceManager::OnEnumerationComplete,
265 weak_factory_.GetWeakPtr())); 267 weak_factory_.GetWeakPtr()));
266 268
267 hid_service_observer_.Add(hid_service); 269 hid_service_observer_.Add(hid_service);
268 initialized_ = true; 270 initialized_ = true;
269 } 271 }
270 272
271 scoped_ptr<base::ListValue> HidDeviceManager::CreateApiDeviceList( 273 std::unique_ptr<base::ListValue> HidDeviceManager::CreateApiDeviceList(
272 const Extension* extension, 274 const Extension* extension,
273 const std::vector<HidDeviceFilter>& filters) { 275 const std::vector<HidDeviceFilter>& filters) {
274 HidService* hid_service = device::DeviceClient::Get()->GetHidService(); 276 HidService* hid_service = device::DeviceClient::Get()->GetHidService();
275 DCHECK(hid_service); 277 DCHECK(hid_service);
276 278
277 scoped_ptr<base::ListValue> api_devices(new base::ListValue()); 279 std::unique_ptr<base::ListValue> api_devices(new base::ListValue());
278 for (const ResourceIdToDeviceIdMap::value_type& map_entry : device_ids_) { 280 for (const ResourceIdToDeviceIdMap::value_type& map_entry : device_ids_) {
279 int resource_id = map_entry.first; 281 int resource_id = map_entry.first;
280 const HidDeviceId& device_id = map_entry.second; 282 const HidDeviceId& device_id = map_entry.second;
281 283
282 scoped_refptr<HidDeviceInfo> device_info = 284 scoped_refptr<HidDeviceInfo> device_info =
283 hid_service->GetDeviceInfo(device_id); 285 hid_service->GetDeviceInfo(device_id);
284 if (!device_info) { 286 if (!device_info) {
285 continue; 287 continue;
286 } 288 }
287 289
(...skipping 22 matching lines...) Expand all
310 void HidDeviceManager::OnEnumerationComplete( 312 void HidDeviceManager::OnEnumerationComplete(
311 const std::vector<scoped_refptr<HidDeviceInfo>>& devices) { 313 const std::vector<scoped_refptr<HidDeviceInfo>>& devices) {
312 DCHECK(resource_ids_.empty()); 314 DCHECK(resource_ids_.empty());
313 DCHECK(device_ids_.empty()); 315 DCHECK(device_ids_.empty());
314 for (const scoped_refptr<HidDeviceInfo>& device_info : devices) { 316 for (const scoped_refptr<HidDeviceInfo>& device_info : devices) {
315 OnDeviceAdded(device_info); 317 OnDeviceAdded(device_info);
316 } 318 }
317 enumeration_ready_ = true; 319 enumeration_ready_ = true;
318 320
319 for (const auto& params : pending_enumerations_) { 321 for (const auto& params : pending_enumerations_) {
320 scoped_ptr<base::ListValue> devices = 322 std::unique_ptr<base::ListValue> devices =
321 CreateApiDeviceList(params->extension, params->filters); 323 CreateApiDeviceList(params->extension, params->filters);
322 params->callback.Run(std::move(devices)); 324 params->callback.Run(std::move(devices));
323 } 325 }
324 pending_enumerations_.clear(); 326 pending_enumerations_.clear();
325 } 327 }
326 328
327 void HidDeviceManager::DispatchEvent(events::HistogramValue histogram_value, 329 void HidDeviceManager::DispatchEvent(
328 const std::string& event_name, 330 events::HistogramValue histogram_value,
329 scoped_ptr<base::ListValue> event_args, 331 const std::string& event_name,
330 scoped_refptr<HidDeviceInfo> device_info) { 332 std::unique_ptr<base::ListValue> event_args,
331 scoped_ptr<Event> event( 333 scoped_refptr<HidDeviceInfo> device_info) {
334 std::unique_ptr<Event> event(
332 new Event(histogram_value, event_name, std::move(event_args))); 335 new Event(histogram_value, event_name, std::move(event_args)));
333 event->will_dispatch_callback = base::Bind( 336 event->will_dispatch_callback = base::Bind(
334 &WillDispatchDeviceEvent, weak_factory_.GetWeakPtr(), device_info); 337 &WillDispatchDeviceEvent, weak_factory_.GetWeakPtr(), device_info);
335 event_router_->BroadcastEvent(std::move(event)); 338 event_router_->BroadcastEvent(std::move(event));
336 } 339 }
337 340
338 } // namespace extensions 341 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/hid/hid_device_manager.h ('k') | extensions/browser/api/idle/idle_api_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698