diff options
| author | 2020-10-30 15:57:37 +0000 | |
|---|---|---|
| committer | 2020-10-30 15:57:37 +0000 | |
| commit | 77672d8cd1513d60b7b5b02325d80abcafa37a02 (patch) | |
| tree | 724a747ccfd1342174a679ffe0898bd3cea0bc61 | |
| parent | 37bf178c5b987abaf4f37d63cb41d0c1029b1416 (diff) | |
| parent | 26fda2aa209719244a5e637ccc03c054dac74c35 (diff) | |
Merge "Add uid to CaptureArgs."
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 12 | ||||
| -rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 3 |
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"); |