| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/android/tab_web_contents_delegate_android.h" | 5 #include "chrome/browser/android/tab_web_contents_delegate_android.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
| 13 #include "chrome/browser/android/banners/app_banner_manager_android.h" | 13 #include "chrome/browser/android/banners/app_banner_manager_android.h" |
| 14 #include "chrome/browser/android/feature_utilities.h" | 14 #include "chrome/browser/android/feature_utilities.h" |
| 15 #include "chrome/browser/android/hung_renderer_infobar_delegate.h" | 15 #include "chrome/browser/android/hung_renderer_infobar_delegate.h" |
| 16 #include "chrome/browser/android/vr_shell/vr_tab_helper.h" |
| 16 #include "chrome/browser/chrome_notification_types.h" | 17 #include "chrome/browser/chrome_notification_types.h" |
| 17 #include "chrome/browser/file_select_helper.h" | 18 #include "chrome/browser/file_select_helper.h" |
| 18 #include "chrome/browser/infobars/infobar_service.h" | 19 #include "chrome/browser/infobars/infobar_service.h" |
| 19 #include "chrome/browser/media/protected_media_identifier_permission_context.h" | 20 #include "chrome/browser/media/protected_media_identifier_permission_context.h" |
| 20 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" | 21 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" |
| 21 #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h" | 22 #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h" |
| 22 #include "chrome/browser/prerender/prerender_manager.h" | 23 #include "chrome/browser/prerender/prerender_manager.h" |
| 23 #include "chrome/browser/prerender/prerender_manager_factory.h" | 24 #include "chrome/browser/prerender/prerender_manager_factory.h" |
| 24 #include "chrome/browser/profiles/profile.h" | 25 #include "chrome/browser/profiles/profile.h" |
| 25 #include "chrome/browser/ui/android/bluetooth_chooser_android.h" | 26 #include "chrome/browser/ui/android/bluetooth_chooser_android.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 WebContents* source, bool to_different_document) { | 113 WebContents* source, bool to_different_document) { |
| 113 bool has_stopped = source == nullptr || !source->IsLoading(); | 114 bool has_stopped = source == nullptr || !source->IsLoading(); |
| 114 WebContentsDelegateAndroid::LoadingStateChanged( | 115 WebContentsDelegateAndroid::LoadingStateChanged( |
| 115 source, to_different_document); | 116 source, to_different_document); |
| 116 LoadProgressChanged(source, has_stopped ? 1 : 0); | 117 LoadProgressChanged(source, has_stopped ? 1 : 0); |
| 117 } | 118 } |
| 118 | 119 |
| 119 void TabWebContentsDelegateAndroid::RunFileChooser( | 120 void TabWebContentsDelegateAndroid::RunFileChooser( |
| 120 content::RenderFrameHost* render_frame_host, | 121 content::RenderFrameHost* render_frame_host, |
| 121 const FileChooserParams& params) { | 122 const FileChooserParams& params) { |
| 123 vr_shell::VrTabHelper* vr_tab_helper = vr_shell::VrTabHelper::FromWebContents( |
| 124 WebContents::FromRenderFrameHost(render_frame_host)); |
| 125 DCHECK(vr_tab_helper); |
| 126 if (vr_tab_helper->HandleFileChooser()) |
| 127 return; |
| 128 |
| 122 FileSelectHelper::RunFileChooser(render_frame_host, params); | 129 FileSelectHelper::RunFileChooser(render_frame_host, params); |
| 123 } | 130 } |
| 124 | 131 |
| 125 std::unique_ptr<BluetoothChooser> | 132 std::unique_ptr<BluetoothChooser> |
| 126 TabWebContentsDelegateAndroid::RunBluetoothChooser( | 133 TabWebContentsDelegateAndroid::RunBluetoothChooser( |
| 127 content::RenderFrameHost* frame, | 134 content::RenderFrameHost* frame, |
| 128 const BluetoothChooser::EventHandler& event_handler) { | 135 const BluetoothChooser::EventHandler& event_handler) { |
| 136 vr_shell::VrTabHelper* vr_tab_helper = vr_shell::VrTabHelper::FromWebContents( |
| 137 WebContents::FromRenderFrameHost(frame)); |
| 138 DCHECK(vr_tab_helper); |
| 139 if (vr_tab_helper->HandleBluetoothChooser()) |
| 140 return nullptr; |
| 141 |
| 129 return base::MakeUnique<BluetoothChooserAndroid>(frame, event_handler); | 142 return base::MakeUnique<BluetoothChooserAndroid>(frame, event_handler); |
| 130 } | 143 } |
| 131 | 144 |
| 132 void TabWebContentsDelegateAndroid::CloseContents( | 145 void TabWebContentsDelegateAndroid::CloseContents( |
| 133 WebContents* web_contents) { | 146 WebContents* web_contents) { |
| 134 // Prevent dangling registrations assigned to closed web contents. | 147 // Prevent dangling registrations assigned to closed web contents. |
| 135 if (notification_registrar_.IsRegistered(this, | 148 if (notification_registrar_.IsRegistered(this, |
| 136 chrome::NOTIFICATION_FIND_RESULT_AVAILABLE, | 149 chrome::NOTIFICATION_FIND_RESULT_AVAILABLE, |
| 137 content::Source<WebContents>(web_contents))) { | 150 content::Source<WebContents>(web_contents))) { |
| 138 notification_registrar_.Remove(this, | 151 notification_registrar_.Remove(this, |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 env, details_object, i, CreateJavaRectF(env, rects[i])); | 261 env, details_object, i, CreateJavaRectF(env, rects[i])); |
| 249 } | 262 } |
| 250 | 263 |
| 251 Java_TabWebContentsDelegateAndroid_onFindMatchRectsAvailable(env, obj, | 264 Java_TabWebContentsDelegateAndroid_onFindMatchRectsAvailable(env, obj, |
| 252 details_object); | 265 details_object); |
| 253 } | 266 } |
| 254 | 267 |
| 255 content::JavaScriptDialogManager* | 268 content::JavaScriptDialogManager* |
| 256 TabWebContentsDelegateAndroid::GetJavaScriptDialogManager( | 269 TabWebContentsDelegateAndroid::GetJavaScriptDialogManager( |
| 257 WebContents* source) { | 270 WebContents* source) { |
| 271 vr_shell::VrTabHelper* vr_tab_helper = |
| 272 vr_shell::VrTabHelper::FromWebContents(source); |
| 273 DCHECK(vr_tab_helper); |
| 274 if (vr_tab_helper->HandleJavaScriptDialog()) |
| 275 return nullptr; |
| 258 return app_modal::JavaScriptDialogManager::GetInstance(); | 276 return app_modal::JavaScriptDialogManager::GetInstance(); |
| 259 } | 277 } |
| 260 | 278 |
| 261 void TabWebContentsDelegateAndroid::RequestMediaAccessPermission( | 279 void TabWebContentsDelegateAndroid::RequestMediaAccessPermission( |
| 262 content::WebContents* web_contents, | 280 content::WebContents* web_contents, |
| 263 const content::MediaStreamRequest& request, | 281 const content::MediaStreamRequest& request, |
| 264 const content::MediaResponseCallback& callback) { | 282 const content::MediaResponseCallback& callback) { |
| 283 vr_shell::VrTabHelper* vr_tab_helper = |
| 284 vr_shell::VrTabHelper::FromWebContents(web_contents); |
| 285 DCHECK(vr_tab_helper); |
| 286 if (vr_tab_helper->HandleMediaPermission()) |
| 287 return; |
| 288 |
| 265 MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( | 289 MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( |
| 266 web_contents, request, callback, nullptr); | 290 web_contents, request, callback, nullptr); |
| 267 } | 291 } |
| 268 | 292 |
| 269 bool TabWebContentsDelegateAndroid::CheckMediaAccessPermission( | 293 bool TabWebContentsDelegateAndroid::CheckMediaAccessPermission( |
| 270 content::WebContents* web_contents, | 294 content::WebContents* web_contents, |
| 271 const GURL& security_origin, | 295 const GURL& security_origin, |
| 272 content::MediaStreamType type) { | 296 content::MediaStreamType type) { |
| 273 return MediaCaptureDevicesDispatcher::GetInstance() | 297 return MediaCaptureDevicesDispatcher::GetInstance() |
| 274 ->CheckMediaAccessPermission(web_contents, security_origin, type); | 298 ->CheckMediaAccessPermission(web_contents, security_origin, type); |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 void NotifyStopped(JNIEnv* env, | 494 void NotifyStopped(JNIEnv* env, |
| 471 const JavaParamRef<jclass>& clazz, | 495 const JavaParamRef<jclass>& clazz, |
| 472 const JavaParamRef<jobject>& java_web_contents) { | 496 const JavaParamRef<jobject>& java_web_contents) { |
| 473 content::WebContents* web_contents = | 497 content::WebContents* web_contents = |
| 474 content::WebContents::FromJavaWebContents(java_web_contents); | 498 content::WebContents::FromJavaWebContents(java_web_contents); |
| 475 scoped_refptr<MediaStreamCaptureIndicator> indicator = | 499 scoped_refptr<MediaStreamCaptureIndicator> indicator = |
| 476 MediaCaptureDevicesDispatcher::GetInstance() | 500 MediaCaptureDevicesDispatcher::GetInstance() |
| 477 ->GetMediaStreamCaptureIndicator(); | 501 ->GetMediaStreamCaptureIndicator(); |
| 478 indicator->NotifyStopped(web_contents); | 502 indicator->NotifyStopped(web_contents); |
| 479 } | 503 } |
| OLD | NEW |