diff options
author | 2025-03-11 00:38:30 -0700 | |
---|---|---|
committer | 2025-03-11 00:38:30 -0700 | |
commit | 14ab8dc317a500d37ff353c38d23b37ec018ea98 (patch) | |
tree | be186aea6de50f94a959fdc3e73ff1c39ce93abf | |
parent | c6b3f7c85da74339c9403fe86a03e9670399463b (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
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(); |