| OLD | NEW |
| 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 10 matching lines...) Expand all Loading... |
| 21 #include "components/url_formatter/elide_url.h" | 21 #include "components/url_formatter/elide_url.h" |
| 22 #include "content/public/browser/android/content_view_core.h" | 22 #include "content/public/browser/android/content_view_core.h" |
| 23 #include "content/public/browser/render_frame_host.h" | 23 #include "content/public/browser/render_frame_host.h" |
| 24 #include "content/public/browser/web_contents.h" | 24 #include "content/public/browser/web_contents.h" |
| 25 #include "device/core/device_client.h" | 25 #include "device/core/device_client.h" |
| 26 #include "device/usb/mojo/type_converters.h" | 26 #include "device/usb/mojo/type_converters.h" |
| 27 #include "device/usb/usb_device.h" | 27 #include "device/usb/usb_device.h" |
| 28 #include "device/usb/usb_device_filter.h" | 28 #include "device/usb/usb_device_filter.h" |
| 29 #include "device/usb/webusb_descriptors.h" | 29 #include "device/usb/webusb_descriptors.h" |
| 30 #include "jni/UsbChooserDialog_jni.h" | 30 #include "jni/UsbChooserDialog_jni.h" |
| 31 #include "mojo/common/common_type_converters.h" |
| 31 #include "ui/android/window_android.h" | 32 #include "ui/android/window_android.h" |
| 32 #include "url/gurl.h" | 33 #include "url/gurl.h" |
| 33 | 34 |
| 34 using device::UsbDevice; | 35 using device::UsbDevice; |
| 35 | 36 |
| 36 namespace { | 37 namespace { |
| 37 | 38 |
| 38 void OnDevicePermissionRequestComplete( | 39 void OnDevicePermissionRequestComplete( |
| 39 scoped_refptr<UsbDevice> device, | 40 scoped_refptr<UsbDevice> device, |
| 40 const device::usb::ChooserService::GetPermissionCallback& callback, | 41 const device::usb::ChooserService::GetPermissionCallback& callback, |
| 41 bool granted) { | 42 bool granted) { |
| 42 device::usb::DeviceInfoPtr device_info; | 43 device::usb::DeviceInfoPtr device_info; |
| 43 if (granted) | 44 if (granted) |
| 44 device_info = device::usb::DeviceInfo::From(*device); | 45 device_info = device::usb::DeviceInfo::From(*device); |
| 45 callback.Run(std::move(device_info)); | 46 callback.Run(std::move(device_info)); |
| 46 } | 47 } |
| 47 | 48 |
| 48 } // namespace | 49 } // namespace |
| 49 | 50 |
| 50 UsbChooserDialogAndroid::UsbChooserDialogAndroid( | 51 UsbChooserDialogAndroid::UsbChooserDialogAndroid( |
| 51 mojo::Array<device::usb::DeviceFilterPtr> device_filters, | 52 std::vector<device::usb::DeviceFilterPtr> filters, |
| 52 content::RenderFrameHost* render_frame_host, | 53 content::RenderFrameHost* render_frame_host, |
| 53 const device::usb::ChooserService::GetPermissionCallback& callback) | 54 const device::usb::ChooserService::GetPermissionCallback& callback) |
| 54 : render_frame_host_(render_frame_host), | 55 : render_frame_host_(render_frame_host), |
| 55 callback_(callback), | 56 callback_(callback), |
| 56 usb_service_observer_(this), | 57 usb_service_observer_(this), |
| 58 filters_(mojo::ConvertTo<std::vector<device::UsbDeviceFilter>>(filters)), |
| 57 weak_factory_(this) { | 59 weak_factory_(this) { |
| 58 device::UsbService* usb_service = | 60 device::UsbService* usb_service = |
| 59 device::DeviceClient::Get()->GetUsbService(); | 61 device::DeviceClient::Get()->GetUsbService(); |
| 60 if (!usb_service) | 62 if (!usb_service) |
| 61 return; | 63 return; |
| 62 | 64 |
| 63 if (!usb_service_observer_.IsObserving(usb_service)) | 65 if (!usb_service_observer_.IsObserving(usb_service)) |
| 64 usb_service_observer_.Add(usb_service); | 66 usb_service_observer_.Add(usb_service); |
| 65 | 67 |
| 66 if (!device_filters.is_null()) | |
| 67 filters_ = device_filters.To<std::vector<device::UsbDeviceFilter>>(); | |
| 68 | |
| 69 // Create (and show) the UsbChooser dialog. | 68 // Create (and show) the UsbChooser dialog. |
| 70 content::WebContents* web_contents = | 69 content::WebContents* web_contents = |
| 71 content::WebContents::FromRenderFrameHost(render_frame_host_); | 70 content::WebContents::FromRenderFrameHost(render_frame_host_); |
| 72 base::android::ScopedJavaLocalRef<jobject> window_android = | 71 base::android::ScopedJavaLocalRef<jobject> window_android = |
| 73 content::ContentViewCore::FromWebContents(web_contents) | 72 content::ContentViewCore::FromWebContents(web_contents) |
| 74 ->GetWindowAndroid() | 73 ->GetWindowAndroid() |
| 75 ->GetJavaObject(); | 74 ->GetJavaObject(); |
| 76 JNIEnv* env = base::android::AttachCurrentThread(); | 75 JNIEnv* env = base::android::AttachCurrentThread(); |
| 77 base::android::ScopedJavaLocalRef<jstring> origin_string = | 76 base::android::ScopedJavaLocalRef<jstring> origin_string = |
| 78 base::android::ConvertUTF16ToJavaString( | 77 base::android::ConvertUTF16ToJavaString( |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 | 238 |
| 240 return device::FindInWebUsbAllowedOrigins( | 239 return device::FindInWebUsbAllowedOrigins( |
| 241 device->webusb_allowed_origins(), | 240 device->webusb_allowed_origins(), |
| 242 render_frame_host_->GetLastCommittedURL().GetOrigin()); | 241 render_frame_host_->GetLastCommittedURL().GetOrigin()); |
| 243 } | 242 } |
| 244 | 243 |
| 245 // static | 244 // static |
| 246 bool UsbChooserDialogAndroid::Register(JNIEnv* env) { | 245 bool UsbChooserDialogAndroid::Register(JNIEnv* env) { |
| 247 return RegisterNativesImpl(env); | 246 return RegisterNativesImpl(env); |
| 248 } | 247 } |
| OLD | NEW |