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

Commit 2b3d6b0c authored by Juan Sebastian Martinez's avatar Juan Sebastian Martinez Committed by Android (Google) Code Review
Browse files

Merge "Using performHapticFeedback on ChipbarCoordinator." into udc-qpr-dev

parents 97c0b19d 21d39a1c
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,