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

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

Merge changes from topic 'session_refactoring'

* changes:
  Adds autofill save ui
  Moar AutoFill Framework refactoring...
parents 6ba5ed32 87af2d85
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -35773,7 +35773,7 @@ package android.service.autofill {
    method public void onDisconnected();
    method public abstract void onFillRequest(android.app.assist.AssistStructure, android.os.Bundle, android.os.CancellationSignal, android.service.autofill.FillCallback);
    method public void onFillResponseAuthenticationRequest(android.os.Bundle, int);
    method public abstract void onSaveRequest(android.app.assist.AssistStructure, android.os.Bundle, android.os.CancellationSignal, android.service.autofill.SaveCallback);
    method public abstract void onSaveRequest(android.app.assist.AssistStructure, android.os.Bundle, android.service.autofill.SaveCallback);
    field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS";
    field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS";
    field public static final int FLAG_AUTHENTICATION_ERROR = 4; // 0x4
@@ -44487,8 +44487,8 @@ package android.view {
    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
    field public static final android.util.Property<android.view.View, java.lang.Float> ALPHA;
    field public static final int AUTO_FILL_FLAG_TYPE_FILL = 1; // 0x1
    field public static final int AUTO_FILL_FLAG_TYPE_SAVE = 2; // 0x2
    field public static final int AUTO_FILL_FLAG_TYPE_FILL = 268435456; // 0x10000000
    field public static final int AUTO_FILL_FLAG_TYPE_SAVE = 536870912; // 0x20000000
    field public static final int DRAG_FLAG_GLOBAL = 256; // 0x100
    field public static final int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION = 64; // 0x40
    field public static final int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION = 128; // 0x80
+3 −3
Original line number Diff line number Diff line
@@ -38799,7 +38799,7 @@ package android.service.autofill {
    method public void onDisconnected();
    method public abstract void onFillRequest(android.app.assist.AssistStructure, android.os.Bundle, android.os.CancellationSignal, android.service.autofill.FillCallback);
    method public void onFillResponseAuthenticationRequest(android.os.Bundle, int);
    method public abstract void onSaveRequest(android.app.assist.AssistStructure, android.os.Bundle, android.os.CancellationSignal, android.service.autofill.SaveCallback);
    method public abstract void onSaveRequest(android.app.assist.AssistStructure, android.os.Bundle, android.service.autofill.SaveCallback);
    field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS";
    field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS";
    field public static final int FLAG_AUTHENTICATION_ERROR = 4; // 0x4
@@ -47888,8 +47888,8 @@ package android.view {
    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
    field public static final android.util.Property<android.view.View, java.lang.Float> ALPHA;
    field public static final int AUTO_FILL_FLAG_TYPE_FILL = 1; // 0x1
    field public static final int AUTO_FILL_FLAG_TYPE_SAVE = 2; // 0x2
    field public static final int AUTO_FILL_FLAG_TYPE_FILL = 268435456; // 0x10000000
    field public static final int AUTO_FILL_FLAG_TYPE_SAVE = 536870912; // 0x20000000
    field public static final int DRAG_FLAG_GLOBAL = 256; // 0x100
    field public static final int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION = 64; // 0x40
    field public static final int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION = 128; // 0x80
+3 −3
Original line number Diff line number Diff line
@@ -35907,7 +35907,7 @@ package android.service.autofill {
    method public void onDisconnected();
    method public abstract void onFillRequest(android.app.assist.AssistStructure, android.os.Bundle, android.os.CancellationSignal, android.service.autofill.FillCallback);
    method public void onFillResponseAuthenticationRequest(android.os.Bundle, int);
    method public abstract void onSaveRequest(android.app.assist.AssistStructure, android.os.Bundle, android.os.CancellationSignal, android.service.autofill.SaveCallback);
    method public abstract void onSaveRequest(android.app.assist.AssistStructure, android.os.Bundle, android.service.autofill.SaveCallback);
    field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS";
    field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS";
    field public static final int FLAG_AUTHENTICATION_ERROR = 4; // 0x4
@@ -44792,8 +44792,8 @@ package android.view {
    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
    field public static final android.util.Property<android.view.View, java.lang.Float> ALPHA;
    field public static final int AUTO_FILL_FLAG_TYPE_FILL = 1; // 0x1
    field public static final int AUTO_FILL_FLAG_TYPE_SAVE = 2; // 0x2
    field public static final int AUTO_FILL_FLAG_TYPE_FILL = 268435456; // 0x10000000
    field public static final int AUTO_FILL_FLAG_TYPE_SAVE = 536870912; // 0x20000000
    field public static final int DRAG_FLAG_GLOBAL = 256; // 0x100
    field public static final int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION = 64; // 0x40
    field public static final int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION = 128; // 0x80
+10 −73
Original line number Diff line number Diff line
@@ -117,9 +117,8 @@ import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityEvent;
import android.view.autofill.AutoFillId;
import android.view.autofill.Dataset;
import android.view.autofill.DatasetField;
import android.view.autofill.VirtualViewDelegate;
import android.view.autofill.AutoFillManager;
import android.view.autofill.AutoFillSession;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.Toolbar;
@@ -848,10 +847,7 @@ public class Activity extends ContextThemeWrapper
    private boolean mHasCurrentPermissionsRequest;

    @GuardedBy("this")
    private WeakReference<IAutoFillAppCallback> mAutoFillCallback;

    @GuardedBy("this")
    private VirtualViewDelegate.Callback mAutoFillDelegateCallback;
    private AutoFillSession mAutoFillSession;

    private static native String getDlWarning();

@@ -1703,77 +1699,18 @@ public class Activity extends ContextThemeWrapper
    public void onProvideAssistContent(AssistContent outContent) {
    }

    /**
     * Lazily sets the {@link #mAutoFillDelegateCallback}.
     */
    private void setAutoFillDelegateCallback() {
        synchronized (this) {
            if (mAutoFillDelegateCallback == null) {
                mAutoFillDelegateCallback = new VirtualViewDelegate.Callback() {
                    // TODO(b/33197203): implement
                };
            }
        }
    }

    /**
     * Lazily gets the {@link IAutoFillAppCallback} for this activitity.
     *
     * <p>This callback is used by the {@link AutoFillService} app to auto-fill the activity fields.
     */
    WeakReference<IAutoFillAppCallback> getAutoFillCallback() {
    IAutoFillAppCallback getAutoFillCallback() {
        synchronized (this) {
            if (mAutoFillCallback == null) {
                final IAutoFillAppCallback cb = new IAutoFillAppCallback.Stub() {
                    @Override
                    public void autoFill(Dataset dataset) throws RemoteException {
                        // TODO(b/33197203): must keep the dataset so subsequent calls pass the same
                        // dataset.extras to service
                        runOnUiThread(() -> {
                            final View root = getWindow().getDecorView().getRootView();
                            for (DatasetField field : dataset.getFields()) {
                                final AutoFillId id = field.getId();
                                if (id == null) {
                                    Log.w(TAG, "autoFill(): null id on " + field);
                                    continue;
                                }
                                final int viewId = id.getViewId();
                                final View view = root.findViewByAccessibilityIdTraversal(viewId);
                                if (view == null) {
                                    Log.w(TAG, "autoFill(): no View with id " + viewId);
                                    continue;
                                }

                                // TODO(b/33197203): handle protected value (like credit card)
                                if (id.isVirtual()) {
                                    // Delegate virtual fields to provider.
                                    setAutoFillDelegateCallback();
                                    final VirtualViewDelegate mgr = view
                                            .getAutoFillVirtualViewDelegate(
                                                    mAutoFillDelegateCallback);
                                    if (mgr == null) {
                                        Log.w(TAG, "autoFill(): cannot fill virtual " + id
                                                + "; no auto-fill provider for view "
                                                + view.getClass());
                                        continue;
                                    }
                                    if (DEBUG_AUTO_FILL) {
                                        Log.d(TAG, "autoFill(): delegating " + id
                                                + " to virtual manager  " + mgr);
                                    }
                                    mgr.autoFill(id.getVirtualChildId(), field.getValue());
                                } else {
                                    // Handle non-virtual fields itself.
                                    view.autoFill(field.getValue());
                                }
                            }
                        });
                    }
                };
                mAutoFillCallback = new WeakReference<IAutoFillAppCallback>(cb);
            if (mAutoFillSession == null) {
                mAutoFillSession = new AutoFillSession(this);
            }
            return mAutoFillSession.getCallback();
        }
        return mAutoFillCallback;
    }

    /**
@@ -6067,9 +6004,9 @@ public class Activity extends ContextThemeWrapper
            getWindow().peekDecorView().getViewRootImpl().dump(prefix, fd, writer, args);
        }

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

        mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix);
+6 −0
Original line number Diff line number Diff line
@@ -153,6 +153,12 @@ public abstract class ActivityManagerInternal {
     */
    public abstract List<IBinder> getTopVisibleActivities();

    /**
     * Returns the top, focused activity of the currently visible stack, but only if it belongs to
     * the given UID.
     */
    public abstract IBinder getTopVisibleActivity(int uid);

    /**
     * Callback for window manager to let activity manager know that docked stack changes its
     * minimized state.
Loading