From 14ab8dc317a500d37ff353c38d23b37ec018ea98 Mon Sep 17 00:00:00 2001 From: "ESWAR MAGATAPALLI (xWF)" Date: Tue, 11 Mar 2025 00:38:30 -0700 Subject: 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 --- .../notification/row/NotificationMenuRowTest.java | 3 --- .../MagneticNotificationRowManagerImplTest.kt | 29 ++++------------------ .../stack/NotificationSwipeHelperTest.java | 16 ------------ .../src/com/android/systemui/SwipeHelper.java | 21 +++------------- .../notification/row/NotificationMenuRow.java | 5 ++-- .../stack/MagneticNotificationRowManager.kt | 17 ++++--------- .../stack/MagneticNotificationRowManagerImpl.kt | 8 ++---- .../NotificationStackScrollLayoutController.java | 13 +++------- .../stack/NotificationSwipeHelper.java | 6 ----- 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(); @@ -977,13 +969,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. * 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 @@ -476,15 +476,6 @@ 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); @@ -492,7 +483,9 @@ public class NotificationStackScrollLayoutController implements Dumpable { @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(); -- cgit v1.2.3-59-g8ed1b