Loading services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +19 −59 Original line number Diff line number Diff line Loading @@ -35,7 +35,6 @@ import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK; import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK; import static com.android.server.pm.UserManagerService.enforceCurrentUserIfVisibleBackgroundEnabled; import static com.android.window.flags.Flags.deleteCaptureDisplay; import android.accessibilityservice.AccessibilityGestureEvent; import android.accessibilityservice.AccessibilityService; Loading @@ -62,7 +61,6 @@ import android.graphics.ParcelableColorSpace; import android.graphics.Region; import android.hardware.HardwareBuffer; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManagerInternal; import android.hardware.usb.UsbDevice; import android.os.Binder; import android.os.Build; Loading Loading @@ -104,7 +102,6 @@ import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection; import com.android.internal.os.SomeArgs; import com.android.internal.util.DumpUtils; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.accessibility.AccessibilityWindowManager.RemoteAccessibilityConnection; import com.android.server.accessibility.magnification.MagnificationProcessor; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -1513,7 +1510,6 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ return; } final long identity = Binder.clearCallingIdentity(); if (deleteCaptureDisplay()) { try { ScreenCapture.ScreenCaptureListener screenCaptureListener = new ScreenCapture.ScreenCaptureListener( Loading @@ -1534,28 +1530,10 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } finally { Binder.restoreCallingIdentity(identity); } } else { try { mMainHandler.post(PooledLambda.obtainRunnable((nonArg) -> { final ScreenshotHardwareBuffer screenshotBuffer = LocalServices .getService(DisplayManagerInternal.class).userScreenshot(displayId); if (screenshotBuffer != null) { sendScreenshotSuccess(screenshotBuffer, callback); } else { sendScreenshotFailure( AccessibilityService.ERROR_TAKE_SCREENSHOT_INVALID_DISPLAY, callback); } }, null).recycleOnUse()); } finally { Binder.restoreCallingIdentity(identity); } } } private void sendScreenshotSuccess(ScreenshotHardwareBuffer screenshotBuffer, RemoteCallback callback) { if (deleteCaptureDisplay()) { mMainHandler.post(PooledLambda.obtainRunnable((nonArg) -> { final HardwareBuffer hardwareBuffer = screenshotBuffer.getHardwareBuffer(); final ParcelableColorSpace colorSpace = Loading @@ -1574,24 +1552,6 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ callback.sendResult(payload); hardwareBuffer.close(); }, null).recycleOnUse()); } else { final HardwareBuffer hardwareBuffer = screenshotBuffer.getHardwareBuffer(); final ParcelableColorSpace colorSpace = new ParcelableColorSpace(screenshotBuffer.getColorSpace()); final Bundle payload = new Bundle(); payload.putInt(KEY_ACCESSIBILITY_SCREENSHOT_STATUS, AccessibilityService.TAKE_SCREENSHOT_SUCCESS); payload.putParcelable(KEY_ACCESSIBILITY_SCREENSHOT_HARDWAREBUFFER, hardwareBuffer); payload.putParcelable(KEY_ACCESSIBILITY_SCREENSHOT_COLORSPACE, colorSpace); payload.putLong(KEY_ACCESSIBILITY_SCREENSHOT_TIMESTAMP, SystemClock.uptimeMillis()); // Send back the result. callback.sendResult(payload); hardwareBuffer.close(); } } private void sendScreenshotFailure(@AccessibilityService.ScreenshotErrorCode int errorCode, Loading services/core/java/com/android/server/wm/ScreenRotationAnimation.java +1 −31 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_SCREEN_ROTATI import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.utils.CoordinateTransforms.computeRotationMatrix; import static com.android.window.flags.Flags.deleteCaptureDisplay; import android.animation.ArgbEvaluator; import android.content.Context; Loading @@ -41,11 +40,9 @@ import android.graphics.Matrix; import android.graphics.Point; import android.graphics.Rect; import android.hardware.HardwareBuffer; import android.os.IBinder; import android.os.Trace; import android.util.Slog; import android.util.proto.ProtoOutputStream; import android.view.DisplayAddress; import android.view.DisplayInfo; import android.view.Surface; import android.view.Surface.OutOfResourcesException; Loading @@ -58,7 +55,6 @@ import android.window.ScreenCapture; import com.android.internal.R; import com.android.internal.policy.TransitionAnimation; import com.android.internal.protolog.ProtoLog; import com.android.server.display.DisplayControl; import com.android.server.wm.SurfaceAnimator.AnimationType; import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback; Loading Loading @@ -171,33 +167,7 @@ class ScreenRotationAnimation { try { final ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer; if (isSizeChanged && !deleteCaptureDisplay()) { final DisplayAddress address = displayInfo.address; if (!(address instanceof DisplayAddress.Physical)) { Slog.e(TAG, "Display does not have a physical address: " + displayId); return; } final DisplayAddress.Physical physicalAddress = (DisplayAddress.Physical) address; final IBinder displayToken = DisplayControl.getPhysicalDisplayToken( physicalAddress.getPhysicalDisplayId()); if (displayToken == null) { Slog.e(TAG, "Display token is null."); return; } // Temporarily not skip screenshot for the rounded corner overlays and screenshot // the whole display to include the rounded corner overlays. setSkipScreenshotForRoundedCornerOverlays(false, t); mRoundedCornerOverlay = displayContent.findRoundedCornerOverlays(); final ScreenCapture.DisplayCaptureArgs captureArgs = new ScreenCapture.DisplayCaptureArgs.Builder(displayToken) .setSourceCrop(new Rect(0, 0, width, height)) .setAllowProtected(true) .setCaptureSecureLayers(true) .setHintForSeamlessTransition(true) .build(); screenshotBuffer = ScreenCapture.captureDisplay(captureArgs); } else if (isSizeChanged) { if (isSizeChanged) { // Temporarily not skip screenshot for the rounded corner overlays and screenshot // the whole display to include the rounded corner overlays. setSkipScreenshotForRoundedCornerOverlays(false, t); Loading Loading
services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +19 −59 Original line number Diff line number Diff line Loading @@ -35,7 +35,6 @@ import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK; import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK; import static com.android.server.pm.UserManagerService.enforceCurrentUserIfVisibleBackgroundEnabled; import static com.android.window.flags.Flags.deleteCaptureDisplay; import android.accessibilityservice.AccessibilityGestureEvent; import android.accessibilityservice.AccessibilityService; Loading @@ -62,7 +61,6 @@ import android.graphics.ParcelableColorSpace; import android.graphics.Region; import android.hardware.HardwareBuffer; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManagerInternal; import android.hardware.usb.UsbDevice; import android.os.Binder; import android.os.Build; Loading Loading @@ -104,7 +102,6 @@ import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection; import com.android.internal.os.SomeArgs; import com.android.internal.util.DumpUtils; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.accessibility.AccessibilityWindowManager.RemoteAccessibilityConnection; import com.android.server.accessibility.magnification.MagnificationProcessor; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -1513,7 +1510,6 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ return; } final long identity = Binder.clearCallingIdentity(); if (deleteCaptureDisplay()) { try { ScreenCapture.ScreenCaptureListener screenCaptureListener = new ScreenCapture.ScreenCaptureListener( Loading @@ -1534,28 +1530,10 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } finally { Binder.restoreCallingIdentity(identity); } } else { try { mMainHandler.post(PooledLambda.obtainRunnable((nonArg) -> { final ScreenshotHardwareBuffer screenshotBuffer = LocalServices .getService(DisplayManagerInternal.class).userScreenshot(displayId); if (screenshotBuffer != null) { sendScreenshotSuccess(screenshotBuffer, callback); } else { sendScreenshotFailure( AccessibilityService.ERROR_TAKE_SCREENSHOT_INVALID_DISPLAY, callback); } }, null).recycleOnUse()); } finally { Binder.restoreCallingIdentity(identity); } } } private void sendScreenshotSuccess(ScreenshotHardwareBuffer screenshotBuffer, RemoteCallback callback) { if (deleteCaptureDisplay()) { mMainHandler.post(PooledLambda.obtainRunnable((nonArg) -> { final HardwareBuffer hardwareBuffer = screenshotBuffer.getHardwareBuffer(); final ParcelableColorSpace colorSpace = Loading @@ -1574,24 +1552,6 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ callback.sendResult(payload); hardwareBuffer.close(); }, null).recycleOnUse()); } else { final HardwareBuffer hardwareBuffer = screenshotBuffer.getHardwareBuffer(); final ParcelableColorSpace colorSpace = new ParcelableColorSpace(screenshotBuffer.getColorSpace()); final Bundle payload = new Bundle(); payload.putInt(KEY_ACCESSIBILITY_SCREENSHOT_STATUS, AccessibilityService.TAKE_SCREENSHOT_SUCCESS); payload.putParcelable(KEY_ACCESSIBILITY_SCREENSHOT_HARDWAREBUFFER, hardwareBuffer); payload.putParcelable(KEY_ACCESSIBILITY_SCREENSHOT_COLORSPACE, colorSpace); payload.putLong(KEY_ACCESSIBILITY_SCREENSHOT_TIMESTAMP, SystemClock.uptimeMillis()); // Send back the result. callback.sendResult(payload); hardwareBuffer.close(); } } private void sendScreenshotFailure(@AccessibilityService.ScreenshotErrorCode int errorCode, Loading
services/core/java/com/android/server/wm/ScreenRotationAnimation.java +1 −31 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_SCREEN_ROTATI import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.utils.CoordinateTransforms.computeRotationMatrix; import static com.android.window.flags.Flags.deleteCaptureDisplay; import android.animation.ArgbEvaluator; import android.content.Context; Loading @@ -41,11 +40,9 @@ import android.graphics.Matrix; import android.graphics.Point; import android.graphics.Rect; import android.hardware.HardwareBuffer; import android.os.IBinder; import android.os.Trace; import android.util.Slog; import android.util.proto.ProtoOutputStream; import android.view.DisplayAddress; import android.view.DisplayInfo; import android.view.Surface; import android.view.Surface.OutOfResourcesException; Loading @@ -58,7 +55,6 @@ import android.window.ScreenCapture; import com.android.internal.R; import com.android.internal.policy.TransitionAnimation; import com.android.internal.protolog.ProtoLog; import com.android.server.display.DisplayControl; import com.android.server.wm.SurfaceAnimator.AnimationType; import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback; Loading Loading @@ -171,33 +167,7 @@ class ScreenRotationAnimation { try { final ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer; if (isSizeChanged && !deleteCaptureDisplay()) { final DisplayAddress address = displayInfo.address; if (!(address instanceof DisplayAddress.Physical)) { Slog.e(TAG, "Display does not have a physical address: " + displayId); return; } final DisplayAddress.Physical physicalAddress = (DisplayAddress.Physical) address; final IBinder displayToken = DisplayControl.getPhysicalDisplayToken( physicalAddress.getPhysicalDisplayId()); if (displayToken == null) { Slog.e(TAG, "Display token is null."); return; } // Temporarily not skip screenshot for the rounded corner overlays and screenshot // the whole display to include the rounded corner overlays. setSkipScreenshotForRoundedCornerOverlays(false, t); mRoundedCornerOverlay = displayContent.findRoundedCornerOverlays(); final ScreenCapture.DisplayCaptureArgs captureArgs = new ScreenCapture.DisplayCaptureArgs.Builder(displayToken) .setSourceCrop(new Rect(0, 0, width, height)) .setAllowProtected(true) .setCaptureSecureLayers(true) .setHintForSeamlessTransition(true) .build(); screenshotBuffer = ScreenCapture.captureDisplay(captureArgs); } else if (isSizeChanged) { if (isSizeChanged) { // Temporarily not skip screenshot for the rounded corner overlays and screenshot // the whole display to include the rounded corner overlays. setSkipScreenshotForRoundedCornerOverlays(false, t); Loading