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

Commit e1478b15 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Fix cutout disappeared when rotation" into rvc-dev am:...

Merge "Merge "Fix cutout disappeared when rotation" into rvc-dev am: e441e74f am: 6854ddd4" into rvc-d1-dev-plus-aosp
parents e09ebd31 709a92d0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2610,7 +2610,8 @@ public class WindowManagerService extends IWindowManager.Stub
                if (type == TYPE_WALLPAPER) {
                    new WallpaperWindowToken(this, binder, true, dc, callerCanManageAppTokens);
                } else {
                    new WindowToken(this, binder, type, true, dc, callerCanManageAppTokens);
                    new WindowToken(this, binder, type, true, dc, callerCanManageAppTokens,
                            false /* roundedCornerOverlay */, fromClientToken);
                }
            }
        } finally {
+6 −4
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.view.InsetsState;
import android.view.SurfaceControl;
import android.view.WindowManager;

import com.android.internal.annotations.VisibleForTesting;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.protolog.common.ProtoLog;

@@ -99,7 +100,8 @@ class WindowToken extends WindowContainer<WindowState> {
    private Configuration mLastReportedConfig;
    private int mLastReportedDisplay = INVALID_DISPLAY;

    private final boolean mFromClientToken;
    @VisibleForTesting
    final boolean mFromClientToken;

    /**
     * Used to fix the transform of the token to be rotated to a rotation different than it's
@@ -180,13 +182,13 @@ class WindowToken extends WindowContainer<WindowState> {
    WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
            DisplayContent dc, boolean ownerCanManageAppTokens) {
        this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
                false /* roundedCornersOverlay */);
                false /* roundedCornerOverlay */);
    }

    WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
            DisplayContent dc, boolean ownerCanManageAppTokens, boolean fromClientToken) {
            DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) {
        this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
                false /* roundedCornersOverlay */, fromClientToken);
                roundedCornerOverlay, false /* fromClientToken */);
    }

    WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
+28 −0
Original line number Diff line number Diff line
@@ -16,9 +16,16 @@

package com.android.server.wm;

import static android.view.WindowManager.LayoutParams.TYPE_TOAST;

import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;

import android.content.pm.PackageManager;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;

import androidx.test.filters.SmallTest;
@@ -57,4 +64,25 @@ public class WindowManagerServiceTests extends WindowTestsBase {
        return getInstrumentation().getTargetContext().getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_AUTOMOTIVE);
    }

    @Test
    public void testAddWindowToken() {
        IBinder token = mock(IBinder.class);
        mWm.addWindowToken(token, TYPE_TOAST, mDisplayContent.getDisplayId());

        WindowToken windowToken = mWm.mRoot.getWindowToken(token);
        assertFalse(windowToken.mRoundedCornerOverlay);
        assertFalse(windowToken.mFromClientToken);
    }

    @Test
    public void testAddWindowTokenWithOptions() {
        IBinder token = mock(IBinder.class);
        mWm.addWindowTokenWithOptions(token, TYPE_TOAST, mDisplayContent.getDisplayId(),
                null /* options */, null /* options */);

        WindowToken windowToken = mWm.mRoot.getWindowToken(token);
        assertFalse(windowToken.mRoundedCornerOverlay);
        assertTrue(windowToken.mFromClientToken);
    }
}
+26 −0
Original line number Diff line number Diff line
@@ -25,7 +25,9 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;

import android.os.IBinder;
import android.platform.test.annotations.Presubmit;

import androidx.test.filters.SmallTest;
@@ -129,4 +131,28 @@ public class WindowTokenTests extends WindowTestsBase {
        // Verify that the token windows are no longer attached to it.
        assertEquals(0, token.getWindowsCount());
    }

    /**
     * Test that {@link WindowToken} constructor parameters is set with expectation.
     */
    @Test
    public void testWindowTokenConstructorSanity() {
        WindowToken token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
                TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent,
                true /* ownerCanManageAppTokens */);
        assertFalse(token.mRoundedCornerOverlay);
        assertFalse(token.mFromClientToken);

        token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST,
                true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */,
                true /* roundedCornerOverlay */);
        assertTrue(token.mRoundedCornerOverlay);
        assertFalse(token.mFromClientToken);

        token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST,
                true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */,
                true /* roundedCornerOverlay */, true /* fromClientToken */);
        assertTrue(token.mRoundedCornerOverlay);
        assertTrue(token.mFromClientToken);
    }
}