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

Commit 152658e2 authored by Kai Li's avatar Kai Li Committed by Android (Google) Code Review
Browse files

Merge "Fix a bug in AssistStructure if a view had a null child." into main

parents f8afa218 dc803479
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
package android.app.assist;

import static android.app.assist.flags.Flags.addPlaceholderViewForNullChild;
import static android.credentials.Constants.FAILURE_CREDMAN_SELECTOR;
import static android.credentials.Constants.SUCCESS_CREDMAN_SELECTOR;
import static android.service.autofill.Flags.FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION;
@@ -284,12 +285,18 @@ public class AssistStructure implements Parcelable {
            mCurViewStackEntry = entry;
        }

        void writeView(ViewNode child, Parcel out, PooledStringWriter pwriter, int levelAdj) {
        void writeView(@Nullable ViewNode child, Parcel out, PooledStringWriter pwriter,
            int levelAdj) {
            if (DEBUG_PARCEL) Log.d(TAG, "write view: at " + out.dataPosition()
                    + ", windows=" + mNumWrittenWindows
                    + ", views=" + mNumWrittenViews
                    + ", level=" + (mCurViewStackPos+levelAdj));
            out.writeInt(VALIDATE_VIEW_TOKEN);
            if (addPlaceholderViewForNullChild() && child == null) {
                if (DEBUG_PARCEL_TREE) Log.d(TAG, "Detected an empty child"
                            + "; writing a placeholder for the child.");
                child = new ViewNode();
            }
            int flags = child.writeSelfToParcel(out, pwriter, mSanitizeOnWrite,
                    mTmpMatrix, /*willWriteChildren=*/true);
            mNumWrittenViews++;
+14 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import android.app.assist.AssistStructure.ViewNode;
import android.app.assist.AssistStructure.ViewNodeBuilder;
@@ -37,6 +38,7 @@ import android.os.Bundle;
import android.os.LocaleList;
import android.os.OutcomeReceiver;
import android.os.Parcel;
import android.os.PooledStringWriter;
import android.os.SystemClock;
import android.text.InputFilter;
import android.util.Log;
@@ -355,6 +357,18 @@ public class AssistStructureTest {

    }

    @Test
    public void testParcelTransferWriter_writeNull() {
        AssistStructure structure = new AssistStructure(mActivity, FOR_AUTOFILL, NO_FLAGS);
        Parcel parcel = Parcel.obtain();
        AssistStructure.ParcelTransferWriter writer =
                new AssistStructure.ParcelTransferWriter(structure, parcel);
        writer.writeView(null, parcel, new PooledStringWriter(parcel), 0);

        // No throw any exception.
        assertTrue(true);
    }

    private EditText newSmallView() {
        EditText view = new EditText(mContext);
        view.setText("I AM GROOT");