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
3 // found in the LICENSE file.
5 #include "components/webusb/webusb_detector.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "components/webusb/webusb_browser_client.h"
9 #include "device/core/device_client.h"
10 #include "device/usb/usb_device.h"
11 #include "device/usb/usb_ids.h"
15 WebUsbDetector::WebUsbDetector(WebUsbBrowserClient
* webusb_browser_client
)
16 : webusb_browser_client_(webusb_browser_client
), observer_(this) {
20 WebUsbDetector::~WebUsbDetector() {}
22 void WebUsbDetector::Initialize() {
23 if (!webusb_browser_client_
) {
27 device::UsbService
* usb_service
=
28 device::DeviceClient::Get()->GetUsbService();
32 observer_
.Add(usb_service
);
35 void WebUsbDetector::OnDeviceAdded(scoped_refptr
<device::UsbDevice
> device
) {
36 const base::string16
& product_name
= device
->product_string();
37 if (product_name
.empty()) {
41 const GURL
& landing_page
= device
->webusb_landing_page();
42 if (!landing_page
.is_valid()) {
46 std::string notification_id
= device
->guid();
48 webusb_browser_client_
->OnDeviceAdded(product_name
, landing_page
,
52 void WebUsbDetector::OnDeviceRemoved(scoped_refptr
<device::UsbDevice
> device
) {
53 std::string notification_id
= device
->guid();
54 webusb_browser_client_
->OnDeviceRemoved(notification_id
);