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

Commit e3427ee4 authored by Felipe Leme's avatar Felipe Leme Committed by Android (Google) Code Review
Browse files

Merge "Revert "Use session id to uniquely identidy autofill ids for multi-session.""

parents 5789fa6b 305fd401
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1461,7 +1461,7 @@ public class Activity extends ContextThemeWrapper
     */
    @Override
    public AutofillId autofillClientGetNextAutofillId() {
        return new AutofillId(getAutofillManager(), getNextAutofillId());
        return new AutofillId(getNextAutofillId());
    }

    /**
+0 −13
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.view.ViewStructure.HtmlInfo.Builder;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;

import com.android.internal.util.Preconditions;
@@ -73,8 +72,6 @@ public class AssistStructure implements Parcelable {
    boolean mHaveData;

    ComponentName mActivityComponent;
    // Not written to parcel, only used to set session id on virtual node children
    private final int mAutofillSessionId;
    private boolean mIsHomeActivity;
    private int mFlags;

@@ -1849,13 +1846,11 @@ public class AssistStructure implements Parcelable {
        @Override
        public void setAutofillId(@NonNull AutofillId id) {
            mNode.mAutofillId = id;
            mNode.mAutofillId.setSessionId(mAssist.mAutofillSessionId);
        }

        @Override
        public void setAutofillId(@NonNull AutofillId parentId, int virtualId) {
            mNode.mAutofillId = new AutofillId(parentId, virtualId);
            mNode.mAutofillId.setSessionId(mAssist.mAutofillSessionId);
        }

        @Override
@@ -2045,8 +2040,6 @@ public class AssistStructure implements Parcelable {
    public AssistStructure(Activity activity, boolean forAutoFill, int flags) {
        mHaveData = true;
        mActivityComponent = activity.getComponentName();
        final AutofillManager afm = activity.getSystemService(AutofillManager.class);
        mAutofillSessionId = afm == null ? AutofillManager.NO_SESSION : afm.getSessionId();
        mFlags = flags;
        ArrayList<ViewRootImpl> views = WindowManagerGlobal.getInstance().getRootViews(
                activity.getActivityToken());
@@ -2063,7 +2056,6 @@ public class AssistStructure implements Parcelable {
    public AssistStructure() {
        mHaveData = true;
        mActivityComponent = null;
        mAutofillSessionId = AutofillManager.NO_SESSION;
        mFlags = 0;
    }

@@ -2071,7 +2063,6 @@ public class AssistStructure implements Parcelable {
    public AssistStructure(Parcel in) {
        mIsHomeActivity = in.readInt() == 1;
        mReceiveChannel = in.readStrongBinder();
        mAutofillSessionId = AutofillManager.NO_SESSION;
    }

    /**
@@ -2091,10 +2082,6 @@ public class AssistStructure implements Parcelable {
            ensureData();
        }
        Log.i(TAG, "Activity: " + mActivityComponent.flattenToShortString());
        if (mAutofillSessionId != AutofillManager.NO_SESSION) {
            Log.i(TAG, "Autofill Session ID: " + mAutofillSessionId);
        }

        Log.i(TAG, "Sanitize on write: " + mSanitizeOnWrite);
        Log.i(TAG, "Flags: " + mFlags);
        final int N = getWindowNodeCount();
+4 −11
Original line number Diff line number Diff line
@@ -8251,7 +8251,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        if (mAutofillId == null) {
            // The autofill id needs to be unique, but its value doesn't matter,
            // so it's better to reuse the accessibility id to save space.
            mAutofillId = new AutofillId(getAutofillManager(), getAutofillViewId());
            mAutofillId = new AutofillId(getAutofillViewId());
        }
        return mAutofillId;
    }
@@ -8313,15 +8313,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            // Ignore reset because it was never explicitly set before.
            return;
        }
        mAutofillId = id;
        if (id != null) {
            // Must create a new id so the session id is preserved.
            final int oldSessionId = mAutofillId.getSessionId();
            mAutofillViewId = id.getViewId();
            mAutofillId = new AutofillId(mAutofillViewId);
            mAutofillId.setSessionId(oldSessionId);
            mPrivateFlags3 |= PFLAG3_AUTOFILLID_EXPLICITLY_SET;
        } else {
            mAutofillId = null;
            mAutofillViewId = NO_ID;
            mPrivateFlags3 &= ~PFLAG3_AUTOFILLID_EXPLICITLY_SET;
        }
@@ -8611,11 +8607,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            structure.setContextClickable(true);
        }
        if (forAutofill) {
            final AutofillId autofillId = new AutofillId(getAutofillId(),
                    AccessibilityNodeInfo.getVirtualDescendantId(info.getSourceNodeId()));
            final AutofillManager afm = getAutofillManager();
            autofillId.setSessionId(afm == null ? AutofillManager.NO_SESSION : afm.getSessionId());
            structure.setAutofillId(autofillId);
            structure.setAutofillId(new AutofillId(getAutofillId(),
                    AccessibilityNodeInfo.getVirtualDescendantId(info.getSourceNodeId())));
        }
        CharSequence cname = info.getClassName();
        structure.setClassName(cname != null ? cname.toString() : null);
+2 −32
Original line number Diff line number Diff line
@@ -15,10 +15,6 @@
 */
