diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 10 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 15 |
2 files changed, 11 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 652f7ee48b9f..7a26f7cbf640 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 @@ 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. * diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 7ac887ed295d..eac771639688 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.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) |