Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Side by Side Diff: chrome/browser/usb/usb_chooser_bubble_delegate.cc

Issue 1473393003: Add chooser permission UI code for Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wpu_1
Patch Set: address reillyg@'s comments Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/usb_chooser_bubble_delegate.h" 5 #include "chrome/browser/usb/usb_chooser_bubble_delegate.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/usb/usb_chooser_context.h" 10 #include "chrome/browser/usb/usb_chooser_context.h"
11 #include "chrome/browser/usb/usb_chooser_context_factory.h" 11 #include "chrome/browser/usb/usb_chooser_context_factory.h"
12 #include "content/public/browser/render_frame_host.h" 12 #include "content/public/browser/render_frame_host.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 #include "device/core/device_client.h" 14 #include "device/core/device_client.h"
15 #include "device/devices_app/usb/type_converters.h" 15 #include "device/devices_app/usb/type_converters.h"
16 #include "device/usb/usb_device.h" 16 #include "device/usb/usb_device.h"
17 #include "device/usb/usb_device_filter.h" 17 #include "device/usb/usb_device_filter.h"
18 #include "url/gurl.h" 18 #include "url/gurl.h"
19 19
20 #if defined(OS_MACOSX)
21 #include "components/bubble/bubble_ui.h"
22 #else
23 #include "chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.h"
24 #endif
25
26 namespace { 20 namespace {
27 21
28 // Check if the origin is in the description set. 22 // Check if the origin is in the description set.
29 bool FindOriginInDescriptorSet(const device::WebUsbDescriptorSet* set, 23 bool FindOriginInDescriptorSet(const device::WebUsbDescriptorSet* set,
30 const GURL& origin) { 24 const GURL& origin) {
31 if (!set) 25 if (!set)
32 return false; 26 return false;
33 27
34 if (ContainsValue(set->origins, origin)) 28 if (ContainsValue(set->origins, origin))
35 return true; 29 return true;
(...skipping 11 matching lines...) Expand all
47 return false; 41 return false;
48 } 42 }
49 43
50 } // namespace 44 } // namespace
51 45
52 UsbChooserBubbleDelegate::UsbChooserBubbleDelegate( 46 UsbChooserBubbleDelegate::UsbChooserBubbleDelegate(
53 Browser* browser, 47 Browser* browser,
54 mojo::Array<device::usb::DeviceFilterPtr> device_filters, 48 mojo::Array<device::usb::DeviceFilterPtr> device_filters,
55 content::RenderFrameHost* render_frame_host, 49 content::RenderFrameHost* render_frame_host,
56 const webusb::WebUsbPermissionBubble::GetPermissionCallback& callback) 50 const webusb::WebUsbPermissionBubble::GetPermissionCallback& callback)
57 : browser_(browser), 51 : ChooserBubbleDelegate(browser),
58 render_frame_host_(render_frame_host), 52 render_frame_host_(render_frame_host),
59 callback_(callback), 53 callback_(callback),
60 usb_service_observer_(this), 54 usb_service_observer_(this),
61 weak_factory_(this) { 55 weak_factory_(this) {
62 DCHECK(browser_);
63 device::UsbService* usb_service = 56 device::UsbService* usb_service =
64 device::DeviceClient::Get()->GetUsbService(); 57 device::DeviceClient::Get()->GetUsbService();
65 if (!usb_service) 58 if (!usb_service)
66 return; 59 return;
67 60
68 if (!usb_service_observer_.IsObserving(usb_service)) 61 if (!usb_service_observer_.IsObserving(usb_service))
69 usb_service_observer_.Add(usb_service); 62 usb_service_observer_.Add(usb_service);
70 63
71 if (!device_filters.is_null()) 64 if (!device_filters.is_null())
72 filters_ = device_filters.To<std::vector<device::UsbDeviceFilter>>(); 65 filters_ = device_filters.To<std::vector<device::UsbDeviceFilter>>();
73 66
74 usb_service->GetDevices(base::Bind( 67 usb_service->GetDevices(base::Bind(
75 &UsbChooserBubbleDelegate::GotUsbDeviceList, weak_factory_.GetWeakPtr())); 68 &UsbChooserBubbleDelegate::GotUsbDeviceList, weak_factory_.GetWeakPtr()));
76 } 69 }
77 70
78 UsbChooserBubbleDelegate::~UsbChooserBubbleDelegate() { 71 UsbChooserBubbleDelegate::~UsbChooserBubbleDelegate() {
79 if (!callback_.is_null()) 72 if (!callback_.is_null())
80 callback_.Run(nullptr); 73 callback_.Run(nullptr);
81 } 74 }
82 75
83 scoped_ptr<BubbleUi> UsbChooserBubbleDelegate::BuildBubbleUi() {
felt 2015/12/10 02:17:24 why add this in https://codereview.chromium.org/14
juncai 2015/12/10 20:44:09 Done.
84 scoped_ptr<BubbleUi> bubble_ui;
85 // TODO(juncai): Add chooser bubble ui cocoa code for Mac.
86 // Please refer to http://crbug.com/492204 for more information.
87 #if !defined(OS_MACOSX)
88 bubble_ui.reset(new ChooserBubbleUiView(browser_, this));
89 #endif
90 return bubble_ui.Pass();
91 }
92
93 const std::vector<base::string16>& UsbChooserBubbleDelegate::GetOptions() 76 const std::vector<base::string16>& UsbChooserBubbleDelegate::GetOptions()
94 const { 77 const {
95 return devices_names_; 78 return devices_names_;
96 } 79 }
97 80
98 void UsbChooserBubbleDelegate::Select(int index) { 81 void UsbChooserBubbleDelegate::Select(int index) {
99 size_t idx = static_cast<size_t>(index); 82 size_t idx = static_cast<size_t>(index);
100 size_t num_options = devices_.size(); 83 size_t num_options = devices_.size();
101 DCHECK_LT(idx, num_options); 84 DCHECK_LT(idx, num_options);
102 if (idx < num_options) { 85 if (idx < num_options) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 FindOriginInDescriptorSet( 143 FindOriginInDescriptorSet(
161 device->webusb_allowed_origins(), 144 device->webusb_allowed_origins(),
162 render_frame_host_->GetLastCommittedURL().GetOrigin())) { 145 render_frame_host_->GetLastCommittedURL().GetOrigin())) {
163 devices_.push_back(device); 146 devices_.push_back(device);
164 devices_names_.push_back(device->product_string()); 147 devices_names_.push_back(device->product_string());
165 } 148 }
166 } 149 }
167 if (observer()) 150 if (observer())
168 observer()->OnOptionsInitialized(); 151 observer()->OnOptionsInitialized();
169 } 152 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698