Make disabled EditTexts fillable by Autofill

Some app developers are trying to improve the UX of the sign in flow by disabling one of the fields (e.g. password field) until the input in the other field (e.g. username) is validated (e.g. length exceeds a threshold). This makes sense.

However, such behavior presents a problem for Autofill: the fetched value currently can't be filled into a field that is disabled.

One approach can be to perform the fill of the fields sequentially, but there is no guarantee on which field the developer disables/enables. Also it's easy to come up with the examples of how this can quickly break.

Instead, this change just allows Autofill to fill the fields that are disabled. Note that Autofill already ignores the fields that are invisible. Therefore, this only affects the fields that are: a) editable, and b) visible, and c) disabled. There should be no good reason to disable a visible field for any purpose other then the input validation, in which case Autofill is expected to work.

Bug: 296097301
Bug: 286515609
Bug: 292049995
Bug: 294074377
Test: atest CtsAutoFillServiceTestCases
Change-Id: I7e1f342ab30f309b419b68cc26868feaf5a53934
1 file changed