Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1284)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ContentReadbackHandler.java

Issue 297683005: android: add Java-side support for browser compositor async readback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed tedchoc comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/ContentReadbackHandler.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentReadbackHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentReadbackHandler.java
index aab9aaa55c51b4651cd96c157eb42592185c8f4d..15226d51462bd260af41ce2730a3dcec266ea143 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentReadbackHandler.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentReadbackHandler.java
@@ -11,6 +11,7 @@ import android.util.SparseArray;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils;
+import org.chromium.ui.base.WindowAndroid;
/**
* A class for reading back content.
@@ -20,17 +21,17 @@ public abstract class ContentReadbackHandler {
/**
* A callback interface for content readback into a bitmap.
*/
- public static interface GetContentBitmapCallback {
+ public static interface GetBitmapCallback {
/**
* Called when the content readback finishes.
* @param success Indicates whether the readback succeeded or not.
* @param bitmap The {@link Bitmap} of the content.
*/
- public void onFinishGetContentBitmap(boolean success, Bitmap bitmap);
+ public void onFinishGetBitmap(boolean success, Bitmap bitmap);
}
private int mNextReadbackId = 1;
- private SparseArray<GetContentBitmapCallback> mGetContentBitmapRequests;
+ private SparseArray<GetBitmapCallback> mGetBitmapRequests;
private long mNativeContentReadbackHandler;
@@ -38,7 +39,7 @@ public abstract class ContentReadbackHandler {
* Creates a {@link ContentReadbackHandler}.
*/
public ContentReadbackHandler() {
- mGetContentBitmapRequests = new SparseArray<GetContentBitmapCallback>();
+ mGetBitmapRequests = new SparseArray<GetBitmapCallback>();
}
/**
@@ -58,11 +59,11 @@ public abstract class ContentReadbackHandler {
@CalledByNative
- private void notifyGetContentBitmapFinished(int readbackId, boolean success, Bitmap bitmap) {
- GetContentBitmapCallback callback = mGetContentBitmapRequests.get(readbackId);
+ private void notifyGetBitmapFinished(int readbackId, boolean success, Bitmap bitmap) {
+ GetBitmapCallback callback = mGetBitmapRequests.get(readbackId);
if (callback != null) {
- mGetContentBitmapRequests.delete(readbackId);
- callback.onFinishGetContentBitmap(success, bitmap);
+ mGetBitmapRequests.delete(readbackId);
+ callback.onFinishGetBitmap(success, bitmap);
} else {
// readback Id is unregistered.
assert false : "Readback finished for unregistered Id: " + readbackId;
@@ -80,21 +81,40 @@ public abstract class ContentReadbackHandler {
* @param callback The callback to be executed after readback completes.
*/
public void getContentBitmapAsync(float scale, Rect srcRect, ContentViewCore view,
- GetContentBitmapCallback callback) {
+ GetBitmapCallback callback) {
if (!readyForReadback()) {
- callback.onFinishGetContentBitmap(false, null);
+ callback.onFinishGetBitmap(false, null);
return;
}
ThreadUtils.assertOnUiThread();
int readbackId = mNextReadbackId++;
- mGetContentBitmapRequests.put(readbackId, callback);
+ mGetBitmapRequests.put(readbackId, callback);
nativeGetContentBitmap(mNativeContentReadbackHandler, readbackId, scale,
Bitmap.Config.ARGB_8888, srcRect.top, srcRect.left, srcRect.width(),
srcRect.height(), view);
}
/**
+ * Asynchronously, grab a bitmap of the current browser compositor root layer.
+ *
+ * @param windowAndroid The window that hosts the compositor.
+ * @param callback The callback to be executed after readback completes.
+ */
+ public void getCompositorBitmapAsync(WindowAndroid windowAndroid, GetBitmapCallback callback) {
+ if (!readyForReadback()) {
+ callback.onFinishGetBitmap(false, null);
+ return;
+ }
+ ThreadUtils.assertOnUiThread();
+
+ int readbackId = mNextReadbackId++;
+ mGetBitmapRequests.put(readbackId, callback);
+ nativeGetCompositorBitmap(mNativeContentReadbackHandler, readbackId,
+ windowAndroid.getNativePointer());
+ }
+
+ /**
* Implemented by the owner of this class to signal whether readback is possible or not.
* @return Whether readback is possible or not.
*/
@@ -105,4 +125,6 @@ public abstract class ContentReadbackHandler {
private native void nativeGetContentBitmap(long nativeContentReadbackHandler, int readback_id,
float scale, Bitmap.Config config, float x, float y, float width, float height,
Object contentViewCore);
+ private native void nativeGetCompositorBitmap(long nativeContentReadbackHandler,
+ int readback_id, long nativeWindowAndroid);
}
« no previous file with comments | « content/browser/renderer_host/compositor_impl_android.cc ('k') | content/public/browser/android/compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698