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 | 8 |
9 #include "android_webview/browser/aw_browser_context.h" | 9 #include "android_webview/browser/aw_browser_context.h" |
10 #include "android_webview/browser/aw_browser_main_parts.h" | 10 #include "android_webview/browser/aw_browser_main_parts.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 ->DrawGL(draw_info); | 101 ->DrawGL(draw_info); |
102 } | 102 } |
103 } | 103 } |
104 | 104 |
105 namespace android_webview { | 105 namespace android_webview { |
106 | 106 |
107 namespace { | 107 namespace { |
108 | 108 |
109 bool g_should_download_favicons = false; | 109 bool g_should_download_favicons = false; |
110 | 110 |
| 111 bool g_force_auxiliary_bitmap_rendering = false; |
| 112 |
111 const void* kAwContentsUserDataKey = &kAwContentsUserDataKey; | 113 const void* kAwContentsUserDataKey = &kAwContentsUserDataKey; |
112 | 114 |
113 class AwContentsUserData : public base::SupportsUserData::Data { | 115 class AwContentsUserData : public base::SupportsUserData::Data { |
114 public: | 116 public: |
115 AwContentsUserData(AwContents* ptr) : contents_(ptr) {} | 117 AwContentsUserData(AwContents* ptr) : contents_(ptr) {} |
116 | 118 |
117 static AwContents* GetContents(WebContents* web_contents) { | 119 static AwContents* GetContents(WebContents* web_contents) { |
118 if (!web_contents) | 120 if (!web_contents) |
119 return NULL; | 121 return NULL; |
120 AwContentsUserData* data = static_cast<AwContentsUserData*>( | 122 AwContentsUserData* data = static_cast<AwContentsUserData*>( |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 static jlong Init(JNIEnv* env, jclass, jobject browser_context) { | 305 static jlong Init(JNIEnv* env, jclass, jobject browser_context) { |
304 // TODO(joth): Use |browser_context| to get the native BrowserContext, rather | 306 // TODO(joth): Use |browser_context| to get the native BrowserContext, rather |
305 // than hard-code the default instance lookup here. | 307 // than hard-code the default instance lookup here. |
306 scoped_ptr<WebContents> web_contents(content::WebContents::Create( | 308 scoped_ptr<WebContents> web_contents(content::WebContents::Create( |
307 content::WebContents::CreateParams(AwBrowserContext::GetDefault()))); | 309 content::WebContents::CreateParams(AwBrowserContext::GetDefault()))); |
308 // Return an 'uninitialized' instance; most work is deferred until the | 310 // Return an 'uninitialized' instance; most work is deferred until the |
309 // subsequent SetJavaPeers() call. | 311 // subsequent SetJavaPeers() call. |
310 return reinterpret_cast<intptr_t>(new AwContents(web_contents.Pass())); | 312 return reinterpret_cast<intptr_t>(new AwContents(web_contents.Pass())); |
311 } | 313 } |
312 | 314 |
| 315 static void SetForceAuxiliaryBitmapRendering( |
| 316 JNIEnv* env, |
| 317 jclass, |
| 318 jboolean force_auxiliary_bitmap_rendering) { |
| 319 g_force_auxiliary_bitmap_rendering = force_auxiliary_bitmap_rendering; |
| 320 } |
| 321 |
313 static void SetAwDrawSWFunctionTable(JNIEnv* env, jclass, | 322 static void SetAwDrawSWFunctionTable(JNIEnv* env, jclass, |
314 jlong function_table) { | 323 jlong function_table) { |
315 RasterHelperSetAwDrawSWFunctionTable( | 324 RasterHelperSetAwDrawSWFunctionTable( |
316 reinterpret_cast<AwDrawSWFunctionTable*>(function_table)); | 325 reinterpret_cast<AwDrawSWFunctionTable*>(function_table)); |
317 } | 326 } |
318 | 327 |
319 static void SetAwDrawGLFunctionTable(JNIEnv* env, jclass, | 328 static void SetAwDrawGLFunctionTable(JNIEnv* env, jclass, |
320 jlong function_table) { | 329 jlong function_table) { |
321 } | 330 } |
322 | 331 |
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 jint scroll_y, | 878 jint scroll_y, |
870 jint visible_left, | 879 jint visible_left, |
871 jint visible_top, | 880 jint visible_top, |
872 jint visible_right, | 881 jint visible_right, |
873 jint visible_bottom) { | 882 jint visible_bottom) { |
874 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 883 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
875 gfx::Vector2d scroll(scroll_x, scroll_y); | 884 gfx::Vector2d scroll(scroll_x, scroll_y); |
876 browser_view_renderer_.PrepareToDraw( | 885 browser_view_renderer_.PrepareToDraw( |
877 scroll, gfx::Rect(visible_left, visible_top, visible_right - visible_left, | 886 scroll, gfx::Rect(visible_left, visible_top, visible_right - visible_left, |
878 visible_bottom - visible_top)); | 887 visible_bottom - visible_top)); |
879 if (is_hardware_accelerated && browser_view_renderer_.attached_to_window()) { | 888 if (is_hardware_accelerated && browser_view_renderer_.attached_to_window() && |
| 889 !g_force_auxiliary_bitmap_rendering) { |
880 return browser_view_renderer_.OnDrawHardware(); | 890 return browser_view_renderer_.OnDrawHardware(); |
881 } | 891 } |
882 | 892 |
883 gfx::Size view_size = browser_view_renderer_.size(); | 893 gfx::Size view_size = browser_view_renderer_.size(); |
884 if (view_size.IsEmpty()) { | 894 if (view_size.IsEmpty()) { |
885 TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_EmptySize", | 895 TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_EmptySize", |
886 TRACE_EVENT_SCOPE_THREAD); | 896 TRACE_EVENT_SCOPE_THREAD); |
887 return false; | 897 return false; |
888 } | 898 } |
889 | 899 |
890 // TODO(hush): Right now webview size is passed in as the auxiliary bitmap | 900 // TODO(hush): Right now webview size is passed in as the auxiliary bitmap |
891 // size, which might hurt performace (only for software draws with auxiliary | 901 // size, which might hurt performace (only for software draws with auxiliary |
892 // bitmap). For better performance, get global visible rect, transform it | 902 // bitmap). For better performance, get global visible rect, transform it |
893 // from screen space to view space, then intersect with the webview in | 903 // from screen space to view space, then intersect with the webview in |
894 // viewspace. Use the resulting rect as the auxiliary bitmap. | 904 // viewspace. Use the resulting rect as the auxiliary bitmap. |
895 scoped_ptr<SoftwareCanvasHolder> canvas_holder = | 905 scoped_ptr<SoftwareCanvasHolder> canvas_holder = SoftwareCanvasHolder::Create( |
896 SoftwareCanvasHolder::Create(canvas, scroll, view_size); | 906 canvas, scroll, view_size, g_force_auxiliary_bitmap_rendering); |
897 if (!canvas_holder || !canvas_holder->GetCanvas()) { | 907 if (!canvas_holder || !canvas_holder->GetCanvas()) { |
898 TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_EmptySize", | 908 TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_EmptySize", |
899 TRACE_EVENT_SCOPE_THREAD); | 909 TRACE_EVENT_SCOPE_THREAD); |
900 return false; | 910 return false; |
901 } | 911 } |
902 return browser_view_renderer_.OnDrawSoftware(canvas_holder->GetCanvas()); | 912 return browser_view_renderer_.OnDrawSoftware(canvas_holder->GetCanvas()); |
903 } | 913 } |
904 | 914 |
905 void AwContents::SetPendingWebContentsForPopup( | 915 void AwContents::SetPendingWebContentsForPopup( |
906 scoped_ptr<content::WebContents> pending) { | 916 scoped_ptr<content::WebContents> pending) { |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1153 | 1163 |
1154 AwMessagePortServiceImpl::GetInstance()->CreateMessageChannel(env, ports, | 1164 AwMessagePortServiceImpl::GetInstance()->CreateMessageChannel(env, ports, |
1155 GetMessagePortMessageFilter()); | 1165 GetMessagePortMessageFilter()); |
1156 } | 1166 } |
1157 | 1167 |
1158 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { | 1168 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { |
1159 g_should_download_favicons = true; | 1169 g_should_download_favicons = true; |
1160 } | 1170 } |
1161 | 1171 |
1162 } // namespace android_webview | 1172 } // namespace android_webview |
OLD | NEW |