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

Commit 3a580256 authored by Jorim Jaggi's avatar Jorim Jaggi Committed by android-build-merger
Browse files

Merge "Use top fullscreen window to inherit SystemUI flags" into oc-mr1-dev am: 626b8c37

am: c299f643

Change-Id: I9fb90fe4bb2d1610d1a94d88644c323605aabafb
parents 54c4cc4c c299f643
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ import android.util.proto.ProtoOutputStream;
import android.view.IApplicationToken;
import android.view.SurfaceControl;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.view.WindowManagerPolicy.StartingSurface;

import com.android.internal.util.ToBooleanFunction;
@@ -475,6 +476,20 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
        return delayed;
    }

    /**
     * @return The to top most child window for which {@link LayoutParams#isFullscreen()} returns
     *         true.
     */
    WindowState getTopFullscreenWindow() {
        for (int i = mChildren.size() - 1; i >= 0; i--) {
            final WindowState win = mChildren.get(i);
            if (win != null && win.mAttrs.isFullscreen()) {
                return win;
            }
        }
        return null;
    }

    WindowState findMainWindow() {
        WindowState candidate = null;
        int j = mChildren.size();
+1 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ class TaskSnapshotSurface implements StartingSurface {
                        + task);
                return null;
            }
            final WindowState topFullscreenWindow = topFullscreenToken.findMainWindow();
            final WindowState topFullscreenWindow = topFullscreenToken.getTopFullscreenWindow();
            if (mainWindow == null || topFullscreenWindow == null) {
                Slog.w(TAG, "TaskSnapshotSurface.create: Failed to find main window for token="
                        + token);
+18 −0
Original line number Diff line number Diff line
@@ -96,6 +96,24 @@ public class AppWindowTokenTests extends WindowTestsBase {
        token.removeImmediately();
    }

    @Test
    public void testGetTopFullscreenWindow() throws Exception {
        final WindowTestUtils.TestAppWindowToken token =
                new WindowTestUtils.TestAppWindowToken(mDisplayContent);

        assertNull(token.getTopFullscreenWindow());

        final WindowState window1 = createWindow(null, TYPE_BASE_APPLICATION, token, "window1");
        final WindowState window11 = createWindow(null, TYPE_APPLICATION, token, "window11");
        final WindowState window12 = createWindow(null, TYPE_APPLICATION, token, "window12");
        assertEquals(window12, token.getTopFullscreenWindow());
        window12.mAttrs.width = 500;
        assertEquals(window11, token.getTopFullscreenWindow());
        window11.mAttrs.width = 500;
        assertEquals(window1, token.getTopFullscreenWindow());
        token.removeImmediately();
    }

    @Test
    public void testLandscapeSeascapeRotationByApp() throws Exception {
        // Some plumbing to get the service ready for rotation updates.