Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4dba3cdf authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refactor auto-fill"

parents 027d72eb 782043ca
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -264,8 +264,6 @@ LOCAL_SRC_FILES += \
	core/java/android/os/storage/IObbActionListener.aidl \
	core/java/android/security/IKeystoreService.aidl \
	core/java/android/security/keymaster/IKeyAttestationApplicationIdProvider.aidl \
	core/java/android/service/autofill/IAutoFillAppCallback.aidl \
	core/java/android/service/autofill/IAutoFillManagerService.aidl \
	core/java/android/service/autofill/IAutoFillService.aidl \
	core/java/android/service/autofill/IFillCallback.aidl \
	core/java/android/service/autofill/ISaveCallback.aidl \
@@ -318,6 +316,8 @@ LOCAL_SRC_FILES += \
	core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl\
	core/java/android/view/accessibility/IAccessibilityManager.aidl \
	core/java/android/view/accessibility/IAccessibilityManagerClient.aidl \
	core/java/android/view/autofill/IAutoFillManager.aidl \
	core/java/android/view/autofill/IAutoFillManagerClient.aidl \
	core/java/android/view/IApplicationToken.aidl \
	core/java/android/view/IAppTransitionAnimationSpecsFuture.aidl \
	core/java/android/view/IDockedStackListener.aidl \
