Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 557a93e1 authored by Craig Mautner's avatar Craig Mautner Committed by Gerrit Code Review
Browse files

Merge "Set ScreenshotSurface secure if any secure content is shown."

parents 88517170 2b74a24a
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -199,7 +199,8 @@ class ScreenRotationAnimation {
    }

    public ScreenRotationAnimation(Context context, DisplayContent displayContent,
            SurfaceSession session, boolean inTransaction, boolean forceDefaultOrientation) {
            SurfaceSession session, boolean inTransaction, boolean forceDefaultOrientation,
            boolean isSecure) {
        mContext = context;
        mDisplayContent = displayContent;
        displayContent.getLogicalDisplayRect(mOriginalDisplayRect);
@@ -241,16 +242,21 @@ class ScreenRotationAnimation {

        try {
            try {
                int flags = SurfaceControl.HIDDEN;
                if (isSecure) {
                    flags |= SurfaceControl.SECURE;
                }

                if (WindowManagerService.DEBUG_SURFACE_TRACE) {
                    mSurfaceControl = new SurfaceTrace(session, "ScreenshotSurface",
                            mWidth, mHeight,
                            PixelFormat.OPAQUE, SurfaceControl.HIDDEN);
                            PixelFormat.OPAQUE, flags);
                    Slog.w(TAG, "ScreenRotationAnimation ctor: displayOffset="
                            + mOriginalDisplayRect.toShortString());
                } else {
                    mSurfaceControl = new SurfaceControl(session, "ScreenshotSurface",
                            mWidth, mHeight,
                            PixelFormat.OPAQUE, SurfaceControl.HIDDEN);
                            PixelFormat.OPAQUE, flags);
                }
                // capture a screenshot into the surface we just created
                Surface sur = new Surface();
+13 −1
Original line number Diff line number Diff line
@@ -9921,9 +9921,21 @@ public class WindowManagerService extends IWindowManager.Stub
                screenRotationAnimation.kill();
            }

            // Check whether the current screen contains any secure content.
            boolean isSecure = false;
            final WindowList windows = getDefaultWindowListLocked();
            final int N = windows.size();
            for (int i = 0; i < N; i++) {
                WindowState ws = windows.get(i);
                if (ws.isOnScreen() && (ws.mAttrs.flags & FLAG_SECURE) != 0) {
                    isSecure = true;
                    break;
                }
            }

            // TODO(multidisplay): rotation on main screen only.
            screenRotationAnimation = new ScreenRotationAnimation(mContext, displayContent,
                    mFxSession, inTransaction, mPolicy.isDefaultOrientationForced());
                    mFxSession, inTransaction, mPolicy.isDefaultOrientationForced(), isSecure);
            mAnimator.setScreenRotationAnimationLocked(displayId, screenRotationAnimation);
        }
    }