Loading packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +6 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.classifier; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; import static com.android.systemui.classifier.Classifier.GENERIC; import static com.android.systemui.classifier.Classifier.MEDIA_SEEKBAR; import static com.android.systemui.classifier.FalsingManagerProxy.FALSING_SUCCESS; import static com.android.systemui.classifier.FalsingModule.BRIGHT_LINE_GESTURE_CLASSIFERS; Loading Loading @@ -220,6 +221,11 @@ public class BrightLineFalsingManager implements FalsingManager { return r; }).collect(Collectors.toList()); // check for false tap if it is a seekbar interaction if (interactionType == MEDIA_SEEKBAR) { localResult[0] &= isFalseTap(LOW_PENALTY); } logDebug("False Gesture (type: " + interactionType + "): " + localResult[0]); return localResult[0]; Loading packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt +1 −6 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import androidx.lifecycle.MutableLiveData import com.android.systemui.classifier.Classifier.MEDIA_SEEKBAR import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.FalsingManager.LOW_PENALTY import com.android.systemui.statusbar.NotificationMediaManager import com.android.systemui.util.concurrency.RepeatableExecutor import javax.inject.Inject Loading Loading @@ -333,11 +332,7 @@ class SeekBarViewModel @Inject constructor( } override fun onStopTrackingTouch(bar: SeekBar) { // in addition to the normal functionality of both functions. // isFalseTouch returns true if there is a real/false tap since it is not a move. // isFalseTap returns true if there is a real/false move since it is not a tap. if (falsingManager.isFalseTouch(MEDIA_SEEKBAR) && falsingManager.isFalseTap(LOW_PENALTY)) { if (falsingManager.isFalseTouch(MEDIA_SEEKBAR)) { viewModel.onSeekFalse() } viewModel.onSeek(bar.progress.toLong()) Loading packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,35 @@ public class BrightLineClassifierTest extends SysuiTestCase { assertThat(mBrightLineFalsingManager.isFalseTouch(0)).isTrue(); } @Test public void testIsFalseTouch_SeekBar_FalseTouch() { when(mClassifierA.classifyGesture(anyInt(), anyDouble(), anyDouble())) .thenReturn(mFalsedResult); when(mSingleTapClassfier.isTap(any(List.class), anyDouble())).thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isTrue(); } @Test public void testIsFalseTouch_SeekBar_RealTouch() { when(mSingleTapClassfier.isTap(any(List.class), anyDouble())).thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isFalse(); } @Test public void testIsFalseTouch_SeekBar_FalseTap() { when(mClassifierA.classifyGesture(anyInt(), anyDouble(), anyDouble())) .thenReturn(mFalsedResult); when(mSingleTapClassfier.isTap(any(List.class), anyDouble())).thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isTrue(); } @Test public void testIsFalseTouch_SeekBar_RealTap() { when(mClassifierA.classifyGesture(anyInt(), anyDouble(), anyDouble())) .thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isFalse(); } @Test public void testIsFalseTouch_ClassifierBRejects() { when(mClassifierB.classifyGesture(anyInt(), anyDouble(), anyDouble())) Loading Loading
packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +6 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.classifier; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; import static com.android.systemui.classifier.Classifier.GENERIC; import static com.android.systemui.classifier.Classifier.MEDIA_SEEKBAR; import static com.android.systemui.classifier.FalsingManagerProxy.FALSING_SUCCESS; import static com.android.systemui.classifier.FalsingModule.BRIGHT_LINE_GESTURE_CLASSIFERS; Loading Loading @@ -220,6 +221,11 @@ public class BrightLineFalsingManager implements FalsingManager { return r; }).collect(Collectors.toList()); // check for false tap if it is a seekbar interaction if (interactionType == MEDIA_SEEKBAR) { localResult[0] &= isFalseTap(LOW_PENALTY); } logDebug("False Gesture (type: " + interactionType + "): " + localResult[0]); return localResult[0]; Loading
packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt +1 −6 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import androidx.lifecycle.MutableLiveData import com.android.systemui.classifier.Classifier.MEDIA_SEEKBAR import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.FalsingManager.LOW_PENALTY import com.android.systemui.statusbar.NotificationMediaManager import com.android.systemui.util.concurrency.RepeatableExecutor import javax.inject.Inject Loading Loading @@ -333,11 +332,7 @@ class SeekBarViewModel @Inject constructor( } override fun onStopTrackingTouch(bar: SeekBar) { // in addition to the normal functionality of both functions. // isFalseTouch returns true if there is a real/false tap since it is not a move. // isFalseTap returns true if there is a real/false move since it is not a tap. if (falsingManager.isFalseTouch(MEDIA_SEEKBAR) && falsingManager.isFalseTap(LOW_PENALTY)) { if (falsingManager.isFalseTouch(MEDIA_SEEKBAR)) { viewModel.onSeekFalse() } viewModel.onSeek(bar.progress.toLong()) Loading
packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,35 @@ public class BrightLineClassifierTest extends SysuiTestCase { assertThat(mBrightLineFalsingManager.isFalseTouch(0)).isTrue(); } @Test public void testIsFalseTouch_SeekBar_FalseTouch() { when(mClassifierA.classifyGesture(anyInt(), anyDouble(), anyDouble())) .thenReturn(mFalsedResult); when(mSingleTapClassfier.isTap(any(List.class), anyDouble())).thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isTrue(); } @Test public void testIsFalseTouch_SeekBar_RealTouch() { when(mSingleTapClassfier.isTap(any(List.class), anyDouble())).thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isFalse(); } @Test public void testIsFalseTouch_SeekBar_FalseTap() { when(mClassifierA.classifyGesture(anyInt(), anyDouble(), anyDouble())) .thenReturn(mFalsedResult); when(mSingleTapClassfier.isTap(any(List.class), anyDouble())).thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isTrue(); } @Test public void testIsFalseTouch_SeekBar_RealTap() { when(mClassifierA.classifyGesture(anyInt(), anyDouble(), anyDouble())) .thenReturn(mFalsedResult); assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.MEDIA_SEEKBAR)).isFalse(); } @Test public void testIsFalseTouch_ClassifierBRejects() { when(mClassifierB.classifyGesture(anyInt(), anyDouble(), anyDouble())) Loading