Merge "Fix cutout disappeared when rotation" into rvc-dev am: e441e74f52 am: 6854ddd4d5
Change-Id: I57adba8e14639ecf3b17f642f9f0d742ce60d588
This commit is contained in:
@@ -2610,7 +2610,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
if (type == TYPE_WALLPAPER) {
|
if (type == TYPE_WALLPAPER) {
|
||||||
new WallpaperWindowToken(this, binder, true, dc, callerCanManageAppTokens);
|
new WallpaperWindowToken(this, binder, true, dc, callerCanManageAppTokens);
|
||||||
} else {
|
} else {
|
||||||
new WindowToken(this, binder, type, true, dc, callerCanManageAppTokens);
|
new WindowToken(this, binder, type, true, dc, callerCanManageAppTokens,
|
||||||
|
false /* roundedCornerOverlay */, fromClientToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ import android.view.InsetsState;
|
|||||||
import android.view.SurfaceControl;
|
import android.view.SurfaceControl;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.server.policy.WindowManagerPolicy;
|
import com.android.server.policy.WindowManagerPolicy;
|
||||||
import com.android.server.protolog.common.ProtoLog;
|
import com.android.server.protolog.common.ProtoLog;
|
||||||
|
|
||||||
@@ -99,7 +100,8 @@ class WindowToken extends WindowContainer<WindowState> {
|
|||||||
private Configuration mLastReportedConfig;
|
private Configuration mLastReportedConfig;
|
||||||
private int mLastReportedDisplay = INVALID_DISPLAY;
|
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
|
* 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,
|
WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
|
||||||
DisplayContent dc, boolean ownerCanManageAppTokens) {
|
DisplayContent dc, boolean ownerCanManageAppTokens) {
|
||||||
this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
|
this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
|
||||||
false /* roundedCornersOverlay */);
|
false /* roundedCornerOverlay */);
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
|
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,
|
this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
|
||||||
false /* roundedCornersOverlay */, fromClientToken);
|
roundedCornerOverlay, false /* fromClientToken */);
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
|
WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
|
||||||
|
|||||||
@@ -16,9 +16,16 @@
|
|||||||
|
|
||||||
package com.android.server.wm;
|
package com.android.server.wm;
|
||||||
|
|
||||||
|
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
|
||||||
|
|
||||||
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
|
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.content.pm.PackageManager;
|
||||||
|
import android.os.IBinder;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
@@ -57,4 +64,25 @@ public class WindowManagerServiceTests extends WindowTestsBase {
|
|||||||
return getInstrumentation().getTargetContext().getPackageManager().hasSystemFeature(
|
return getInstrumentation().getTargetContext().getPackageManager().hasSystemFeature(
|
||||||
PackageManager.FEATURE_AUTOMOTIVE);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ import static org.junit.Assert.assertFalse;
|
|||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
import android.os.IBinder;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
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.
|
// Verify that the token windows are no longer attached to it.
|
||||||
assertEquals(0, token.getWindowsCount());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user