Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/bluetooth_chooser_android.h" | 5 #include "chrome/browser/ui/android/bluetooth_chooser_android.h" | 
| 6 | 6 | 
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" | 
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" | 
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" | 
| 10 #include "chrome/browser/ssl/chrome_security_state_model_client.h" | 10 #include "chrome/browser/ssl/chrome_security_state_model_client.h" | 
| 11 #include "chrome/browser/ui/android/view_android_helper.h" | 11 #include "chrome/browser/ui/android/view_android_helper.h" | 
| 12 #include "chrome/common/url_constants.h" | |
| 12 #include "content/public/browser/android/content_view_core.h" | 13 #include "content/public/browser/android/content_view_core.h" | 
| 13 #include "content/public/browser/render_frame_host.h" | 14 #include "content/public/browser/render_frame_host.h" | 
| 14 #include "jni/BluetoothChooserDialog_jni.h" | 15 #include "jni/BluetoothChooserDialog_jni.h" | 
| 15 #include "ui/android/window_android.h" | 16 #include "ui/android/window_android.h" | 
| 16 #include "url/origin.h" | 17 #include "url/origin.h" | 
| 17 | 18 | 
| 18 using base::android::AttachCurrentThread; | 19 using base::android::AttachCurrentThread; | 
| 19 using base::android::ConvertUTF8ToJavaString; | 20 using base::android::ConvertUTF8ToJavaString; | 
| 20 using base::android::ConvertUTF16ToJavaString; | 21 using base::android::ConvertUTF16ToJavaString; | 
| 21 using base::android::ScopedJavaLocalRef; | 22 using base::android::ScopedJavaLocalRef; | 
| 22 | 23 | 
| 23 BluetoothChooserAndroid::BluetoothChooserAndroid( | 24 BluetoothChooserAndroid::BluetoothChooserAndroid( | 
| 24 content::RenderFrameHost* frame, | 25 content::RenderFrameHost* frame, | 
| 25 const EventHandler& event_handler) | 26 const EventHandler& event_handler) | 
| 26 : event_handler_(event_handler) { | 27 : event_handler_(event_handler) { | 
| 28 web_contents_ = content::WebContents::FromRenderFrameHost(frame); | |
| 
 
Jeffrey Yasskin
2016/02/18 02:17:24
Use the constructor-initializer-list for this.
 
ortuno
2016/02/18 18:26:33
Done.
 
 | |
| 29 | |
| 27 const url::Origin origin = frame->GetLastCommittedOrigin(); | 30 const url::Origin origin = frame->GetLastCommittedOrigin(); | 
| 28 DCHECK(!origin.unique()); | 31 DCHECK(!origin.unique()); | 
| 29 content::WebContents* web_contents = | 32 | 
| 30 content::WebContents::FromRenderFrameHost(frame); | |
| 31 base::android::ScopedJavaLocalRef<jobject> window_android = | 33 base::android::ScopedJavaLocalRef<jobject> window_android = | 
| 32 content::ContentViewCore::FromWebContents( | 34 content::ContentViewCore::FromWebContents(web_contents_) | 
| 33 web_contents)->GetWindowAndroid()->GetJavaObject(); | 35 ->GetWindowAndroid() | 
| 36 ->GetJavaObject(); | |
| 34 | 37 | 
| 35 ChromeSecurityStateModelClient* security_model_client = | 38 ChromeSecurityStateModelClient* security_model_client = | 
| 36 ChromeSecurityStateModelClient::FromWebContents(web_contents); | 39 ChromeSecurityStateModelClient::FromWebContents(web_contents_); | 
| 37 DCHECK(security_model_client); | 40 DCHECK(security_model_client); | 
| 38 | 41 | 
| 39 // Create (and show) the BluetoothChooser dialog. | 42 // Create (and show) the BluetoothChooser dialog. | 
| 40 JNIEnv* env = AttachCurrentThread(); | 43 JNIEnv* env = AttachCurrentThread(); | 
| 41 ScopedJavaLocalRef<jstring> origin_string = | 44 ScopedJavaLocalRef<jstring> origin_string = | 
| 42 ConvertUTF8ToJavaString(env, origin.Serialize()); | 45 ConvertUTF8ToJavaString(env, origin.Serialize()); | 
| 43 java_dialog_.Reset(Java_BluetoothChooserDialog_create( | 46 java_dialog_.Reset(Java_BluetoothChooserDialog_create( | 
| 44 env, window_android.obj(), origin_string.obj(), | 47 env, window_android.obj(), origin_string.obj(), | 
| 45 security_model_client->GetSecurityInfo().security_level, | 48 security_model_client->GetSecurityInfo().security_level, | 
| 46 reinterpret_cast<intptr_t>(this))); | 49 reinterpret_cast<intptr_t>(this))); | 
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 } | 129 } | 
| 127 | 130 | 
| 128 void BluetoothChooserAndroid::RestartSearch(JNIEnv* env, | 131 void BluetoothChooserAndroid::RestartSearch(JNIEnv* env, | 
| 129 const JavaParamRef<jobject>& obj) { | 132 const JavaParamRef<jobject>& obj) { | 
| 130 event_handler_.Run(Event::RESCAN, ""); | 133 event_handler_.Run(Event::RESCAN, ""); | 
| 131 } | 134 } | 
| 132 | 135 | 
| 133 void BluetoothChooserAndroid::ShowBluetoothOverviewLink( | 136 void BluetoothChooserAndroid::ShowBluetoothOverviewLink( | 
| 134 JNIEnv* env, | 137 JNIEnv* env, | 
| 135 const JavaParamRef<jobject>& obj) { | 138 const JavaParamRef<jobject>& obj) { | 
| 139 OpenURL(chrome::kChooserBluetoothOverviewURL); | |
| 136 event_handler_.Run(Event::SHOW_OVERVIEW_HELP, ""); | 140 event_handler_.Run(Event::SHOW_OVERVIEW_HELP, ""); | 
| 137 } | 141 } | 
| 138 | 142 | 
| 139 void BluetoothChooserAndroid::ShowBluetoothPairingLink( | |
| 140 JNIEnv* env, | |
| 141 const JavaParamRef<jobject>& obj) { | |
| 142 event_handler_.Run(Event::SHOW_PAIRING_HELP, ""); | |
| 143 } | |
| 144 | |
| 145 void BluetoothChooserAndroid::ShowBluetoothAdapterOffLink( | 143 void BluetoothChooserAndroid::ShowBluetoothAdapterOffLink( | 
| 146 JNIEnv* env, | 144 JNIEnv* env, | 
| 147 const JavaParamRef<jobject>& obj) { | 145 const JavaParamRef<jobject>& obj) { | 
| 146 OpenURL(chrome::kChooserBluetoothOverviewURL); | |
| 148 event_handler_.Run(Event::SHOW_ADAPTER_OFF_HELP, ""); | 147 event_handler_.Run(Event::SHOW_ADAPTER_OFF_HELP, ""); | 
| 149 } | 148 } | 
| 150 | 149 | 
| 151 void BluetoothChooserAndroid::ShowNeedLocationPermissionLink( | 150 void BluetoothChooserAndroid::ShowNeedLocationPermissionLink( | 
| 152 JNIEnv* env, | 151 JNIEnv* env, | 
| 153 const JavaParamRef<jobject>& obj) { | 152 const JavaParamRef<jobject>& obj) { | 
| 153 OpenURL(chrome::kChooserBluetoothOverviewURL); | |
| 154 event_handler_.Run(Event::SHOW_NEED_LOCATION_HELP, ""); | 154 event_handler_.Run(Event::SHOW_NEED_LOCATION_HELP, ""); | 
| 155 } | 155 } | 
| 156 | 156 | 
| 157 // static | 157 // static | 
| 158 bool BluetoothChooserAndroid::Register(JNIEnv* env) { | 158 bool BluetoothChooserAndroid::Register(JNIEnv* env) { | 
| 159 return RegisterNativesImpl(env); | 159 return RegisterNativesImpl(env); | 
| 160 } | 160 } | 
| 161 | |
| 162 void BluetoothChooserAndroid::OpenURL(const char url[]) { | |
| 
 
Jeffrey Yasskin
2016/02/18 02:17:24
"const char*" here too (mentioning it because chan
 
ortuno
2016/02/18 18:26:33
Done.
 
 | |
| 163 web_contents_->OpenURL(content::OpenURLParams( | |
| 164 GURL(url), content::Referrer(), NEW_FOREGROUND_TAB, | |
| 165 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, false /* is_renderer_initiated */)); | |
| 166 } | |
| OLD | NEW |