| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 ->GetJavaObject(); | 74 ->GetJavaObject(); |
| 75 JNIEnv* env = base::android::AttachCurrentThread(); | 75 JNIEnv* env = base::android::AttachCurrentThread(); |
| 76 base::android::ScopedJavaLocalRef<jstring> origin_string = | 76 base::android::ScopedJavaLocalRef<jstring> origin_string = |
| 77 base::android::ConvertUTF16ToJavaString( | 77 base::android::ConvertUTF16ToJavaString( |
| 78 env, url_formatter::FormatUrlForSecurityDisplay(GURL( | 78 env, url_formatter::FormatUrlForSecurityDisplay(GURL( |
| 79 render_frame_host->GetLastCommittedOrigin().Serialize()))); | 79 render_frame_host->GetLastCommittedOrigin().Serialize()))); |
| 80 ChromeSecurityStateModelClient* security_model_client = | 80 ChromeSecurityStateModelClient* security_model_client = |
| 81 ChromeSecurityStateModelClient::FromWebContents(web_contents); | 81 ChromeSecurityStateModelClient::FromWebContents(web_contents); |
| 82 DCHECK(security_model_client); | 82 DCHECK(security_model_client); |
| 83 java_dialog_.Reset(Java_UsbChooserDialog_create( | 83 java_dialog_.Reset(Java_UsbChooserDialog_create( |
| 84 env, window_android.obj(), origin_string.obj(), | 84 env, window_android, origin_string, |
| 85 security_model_client->GetSecurityInfo().security_level, | 85 security_model_client->GetSecurityInfo().security_level, |
| 86 reinterpret_cast<intptr_t>(this))); | 86 reinterpret_cast<intptr_t>(this))); |
| 87 | 87 |
| 88 if (!java_dialog_.is_null()) { | 88 if (!java_dialog_.is_null()) { |
| 89 usb_service->GetDevices( | 89 usb_service->GetDevices( |
| 90 base::Bind(&UsbChooserDialogAndroid::GotUsbDeviceList, | 90 base::Bind(&UsbChooserDialogAndroid::GotUsbDeviceList, |
| 91 weak_factory_.GetWeakPtr())); | 91 weak_factory_.GetWeakPtr())); |
| 92 } | 92 } |
| 93 } | 93 } |
| 94 | 94 |
| 95 UsbChooserDialogAndroid::~UsbChooserDialogAndroid() { | 95 UsbChooserDialogAndroid::~UsbChooserDialogAndroid() { |
| 96 if (!callback_.is_null()) | 96 if (!callback_.is_null()) |
| 97 callback_.Run(nullptr); | 97 callback_.Run(nullptr); |
| 98 | 98 |
| 99 if (!java_dialog_.is_null()) { | 99 if (!java_dialog_.is_null()) { |
| 100 Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), | 100 Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), |
| 101 java_dialog_.obj()); | 101 java_dialog_); |
| 102 } | 102 } |
| 103 } | 103 } |
| 104 | 104 |
| 105 void UsbChooserDialogAndroid::OnDeviceAdded(scoped_refptr<UsbDevice> device) { | 105 void UsbChooserDialogAndroid::OnDeviceAdded(scoped_refptr<UsbDevice> device) { |
| 106 if (DisplayDevice(device)) { | 106 if (DisplayDevice(device)) { |
| 107 AddDeviceToChooserDialog(device); | 107 AddDeviceToChooserDialog(device); |
| 108 devices_.push_back(device); | 108 devices_.push_back(device); |
| 109 } | 109 } |
| 110 } | 110 } |
| 111 | 111 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 131 UsbChooserContextFactory::GetForProfile(profile); | 131 UsbChooserContextFactory::GetForProfile(profile); |
| 132 chooser_context->GrantDevicePermission( | 132 chooser_context->GrantDevicePermission( |
| 133 render_frame_host_->GetLastCommittedURL().GetOrigin(), | 133 render_frame_host_->GetLastCommittedURL().GetOrigin(), |
| 134 embedding_origin, device->guid()); | 134 embedding_origin, device->guid()); |
| 135 | 135 |
| 136 device->RequestPermission( | 136 device->RequestPermission( |
| 137 base::Bind(&OnDevicePermissionRequestComplete, device, callback_)); | 137 base::Bind(&OnDevicePermissionRequestComplete, device, callback_)); |
| 138 callback_.Reset(); // Reset |callback_| so that it is only run once. | 138 callback_.Reset(); // Reset |callback_| so that it is only run once. |
| 139 | 139 |
| 140 Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), | 140 Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), |
| 141 java_dialog_.obj()); | 141 java_dialog_); |
| 142 RecordWebUsbChooserClosure( | 142 RecordWebUsbChooserClosure( |
| 143 device->serial_number().empty() | 143 device->serial_number().empty() |
| 144 ? WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED | 144 ? WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED |
| 145 : WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED); | 145 : WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED); |
| 146 return; | 146 return; |
| 147 } | 147 } |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 | 150 |
| 151 void UsbChooserDialogAndroid::Cancel() { | 151 void UsbChooserDialogAndroid::Cancel() { |
| 152 DCHECK(!callback_.is_null()); | 152 DCHECK(!callback_.is_null()); |
| 153 callback_.Run(nullptr); | 153 callback_.Run(nullptr); |
| 154 callback_.Reset(); // Reset |callback_| so that it is only run once. | 154 callback_.Reset(); // Reset |callback_| so that it is only run once. |
| 155 Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), | 155 Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), |
| 156 java_dialog_.obj()); | 156 java_dialog_); |
| 157 | 157 |
| 158 RecordWebUsbChooserClosure(devices_.size() == 0 | 158 RecordWebUsbChooserClosure(devices_.size() == 0 |
| 159 ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES | 159 ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES |
| 160 : WEBUSB_CHOOSER_CLOSED_CANCELLED); | 160 : WEBUSB_CHOOSER_CLOSED_CANCELLED); |
| 161 } | 161 } |
| 162 | 162 |
| 163 void UsbChooserDialogAndroid::OnItemSelected( | 163 void UsbChooserDialogAndroid::OnItemSelected( |
| 164 JNIEnv* env, | 164 JNIEnv* env, |
| 165 const base::android::JavaParamRef<jobject>& obj, | 165 const base::android::JavaParamRef<jobject>& obj, |
| 166 const base::android::JavaParamRef<jstring>& device_id) { | 166 const base::android::JavaParamRef<jstring>& device_id) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 185 void UsbChooserDialogAndroid::GotUsbDeviceList( | 185 void UsbChooserDialogAndroid::GotUsbDeviceList( |
| 186 const std::vector<scoped_refptr<UsbDevice>>& devices) { | 186 const std::vector<scoped_refptr<UsbDevice>>& devices) { |
| 187 for (const auto& device : devices) { | 187 for (const auto& device : devices) { |
| 188 if (DisplayDevice(device)) { | 188 if (DisplayDevice(device)) { |
| 189 AddDeviceToChooserDialog(device); | 189 AddDeviceToChooserDialog(device); |
| 190 devices_.push_back(device); | 190 devices_.push_back(device); |
| 191 } | 191 } |
| 192 } | 192 } |
| 193 | 193 |
| 194 JNIEnv* env = base::android::AttachCurrentThread(); | 194 JNIEnv* env = base::android::AttachCurrentThread(); |
| 195 Java_UsbChooserDialog_setIdleState(env, java_dialog_.obj()); | 195 Java_UsbChooserDialog_setIdleState(env, java_dialog_); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void UsbChooserDialogAndroid::AddDeviceToChooserDialog( | 198 void UsbChooserDialogAndroid::AddDeviceToChooserDialog( |
| 199 scoped_refptr<UsbDevice> device) const { | 199 scoped_refptr<UsbDevice> device) const { |
| 200 JNIEnv* env = base::android::AttachCurrentThread(); | 200 JNIEnv* env = base::android::AttachCurrentThread(); |
| 201 base::android::ScopedJavaLocalRef<jstring> device_guid = | 201 base::android::ScopedJavaLocalRef<jstring> device_guid = |
| 202 base::android::ConvertUTF8ToJavaString(env, device->guid()); | 202 base::android::ConvertUTF8ToJavaString(env, device->guid()); |
| 203 base::android::ScopedJavaLocalRef<jstring> device_name = | 203 base::android::ScopedJavaLocalRef<jstring> device_name = |
| 204 base::android::ConvertUTF16ToJavaString(env, device->product_string()); | 204 base::android::ConvertUTF16ToJavaString(env, device->product_string()); |
| 205 Java_UsbChooserDialog_addDevice(env, java_dialog_.obj(), device_guid.obj(), | 205 Java_UsbChooserDialog_addDevice(env, java_dialog_, device_guid, device_name); |
| 206 device_name.obj()); | |
| 207 } | 206 } |
| 208 | 207 |
| 209 void UsbChooserDialogAndroid::RemoveDeviceFromChooserDialog( | 208 void UsbChooserDialogAndroid::RemoveDeviceFromChooserDialog( |
| 210 scoped_refptr<UsbDevice> device) const { | 209 scoped_refptr<UsbDevice> device) const { |
| 211 JNIEnv* env = base::android::AttachCurrentThread(); | 210 JNIEnv* env = base::android::AttachCurrentThread(); |
| 212 base::android::ScopedJavaLocalRef<jstring> device_guid = | 211 base::android::ScopedJavaLocalRef<jstring> device_guid = |
| 213 base::android::ConvertUTF8ToJavaString(env, device->guid()); | 212 base::android::ConvertUTF8ToJavaString(env, device->guid()); |
| 214 base::android::ScopedJavaLocalRef<jstring> device_name = | 213 base::android::ScopedJavaLocalRef<jstring> device_name = |
| 215 base::android::ConvertUTF16ToJavaString(env, device->product_string()); | 214 base::android::ConvertUTF16ToJavaString(env, device->product_string()); |
| 216 Java_UsbChooserDialog_removeDevice(env, java_dialog_.obj(), device_guid.obj(), | 215 Java_UsbChooserDialog_removeDevice(env, java_dialog_, device_guid, |
| 217 device_name.obj()); | 216 device_name); |
| 218 } | 217 } |
| 219 | 218 |
| 220 void UsbChooserDialogAndroid::OpenUrl(const std::string& url) { | 219 void UsbChooserDialogAndroid::OpenUrl(const std::string& url) { |
| 221 content::WebContents::FromRenderFrameHost(render_frame_host_) | 220 content::WebContents::FromRenderFrameHost(render_frame_host_) |
| 222 ->OpenURL(content::OpenURLParams(GURL(url), content::Referrer(), | 221 ->OpenURL(content::OpenURLParams(GURL(url), content::Referrer(), |
| 223 NEW_FOREGROUND_TAB, | 222 NEW_FOREGROUND_TAB, |
| 224 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, | 223 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
| 225 false)); // is_renderer_initiated | 224 false)); // is_renderer_initiated |
| 226 } | 225 } |
| 227 | 226 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 238 | 237 |
| 239 return device::FindInWebUsbAllowedOrigins( | 238 return device::FindInWebUsbAllowedOrigins( |
| 240 device->webusb_allowed_origins(), | 239 device->webusb_allowed_origins(), |
| 241 render_frame_host_->GetLastCommittedURL().GetOrigin()); | 240 render_frame_host_->GetLastCommittedURL().GetOrigin()); |
| 242 } | 241 } |
| 243 | 242 |
| 244 // static | 243 // static |
| 245 bool UsbChooserDialogAndroid::Register(JNIEnv* env) { | 244 bool UsbChooserDialogAndroid::Register(JNIEnv* env) { |
| 246 return RegisterNativesImpl(env); | 245 return RegisterNativesImpl(env); |
| 247 } | 246 } |
| OLD | NEW |