summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author ESWAR MAGATAPALLI (xWF) <eswarrao@google.com> 2025-03-11 00:38:30 -0700
committer ESWAR MAGATAPALLI (xWF) <eswarrao@google.com> 2025-03-11 00:38:30 -0700
commit14ab8dc317a500d37ff353c38d23b37ec018ea98 (patch)
treebe186aea6de50f94a959fdc3e73ff1c39ce93abf
parentc6b3f7c85da74339c9403fe86a03e9670399463b (diff)
Revert "Consolidating magnetic detachment with dismissibility."
Revert submission 32206328-MAGNETIC_REATTACH Reason for revert: Droidmonitor created revert due to b/402283055. Will be verifying through ABTD before submission. Reverted changes: /q/submissionid:32206328-MAGNETIC_REATTACH Change-Id: I4356464527bd6b139b7d52b151f460f0a07d602a
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt29
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/SwipeHelper.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManager.kt17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java6
9 files changed, 20 insertions, 98 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java
index af52c31b1c53..9fdfca14a5b2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java
@@ -28,7 +28,6 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.platform.test.annotations.DisableFlags;
import android.provider.Settings;
import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
@@ -39,7 +38,6 @@ import android.view.ViewGroup;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-import com.android.systemui.Flags;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
@@ -415,7 +413,6 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
assertTrue("when alpha is .5, menu is visible", row.isMenuVisible());
}
- @DisableFlags(Flags.FLAG_MAGNETIC_NOTIFICATION_SWIPES)
@Test
public void testOnTouchMove() {
NotificationMenuRow row = Mockito.spy(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt
index 376da236f2b9..ccc8be7de038 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt
@@ -130,9 +130,7 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
kosmos.testScope.runTest {
// GIVEN a threshold of 100 px
val threshold = 100f
- underTest.onDensityChange(
- threshold / MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
- )
+ underTest.setSwipeThresholdPx(threshold)
// GIVEN that targets are set and the rows are being pulled
setTargets()
@@ -152,9 +150,7 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
kosmos.testScope.runTest {
// GIVEN a threshold of 100 px
val threshold = 100f
- underTest.onDensityChange(
- threshold / MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
- )
+ underTest.setSwipeThresholdPx(threshold)
// GIVEN that targets are set and the rows are being pulled
canRowBeDismissed = false
@@ -176,9 +172,7 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
kosmos.testScope.runTest {
// GIVEN a threshold of 100 px
val threshold = 100f
- underTest.onDensityChange(
- threshold / MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
- )
+ underTest.setSwipeThresholdPx(threshold)
// GIVEN that targets are set and the rows are being pulled
setTargets()
@@ -198,9 +192,7 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
kosmos.testScope.runTest {
// GIVEN a threshold of 100 px
val threshold = 100f
- underTest.onDensityChange(
- threshold / MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
- )
+ underTest.setSwipeThresholdPx(threshold)
// GIVEN that targets are set and the rows are being pulled
canRowBeDismissed = false
@@ -302,15 +294,6 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
assertThat(underTest.isSwipedViewRoundableSet).isFalse()
}
- @Test
- fun isMagneticRowDismissible_isDismissibleWhenDetached() =
- kosmos.testScope.runTest {
- setDetachedState()
-
- val isDismissible = underTest.isMagneticRowSwipeDetached(swipedRow)
- assertThat(isDismissible).isTrue()
- }
-
@After
fun tearDown() {
// We reset the manager so that all MagneticRowListener can cancel all animations
@@ -319,9 +302,7 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
private fun setDetachedState() {
val threshold = 100f
- underTest.onDensityChange(
- threshold / MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
- )
+ underTest.setSwipeThresholdPx(threshold)
// Set the pulling state
setTargets()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java
index de48f4018989..789701f5e4b0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java
@@ -49,7 +49,6 @@ import android.view.ViewConfiguration;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.classifier.FalsingManagerFake;
import com.android.systemui.flags.FakeFeatureFlags;
@@ -363,7 +362,6 @@ public class NotificationSwipeHelperTest extends SysuiTestCase {
verify(mSwipeHelper, times(1)).isFalseGesture();
}
- @DisableFlags(Flags.FLAG_MAGNETIC_NOTIFICATION_SWIPES)
@Test
public void testIsDismissGesture_farEnough() {
doReturn(false).when(mSwipeHelper).isFalseGesture();
@@ -376,20 +374,6 @@ public class NotificationSwipeHelperTest extends SysuiTestCase {
verify(mSwipeHelper, times(1)).isFalseGesture();
}
- @EnableFlags(Flags.FLAG_MAGNETIC_NOTIFICATION_SWIPES)
- @Test
- public void testIsDismissGesture_magneticSwipeIsDismissible() {
- doReturn(false).when(mSwipeHelper).isFalseGesture();
- doReturn(false).when(mSwipeHelper).swipedFarEnough();
- doReturn(false).when(mSwipeHelper).swipedFastEnough();
- doReturn(true).when(mCallback).isMagneticViewDetached(any());
- when(mCallback.canChildBeDismissedInDirection(any(), anyBoolean())).thenReturn(true);
- when(mEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_UP);
-
- assertTrue("Should be a dismissal", mSwipeHelper.isDismissGesture(mEvent));
- verify(mSwipeHelper, times(1)).isFalseGesture();
- }
-
@Test
public void testIsDismissGesture_notFarOrFastEnough() {
doReturn(false).when(mSwipeHelper).isFalseGesture();
diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
index e3afe2e190e9..c78f75a334fd 100644
--- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
@@ -778,26 +778,18 @@ public class SwipeHelper implements Gefingerpoken, Dumpable {
protected boolean swipedFarEnough() {
float translation = getTranslation(mTouchedView);
- return Math.abs(translation) > SWIPED_FAR_ENOUGH_SIZE_FRACTION * getSize(mTouchedView);
+ return Math.abs(translation) > SWIPED_FAR_ENOUGH_SIZE_FRACTION * getSize(
+ mTouchedView);
}
public boolean isDismissGesture(MotionEvent ev) {
float translation = getTranslation(mTouchedView);
return ev.getActionMasked() == MotionEvent.ACTION_UP
&& !mFalsingManager.isUnlockingDisabled()
- && !isFalseGesture() && isSwipeDismissible()
+ && !isFalseGesture() && (swipedFastEnough() || swipedFarEnough())
&& mCallback.canChildBeDismissedInDirection(mTouchedView, translation > 0);
}
- /** Can the swipe gesture on the touched view be considered as a dismiss intention */
- public boolean isSwipeDismissible() {
- if (magneticNotificationSwipes()) {
- return mCallback.isMagneticViewDetached(mTouchedView) || swipedFastEnough();
- } else {
- return swipedFastEnough() || swipedFarEnough();
- }
- }
-
/** Returns true if the gesture should be rejected. */
public boolean isFalseGesture() {
boolean falsingDetected = mCallback.isAntiFalsingNeeded();
@@ -978,13 +970,6 @@ public class SwipeHelper implements Gefingerpoken, Dumpable {
void onMagneticInteractionEnd(View view, float velocity);
/**
- * Determine if a view managed by magnetic interactions is magnetically detached
- * @param view The magnetic view
- * @return if the view is detached according to its magnetic state.
- */
- boolean isMagneticViewDetached(View view);
-
- /**
* Called when the child is long pressed and available to start drag and drop.
*
* @param v the view that was long pressed.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
index 286f07b7413d..e89a76fd5a69 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
@@ -32,6 +32,7 @@ import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
+import android.service.notification.StatusBarNotification;
import android.util.ArrayMap;
import android.view.LayoutInflater;
import android.view.View;
@@ -357,9 +358,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
final float dismissThreshold = getDismissThreshold();
final boolean snappingToDismiss = delta < -dismissThreshold || delta > dismissThreshold;
if (mSnappingToDismiss != snappingToDismiss) {
- if (!Flags.magneticNotificationSwipes()) {
- getMenuView().performHapticFeedback(CLOCK_TICK);
- }
+ getMenuView().performHapticFeedback(CLOCK_TICK);
}
mSnappingToDismiss = snappingToDismiss;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManager.kt
index fa7f63046895..aa6951715755 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManager.kt
@@ -33,12 +33,12 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
interface MagneticNotificationRowManager {
/**
- * Notifies a change in the device density. The density can be used to compute the values of
- * thresholds in pixels.
+ * Set the swipe threshold in pixels. After crossing the threshold, the magnetic target detaches
+ * and the magnetic neighbors snap back.
*
- * @param[density] The device density.
+ * @param[threshold] Swipe threshold in pixels.
*/
- fun onDensityChange(density: Float)
+ fun setSwipeThresholdPx(thresholdPx: Float)
/**
* Set the magnetic and roundable targets of a magnetic swipe interaction.
@@ -87,9 +87,6 @@ interface MagneticNotificationRowManager {
*/
fun onMagneticInteractionEnd(row: ExpandableNotificationRow, velocity: Float? = null)
- /** Determine if the given [ExpandableNotificationRow] has been magnetically detached. */
- fun isMagneticRowSwipeDetached(row: ExpandableNotificationRow): Boolean
-
/* Reset any roundness that magnetic targets may have */
fun resetRoundness()
@@ -112,7 +109,7 @@ interface MagneticNotificationRowManager {
val Empty: MagneticNotificationRowManager
get() =
object : MagneticNotificationRowManager {
- override fun onDensityChange(density: Float) {}
+ override fun setSwipeThresholdPx(thresholdPx: Float) {}
override fun setMagneticAndRoundableTargets(
swipingRow: ExpandableNotificationRow,
@@ -130,10 +127,6 @@ interface MagneticNotificationRowManager {
velocity: Float?,
) {}
- override fun isMagneticRowSwipeDetached(
- row: ExpandableNotificationRow
- ): Boolean = false
-
override fun resetRoundness() {}
override fun reset() {}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
index fa94c5700027..9bd5a5bd903f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
@@ -62,9 +62,8 @@ constructor(
val swipedRowMultiplier =
MAGNETIC_TRANSLATION_MULTIPLIERS[MAGNETIC_TRANSLATION_MULTIPLIERS.size / 2]
- override fun onDensityChange(density: Float) {
- magneticDetachThreshold =
- density * MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
+ override fun setSwipeThresholdPx(thresholdPx: Float) {
+ magneticDetachThreshold = thresholdPx
}
override fun setMagneticAndRoundableTargets(
@@ -255,9 +254,6 @@ constructor(
}
}
- override fun isMagneticRowSwipeDetached(row: ExpandableNotificationRow): Boolean =
- row.isSwipedTarget() && currentState == State.DETACHED
-
override fun resetRoundness() = notificationRoundnessManager.clear()
override fun reset() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
index bdb65d456473..124e6f590bfe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
@@ -477,22 +477,15 @@ public class NotificationStackScrollLayoutController implements Dumpable {
}
@Override
- public boolean isMagneticViewDetached(View view) {
- if (view instanceof ExpandableNotificationRow row) {
- return mMagneticNotificationRowManager.isMagneticRowSwipeDetached(row);
- } else {
- return false;
- }
- }
-
- @Override
public float getTotalTranslationLength(View animView) {
return mView.getTotalTranslationLength(animView);
}
@Override
public void onDensityScaleChange(float density) {
- mMagneticNotificationRowManager.onDensityChange(density);
+ mMagneticNotificationRowManager.setSwipeThresholdPx(
+ density * MagneticNotificationRowManager.MAGNETIC_DETACH_THRESHOLD_DP
+ );
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java
index 33b94783b24a..c5a846e1da05 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java
@@ -33,7 +33,6 @@ import android.view.ViewConfiguration;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.jank.InteractionJankMonitor;
-import com.android.systemui.Flags;
import com.android.systemui.SwipeHelper;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
@@ -192,11 +191,6 @@ class NotificationSwipeHelper extends SwipeHelper implements NotificationSwipeAc
@Override
public boolean handleUpEvent(MotionEvent ev, View animView, float velocity,
float translation) {
- if (Flags.magneticNotificationSwipes()
- && (mCallback.isMagneticViewDetached(animView) || swipedFastEnough())) {
- dismiss(animView, velocity);
- return true;
- }
NotificationMenuRowPlugin menuRow = getCurrentMenuRow();
if (menuRow != null) {
menuRow.onTouchEnd();