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 |