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

Commit 004d03bd authored by Juan Sebastian Martinez's avatar Juan Sebastian Martinez Committed by Automerger Merge Worker
Browse files

Merge "Using performHapticFeedback on ChipbarCoordinator." into udc-qpr-dev am: 2b3d6b0c

parents cf27af81 2b3d6b0c
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ import com.android.systemui.common.ui.binder.TintedIconViewBinder
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -94,6 +96,7 @@ constructor(
    wakeLockBuilder: WakeLock.Builder,
    systemClock: SystemClock,
    tempViewUiEventLogger: TemporaryViewUiEventLogger,
    private val featureFlags: FeatureFlags,
) :
    TemporaryViewDisplayController<ChipbarInfo, ChipbarLogger>(
        context,
@@ -231,6 +234,9 @@ constructor(
        maybeGetAccessibilityFocus(newInfo, currentView)

        // ---- Haptics ----
        if (featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) {
            vibratorHelper.performHapticFeedback(parent, newInfo.vibrationConstant)
        } else {
            newInfo.vibrationEffect?.let {
                vibratorHelper.vibrate(
                    Process.myUid(),
@@ -241,6 +247,7 @@ constructor(
                )
            }
        }
    }

    private fun maybeGetAccessibilityFocus(info: ChipbarInfo?, view: ViewGroup) {
        // Don't steal focus unless the chipbar has something interactable.
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.temporarydisplay.chipbar

import android.os.VibrationEffect
import android.view.HapticFeedbackConstants
import android.view.View
import androidx.annotation.AttrRes
import com.android.internal.logging.InstanceId
@@ -42,6 +43,7 @@ data class ChipbarInfo(
    val text: Text,
    val endItem: ChipbarEndItem?,
    val vibrationEffect: VibrationEffect? = null,
    val vibrationConstant: Int = HapticFeedbackConstants.NO_HAPTICS,
    val allowSwipeToDismiss: Boolean = false,
    override val windowTitle: String,
    override val wakeReason: String,
+5 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.common.shared.model.Text.Companion.loadText
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION
import com.android.systemui.media.taptotransfer.MediaTttFlags
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.CommandQueue
@@ -111,6 +113,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
    private lateinit var uiEventLogger: MediaTttSenderUiEventLogger
    private lateinit var tempViewUiEventLogger: TemporaryViewUiEventLogger
    private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay)
    private val featureFlags = FakeFeatureFlags()

    @Before
    fun setUp() {
@@ -160,7 +163,9 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
                fakeWakeLockBuilder,
                fakeClock,
                tempViewUiEventLogger,
                featureFlags
            )
        featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false)
        chipbarCoordinator.start()

        underTest =
+25 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.os.VibrationAttributes
import android.os.VibrationEffect
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.view.HapticFeedbackConstants
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
@@ -41,6 +42,8 @@ import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.shared.model.Text
import com.android.systemui.common.shared.model.TintedIcon
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -91,6 +94,7 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
    private lateinit var fakeExecutor: FakeExecutor
    private lateinit var uiEventLoggerFake: UiEventLoggerFake
    private lateinit var uiEventLogger: TemporaryViewUiEventLogger
    private val featureFlags = FakeFeatureFlags()

    @Before
    fun setUp() {
@@ -127,8 +131,10 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
                fakeWakeLockBuilder,
                fakeClock,
                uiEventLogger,
                featureFlags
            )
        underTest.start()
        featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false)
    }

    @Test
@@ -488,6 +494,23 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
            )
    }

    @Test
    fun displayView_oneWayHapticsEnabled_usesPerformHapticFeedback() {
        featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, true)
        val constant: Int = HapticFeedbackConstants.CONFIRM
        underTest.displayView(
            createChipbarInfo(
                Icon.Resource(R.id.check_box, null),
                Text.Loaded("text"),
                endItem = null,
                vibrationEffect = null,
                vibrationConstant = constant
            )
        )

        verify(vibratorHelper).performHapticFeedback(any(), eq(constant))
    }

    /** Regression test for b/266119467. */
    @Test
    fun displayView_animationFailure_viewsStillBecomeVisible() {
@@ -706,12 +729,14 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
        endItem: ChipbarEndItem?,
        vibrationEffect: VibrationEffect? = null,
        allowSwipeToDismiss: Boolean = false,
        vibrationConstant: Int = HapticFeedbackConstants.NO_HAPTICS,
    ): ChipbarInfo {
        return ChipbarInfo(
            TintedIcon(startIcon, tint = null),
            text,
            endItem,
            vibrationEffect,
            vibrationConstant,
            allowSwipeToDismiss,
            windowTitle = WINDOW_TITLE,
            wakeReason = WAKE_REASON,