OLD | NEW |
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 <string> | 10 #include <string> |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "device/usb/usb_device.h" | 21 #include "device/usb/usb_device.h" |
22 #include "device/usb/usb_device_filter.h" | 22 #include "device/usb/usb_device_filter.h" |
23 #include "device/usb/usb_service.h" | 23 #include "device/usb/usb_service.h" |
24 | 24 |
25 namespace device { | 25 namespace device { |
26 namespace usb { | 26 namespace usb { |
27 | 27 |
28 // static | 28 // static |
29 void DeviceManagerImpl::Create( | 29 void DeviceManagerImpl::Create( |
30 base::WeakPtr<PermissionProvider> permission_provider, | 30 base::WeakPtr<PermissionProvider> permission_provider, |
31 DeviceManagerRequest request) { | 31 mojom::UsbDeviceManagerRequest request) { |
32 DCHECK(DeviceClient::Get()); | 32 DCHECK(DeviceClient::Get()); |
33 UsbService* service = DeviceClient::Get()->GetUsbService(); | 33 UsbService* service = DeviceClient::Get()->GetUsbService(); |
34 if (!service) | 34 if (!service) |
35 return; | 35 return; |
36 | 36 |
37 auto* device_manager_impl = | 37 auto* device_manager_impl = |
38 new DeviceManagerImpl(std::move(permission_provider), service); | 38 new DeviceManagerImpl(std::move(permission_provider), service); |
39 device_manager_impl->binding_ = mojo::MakeStrongBinding( | 39 device_manager_impl->binding_ = mojo::MakeStrongBinding( |
40 base::WrapUnique(device_manager_impl), std::move(request)); | 40 base::WrapUnique(device_manager_impl), std::move(request)); |
41 } | 41 } |
42 | 42 |
43 DeviceManagerImpl::DeviceManagerImpl( | 43 DeviceManagerImpl::DeviceManagerImpl( |
44 base::WeakPtr<PermissionProvider> permission_provider, | 44 base::WeakPtr<PermissionProvider> permission_provider, |
45 UsbService* usb_service) | 45 UsbService* usb_service) |
46 : permission_provider_(permission_provider), | 46 : permission_provider_(permission_provider), |
47 usb_service_(usb_service), | 47 usb_service_(usb_service), |
48 observer_(this), | 48 observer_(this), |
49 weak_factory_(this) { | 49 weak_factory_(this) { |
50 // This object owns itself and will be destroyed if the message pipe it is | 50 // This object owns itself and will be destroyed if the message pipe it is |
51 // bound to is closed, the message loop is destructed, or the UsbService is | 51 // bound to is closed, the message loop is destructed, or the UsbService is |
52 // shut down. | 52 // shut down. |
53 observer_.Add(usb_service_); | 53 observer_.Add(usb_service_); |
54 } | 54 } |
55 | 55 |
56 DeviceManagerImpl::~DeviceManagerImpl() { | 56 DeviceManagerImpl::~DeviceManagerImpl() { |
57 } | 57 } |
58 | 58 |
59 void DeviceManagerImpl::GetDevices(EnumerationOptionsPtr options, | 59 void DeviceManagerImpl::GetDevices(mojom::UsbEnumerationOptionsPtr options, |
60 const GetDevicesCallback& callback) { | 60 const GetDevicesCallback& callback) { |
61 usb_service_->GetDevices(base::Bind(&DeviceManagerImpl::OnGetDevices, | 61 usb_service_->GetDevices(base::Bind(&DeviceManagerImpl::OnGetDevices, |
62 weak_factory_.GetWeakPtr(), | 62 weak_factory_.GetWeakPtr(), |
63 base::Passed(&options), callback)); | 63 base::Passed(&options), callback)); |
64 } | 64 } |
65 | 65 |
66 void DeviceManagerImpl::GetDevice(const std::string& guid, | 66 void DeviceManagerImpl::GetDevice(const std::string& guid, |
67 DeviceRequest device_request) { | 67 mojom::UsbDeviceRequest device_request) { |
68 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid); | 68 scoped_refptr<UsbDevice> device = usb_service_->GetDevice(guid); |
69 if (!device) | 69 if (!device) |
70 return; | 70 return; |
71 | 71 |
72 if (permission_provider_ && | 72 if (permission_provider_ && |
73 permission_provider_->HasDevicePermission(device)) { | 73 permission_provider_->HasDevicePermission(device)) { |
74 DeviceImpl::Create(std::move(device), permission_provider_, | 74 DeviceImpl::Create(std::move(device), permission_provider_, |
75 std::move(device_request)); | 75 std::move(device_request)); |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 void DeviceManagerImpl::SetClient(DeviceManagerClientPtr client) { | 79 void DeviceManagerImpl::SetClient(mojom::UsbDeviceManagerClientPtr client) { |
80 client_ = std::move(client); | 80 client_ = std::move(client); |
81 } | 81 } |
82 | 82 |
83 void DeviceManagerImpl::OnGetDevices( | 83 void DeviceManagerImpl::OnGetDevices( |
84 EnumerationOptionsPtr options, | 84 mojom::UsbEnumerationOptionsPtr options, |
85 const GetDevicesCallback& callback, | 85 const GetDevicesCallback& callback, |
86 const std::vector<scoped_refptr<UsbDevice>>& devices) { | 86 const std::vector<scoped_refptr<UsbDevice>>& devices) { |
87 std::vector<UsbDeviceFilter> filters; | 87 std::vector<UsbDeviceFilter> filters; |
88 if (options && options->filters) | 88 if (options && options->filters) |
89 filters.swap(*options->filters); | 89 filters.swap(*options->filters); |
90 | 90 |
91 std::vector<DeviceInfoPtr> device_infos; | 91 std::vector<mojom::UsbDeviceInfoPtr> device_infos; |
92 for (const auto& device : devices) { | 92 for (const auto& device : devices) { |
93 if (UsbDeviceFilter::MatchesAny(*device, filters)) { | 93 if (UsbDeviceFilter::MatchesAny(*device, filters)) { |
94 if (permission_provider_ && | 94 if (permission_provider_ && |
95 permission_provider_->HasDevicePermission(device)) { | 95 permission_provider_->HasDevicePermission(device)) { |
96 device_infos.push_back(DeviceInfo::From(*device)); | 96 device_infos.push_back(mojom::UsbDeviceInfo::From(*device)); |
97 } | 97 } |
98 } | 98 } |
99 } | 99 } |
100 | 100 |
101 callback.Run(std::move(device_infos)); | 101 callback.Run(std::move(device_infos)); |
102 } | 102 } |
103 | 103 |
104 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) { | 104 void DeviceManagerImpl::OnDeviceAdded(scoped_refptr<UsbDevice> device) { |
105 if (client_ && permission_provider_ && | 105 if (client_ && permission_provider_ && |
106 permission_provider_->HasDevicePermission(device)) | 106 permission_provider_->HasDevicePermission(device)) |
107 client_->OnDeviceAdded(DeviceInfo::From(*device)); | 107 client_->OnDeviceAdded(mojom::UsbDeviceInfo::From(*device)); |
108 } | 108 } |
109 | 109 |
110 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { | 110 void DeviceManagerImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { |
111 if (client_ && permission_provider_ && | 111 if (client_ && permission_provider_ && |
112 permission_provider_->HasDevicePermission(device)) | 112 permission_provider_->HasDevicePermission(device)) |
113 client_->OnDeviceRemoved(DeviceInfo::From(*device)); | 113 client_->OnDeviceRemoved(mojom::UsbDeviceInfo::From(*device)); |
114 } | 114 } |
115 | 115 |
116 void DeviceManagerImpl::WillDestroyUsbService() { | 116 void DeviceManagerImpl::WillDestroyUsbService() { |
117 binding_->Close(); | 117 binding_->Close(); |
118 } | 118 } |
119 | 119 |
120 } // namespace usb | 120 } // namespace usb |
121 } // namespace device | 121 } // namespace device |
OLD | NEW |