From ee512f06bae619d3aa5c52a37da6f6b3ec3ea79e Mon Sep 17 00:00:00 2001 From: Nick Chameyev Date: Tue, 5 Mar 2024 16:54:45 +0000 Subject: Use DisplayInfo rotation instead of Display#getRotation in BookStyleClosedStatePredicate Display#getRotation could be stale as it depends on the context resources/configuration which could be deferred. onDisplayChanged callback only notifies about updates in DisplayInfo, so it doesn't notify about the configuration change update, so BookStyleClosedStatePredicate could end up with a stale rotation value. This change updates querying of the rotation to DisplayInfo's rotation field instead. Test: manual rotate => check logs, try to enter wedge mode Test: atest BookStyleDeviceStatePolicyTest Bug: 326802066 Change-Id: I89514a383f5627e92b83dca110d9f850a0bb8397 --- .../com/android/server/policy/BookStyleClosedStatePredicate.java | 5 ++++- .../com/android/server/policy/BookStyleDeviceStatePolicyTest.java | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/services/foldables/devicestateprovider/src/com/android/server/policy/BookStyleClosedStatePredicate.java b/services/foldables/devicestateprovider/src/com/android/server/policy/BookStyleClosedStatePredicate.java index 82d5247ebed8..209107e50902 100644 --- a/services/foldables/devicestateprovider/src/com/android/server/policy/BookStyleClosedStatePredicate.java +++ b/services/foldables/devicestateprovider/src/com/android/server/policy/BookStyleClosedStatePredicate.java @@ -37,6 +37,7 @@ import android.os.Handler; import android.util.ArraySet; import android.util.Dumpable; import android.view.Display; +import android.view.DisplayInfo; import android.view.Surface; import com.android.server.policy.BookStylePreferredScreenCalculator.PreferredScreen; @@ -65,6 +66,7 @@ public class BookStyleClosedStatePredicate implements Predicate { + final DisplayInfo displayInfo = invocation.getArgument(0); + displayInfo.rotation = rotation; + return null; + }).when(mDisplay).getDisplayInfo(any()); mDisplayListenerCaptor.getAllValues().forEach((l) -> l.onDisplayChanged(DEFAULT_DISPLAY)); } -- cgit v1.2.3-59-g8ed1b