| 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 "chrome/browser/usb/web_usb_detector.h" | 5 #include "chrome/browser/usb/web_usb_detector.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/feature_list.h" |
| 9 #include "base/macros.h" | 10 #include "base/macros.h" |
| 10 #include "base/metrics/histogram_macros.h" | 11 #include "base/metrics/histogram_macros.h" |
| 11 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 12 #include "chrome/browser/net/referrer.h" | 13 #include "chrome/browser/net/referrer.h" |
| 13 #include "chrome/browser/profiles/profile_manager.h" | 14 #include "chrome/browser/profiles/profile_manager.h" |
| 14 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
| 15 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" | 16 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
| 16 #include "chrome/grit/generated_resources.h" | 17 #include "chrome/grit/generated_resources.h" |
| 17 #include "chrome/grit/theme_resources.h" | 18 #include "chrome/grit/theme_resources.h" |
| 18 #include "content/public/common/origin_util.h" | 19 #include "content/public/common/origin_util.h" |
| 19 #include "device/base/device_client.h" | 20 #include "device/base/device_client.h" |
| 21 #include "device/base/features.h" |
| 20 #include "device/usb/usb_device.h" | 22 #include "device/usb/usb_device.h" |
| 21 #include "device/usb/usb_ids.h" | 23 #include "device/usb/usb_ids.h" |
| 22 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
| 23 #include "ui/base/page_transition_types.h" | 25 #include "ui/base/page_transition_types.h" |
| 24 #include "ui/base/resource/resource_bundle.h" | 26 #include "ui/base/resource/resource_bundle.h" |
| 25 #include "ui/base/window_open_disposition.h" | 27 #include "ui/base/window_open_disposition.h" |
| 26 #include "ui/gfx/image/image.h" | 28 #include "ui/gfx/image/image.h" |
| 27 #include "ui/message_center/message_center.h" | 29 #include "ui/message_center/message_center.h" |
| 28 #include "ui/message_center/notification.h" | 30 #include "ui/message_center/notification.h" |
| 29 #include "ui/message_center/notification_delegate.h" | 31 #include "ui/message_center/notification_delegate.h" |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 DISALLOW_COPY_AND_ASSIGN(WebUsbNotificationDelegate); | 113 DISALLOW_COPY_AND_ASSIGN(WebUsbNotificationDelegate); |
| 112 }; | 114 }; |
| 113 | 115 |
| 114 } // namespace | 116 } // namespace |
| 115 | 117 |
| 116 WebUsbDetector::WebUsbDetector() : observer_(this) {} | 118 WebUsbDetector::WebUsbDetector() : observer_(this) {} |
| 117 | 119 |
| 118 WebUsbDetector::~WebUsbDetector() {} | 120 WebUsbDetector::~WebUsbDetector() {} |
| 119 | 121 |
| 120 void WebUsbDetector::Initialize() { | 122 void WebUsbDetector::Initialize() { |
| 121 // Disabled on Windows due to jank and hangs caused by enumerating devices. | 123 #if defined(OS_WIN) |
| 122 // https://crbug.com/656702 | 124 // The WebUSB device detector is disabled on Windows due to jank and hangs |
| 123 #if !defined(OS_WIN) | 125 // caused by enumerating devices. The new USB backend is designed to resolve |
| 126 // these issues so enable it for testing. https://crbug.com/656702 |
| 127 if (!base::FeatureList::IsEnabled(device::kNewUsbBackend)) |
| 128 return; |
| 129 #endif // defined(OS_WIN) |
| 130 |
| 124 SCOPED_UMA_HISTOGRAM_TIMER("WebUsb.DetectorInitialization"); | 131 SCOPED_UMA_HISTOGRAM_TIMER("WebUsb.DetectorInitialization"); |
| 125 device::UsbService* usb_service = | 132 device::UsbService* usb_service = |
| 126 device::DeviceClient::Get()->GetUsbService(); | 133 device::DeviceClient::Get()->GetUsbService(); |
| 127 if (!usb_service) | 134 if (!usb_service) |
| 128 return; | 135 return; |
| 129 | 136 |
| 130 observer_.Add(usb_service); | 137 observer_.Add(usb_service); |
| 131 #endif | |
| 132 } | 138 } |
| 133 | 139 |
| 134 void WebUsbDetector::OnDeviceAdded(scoped_refptr<device::UsbDevice> device) { | 140 void WebUsbDetector::OnDeviceAdded(scoped_refptr<device::UsbDevice> device) { |
| 135 const base::string16& product_name = device->product_string(); | 141 const base::string16& product_name = device->product_string(); |
| 136 if (product_name.empty()) { | 142 if (product_name.empty()) { |
| 137 return; | 143 return; |
| 138 } | 144 } |
| 139 | 145 |
| 140 const GURL& landing_page = device->webusb_landing_page(); | 146 const GURL& landing_page = device->webusb_landing_page(); |
| 141 if (!landing_page.is_valid() || !content::IsOriginSecure(landing_page)) { | 147 if (!landing_page.is_valid() || !content::IsOriginSecure(landing_page)) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 167 } | 173 } |
| 168 | 174 |
| 169 void WebUsbDetector::OnDeviceRemoved(scoped_refptr<device::UsbDevice> device) { | 175 void WebUsbDetector::OnDeviceRemoved(scoped_refptr<device::UsbDevice> device) { |
| 170 std::string notification_id = device->guid(); | 176 std::string notification_id = device->guid(); |
| 171 message_center::MessageCenter* message_center = | 177 message_center::MessageCenter* message_center = |
| 172 message_center::MessageCenter::Get(); | 178 message_center::MessageCenter::Get(); |
| 173 if (message_center->FindVisibleNotificationById(notification_id)) { | 179 if (message_center->FindVisibleNotificationById(notification_id)) { |
| 174 message_center->RemoveNotification(notification_id, false /* by_user */); | 180 message_center->RemoveNotification(notification_id, false /* by_user */); |
| 175 } | 181 } |
| 176 } | 182 } |
| OLD | NEW |