package android.view.autofill;

import static android.view.autofill.Helper.sDebug;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -32,7 +28,6 @@ public final class AutofillId implements Parcelable {
    private final int mViewId;
    private final boolean mVirtual;
    private final int mVirtualId;
    private int mSessionId = AutofillManager.NO_SESSION;

    /** @hide */
    @TestApi
@@ -43,26 +38,18 @@ public final class AutofillId implements Parcelable {
    }

    /** @hide */
    // NOTE: caller must set sessionId
    @TestApi
    public AutofillId(@NonNull AutofillId parent, int virtualChildId) {
    public AutofillId(AutofillId parent, int virtualChildId) {
        mVirtual = true;
        mViewId = parent.mViewId;
        mVirtualId = virtualChildId;
    }

    /** @hide */
    public AutofillId(int sessionId, int parentId, int virtualChildId) {
    public AutofillId(int parentId, int virtualChildId) {
        mVirtual = true;
        mViewId = parentId;
        mVirtualId = virtualChildId;
        mSessionId = sessionId;
    }

    /** @hide */
    public AutofillId(@Nullable AutofillManager afm, int id) {
        this(id);
        mSessionId = afm == null ? AutofillManager.NO_SESSION : afm.getSessionId();
    }

    /** @hide */
@@ -80,16 +67,6 @@ public final class AutofillId implements Parcelable {
        return mVirtual;
    }

    /** @hide */
    public int getSessionId() {
        return mSessionId;
    }

    /** @hide */
    public void setSessionId(int sessionId) {
        this.mSessionId = sessionId;
    }

    /////////////////////////////////
    //  Object "contract" methods. //
    /////////////////////////////////
@@ -100,7 +77,6 @@ public final class AutofillId implements Parcelable {
        int result = 1;
        result = prime * result + mViewId;
        result = prime * result + mVirtualId;
        result = prime * result + mSessionId;
        return result;
    }

@@ -112,7 +88,6 @@ public final class AutofillId implements Parcelable {
        final AutofillId other = (AutofillId) obj;
        if (mViewId != other.mViewId) return false;
        if (mVirtualId != other.mVirtualId) return false;
        if (mSessionId != other.mSessionId) return false;
        return true;
    }

@@ -122,9 +97,6 @@ public final class AutofillId implements Parcelable {
        if (mVirtual) {
            builder.append(':').append(mVirtualId);
        }
        if (mSessionId != AutofillManager.NO_SESSION && sDebug) {
            builder.append('<').append(mSessionId).append('>');
        }
        return builder.toString();
    }

@@ -138,14 +110,12 @@ public final class AutofillId implements Parcelable {
        parcel.writeInt(mViewId);
        parcel.writeInt(mVirtual ? 1 : 0);
        parcel.writeInt(mVirtualId);
        parcel.writeInt(mSessionId);
    }

    private AutofillId(Parcel parcel) {
        mViewId = parcel.readInt();
        mVirtual = parcel.readInt() == 1;
        mVirtualId = parcel.readInt();
        mSessionId = parcel.readInt();
    }

    public static final Parcelable.Creator<AutofillId> CREATOR =
+7 −21
Original line number Diff line number Diff line
@@ -916,7 +916,7 @@ public final class AutofillManager {
            boolean isVisible, boolean virtual) {
        synchronized (mLock) {
            if (mEnabled && isActiveLocked()) {
                final AutofillId id = virtual ? getAutofillIdLocked(view, virtualId)
                final AutofillId id = virtual ? getAutofillId(view, virtualId)
                        : view.getAutofillId();
                if (sVerbose) Log.v(TAG, "visibility changed for " + id + ": " + isVisible);
                if (!isVisible && mFillableIds != null) {
@@ -976,7 +976,7 @@ public final class AutofillManager {
    @GuardedBy("mLock")
    private AutofillCallback notifyViewEnteredLocked(View view, int virtualId, Rect bounds,
                                                     int flags) {
        final AutofillId id = getAutofillIdLocked(view, virtualId);
        final AutofillId id = getAutofillId(view, virtualId);
        AutofillCallback callback = null;
        if (shouldIgnoreViewEnteredLocked(id, flags)) return callback;

@@ -1033,7 +1033,7 @@ public final class AutofillManager {
        if (mEnabled && isActiveLocked()) {
            // don't notify exited when Activity is already in background
            if (!isClientDisablingEnterExitEvent()) {
                final AutofillId id = getAutofillIdLocked(view, virtualId);
                final AutofillId id = getAutofillId(view, virtualId);

                // Update focus on existing session.
                updateSessionLocked(id, null, null, ACTION_VIEW_EXITED, 0);
@@ -1116,7 +1116,7 @@ public final class AutofillManager {
                return;
            }

            final AutofillId id = getAutofillIdLocked(view, virtualId);
            final AutofillId id = getAutofillId(view, virtualId);
            updateSessionLocked(id, null, value, ACTION_VALUE_CHANGED, 0);
        }
    }
@@ -1137,11 +1137,7 @@ public final class AutofillManager {
     * @param virtualId id identifying the virtual child inside the parent view.
     */
    public void notifyViewClicked(@NonNull View view, int virtualId) {
        final AutofillId id;
        synchronized (mLock) {
            id = getAutofillIdLocked(view, virtualId);
        }
        notifyViewClicked(id);
        notifyViewClicked(getAutofillId(view, virtualId));
    }

    private void notifyViewClicked(AutofillId id) {
@@ -1538,9 +1534,8 @@ public final class AutofillManager {
        return id;
    }

    @GuardedBy("mLock")
    private AutofillId getAutofillIdLocked(View parent, int virtualId) {
        return new AutofillId(mSessionId, parent.getAutofillViewId(), virtualId);
    private static AutofillId getAutofillId(View parent, int virtualId) {
        return new AutofillId(parent.getAutofillViewId(), virtualId);
    }

    @GuardedBy("mLock")
@@ -1571,8 +1566,6 @@ public final class AutofillManager {
            mSessionId = receiver.getIntResult();
            if (mSessionId != NO_SESSION) {
                mState = STATE_ACTIVE;
                // Need to update the view's autofill id with the session
                id.setSessionId(mSessionId);
            }
            client.autofillClientResetableStateAvailable();
        } catch (RemoteException e) {
@@ -2217,13 +2210,6 @@ public final class AutofillManager {
        return getStateAsString(mState);
    }

    /** @hide */
    public int getSessionId() {
        synchronized (mLock) {
            return mSessionId;
        }
    }

    @NonNull
    private static String getStateAsString(int state) {
        switch (state) {
Loading