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

Commit 56c006f5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Prohibit showing system decorations on untrusted virtual displays" into qt-dev

parents f3c58fd2 891aed2a
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -4941,11 +4941,19 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
    boolean supportsSystemDecorations() {
        return (mWmService.mDisplayWindowSettings.shouldShowSystemDecorsLocked(this)
                || (mDisplay.getFlags() & FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS) != 0
                || mWmService.mForceDesktopModeOnExternalDisplays)
                || (mWmService.mForceDesktopModeOnExternalDisplays && !isUntrustedVirtualDisplay()))
                // VR virtual display will be used to run and render 2D app within a VR experience.
                && mDisplayId != mWmService.mVr2dDisplayId;
    }

    /**
     * @return {@code true} if the display is non-system created virtual display.
     */
    boolean isUntrustedVirtualDisplay() {
        return mDisplay.getType() == Display.TYPE_VIRTUAL
                && mDisplay.getOwnerUid() != Process.SYSTEM_UID;
    }

    /**
     * Re-parent the DisplayContent's top surfaces, {@link #mWindowingLayer} and
     * {@link #mOverlayLayer} to the specified SurfaceControl.
+2 −13
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.Display.TYPE_VIRTUAL;
import static android.view.WindowManager.DOCKED_INVALID;
import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW;
import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
@@ -164,7 +163,6 @@ import android.os.PowerManager;
import android.os.PowerManager.ServiceType;
import android.os.PowerManagerInternal;
import android.os.PowerSaveState;
import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ServiceManager;
@@ -6925,21 +6923,13 @@ public class WindowManagerService extends IWindowManager.Stub
                        + "not exist: " + displayId);
                return false;
            }
            final Display display = displayContent.getDisplay();
            if (isUntrustedVirtualDisplay(display)) {
            if (displayContent.isUntrustedVirtualDisplay()) {
                return false;
            }
            return displayContent.supportsSystemDecorations();
        }
    }

    /**
     * @return {@code true} if the display is non-system created virtual display.
     */
    private static boolean isUntrustedVirtualDisplay(Display display) {
        return display.getType() == TYPE_VIRTUAL && display.getOwnerUid() != Process.SYSTEM_UID;
    }

    @Override
    public void setShouldShowSystemDecors(int displayId, boolean shouldShow) {
        if (!checkCallingPermission(INTERNAL_SYSTEM_WINDOW, "setShouldShowSystemDecors()")) {
@@ -6973,8 +6963,7 @@ public class WindowManagerService extends IWindowManager.Stub
                        + displayId);
                return false;
            }
            final Display display = displayContent.getDisplay();
            if (isUntrustedVirtualDisplay(display)) {
            if (displayContent.isUntrustedVirtualDisplay()) {
                return false;
            }
            return mDisplayWindowSettings.shouldShowImeLocked(displayContent)