Index: chrome/browser/usb/usb_chooser_controller.cc |
diff --git a/chrome/browser/usb/usb_chooser_bubble_controller.cc b/chrome/browser/usb/usb_chooser_controller.cc |
similarity index 74% |
rename from chrome/browser/usb/usb_chooser_bubble_controller.cc |
rename to chrome/browser/usb/usb_chooser_controller.cc |
index dc8b2a84273c422777a2acbdc79f54b868f72c85..b5ed31397ce7a011b52f849258034e19c79018f2 100644 |
--- a/chrome/browser/usb/usb_chooser_bubble_controller.cc |
+++ b/chrome/browser/usb/usb_chooser_controller.cc |
@@ -2,20 +2,23 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/usb/usb_chooser_bubble_controller.h" |
+#include "chrome/browser/usb/usb_chooser_controller.h" |
#include <stddef.h> |
#include <utility> |
#include "base/bind.h" |
#include "base/command_line.h" |
+#include "chrome/browser/net/referrer.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
#include "chrome/browser/usb/usb_chooser_context.h" |
#include "chrome/browser/usb/usb_chooser_context_factory.h" |
#include "chrome/browser/usb/web_usb_histograms.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/url_constants.h" |
-#include "components/bubble/bubble_controller.h" |
#include "content/public/browser/render_frame_host.h" |
#include "content/public/browser/web_contents.h" |
#include "device/core/device_client.h" |
@@ -25,12 +28,23 @@ |
#include "device/usb/webusb_descriptors.h" |
#include "url/gurl.h" |
-UsbChooserBubbleController::UsbChooserBubbleController( |
+namespace { |
+ |
+Browser* GetBrowser() { |
+ chrome::ScopedTabbedBrowserDisplayer browser_displayer( |
+ ProfileManager::GetActiveUserProfile()); |
+ DCHECK(browser_displayer.browser()); |
+ return browser_displayer.browser(); |
+} |
+ |
+} // namespace |
+ |
+UsbChooserController::UsbChooserController( |
content::RenderFrameHost* owner, |
mojo::Array<device::usb::DeviceFilterPtr> device_filters, |
content::RenderFrameHost* render_frame_host, |
const device::usb::ChooserService::GetPermissionCallback& callback) |
- : ChooserBubbleController(owner), |
+ : ChooserController(owner), |
render_frame_host_(render_frame_host), |
callback_(callback), |
usb_service_observer_(this), |
@@ -46,27 +60,25 @@ UsbChooserBubbleController::UsbChooserBubbleController( |
if (!device_filters.is_null()) |
filters_ = device_filters.To<std::vector<device::UsbDeviceFilter>>(); |
- usb_service->GetDevices( |
- base::Bind(&UsbChooserBubbleController::GotUsbDeviceList, |
- weak_factory_.GetWeakPtr())); |
+ usb_service->GetDevices(base::Bind(&UsbChooserController::GotUsbDeviceList, |
+ weak_factory_.GetWeakPtr())); |
} |
-UsbChooserBubbleController::~UsbChooserBubbleController() { |
+UsbChooserController::~UsbChooserController() { |
if (!callback_.is_null()) |
callback_.Run(nullptr); |
} |
-size_t UsbChooserBubbleController::NumOptions() const { |
+size_t UsbChooserController::NumOptions() const { |
return devices_.size(); |
} |
-const base::string16& UsbChooserBubbleController::GetOption( |
- size_t index) const { |
+const base::string16& UsbChooserController::GetOption(size_t index) const { |
DCHECK_LT(index, devices_.size()); |
return devices_[index].second; |
} |
-void UsbChooserBubbleController::Select(size_t index) { |
+void UsbChooserController::Select(size_t index) { |
DCHECK_LT(index, devices_.size()); |
content::WebContents* web_contents = |
content::WebContents::FromRenderFrameHost(render_frame_host_); |
@@ -89,23 +101,24 @@ void UsbChooserBubbleController::Select(size_t index) { |
devices_[index].first->serial_number().empty() |
? WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED |
: WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED); |
- |
- if (bubble_reference_) |
- bubble_reference_->CloseBubble(BUBBLE_CLOSE_ACCEPTED); |
} |
-void UsbChooserBubbleController::Cancel() { |
+void UsbChooserController::Cancel() { |
RecordWebUsbChooserClosure(devices_.size() == 0 |
? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES |
: WEBUSB_CHOOSER_CLOSED_CANCELLED); |
- |
- if (bubble_reference_) |
- bubble_reference_->CloseBubble(BUBBLE_CLOSE_CANCELED); |
} |
-void UsbChooserBubbleController::Close() {} |
+void UsbChooserController::Close() {} |
-void UsbChooserBubbleController::OnDeviceAdded( |
+void UsbChooserController::OpenHelpCenterUrl() const { |
+ GetBrowser()->OpenURL(content::OpenURLParams( |
+ GURL(chrome::kChooserUsbOverviewURL), content::Referrer(), |
+ NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
+ false /* is_renderer_initialized */)); |
+} |
+ |
+void UsbChooserController::OnDeviceAdded( |
scoped_refptr<device::UsbDevice> device) { |
if (DisplayDevice(device)) { |
devices_.push_back(std::make_pair(device, device->product_string())); |
@@ -114,11 +127,7 @@ void UsbChooserBubbleController::OnDeviceAdded( |
} |
} |
-GURL UsbChooserBubbleController::GetHelpCenterUrl() const { |
- return GURL(chrome::kChooserUsbOverviewURL); |
-} |
- |
-void UsbChooserBubbleController::OnDeviceRemoved( |
+void UsbChooserController::OnDeviceRemoved( |
scoped_refptr<device::UsbDevice> device) { |
for (auto it = devices_.begin(); it != devices_.end(); ++it) { |
if (it->first == device) { |
@@ -131,14 +140,9 @@ void UsbChooserBubbleController::OnDeviceRemoved( |
} |
} |
-void UsbChooserBubbleController::set_bubble_reference( |
- BubbleReference bubble_reference) { |
- bubble_reference_ = bubble_reference; |
-} |
- |
// Get a list of devices that can be shown in the chooser bubble UI for |
// user to grant permsssion. |
-void UsbChooserBubbleController::GotUsbDeviceList( |
+void UsbChooserController::GotUsbDeviceList( |
const std::vector<scoped_refptr<device::UsbDevice>>& devices) { |
for (const auto& device : devices) { |
if (DisplayDevice(device)) |
@@ -148,7 +152,7 @@ void UsbChooserBubbleController::GotUsbDeviceList( |
observer()->OnOptionsInitialized(); |
} |
-bool UsbChooserBubbleController::DisplayDevice( |
+bool UsbChooserController::DisplayDevice( |
scoped_refptr<device::UsbDevice> device) const { |
return device::UsbDeviceFilter::MatchesAny(device, filters_) && |
(base::CommandLine::ForCurrentProcess()->HasSwitch( |