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

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

Issue 1739523002: WebUsb Android chooser UI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address reillgy@'s comments Created 4 years, 9 months 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_tab_helper.h" 5 #include "chrome/browser/usb/usb_tab_helper.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/usb/web_usb_chooser_service.h"
11 #include "chrome/browser/usb/web_usb_permission_provider.h" 10 #include "chrome/browser/usb/web_usb_permission_provider.h"
12 #include "device/usb/mojo/device_manager_impl.h" 11 #include "device/usb/mojo/device_manager_impl.h"
13 12
13 #if defined(OS_ANDROID)
14 #include "chrome/browser/android/usb/web_usb_chooser_service_android.h"
15 #else
16 #include "chrome/browser/usb/web_usb_chooser_service.h"
17 #endif // defined(OS_ANDROID)
18
14 using content::RenderFrameHost; 19 using content::RenderFrameHost;
15 using content::WebContents; 20 using content::WebContents;
16 21
17 DEFINE_WEB_CONTENTS_USER_DATA_KEY(UsbTabHelper); 22 DEFINE_WEB_CONTENTS_USER_DATA_KEY(UsbTabHelper);
18 23
19 struct FrameUsbServices { 24 struct FrameUsbServices {
20 scoped_ptr<WebUSBPermissionProvider> permission_provider; 25 scoped_ptr<WebUSBPermissionProvider> permission_provider;
26 #if defined(OS_ANDROID)
27 scoped_ptr<WebUsbChooserServiceAndroid> chooser_service;
28 #else
21 scoped_ptr<WebUsbChooserService> chooser_service; 29 scoped_ptr<WebUsbChooserService> chooser_service;
30 #endif // defined(OS_ANDROID)
Reilly Grant (use Gerrit) 2016/03/04 20:53:39 You can avoid these ifdefs by making this a scoped
juncai 2016/03/05 00:18:25 If making this a scoped_ptr<device::usb::ChooserSe
22 }; 31 };
23 32
24 // static 33 // static
25 UsbTabHelper* UsbTabHelper::GetOrCreateForWebContents( 34 UsbTabHelper* UsbTabHelper::GetOrCreateForWebContents(
26 WebContents* web_contents) { 35 WebContents* web_contents) {
27 UsbTabHelper* tab_helper = FromWebContents(web_contents); 36 UsbTabHelper* tab_helper = FromWebContents(web_contents);
28 if (!tab_helper) { 37 if (!tab_helper) {
29 CreateForWebContents(web_contents); 38 CreateForWebContents(web_contents);
30 tab_helper = FromWebContents(web_contents); 39 tab_helper = FromWebContents(web_contents);
31 } 40 }
32 return tab_helper; 41 return tab_helper;
33 } 42 }
34 43
35 UsbTabHelper::~UsbTabHelper() {} 44 UsbTabHelper::~UsbTabHelper() {}
36 45
37 void UsbTabHelper::CreateDeviceManager( 46 void UsbTabHelper::CreateDeviceManager(
38 RenderFrameHost* render_frame_host, 47 RenderFrameHost* render_frame_host,
39 mojo::InterfaceRequest<device::usb::DeviceManager> request) { 48 mojo::InterfaceRequest<device::usb::DeviceManager> request) {
40 DCHECK(WebContents::FromRenderFrameHost(render_frame_host) == web_contents()); 49 DCHECK(WebContents::FromRenderFrameHost(render_frame_host) == web_contents());
41 device::usb::PermissionProviderPtr permission_provider; 50 device::usb::PermissionProviderPtr permission_provider;
42 GetPermissionProvider(render_frame_host, 51 GetPermissionProvider(render_frame_host,
43 mojo::GetProxy(&permission_provider)); 52 mojo::GetProxy(&permission_provider));
44 device::usb::DeviceManagerImpl::Create(std::move(permission_provider), 53 device::usb::DeviceManagerImpl::Create(std::move(permission_provider),
45 std::move(request)); 54 std::move(request));
46 } 55 }
47 56
48 #if !defined(OS_ANDROID)
49 void UsbTabHelper::CreateChooserService( 57 void UsbTabHelper::CreateChooserService(
50 content::RenderFrameHost* render_frame_host, 58 content::RenderFrameHost* render_frame_host,
51 mojo::InterfaceRequest<device::usb::ChooserService> request) { 59 mojo::InterfaceRequest<device::usb::ChooserService> request) {
52 GetChooserService(render_frame_host, std::move(request)); 60 GetChooserService(render_frame_host, std::move(request));
53 } 61 }
54 #endif // !defined(OS_ANDROID)
55 62
56 UsbTabHelper::UsbTabHelper(WebContents* web_contents) 63 UsbTabHelper::UsbTabHelper(WebContents* web_contents)
57 : content::WebContentsObserver(web_contents) {} 64 : content::WebContentsObserver(web_contents) {}
58 65
59 void UsbTabHelper::RenderFrameDeleted(RenderFrameHost* render_frame_host) { 66 void UsbTabHelper::RenderFrameDeleted(RenderFrameHost* render_frame_host) {
60 frame_usb_services_.erase(render_frame_host); 67 frame_usb_services_.erase(render_frame_host);
61 } 68 }
62 69
63 FrameUsbServices* UsbTabHelper::GetFrameUsbService( 70 FrameUsbServices* UsbTabHelper::GetFrameUsbService(
64 content::RenderFrameHost* render_frame_host) { 71 content::RenderFrameHost* render_frame_host) {
(...skipping 12 matching lines...) Expand all
77 RenderFrameHost* render_frame_host, 84 RenderFrameHost* render_frame_host,
78 mojo::InterfaceRequest<device::usb::PermissionProvider> request) { 85 mojo::InterfaceRequest<device::usb::PermissionProvider> request) {
79 FrameUsbServices* frame_usb_services = GetFrameUsbService(render_frame_host); 86 FrameUsbServices* frame_usb_services = GetFrameUsbService(render_frame_host);
80 if (!frame_usb_services->permission_provider) { 87 if (!frame_usb_services->permission_provider) {
81 frame_usb_services->permission_provider.reset( 88 frame_usb_services->permission_provider.reset(
82 new WebUSBPermissionProvider(render_frame_host)); 89 new WebUSBPermissionProvider(render_frame_host));
83 } 90 }
84 frame_usb_services->permission_provider->Bind(std::move(request)); 91 frame_usb_services->permission_provider->Bind(std::move(request));
85 } 92 }
86 93
87 #if !defined(OS_ANDROID)
88 void UsbTabHelper::GetChooserService( 94 void UsbTabHelper::GetChooserService(
89 content::RenderFrameHost* render_frame_host, 95 content::RenderFrameHost* render_frame_host,
90 mojo::InterfaceRequest<device::usb::ChooserService> request) { 96 mojo::InterfaceRequest<device::usb::ChooserService> request) {
91 FrameUsbServices* frame_usb_services = GetFrameUsbService(render_frame_host); 97 FrameUsbServices* frame_usb_services = GetFrameUsbService(render_frame_host);
92 if (!frame_usb_services->chooser_service) { 98 if (!frame_usb_services->chooser_service) {
93 frame_usb_services->chooser_service.reset( 99 frame_usb_services->chooser_service.reset(
100 #if defined(OS_ANDROID)
101 new WebUsbChooserServiceAndroid(render_frame_host));
102 #else
94 new WebUsbChooserService(render_frame_host)); 103 new WebUsbChooserService(render_frame_host));
104 #endif // defined(OS_ANDROID)
95 } 105 }
96 frame_usb_services->chooser_service->Bind(std::move(request)); 106 frame_usb_services->chooser_service->Bind(std::move(request));
97 } 107 }
98 #endif // !defined(OS_ANDROID)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698