Determine rear display status only based on device states
onRequestCanceled callback came before device state callback, which caused updateRearDisplayStatusListeners in line 553 to call back with STATUS_ACTIVE after the cancelation callback. onRequestActivated and onRequestCanceled don't need to update rear display status listeners, because there are always device state callbacks that will trigger updateRearDisplayStatusListeners.
Bug: 264962409
Test: atest ExtensionRearDisplayTest
Change-Id: Ibaf8ecfa3da8544a4a07ee803989fa136200c350
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/area/WindowAreaComponentImpl.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/area/WindowAreaComponentImpl.java
index cc46a4b..bf07773 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/area/WindowAreaComponentImpl.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/area/WindowAreaComponentImpl.java
@@ -414,8 +414,7 @@
return WindowAreaComponent.STATUS_UNAVAILABLE;
}
- if (mRearDisplaySessionStatus == WindowAreaComponent.SESSION_STATE_ACTIVE
- || isRearDisplayActive()) {
+ if (isRearDisplayActive()) {
return WindowAreaComponent.STATUS_ACTIVE;
}
@@ -537,7 +536,6 @@
if (request.equals(mRearDisplayStateRequest)) {
mRearDisplaySessionStatus = WindowAreaComponent.SESSION_STATE_ACTIVE;
mRearDisplaySessionCallback.accept(mRearDisplaySessionStatus);
- updateRearDisplayStatusListeners(getCurrentRearDisplayModeStatus());
}
}
}
@@ -550,7 +548,6 @@
}
mRearDisplaySessionStatus = WindowAreaComponent.SESSION_STATE_INACTIVE;
mRearDisplaySessionCallback.accept(mRearDisplaySessionStatus);
- updateRearDisplayStatusListeners(getCurrentRearDisplayModeStatus());
}
}
}