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

Side by Side Diff: chrome/browser/ui/android/usb_chooser_dialog_android.cc

Issue 2929843003: Disable USB chooser dialog while in VR (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ui/android/usb_chooser_dialog_android.h" 5 #include "chrome/browser/ui/android/usb_chooser_dialog_android.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 11 matching lines...) Expand all
22 #include "components/security_state/core/security_state.h" 22 #include "components/security_state/core/security_state.h"
23 #include "components/url_formatter/elide_url.h" 23 #include "components/url_formatter/elide_url.h"
24 #include "content/public/browser/android/content_view_core.h" 24 #include "content/public/browser/android/content_view_core.h"
25 #include "content/public/browser/render_frame_host.h" 25 #include "content/public/browser/render_frame_host.h"
26 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
27 #include "device/base/device_client.h" 27 #include "device/base/device_client.h"
28 #include "device/usb/mojo/type_converters.h" 28 #include "device/usb/mojo/type_converters.h"
29 #include "device/usb/usb_device.h" 29 #include "device/usb/usb_device.h"
30 #include "device/usb/usb_device_filter.h" 30 #include "device/usb/usb_device_filter.h"
31 #include "device/usb/webusb_descriptors.h" 31 #include "device/usb/webusb_descriptors.h"
32 #include "device/vr/features/features.h"
32 #include "jni/UsbChooserDialog_jni.h" 33 #include "jni/UsbChooserDialog_jni.h"
33 #include "ui/android/window_android.h" 34 #include "ui/android/window_android.h"
34 #include "url/gurl.h" 35 #include "url/gurl.h"
35 36
37 #if BUILDFLAG(ENABLE_VR)
38 #include "chrome/browser/android/vr_shell/vr_tab_helper.h"
39 #endif // BUILDFLAG(ENABLE_VR)
40
36 using device::UsbDevice; 41 using device::UsbDevice;
37 using device::UsbDeviceFilter; 42 using device::UsbDeviceFilter;
38 43
39 namespace { 44 namespace {
40 45
41 void OnDevicePermissionRequestComplete( 46 void OnDevicePermissionRequestComplete(
42 scoped_refptr<UsbDevice> device, 47 scoped_refptr<UsbDevice> device,
43 const device::mojom::UsbChooserService::GetPermissionCallback& callback, 48 const device::mojom::UsbChooserService::GetPermissionCallback& callback,
44 bool granted) { 49 bool granted) {
45 device::mojom::UsbDeviceInfoPtr device_info; 50 device::mojom::UsbDeviceInfoPtr device_info;
46 if (granted) 51 if (granted)
47 device_info = device::mojom::UsbDeviceInfo::From(*device); 52 device_info = device::mojom::UsbDeviceInfo::From(*device);
48 callback.Run(std::move(device_info)); 53 callback.Run(std::move(device_info));
49 } 54 }
50 55
51 } // namespace 56 } // namespace
52 57
53 UsbChooserDialogAndroid::UsbChooserDialogAndroid( 58 UsbChooserDialogAndroid::UsbChooserDialogAndroid(
54 const std::vector<UsbDeviceFilter>& filters, 59 const std::vector<UsbDeviceFilter>& filters,
55 content::RenderFrameHost* render_frame_host, 60 content::RenderFrameHost* render_frame_host,
56 const device::mojom::UsbChooserService::GetPermissionCallback& callback) 61 const device::mojom::UsbChooserService::GetPermissionCallback& callback)
57 : render_frame_host_(render_frame_host), 62 : render_frame_host_(render_frame_host),
58 callback_(callback), 63 callback_(callback),
59 usb_service_observer_(this), 64 usb_service_observer_(this),
60 filters_(filters), 65 filters_(filters),
61 weak_factory_(this) { 66 weak_factory_(this) {
67 content::WebContents* web_contents =
68 content::WebContents::FromRenderFrameHost(render_frame_host_);
69 #if BUILDFLAG(ENABLE_VR)
70 if (vr_shell::VrTabHelper::IsInVr(web_contents)) {
71 DCHECK(!callback_.is_null());
72 callback_.Run(nullptr);
73 callback_.Reset(); // Reset |callback_| so that it is only run once.
74 return;
75 }
76 #endif
62 device::UsbService* usb_service = 77 device::UsbService* usb_service =
63 device::DeviceClient::Get()->GetUsbService(); 78 device::DeviceClient::Get()->GetUsbService();
64 if (!usb_service) 79 if (!usb_service)
65 return; 80 return;
66 81
67 if (!usb_service_observer_.IsObserving(usb_service)) 82 if (!usb_service_observer_.IsObserving(usb_service))
68 usb_service_observer_.Add(usb_service); 83 usb_service_observer_.Add(usb_service);
69 84
70 // Create (and show) the UsbChooser dialog. 85 // Create (and show) the UsbChooser dialog.
71 content::WebContents* web_contents =
72 content::WebContents::FromRenderFrameHost(render_frame_host_);
73 base::android::ScopedJavaLocalRef<jobject> window_android = 86 base::android::ScopedJavaLocalRef<jobject> window_android =
74 content::ContentViewCore::FromWebContents(web_contents) 87 content::ContentViewCore::FromWebContents(web_contents)
75 ->GetWindowAndroid() 88 ->GetWindowAndroid()
76 ->GetJavaObject(); 89 ->GetJavaObject();
77 JNIEnv* env = base::android::AttachCurrentThread(); 90 JNIEnv* env = base::android::AttachCurrentThread();
78 base::android::ScopedJavaLocalRef<jstring> origin_string = 91 base::android::ScopedJavaLocalRef<jstring> origin_string =
79 base::android::ConvertUTF16ToJavaString( 92 base::android::ConvertUTF16ToJavaString(
80 env, url_formatter::FormatUrlForSecurityDisplay(GURL( 93 env, url_formatter::FormatUrlForSecurityDisplay(GURL(
81 render_frame_host->GetLastCommittedOrigin().Serialize()))); 94 render_frame_host->GetLastCommittedOrigin().Serialize())));
82 SecurityStateTabHelper* helper = 95 SecurityStateTabHelper* helper =
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 if (UsbBlocklist::Get().IsExcluded(device)) 246 if (UsbBlocklist::Get().IsExcluded(device))
234 return false; 247 return false;
235 248
236 return true; 249 return true;
237 } 250 }
238 251
239 // static 252 // static
240 bool UsbChooserDialogAndroid::Register(JNIEnv* env) { 253 bool UsbChooserDialogAndroid::Register(JNIEnv* env) {
241 return RegisterNativesImpl(env); 254 return RegisterNativesImpl(env);
242 } 255 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698