summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-12-27 11:49:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-12-27 11:49:15 +0000
commit4308e6a266c4abe2ac5a9173feb77219cee0265b (patch)
treee9b789a31e60e2ecf548981e469bd046bf562400
parent270111058a78cf69934e24c6e75576fd0f642025 (diff)
parent23238a446486854388559b837674c76b11ab21cf (diff)
downloadplatform_testing-4308e6a266c4abe2ac5a9173feb77219cee0265b.tar.gz
Merge "Improve FoldableDeviceController logging and initialization" into tm-qpr-dev
-rw-r--r--libraries/health/rules/src/android/platform/test/rule/DeviceTypeRule.kt3
-rw-r--r--libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableDeviceController.kt20
-rw-r--r--libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableRule.kt2
3 files changed, 19 insertions, 6 deletions
diff --git a/libraries/health/rules/src/android/platform/test/rule/DeviceTypeRule.kt b/libraries/health/rules/src/android/platform/test/rule/DeviceTypeRule.kt
index 8426f19cf..72c7dde40 100644
--- a/libraries/health/rules/src/android/platform/test/rule/DeviceTypeRule.kt
+++ b/libraries/health/rules/src/android/platform/test/rule/DeviceTypeRule.kt
@@ -78,7 +78,8 @@ internal fun isFoldable(): Boolean {
.isNotEmpty()
}
-internal fun isLargeScreen(): Boolean {
+/** Returns whether the device default display is currently considered large screen. */
+fun isLargeScreen(): Boolean {
val sizeDp = getUiDevice().displaySizeDp
return sizeDp.x >= LARGE_SCREEN_DP_THRESHOLD && sizeDp.y >= LARGE_SCREEN_DP_THRESHOLD
}
diff --git a/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableDeviceController.kt b/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableDeviceController.kt
index 06825f6cf..dce2d892d 100644
--- a/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableDeviceController.kt
+++ b/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableDeviceController.kt
@@ -18,6 +18,7 @@ package android.platform.helpers.foldable
import android.hardware.Sensor
import android.hardware.devicestate.DeviceStateManager
import android.hardware.devicestate.DeviceStateRequest
+import android.platform.test.rule.isLargeScreen
import android.platform.uiautomator_helpers.DeviceHelpers.isScreenOnSettled
import android.platform.uiautomator_helpers.DeviceHelpers.printInstrumentationStatus
import android.platform.uiautomator_helpers.DeviceHelpers.uiDevice
@@ -68,15 +69,15 @@ internal class FoldableDeviceController {
// This might cause the screen to turn off if the default state is folded.
if (!uiDevice.isScreenOnSettled) {
uiDevice.wakeUp()
- ensureThat("screen is on") { uiDevice.isScreenOn }
+ ensureThat("screen is on after cancelling base state override.") { uiDevice.isScreenOn }
}
}
/** Fetches folded and unfolded state identifier from the device. */
fun init() {
findFoldedUnfoldedStates()
- /* There is no way to know the initial device state, so it is set to unfolded. */
- setDeviceState(unfoldedState)
+ currentState = if (isLargeScreen()) unfoldedState else foldedState
+ Log.d(TAG, "Initial state. Folded=$isFolded")
hingeAngleSensor.init()
}
@@ -114,15 +115,25 @@ internal class FoldableDeviceController {
deviceStateLatch = CountDownLatch(1)
val request = DeviceStateRequest.newBuilder(state).build()
pendingRequest = request
+ Log.d(TAG, "Requesting base state override to ${state.desc()}")
deviceStateManager.requestBaseStateOverride(
request,
context.mainExecutor,
deviceStateRequestCallback
)
deviceStateLatch.await { "Device state didn't change within the timeout" }
+ ensureStateSet(state)
Log.d(TAG, "Device state set to ${state.desc()}")
}
+ private fun ensureStateSet(state: Int) {
+ when (state) {
+ foldedState -> ensureThat("Device folded") { !isLargeScreen() }
+ unfoldedState -> ensureThat("Device unfolded") { isLargeScreen() }
+ else -> TODO("Implement a way to know if states other than un/folded are set.")
+ }
+ }
+
private fun Int.desc() =
when (this) {
foldedState -> "Folded"
@@ -137,6 +148,7 @@ internal class FoldableDeviceController {
private val deviceStateRequestCallback =
object : DeviceStateRequest.Callback {
override fun onRequestActivated(request: DeviceStateRequest) {
+ Log.d(TAG, "Request activated: ${request.state.desc()}")
if (request == pendingRequest) {
deviceStateLatch.countDown()
}
@@ -144,12 +156,14 @@ internal class FoldableDeviceController {
}
override fun onRequestCanceled(request: DeviceStateRequest) {
+ Log.d(TAG, "Request cancelled: ${request.state.desc()}")
if (currentState == request.state) {
currentState = null
}
}
override fun onRequestSuspended(request: DeviceStateRequest) {
+ Log.d(TAG, "Request suspended: ${request.state.desc()}")
if (currentState == request.state) {
currentState = null
}
diff --git a/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableRule.kt b/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableRule.kt
index dff066934..c0161b111 100644
--- a/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableRule.kt
+++ b/libraries/systemui-helper/src/android/platform/helpers/foldable/FoldableRule.kt
@@ -67,7 +67,6 @@ class FoldableRule(private val ensureScreenOn: Boolean = false) : TestWatcher()
SystemClock.sleep(ANIMATION_TIMEOUT) // Let's wait for the unfold animation to finish.
ensureThat("screen is off after folding") { !screenOn }
- ensureThat("is folded") { controller.isFolded }
ensureThat("screen surface decreases after folding") {
displaySurface < initialScreenSurface
}
@@ -84,7 +83,6 @@ class FoldableRule(private val ensureScreenOn: Boolean = false) : TestWatcher()
SystemClock.sleep(ANIMATION_TIMEOUT) // Let's wait for the unfold animation to finish.
ensureThat("screen is on after unfolding") { screenOn }
- ensureThat("is unfolded") { !controller.isFolded }
ensureThat("screen surface increases after unfolding") {
displaySurface > initialScreenSurface
}