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

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

Issue 1854483002: Remove WebUSB descriptor data from device.mojom. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@use_interface_associations
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 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/usb/mojo/device_manager_impl.h" 5 #include "device/usb/mojo/device_manager_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 MaybeRunDeviceChangesCallback(); 68 MaybeRunDeviceChangesCallback();
69 } 69 }
70 70
71 void DeviceManagerImpl::GetDevice( 71 void DeviceManagerImpl::GetDevice(
72 const mojo::String& guid, 72 const mojo::String& guid,
73 mojo::InterfaceRequest<Device> device_request) { 73 mojo::InterfaceRequest<Device> device_request) {
74 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid); 74 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid);
75 if (!device) 75 if (!device)
76 return; 76 return;
77 77
78 DeviceInfoPtr device_info = DeviceInfo::From(*device);
79 if (permission_provider_ && 78 if (permission_provider_ &&
80 permission_provider_->HasDevicePermission(*device_info)) { 79 permission_provider_->HasDevicePermission(device)) {
81 new DeviceImpl(device, std::move(device_info), permission_provider_, 80 new DeviceImpl(device, DeviceInfo::From(*device), permission_provider_,
82 std::move(device_request)); 81 std::move(device_request));
83 } 82 }
84 } 83 }
85 84
86 void DeviceManagerImpl::OnGetDevices( 85 void DeviceManagerImpl::OnGetDevices(
87 EnumerationOptionsPtr options, 86 EnumerationOptionsPtr options,
88 const GetDevicesCallback& callback, 87 const GetDevicesCallback& callback,
89 const std::vector<scoped_refptr<UsbDevice>>& devices) { 88 const std::vector<scoped_refptr<UsbDevice>>& devices) {
90 std::vector<UsbDeviceFilter> filters; 89 std::vector<UsbDeviceFilter> filters;
91 if (options) 90 if (options)
92 filters = options->filters.To<std::vector<UsbDeviceFilter>>(); 91 filters = options->filters.To<std::vector<UsbDeviceFilter>>();
93 92
94 mojo::Array<DeviceInfoPtr> device_infos; 93 mojo::Array<DeviceInfoPtr> device_infos;
95 for (const auto& device : devices) { 94 for (const auto& device : devices) {
96 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) { 95 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) {
97 DeviceInfoPtr device_info = DeviceInfo::From(*device);
98 if (permission_provider_ && 96 if (permission_provider_ &&
99 permission_provider_->HasDevicePermission(*device_info)) { 97 permission_provider_->HasDevicePermission(device)) {
100 device_infos.push_back(std::move(device_info)); 98 device_infos.push_back(DeviceInfo::From(*device));
101 } 99 }
102 } 100 }
103 } 101 }
104 102
105 callback.Run(std::move(device_infos)); 103 callback.Run(std::move(device_infos));
106 } 104 }
107 105
108 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) { 106 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) {
109 DeviceInfoPtr device_info = DeviceInfo::From(*device);
110 if (permission_provider_ && 107 if (permission_provider_ &&
111 permission_provider_->HasDevicePermission(*device_info)) { 108 permission_provider_->HasDevicePermission(device)) {
112 devices_added_[device->guid()] = std::move(device_info); 109 devices_added_[device->guid()] = DeviceInfo::From(*device);
113 MaybeRunDeviceChangesCallback(); 110 MaybeRunDeviceChangesCallback();
114 } 111 }
115 } 112 }
116 113
117 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { 114 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) {
118 if (devices_added_.erase(device->guid()) == 0) { 115 if (devices_added_.erase(device->guid()) == 0) {
119 DeviceInfoPtr device_info = DeviceInfo::From(*device);
120 if (permission_provider_ && 116 if (permission_provider_ &&
121 permission_provider_->HasDevicePermission(*device_info)) { 117 permission_provider_->HasDevicePermission(device)) {
122 devices_removed_.push_back(std::move(device_info)); 118 devices_removed_.push_back(DeviceInfo::From(*device));
123 MaybeRunDeviceChangesCallback(); 119 MaybeRunDeviceChangesCallback();
124 } 120 }
125 } 121 }
126 } 122 }
127 123
128 void DeviceManagerImpl::WillDestroyUsbService() { 124 void DeviceManagerImpl::WillDestroyUsbService() {
129 delete this; 125 delete this;
130 } 126 }
131 127
132 void DeviceManagerImpl::MaybeRunDeviceChangesCallback() { 128 void DeviceManagerImpl::MaybeRunDeviceChangesCallback() {
133 if (!device_change_callbacks_.empty() && 129 if (!device_change_callbacks_.empty() &&
134 !(devices_added_.empty() && devices_removed_.empty())) { 130 !(devices_added_.empty() && devices_removed_.empty())) {
135 DeviceChangeNotificationPtr notification = DeviceChangeNotification::New(); 131 DeviceChangeNotificationPtr notification = DeviceChangeNotification::New();
136 notification->devices_added.SetToEmpty(); 132 notification->devices_added.SetToEmpty();
137 notification->devices_removed.SetToEmpty(); 133 notification->devices_removed.SetToEmpty();
138 for (auto& map_entry : devices_added_) 134 for (auto& map_entry : devices_added_)
139 notification->devices_added.push_back(std::move(map_entry.second)); 135 notification->devices_added.push_back(std::move(map_entry.second));
140 devices_added_.clear(); 136 devices_added_.clear();
141 notification->devices_removed.Swap(&devices_removed_); 137 notification->devices_removed.Swap(&devices_removed_);
142 138
143 device_change_callbacks_.front().Run(std::move(notification)); 139 device_change_callbacks_.front().Run(std::move(notification));
144 device_change_callbacks_.pop(); 140 device_change_callbacks_.pop();
145 } 141 }
146 } 142 }
147 143
148 } // namespace usb 144 } // namespace usb
149 } // namespace device 145 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698