Chromium Code Reviews| 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/native/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_browser_context.h" | 10 #include "android_webview/browser/aw_browser_context.h" |
| 11 #include "android_webview/browser/aw_browser_main_parts.h" | 11 #include "android_webview/browser/aw_browser_main_parts.h" |
| 12 #include "android_webview/browser/aw_resource_context.h" | 12 #include "android_webview/browser/aw_resource_context.h" |
| 13 #include "android_webview/browser/browser_view_renderer.h" | 13 #include "android_webview/browser/browser_view_renderer.h" |
| 14 #include "android_webview/browser/child_frame.h" | 14 #include "android_webview/browser/child_frame.h" |
| 15 #include "android_webview/browser/deferred_gpu_command_service.h" | 15 #include "android_webview/browser/deferred_gpu_command_service.h" |
| 16 #include "android_webview/browser/net_disk_cache_remover.h" | 16 #include "android_webview/browser/net_disk_cache_remover.h" |
| 17 #include "android_webview/browser/render_thread_manager.h" | 17 #include "android_webview/browser/render_thread_manager.h" |
| 18 #include "android_webview/browser/renderer_host/aw_resource_dispatcher_host_dele gate.h" | 18 #include "android_webview/browser/renderer_host/aw_resource_dispatcher_host_dele gate.h" |
| 19 #include "android_webview/browser/scoped_app_gl_state_restore.h" | 19 #include "android_webview/browser/scoped_app_gl_state_restore.h" |
| 20 #include "android_webview/common/aw_hit_test_data.h" | 20 #include "android_webview/common/aw_hit_test_data.h" |
| 21 #include "android_webview/common/aw_switches.h" | 21 #include "android_webview/common/aw_switches.h" |
| 22 #include "android_webview/common/devtools_instrumentation.h" | 22 #include "android_webview/common/devtools_instrumentation.h" |
| 23 #include "android_webview/native/aw_autofill_client.h" | 23 #include "android_webview/native/aw_autofill_client.h" |
| 24 #include "android_webview/native/aw_browser_dependency_factory.h" | 24 #include "android_webview/native/aw_browser_dependency_factory.h" |
| 25 #include "android_webview/native/aw_contents_client_bridge.h" | 25 #include "android_webview/native/aw_contents_client_bridge.h" |
| 26 #include "android_webview/native/aw_contents_io_thread_client_impl.h" | 26 #include "android_webview/native/aw_contents_io_thread_client_impl.h" |
| 27 #include "android_webview/native/aw_contents_lifecycle_notifier.h" | 27 #include "android_webview/native/aw_contents_lifecycle_notifier.h" |
| 28 #include "android_webview/native/aw_gl_functor.h" | |
| 28 #include "android_webview/native/aw_message_port_service_impl.h" | 29 #include "android_webview/native/aw_message_port_service_impl.h" |
| 29 #include "android_webview/native/aw_pdf_exporter.h" | 30 #include "android_webview/native/aw_pdf_exporter.h" |
| 30 #include "android_webview/native/aw_picture.h" | 31 #include "android_webview/native/aw_picture.h" |
| 31 #include "android_webview/native/aw_web_contents_delegate.h" | 32 #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/java_browser_view_renderer_helper.h" |
| 33 #include "android_webview/native/permission/aw_permission_request.h" | 34 #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/permission_request_handler.h" |
| 35 #include "android_webview/native/permission/simple_permission_request.h" | 36 #include "android_webview/native/permission/simple_permission_request.h" |
| 36 #include "android_webview/native/state_serializer.h" | 37 #include "android_webview/native/state_serializer.h" |
| 37 #include "android_webview/public/browser/draw_gl.h" | 38 #include "android_webview/public/browser/draw_gl.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 using base::android::ConvertUTF8ToJavaString; | 91 using base::android::ConvertUTF8ToJavaString; |
| 91 using base::android::JavaRef; | 92 using base::android::JavaRef; |
| 92 using base::android::ScopedJavaGlobalRef; | 93 using base::android::ScopedJavaGlobalRef; |
| 93 using base::android::ScopedJavaLocalRef; | 94 using base::android::ScopedJavaLocalRef; |
| 94 using data_reduction_proxy::DataReductionProxySettings; | 95 using data_reduction_proxy::DataReductionProxySettings; |
| 95 using navigation_interception::InterceptNavigationDelegate; | 96 using navigation_interception::InterceptNavigationDelegate; |
| 96 using content::BrowserThread; | 97 using content::BrowserThread; |
| 97 using content::ContentViewCore; | 98 using content::ContentViewCore; |
| 98 using content::WebContents; | 99 using content::WebContents; |
| 99 | 100 |
| 100 extern "C" { | |
| 101 static AwDrawGLFunction DrawGLFunction; | |
| 102 static void DrawGLFunction(long view_context, | |
| 103 AwDrawGLInfo* draw_info, | |
| 104 void* spare) { | |
| 105 // |view_context| is the value that was returned from the java | |
| 106 // AwContents.onPrepareDrawGL; this cast must match the code there. | |
| 107 reinterpret_cast<android_webview::RenderThreadManager*>(view_context) | |
| 108 ->DrawGL(draw_info); | |
| 109 } | |
| 110 } | |
| 111 | |
| 112 namespace android_webview { | 101 namespace android_webview { |
| 113 | 102 |
| 114 namespace { | 103 namespace { |
| 115 | 104 |
| 116 bool g_should_download_favicons = false; | 105 bool g_should_download_favicons = false; |
| 117 | 106 |
| 118 bool g_force_auxiliary_bitmap_rendering = false; | 107 bool g_force_auxiliary_bitmap_rendering = false; |
| 119 | 108 |
| 120 std::string g_locale; | 109 std::string g_locale; |
| 121 | 110 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 174 AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( | 163 AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( |
| 175 int render_process_id, int render_frame_id) { | 164 int render_process_id, int render_frame_id) { |
| 176 AwContents* aw_contents = AwContents::FromWebContents( | 165 AwContents* aw_contents = AwContents::FromWebContents( |
| 177 content::WebContents::FromRenderFrameHost( | 166 content::WebContents::FromRenderFrameHost( |
| 178 content::RenderFrameHost::FromID(render_process_id, | 167 content::RenderFrameHost::FromID(render_process_id, |
| 179 render_frame_id))); | 168 render_frame_id))); |
| 180 return aw_contents; | 169 return aw_contents; |
| 181 } | 170 } |
| 182 | 171 |
| 183 AwContents::AwContents(std::unique_ptr<WebContents> web_contents) | 172 AwContents::AwContents(std::unique_ptr<WebContents> web_contents) |
| 184 : render_thread_manager_( | 173 : functor_(nullptr), |
| 185 this, | |
| 186 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), | |
| 187 browser_view_renderer_( | 174 browser_view_renderer_( |
| 188 this, | 175 this, |
| 189 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), | 176 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), |
| 190 base::CommandLine::ForCurrentProcess()->HasSwitch( | 177 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 191 switches::kDisablePageVisibility)), | 178 switches::kDisablePageVisibility)), |
| 192 web_contents_(std::move(web_contents)), | 179 web_contents_(std::move(web_contents)), |
| 193 renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()) { | 180 renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()) { |
| 194 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1); | 181 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1); |
| 195 browser_view_renderer_.SetRenderThreadManager(&render_thread_manager_); | |
| 196 icon_helper_.reset(new IconHelper(web_contents_.get())); | 182 icon_helper_.reset(new IconHelper(web_contents_.get())); |
| 197 icon_helper_->SetListener(this); | 183 icon_helper_->SetListener(this); |
| 198 web_contents_->SetUserData(android_webview::kAwContentsUserDataKey, | 184 web_contents_->SetUserData(android_webview::kAwContentsUserDataKey, |
| 199 new AwContentsUserData(this)); | 185 new AwContentsUserData(this)); |
| 200 browser_view_renderer_.RegisterWithWebContents(web_contents_.get()); | 186 browser_view_renderer_.RegisterWithWebContents(web_contents_.get()); |
| 201 render_view_host_ext_.reset( | 187 render_view_host_ext_.reset( |
| 202 new AwRenderViewHostExt(this, web_contents_.get())); | 188 new AwRenderViewHostExt(this, web_contents_.get())); |
| 203 | 189 |
| 204 permission_request_handler_.reset( | 190 permission_request_handler_.reset( |
| 205 new PermissionRequestHandler(this, web_contents_.get())); | 191 new PermissionRequestHandler(this, web_contents_.get())); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 298 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, -1); | 284 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, -1); |
| 299 // When the last WebView is destroyed free all discardable memory allocated by | 285 // When the last WebView is destroyed free all discardable memory allocated by |
| 300 // Chromium, because the app process may continue to run for a long time | 286 // Chromium, because the app process may continue to run for a long time |
| 301 // without ever using another WebView. | 287 // without ever using another WebView. |
| 302 if (instance_count == 0) { | 288 if (instance_count == 0) { |
| 303 // TODO(timvolodine): consider moving NotifyMemoryPressure to | 289 // TODO(timvolodine): consider moving NotifyMemoryPressure to |
| 304 // AwContentsLifecycleNotifier (crbug.com/522988). | 290 // AwContentsLifecycleNotifier (crbug.com/522988). |
| 305 base::MemoryPressureListener::NotifyMemoryPressure( | 291 base::MemoryPressureListener::NotifyMemoryPressure( |
| 306 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); | 292 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); |
| 307 } | 293 } |
| 294 if (functor_) { | |
|
boliu
2016/04/07 18:14:03
SetAwGLFunctor(nullptr) instead to avoid spreading
Tobias Sargeant
2016/04/07 21:07:35
Done.
| |
| 295 functor_->SetBrowserViewRenderer(nullptr); | |
| 296 } | |
| 308 AwContentsLifecycleNotifier::OnWebViewDestroyed(); | 297 AwContentsLifecycleNotifier::OnWebViewDestroyed(); |
| 309 } | 298 } |
| 310 | 299 |
| 311 base::android::ScopedJavaLocalRef<jobject> AwContents::GetWebContents( | 300 base::android::ScopedJavaLocalRef<jobject> AwContents::GetWebContents( |
| 312 JNIEnv* env, | 301 JNIEnv* env, |
| 313 const JavaParamRef<jobject>& obj) { | 302 const JavaParamRef<jobject>& obj) { |
| 314 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 303 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 315 DCHECK(web_contents_); | 304 DCHECK(web_contents_); |
| 316 if (!web_contents_) | 305 if (!web_contents_) |
| 317 return base::android::ScopedJavaLocalRef<jobject>(); | 306 return base::android::ScopedJavaLocalRef<jobject>(); |
| 318 | 307 |
| 319 return web_contents_->GetJavaWebContents(); | 308 return web_contents_->GetJavaWebContents(); |
| 320 } | 309 } |
| 321 | 310 |
| 311 void AwContents::SetAwGLFunctor(JNIEnv* env, | |
| 312 const base::android::JavaParamRef<jobject>& obj, | |
| 313 jlong gl_functor) { | |
| 314 AwGLFunctor* functor = reinterpret_cast<AwGLFunctor*>(gl_functor); | |
| 315 if (functor != functor_) { | |
|
boliu
2016/04/07 18:14:03
style: you can unindent the rest of the function i
Tobias Sargeant
2016/04/07 21:07:36
Done.
boliu
2016/04/07 21:30:32
No you didn't :p
| |
| 316 if (functor_) { | |
| 317 functor_->SetBrowserViewRenderer(nullptr); | |
| 318 } | |
| 319 functor_ = functor; | |
| 320 if (functor_) { | |
| 321 browser_view_renderer_.SetRenderThreadManager( | |
| 322 functor_->GetRenderThreadManager()); | |
| 323 functor_->SetBrowserViewRenderer(&browser_view_renderer_); | |
| 324 } else { | |
| 325 browser_view_renderer_.SetRenderThreadManager(nullptr); | |
| 326 } | |
| 327 } | |
| 328 } | |
| 329 | |
| 322 void AwContents::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 330 void AwContents::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 323 java_ref_.reset(); | 331 java_ref_.reset(); |
| 324 delete this; | 332 delete this; |
| 325 } | 333 } |
| 326 | 334 |
| 327 static jlong Init(JNIEnv* env, | 335 static jlong Init(JNIEnv* env, |
| 328 const JavaParamRef<jclass>&, | 336 const JavaParamRef<jclass>&, |
| 329 const JavaParamRef<jobject>& browser_context) { | 337 const JavaParamRef<jobject>& browser_context) { |
| 330 // TODO(joth): Use |browser_context| to get the native BrowserContext, rather | 338 // TODO(joth): Use |browser_context| to get the native BrowserContext, rather |
| 331 // than hard-code the default instance lookup here. | 339 // than hard-code the default instance lookup here. |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 347 const JavaParamRef<jclass>&, | 355 const JavaParamRef<jclass>&, |
| 348 jlong function_table) { | 356 jlong function_table) { |
| 349 RasterHelperSetAwDrawSWFunctionTable( | 357 RasterHelperSetAwDrawSWFunctionTable( |
| 350 reinterpret_cast<AwDrawSWFunctionTable*>(function_table)); | 358 reinterpret_cast<AwDrawSWFunctionTable*>(function_table)); |
| 351 } | 359 } |
| 352 | 360 |
| 353 static void SetAwDrawGLFunctionTable(JNIEnv* env, | 361 static void SetAwDrawGLFunctionTable(JNIEnv* env, |
| 354 const JavaParamRef<jclass>&, | 362 const JavaParamRef<jclass>&, |
| 355 jlong function_table) {} | 363 jlong function_table) {} |
| 356 | 364 |
| 357 static jlong GetAwDrawGLFunction(JNIEnv* env, const JavaParamRef<jclass>&) { | |
| 358 return reinterpret_cast<intptr_t>(&DrawGLFunction); | |
| 359 } | |
| 360 | |
| 361 // static | 365 // static |
| 362 jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) { | 366 jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) { |
| 363 return base::subtle::NoBarrier_Load(&g_instance_count); | 367 return base::subtle::NoBarrier_Load(&g_instance_count); |
| 364 } | 368 } |
| 365 | 369 |
| 366 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, | |
| 367 const JavaParamRef<jobject>& obj) { | |
| 368 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
| 369 return reinterpret_cast<intptr_t>(&render_thread_manager_); | |
| 370 } | |
| 371 | |
| 372 namespace { | 370 namespace { |
| 373 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, | 371 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, |
| 374 bool has_images) { | 372 bool has_images) { |
| 375 Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), | 373 Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), |
| 376 has_images, | 374 has_images, |
| 377 message.obj()); | 375 message.obj()); |
| 378 } | 376 } |
| 379 } // namespace | 377 } // namespace |
| 380 | 378 |
| 381 void AwContents::DocumentHasImages(JNIEnv* env, | 379 void AwContents::DocumentHasImages(JNIEnv* env, |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 744 return; | 742 return; |
| 745 | 743 |
| 746 Java_AwContents_onReceivedTouchIconUrl( | 744 Java_AwContents_onReceivedTouchIconUrl( |
| 747 env, obj.obj(), ConvertUTF8ToJavaString(env, url).obj(), precomposed); | 745 env, obj.obj(), ConvertUTF8ToJavaString(env, url).obj(), precomposed); |
| 748 } | 746 } |
| 749 | 747 |
| 750 void AwContents::OnParentDrawConstraintsUpdated() { | 748 void AwContents::OnParentDrawConstraintsUpdated() { |
| 751 browser_view_renderer_.OnParentDrawConstraintsUpdated(); | 749 browser_view_renderer_.OnParentDrawConstraintsUpdated(); |
| 752 } | 750 } |
| 753 | 751 |
| 754 bool AwContents::RequestDrawGL(bool wait_for_completion) { | |
| 755 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
| 756 JNIEnv* env = AttachCurrentThread(); | |
| 757 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | |
| 758 if (obj.is_null()) | |
| 759 return false; | |
| 760 return Java_AwContents_requestDrawGL(env, obj.obj(), wait_for_completion); | |
| 761 } | |
| 762 | |
| 763 void AwContents::PostInvalidate() { | 752 void AwContents::PostInvalidate() { |
| 764 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 753 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 765 JNIEnv* env = AttachCurrentThread(); | 754 JNIEnv* env = AttachCurrentThread(); |
| 766 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 755 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| 767 if (!obj.is_null()) | 756 if (!obj.is_null()) |
| 768 Java_AwContents_postInvalidateOnAnimation(env, obj.obj()); | 757 Java_AwContents_postInvalidateOnAnimation(env, obj.obj()); |
| 769 } | 758 } |
| 770 | 759 |
| 771 void AwContents::OnNewPicture() { | 760 void AwContents::OnNewPicture() { |
| 772 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 761 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 888 const JavaParamRef<jobject>& obj, | 877 const JavaParamRef<jobject>& obj, |
| 889 int w, | 878 int w, |
| 890 int h) { | 879 int h) { |
| 891 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 880 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 892 browser_view_renderer_.OnAttachedToWindow(w, h); | 881 browser_view_renderer_.OnAttachedToWindow(w, h); |
| 893 } | 882 } |
| 894 | 883 |
| 895 void AwContents::OnDetachedFromWindow(JNIEnv* env, | 884 void AwContents::OnDetachedFromWindow(JNIEnv* env, |
| 896 const JavaParamRef<jobject>& obj) { | 885 const JavaParamRef<jobject>& obj) { |
| 897 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 886 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 898 render_thread_manager_.DeleteHardwareRendererOnUI(); | |
| 899 browser_view_renderer_.OnDetachedFromWindow(); | 887 browser_view_renderer_.OnDetachedFromWindow(); |
| 900 } | 888 } |
| 901 | 889 |
| 902 bool AwContents::IsVisible(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 890 bool AwContents::IsVisible(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 903 return browser_view_renderer_.IsClientVisible(); | 891 return browser_view_renderer_.IsClientVisible(); |
| 904 } | 892 } |
| 905 | 893 |
| 906 void AwContents::DetachFunctorFromView() { | |
| 907 JNIEnv* env = AttachCurrentThread(); | |
| 908 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | |
| 909 if (!obj.is_null()) | |
| 910 Java_AwContents_detachFunctorFromView(env, obj.obj()); | |
| 911 } | |
| 912 | |
| 913 base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetOpaqueState( | 894 base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetOpaqueState( |
| 914 JNIEnv* env, | 895 JNIEnv* env, |
| 915 const JavaParamRef<jobject>& obj) { | 896 const JavaParamRef<jobject>& obj) { |
| 916 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 897 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 917 // Required optimization in WebViewClassic to not save any state if | 898 // Required optimization in WebViewClassic to not save any state if |
| 918 // there has been no navigations. | 899 // there has been no navigations. |
| 919 if (!web_contents_->GetController().GetEntryCount()) | 900 if (!web_contents_->GetController().GetEntryCount()) |
| 920 return ScopedJavaLocalRef<jbyteArray>(); | 901 return ScopedJavaLocalRef<jbyteArray>(); |
| 921 | 902 |
| 922 base::Pickle pickle; | 903 base::Pickle pickle; |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1234 // Not urgent enough. TRIM_MEMORY_UI_HIDDEN is treated specially because | 1215 // Not urgent enough. TRIM_MEMORY_UI_HIDDEN is treated specially because |
| 1235 // it does not indicate memory pressure, but merely that the app is | 1216 // it does not indicate memory pressure, but merely that the app is |
| 1236 // backgrounded. | 1217 // backgrounded. |
| 1237 if (level < TRIM_MEMORY_RUNNING_LOW || level == TRIM_MEMORY_UI_HIDDEN) | 1218 if (level < TRIM_MEMORY_RUNNING_LOW || level == TRIM_MEMORY_UI_HIDDEN) |
| 1238 return; | 1219 return; |
| 1239 | 1220 |
| 1240 // Do not release resources on view we expect to get DrawGL soon. | 1221 // Do not release resources on view we expect to get DrawGL soon. |
| 1241 if (level < TRIM_MEMORY_BACKGROUND && visible) | 1222 if (level < TRIM_MEMORY_BACKGROUND && visible) |
| 1242 return; | 1223 return; |
| 1243 | 1224 |
| 1244 if (level >= TRIM_MEMORY_MODERATE) | |
| 1245 render_thread_manager_.DeleteHardwareRendererOnUI(); | |
| 1246 | |
| 1247 browser_view_renderer_.TrimMemory(); | 1225 browser_view_renderer_.TrimMemory(); |
| 1248 } | 1226 } |
| 1249 | 1227 |
| 1250 // TODO(sgurun) add support for posting a frame whose name is known (only | 1228 // TODO(sgurun) add support for posting a frame whose name is known (only |
| 1251 // main frame is supported at this time, see crbug.com/389721) | 1229 // main frame is supported at this time, see crbug.com/389721) |
| 1252 void AwContents::PostMessageToFrame(JNIEnv* env, | 1230 void AwContents::PostMessageToFrame(JNIEnv* env, |
| 1253 const JavaParamRef<jobject>& obj, | 1231 const JavaParamRef<jobject>& obj, |
| 1254 const JavaParamRef<jstring>& frame_name, | 1232 const JavaParamRef<jstring>& frame_name, |
| 1255 const JavaParamRef<jstring>& message, | 1233 const JavaParamRef<jstring>& message, |
| 1256 const JavaParamRef<jstring>& target_origin, | 1234 const JavaParamRef<jstring>& target_origin, |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1312 const JavaParamRef<jobject>& obj) { | 1290 const JavaParamRef<jobject>& obj) { |
| 1313 web_contents_->ResumeLoadingCreatedWebContents(); | 1291 web_contents_->ResumeLoadingCreatedWebContents(); |
| 1314 } | 1292 } |
| 1315 | 1293 |
| 1316 void SetShouldDownloadFavicons(JNIEnv* env, | 1294 void SetShouldDownloadFavicons(JNIEnv* env, |
| 1317 const JavaParamRef<jclass>& jclazz) { | 1295 const JavaParamRef<jclass>& jclazz) { |
| 1318 g_should_download_favicons = true; | 1296 g_should_download_favicons = true; |
| 1319 } | 1297 } |
| 1320 | 1298 |
| 1321 } // namespace android_webview | 1299 } // namespace android_webview |
| OLD | NEW |