+30 −36
Original line number Diff line number Diff line
@@ -9182,10 +9182,6 @@ package android.content {
    field public static final java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
    field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
    field public static final java.lang.String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
    field public static final java.lang.String EXTRA_AUTO_FILL_ASSIST_STRUCTURE = "android.intent.extra.AUTO_FILL_ASSIST_STRUCTURE";
    field public static final java.lang.String EXTRA_AUTO_FILL_CALLBACK = "android.intent.extra.AUTO_FILL_CALLBACK";
    field public static final java.lang.String EXTRA_AUTO_FILL_EXTRAS = "android.intent.extra.AUTO_FILL_EXTRAS";
    field public static final java.lang.String EXTRA_AUTO_FILL_ITEM_ID = "android.intent.extra.AUTO_FILL_ITEM_ID";
    field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC";
    field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
    field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC";
@@ -36204,12 +36200,37 @@ package android.service.autofill {
    field public static final java.lang.String SERVICE_META_DATA = "android.autofill";
  }
  public final class FillCallback implements android.os.Parcelable {
  public final class Dataset implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.Dataset> CREATOR;
  }
  public static final class Dataset.Builder {
    ctor public Dataset.Builder(java.lang.CharSequence);
    method public android.service.autofill.Dataset build();
    method public android.service.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
    method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutoFillId, android.view.autofill.AutoFillValue);
  }
  public final class FillCallback {
    method public void onFailure(java.lang.CharSequence);
    method public void onSuccess(android.view.autofill.FillResponse);
    method public void onSuccess(android.service.autofill.FillResponse);
  }
  public final class FillResponse implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillCallback> CREATOR;
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillResponse> CREATOR;
  }
  public static final class FillResponse.Builder {
    ctor public FillResponse.Builder();
    method public android.service.autofill.FillResponse.Builder addDataset(android.service.autofill.Dataset);
    method public android.service.autofill.FillResponse.Builder addSavableFields(android.view.autofill.AutoFillId...);
    method public android.service.autofill.FillResponse build();
    method public android.service.autofill.FillResponse.Builder setAuthentication(android.content.IntentSender);
    method public android.service.autofill.FillResponse.Builder setExtras(android.os.Bundle);
  }
  public final class SaveCallback {
@@ -46854,6 +46875,8 @@ package android.view.autofill {
    method public void valueChanged(android.view.View);
    method public void virtualFocusChanged(android.view.View, int, android.graphics.Rect, boolean);
    method public void virtualValueChanged(android.view.View, int, android.view.autofill.AutoFillValue);
    field public static final java.lang.String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
    field public static final java.lang.String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
  }
  public final class AutoFillType implements android.os.Parcelable {
@@ -46881,35 +46904,6 @@ package android.view.autofill {
    field public static final android.os.Parcelable.Creator<android.view.autofill.AutoFillValue> CREATOR;
  }
  public final class Dataset implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.autofill.Dataset> CREATOR;
  }
  public static final class Dataset.Builder {
    ctor public Dataset.Builder(java.lang.String, java.lang.CharSequence);
    method public android.view.autofill.Dataset build();
    method public android.view.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
    method public android.view.autofill.Dataset.Builder setExtras(android.os.Bundle);
    method public android.view.autofill.Dataset.Builder setValue(android.view.autofill.AutoFillId, android.view.autofill.AutoFillValue);
  }
  public final class FillResponse implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.autofill.FillResponse> CREATOR;
  }
  public static final class FillResponse.Builder {
    ctor public FillResponse.Builder(java.lang.String);
    method public android.view.autofill.FillResponse.Builder addDataset(android.view.autofill.Dataset);
    method public android.view.autofill.FillResponse.Builder addSavableFields(android.view.autofill.AutoFillId...);
    method public android.view.autofill.FillResponse build();
    method public android.view.autofill.FillResponse.Builder setAuthentication(android.content.IntentSender);
    method public android.view.autofill.FillResponse.Builder setExtras(android.os.Bundle);
  }
}
package android.view.inputmethod {
+30 −36
Original line number Diff line number Diff line
@@ -9620,10 +9620,6 @@ package android.content {
    field public static final java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
    field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
    field public static final java.lang.String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
    field public static final java.lang.String EXTRA_AUTO_FILL_ASSIST_STRUCTURE = "android.intent.extra.AUTO_FILL_ASSIST_STRUCTURE";
    field public static final java.lang.String EXTRA_AUTO_FILL_CALLBACK = "android.intent.extra.AUTO_FILL_CALLBACK";
    field public static final java.lang.String EXTRA_AUTO_FILL_EXTRAS = "android.intent.extra.AUTO_FILL_EXTRAS";
    field public static final java.lang.String EXTRA_AUTO_FILL_ITEM_ID = "android.intent.extra.AUTO_FILL_ITEM_ID";
    field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC";
    field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
    field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC";
@@ -39270,12 +39266,37 @@ package android.service.autofill {
    field public static final java.lang.String SERVICE_META_DATA = "android.autofill";
  }
  public final class FillCallback implements android.os.Parcelable {
  public final class Dataset implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.Dataset> CREATOR;
  }
  public static final class Dataset.Builder {
    ctor public Dataset.Builder(java.lang.CharSequence);
    method public android.service.autofill.Dataset build();
    method public android.service.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
    method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutoFillId, android.view.autofill.AutoFillValue);
  }
  public final class FillCallback {
    method public void onFailure(java.lang.CharSequence);
    method public void onSuccess(android.view.autofill.FillResponse);
    method public void onSuccess(android.service.autofill.FillResponse);
  }
  public final class FillResponse implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillCallback> CREATOR;
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillResponse> CREATOR;
  }
  public static final class FillResponse.Builder {
    ctor public FillResponse.Builder();
    method public android.service.autofill.FillResponse.Builder addDataset(android.service.autofill.Dataset);
    method public android.service.autofill.FillResponse.Builder addSavableFields(android.view.autofill.AutoFillId...);
    method public android.service.autofill.FillResponse build();
    method public android.service.autofill.FillResponse.Builder setAuthentication(android.content.IntentSender);
    method public android.service.autofill.FillResponse.Builder setExtras(android.os.Bundle);
  }
  public final class SaveCallback {
@@ -50293,6 +50314,8 @@ package android.view.autofill {
    method public void valueChanged(android.view.View);
    method public void virtualFocusChanged(android.view.View, int, android.graphics.Rect, boolean);
    method public void virtualValueChanged(android.view.View, int, android.view.autofill.AutoFillValue);
    field public static final java.lang.String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
    field public static final java.lang.String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
  }
  public final class AutoFillType implements android.os.Parcelable {
@@ -50320,35 +50343,6 @@ package android.view.autofill {
    field public static final android.os.Parcelable.Creator<android.view.autofill.AutoFillValue> CREATOR;
  }
  public final class Dataset implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.autofill.Dataset> CREATOR;
  }
  public static final class Dataset.Builder {
    ctor public Dataset.Builder(java.lang.String, java.lang.CharSequence);
    method public android.view.autofill.Dataset build();
    method public android.view.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
    method public android.view.autofill.Dataset.Builder setExtras(android.os.Bundle);
    method public android.view.autofill.Dataset.Builder setValue(android.view.autofill.AutoFillId, android.view.autofill.AutoFillValue);
  }
  public final class FillResponse implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.autofill.FillResponse> CREATOR;
  }
  public static final class FillResponse.Builder {
    ctor public FillResponse.Builder(java.lang.String);
    method public android.view.autofill.FillResponse.Builder addDataset(android.view.autofill.Dataset);
    method public android.view.autofill.FillResponse.Builder addSavableFields(android.view.autofill.AutoFillId...);
    method public android.view.autofill.FillResponse build();
    method public android.view.autofill.FillResponse.Builder setAuthentication(android.content.IntentSender);
    method public android.view.autofill.FillResponse.Builder setExtras(android.os.Bundle);
  }
}
package android.view.inputmethod {
+30 −36
Original line number Diff line number Diff line
@@ -9208,10 +9208,6 @@ package android.content {
    field public static final java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
    field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
    field public static final java.lang.String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
    field public static final java.lang.String EXTRA_AUTO_FILL_ASSIST_STRUCTURE = "android.intent.extra.AUTO_FILL_ASSIST_STRUCTURE";
    field public static final java.lang.String EXTRA_AUTO_FILL_CALLBACK = "android.intent.extra.AUTO_FILL_CALLBACK";
    field public static final java.lang.String EXTRA_AUTO_FILL_EXTRAS = "android.intent.extra.AUTO_FILL_EXTRAS";
    field public static final java.lang.String EXTRA_AUTO_FILL_ITEM_ID = "android.intent.extra.AUTO_FILL_ITEM_ID";
    field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC";
    field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
    field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC";
@@ -36340,12 +36336,37 @@ package android.service.autofill {
    field public static final java.lang.String SERVICE_META_DATA = "android.autofill";
  }
  public final class FillCallback implements android.os.Parcelable {
  public final class Dataset implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.Dataset> CREATOR;
  }
  public static final class Dataset.Builder {
    ctor public Dataset.Builder(java.lang.CharSequence);
    method public android.service.autofill.Dataset build();
    method public android.service.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
    method public android.service.autofill.Dataset.Builder setValue(android.view.autofill.AutoFillId, android.view.autofill.AutoFillValue);
  }
  public final class FillCallback {
    method public void onFailure(java.lang.CharSequence);
    method public void onSuccess(android.view.autofill.FillResponse);
    method public void onSuccess(android.service.autofill.FillResponse);
  }
  public final class FillResponse implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillCallback> CREATOR;
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillResponse> CREATOR;
  }
  public static final class FillResponse.Builder {
    ctor public FillResponse.Builder();
    method public android.service.autofill.FillResponse.Builder addDataset(android.service.autofill.Dataset);
    method public android.service.autofill.FillResponse.Builder addSavableFields(android.view.autofill.AutoFillId...);
    method public android.service.autofill.FillResponse build();
    method public android.service.autofill.FillResponse.Builder setAuthentication(android.content.IntentSender);
    method public android.service.autofill.FillResponse.Builder setExtras(android.os.Bundle);
  }
  public final class SaveCallback {
@@ -47168,6 +47189,8 @@ package android.view.autofill {
    method public void valueChanged(android.view.View);
    method public void virtualFocusChanged(android.view.View, int, android.graphics.Rect, boolean);
    method public void virtualValueChanged(android.view.View, int, android.view.autofill.AutoFillValue);
    field public static final java.lang.String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
    field public static final java.lang.String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
  }
  public final class AutoFillType implements android.os.Parcelable {
@@ -47195,35 +47218,6 @@ package android.view.autofill {
    field public static final android.os.Parcelable.Creator<android.view.autofill.AutoFillValue> CREATOR;
  }
  public final class Dataset implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.autofill.Dataset> CREATOR;
  }
  public static final class Dataset.Builder {
    ctor public Dataset.Builder(java.lang.String, java.lang.CharSequence);
    method public android.view.autofill.Dataset build();
    method public android.view.autofill.Dataset.Builder setAuthentication(android.content.IntentSender);
    method public android.view.autofill.Dataset.Builder setExtras(android.os.Bundle);
    method public android.view.autofill.Dataset.Builder setValue(android.view.autofill.AutoFillId, android.view.autofill.AutoFillValue);
  }
  public final class FillResponse implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.autofill.FillResponse> CREATOR;
  }
  public static final class FillResponse.Builder {
    ctor public FillResponse.Builder(java.lang.String);
    method public android.view.autofill.FillResponse.Builder addDataset(android.view.autofill.Dataset);
    method public android.view.autofill.FillResponse.Builder addSavableFields(android.view.autofill.AutoFillId...);
    method public android.view.autofill.FillResponse build();
    method public android.view.autofill.FillResponse.Builder setAuthentication(android.content.IntentSender);
    method public android.view.autofill.FillResponse.Builder setExtras(android.os.Bundle);
  }
}
package android.view.inputmethod {
+45 −33
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package android.app;

import android.view.autofill.AutoFillId;
import android.view.autofill.AutoFillManager;
import android.view.autofill.AutoFillValue;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IVoiceInteractor;
import com.android.internal.app.ToolbarActionBar;
@@ -113,8 +116,6 @@ import android.view.Window.WindowControllerCallback;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityEvent;
import android.view.autofill.AutoFillManager;
import android.view.autofill.AutoFillSession;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.Toolbar;
@@ -688,7 +689,8 @@ public class Activity extends ContextThemeWrapper
        implements LayoutInflater.Factory2,
        Window.Callback, KeyEvent.Callback,
        OnCreateContextMenuListener, ComponentCallbacks2,
        Window.OnWindowDismissedCallback, WindowControllerCallback {
        Window.OnWindowDismissedCallback, WindowControllerCallback,
        AutoFillManager.AutoFillClient {
    private static final String TAG = "Activity";
    private static final boolean DEBUG_LIFECYCLE = false;

@@ -726,6 +728,7 @@ public class Activity extends ContextThemeWrapper
            "android:hasCurrentPermissionsRequest";

    private static final String REQUEST_PERMISSIONS_WHO_PREFIX = "@android:requestPermissions:";
    private static final String AUTO_FILL_AUTH_WHO_PREFIX = "@android:autoFillAuth:";

    private static final String KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME = "com.android.systemui";

@@ -841,9 +844,6 @@ public class Activity extends ContextThemeWrapper

    private boolean mHasCurrentPermissionsRequest;

    @GuardedBy("this")
    private AutoFillSession mAutoFillSession;

    private static native String getDlWarning();

    /** Return the intent that started this activity. */
@@ -1694,25 +1694,6 @@ public class Activity extends ContextThemeWrapper
    public void onProvideAssistContent(AssistContent outContent) {
    }

    /**
     * Lazily attachs the activity to the current {@link AutoFillSession} (if any).
     */
    void attachToAutoFillSession() {
        synchronized (this) {
            if (mAutoFillSession == null) {
                final AutoFillManager afm = getSystemService(AutoFillManager.class);
                if (afm != null) {
                    mAutoFillSession = afm.getSession();
                    if (mAutoFillSession != null) {
                        mAutoFillSession.attachActivity(this);
                    } else {
                        Log.w(TAG, "attachToAutoFillSession(): not in a session");
                    }
                }
            }
        }
    }

    /**
     * Request the Keyboard Shortcuts screen to show up. This will trigger
     * {@link #onProvideKeyboardShortcuts} to retrieve the shortcuts for the foreground activity.
@@ -1799,9 +1780,8 @@ public class Activity extends ContextThemeWrapper
        getApplication().dispatchActivityStopped(this);
        mTranslucentCallback = null;
        mCalled = true;
        if (mAutoFillSession != null && isFinishing()) {
            mAutoFillSession.finishSession();
            mAutoFillSession = null;
        if (isFinishing() && AutoFillManager.isClientActive(getActivityToken())) {
            getSystemService(AutoFillManager.class).reset();
        }
    }

@@ -6021,11 +6001,6 @@ public class Activity extends ContextThemeWrapper
            getWindow().peekDecorView().getViewRootImpl().dump(prefix, fd, writer, args);
        }

        if (mAutoFillSession!= null) {
            writer.print(prefix); writer.print("mAutoFillSession: " );
                    writer.println(mAutoFillSession);
        }

        mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix);
    }

@@ -6748,6 +6723,8 @@ public class Activity extends ContextThemeWrapper
        mCurrentConfig = config;

        mWindow.setColorMode(info.colorMode);

        AutoFillManager.addClient(token, this);
    }

    /** @hide */
@@ -7038,6 +7015,8 @@ public class Activity extends ContextThemeWrapper
                    return;
                }
            }
        } else if (who.startsWith(AUTO_FILL_AUTH_WHO_PREFIX)) {
            getSystemService(AutoFillManager.class).onAuthenticationResult(data);
        } else {
            Fragment frag = mFragments.findFragmentByWho(who);
            if (frag != null) {
@@ -7178,6 +7157,39 @@ public class Activity extends ContextThemeWrapper
        fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    /** @hide */
    @Override
    public void autoFill(List<AutoFillId> ids, List<AutoFillValue> values) {
        final View root = getWindow().getDecorView();
        final int itemCount = ids.size();
        for (int i = 0; i < itemCount; i++) {
            final AutoFillId id = ids.get(i);
            final AutoFillValue value = values.get(i);
            final int viewId = id.getViewId();
            final View view = root.findViewByAccessibilityIdTraversal(viewId);
            if (view == null) {
                Log.w(TAG, "autoFill(): no View with id " + viewId);
                continue;
            }
            if (id.isVirtual()) {
                view.autoFillVirtual(id.getVirtualChildId(), value);
            } else {
                view.autoFill(value);
            }
        }
    }

    /** @hide */
    @Override
    public void authenticate(IntentSender intent, Intent fillInIntent) {
        try {
            startIntentSenderForResultInner(intent, AUTO_FILL_AUTH_WHO_PREFIX,
                    0, fillInIntent, 0, 0, null);
        } catch (IntentSender.SendIntentException e) {
            Log.e(TAG, "authenticate() failed for intent:" + intent, e);
        }
    }

    class HostCallbacks extends FragmentHostCallback<Activity> {
        public HostCallbacks() {
            super(Activity.this /*activity*/);
Loading