Use TYPE_PRIVATE_PRESENTATION for private presentations

Detect if the Presenation is targeting a private virtual display, and if they
are use the windowType TYPE_PRIVATE_PRESENTATION.

Bug: 152652348
Bug: 141745510
Test: atest CtsWindowManagerDeviceTestCases:PresentationTest
Test: atest CtsDisplayTestCases:android.display.cts.VirtualDisplayTest
Change-Id: I58834636e092f992e403342e36b475dc60e8f20a
This commit is contained in:
Linus Tufvesson
2020-03-30 18:55:04 +01:00
parent ea6a210cf5
commit ac272d5e9f

View File

@@ -19,6 +19,7 @@ package android.app;
import static android.content.Context.DISPLAY_SERVICE;
import static android.content.Context.WINDOW_SERVICE;
import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION;
import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
@@ -191,12 +192,16 @@ public class Presentation extends Dialog {
mDisplay = display;
mDisplayManager = (DisplayManager)getContext().getSystemService(DISPLAY_SERVICE);
final int windowType =
(display.getFlags() & Display.FLAG_PRIVATE) != 0 ? TYPE_PRIVATE_PRESENTATION
: TYPE_PRESENTATION;
final Window w = getWindow();
final WindowManager.LayoutParams attr = w.getAttributes();
attr.token = mToken;
w.setAttributes(attr);
w.setGravity(Gravity.FILL);
w.setType(TYPE_PRESENTATION);
w.setType(windowType);
setCanceledOnTouchOutside(false);
}