diff options
| -rw-r--r-- | core/java/android/view/View.java | 4 | ||||
| -rw-r--r-- | core/java/android/view/autofill/AutofillManager.java | 24 | ||||
| -rw-r--r-- | services/autofill/java/com/android/server/autofill/AutofillManagerService.java | 13 |
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(); |