summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java
Commit message (Collapse)AuthorAgeFilesLines
* Don't report non-foldables as unfolded.Dave Mankoff2023-03-241-2/+8
| | | | | | | | | | | | The FoldStateListener is reporting non-foldable phones as unfolded. Previously, Falsing relied on this being null. Inspect the foldability of a device directly and incorporate this into the FalsingDataProvider. Bug: 274914759 Test: manual && atest SystemUITests:com.android.systemui.classifier Change-Id: Ibe768067d69464b14368ae0d67110453f9368c6a
* Ignore the closing MotionEvent of swipe gestures for falsingAndrás Kurucz2023-03-031-5/+41
| | | | | | | | | | | | The ZigZagClassifier falsly reports some swipes as false touches. The reason for that is in our touch event stream. The closing ACTION_UP event of a swipe might be a bit offseted from the previous ACTION_MOVE event and sometimes it is just enough to push us over the allowed tolerance. In this fix we drop the gesture closing ACTION_UP event if it is close in time to a previous ACTION_MOVE event. Fixes: 236197248 Test: atest swipe notifications on the LS and observe the FalsingManager logs Test: atest SystemUI:com.android.systemui.classifier Change-Id: I33093ff77fd23a2913bd3adfd79a15e3ae66b316
* Don't skip falsing on non-foldable devicesAndrás Kurucz2023-02-161-2/+2
| | | | | | | | | In ag/20887962 we introduced a way to skip checking for false touches, when a foldable device is unfolded. The problem is that this CL also disabled the falsing checks on non-foldable devices. Fixes: 269594643 Test: atest BrightLineClassifierTest BrightLineFalsingManagerTest FalsingDataProviderTest Test: enable FalsingManager logs, check if falsing is skipped on foldable and non-foldable devices. Change-Id: I99ee7b717f0a417065655ccc3a0602839f44e40a
* Skip falsing on unfolded devices.Dave Mankoff2023-01-111-0/+8
| | | | | | | | | Exposes the already-known folded state on FoldStateListener such that it can be queried when needed. Bug: 236197248 Test: manually on a foldable && atest SystemUITests Change-Id: I1bca6254b7e8528e0a999d8f171e0ee1f966aeb4
* [User Switcher] Remove falsing check for a11y.Aaron Liu2022-10-281-0/+13
| | | | | | | | | | | | The user switcher on the bouncer has a bunch of falsing checks. Check to see if the click that is performed is from an accessibility action. If this is the case, we do not perform a falsing check. Test: Add a unit test. Used voice access and switch access to open the user switcher and select an item in that list. Bug: 221370490, 222211112 Change-Id: Ie9fce53ce11b68dc10f5c2513d3c6a600c51fafa
* Analyze vertical swipes on QS's Scroll View.Dave Mankoff2022-09-201-3/+3
| | | | | | | | | | | | | | | | | When media controls are shown, the full qs+media controls often takes up more than one full screen. Swiping up on this causes the qs to vertically scroll instead of collapse. Prior to this cl, we weren't analyzing such swipes in the FalsingManager. Now we do. No explicit action is taken in the event of a false swipe. It simply gives us more signal. Enough bad swipes may implicitly cause the lock screen to reset itself. Fixes: 241708312 Test: manual Change-Id: I5adfb3a22b2f0f51efb87d56a6cfc5459cd67006
* Use DockManager instead of BatteryController for Falsing.Dave Mankoff2021-07-021-7/+13
| | | | | | | | | | Also, pause the proximity sensor directly when we dock/undock. This ensures that we don't wait for some other event to occur before changing the state of the proximity sensor. Fixes: 192670703 Test: atest SystemUITests Change-Id: If2b429639df76bbd4cf8adecc987dcf18ae45925
* Prevent NPE on ExpandableNotificationRow.Dave Mankoff2021-05-041-1/+1
| | | | | | | | | An NPE could happen, related to falsing, if the very first gesture to happen is a tap on an ExpandableNotificationRow. Fixes: 187196123 Test: atest SystemUITests Change-Id: I8a82fc4d85ba5676a6c198a0b6ddb67009c8ad8e
* Incorporate Falsing Belief sooner.Dave Mankoff2021-04-011-1/+12
| | | | | | | | | | | | | | Process gestures in the FalsingManager as soon as they complete, instead of waiting for the next gesture to begin. This provides more accurate and useful feedback about falsing belief. It means that a falsing "event" will be fired as soon as the indicated threshold is crossed, instead of on the next, possibly intentional gesture. Bug: 184042853 Test: atest SystemUITests && manual Change-Id: Idd9227de3a03c52dabe31f52dbb45ff890615ded
* Move Falsing debug records to gesture finalization.Dave Mankoff2021-03-231-12/+16
| | | | | | | | | | | | Renames onGestureComplete to onGestureFinalized to be more clear about the purpose that the message serves. Prior to this change, debug swipe records might be recorded mulptile times. Bug: 172655679 Test: manual Change-Id: I334866f981ce0f4153f207e096b27eadfc1251ee
* Add more logging for falsing.Dave Mankoff2021-03-181-17/+0
| | | | | | | | | | | | | | | | | | | | | | Makes the FalsingManager slightly less stateful (passing the interaction type directly to the classifiers as needed). It also includes more logging than we had before, listing all the failed classifiers for a gesture, along with the HistoryTracker's belief and confidence. Logs are now delayed one gesture. Instead of immediately logging when a falsing call is made, it waits until the gesture is marked as complete. This confers two advantages: 1) If multiple calls to #isFalseGesture (and similar) are made, we don't log multiple times. We only log the result once. 2) It allows us to log the effects on the HistoryTracker, as that only updates itself when the gesture is marked as completed. Bug: 172655679 Test: atest SystemUITests && manual Change-Id: I653ac2abb03a91ff000b46075e58137b04226023
* Fix unbounded MotionEvent growth in FalsingDave Mankoff2021-03-041-23/+10
| | | | | | | | | | | | | | | | | We were keeping an unbounded list of MotionEvents inside of the FalsingManager. Generally, this list should have shrunk itself periodically, but in practice it only shrank itself when someone double taps a notification. Meanwhile, we weren't even using the data in the list! With this change, we only keep the current and prior list of MotionEvents - the ones we actually use. The list of historical events is removed, so the leak goes with it. Fixes: 177329773 Test: atest SystemUITests && manual Change-Id: If8bfeea944850d972434915018b5bbfb3acb80e4
* Connect FalsingManager to HistoryTracker.Dave Mankoff2021-01-051-12/+19
| | | | | | | | | | | | | | With this change, the analysis of gestures actually gets added to our HistoryTracker. Prior to this, HistoryTracker was only ever being exercised in tests. The one trick that this addresses is that invalid single-taps can't immediately be added to the HistoryTracker, as they may become _valid_ double taps. We don't want double taps to be penalized. Bug: 172655679 Test: atest SystemUITests Change-Id: I2e5ece6af82eb20f053b6b17298dcd9002236e39
* Add HistoryTracker to FalsingManagerDave Mankoff2020-12-101-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This institutes a HistoryTracker mechanism that will allow the FalsingManager to take recent activity into account when classifying gestures. The HistoryTracker returns a penalty that is pased to each classifier for them to use when making decisions. As of right now, no classifier actually uses the history penalty when making a classification decision. The HistoryTracker keeps records of the last 3 seconds of falsing results, applying a decaying penalty to the results over time. It also assigns a confidence to its results, based on how consistent they are. Each individual classifier is also able to return a confidence score now, such that, if they are not confident in their decision, they don't throw off the score that gets stored in the HistoryTracker. Confidences currently returned by the classifiers are somewhat arbitrary and should be adjusted in future CLs. Everything is currently open for adjustment: - The length of history - The decay function applied to history - The method by which our confidence in the history is calculated - The confidence returned by each individual classfier - How the history penalty is taken into account by each classifier - ... and probably more. Bug: 172655679 Test: atest SystemUITests Change-Id: Ief2a5144a0cda659c7d78ed6e489231d481b6872
* Add Tests for the BrightLineFalsingManager.Dave Mankoff2020-12-011-3/+0
| | | | | | | | | | Sets up some more dagger injection and removes all the "new Classifier(...)" from its constructor, allowing them to come from outside. Bug: 172655679 Test: atest SystemUITests Change-Id: I916de7d5ee60ec2183c6401ec222867fc5eff823
* Refactor parts of FalsingManager into FalsingCollectorDave Mankoff2020-11-201-0/+359
This CL separates out the two roles of the FalsingManager. It introduces the FalsingCollector, used by SystemUI to report events that may be interesting to Falsing, such as touch events, sensor events, and general user actions. The FalsingManager, meanwhile, continues to support the methods This helps breakup the monolithic FalsingManger into more manageable pieces, reducing the API surface area of FalsingManager significantly. Bug: 172655679 Test: atest SystemUITests && manual Change-Id: I92f8e3747f5c4a04eaa64e1a8b626c2a07c480aa