diff options
author | kristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-29 01:26:19 +0000 |
---|---|---|
committer | kristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-29 01:26:19 +0000 |
commit | 2f03dca3b69a9975a4bd53a6b00947bf8cb3be6e (patch) | |
tree | c9c79661a00de16ea16b9af5f9ea274a60ef5d54 /android_webview/java | |
parent | 1b8f8cd4545168b1b36b5ae066acc06e17963650 (diff) | |
download | chromium_src-2f03dca3b69a9975a4bd53a6b00947bf8cb3be6e.zip chromium_src-2f03dca3b69a9975a4bd53a6b00947bf8cb3be6e.tar.gz chromium_src-2f03dca3b69a9975a4bd53a6b00947bf8cb3be6e.tar.bz2 |
Fix capture picture implementation
Capturing the whole content, and starting the capture from the origin.
BUG=224003
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/19864002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214151 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/java')
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/AwContents.java | 6 | ||||
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 55ebcbd..bd64336 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -671,7 +671,9 @@ public class AwContents { } public Picture capturePicture() { - return nativeCapturePicture(mNativeAwContents); + return nativeCapturePicture(mNativeAwContents, + mScrollOffsetManager.computeHorizontalScrollRange(), + mScrollOffsetManager.computeVerticalScrollRange()); } /** @@ -1774,7 +1776,7 @@ public class AwContents { private native void nativeSetBackgroundColor(int nativeAwContents, int color); private native int nativeGetAwDrawGLViewContext(int nativeAwContents); - private native Picture nativeCapturePicture(int nativeAwContents); + private native Picture nativeCapturePicture(int nativeAwContents, int width, int height); private native void nativeEnableOnNewPicture(int nativeAwContents, boolean enabled); private native void nativeInvokeGeolocationCallback( 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 cd06606..fb54279 100644 --- a/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java +++ b/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java @@ -8,6 +8,7 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Picture; +import android.util.Log; import android.util.LruCache; import org.chromium.base.CalledByNative; @@ -19,6 +20,7 @@ import org.chromium.content.common.TraceEvent; */ @JNINamespace("android_webview") public class JavaBrowserViewRendererHelper { + private static final String LOGTAG = "JavaBrowserViewRendererHelper"; // Until the full HW path is ready, we limit to 5 AwContents on the screen at once. private static LruCache<Integer, Bitmap> sBitmapCache = new LruCache<Integer, Bitmap>(5); @@ -39,7 +41,12 @@ public class JavaBrowserViewRendererHelper { } Bitmap bitmap = sBitmapCache.get(ownerKey); if (bitmap == null || bitmap.getWidth() != width || bitmap.getHeight() != height) { - bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + try { + bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + } catch (OutOfMemoryError e) { + android.util.Log.w(LOGTAG, "Error allocating bitmap"); + return null; + } if (ownerKey != 0) { if (sBitmapCache.size() > AwContents.getNativeInstanceCount()) { sBitmapCache.evictAll(); |