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

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

Issue 2975593002: [vr] Deny permission requests in VR mode
Patch Set: . Created 3 years, 5 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 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 #include <utility> 10 #include <utility>
11 11
12 #include "base/android/jni_android.h" 12 #include "base/android/jni_android.h"
13 #include "base/android/jni_string.h" 13 #include "base/android/jni_string.h"
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "chrome/browser/profiles/profile.h" 16 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/ssl/security_state_tab_helper.h" 17 #include "chrome/browser/ssl/security_state_tab_helper.h"
18 #include "chrome/browser/usb/usb_blocklist.h" 18 #include "chrome/browser/usb/usb_blocklist.h"
19 #include "chrome/browser/usb/usb_chooser_context.h" 19 #include "chrome/browser/usb/usb_chooser_context.h"
20 #include "chrome/browser/usb/usb_chooser_context_factory.h" 20 #include "chrome/browser/usb/usb_chooser_context_factory.h"
21 #include "chrome/browser/usb/web_usb_histograms.h" 21 #include "chrome/browser/usb/web_usb_histograms.h"
22 #include "chrome/browser/vr/vr_tab_helper.h"
22 #include "chrome/common/url_constants.h" 23 #include "chrome/common/url_constants.h"
23 #include "components/security_state/core/security_state.h" 24 #include "components/security_state/core/security_state.h"
24 #include "components/url_formatter/elide_url.h" 25 #include "components/url_formatter/elide_url.h"
25 #include "content/public/browser/render_frame_host.h" 26 #include "content/public/browser/render_frame_host.h"
26 #include "content/public/browser/web_contents.h" 27 #include "content/public/browser/web_contents.h"
27 #include "device/base/device_client.h" 28 #include "device/base/device_client.h"
28 #include "device/usb/mojo/type_converters.h" 29 #include "device/usb/mojo/type_converters.h"
29 #include "device/usb/public/cpp/filter_utils.h" 30 #include "device/usb/public/cpp/filter_utils.h"
30 #include "device/usb/usb_device.h" 31 #include "device/usb/usb_device.h"
31 #include "device/usb/webusb_descriptors.h" 32 #include "device/usb/webusb_descriptors.h"
32 #include "device/vr/features/features.h" 33 #include "device/vr/features/features.h"
33 #include "jni/UsbChooserDialog_jni.h" 34 #include "jni/UsbChooserDialog_jni.h"
34 #include "ui/android/window_android.h" 35 #include "ui/android/window_android.h"
35 #include "url/gurl.h" 36 #include "url/gurl.h"
36 37
37 #if BUILDFLAG(ENABLE_VR)
38 #include "chrome/browser/android/vr_shell/vr_tab_helper.h"
39 #endif // BUILDFLAG(ENABLE_VR)
40
41 using device::UsbDevice; 38 using device::UsbDevice;
42 39
43 namespace { 40 namespace {
44 41
45 void OnDevicePermissionRequestComplete( 42 void OnDevicePermissionRequestComplete(
46 scoped_refptr<UsbDevice> device, 43 scoped_refptr<UsbDevice> device,
47 const device::mojom::UsbChooserService::GetPermissionCallback& callback, 44 const device::mojom::UsbChooserService::GetPermissionCallback& callback,
48 bool granted) { 45 bool granted) {
49 device::mojom::UsbDeviceInfoPtr device_info; 46 device::mojom::UsbDeviceInfoPtr device_info;
50 if (granted) 47 if (granted)
51 device_info = device::mojom::UsbDeviceInfo::From(*device); 48 device_info = device::mojom::UsbDeviceInfo::From(*device);
52 callback.Run(std::move(device_info)); 49 callback.Run(std::move(device_info));
53 } 50 }
54 51
55 } // namespace 52 } // namespace
56 53
57 UsbChooserDialogAndroid::UsbChooserDialogAndroid( 54 UsbChooserDialogAndroid::UsbChooserDialogAndroid(
58 std::vector<device::mojom::UsbDeviceFilterPtr> filters, 55 std::vector<device::mojom::UsbDeviceFilterPtr> filters,
59 content::RenderFrameHost* render_frame_host, 56 content::RenderFrameHost* render_frame_host,
60 const device::mojom::UsbChooserService::GetPermissionCallback& callback) 57 const device::mojom::UsbChooserService::GetPermissionCallback& callback)
61 : render_frame_host_(render_frame_host), 58 : render_frame_host_(render_frame_host),
62 callback_(callback), 59 callback_(callback),
63 usb_service_observer_(this), 60 usb_service_observer_(this),
64 filters_(std::move(filters)), 61 filters_(std::move(filters)),
65 weak_factory_(this) { 62 weak_factory_(this) {
66 content::WebContents* web_contents = 63 content::WebContents* web_contents =
67 content::WebContents::FromRenderFrameHost(render_frame_host_); 64 content::WebContents::FromRenderFrameHost(render_frame_host_);
68 #if BUILDFLAG(ENABLE_VR) 65 if (vr::VrTabHelper::IsInVr(web_contents)) {
69 if (vr_shell::VrTabHelper::IsInVr(web_contents)) {
70 DCHECK(!callback_.is_null()); 66 DCHECK(!callback_.is_null());
71 callback_.Run(nullptr); 67 callback_.Run(nullptr);
72 callback_.Reset(); // Reset |callback_| so that it is only run once. 68 callback_.Reset(); // Reset |callback_| so that it is only run once.
73 return; 69 return;
74 } 70 }
75 #endif 71
76 device::UsbService* usb_service = 72 device::UsbService* usb_service =
77 device::DeviceClient::Get()->GetUsbService(); 73 device::DeviceClient::Get()->GetUsbService();
78 if (!usb_service) 74 if (!usb_service)
79 return; 75 return;
80 76
81 if (!usb_service_observer_.IsObserving(usb_service)) 77 if (!usb_service_observer_.IsObserving(usb_service))
82 usb_service_observer_.Add(usb_service); 78 usb_service_observer_.Add(usb_service);
83 79
84 // Create (and show) the UsbChooser dialog. 80 // Create (and show) the UsbChooser dialog.
85 base::android::ScopedJavaLocalRef<jobject> window_android = 81 base::android::ScopedJavaLocalRef<jobject> window_android =
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 if (UsbBlocklist::Get().IsExcluded(device)) 239 if (UsbBlocklist::Get().IsExcluded(device))
244 return false; 240 return false;
245 241
246 return true; 242 return true;
247 } 243 }
248 244
249 // static 245 // static
250 bool UsbChooserDialogAndroid::Register(JNIEnv* env) { 246 bool UsbChooserDialogAndroid::Register(JNIEnv* env) {
251 return RegisterNativesImpl(env); 247 return RegisterNativesImpl(env);
252 } 248 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/android/ssl_client_certificate_request.cc ('k') | chrome/browser/ui/browser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698