Do not replace the authenticated dataset for pinned inline suggestion
* For the case where the pinned inline suggestion triggers an pending intent through the auth flow, and it returns a dataset to be autofilled, previously we would replace the existing dataset with the returned dataset. However, this is causing several potential issues: 1. if the returned dataset doesn't contain inline presentation the the pinned icon will not show again 2. if the returned dataset contains inline presentation but not the pending intent, then the pinned icon will show up again but tapping on it will not launch the pending intent 3. if the returned dataset contains the inline presentaion and the pending intent, then when we "autofill" it, it'll fire the pending intent directly as opposed to filling in the value * We fix the issue by not replacing the old dataset if the dataset is a pinned inline suggestion. * One caveat of the approach is that: a dataset can potentially have multiple fields, and it's possible that some of the fields' has inline presentation and some don't. It's also possible that some of the fields' inline presentation is pinned and some isn't. So the concept of whether a Dataset is pinned or not is ill-defined. Here we say a dataset is pinned if any of the field has a pinned inline presentation in the dataset. It's not ideal but hopefully it is sufficient for most of the cases. * An alternative approach is to have the autofill provider telling whether they want to replace the old dataset or not, through a new field in the returned Bundle. But that requres an API change so is infeasible at this time. Test: atest android.autofillservice.cts.inline Test: atest android.autofillservice.cts.augmented Test: atest android.autofillservice.cts.LoginActivityTest Test: atest android.autofillservice.cts.AuthenticationTest Bug: 159367101 Change-Id: I6d162aeb88a4655989c1aa315df8304c0980ac60
Loading
Please register or sign in to comment