diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 0f5184a03e6fd..36389eacf27c3 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -3868,8 +3868,8 @@ class WindowState extends WindowContainer implements WindowManagerP // configuration update when the window has requested to be hidden. Doing so can lead to // the client erroneously accepting a configuration that would have otherwise caused an // activity restart. We instead hand back the last reported {@link MergedConfiguration}. - if (useLatestConfig || (relayoutVisible && (!shouldCheckTokenVisibleRequested() - || mToken.isVisibleRequested()))) { + if (useLatestConfig || (relayoutVisible && (mActivityRecord == null + || mActivityRecord.mVisibleRequested))) { final Configuration globalConfig = getProcessGlobalConfiguration(); final Configuration overrideConfig = getMergedOverrideConfiguration(); outMergedConfiguration.setConfiguration(globalConfig, overrideConfig); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java index 8370691f34f6a..cf24ff2e99a53 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java @@ -217,6 +217,12 @@ public class WindowManagerServiceTests extends WindowTestsBase { mWm.relayoutWindow(win.mSession, win.mClient, win.mAttrs, w, h, View.VISIBLE, 0, 0, 0, outFrames, outConfig, outSurfaceControl, outInsetsState, outControls, outBundle); assertEquals(0, outConfig.getMergedConfiguration().densityDpi); + // Non activity window can still get the last config. + win.mActivityRecord = null; + win.fillClientWindowFramesAndConfiguration(outFrames, outConfig, + false /* useLatestConfig */, true /* relayoutVisible */); + assertEquals(win.getConfiguration().densityDpi, + outConfig.getMergedConfiguration().densityDpi); } @Test