Merge "Report pending change to wallpaper when being visible" into tm-qpr-dev
This commit is contained in:
@@ -4577,7 +4577,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
|
||||
void requestUpdateWallpaperIfNeeded() {
|
||||
final DisplayContent dc = getDisplayContent();
|
||||
if (dc != null && hasWallpaper()) {
|
||||
if (dc != null && ((mIsWallpaper && !mLastConfigReportedToClient) || hasWallpaper())) {
|
||||
dc.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
|
||||
dc.setLayoutNeeded();
|
||||
mWmService.mWindowPlacerLocked.requestTraversal();
|
||||
|
||||
@@ -52,6 +52,7 @@ import android.graphics.Rect;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.platform.test.annotations.Presubmit;
|
||||
import android.util.MergedConfiguration;
|
||||
import android.view.DisplayCutout;
|
||||
import android.view.DisplayInfo;
|
||||
import android.view.Gravity;
|
||||
@@ -61,6 +62,7 @@ import android.view.RoundedCorners;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.WindowManager;
|
||||
import android.window.ClientWindowFrames;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
@@ -337,6 +339,29 @@ public class WallpaperControllerTests extends WindowTestsBase {
|
||||
assertEquals(appWin, mDisplayContent.mWallpaperController.getWallpaperTarget());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWallpaperReportConfigChange() {
|
||||
final WindowState wallpaperWindow = createWallpaperWindow(mDisplayContent);
|
||||
createWallpaperTargetWindow(mDisplayContent);
|
||||
final WallpaperWindowToken wallpaperToken = wallpaperWindow.mToken.asWallpaperToken();
|
||||
makeWindowVisible(wallpaperWindow);
|
||||
wallpaperWindow.mLayoutSeq = mDisplayContent.mLayoutSeq;
|
||||
// Assume the token was invisible and the latest config was reported.
|
||||
wallpaperToken.commitVisibility(false);
|
||||
wallpaperWindow.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(),
|
||||
new MergedConfiguration(), true /* useLatestConfig */, false /* relayoutVisible */);
|
||||
assertTrue(wallpaperWindow.isLastConfigReportedToClient());
|
||||
|
||||
final Rect bounds = wallpaperToken.getBounds();
|
||||
wallpaperToken.setBounds(new Rect(0, 0, bounds.width() / 2, bounds.height() / 2));
|
||||
assertFalse(wallpaperWindow.isLastConfigReportedToClient());
|
||||
// If there is a pending config change when changing to visible, it should tell the client
|
||||
// to redraw by WindowState#reportResized.
|
||||
wallpaperToken.commitVisibility(true);
|
||||
waitUntilHandlersIdle();
|
||||
assertTrue(wallpaperWindow.isLastConfigReportedToClient());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWallpaperTokenVisibility() {
|
||||
final DisplayContent dc = mWm.mRoot.getDefaultDisplay();
|
||||
|
||||
Reference in New Issue
Block a user