summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/View.java4
-rw-r--r--core/java/android/view/autofill/AutofillManager.java24
-rw-r--r--services/autofill/java/com/android/server/autofill/AutofillManagerService.java13
3 files changed, 37 insertions, 4 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 03c3dedb688a..853375e3a682 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7978,6 +7978,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
private void onProvideVirtualStructureCompat(ViewStructure structure, boolean forAutofill) {
final AccessibilityNodeProvider provider = getAccessibilityNodeProvider();
if (provider != null) {
+ if (android.view.autofill.Helper.sVerbose && forAutofill) {
+ Log.v(VIEW_LOG_TAG, "onProvideVirtualStructureCompat() for " + this);
+ }
+
final AccessibilityNodeInfo info = createAccessibilityNodeInfo();
structure.setChildCount(1);
final ViewStructure root = structure.newChild(0);
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java
index 1e562ea7b6d7..158c2ee0b2d0 100644
--- a/core/java/android/view/autofill/AutofillManager.java
+++ b/core/java/android/view/autofill/AutofillManager.java
@@ -986,6 +986,7 @@ public final class AutofillManager {
* @param virtualId id identifying the virtual child inside the parent view.
*/
public void notifyViewExited(@NonNull View view, int virtualId) {
+ if (sVerbose) Log.v(TAG, "notifyViewExited(" + view.getAutofillId() + ", " + virtualId);
if (!hasAutofillFeature()) {
return;
}
@@ -2190,6 +2191,7 @@ public final class AutofillManager {
public int getRelevantEventTypes(int relevantEventTypes) {
return relevantEventTypes | AccessibilityEvent.TYPE_VIEW_FOCUSED
| AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
+ | AccessibilityEvent.TYPE_VIEW_CLICKED
| AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
}
@@ -2248,6 +2250,12 @@ public final class AutofillManager {
}
} break;
+ case AccessibilityEvent.TYPE_VIEW_CLICKED: {
+ synchronized (mLock) {
+ notifyViewClicked(event.getWindowId(), event.getSourceNodeId());
+ }
+ } break;
+
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: {
final AutofillClient client = getClient();
if (client != null) {
@@ -2319,6 +2327,22 @@ public final class AutofillManager {
AutofillValue.forText(node.getText()));
}
+ private void notifyViewClicked(int windowId, long nodeId) {
+ final int virtualId = AccessibilityNodeInfo.getVirtualDescendantId(nodeId);
+ if (!isVirtualNode(virtualId)) {
+ return;
+ }
+ final View view = findViewByAccessibilityId(windowId, nodeId);
+ if (view == null) {
+ return;
+ }
+ final AccessibilityNodeInfo node = findVirtualNodeByAccessibilityId(view, virtualId);
+ if (node == null) {
+ return;
+ }
+ AutofillManager.this.notifyViewClicked(view, virtualId);
+ }
+
@GuardedBy("mLock")
private void updateTrackedViewsLocked() {
if (mTrackedViews != null) {
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
index a06490b0a246..266b2d791991 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
@@ -565,16 +565,19 @@ public final class AutofillManagerService extends SystemService {
}
}
- private @Nullable Set<String> getWhitelistedCompatModePackages() {
- final String compatPackagesSetting = Settings.Global.getString(
+ private String getWhitelistedCompatModePackagesFromSettings() {
+ return Settings.Global.getString(
mContext.getContentResolver(),
Settings.Global.AUTOFILL_COMPAT_ALLOWED_PACKAGES);
+ }
+
+ private @Nullable Set<String> getWhitelistedCompatModePackages() {
+ final String compatPackagesSetting = getWhitelistedCompatModePackagesFromSettings();
if (TextUtils.isEmpty(compatPackagesSetting)) {
return null;
}
final Set<String> compatPackages = new ArraySet<>();
- final SimpleStringSplitter splitter = new SimpleStringSplitter(
- COMPAT_PACKAGE_DELIMITER);
+ final SimpleStringSplitter splitter = new SimpleStringSplitter(COMPAT_PACKAGE_DELIMITER);
splitter.setString(compatPackagesSetting);
while (splitter.hasNext()) {
compatPackages.add(splitter.next());
@@ -1045,6 +1048,8 @@ public final class AutofillManagerService extends SystemService {
mUi.dump(pw);
pw.print("Autofill Compat State: ");
pw.println(mAutofillCompatState.mUserSpecs);
+ pw.print(prefix); pw.print("from settings: ");
+ pw.println(getWhitelistedCompatModePackagesFromSettings());
}
if (showHistory) {
pw.println(); pw.println("Requests history:"); pw.println();