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 "android_webview/native/aw_contents.h" | 5 #include "android_webview/browser/aw_contents.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
| 10 #include "android_webview/browser/aw_autofill_client.h" |
10 #include "android_webview/browser/aw_browser_context.h" | 11 #include "android_webview/browser/aw_browser_context.h" |
11 #include "android_webview/browser/aw_browser_main_parts.h" | 12 #include "android_webview/browser/aw_browser_main_parts.h" |
| 13 #include "android_webview/browser/aw_contents_client_bridge.h" |
| 14 #include "android_webview/browser/aw_contents_io_thread_client_impl.h" |
| 15 #include "android_webview/browser/aw_contents_lifecycle_notifier.h" |
| 16 #include "android_webview/browser/aw_gl_functor.h" |
| 17 #include "android_webview/browser/aw_pdf_exporter.h" |
| 18 #include "android_webview/browser/aw_picture.h" |
| 19 #include "android_webview/browser/aw_renderer_priority_manager.h" |
12 #include "android_webview/browser/aw_resource_context.h" | 20 #include "android_webview/browser/aw_resource_context.h" |
| 21 #include "android_webview/browser/aw_web_contents_delegate.h" |
13 #include "android_webview/browser/browser_view_renderer.h" | 22 #include "android_webview/browser/browser_view_renderer.h" |
14 #include "android_webview/browser/child_frame.h" | 23 #include "android_webview/browser/child_frame.h" |
15 #include "android_webview/browser/deferred_gpu_command_service.h" | 24 #include "android_webview/browser/deferred_gpu_command_service.h" |
| 25 #include "android_webview/browser/java_browser_view_renderer_helper.h" |
16 #include "android_webview/browser/net_disk_cache_remover.h" | 26 #include "android_webview/browser/net_disk_cache_remover.h" |
| 27 #include "android_webview/browser/permission/aw_permission_request.h" |
| 28 #include "android_webview/browser/permission/permission_request_handler.h" |
| 29 #include "android_webview/browser/permission/simple_permission_request.h" |
17 #include "android_webview/browser/render_thread_manager.h" | 30 #include "android_webview/browser/render_thread_manager.h" |
18 #include "android_webview/browser/renderer_host/aw_resource_dispatcher_host_dele
gate.h" | 31 #include "android_webview/browser/renderer_host/aw_resource_dispatcher_host_dele
gate.h" |
19 #include "android_webview/browser/scoped_app_gl_state_restore.h" | 32 #include "android_webview/browser/scoped_app_gl_state_restore.h" |
| 33 #include "android_webview/browser/state_serializer.h" |
20 #include "android_webview/common/aw_hit_test_data.h" | 34 #include "android_webview/common/aw_hit_test_data.h" |
21 #include "android_webview/common/aw_switches.h" | 35 #include "android_webview/common/aw_switches.h" |
22 #include "android_webview/common/devtools_instrumentation.h" | 36 #include "android_webview/common/devtools_instrumentation.h" |
23 #include "android_webview/native/aw_autofill_client.h" | |
24 #include "android_webview/native/aw_contents_client_bridge.h" | |
25 #include "android_webview/native/aw_contents_io_thread_client_impl.h" | |
26 #include "android_webview/native/aw_contents_lifecycle_notifier.h" | |
27 #include "android_webview/native/aw_gl_functor.h" | |
28 #include "android_webview/native/aw_pdf_exporter.h" | |
29 #include "android_webview/native/aw_picture.h" | |
30 #include "android_webview/native/aw_renderer_priority_manager.h" | |
31 #include "android_webview/native/aw_web_contents_delegate.h" | |
32 #include "android_webview/native/java_browser_view_renderer_helper.h" | |
33 #include "android_webview/native/permission/aw_permission_request.h" | |
34 #include "android_webview/native/permission/permission_request_handler.h" | |
35 #include "android_webview/native/permission/simple_permission_request.h" | |
36 #include "android_webview/native/state_serializer.h" | |
37 #include "android_webview/public/browser/draw_gl.h" | 37 #include "android_webview/public/browser/draw_gl.h" |
38 #include "base/android/jni_android.h" | 38 #include "base/android/jni_android.h" |
39 #include "base/android/jni_array.h" | 39 #include "base/android/jni_array.h" |
40 #include "base/android/jni_string.h" | 40 #include "base/android/jni_string.h" |
41 #include "base/android/locale_utils.h" | 41 #include "base/android/locale_utils.h" |
42 #include "base/android/scoped_java_ref.h" | 42 #include "base/android/scoped_java_ref.h" |
43 #include "base/atomicops.h" | 43 #include "base/atomicops.h" |
44 #include "base/bind.h" | 44 #include "base/bind.h" |
45 #include "base/callback.h" | 45 #include "base/callback.h" |
46 #include "base/command_line.h" | 46 #include "base/command_line.h" |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 // static | 139 // static |
140 AwContents* AwContents::FromWebContents(WebContents* web_contents) { | 140 AwContents* AwContents::FromWebContents(WebContents* web_contents) { |
141 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 141 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
142 return AwContentsUserData::GetContents(web_contents); | 142 return AwContentsUserData::GetContents(web_contents); |
143 } | 143 } |
144 | 144 |
145 // static | 145 // static |
146 AwContents* AwContents::FromID(int render_process_id, int render_view_id) { | 146 AwContents* AwContents::FromID(int render_process_id, int render_view_id) { |
147 content::RenderViewHost* rvh = | 147 content::RenderViewHost* rvh = |
148 content::RenderViewHost::FromID(render_process_id, render_view_id); | 148 content::RenderViewHost::FromID(render_process_id, render_view_id); |
149 if (!rvh) return NULL; | 149 if (!rvh) |
| 150 return NULL; |
150 content::WebContents* web_contents = | 151 content::WebContents* web_contents = |
151 content::WebContents::FromRenderViewHost(rvh); | 152 content::WebContents::FromRenderViewHost(rvh); |
152 if (!web_contents) return NULL; | 153 if (!web_contents) |
| 154 return NULL; |
153 return FromWebContents(web_contents); | 155 return FromWebContents(web_contents); |
154 } | 156 } |
155 | 157 |
156 // static | 158 // static |
157 void UpdateDefaultLocale(JNIEnv* env, | 159 void UpdateDefaultLocale(JNIEnv* env, |
158 const JavaParamRef<jclass>&, | 160 const JavaParamRef<jclass>&, |
159 const JavaParamRef<jstring>& locale, | 161 const JavaParamRef<jstring>& locale, |
160 const JavaParamRef<jstring>& locale_list) { | 162 const JavaParamRef<jstring>& locale_list) { |
161 g_locale = ConvertJavaStringToUTF8(env, locale); | 163 g_locale = ConvertJavaStringToUTF8(env, locale); |
162 g_locale_list = ConvertJavaStringToUTF8(env, locale_list); | 164 g_locale_list = ConvertJavaStringToUTF8(env, locale_list); |
163 } | 165 } |
164 | 166 |
165 // static | 167 // static |
166 std::string AwContents::GetLocale() { | 168 std::string AwContents::GetLocale() { |
167 return g_locale; | 169 return g_locale; |
168 } | 170 } |
169 | 171 |
170 // static | 172 // static |
171 std::string AwContents::GetLocaleList() { | 173 std::string AwContents::GetLocaleList() { |
172 return g_locale_list; | 174 return g_locale_list; |
173 } | 175 } |
174 | 176 |
175 // static | 177 // static |
176 AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( | 178 AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( |
177 int render_process_id, int render_frame_id) { | 179 int render_process_id, |
178 AwContents* aw_contents = AwContents::FromWebContents( | 180 int render_frame_id) { |
179 content::WebContents::FromRenderFrameHost( | 181 AwContents* aw_contents = |
| 182 AwContents::FromWebContents(content::WebContents::FromRenderFrameHost( |
180 content::RenderFrameHost::FromID(render_process_id, | 183 content::RenderFrameHost::FromID(render_process_id, |
181 render_frame_id))); | 184 render_frame_id))); |
182 return aw_contents; | 185 return aw_contents; |
183 } | 186 } |
184 | 187 |
185 // static | 188 // static |
186 AwSafeBrowsingUIManager::UIManagerClient* | 189 AwSafeBrowsingUIManager::UIManagerClient* |
187 AwSafeBrowsingUIManager::UIManagerClient::FromWebContents( | 190 AwSafeBrowsingUIManager::UIManagerClient::FromWebContents( |
188 WebContents* web_contents) { | 191 WebContents* web_contents) { |
189 return AwContents::FromWebContents(web_contents); | 192 return AwContents::FromWebContents(web_contents); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 render_frame_id); | 279 render_frame_id); |
277 } | 280 } |
278 } | 281 } |
279 | 282 |
280 void AwContents::SetSaveFormData(bool enabled) { | 283 void AwContents::SetSaveFormData(bool enabled) { |
281 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 284 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
282 InitAutofillIfNecessary(enabled); | 285 InitAutofillIfNecessary(enabled); |
283 // We need to check for the existence, since autofill_manager_delegate | 286 // We need to check for the existence, since autofill_manager_delegate |
284 // may not be created when the setting is false. | 287 // may not be created when the setting is false. |
285 if (AwAutofillClient::FromWebContents(web_contents_.get())) { | 288 if (AwAutofillClient::FromWebContents(web_contents_.get())) { |
286 AwAutofillClient::FromWebContents(web_contents_.get())-> | 289 AwAutofillClient::FromWebContents(web_contents_.get()) |
287 SetSaveFormData(enabled); | 290 ->SetSaveFormData(enabled); |
288 } | 291 } |
289 } | 292 } |
290 | 293 |
291 void AwContents::InitAutofillIfNecessary(bool enabled) { | 294 void AwContents::InitAutofillIfNecessary(bool enabled) { |
292 // Do not initialize if the feature is not enabled. | 295 // Do not initialize if the feature is not enabled. |
293 if (!enabled) | 296 if (!enabled) |
294 return; | 297 return; |
295 // Check if the autofill driver factory already exists. | 298 // Check if the autofill driver factory already exists. |
296 content::WebContents* web_contents = web_contents_.get(); | 299 content::WebContents* web_contents = web_contents_.get(); |
297 if (ContentAutofillDriverFactory::FromWebContents(web_contents)) | 300 if (ContentAutofillDriverFactory::FromWebContents(web_contents)) |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 base::FilePath target_path(ConvertJavaStringToUTF8(env, jpath)); | 447 base::FilePath target_path(ConvertJavaStringToUTF8(env, jpath)); |
445 web_contents_->GenerateMHTML( | 448 web_contents_->GenerateMHTML( |
446 content::MHTMLGenerationParams(target_path), | 449 content::MHTMLGenerationParams(target_path), |
447 base::Bind(&GenerateMHTMLCallback, | 450 base::Bind(&GenerateMHTMLCallback, |
448 ScopedJavaGlobalRef<jobject>(env, callback), target_path)); | 451 ScopedJavaGlobalRef<jobject>(env, callback), target_path)); |
449 } | 452 } |
450 | 453 |
451 void AwContents::CreatePdfExporter(JNIEnv* env, | 454 void AwContents::CreatePdfExporter(JNIEnv* env, |
452 const JavaParamRef<jobject>& obj, | 455 const JavaParamRef<jobject>& obj, |
453 const JavaParamRef<jobject>& pdfExporter) { | 456 const JavaParamRef<jobject>& pdfExporter) { |
454 pdf_exporter_.reset( | 457 pdf_exporter_.reset(new AwPdfExporter(env, pdfExporter, web_contents_.get())); |
455 new AwPdfExporter(env, | |
456 pdfExporter, | |
457 web_contents_.get())); | |
458 } | 458 } |
459 | 459 |
460 bool AwContents::OnReceivedHttpAuthRequest(const JavaRef<jobject>& handler, | 460 bool AwContents::OnReceivedHttpAuthRequest(const JavaRef<jobject>& handler, |
461 const std::string& host, | 461 const std::string& host, |
462 const std::string& realm) { | 462 const std::string& realm) { |
463 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 463 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
464 JNIEnv* env = AttachCurrentThread(); | 464 JNIEnv* env = AttachCurrentThread(); |
465 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 465 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
466 if (obj.is_null()) | 466 if (obj.is_null()) |
467 return false; | 467 return false; |
(...skipping 10 matching lines...) Expand all Loading... |
478 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 478 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
479 browser_view_renderer_.SetOffscreenPreRaster(enabled); | 479 browser_view_renderer_.SetOffscreenPreRaster(enabled); |
480 } | 480 } |
481 | 481 |
482 void AwContents::AddVisitedLinks( | 482 void AwContents::AddVisitedLinks( |
483 JNIEnv* env, | 483 JNIEnv* env, |
484 const JavaParamRef<jobject>& obj, | 484 const JavaParamRef<jobject>& obj, |
485 const JavaParamRef<jobjectArray>& jvisited_links) { | 485 const JavaParamRef<jobjectArray>& jvisited_links) { |
486 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 486 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
487 std::vector<base::string16> visited_link_strings; | 487 std::vector<base::string16> visited_link_strings; |
488 base::android::AppendJavaStringArrayToStringVector( | 488 base::android::AppendJavaStringArrayToStringVector(env, jvisited_links, |
489 env, jvisited_links, &visited_link_strings); | 489 &visited_link_strings); |
490 | 490 |
491 std::vector<GURL> visited_link_gurls; | 491 std::vector<GURL> visited_link_gurls; |
492 std::vector<base::string16>::const_iterator itr; | 492 std::vector<base::string16>::const_iterator itr; |
493 for (itr = visited_link_strings.begin(); itr != visited_link_strings.end(); | 493 for (itr = visited_link_strings.begin(); itr != visited_link_strings.end(); |
494 ++itr) { | 494 ++itr) { |
495 visited_link_gurls.push_back(GURL(*itr)); | 495 visited_link_gurls.push_back(GURL(*itr)); |
496 } | 496 } |
497 | 497 |
498 AwBrowserContext::FromWebContents(web_contents_.get()) | 498 AwBrowserContext::FromWebContents(web_contents_.get()) |
499 ->AddVisitedURLs(visited_link_gurls); | 499 ->AddVisitedURLs(visited_link_gurls); |
(...skipping 16 matching lines...) Expand all Loading... |
516 "onGeolocationPermissionsShowPrompt"); | 516 "onGeolocationPermissionsShowPrompt"); |
517 Java_AwContents_onGeolocationPermissionsShowPrompt(env, j_ref, j_origin); | 517 Java_AwContents_onGeolocationPermissionsShowPrompt(env, j_ref, j_origin); |
518 } | 518 } |
519 } | 519 } |
520 | 520 |
521 void ShowGeolocationPromptHelper(const JavaObjectWeakGlobalRef& java_ref, | 521 void ShowGeolocationPromptHelper(const JavaObjectWeakGlobalRef& java_ref, |
522 const GURL& origin) { | 522 const GURL& origin) { |
523 JNIEnv* env = AttachCurrentThread(); | 523 JNIEnv* env = AttachCurrentThread(); |
524 if (java_ref.get(env).obj()) { | 524 if (java_ref.get(env).obj()) { |
525 content::BrowserThread::PostTask( | 525 content::BrowserThread::PostTask( |
526 content::BrowserThread::UI, | 526 content::BrowserThread::UI, FROM_HERE, |
527 FROM_HERE, | 527 base::Bind(&ShowGeolocationPromptHelperTask, java_ref, origin)); |
528 base::Bind(&ShowGeolocationPromptHelperTask, | |
529 java_ref, | |
530 origin)); | |
531 } | 528 } |
532 } | 529 } |
533 | 530 |
534 } // anonymous namespace | 531 } // anonymous namespace |
535 | 532 |
536 void AwContents::ShowGeolocationPrompt(const GURL& requesting_frame, | 533 void AwContents::ShowGeolocationPrompt(const GURL& requesting_frame, |
537 base::Callback<void(bool)> callback) { | 534 base::Callback<void(bool)> callback) { |
538 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 535 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
539 | 536 |
540 GURL origin = requesting_frame.GetOrigin(); | 537 GURL origin = requesting_frame.GetOrigin(); |
541 bool show_prompt = pending_geolocation_prompts_.empty(); | 538 bool show_prompt = pending_geolocation_prompts_.empty(); |
542 pending_geolocation_prompts_.push_back(OriginCallback(origin, callback)); | 539 pending_geolocation_prompts_.push_back(OriginCallback(origin, callback)); |
543 if (show_prompt) { | 540 if (show_prompt) { |
544 ShowGeolocationPromptHelper(java_ref_, origin); | 541 ShowGeolocationPromptHelper(java_ref_, origin); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 if (removed_current_outstanding_callback) { | 582 if (removed_current_outstanding_callback) { |
586 JNIEnv* env = AttachCurrentThread(); | 583 JNIEnv* env = AttachCurrentThread(); |
587 ScopedJavaLocalRef<jobject> j_ref = java_ref_.get(env); | 584 ScopedJavaLocalRef<jobject> j_ref = java_ref_.get(env); |
588 if (j_ref.obj()) { | 585 if (j_ref.obj()) { |
589 devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( | 586 devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( |
590 "onGeolocationPermissionsHidePrompt"); | 587 "onGeolocationPermissionsHidePrompt"); |
591 Java_AwContents_onGeolocationPermissionsHidePrompt(env, j_ref); | 588 Java_AwContents_onGeolocationPermissionsHidePrompt(env, j_ref); |
592 } | 589 } |
593 if (!pending_geolocation_prompts_.empty()) { | 590 if (!pending_geolocation_prompts_.empty()) { |
594 ShowGeolocationPromptHelper(java_ref_, | 591 ShowGeolocationPromptHelper(java_ref_, |
595 pending_geolocation_prompts_.front().first); | 592 pending_geolocation_prompts_.front().first); |
596 } | 593 } |
597 } | 594 } |
598 } | 595 } |
599 | 596 |
600 void AwContents::OnPermissionRequest( | 597 void AwContents::OnPermissionRequest( |
601 base::android::ScopedJavaLocalRef<jobject> j_request, | 598 base::android::ScopedJavaLocalRef<jobject> j_request, |
602 AwPermissionRequest* request) { | 599 AwPermissionRequest* request) { |
603 DCHECK(!j_request.is_null()); | 600 DCHECK(!j_request.is_null()); |
604 DCHECK(request); | 601 DCHECK(request); |
605 | 602 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 void AwContents::CancelGeolocationPermissionRequests(const GURL& origin) { | 663 void AwContents::CancelGeolocationPermissionRequests(const GURL& origin) { |
667 JNIEnv* env = AttachCurrentThread(); | 664 JNIEnv* env = AttachCurrentThread(); |
668 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 665 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
669 if (obj.is_null()) | 666 if (obj.is_null()) |
670 return; | 667 return; |
671 | 668 |
672 if (Java_AwContents_useLegacyGeolocationPermissionAPI(env, obj)) { | 669 if (Java_AwContents_useLegacyGeolocationPermissionAPI(env, obj)) { |
673 HideGeolocationPrompt(origin); | 670 HideGeolocationPrompt(origin); |
674 return; | 671 return; |
675 } | 672 } |
676 permission_request_handler_->CancelRequest( | 673 permission_request_handler_->CancelRequest(origin, |
677 origin, AwPermissionRequest::Geolocation); | 674 AwPermissionRequest::Geolocation); |
678 } | 675 } |
679 | 676 |
680 void AwContents::RequestMIDISysexPermission( | 677 void AwContents::RequestMIDISysexPermission( |
681 const GURL& origin, | 678 const GURL& origin, |
682 const base::Callback<void(bool)>& callback) { | 679 const base::Callback<void(bool)>& callback) { |
683 permission_request_handler_->SendRequest( | 680 permission_request_handler_->SendRequest( |
684 std::unique_ptr<AwPermissionRequestDelegate>(new SimplePermissionRequest( | 681 std::unique_ptr<AwPermissionRequestDelegate>(new SimplePermissionRequest( |
685 origin, AwPermissionRequest::MIDISysex, callback))); | 682 origin, AwPermissionRequest::MIDISysex, callback))); |
686 } | 683 } |
687 | 684 |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
826 jfloat touch_major) { | 823 jfloat touch_major) { |
827 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 824 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
828 gfx::PointF touch_center(x, y); | 825 gfx::PointF touch_center(x, y); |
829 gfx::SizeF touch_area(touch_major, touch_major); | 826 gfx::SizeF touch_area(touch_major, touch_major); |
830 render_view_host_ext_->RequestNewHitTestDataAt(touch_center, touch_area); | 827 render_view_host_ext_->RequestNewHitTestDataAt(touch_center, touch_area); |
831 } | 828 } |
832 | 829 |
833 void AwContents::UpdateLastHitTestData(JNIEnv* env, | 830 void AwContents::UpdateLastHitTestData(JNIEnv* env, |
834 const JavaParamRef<jobject>& obj) { | 831 const JavaParamRef<jobject>& obj) { |
835 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 832 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
836 if (!render_view_host_ext_->HasNewHitTestData()) return; | 833 if (!render_view_host_ext_->HasNewHitTestData()) |
| 834 return; |
837 | 835 |
838 const AwHitTestData& data = render_view_host_ext_->GetLastHitTestData(); | 836 const AwHitTestData& data = render_view_host_ext_->GetLastHitTestData(); |
839 render_view_host_ext_->MarkHitTestDataRead(); | 837 render_view_host_ext_->MarkHitTestDataRead(); |
840 | 838 |
841 // Make sure to null the Java object if data is empty/invalid. | 839 // Make sure to null the Java object if data is empty/invalid. |
842 ScopedJavaLocalRef<jstring> extra_data_for_type; | 840 ScopedJavaLocalRef<jstring> extra_data_for_type; |
843 if (data.extra_data_for_type.length()) | 841 if (data.extra_data_for_type.length()) |
844 extra_data_for_type = ConvertUTF8ToJavaString( | 842 extra_data_for_type = |
845 env, data.extra_data_for_type); | 843 ConvertUTF8ToJavaString(env, data.extra_data_for_type); |
846 | 844 |
847 ScopedJavaLocalRef<jstring> href; | 845 ScopedJavaLocalRef<jstring> href; |
848 if (data.href.length()) | 846 if (data.href.length()) |
849 href = ConvertUTF16ToJavaString(env, data.href); | 847 href = ConvertUTF16ToJavaString(env, data.href); |
850 | 848 |
851 ScopedJavaLocalRef<jstring> anchor_text; | 849 ScopedJavaLocalRef<jstring> anchor_text; |
852 if (data.anchor_text.length()) | 850 if (data.anchor_text.length()) |
853 anchor_text = ConvertUTF16ToJavaString(env, data.anchor_text); | 851 anchor_text = ConvertUTF16ToJavaString(env, data.anchor_text); |
854 | 852 |
855 ScopedJavaLocalRef<jstring> img_src; | 853 ScopedJavaLocalRef<jstring> img_src; |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1171 } | 1169 } |
1172 | 1170 |
1173 namespace { | 1171 namespace { |
1174 void InvokeVisualStateCallback(const JavaObjectWeakGlobalRef& java_ref, | 1172 void InvokeVisualStateCallback(const JavaObjectWeakGlobalRef& java_ref, |
1175 jlong request_id, | 1173 jlong request_id, |
1176 const JavaRef<jobject>& callback, | 1174 const JavaRef<jobject>& callback, |
1177 bool result) { | 1175 bool result) { |
1178 JNIEnv* env = AttachCurrentThread(); | 1176 JNIEnv* env = AttachCurrentThread(); |
1179 ScopedJavaLocalRef<jobject> obj = java_ref.get(env); | 1177 ScopedJavaLocalRef<jobject> obj = java_ref.get(env); |
1180 if (obj.is_null()) | 1178 if (obj.is_null()) |
1181 return; | 1179 return; |
1182 Java_AwContents_invokeVisualStateCallback(env, obj, callback, request_id); | 1180 Java_AwContents_invokeVisualStateCallback(env, obj, callback, request_id); |
1183 } | 1181 } |
1184 } // namespace | 1182 } // namespace |
1185 | 1183 |
1186 void AwContents::InsertVisualStateCallback( | 1184 void AwContents::InsertVisualStateCallback( |
1187 JNIEnv* env, | 1185 JNIEnv* env, |
1188 const JavaParamRef<jobject>& obj, | 1186 const JavaParamRef<jobject>& obj, |
1189 jlong request_id, | 1187 jlong request_id, |
1190 const JavaParamRef<jobject>& callback) { | 1188 const JavaParamRef<jobject>& callback) { |
1191 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1189 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1289 | 1287 |
1290 void AwContents::SetExtraHeadersForUrl( | 1288 void AwContents::SetExtraHeadersForUrl( |
1291 JNIEnv* env, | 1289 JNIEnv* env, |
1292 const JavaParamRef<jobject>& obj, | 1290 const JavaParamRef<jobject>& obj, |
1293 const JavaParamRef<jstring>& url, | 1291 const JavaParamRef<jstring>& url, |
1294 const JavaParamRef<jstring>& jextra_headers) { | 1292 const JavaParamRef<jstring>& jextra_headers) { |
1295 std::string extra_headers; | 1293 std::string extra_headers; |
1296 if (jextra_headers) | 1294 if (jextra_headers) |
1297 extra_headers = ConvertJavaStringToUTF8(env, jextra_headers); | 1295 extra_headers = ConvertJavaStringToUTF8(env, jextra_headers); |
1298 AwResourceContext* resource_context = static_cast<AwResourceContext*>( | 1296 AwResourceContext* resource_context = static_cast<AwResourceContext*>( |
1299 AwBrowserContext::FromWebContents(web_contents_.get())-> | 1297 AwBrowserContext::FromWebContents(web_contents_.get()) |
1300 GetResourceContext()); | 1298 ->GetResourceContext()); |
1301 resource_context->SetExtraHeaders(GURL(ConvertJavaStringToUTF8(env, url)), | 1299 resource_context->SetExtraHeaders(GURL(ConvertJavaStringToUTF8(env, url)), |
1302 extra_headers); | 1300 extra_headers); |
1303 } | 1301 } |
1304 | 1302 |
1305 void AwContents::SetJsOnlineProperty(JNIEnv* env, | 1303 void AwContents::SetJsOnlineProperty(JNIEnv* env, |
1306 const JavaParamRef<jobject>& obj, | 1304 const JavaParamRef<jobject>& obj, |
1307 jboolean network_up) { | 1305 jboolean network_up) { |
1308 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1306 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1309 render_view_host_ext_->SetJsOnlineProperty(network_up); | 1307 render_view_host_ext_->SetJsOnlineProperty(network_up); |
1310 } | 1308 } |
(...skipping 26 matching lines...) Expand all Loading... |
1337 | 1335 |
1338 // TODO(sgurun) add support for posting a frame whose name is known (only | 1336 // TODO(sgurun) add support for posting a frame whose name is known (only |
1339 // main frame is supported at this time, see crbug.com/389721) | 1337 // main frame is supported at this time, see crbug.com/389721) |
1340 void AwContents::PostMessageToFrame(JNIEnv* env, | 1338 void AwContents::PostMessageToFrame(JNIEnv* env, |
1341 const JavaParamRef<jobject>& obj, | 1339 const JavaParamRef<jobject>& obj, |
1342 const JavaParamRef<jstring>& frame_name, | 1340 const JavaParamRef<jstring>& frame_name, |
1343 const JavaParamRef<jstring>& message, | 1341 const JavaParamRef<jstring>& message, |
1344 const JavaParamRef<jstring>& target_origin, | 1342 const JavaParamRef<jstring>& target_origin, |
1345 const JavaParamRef<jobjectArray>& ports) { | 1343 const JavaParamRef<jobjectArray>& ports) { |
1346 // Use an empty source origin for android webview. | 1344 // Use an empty source origin for android webview. |
1347 content::MessagePortProvider::PostMessageToFrame(web_contents_.get(), | 1345 content::MessagePortProvider::PostMessageToFrame( |
1348 env, | 1346 web_contents_.get(), env, nullptr, target_origin, message, ports); |
1349 nullptr, | |
1350 target_origin, | |
1351 message, | |
1352 ports); | |
1353 } | 1347 } |
1354 | 1348 |
1355 void AwContents::GrantFileSchemeAccesstoChildProcess( | 1349 void AwContents::GrantFileSchemeAccesstoChildProcess( |
1356 JNIEnv* env, | 1350 JNIEnv* env, |
1357 const JavaParamRef<jobject>& obj) { | 1351 const JavaParamRef<jobject>& obj) { |
1358 content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme( | 1352 content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme( |
1359 web_contents_->GetRenderProcessHost()->GetID(), url::kFileScheme); | 1353 web_contents_->GetRenderProcessHost()->GetID(), url::kFileScheme); |
1360 } | 1354 } |
1361 | 1355 |
1362 void AwContents::ResumeLoadingCreatedPopupWebContents( | 1356 void AwContents::ResumeLoadingCreatedPopupWebContents( |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1433 void AwContents::OnRenderProcessGone(int child_process_id) { | 1427 void AwContents::OnRenderProcessGone(int child_process_id) { |
1434 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1428 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1435 JNIEnv* env = AttachCurrentThread(); | 1429 JNIEnv* env = AttachCurrentThread(); |
1436 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 1430 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
1437 if (obj.is_null()) | 1431 if (obj.is_null()) |
1438 return; | 1432 return; |
1439 | 1433 |
1440 Java_AwContents_onRenderProcessGone(env, obj, child_process_id); | 1434 Java_AwContents_onRenderProcessGone(env, obj, child_process_id); |
1441 } | 1435 } |
1442 | 1436 |
1443 bool AwContents::OnRenderProcessGoneDetail(int child_process_id, | 1437 bool AwContents::OnRenderProcessGoneDetail(int child_process_id, bool crashed) { |
1444 bool crashed) { | |
1445 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1438 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1446 JNIEnv* env = AttachCurrentThread(); | 1439 JNIEnv* env = AttachCurrentThread(); |
1447 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 1440 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
1448 if (obj.is_null()) | 1441 if (obj.is_null()) |
1449 return false; | 1442 return false; |
1450 | 1443 |
1451 return Java_AwContents_onRenderProcessGoneDetail(env, obj, | 1444 return Java_AwContents_onRenderProcessGoneDetail(env, obj, child_process_id, |
1452 child_process_id, crashed); | 1445 crashed); |
1453 } | 1446 } |
1454 | 1447 |
1455 void AwContents::RenderProcessReady(content::RenderProcessHost* host) { | 1448 void AwContents::RenderProcessReady(content::RenderProcessHost* host) { |
1456 UpdateRendererPriority(); | 1449 UpdateRendererPriority(); |
1457 } | 1450 } |
1458 | 1451 |
1459 } // namespace android_webview | 1452 } // namespace android_webview |
OLD | NEW |