History log of /frameworks/base/core/java/android/view/autofill/AutofillManager.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ce3ae87da943eee81483fab8a786633b358179b4 24-May-2018 Felipe Leme <felipeal@google.com> New Autofill field: FIELD_AUTOFILL_SESSION_ID

This field contains the autofill session id (Thank You, Captain Obvious!), which
is useful to correlate autofill metrics that are not logged on
AUTOFILL_REQUEST.

Test: atest CtsAutoFillServiceTestCases # to make sure it didn't break anything
Test: manually run some test and watched
'adb shell logcat -b events | grep sysui'. Example:
[757,913,758,4,806,android.autofillservice.cts,871,android.autofillservice.cts.LoginActivity,914,2,915,2,1456,-2045861404

Fixes: 80093094

Merged-In: If4b1c9ab616b2ba580745096894997eb7edb3e34
Change-Id: If4b1c9ab616b2ba580745096894997eb7edb3e34
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
212b1614f4328a66c58a27899fe75583c753ef35 22-May-2018 Felipe Leme <felipeal@google.com> Added the class name of activity being autofilled on (most) autofill metrics.

Test: atest CtsAutoFillServiceTestCases # to make sure it didn't break anything
Test: manually run some test and watched
'adb shell logcat -b events | grep sysui'

Fixes: 80151641

Change-Id: I5b83e6ceb549a641d10c39bbfd4f24d0a43d1a23
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
1116652087c5889a98ff6d736e127fc0e97dbe37 07-May-2018 Felipe Leme <felipeal@google.com> New FIELD_AUTOFILL_COMPAT_MODE field.

This field is used on pretty much all Autofill metrics, except
AUTOFILL_USERDATA_UPDATED, AUTOFILL_SERVICE_DISABLED_SELF, and
AUTOFILL_INVALID_PERMISSION.

Test: atest CtsAutoFillServiceTestCases
Test: adb shell logcat -b events | grep sysui

Bug: 79351659

Change-Id: I2e2f3dcc780a3896162b158926f5ee89c7cb342d
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
49f08edf7d08101dfc00920f2abb1dab2280cd7e 27-Mar-2018 Felipe Leme <felipeal@google.com> Recover dataset picker when view fail to autofill.

When a dataset is selected, the framework tries to autofill all views belonging
to it. But if one (or more view) failed to autofill, we should let the user
recover by tapping the view again.

This scenario typically happens when views are recycled.

Test: atest MutableAutofillIdTest#testViewGoneDuringAutofillCanStillBeFilled
Test: atest CtsAutoFillServiceTestCases # manually retrying flaky failures

Fixes: 76149637

Change-Id: I7a6352c68b4a7d5e4cb80a7346c66efd831f21c8
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
0c8ce322a3107933d16082e00c77fbe501dc3c07 23-Mar-2018 Felipe Leme <felipeal@google.com> Integrate autofill session lifecycle with URL bar changes when on compat mode.

The contents of a browser URL bar is typically changed for 2 reasons:

1.User entered a new URL.
2.Form was submitted and the URL changed.

On scenario #1, the current session should be canceled, while on #2 it should be
committed. Scenario #2 is already handled when the service sets a SaveInfo, so
this CL handles the other cases:

1.Focus on URL bar is ignored so it does not trigger a new partition.
2.If URL bar changed and service didn't set a SaveInfo, the session is canceled.

Fixes: 76027553

Test: manual test with Chrome
Test: new tests on VirtualContainerActivityCompatModeTest:
testFocusOnUrlBarIsIgnored()
testUrlBarChangeIgnoredWhenServiceCanSave()
testUrlBarChangeCancelsSessionWhenServiceCannotSave
testUrlBarChangeCancelsSessionWhenServiceReturnsNullResponse
Test: atest CtsAutoFillServiceTestCases

Change-Id: I19d2aa4c8b25def0d5eca1c59cfdc2ffe33dd388
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
e24c95fac5a6fe179c7d1dd61e88bf4ce501f619 19-Mar-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fixed isVisibleToUserForAutofill() again." into pi-dev
cb2e83da36710b8f6a043ccc9ac30249003d7950 19-Mar-2018 Felipe Leme <felipeal@google.com> Fixed AutofillManager.isAutofillUiShowing()

It was using & instead of &&

Test: not really
Bug: 75652829
Bug: 74527545

Change-Id: Ib8ca79ba6ec35d2fc97f042db2152b03d334ce30
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
7008e70234dd8c4f548cad464f4025fbc56b1ca5 17-Mar-2018 Felipe Leme <felipeal@google.com> Fixed isVisibleToUserForAutofill() again.

This method should return false when the accessibility provider does not have
an accessibility info for a node. Otherwise, the Save UI is not triggered on
compat mode.

Bug: 75017711
Test: manual verification

Change-Id: Ic1759520a43b4333aef9f8f0e1d93f8d378b131c
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
d9dbd27370afbaced7be9884b280dabaff352e30 13-Mar-2018 Dake Gu <dake@google.com> autofill: ViewRootImpl.dispatchKeyFromIme() should not be dropped

ag/3628400 bypass unhandled keyevent from autofill to app window,
that solves the issue of using physical keyboard. But we still have
issue When user uses touch screen with IME.

There are two ways that IME interacts with app:
1. IME directly replaces text of TextView. (Sample app login screen)
2. IME calls ViewRootImpl.dispatchKeyFromIme. (Sample app credit card
screen)

In the second case, because we gave focus to autofill window,
ViewRootImpl will drop the event.

The fix checks if autofill window is showing fillui it should not
drop event. And dispatchKeyFromAutofill can use the same check, no
longer need FLAG_FROM_AUTOFILL.

Bug: 74527545
Test: Manually check with login and credit card example, using IME
touchscreen and "adb shell input keyevent". I am not able to write
cts test without a fake IME

Change-Id: I698423d83ee8f9151d03a39b49e85416f7d6b615
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
54cc68370cc3c8e16a54da29e2ea0018d9098f39 06-Mar-2018 Felipe Leme <felipeal@google.com> Implemented notifyViewClicked() on compat mode.

Test: atest CtsAutoFillServiceTestCases:android.autofillservice.cts.VirtualContainerActivityCompatModeTest#testSave_submitButtonClicked

Fixes: 73649008

Change-Id: Icf6a8b617e06055c58e38c5b7208c7f3ef3121ee
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
b0fa378f9d390d27ab2a2f83eb6fa16f2b5cbb97 26-Feb-2018 Dake Gu <dake@google.com> autofill: touch on IME should not close autofill

ag/3434666 causes a regression:
Before ag/3434666, autofill gets touch event after IME, autofill
close itself if it gets ACTION_OUTSIDE touch event.
But after ag/3434666, autofill intercepts touch events before IME, if
user touches within IME, autofill still gets ACTION_OUTSIDE event,
and close itself unexpectedly.

The fix moves the closing code to ViewRootImpl.EarlyPostImeStage
around the same place closing tooltip.

If user taps outside autofill window, we will force to close window,
even last autofillid that requestShowUi does not match.

Bug: 73796497
Test: atest CtsAutoFillServiceTestCases
Test: Added LoginActivityTest.testAutofillTapOutside
Test: manually tested using IME and sample app
TODO: need a fake IME service to dispatch given key upon touch.

Change-Id: I10fc0d29dc30d29a48b2118264ec1c4375062deb
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
6dcc9de2feebf2130f15fefd7b096b221e91bbf8 23-Feb-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "New APIs to let app developers manage autofill semantics when reusing views."
09571f89435f3639a747cf4a7a0705b494c7a93e 23-Feb-2018 Dake Gu <dake@google.com> Merge "autofill: pass keyevent from fillui to app"
42b9793d0ff3dbcdcb3b76cec6cdd370a63ce5c8 20-Feb-2018 Felipe Leme <felipeal@google.com> New APIs to let app developers manage autofill semantics when reusing views.

From the Autofill workflow point of view, each view has an unique AutofillId
that is used to semantically, semantically identify the view. Currently, once
the View's AutofillId is set it cannot be changed, which make it hard to reuse
views for optimization (for example, in a RecyclerView).

This change introduces 2 new APIs (View.setAutofillId() and
Activity.getNextAutofillId()) that let app developers reuse views without
breaking their logical autofill semantics.

Fixes: 73555342

Test: atest CtsAutoFillServiceTestCases:MutableAutofillIdTest
Test: atest CtsAutoFillServiceTestCases

Change-Id: I35fe07b10657f17d7b260f90f578ca7a13782a18
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
6a20a194dd965c66d620d6e6dd0abbabd9ca6360 08-Feb-2018 Dake Gu <dake@google.com> autofill: pass keyevent from fillui to app

Since autofill window was made to have window focus, app lost the
ability to accept physical keyboard typing. User can no longer
type on physical keyboard to filter autofill result.

This CL dispatches unhandled keyevent(e.g. A/B/C) from autofill
window to app ViewRootImpl in a similar way InputMethodService
dispatches keyevent to app's ViewRoot.

The unhandled key is sent to app window's ViewRootImpl
PreImeStage so that the keystroke could be translated to CJK by IME.

This CL does not affect fullscreen autofill window for TV where app
window is fully covered: user has to close fullscreen autofill window
first.

Bug: 72951156
Test: atest CtsAutoFillServiceTestCases:LoginActivityTest

Change-Id: I8e50cfdfe8d5691d2b248d85f924c38488ca30f4
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
2ab510ee246fdf047882dc0af89fcecdb0e57a05 16-Feb-2018 Jeff Sharkey <jsharkey@google.com> Merge "Add RequiresFeature annotation."
98af2e4fec8c417f4a674a99f4b40f6f248d6a83 16-Feb-2018 Jeff Sharkey <jsharkey@android.com> Add RequiresFeature annotation.

Certain APIs require that a device have a specific feature to operate
correctly, so start annotating them.

Test: builds, boots
Bug: 72284763
Change-Id: Ie2f30284bdfdb6acc4067f434eba3b5433837606
Exempt-From-Owner-Approval: simple annotations
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
67e6209f320f5e1676831e7e6050fc1d6fac60bf 15-Feb-2018 Felipe Leme <felipeal@google.com> New Autofill API: notifyViewClicked()

Test: atest CtsAutoFillServiceTestCases:VirtualContainerActivityTest#testSave_submitButtonClicked
Test: atest CtsAutoFillServiceTestCases

Bug: 72982765

Change-Id: I60ea67fce94f324c2a79031f8fe9596d45088bcb
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
5b32ebe4df8afdee1ef3a30efbe7782aff20d3e3 15-Feb-2018 Felipe Leme <felipeal@google.com> Improved Autofill logging.

Test: manual verification
Bug: 73172668

Change-Id: I8c77f2a792f3195efa44f44a4c9888c355eaee3c
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
c5123419c65acdcbd709540b3c25c7bc5fb8e3e4 15-Feb-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Autofill optimization on notifyViewEntered()."
9a15c0f5a33d27e8554055b57d865f1c3af97b4d 15-Feb-2018 Felipe Leme <felipeal@google.com> Autofill optimization on notifyViewEntered().

When an autofill service returns a null FillResponse, AutofillManager is kept
in a "zombie" state where the session is finished but a new one must be started
if the user taps another view, so it covers the scenarios where a new view is
added (and the service can autofill it). But we can optimize this workflow by
ignoring views that were already visited before.

Test: atest CtsAutoFillServiceTestCases:LoginActivityTest#testMultipleIterationsAfterServiceReturnedNoDatasets
Test: atest CtsAutoFillServiceTestCases:LoginActivityTest

Bug: 73078981

Change-Id: If8b01aca41f5d1613663002bb6b589fb1cf549df
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
185de72695f4e442febf4f83f79e9a7bba1a1980 14-Feb-2018 Felipe Leme <felipeal@google.com> Add support for url_bar sanitization on autofill compat mode.

Browsers typically use a standard class (like EditView) to hold the URL of the
page being loaded, and the content of that view is sanitized in the initial
autofill request. So, when running in compat mode, we need a mechanism to let
services tell which view contains the URL, so we can convert its contents to
a sanitized webScheme + webDomain pair or properties.

Test: manual verification
Fixes: 72994424

Change-Id: I8be5f3533d6c31f81f28036dc51d5de10a528079
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
3f24e69dbed74fd7724c0a4714ce612f1cb5bc5c 05-Feb-2018 Andreas Gampe <agampe@google.com> Frameworks: Annotate trivial @GuardedBy in core/java

Add @GuardedBy for simple functions that require a single lock
and are named XYZLocked.

Bug: 73000847
Test: m
Test: m javac-check-framework RUN_ERROR_PRONE=true
Change-Id: Icb5114fea2ff2385e1cc7511121026099e05c0ee
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
fd3f8f6f4b453a648b33470f97089c536e0629f0 07-Feb-2018 felipeal <felipeal@google.com> Minor improvements on autofill compat mode:

- Added missing fields such as viewResourceId, maxTextLength, and hint.
- Set input type class for passwords.

Test: manual verification
Bug: 72811034

Change-Id: I60dc7a368726d298f43e1f84b28561140ba10329
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
24c90450fe3fe097a7bca51edd6a4cffd8fd13aa 28-Dec-2017 Svetoslav Ganov <svetoslavganov@google.com> Autofill compatibility mode.

Autofill helps users fill credentials, addresses, payment methods,
emails, etc without manually typing. When focus lands on a fillable
element the platform captures a snapshot of the screen content and
sends it to an autofill service for analysis and suggestions. The
screen snapshot is a structured representation of the screen content.
If this content is composed of standard widgets, autofill works
out-of-the-box. However, some apps do their own rendering and
the content in this case looks like a single view to the platform
while it may have semantic structure. For example, a view may render
a login page with two input test fields.

The platform exposes APIs for apps to report virtual view structure
allowing autofill services to handle apps that have virtual content.
As opposed to apps using standard widgets, this case requires the app
developer to implement the new APIs which may require a fair amount
of code and could be seen as a processes that could take some time.
The most prominent typs of apps that fall into this category are
browsers.

Until most apps rendering virtual content and specifically browsers
don't implement the virutal APIs, autofill providers need to fall-
back to using the accessibliity APIs to provide autofill support
for these apps. This requires developers to work against two sets
of APIs - autofill and accessibility - which is incovenient and error
prone. Also, users need to enable two plugins - autofill and
accessibility which is confusing. Additionally, the privacy and
perfomance impact of using the accessibility APIs cannot be addressed
while autofill providers need to use thes APis.

This change adds an autofill compatibility mode that would allow
autofill services to work with apps that don't implement the
virtual structure autofill APIs. The key idea is to locally enable
accessibility for the target package and remap accessibility to
autofill APIs and vise versa. This way an autofill provider codes
against a single set of APIs, the users enable a single plugin,
the privacy/performance implications of using the accessibility
APIs are addressed, the target app only takes a performance hit
since accessibility is enabled locally which is still more efficient
compared to the performance hit it would incur if accessibility is
enabled globally.

To enable compatibility mode an autofill service declares in its
metadata which packages it is interested in and also what is
the max version code of the package for which to enable compat
mode. Targeted versioning allows targeting only older versions of
the package that are known to not support autofill while newer
versions that are known to support autofill would work in normal
mode.

Since compatibility mode should be used only as a fallback we
have a white list setting with the packages for which this mode
can be requested. This allows applying policy to target only
apps that are known to not support autofill.

Test:
cts-tradefed run cts-dev -m CtsAutoFillServiceTestCases
cts-tradefed run cts-dev -m CtsAccessibilityServiceTestCases

bug:72811034

Change-Id: I11f1580ced0f8b4300a10b3a5174a1758a5702a0
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
f0baef7460f578428e3dff5eed1ea4602dbb165b 26-Jan-2018 Felipe Leme <felipeal@google.com> New Autofill APIs for UserData id.

Test: atest CtsAutoFillServiceTestCases:FieldsClassificationTest CtsAutoFillServiceTestCases:UserDataTest

Bug: 70407264

Change-Id: Id49efc88e1ccbfa2634bcb6ccaa3371f6fd2ed4e
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
e4ac740e39589e3dd3c1696782a39fa8e74764ee 17-Jan-2018 Felipe Leme <felipeal@google.com> Implemented getAlgorithm() and getDefaultAlgorithm() using manifest metadata.

Bug: 70939974
Test: atest CtsAutoFillServiceTestCases:FieldsClassificationTest

Change-Id: I8b7028c0acfef164b84821a9e4c99817acc838f8
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
db6b0fecb4765c2117f9d8b43e5941c0b8f183af 19-Jan-2018 Felipe Leme <felipeal@google.com> Merge "Moved Field Classification score logic to ExtServices."
bc055b0ef1c11337b8ec5f681097e7b51e84b9c4 06-Jan-2018 Felipe Leme <felipeal@google.com> Moved Field Classification score logic to ExtServices.

Bug: 70939974
Test: atest CtsAutoFillServiceTestCases:FieldsClassificationTest \
CtsAutoFillServiceTestCases:UserDataTest
Test: atest CtsAutoFillServiceTestCases

Change-Id: I75fd59b5d7530fcd7095b26f6e592d7459c7d235
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
67decfa7f80c06f3405d1e868bc40cb18dd1460a 27-Dec-2017 Dake Gu <dake@google.com> autofill: support dpad/keyboard

To make autofill works on non-touch device such as TV, allow
fill ui window to gain window focus. Fill ui window does not
need IME. When IME and fill ui window are both shown, fill ui
window will intercept keyevent before IME.

Since autofill window will steal window focus from app window,
we no longer uses View.onWindowFocused() for enter/exit event.
Switched to use Activity onResume/onPause. When view
notifyViewEntered or notifyViewExited called when Activity is paused,
it will be ignored. Before Activity goes to pause state,
notifyViewExited() is fired on focus view, after Activity leaves
pause state, notifyViewEntered() is fired on focus view.

In CTS testDatasetAuthTwoFieldsUserCancelsFirstAttempt, the
authentication activity finishes itself in onCreate() which will not
produce onPause/onResume in app activity, but it will produce window
focus loss/gain event. Since we switch from window focus to activity
onResume/onPause, we will be missing a show fill ui when return from
the never shown authentication activity. To solve this problem,
we added special code when receive ActivityResult from authentication
activity where we check if the authenticate activity never causes
onStop event, where we should issue an extra ACTION_VIEW_ENTERED
event to show fill ui.

Test: passed all existing autofilltest CTS on sailfish
atest CtsAutoFillServiceTestCases
Bug: 70181616

Change-Id: Iafe4dca3be8f049fa6dfd34bac13ccb030c583b6
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
27f4573d136949abeacb00f7246ff9911e9cb105 22-Dec-2017 Felipe Leme <felipeal@google.com> Refactored Field Classification score logic so it can be moved to ExtServices.

Bug: 70939974
Test: atest CtsAutoFillServiceTestCases:FieldsClassificationTest \
CtsAutoFillServiceTestCases:UserDataTest
Test: atest CtsAutoFillServiceTestCases

Change-Id: If584ab3a55744a62f427065bfd44c8c219df83e9
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
17f3d1abb576f8d7b912760224dd60a4c3c63cb9 21-Dec-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "New Autofill API:AutofillManager.getAutofillServiceComponentName()"
23c75ffdaec2ab116b5a43f6d0b4ff527047a5dc 14-Dec-2017 Felipe Leme <felipeal@google.com> New Autofill API:AutofillManager.getAutofillServiceComponentName()

Also minor fixes on isFieldClassificationEnabled() to make sure it's ignored
when not called by the service app and its calls are properly synchronized.

Test: atest CtsAutoFillServiceTestCases:LoginActivityTest#testGetAutofillServiceComponentName

Fixes: 70678279

Change-Id: I58ccb313d22c30af907f3da62f727f067240fa66
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
3103c63b2d47a51ad5a39309c91130aecc06665d 19-Dec-2017 Felipe Leme <felipeal@google.com> Support new Autofill session after service returns a null FillResponse.

When the AutofillService returns a null FillResponse for onFillRequest(),
AutofillManager was ignoring any further view calls backs (other than a manual
request to start a session) to optimize performance by avoiding unnecessary
IPCs to system_server (and then from system_server to the Autofill Service
process).

But this optimization has a drawback: it makes it harder for the service to
handle cases where the activitity dynamically added new views after a view
has been focused.

This CL offers a compromise to fix both problems: it removes the optimization
for notifyViewEntered() calls (as that's what triggers autofill), but still
ignores the other calls once the session is on finished state.

Test: atest CtsAutoFillServiceTestCases:LoginActivityTest#testAutofillAutomaticallyAfterServiceReturnedNoDatasets
Test: atest CtsAutoFillServiceTestCases:LoginActivityTest#testAutofillAutomaticallyAndSaveAfterServiceReturnedNoDatasets
Test: atest CtsAutoFillServiceTestCases:LoginActivityTest

Fixes: 70046972

For optimization purposes, AutofillManager was ignoring all request
Changed AutofillManager to start a new session after service returns a null

Change-Id: Iaae9ed7f8b12ebc9da13e990ef468d9019d5c6ca
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
78172e70f4c5d776678551965db7c167ee11703e 09-Dec-2017 Felipe Leme <felipeal@google.com> Made Autofill Field Classification API public and documented it.

Test: mmm frameworks/base/:doc-comment-check-docs
Test: atest FrameworksCoreTests:SettingsBackupTest
Test: m -j 100 update-api

Fixes: 67867469

Change-Id: Iedf56a2bbcde3826eb22f5ed7a96d6ed70b968f4
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
ce8db9911494225fcd99711d7df85a130de5a6ce 14-Dec-2017 Jeff Sharkey <jsharkey@android.com> Add more IntDef prefixes for auto-documenting.

Test: builds, boots
Bug: 70177949
Exempt-From-Owner-Approval: annotation-only changes
Change-Id: I76dde6054e06f52240bd4b1a0f196dcb74623608
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
ac74dc42f78267a63bcea1740c00e20a6122cc4b 07-Dec-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Further improvements when app forges package info for autofill:"
637e05ee0f5077f2cda8f0defaf29baeb251ad75 06-Dec-2017 Felipe Leme <felipeal@google.com> Further improvements when app forges package info for autofill:

- Dont create a session if the component is not owned by the calling UID.
- Log metrics for forged attempts.
- Avoid possible NPEs on AutofillManager when context or client is null.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.VirtualContainerActivityTest#testAppCannotFakePackageName
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Bug: 69981710

Change-Id: I9695bc046f3eb8aeecfe44f80fd0366f68b2c635
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
329d04097e1db9b6f801972d94f56c5b56c09e8a 06-Dec-2017 Felipe Leme <felipeal@google.com> Moar changes for Autofill Field Classification mechanism:

- Changed max score to float (range 0.0 - 1.0).
- Replaced getTopMatch() to getMatches().
- Created a Scorer interface with a default edit-distance implementation.
- Added a isFieldClassificationEnabled() method.

Test: atest CtsAutoFillServiceTestCases:FieldsClassificationTest
Test: atest CtsAutoFillServiceTestCases:EditDistanceScorerTest
Test: atest CtsAutoFillServiceTestCases:UserDataTest
Test: atest FrameworksCoreTests:SettingsBackupTest

Bug: 68045531

Change-Id: Ice6cbf548053b86b47980d9664a3a21219c0ff08
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
452886a5b8d7cb94ba0c53e8976ff558980db1e5 27-Nov-2017 Felipe Leme <felipeal@google.com> Refactored field detection mechanism to support multiple fields.

Now instead of using FillResponse.setFieldDetection() with an object that
contains both the autofill ids an the user data, service must:
- Set global mapping through AutofillService.setUserData()
- Pass just the autofill ids to FillResponse.setFieldClassificationIds()

This CL is purely a refactoring CL - although the new API supports multiple
values and multiple fields, the implementation is still hardcode for one
value and one field (as before).

Test: atest CtsAutoFillServiceTestCases:FieldsClassificationTest
Test: atest CtsAutoFillServiceTestCases:UserDataTest
Test: atest CtsAutoFillServiceTestCases:FillResponseTest

Bug: 68045531

Change-Id: I8d846d817dfcde3a4db7abff798bb2250e1c4e7b
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
601d22007488145f8651930d23aeb7a7a95cc591 17-Nov-2017 Felipe Leme <felipeal@google.com> Minor improvements on autofill javadocs and logging.

Test: m update-api
Bug: 69456547

Change-Id: I2cab6d7d6ecbe7c1842a5be37af923dd20355b73
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
a834309bd5c8ae276ae7b5e3aedffd47bb517b10 15-Nov-2017 Koji Fukui <koji.fukui@sony.com> Merge "Remove AutofillManagerClient after AutofillManager is finalized" am: dd5384a4fe am: 8d36beec24
am: bb4a13b097

Change-Id: I5f3eea81f662d0396b7fd384b2e91c2087f41c0f
bb4a13b0973928847a7de3927e933a3da96e2e7e 15-Nov-2017 Koji Fukui <koji.fukui@sony.com> Merge "Remove AutofillManagerClient after AutofillManager is finalized" am: dd5384a4fe
am: 8d36beec24

Change-Id: I76ac103f2d6df4a32a49c0c460344a8049d7d3c3
8d36beec2487b2fc14438cffea8ffed1919ce962 15-Nov-2017 Koji Fukui <koji.fukui@sony.com> Merge "Remove AutofillManagerClient after AutofillManager is finalized"
am: dd5384a4fe

Change-Id: If0b092c5e18005fb4b8c1fd8405f4d666c98de5a
ccec6a6ae8b9f9785934e7d97849cbafcfcf3dcb 18-Oct-2017 Koji Fukui <koji.fukui@sony.com> Remove AutofillManagerClient after AutofillManager is finalized

Symptom:
Global reference table overflow happens on system_server.

Root cause:
If a process repeatedly create a context and get AutofillManager
from the context, each BinderProxy of AutofillManagerClient are
registered to AutofillManagerServiceImpl. They aren't removed until
the process is died. BinderProxy consumes global reference and finally
causes crash on system_server.

Solution:
Remove AutofillManagerClient from AutofillManagerServiceImpl after
AutofillManager is finalized.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Bug: 68747744
Change-Id: I8b76c5368b54317b8696cac470cc390b36e910e7
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
d46f87a9e2b444b6f9999d7ec86d347e2fe1b596 03-Nov-2017 Felipe Leme <felipeal@google.com> Added missing AutofillEventType so lint doesn't complain. am: 3dec72b601
am: 3d2f9d1467

Change-Id: I608b1e3ec3c887e50b4daa57cbfdeed0f30d23a0
3dec72b6011a56c1a4fbff31b1f0f729324b87f8 02-Nov-2017 Felipe Leme <felipeal@google.com> Added missing AutofillEventType so lint doesn't complain.

Test: In TreeHugger we trust!
Fixes: 68806712

Change-Id: I2f392161e71e0eca25a4a104b67e7d2982c90341
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
51e29da65e1872745a185284556f4947463ec07d 24-Oct-2017 Felipe Leme <felipeal@google.com> Improvements on autofill debugging.

- Sets the client-side sDebug and sVerbose in the application being autofilled
before it was only set in the service's application
- Logs client class on AutofillManager - useful to detect cases where it's not
an Activity.

Bug: 67742064
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases
Test: manual verification of logs

Change-Id: I1f04b90bae89fd942e5849b4a382f1f54df20e38
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
17292d1a25a4d0c3910a687a4207e7ff5688be1d 24-Oct-2017 Felipe Leme <felipeal@google.com> New Autofill API: FillResponse.disableAutofill(duration)

This API is useful to improve the autofill performance for the scenarios where
the service knows it cannot autofill an app or activity.

Bug: 67867469

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testFillResponseAuthWhenAppCallsCancel

Change-Id: I58e3eb5714db840104e699d614e750c03e26e8ca
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
686128ef59ccd336d923915d57d1b5efe1e6dc8c 17-Oct-2017 Felipe Leme <felipeal@google.com> Minor logging improvements on Autofill.

Test: manual verification

Fixes: 67898895

Change-Id: Ic97d51a388a426b3ff9e74520f52036257a5c1ce
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
fac6655cf530a863ee9187760739e4c9ddf21dd9 13-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "New Autofill API: SaveInfo.setTriggerId()"
a937238eaeac6c3577af0c14ceca822890cc979b 09-Oct-2017 Felipe Leme <felipeal@google.com> Let service set the SaveRequest.getClientState() on dataset auth responses.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testFillResponseAuthClientStateSetOnIntentOnly
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testFillResponseAuthClientStateSetOnFillResponseOnly
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testFillResponseAuthClientStateSetOnIntentAndFillResponse

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testDatasetAuthClientStateSetOnIntentOnly
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testDatasetAuthClientStateSetOnFillResponseOnly
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testDatasetAuthClientStateSetOnIntentAndFillResponse

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Fixes: 67588471

Change-Id: I05a56bfc02400ce87077c93301abc0e0e1aa59a6
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
2fe3ade8139795df9def96d44ee97bf47acec967 29-Sep-2017 Felipe Leme <felipeal@google.com> New Autofill API: SaveInfo.setTriggerId()

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.SimpleSaveActivityTest#testExplicitySaveButton
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.SimpleSaveActivityTest#testExplicitySaveButtonWhenAppClearFields
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Bug: 65118073
Fixes: 67006548

Change-Id: Id12179086567d014f35fe4177b041745fb19bafd
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
bb567ae6c0374e5fe8d62273234cf470577133de 04-Oct-2017 Felipe Leme <felipeal@google.com> Sets AutofillClient on attachBaseContext()

When an activity overrides attachBaseContext(), the attached context must share
the same AutofillCient, otherwise it will break autofill in the activity.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.AttachedContextActivityTest
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Fixes: 67350639

Change-Id: I6b0c4c2fab5fa68eb6ee0714e107ca0816efb2cb
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
650f7abc3fb3a7be419124f601a9941f5f7a7d2b 19-Sep-2017 Felipe Leme <felipeal@google.com> Remove finished sessions on ACTION_CLOSE_SYSTEM_DIALOGS.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.SimpleSaveActivityTest#testTapHomeWhileSaveUiIsShowing
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.SimpleSaveActivityTest#testTapHomeWhileDatasetPickerUiIsShowing
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Fixes: 65414762

Change-Id: I7dc9fd8f40341164e0ca320ff49b99cf8614fdbf
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
2748ffcef703d4da1b9a212b9f4e253baf9914c2 20-Sep-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Autofill optimization: don't contact server when session is finished." into oc-mr1-dev
c7b4529aa912a90953fe9b05c9bba566a82a53c8 19-Sep-2017 Felipe Leme <felipeal@google.com> Autofill optimization: don't contact server when session is finished.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases
Bug: 65414762

Change-Id: I214a7835727c3ff71de9dc65c8d6fe54507265fb
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
b22d635dadea68d91f7601e339f2e0d9f33a12c0 09-Sep-2017 Felipe Leme <felipeal@google.com> Added more metrics for Autofill:

- AUTOFILL_VALUE_RESET
- FIELD_AUTOFILL_PREVIOUS_LENGTH
- AUTOFILL_DATASET_AUTHENTICATED
- AUTOFILL_INVALID_DATASET_AUTHENTICATION
- AUTOFILL_INVALID_AUTHENTICATION
- FIELD_AUTOFILL_SAVE_TYPE
- AUTOFILL_SAVE_CUSTOM_DESCRIPTION
- AUTOFILL_SAVE_CUSTOM_SUBTITLE
- AUTOFILL_SAVE_LINK_TAPPED
- AUTOFILL_SAVE_VALIDATION
- AUTOFILL_PENDING_SAVE_UI_OPERATION

Also tagged all metrics with FIELD_AUTOFILL_SERVICE, and added missing
package name on AUTOFILL_DATASET_APPLIED.

Test: CtsAutoFillServiceTestCases pass

Bug: 65118073
Bug: 65376559
Bug: 65697068

Change-Id: I678193c99d9d1b2dac56a62a88dcf20043d1b401
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
c24a56ae065bfc4b21f646d0c754b5f4db7c7be5 03-Aug-2017 Felipe Leme <felipeal@google.com> Hides the Save UI while handling a pending intent from CustomDescription.

When the AutofillService sets a PendingIntent to launch an activity when
clicking a chield view (for example, to lauch a web page displayign the terms
and conditions of saving something), the system must hide the Save UI and
restore it after the new activity is dismissed.

That sounds simple in the surface, but it requires a huge refactoring behind
the scenes, such as injecting a token in the activity intent and using that
token to hide / cancel the UI during some activity lifecycle events.

Test: lotta of brand-new shinning tests on CtsAutoFillServiceTestCases
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Change-Id: Ie8ec7aeb2c63cab68467046c1a9dcf85dbcc24ec
Fixes: 64309238
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
cf1ff6ca3dbf90fe9c9a5e161094046394a4004d 17-Aug-2017 Felipe Leme <felipeal@google.com> Revert "Dismiss Autofill Save UI when a new Activity is launched."

This reverts commit 05ea98a3f95a2f5179c01a5bfd4901835a0c1bd8.

Bug: 64693551

Change-Id: I8e7a7b2c5f575cee28f977ae7f3c10752a15d49c
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
05ea98a3f95a2f5179c01a5bfd4901835a0c1bd8 15-Aug-2017 Felipe Leme <felipeal@google.com> Dismiss Autofill Save UI when a new Activity is launched.

Test: manual verification using Settings
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -tandroid.autofillservice.cts.SimpleSaveActivityTest#testDismissSave_byLaunchingNewActivity
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -tandroid.autofillservice.cts.LoginActivityTest#testSaveGoesAwayWhenLaunchingNewActivity
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Fixes: 64693551

Change-Id: I323031c7285a4b49f9f0ca06618425a0ab7833da
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
945791199716e66a582c7eb102ed332716a655e4 09-Aug-2017 Felipe Leme <felipeal@google.com> Clarifies autofill lifecycle. am: 744976e298
am: af40bb0dc4

Change-Id: I48f797f62c120b352045cb93e5067ee20c3154d3
744976e2985a07f602c02721db8969a638d51c82 31-Jul-2017 Felipe Leme <felipeal@google.com> Clarifies autofill lifecycle.

Test: m update-api

Bug: 64125551
Bug: 64114048
Change-Id: I17c5bc2e2e64fa27e877301dbcb983ac8497209e
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
33681a94cff6b48bcf82fda1fcb53b8cf7cd38fe 28-Jul-2017 Felipe Leme <felipeal@google.com> Cherry-picked some Autofill Javadoc improvements from master.

Test: m update-api

Bug: 64125551
Bug: 63669555
Bug: 63985284

Merged-in: Iba4817f682670e9fd6d891ae221e1fa415252e99
Change-Id: I82cbb54a522b2cf1dfb11aacc9735c932aa9af90
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
afdfe7665cba7be8e7ac14e2dd4abd79939ca5e9 24-Jul-2017 Felipe Leme <felipeal@google.com> Checks if mResponses is null before using it.

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -t android.autofillservice.cts.LoginActivityTest#testFillResponseAuthWhenAppCallsCancel
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Fixes: 63806922
Bug: 63985284

Change-Id: I8d7cfa34ba88a1d351967e17717b387c805dd00d
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
d1e123cbadc9bf39997d02d144a81ca64af4ef67 12-Jul-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Autofill: Add API for virtual view visibility"
4db89ba82eb6b910972b5fd09999e950e617581d 29-Jun-2017 Svetoslav Ganov <svetoslavganov@google.com> Autofill: Add API for virtual view visibility

Test: VirtualContainerActivityTest

bug:38509603

Change-Id: I3546c99d0b13316337c5015e003337b8019194a9
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
33d226c95333e40e8b46e173c2483ad6728b5e56 27-Jun-2017 Ricardo Loo <rloo@google.com> docs: Updated isAutofillSupported description.

The description for `AutofillManager.isAutofillSupported` doesn't make
clear that either the device or the user can make autofill unsupported.

Bug: 62604325
Test: Ran 'make ds-docs -j16' and staged content to
go/dac-stage/reference/android/view/autofill/AutofillManager.html#isAutofillSupported()

Change-Id: I298b9f535e23dc3cb54fabed36642523753c13a5
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
846cda939796aef868e4bb1ae92e744c3e9d57cb 15-Jun-2017 Phil Weaver <pweaver@google.com> Separate a11y and autofill view ids

Autofill seems to need IDs to be preserved across things
like configuration changes, while accessibility will not
function without views with unique ids. Separating out the
two types of IDs. We can re-combine them once it's clear
that both demands can be satisfied.

Bug: 62301218
Test: Run a11y and autofill CTS, and verify that the play
store app functions with TalkBack after a screen rotation.

Change-Id: I17a99de2874768fc0ade3aa354130dd1f6b4cd7e
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
d86b8fea43ebb6e5c31691b44d8ceb0d8d3c9072 03-Jun-2017 Jeff Sharkey <jsharkey@android.com> Annotate @SystemApi with required permissions.

Most @SystemApi methods should be protected with system (or higher)
permissions, so annotate common methods with @RequiresPermission to
make automatic verification easier.

Verification is really only relevant when calling into system
services (where permissions checking can happen on the other side of
a Binder call), so annotate managers with the new @SystemService
annotation, which is now automatically documented.

This is purely a docs change; no logic changes are being made.

Test: make -j32 update-api && make -j32 offline-sdk-docs
Bug: 62263906
Change-Id: I2554227202d84465676aa4ab0dd336b5c45fc651
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
9876a6fba92e8c1f6ce7f998b34cd72ee726c1b6 31-May-2017 Felipe Leme <felipeal@google.com> Always post AutofillManager operations in the UI thread.

Test: existing CtsAutoFillServiceTestCases pass
Fixes: 62194407

Change-Id: If878b2befc03706c000b3f31b60904072b2225f4
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
6dcec87ea2bc6d7d1aeb89da3c738ab36cbf4459 25-May-2017 Felipe Leme <felipeal@google.com> Moar Autofill Framework javadoc improvements:

- Fixed WebView < > and API calls.
- Improved description of virtual views.
- Described how to set boundaries of virtual views.
- Improved AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS doc.

Bug: 37567048
Test: ran 'm -j doc-comment-check-docs' and checked resulting HTML

Change-Id: Ic0d1e9ff2703c87d4007f0092a2f8dfe0efca6db
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
27e202208b42e78fefcece893a4bb5d8fe2eae58 19-May-2017 Felipe Leme <felipeal@google.com> Hide Autofill UI when non-savable id is gone.

AutofillManager keeps track of which views the AutofillServiec is interested to
save, so when these views are gone, the session is finished.

But when the AutofillService returns a dataset whose views it can not save,
the FillUi for these views are not hiding when the views are gone. This CL
fixes this issue by:

- Keeping track which non-savable views should be tracked.
- Pass the view (instead of it's id) when the UI on such views should be hid.

This CL also optimized some AIDL and internal calls by avoiding the creating of
unnecessary Lists.

Test: manual verification with Snapchat
Test: existing CtsAutoFillServiceTestCases pass
Test: new tests on MultipleFragmentLoginTest pass

Fixes: 38199452
Change-Id: I78fa357962dbc6667146d8e08cd6bacb63e0f337
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
7f33cd350be4278ce5d4ef460c11e4dbaf9c473b 11-May-2017 Felipe Leme <felipeal@google.com> Start a new session on manual request after session is "gone".

When the autofill service returns a null FillResponse, the session is marked
"gone" because the service cannot autofill it. But there might be cases where
the view structure change and it's now autofillable, so need to allow users
to manually request autofill again in such cases.

Fixes: 38205945
Test: CtsAutoFillServiceTestCases pass
Test: LoginActivityTest.testAutofillManuallyAfterServiceReturnedNoDatasets()
Test: LoginActivityTest.testAutofillManuallyAndSaveAfterServiceReturnedNoDatasets()

Change-Id: I9b23c255e563dd0646bf266d31ddb10dcc4f7f6d
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
73fedacfebcccd54f2c36ff7c8eb9929e8ce8455 12-May-2017 Felipe Leme <felipeal@google.com> Removed deprecated APIs.

Test: CtsAutoFillServiceTestCases pass
Test: manual verification with existing service

Bug: 37563972

Change-Id: Ibea2810f9230f06e59d2d81e4ba853de54987956
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
a9379d0b44ca1f68a0036d2b65218e17fa348514 10-May-2017 Svetoslav Ganov <svetoslavganov@google.com> Allow null fill values to support authentication case

If a dataset needs to be authenticated the fill service
may not have the values but needs to tell the system for
which fields to show the fill UI. We now allow passing
a null value to mean the view is a part of the dataset
semantically but its value should remain unchanged.

If a dataset has no values, i.e. the related autofill ids
are mapped to null, we cannot properly filter. In this case
we always match such items regardless what the user typed.

While at this improved accessibility support for filtering
to announce when the number of items being filtered changes.

Also while at this allowed a dataset authentication to return
a response which replaces the current response and refreshes
the UI. Matching datasets with null values to any text plus
allowing a response to be returned from a dataset auth enables
the use case where there is always "Import" item at the
end of the list which when clicked can show arbitrarily more
data entries associated to other apps.

Another change is that we now provide the client state
bundle on both request and dataset auth.

Finally, this change gets rid of dataset waiting auth and
response waiting auth concepts since the reference to the
response and the dataset is piped with the auth request.

Fixed a bug where the width of the autofill UI was not
properly measured by going over all items in the adapter.
Now we measure enough height to fit the first three and the
width id the width of the widest item in the adapter.

Test: Added LoginActivityTest#testDatasetAuthTwoFieldsReplaceResponse
Added LoginActivityTest#testDatasetAuthTwoFieldsNoValues
Added LiginActivityTest#filterTextNullValuesAlwaysMatched
All autofill CTS tests pass

bug:37724701
bug:37424539

Change-Id: Ic19e5d7cbdbb7d110c9e7da0ad60b540cbf1aecf
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
134cee27b8a54ff4c8bebda51c5fe4a4e6f1fd8a 06-May-2017 Philip P. Moltmann <moltmann@google.com> No need to deal with windowTokens

we have a link to the client which is enough to find the views.

Also there was some cases where the windowToken was not updated
properly. This is moot now.

Also: Read a array of views from the client to speed up the
client<->AutofillManager communication.

Fixes: 38070352
Test: CtsAutoFillServiceTestCases
1 Started autofill, saw fill UI
2 Home button
3 Kill activity in background
4 Recents -> back to activity
5 Saw fill UI restored
Change-Id: I7c2c9411204fa5d65867efae9b7296399121c3a2
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
3ba71171647ae1d2366490efac4de5edf10b3707 01-May-2017 Jeff Sharkey <jsharkey@google.com> Merge "Updates based on API council guidance." into oc-dev
000ce805050f0bdbf485464b84eb2c08bca5ad72 29-Apr-2017 Jeff Sharkey <jsharkey@android.com> Updates based on API council guidance.

Test: builds, boots
Change-Id: I223faf55c1e1b4d81d11b4c8b2d93ccd131c969b
Fixes: 37775662
Fixes: 37748635
Fixes: 37673408
Fixes: 37672564
Fixes: 37672218
Fixes: 37638323
Fixes: 37637423
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
f965b87a781c6d77567c3fa7a5c6e4d3361dc6dc 29-Apr-2017 Svet Ganov <svetoslavganov@google.com> Address API council comments

bug:37769694
bug:37322491

Change-Id: I931cfb5ea5fef1505a97b169125ed2cdaaa3d6ff
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
c21f723ca2072610a296cc66d1b70f0d0b99c15b 28-Apr-2017 Felipe Leme <felipeal@google.com> Merge "Changed EXTRA_DATA_EXTRAS to EXTRA_CLIENT_STATE." into oc-dev
37a440fd8bed4a93ee9884ee01a12e9241e2c0fe 28-Apr-2017 Felipe Leme <felipeal@google.com> Changed EXTRA_DATA_EXTRAS to EXTRA_CLIENT_STATE.

Test: CtsAutoFillServiceTestCases pass

Fixes: 37775662

Change-Id: I85c016c3eb84a439371ac707f78b01d9882b75e9
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
9f9ee25515591ef33281708c0ab911962f4364a6 27-Apr-2017 Felipe Leme <felipeal@google.com> Improved Autofill logging.

- Removed ui.Helper.
- Replaced DEBUG and VERBOSE constants by sDebug and sVerbose.
- Added a shell command to dynamically set the constants.
- Removed obsoleted log statements.
- Changed log-level of some log entries.
- Removed unused methods.

Fixes: 36141126

Test: CtsAutoFillServiceTestCases pass
Test: manual verification

Change-Id: Ic08ee9a2adc10e63f49bbcc7ed126455462dc9c1
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
0aa4c5065d1495ec0b2c6fe15324569f31dcbdb1 26-Apr-2017 Felipe Leme <felipeal@google.com> Refactored Autofill to move starting flag out of Session.

Otherwise, all onFillRequest() calls in the same partition would use
the same flags.

Fixes: 37675138
Test: existing CtsAutoFillServiceTestCases pass
Test: CtsAssistTestCases pass
Test: PartitionedActivityTest.testAutofill4ParitionsMixManualAndAuto() pass

Change-Id: I03c8a036637bae534904d4f41265e451088cf940
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
d1146427643c9558bed23ed4341dac796c026d4c 26-Apr-2017 Felipe Leme <felipeal@google.com> Fixed requestAutofill().

It should behave like notifyViewEntered() but passing a flag, but the current
implementation always start a new session, which is a problem on partitions.

Fixes: 37709350

Test: existing CtsAutoFillServiceTestCases pass
Test: new PartitionedActivityTest.testAutofill4PartitionsManually pass

Change-Id: Ia625a8fa067670e888c2861609ede039abf0f474
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
48f10a2ab53e415f34d86ac717b4f6412dfc824f 27-Apr-2017 Svet Ganov <svetoslavganov@google.com> Handle package changes in autofill manager service

Autofill manager service was not observing package changes thus
we did not properly handle the cases of the service being updated,
added, and removed. Handling, additions is needed to properly
support restore from a backup. Fixed a few missing locks.

Test: all autofill CTS tests pass and manually tested update, add,
and remove of autofill services.

bug:36638606
bug:36978445

Change-Id: Idd47891774ba2a4e562a1952cbb5a048211fd4e3
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
bb81092a31649b4e1031e24d68958180f5d4024e 26-Apr-2017 Felipe Leme <felipeal@google.com> Provide support for optimized ACTION_REQUEST_SET_AUTOFILL_SERVICE.

Also removed obsolete 'cmd autofill save'

Bug: 2153814
Test: manual verification

Change-Id: I082e6bb098e9be5d9e26d0941efcf6f28ab01e1d
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
fc513f98d7086605e9b3499d90a88d3b4592c2b6 25-Apr-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Added APIs that let AutofillService implementations set themselves as such." into oc-dev
59fe3108fa958b7a84cea6ddf863e7a4b683716c 25-Apr-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Hide deprecated APIs." into oc-dev
db041188bc9ca03bed3c14a7ca1b3eb9524a9287 22-Apr-2017 Felipe Leme <felipeal@google.com> Added APIs that let AutofillService implementations set themselves as such.

Bug: 37576671
Test: manual verification
Test: CtsAutoFillServiceTestCases (with new tests) pass

Change-Id: I6fd61f8a2826dbf6b6fce831f3deadf6df025386
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
85d1c2d2905362b984563d9b5e8332010c272fc5 21-Apr-2017 Felipe Leme <felipeal@google.com> Minor fixes on Autofill Framework:

- Removed default implementation of onProvideAutofillVirtualStructure() that
was using accessibility API (it's useless because without the View calling
AutofillManager.notifyViewEntered(), it would never be triggered).
- Fixed obsolete TODOs.
- Removed obsolete service class name constant.
- Removed unused debug constant.

Fixes: 37078783
Fixes: 33197203
Bug: 33802548
Bug: 35956626

Test: CtsAutoFillServiceTestCases pass
Merged-In: I834d34b8af8bf0d781dc7e0ffcd6e600bfa2d183
Change-Id: I834d34b8af8bf0d781dc7e0ffcd6e600bfa2d183
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
cb4dd8090b0e68aa185ba1a8a13686c38311d0db 22-Apr-2017 Felipe Leme <felipeal@google.com> Hide deprecated APIs.

Test: CtsAutoFillServiceTestCases pass
Bug: 37563972

Change-Id: Ia5f33c5624b7a6be3c152e126c99800914d23cbd
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
5cb3d6bea314aaff5b42c356a832ba7f854b91eb 21-Apr-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Correctly compute visible views" into oc-dev
e0e287170eb0921dfda312392fb82b1a0b203173 21-Apr-2017 Philip P. Moltmann <moltmann@google.com> Correctly compute visible views

addToSet needs the same set as parameters as it returns. Otherwise the
returned set it overrridden.

In this case only the last visible view was added as the set was
overriden with the invisible views.

Test: CtsAutoFillTestCases
Fixes: 37550229
Change-Id: I80e16cbd8a1af83373d7ea7b0f84a7c4d157119f
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
49e96960d46022c85d1f6d00440242439f2028ec 21-Apr-2017 Felipe Leme <felipeal@google.com> Fixed NPE on dump() and other minor fixes...

Bug: 36871500
Test: manual verification
Change-Id: I1c3a8406344280da37b728eae56f26447c48e0b2
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
fe1bddfbb54c20156b45e99c9d18166d702c9adb 19-Apr-2017 Felipe Leme <felipeal@google.com> Merge "Some Autofill API changes." into oc-dev
e5f9c30688f0277505fb6b50ea385e5df6271ed8 19-Apr-2017 Felipe Leme <felipeal@google.com> Some Autofill API changes.

- Added View.IMPORTANT_FOR_AUTOFILL_YES_INCLUDE_DESCENDANTS
- Added View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS
- Added FillResponse.Builder.setIgnoredIds()
- Fixed javadoc links.

These changes are not implemented yet....

Bug: 37424141
Bug: 36171235
Test: m update-api

Change-Id: I604960443ab08cd3f2a84a70b0a2cece7cb0a00c
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
cc684ed41f17ccdce45a056fd4034efc35b213d5 17-Apr-2017 Philip P. Moltmann <moltmann@google.com> Add a way to read the last AutofillSelection.

- Check UID to make sure one service cannot read FillSelections of other
services
- Add id to Dataset to allow to tag the datasets. This id is then found
in the FillSelection.Event
- Add clientState to FillSelection to allow service to store more data

Fixes: 36871500
Test: CtsAutoFillServiceTestCases
Change-Id: Ice894245508227265294a1c59ea97842175e5aec
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
494c3f5da2c467ad07f50b4e1ad01065a8e3aa4f 11-Apr-2017 Philip P. Moltmann <moltmann@google.com> Allow to finish session when all views are gone

An service can option to finish the session once all views that it
declared as important. Views that are important are all autofillable
views of any partition and the saveable fields of the last partition.

Test: CtsAutoFillServiceTestCases
Fixes: 35708237
Change-Id: I0ccade8ebb427e5d8928697ef0007c75d3f83df0
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
41200eac711f8a2a50c0e87ad8b5bae509589c61 15-Apr-2017 Svetoslav Ganov <svetoslavganov@google.com> Merge "Add support for multiple fill contexts" into oc-dev
013efe173e56612a910ebd8576480ce4ef005e3c 14-Apr-2017 Svet Ganov <svetoslavganov@google.com> Add support for multiple fill contexts

When saving data filled by the user the platform provides to
an autofill provider the state of the UI allowing the provider
to interpret this state and store relevant information.

A limitation of the current design is that the fill provider
needs to interpret the screen content twice, once handling a
fill request and once handling a save request. To address this
we are introducing a id for each fill request allowing the
autofill provider to associate arbitrary state with each fill
request and store it in the client data bundle later passed
to save.

Another limitation of the current design is that if the screen
changes dynamically while the user interacts with the app the
UI state passed on save represents a static snapshot, therefore
it is not possible to the autofill provider to determine the
context in which the data in the UI was filled. We could
keep the views and have deltas for views being removed/added
/moved/changed but this is not enough as the fill provider
needs to know not only what changed but what changed for every
fill request and in one session there could be multiple fill
requests. To address this we provide a list of fill contexts
on save each of which has the id of the corresponding fill
request. This allows the fill provider to know the exact context
in which the data was popuplated and also use its custom client
state for this fill request if desired.

This change deprecates the old APIs and the new ones delegate
to the old ones. Once the clients migrate to the new APIs we
will remove the old ones.

Test: all autofill CTS tests pass

Change-Id: Idcebcc671aa3c078a305d8c358e225274fccc588
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
e048a656397f9f9326482423d68ed46f87f92ed7 11-Apr-2017 Philip P. Moltmann <moltmann@google.com> Fix some racines in AutofillManager

- The session might be gone by the time the handler is called, hence check
the sessionID
- Access getClientLocked() and mSession only under mLock.

Test: cts-tradefed run cts-dev AutoFillServiceTestsCases
Change-Id: I445a24557589afadb1f5372b63ef9db88021b609
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
c3d1c85bda1eb0a7f5a45cbe51406f2239b57cb2 13-Apr-2017 Svet Ganov <svetoslavganov@google.com> Allow custom buttons in autofill UI

Test: added CTS test in topic

bug:36871561

Change-Id: I78ffd8ba33fb982183677fffc587bbf1a077e132
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
43574b03e5604e346f088a1b0da2ab37fb115226 12-Apr-2017 Svet Ganov <svetoslavganov@google.com> Add autofill feature API

We now have a software feature for autofill which can be used
by partners to disable it on low-end devices or form factors
for which autofill doesn't make sense.

bug:35956220

Test: manual (requires a custom build)

Change-Id: I6c06462ed9ca3ae93331700dce38a8c08dfd0722
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
f20a037ba2a6990bb51ad40ee18c7af18464f620 11-Apr-2017 Svet Ganov <svetoslavganov@google.com> Move API for disabling an autofill service to the manager

Test: the topic has a CTS test

bug:37170723

Change-Id: I2be18968ea8df0fd3fb070fe2efc3e811b0e5a76
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
eab62baabf290ea6671577a66cfc9fdd1b145d0e 20-Mar-2017 Philip P. Moltmann <moltmann@google.com> Restore session on new window after app kill

Also:
- Give the session an integer ID as the activityToken is not stable over
restarts of the activity
- Verify that session is only accessed by one UID
- stabilize AccessibilityViewIds over activity lifecycle at least for
the IDs we can do that. This required to split the ID namespace in
"per-app" and "per-activity" views. Only the later ones can be
restored.
- Do not end session when app is killed (as it can be restarted)

Bug: 35484143
Fixes: 36392498
Test: cts-tradefed run cts-dev -m CtsAutoFillServiceTestCases --test=android.autofillservice.cts.SessionLifecycleTest
cts-tradefed run cts-dev -m CtsAutoFillServiceTestCases
Change-Id: I229acc1b3ce35fb57262da7d7466b5d4328b49d4
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
b42d133c8b7f4af04d3a4349c952d437769f14e1 27-Mar-2017 Philip P. Moltmann <moltmann@google.com> Overlay a highlight over autofilled views

Also clear this overlay once the data changes. Some views call
notifyValueUpdated even if the value did not change. Hence remeber the
data that was autofilled and check if the data really changed.

Make the autofilledDrawable publicly accessible so that virtual views
can use the same UI.

As the activity is not aware that the views were autofilled the state
has to be explicitly persisted over activity lifecycle events as part
of the view. The lifecyle does not work yet as the AutofillIds are not
stable over activity lifecycle events.

Fixes: 34946006
Test: Autofilled and changed all supported views.
cts-tradefed run cts-dev -m CtsUiRenderingTestCases
Change-Id: I58b105bb221f1b6466dd136dfe5062d3babb5aa8
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
fb4a74f26b6fac845e5e9174b0caf36491b87be0 31-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Adds FillResponse extra to passed to authentication intent." into oc-dev
955e252a95785192902da7c9f5610f8e40f97803 30-Mar-2017 Felipe Leme <felipeal@google.com> Simplified autofill() methods by returning void instead of boolean.

Test: CtsAutoFillServiceTestCases pass

Change-Id: Ic94e6686e291fed60ef6715bd160f9b568bf0ea6
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
7320ca9f99bb582dd7cb8199cedae30f8b1367a4 30-Mar-2017 Felipe Leme <felipeal@google.com> Adds FillResponse extra to passed to authentication intent.

Test: CtsAutoFillServiceTestCases (with new test) pass
Fixes: 36603378

Change-Id: I3d04a656e50b2b3665405f6c1891ad0379a54ea6
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
4753bb0c34e068f57fff208529836a7688b3ef41 23-Mar-2017 Felipe Leme <felipeal@google.com> Make auto-fill UI robust

Now the autofill UI tracks the movement of the anchor view,
both real and virtual and while still preventing the filled
app from accessing the chooser UI. This was achieved by using
a popup window in the app process to determine the window
location and adding a window presenter interface to popup
window that controls the actual window addition, removal, and
update which is implemented by the system server.

Test: all autofill CTS tests pass

bug: 36392498
bug: 35708258
bug: 34943932
fixes: 36039182
fixes: 36493078

Change-Id: I0321913b2e2e759f4b17003bf85cb873e63a467c
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
81f01d9efdd1739807d5aa5ac4f60b276f70155f 17-Mar-2017 Felipe Leme <felipeal@google.com> Removed 'virtual' from autofill method names.

Fixes: 36126001
Test: VirtualContainerActivityTest pass

Change-Id: I3b8fe835cd7c7f39c8e2cb8f2daca71b03236a1f
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
24aae15218da9ea69d1b8ee86120b3278eb15d30 15-Mar-2017 Felipe Leme <felipeal@google.com> Added a new AutofillCallback.EVENT_INPUT_UNAVAILABLE event.

This event is called when:

- After notifyViewEntered() when autofill is disabled.
- After service returns an "empty" FillResponse to FillCallback.onSuccess().

BUG: 36056207

Test: LoginActivityTest.testAutofillCallbackDisabled
Test: LoginActivityTest.testAutofillCallbackNoDatasets
Test: VirtualContainerActivityTest.testAutofillCallbackDisabled
Test: VirtualContainerActivityTest.testAutofillCallbackNoDatasets

Change-Id: I7b8636473f738bf600aa96b28c77827b2cc78815
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
7b7711680244108923f0dbb4ca6e35db7e659e6a 04-Mar-2017 Philip P. Moltmann <moltmann@google.com> TRON log important auto-fill events

Example log from
android.autofillservice.cts.LoginActivityTest#testAutoFill#testAutoFillOneDatasetAndSave
(translated from numbers of human readable string):

AUTOFILL_SESSION_STARTED
package=android.autofillservice.cts
AUTOFILL_REQUEST
type=TYPE_SUCCESS
package=android.autofillservice.cts
FIELD_AUTOFILL_SERVICE=android.autofillservice.cts
FIELD_AUTOFILL_NUM_DATASETS=1
AUTOFILL_FILL_UI
type=TYPE_ACTION
package=android.autofillservice.cts
FIELD_AUTOFILL_NUM_DATASETS=1
FIELD_AUTOFILL_FILTERTEXT_LEN=0
AUTOFILL_DATASET_APPLIED
package=android.autofillservice.cts
FIELD_AUTOFILL_NUM_VALUES=2
FIELD_AUTOFILL_NUM_VIEWS_FILLED=2
AUTOFILL_SAVE_UI
package=android.autofillservice.cts
FIELD_AUTOFILL_NUM_IDS=2
AUTOFILL_DATA_SAVE_REQUEST
type=TYPE_SUCCESS
package=android.autofillservice.cts
FIELD_AUTOFILL_SERVICE=android.autofillservice.cts
AUTOFILL_SESSION_FINISHED
package=android.autofillservice.cts

Test: Ran auto-fill tests and looked at event log.
Change-Id: I58aaa58e4435e7d04c8cd91878411943d3eb13de
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
2ac463e3f5c3b757ecbc7e30e0fc1e8e0d878272 13-Mar-2017 Felipe Leme <felipeal@google.com> Allow users to manually request Autofill.

- Added a requestAutofill(view,flags) method, that when passed with
FLAG_MANUAL_AUTOFILL triggers a manual request.
- Added same method for virtual views
- Overloaded existing AutofillService request methods to take a flag.
- Added an AUTOFILL context menu option on TextViews.
- Added a canRequestAutofill() that is used to enable the context menu.

BUG: 35708229
Test: manual verification
Test: existing CtsAutoFillServiceTestCases pass
Test: android.autofillservice.cts.LoginActivityTest#testManualAutofill pass

Change-Id: I1a64d40da3373774451d178b1cabf20f11120e9d
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
2f8fb1f62f2840701e3e16497eb8191f38b72e0b 13-Mar-2017 Svet Ganov <svetoslavganov@google.com> Fix a few auto fill ussues

1. Ensure clicking on a focused view brings up autofill if needed

2. Notify the autofill manager in a couple of cases we missed

3. Renamed the AutofillManager app facing APIs to better reflect what
they do and added a API for the app to cancel the autofill interaction

4. Fix view structure dispatch where the ordering of children for autofill
was mixed with ordering of direct view children - the autofill children
may be indirect as views can be marked not important for autofill

5. Show scrollbars only if there are more fill options than want is shown

6. Show only three fill options and the rest can be accessed with a scroll

7. Remove the list divider to allow fill items to control all fill window content

8. Renamed the autofill manager internal service classes to xxAutofillxx

9. Fixed a comment that was not addressed in a previous CL

10. Showing max three fill options - rest needs a scroll

11. Make sure fill UI shown when filter with no matches is changed
to filter with some matches

12. Make sure the fill window has a shadow

Test: Autofill CTS tests pass and manual

bug:36038929
bug:36040101
bug:36149166
bug:36034681
bug:36126001
bug:36035654

Change-Id: Ic8726146fc3c0a19d3e536becdd63fb65622136e
/frameworks/base/core/java/android/view/autofill/AutofillManager.java
640f30a7763b0a4b80c767acb84c740aac04768b 07-Mar-2017 Felipe Leme <felipeal@google.com> Replaced auto-fill by autofill to keep it consistent with API style.

This change will affects 2 types of apps: autofill service implementations
and apps that use autofill APIs.

Since just the former is known to be used at the moment, we're not trying
to keep backward compatibility with the latter.

Bug: 35956626
Test: CtsAutoFillServiceTestCases pass
Test: android.provider.SettingsBackupTest pass

Change-Id: Ia720083508716deae9e887f9faa7ae7c5a82f471
/frameworks/base/core/java/android/view/autofill/AutofillManager.java