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

Side by Side Diff: device/devices_app/usb/device_manager_impl.cc

Issue 1544323002: Convert Pass()→std::move() in //device (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "device/devices_app/usb/device_manager_impl.h" 5 #include "device/devices_app/usb/device_manager_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/location.h" 11 #include "base/location.h"
11 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
12 #include "base/stl_util.h" 13 #include "base/stl_util.h"
13 #include "device/core/device_client.h" 14 #include "device/core/device_client.h"
14 #include "device/devices_app/usb/device_impl.h" 15 #include "device/devices_app/usb/device_impl.h"
15 #include "device/devices_app/usb/public/interfaces/device.mojom.h" 16 #include "device/devices_app/usb/public/interfaces/device.mojom.h"
16 #include "device/devices_app/usb/type_converters.h" 17 #include "device/devices_app/usb/type_converters.h"
17 #include "device/usb/usb_device.h" 18 #include "device/usb/usb_device.h"
(...skipping 14 matching lines...) Expand all
32 const DeviceMap& devices, 33 const DeviceMap& devices,
33 const DeviceManagerImpl::GetDevicesCallback& callback, 34 const DeviceManagerImpl::GetDevicesCallback& callback,
34 mojo::Array<mojo::String> allowed_guids) { 35 mojo::Array<mojo::String> allowed_guids) {
35 mojo::Array<DeviceInfoPtr> allowed_devices(allowed_guids.size()); 36 mojo::Array<DeviceInfoPtr> allowed_devices(allowed_guids.size());
36 for (size_t i = 0; i < allowed_guids.size(); ++i) { 37 for (size_t i = 0; i < allowed_guids.size(); ++i) {
37 const auto it = devices.find(allowed_guids[i]); 38 const auto it = devices.find(allowed_guids[i]);
38 DCHECK(it != devices.end()); 39 DCHECK(it != devices.end());
39 allowed_devices[i] = DeviceInfo::From(*it->second); 40 allowed_devices[i] = DeviceInfo::From(*it->second);
40 } 41 }
41 42
42 callback.Run(allowed_devices.Pass()); 43 callback.Run(std::move(allowed_devices));
43 } 44 }
44 45
45 } // namespace 46 } // namespace
46 47
47 // static 48 // static
48 void DeviceManagerImpl::Create(PermissionProviderPtr permission_provider, 49 void DeviceManagerImpl::Create(PermissionProviderPtr permission_provider,
49 mojo::InterfaceRequest<DeviceManager> request) { 50 mojo::InterfaceRequest<DeviceManager> request) {
50 // The created object is owned by its binding. 51 // The created object is owned by its binding.
51 new DeviceManagerImpl(permission_provider.Pass(), request.Pass()); 52 new DeviceManagerImpl(std::move(permission_provider), std::move(request));
52 } 53 }
53 54
54 DeviceManagerImpl::DeviceManagerImpl( 55 DeviceManagerImpl::DeviceManagerImpl(
55 PermissionProviderPtr permission_provider, 56 PermissionProviderPtr permission_provider,
56 mojo::InterfaceRequest<DeviceManager> request) 57 mojo::InterfaceRequest<DeviceManager> request)
57 : permission_provider_(permission_provider.Pass()), 58 : permission_provider_(std::move(permission_provider)),
58 observer_(this), 59 observer_(this),
59 binding_(this, request.Pass()), 60 binding_(this, std::move(request)),
60 weak_factory_(this) { 61 weak_factory_(this) {
61 // This object owns itself and will be destroyed if either the message pipe 62 // This object owns itself and will be destroyed if either the message pipe
62 // it is bound to is closed or the PermissionProvider it depends on is 63 // it is bound to is closed or the PermissionProvider it depends on is
63 // unavailable. 64 // unavailable.
64 binding_.set_connection_error_handler([this]() { delete this; }); 65 binding_.set_connection_error_handler([this]() { delete this; });
65 permission_provider_.set_connection_error_handler([this]() { delete this; }); 66 permission_provider_.set_connection_error_handler([this]() { delete this; });
66 67
67 DCHECK(DeviceClient::Get()); 68 DCHECK(DeviceClient::Get());
68 usb_service_ = DeviceClient::Get()->GetUsbService(); 69 usb_service_ = DeviceClient::Get()->GetUsbService();
69 if (usb_service_) 70 if (usb_service_)
70 observer_.Add(usb_service_); 71 observer_.Add(usb_service_);
71 } 72 }
72 73
73 DeviceManagerImpl::~DeviceManagerImpl() { 74 DeviceManagerImpl::~DeviceManagerImpl() {
74 connection_error_handler_.Run(); 75 connection_error_handler_.Run();
75 } 76 }
76 77
77 void DeviceManagerImpl::GetDevices(EnumerationOptionsPtr options, 78 void DeviceManagerImpl::GetDevices(EnumerationOptionsPtr options,
78 const GetDevicesCallback& callback) { 79 const GetDevicesCallback& callback) {
79 if (!usb_service_) { 80 if (!usb_service_) {
80 mojo::Array<DeviceInfoPtr> no_devices; 81 mojo::Array<DeviceInfoPtr> no_devices;
81 callback.Run(no_devices.Pass()); 82 callback.Run(std::move(no_devices));
82 return; 83 return;
83 } 84 }
84 85
85 usb_service_->GetDevices(base::Bind(&DeviceManagerImpl::OnGetDevices, 86 usb_service_->GetDevices(base::Bind(&DeviceManagerImpl::OnGetDevices,
86 weak_factory_.GetWeakPtr(), 87 weak_factory_.GetWeakPtr(),
87 base::Passed(&options), callback)); 88 base::Passed(&options), callback));
88 } 89 }
89 90
90 void DeviceManagerImpl::GetDeviceChanges( 91 void DeviceManagerImpl::GetDeviceChanges(
91 const GetDeviceChangesCallback& callback) { 92 const GetDeviceChangesCallback& callback) {
92 device_change_callbacks_.push(callback); 93 device_change_callbacks_.push(callback);
93 MaybeRunDeviceChangesCallback(); 94 MaybeRunDeviceChangesCallback();
94 } 95 }
95 96
96 void DeviceManagerImpl::GetDevice( 97 void DeviceManagerImpl::GetDevice(
97 const mojo::String& guid, 98 const mojo::String& guid,
98 mojo::InterfaceRequest<Device> device_request) { 99 mojo::InterfaceRequest<Device> device_request) {
99 if (!usb_service_) 100 if (!usb_service_)
100 return; 101 return;
101 102
102 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid); 103 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid);
103 if (!device) 104 if (!device)
104 return; 105 return;
105 106
106 mojo::Array<DeviceInfoPtr> requested_devices(1); 107 mojo::Array<DeviceInfoPtr> requested_devices(1);
107 requested_devices[0] = DeviceInfo::From(*device); 108 requested_devices[0] = DeviceInfo::From(*device);
108 permission_provider_->HasDevicePermission( 109 permission_provider_->HasDevicePermission(
109 requested_devices.Pass(), 110 std::move(requested_devices),
110 base::Bind(&DeviceManagerImpl::OnGetDevicePermissionCheckComplete, 111 base::Bind(&DeviceManagerImpl::OnGetDevicePermissionCheckComplete,
111 base::Unretained(this), device, 112 base::Unretained(this), device,
112 base::Passed(&device_request))); 113 base::Passed(&device_request)));
113 } 114 }
114 115
115 void DeviceManagerImpl::OnGetDevicePermissionCheckComplete( 116 void DeviceManagerImpl::OnGetDevicePermissionCheckComplete(
116 scoped_refptr<UsbDevice> device, 117 scoped_refptr<UsbDevice> device,
117 mojo::InterfaceRequest<Device> device_request, 118 mojo::InterfaceRequest<Device> device_request,
118 mojo::Array<mojo::String> allowed_guids) { 119 mojo::Array<mojo::String> allowed_guids) {
119 if (allowed_guids.size() == 0) 120 if (allowed_guids.size() == 0)
120 return; 121 return;
121 122
122 DCHECK(allowed_guids.size() == 1); 123 DCHECK(allowed_guids.size() == 1);
123 PermissionProviderPtr permission_provider; 124 PermissionProviderPtr permission_provider;
124 permission_provider_->Bind(mojo::GetProxy(&permission_provider)); 125 permission_provider_->Bind(mojo::GetProxy(&permission_provider));
125 new DeviceImpl(device, permission_provider.Pass(), device_request.Pass()); 126 new DeviceImpl(device, std::move(permission_provider),
127 std::move(device_request));
126 } 128 }
127 129
128 void DeviceManagerImpl::OnGetDevices(EnumerationOptionsPtr options, 130 void DeviceManagerImpl::OnGetDevices(EnumerationOptionsPtr options,
129 const GetDevicesCallback& callback, 131 const GetDevicesCallback& callback,
130 const DeviceList& devices) { 132 const DeviceList& devices) {
131 std::vector<UsbDeviceFilter> filters; 133 std::vector<UsbDeviceFilter> filters;
132 if (options) 134 if (options)
133 filters = options->filters.To<std::vector<UsbDeviceFilter>>(); 135 filters = options->filters.To<std::vector<UsbDeviceFilter>>();
134 136
135 std::map<std::string, scoped_refptr<UsbDevice>> device_map; 137 std::map<std::string, scoped_refptr<UsbDevice>> device_map;
136 mojo::Array<DeviceInfoPtr> requested_devices(0); 138 mojo::Array<DeviceInfoPtr> requested_devices(0);
137 for (const auto& device : devices) { 139 for (const auto& device : devices) {
138 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) { 140 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) {
139 device_map[device->guid()] = device; 141 device_map[device->guid()] = device;
140 requested_devices.push_back(DeviceInfo::From(*device)); 142 requested_devices.push_back(DeviceInfo::From(*device));
141 } 143 }
142 } 144 }
143 145
144 permission_provider_->HasDevicePermission( 146 permission_provider_->HasDevicePermission(
145 requested_devices.Pass(), 147 std::move(requested_devices),
146 base::Bind(&FilterAndConvertDevicesAndThen, device_map, callback)); 148 base::Bind(&FilterAndConvertDevicesAndThen, device_map, callback));
147 } 149 }
148 150
149 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) { 151 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) {
150 DCHECK(!ContainsKey(devices_removed_, device->guid())); 152 DCHECK(!ContainsKey(devices_removed_, device->guid()));
151 devices_added_[device->guid()] = device; 153 devices_added_[device->guid()] = device;
152 MaybeRunDeviceChangesCallback(); 154 MaybeRunDeviceChangesCallback();
153 } 155 }
154 156
155 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { 157 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) {
(...skipping 19 matching lines...) Expand all
175 { 177 {
176 size_t i = 0; 178 size_t i = 0;
177 for (const auto& map_entry : devices_added) 179 for (const auto& map_entry : devices_added)
178 requested_devices[i++] = DeviceInfo::From(*map_entry.second); 180 requested_devices[i++] = DeviceInfo::From(*map_entry.second);
179 for (const auto& map_entry : devices_removed) 181 for (const auto& map_entry : devices_removed)
180 requested_devices[i++] = DeviceInfo::From(*map_entry.second); 182 requested_devices[i++] = DeviceInfo::From(*map_entry.second);
181 } 183 }
182 184
183 permission_request_pending_ = true; 185 permission_request_pending_ = true;
184 permission_provider_->HasDevicePermission( 186 permission_provider_->HasDevicePermission(
185 requested_devices.Pass(), 187 std::move(requested_devices),
186 base::Bind(&DeviceManagerImpl::OnEnumerationPermissionCheckComplete, 188 base::Bind(&DeviceManagerImpl::OnEnumerationPermissionCheckComplete,
187 base::Unretained(this), devices_added, devices_removed)); 189 base::Unretained(this), devices_added, devices_removed));
188 } 190 }
189 } 191 }
190 192
191 void DeviceManagerImpl::OnEnumerationPermissionCheckComplete( 193 void DeviceManagerImpl::OnEnumerationPermissionCheckComplete(
192 const DeviceMap& devices_added, 194 const DeviceMap& devices_added,
193 const DeviceMap& devices_removed, 195 const DeviceMap& devices_removed,
194 mojo::Array<mojo::String> allowed_guids) { 196 mojo::Array<mojo::String> allowed_guids) {
195 permission_request_pending_ = false; 197 permission_request_pending_ = false;
(...skipping 11 matching lines...) Expand all
207 notification->devices_added.push_back(DeviceInfo::From(*it->second)); 209 notification->devices_added.push_back(DeviceInfo::From(*it->second));
208 } else { 210 } else {
209 it = devices_removed.find(guid); 211 it = devices_removed.find(guid);
210 DCHECK(it != devices_removed.end()); 212 DCHECK(it != devices_removed.end());
211 notification->devices_removed.push_back(DeviceInfo::From(*it->second)); 213 notification->devices_removed.push_back(DeviceInfo::From(*it->second));
212 } 214 }
213 } 215 }
214 216
215 DCHECK(!device_change_callbacks_.empty()); 217 DCHECK(!device_change_callbacks_.empty());
216 const GetDeviceChangesCallback& callback = device_change_callbacks_.front(); 218 const GetDeviceChangesCallback& callback = device_change_callbacks_.front();
217 callback.Run(notification.Pass()); 219 callback.Run(std::move(notification));
218 device_change_callbacks_.pop(); 220 device_change_callbacks_.pop();
219 } 221 }
220 222
221 if (devices_added_.size() > 0 || !devices_removed_.empty()) 223 if (devices_added_.size() > 0 || !devices_removed_.empty())
222 MaybeRunDeviceChangesCallback(); 224 MaybeRunDeviceChangesCallback();
223 } 225 }
224 226
225 } // namespace usb 227 } // namespace usb
226 } // namespace device 228 } // namespace device
OLDNEW
« no previous file with comments | « device/devices_app/usb/device_impl_unittest.cc ('k') | device/devices_app/usb/device_manager_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698