Chromium Code Reviews| Index: components/webusb/webusb_detector.cc |
| diff --git a/components/webusb/webusb_detector.cc b/components/webusb/webusb_detector.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..23bcbd8d44aea6ee32daacf13d3946e497000f5f |
| --- /dev/null |
| +++ b/components/webusb/webusb_detector.cc |
| @@ -0,0 +1,61 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "components/webusb/webusb_detector.h" |
| + |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/memory/singleton.h" |
| +#include "components/webusb/webusb_browser_client.h" |
| +#include "device/core/device_client.h" |
| +#include "device/usb/usb_device.h" |
| +#include "device/usb/usb_ids.h" |
| + |
| +namespace webusb { |
| + |
| +WebUsbDetector* WebUsbDetector::GetInstance() { |
| + return Singleton<WebUsbDetector>::get(); |
|
Reilly Grant (use Gerrit)
2015/08/26 22:32:12
Issues I've been trying to resolve recently have c
juncai
2015/08/27 00:54:42
Done.
|
| +} |
| + |
| +WebUsbDetector::WebUsbDetector() : observer_(this) { |
| + Initialize(); |
| +} |
| + |
| +WebUsbDetector::~WebUsbDetector() {} |
| + |
| +void WebUsbDetector::Initialize() { |
| + if (!webusb::WebUsbBrowserClient::Get()) { |
| + return; |
| + } |
| + |
| + device::UsbService* usb_service = |
| + device::DeviceClient::Get()->GetUsbService(); |
| + if (!usb_service) |
| + return; |
| + |
| + observer_.Add(usb_service); |
| +} |
| + |
| +void WebUsbDetector::OnDeviceAdded(scoped_refptr<device::UsbDevice> device) { |
| + const base::string16& product_name = device->product_string(); |
| + if (product_name.empty()) { |
| + return; |
| + } |
| + |
| + const GURL& landing_page = device->webusb_landing_page(); |
| + if (!landing_page.is_valid()) { |
| + return; |
| + } |
| + |
| + std::string notification_id = device->guid(); |
| + |
| + webusb::WebUsbBrowserClient::Get()->OnDeviceAdded(product_name, landing_page, |
| + notification_id); |
| +} |
| + |
| +void WebUsbDetector::OnDeviceRemoved(scoped_refptr<device::UsbDevice> device) { |
| + std::string notification_id = device->guid(); |
| + webusb::WebUsbBrowserClient::Get()->OnDeviceRemoved(notification_id); |
| +} |
| + |
| +} // namespace webusb |