summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chavi Weingarten <chaviw@google.com> 2020-10-30 15:57:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-10-30 15:57:37 +0000
commit77672d8cd1513d60b7b5b02325d80abcafa37a02 (patch)
tree724a747ccfd1342174a679ffe0898bd3cea0bc61
parent37bf178c5b987abaf4f37d63cb41d0c1029b1416 (diff)
parent26fda2aa209719244a5e637ccc03c054dac74c35 (diff)
Merge "Add uid to CaptureArgs."
-rw-r--r--core/java/android/view/SurfaceControl.java12
-rw-r--r--core/jni/android_view_SurfaceControl.cpp3
2 files changed, 15 insertions, 0 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 3a15aa26e357..9ea4c93b75c7 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -654,6 +654,7 @@ public final class SurfaceControl implements Parcelable {
private final float mFrameScale;
private final boolean mCaptureSecureLayers;
private final boolean mAllowProtected;
+ private final long mUid;
private CaptureArgs(Builder<? extends Builder<?>> builder) {
mPixelFormat = builder.mPixelFormat;
@@ -661,6 +662,7 @@ public final class SurfaceControl implements Parcelable {
mFrameScale = builder.mFrameScale;
mCaptureSecureLayers = builder.mCaptureSecureLayers;
mAllowProtected = builder.mAllowProtected;
+ mUid = builder.mUid;
}
/**
@@ -674,6 +676,7 @@ public final class SurfaceControl implements Parcelable {
private float mFrameScale = 1;
private boolean mCaptureSecureLayers;
private boolean mAllowProtected;
+ private long mUid = -1;
/**
* The desired pixel format of the returned buffer.
@@ -723,6 +726,15 @@ public final class SurfaceControl implements Parcelable {
}
/**
+ * Set the uid of the content that should be screenshot. The code will skip any surfaces
+ * that don't belong to the specified uid.
+ */
+ public T setUid(long uid) {
+ mUid = uid;
+ return getThis();
+ }
+
+ /**
* Each sub class should return itself to allow the builder to chain properly
*/
abstract T getThis();
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 94151b522c9c..17ced9f78f25 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -111,6 +111,7 @@ static struct {
jfieldID frameScale;
jfieldID captureSecureLayers;
jfieldID allowProtected;
+ jfieldID uid;
} gCaptureArgsClassInfo;
static struct {
@@ -371,6 +372,7 @@ static void getCaptureArgs(JNIEnv* env, jobject captureArgsObject, CaptureArgs&
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.captureSecureLayers);
captureArgs.allowProtected =
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.allowProtected);
+ captureArgs.uid = env->GetLongField(captureArgsObject, gCaptureArgsClassInfo.uid);
}
static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env,
@@ -1895,6 +1897,7 @@ int register_android_view_SurfaceControl(JNIEnv* env)
GetFieldIDOrDie(env, captureArgsClazz, "mCaptureSecureLayers", "Z");
gCaptureArgsClassInfo.allowProtected =
GetFieldIDOrDie(env, captureArgsClazz, "mAllowProtected", "Z");
+ gCaptureArgsClassInfo.uid = GetFieldIDOrDie(env, captureArgsClazz, "mUid", "J");
jclass displayCaptureArgsClazz =
FindClassOrDie(env, "android/view/SurfaceControl$DisplayCaptureArgs");