diff options
author | joth@chromium.org <joth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-05 03:17:06 +0000 |
---|---|---|
committer | joth@chromium.org <joth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-05 03:17:06 +0000 |
commit | f2d22f38c49c91f1c6afaf0f9966129b950d5ebc (patch) | |
tree | 35a96ddf782191fdf943568373bc0f6e89b05cc3 /android_webview | |
parent | 551dfc6b4bbf66440f6f976bdf18725d7a87e167 (diff) | |
download | chromium_src-f2d22f38c49c91f1c6afaf0f9966129b950d5ebc.zip chromium_src-f2d22f38c49c91f1c6afaf0f9966129b950d5ebc.tar.gz chromium_src-f2d22f38c49c91f1c6afaf0f9966129b950d5ebc.tar.bz2 |
Fix error in fallback SW rendering
The clip-observing auxiliary bitmap needs to be translated on screen
in accordance with the top-left corner of the clipping.
BUG=
Review URL: https://chromiumcodereview.appspot.com/16290010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204142 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
6 files changed, 17 insertions, 9 deletions
diff --git a/android_webview/browser/browser_view_renderer.h b/android_webview/browser/browser_view_renderer.h index f372256..86c1ea9 100644 --- a/android_webview/browser/browser_view_renderer.h +++ b/android_webview/browser/browser_view_renderer.h @@ -60,7 +60,9 @@ class BrowserViewRenderer { virtual void DrawBitmapIntoCanvas( JNIEnv* env, const base::android::JavaRef<jobject>& jbitmap, - const base::android::JavaRef<jobject>& jcanvas) = 0; + const base::android::JavaRef<jobject>& jcanvas, + int x, + int y) = 0; // Creates a Java Picture object that records drawing the provided Bitmap. virtual base::android::ScopedJavaLocalRef<jobject> RecordBitmapIntoPicture( diff --git a/android_webview/browser/browser_view_renderer_impl.cc b/android_webview/browser/browser_view_renderer_impl.cc index 9f790be..bfd8f4b 100644 --- a/android_webview/browser/browser_view_renderer_impl.cc +++ b/android_webview/browser/browser_view_renderer_impl.cc @@ -353,7 +353,8 @@ bool BrowserViewRendererImpl::DrawSW(jobject java_canvas, } ScopedJavaLocalRef<jobject> jcanvas(env, java_canvas); - java_helper_->DrawBitmapIntoCanvas(env, jbitmap, jcanvas); + java_helper_->DrawBitmapIntoCanvas(env, jbitmap, jcanvas, + clip.x(), clip.y()); return true; } diff --git a/android_webview/browser/in_process_view_renderer.cc b/android_webview/browser/in_process_view_renderer.cc index 73b8685..353d4c0 100644 --- a/android_webview/browser/in_process_view_renderer.cc +++ b/android_webview/browser/in_process_view_renderer.cc @@ -408,7 +408,8 @@ bool InProcessViewRenderer::DrawSWInternal(jobject java_canvas, } ScopedJavaLocalRef<jobject> jcanvas(env, java_canvas); - java_helper_->DrawBitmapIntoCanvas(env, jbitmap, jcanvas); + java_helper_->DrawBitmapIntoCanvas(env, jbitmap, jcanvas, + clip.x(), clip.y()); return true; } diff --git a/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java b/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java index 7abf59c..404743a 100644 --- a/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java +++ b/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java @@ -51,8 +51,8 @@ public class JavaBrowserViewRendererHelper { * Used for convenience from the native side and other static helper methods. */ @CalledByNative - private static void drawBitmapIntoCanvas(Bitmap bitmap, Canvas canvas) { - canvas.drawBitmap(bitmap, 0, 0, null); + private static void drawBitmapIntoCanvas(Bitmap bitmap, Canvas canvas, int x, int y) { + canvas.drawBitmap(bitmap, x, y, null); } /** @@ -64,7 +64,7 @@ public class JavaBrowserViewRendererHelper { Picture picture = new Picture(); if (bitmap != null) { Canvas recordingCanvas = picture.beginRecording(bitmap.getWidth(), bitmap.getHeight()); - drawBitmapIntoCanvas(bitmap, recordingCanvas); + drawBitmapIntoCanvas(bitmap, recordingCanvas, 0, 0); picture.endRecording(); } return picture; diff --git a/android_webview/native/java_browser_view_renderer_helper.cc b/android_webview/native/java_browser_view_renderer_helper.cc index 21ec095..2cb984f 100644 --- a/android_webview/native/java_browser_view_renderer_helper.cc +++ b/android_webview/native/java_browser_view_renderer_helper.cc @@ -33,10 +33,12 @@ ScopedJavaLocalRef<jobject> JavaBrowserViewRendererHelper::CreateBitmap( void JavaBrowserViewRendererHelper::DrawBitmapIntoCanvas( JNIEnv* env, const JavaRef<jobject>& jbitmap, - const JavaRef<jobject>& jcanvas) { + const JavaRef<jobject>& jcanvas, + int x, + int y) { TRACE_EVENT0("android_webview", "RendererHelper::DrawBitmapIntoCanvas"); Java_JavaBrowserViewRendererHelper_drawBitmapIntoCanvas( - env, jbitmap.obj(), jcanvas.obj()); + env, jbitmap.obj(), jcanvas.obj(), x, y); } ScopedJavaLocalRef<jobject> diff --git a/android_webview/native/java_browser_view_renderer_helper.h b/android_webview/native/java_browser_view_renderer_helper.h index 97fd0c9..74c72e2 100644 --- a/android_webview/native/java_browser_view_renderer_helper.h +++ b/android_webview/native/java_browser_view_renderer_helper.h @@ -27,7 +27,9 @@ class JavaBrowserViewRendererHelper : public BrowserViewRenderer::JavaHelper { virtual void DrawBitmapIntoCanvas( JNIEnv* env, const base::android::JavaRef<jobject>& jbitmap, - const base::android::JavaRef<jobject>& jcanvas) OVERRIDE; + const base::android::JavaRef<jobject>& jcanvas, + int x, + int y) OVERRIDE; virtual base::android::ScopedJavaLocalRef<jobject> RecordBitmapIntoPicture( JNIEnv* env, const base::android::JavaRef<jobject>& jbitmap) OVERRIDE; |