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

Commit ac272d5e authored by Linus Tufvesson's avatar Linus Tufvesson
Browse files

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
parent ea6a210c
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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);
    }