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

Commit 15e24b4a authored by Adam He's avatar Adam He
Browse files

Add test for FLAGS_ALL_CONTROL for assist structure viewnodes.

Bug: 177097561
Test: atest FrameworksCoreTests:android.app.assist.AssistStructureTest
Change-Id: I3feeca0ab420a71a5fb3efa76c18921e0ee6fb14
parent abbe3e85
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.app.assist.AssistStructure.ViewNode;
import android.app.assist.AssistStructure.ViewNodeBuilder;
import android.app.assist.AssistStructure.ViewNodeParcelable;
import android.content.Context;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.SystemClock;
import android.text.InputFilter;
@@ -244,6 +245,34 @@ public class AssistStructureTest {
        assertBigView(clone.getViewNode());
    }

    @Test
    public void testViewNodeParcelableControlFlags() {
        View view = newBigView();
        mActivity.addView(view);
        waitUntilViewsAreLaidOff();

        assertThat(view.getViewRootImpl()).isNotNull();
        ViewNodeBuilder viewStructure = new ViewNodeBuilder();
        viewStructure.setAutofillId(view.getAutofillId());
        view.onProvideAutofillStructure(viewStructure, /* flags= */ 0);

        // Set highest and lowest control flags
        viewStructure.setReceiveContentMimeTypes(new String[] {});
        viewStructure.setLocaleList(new LocaleList());

        ViewNodeParcelable viewNodeParcelable = new ViewNodeParcelable(viewStructure.getViewNode());

        // Check properties on "original" view node.
        assertBigView(viewNodeParcelable.getViewNode());
        assertControlFlags(viewNodeParcelable.getViewNode());

        // Check properties on "cloned" view node.
        ViewNodeParcelable clone = cloneThroughParcel(viewNodeParcelable);
        assertBigView(clone.getViewNode());
        assertControlFlags(clone.getViewNode());

    }

    private EditText newSmallView() {
        EditText view = new EditText(mContext);
        view.setText("I AM GROOT");
@@ -297,6 +326,20 @@ public class AssistStructureTest {
        assertThat(hint.charAt(BIG_VIEW_SIZE - 1)).isEqualTo(BIG_VIEW_CHAR);
    }

    /**
     * Assert the lowest and highest bit control flags.
     *
     * The lowest and highest flags are {@link ViewNode#FLAGS_HAS_LOCALE_LIST} and
     * {@link ViewNode#FLAGS_HAS_MIME_TYPES} respectively, so we check these two during parceling to
     * make sure the entire range of control flags are copied.
     *
     * TODO: Need to change this test if the flag bits are added/changed in the future.
     */
    private void assertControlFlags(ViewNode view) {
        assertThat(view.getReceiveContentMimeTypes()).isNotNull();
        assertThat(view.getLocaleList()).isNotNull();
    }

    private ViewNodeParcelable cloneThroughParcel(ViewNodeParcelable viewNodeParcelable) {
        Parcel parcel = Parcel.obtain();