Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8275188 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Make unfold timeout configurable in resources" into tm-dev am: 915970e4

parents 6894e82d 915970e4
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -674,6 +674,10 @@
    <!-- Indicates whether to enable hinge angle sensor when using unfold animation -->
    <bool name="config_unfoldTransitionHingeAngle">false</bool>

    <!-- Indicates the time needed to time out the fold animation if the device stops in half folded
         mode. -->
    <integer name="config_unfoldTransitionHalfFoldedTimeout">600</integer>

    <!-- Indicates that the device supports having more than one internal display on at the same
         time. Only applicable to devices with more than one internal display. If this option is
         set to false, DisplayManager will make additional effort to ensure no more than 1 internal
+1 −0
Original line number Diff line number Diff line
@@ -3957,6 +3957,7 @@
  <java-symbol type="bool" name="config_supportsConcurrentInternalDisplays" />
  <java-symbol type="bool" name="config_unfoldTransitionEnabled" />
  <java-symbol type="bool" name="config_unfoldTransitionHingeAngle" />
  <java-symbol type="integer" name="config_unfoldTransitionHalfFoldedTimeout" />
  <java-symbol type="array" name="config_perDeviceStateRotationLockDefaults" />


+10 −7
Original line number Diff line number Diff line
@@ -57,6 +57,15 @@ constructor(
    private val foldStateListener = FoldStateListener(context)
    private val timeoutRunnable = TimeoutRunnable()

    /**
     * Time after which [FOLD_UPDATE_FINISH_HALF_OPEN] is emitted following a
     * [FOLD_UPDATE_START_CLOSING] or [FOLD_UPDATE_START_OPENING] event, if an end state is not
     * reached.
     */
    private val halfOpenedTimeoutMillis: Int =
        context.resources.getInteger(
            com.android.internal.R.integer.config_unfoldTransitionHalfFoldedTimeout)

    private var isFolded = false
    private var isUnfoldHandled = true

@@ -171,7 +180,7 @@ constructor(
        if (isTransitionInProgess) {
            cancelTimeout()
        }
        handler.postDelayed(timeoutRunnable, HALF_OPENED_TIMEOUT_MILLIS)
        handler.postDelayed(timeoutRunnable, halfOpenedTimeoutMillis.toLong())
    }

    private fun cancelTimeout() {
@@ -222,12 +231,6 @@ private fun stateToString(@FoldUpdate update: Int): String {
private const val TAG = "DeviceFoldProvider"
private const val DEBUG = false

/**
 * Time after which [FOLD_UPDATE_FINISH_HALF_OPEN] is emitted following a
 * [FOLD_UPDATE_START_CLOSING] or [FOLD_UPDATE_START_OPENING] event, if an end state is not reached.
 */
@VisibleForTesting const val HALF_OPENED_TIMEOUT_MILLIS = 600L

/** Threshold after which we consider the device fully unfolded. */
@VisibleForTesting const val FULLY_OPEN_THRESHOLD_DEGREES = 15f

+7 −0
Original line number Diff line number Diff line
@@ -78,6 +78,9 @@ class DeviceFoldStateProviderTest : SysuiTestCase() {
    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        overrideResource(
            com.android.internal.R.integer.config_unfoldTransitionHalfFoldedTimeout,
            HALF_OPENED_TIMEOUT_MILLIS.toInt())
        deviceStates = FoldableTestUtils.findDeviceStates(context)

        foldStateProvider =
@@ -319,4 +322,8 @@ class DeviceFoldStateProviderTest : SysuiTestCase() {
    private fun sendHingeAngleEvent(angle: Int) {
        hingeAngleCaptor.value.accept(angle.toFloat())
    }

    companion object {
        private const val HALF_OPENED_TIMEOUT_MILLIS = 300L
    }
}