Merge "Controls UI - Haptics fixes" into rvc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
index 10e9137..2a40b76 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
@@ -58,16 +58,14 @@
 
     override fun toggle(cvh: ControlViewHolder, templateId: String, isChecked: Boolean) {
         bouncerOrRun {
-            val effect = if (!isChecked) Vibrations.toggleOnEffect else Vibrations.toggleOffEffect
-            vibrate(effect)
+            cvh.layout.performHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK)
             cvh.action(BooleanAction(templateId, !isChecked))
         }
     }
 
     override fun touch(cvh: ControlViewHolder, templateId: String, control: Control) {
-        vibrate(Vibrations.toggleOnEffect)
-
         bouncerOrRun {
+            cvh.layout.performHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK)
             if (cvh.usePanel()) {
                 showDialog(cvh, control.getAppIntent().getIntent())
             } else {
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt
index 1f0ca9b..0ec4cc5 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt
@@ -231,9 +231,11 @@
 
         rangeAnimator?.cancel()
         if (isDragging) {
-            clipLayer.level = newLevel
             val isEdge = newLevel == MIN_LEVEL || newLevel == MAX_LEVEL
-            cvh.controlActionCoordinator.drag(isEdge)
+            if (clipLayer.level != newLevel) {
+                cvh.controlActionCoordinator.drag(isEdge)
+                clipLayer.level = newLevel
+            }
         } else if (newLevel != clipLayer.level) {
             rangeAnimator = ValueAnimator.ofInt(cvh.clipLayer.level, newLevel).apply {
                 addUpdateListener {
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/Vibrations.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/Vibrations.kt
index c0f6aab..29b7e985 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/Vibrations.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/Vibrations.kt
@@ -20,35 +20,9 @@
 import android.os.VibrationEffect.Composition.PRIMITIVE_TICK
 
 object Vibrations {
-    private const val TOGGLE_TICK_COUNT = 40
-
-    val toggleOnEffect = initToggleOnEffect()
-    val toggleOffEffect = initToggleOffEffect()
     val rangeEdgeEffect = initRangeEdgeEffect()
     val rangeMiddleEffect = initRangeMiddleEffect()
 
-    private fun initToggleOnEffect(): VibrationEffect {
-        val composition = VibrationEffect.startComposition()
-        composition.addPrimitive(PRIMITIVE_TICK, 0.05f, 200)
-        var i = 0
-        while (i++ < TOGGLE_TICK_COUNT) {
-            composition.addPrimitive(PRIMITIVE_TICK, 0.05f, 0)
-        }
-        composition.addPrimitive(PRIMITIVE_TICK, 0.5f, 100)
-        return composition.compose()
-    }
-
-    private fun initToggleOffEffect(): VibrationEffect {
-        val composition = VibrationEffect.startComposition()
-        composition.addPrimitive(PRIMITIVE_TICK, 0.5f, 0)
-        composition.addPrimitive(PRIMITIVE_TICK, 0.05f, 100)
-        var i = 0
-        while (i++ < TOGGLE_TICK_COUNT) {
-            composition.addPrimitive(PRIMITIVE_TICK, 0.05f, 0)
-        }
-        return composition.compose()
-    }
-
     private fun initRangeEdgeEffect(): VibrationEffect {
         val composition = VibrationEffect.startComposition()
         composition.addPrimitive(VibrationEffect.Composition.PRIMITIVE_TICK, 0.5f)