Merge "Prohibit showing system decorations on untrusted virtual displays" into qt-dev
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 652f7ee..7a26f7c 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -4941,12 +4941,20 @@
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.
*
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 7ac887e..eac7716 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -35,7 +35,6 @@
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.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 @@
+ "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 @@
+ displayId);
return false;
}
- final Display display = displayContent.getDisplay();
- if (isUntrustedVirtualDisplay(display)) {
+ if (displayContent.isUntrustedVirtualDisplay()) {
return false;
}
return mDisplayWindowSettings.shouldShowImeLocked(displayContent)