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

This commit is contained in:
Juan Sebastian Martinez
2023-08-03 23:34:52 +00:00
committed by Android (Google) Code Review
4 changed files with 47 additions and 8 deletions

View File

@@ -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,14 +234,18 @@ constructor(
maybeGetAccessibilityFocus(newInfo, currentView)
// ---- Haptics ----
newInfo.vibrationEffect?.let {
vibratorHelper.vibrate(
Process.myUid(),
context.getApplicationContext().getPackageName(),
it,
newInfo.windowTitle,
VIBRATION_ATTRIBUTES,
)
if (featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) {
vibratorHelper.performHapticFeedback(parent, newInfo.vibrationConstant)
} else {
newInfo.vibrationEffect?.let {
vibratorHelper.vibrate(
Process.myUid(),
context.getApplicationContext().getPackageName(),
it,
newInfo.windowTitle,
VIBRATION_ATTRIBUTES,
)
}
}
}

View File

@@ -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,

View File

@@ -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 =

View File

@@ -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,