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

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: Rebased. 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
« no previous file with comments | « device/usb/mojo/device_impl.cc ('k') | device/usb/mojo/mock_permission_provider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 MaybeRunDeviceChangesCallback(); 69 MaybeRunDeviceChangesCallback();
70 } 70 }
71 71
72 void DeviceManagerImpl::GetDevice( 72 void DeviceManagerImpl::GetDevice(
73 const mojo::String& guid, 73 const mojo::String& guid,
74 mojo::InterfaceRequest<Device> device_request) { 74 mojo::InterfaceRequest<Device> device_request) {
75 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid); 75 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid);
76 if (!device) 76 if (!device)
77 return; 77 return;
78 78
79 DeviceInfoPtr device_info = DeviceInfo::From(*device);
80 if (permission_provider_ && 79 if (permission_provider_ &&
81 permission_provider_->HasDevicePermission(*device_info)) { 80 permission_provider_->HasDevicePermission(device)) {
82 new DeviceImpl(device, std::move(device_info), permission_provider_, 81 new DeviceImpl(device, DeviceInfo::From(*device), permission_provider_,
83 std::move(device_request)); 82 std::move(device_request));
84 } 83 }
85 } 84 }
86 85
87 void DeviceManagerImpl::OnGetDevices( 86 void DeviceManagerImpl::OnGetDevices(
88 EnumerationOptionsPtr options, 87 EnumerationOptionsPtr options,
89 const GetDevicesCallback& callback, 88 const GetDevicesCallback& callback,
90 const std::vector<scoped_refptr<UsbDevice>>& devices) { 89 const std::vector<scoped_refptr<UsbDevice>>& devices) {
91 std::vector<UsbDeviceFilter> filters; 90 std::vector<UsbDeviceFilter> filters;
92 if (options) 91 if (options)
93 filters = options->filters.To<std::vector<UsbDeviceFilter>>(); 92 filters = options->filters.To<std::vector<UsbDeviceFilter>>();
94 93
95 mojo::Array<DeviceInfoPtr> device_infos; 94 mojo::Array<DeviceInfoPtr> device_infos;
96 for (const auto& device : devices) { 95 for (const auto& device : devices) {
97 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) { 96 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) {
98 DeviceInfoPtr device_info = DeviceInfo::From(*device);
99 if (permission_provider_ && 97 if (permission_provider_ &&
100 permission_provider_->HasDevicePermission(*device_info)) { 98 permission_provider_->HasDevicePermission(device)) {
101 device_infos.push_back(std::move(device_info)); 99 device_infos.push_back(DeviceInfo::From(*device));
102 } 100 }
103 } 101 }
104 } 102 }
105 103
106 callback.Run(std::move(device_infos)); 104 callback.Run(std::move(device_infos));
107 } 105 }
108 106
109 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) { 107 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) {
110 DeviceInfoPtr device_info = DeviceInfo::From(*device);
111 if (permission_provider_ && 108 if (permission_provider_ &&
112 permission_provider_->HasDevicePermission(*device_info)) { 109 permission_provider_->HasDevicePermission(device)) {
113 devices_added_[device->guid()] = std::move(device_info); 110 devices_added_[device->guid()] = DeviceInfo::From(*device);
114 MaybeRunDeviceChangesCallback(); 111 MaybeRunDeviceChangesCallback();
115 } 112 }
116 } 113 }
117 114
118 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { 115 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) {
119 if (devices_added_.erase(device->guid()) == 0) { 116 if (devices_added_.erase(device->guid()) == 0) {
120 DeviceInfoPtr device_info = DeviceInfo::From(*device);
121 if (permission_provider_ && 117 if (permission_provider_ &&
122 permission_provider_->HasDevicePermission(*device_info)) { 118 permission_provider_->HasDevicePermission(device)) {
123 devices_removed_.push_back(std::move(device_info)); 119 devices_removed_.push_back(DeviceInfo::From(*device));
124 MaybeRunDeviceChangesCallback(); 120 MaybeRunDeviceChangesCallback();
125 } 121 }
126 } 122 }
127 } 123 }
128 124
129 void DeviceManagerImpl::WillDestroyUsbService() { 125 void DeviceManagerImpl::WillDestroyUsbService() {
130 delete this; 126 delete this;
131 } 127 }
132 128
133 void DeviceManagerImpl::MaybeRunDeviceChangesCallback() { 129 void DeviceManagerImpl::MaybeRunDeviceChangesCallback() {
134 if (!device_change_callbacks_.empty() && 130 if (!device_change_callbacks_.empty() &&
135 !(devices_added_.empty() && devices_removed_.empty())) { 131 !(devices_added_.empty() && devices_removed_.empty())) {
136 DeviceChangeNotificationPtr notification = DeviceChangeNotification::New(); 132 DeviceChangeNotificationPtr notification = DeviceChangeNotification::New();
137 notification->devices_added.SetToEmpty(); 133 notification->devices_added.SetToEmpty();
138 notification->devices_removed.SetToEmpty(); 134 notification->devices_removed.SetToEmpty();
139 for (auto& map_entry : devices_added_) 135 for (auto& map_entry : devices_added_)
140 notification->devices_added.push_back(std::move(map_entry.second)); 136 notification->devices_added.push_back(std::move(map_entry.second));
141 devices_added_.clear(); 137 devices_added_.clear();
142 notification->devices_removed.Swap(&devices_removed_); 138 notification->devices_removed.Swap(&devices_removed_);
143 139
144 device_change_callbacks_.front().Run(std::move(notification)); 140 device_change_callbacks_.front().Run(std::move(notification));
145 device_change_callbacks_.pop(); 141 device_change_callbacks_.pop();
146 } 142 }
147 } 143 }
148 144
149 } // namespace usb 145 } // namespace usb
150 } // namespace device 146 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/mojo/device_impl.cc ('k') | device/usb/mojo/mock_permission_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698