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

Commit f38d414e authored by Felipe Leme's avatar Felipe Leme
Browse files

Made moar ContentCapture APIs available for testing.

Test: m update-api
Test: atest CtsContentCaptureServiceTestCases

Bug: 123037756
Bug: 123038898

Change-Id: I06373d3a06e064c2e9546bc0d45a50b50f712189
parent 47961f71
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -2664,6 +2664,8 @@ package android.view.autofill {
  public final class AutofillId implements android.os.Parcelable {
    ctor public AutofillId(int);
    ctor public AutofillId(@NonNull android.view.autofill.AutofillId, int);
    ctor public AutofillId(int, int);
    ctor public AutofillId(@NonNull android.view.autofill.AutofillId, long, int);
  }

  public final class AutofillManager {
@@ -2713,6 +2715,66 @@ package android.view.contentcapture {

  public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
    method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
    method @Nullable public static android.view.contentcapture.ViewNode readFromParcel(@NonNull android.os.Parcel);
    method public static void writeToParcel(@NonNull android.os.Parcel, @Nullable android.view.contentcapture.ViewNode, int);
  }

  public static final class ViewNode.ViewStructureImpl extends android.view.ViewStructure {
    ctor public ViewNode.ViewStructureImpl(@NonNull android.view.View);
    ctor public ViewNode.ViewStructureImpl(@NonNull android.view.autofill.AutofillId, long, int);
    method public int addChildCount(int);
    method public void asyncCommit();
    method public android.view.ViewStructure asyncNewChild(int);
    method public android.view.autofill.AutofillId getAutofillId();
    method public int getChildCount();
    method public android.os.Bundle getExtras();
    method public CharSequence getHint();
    method public android.view.contentcapture.ViewNode getNode();
    method public android.graphics.Rect getTempRect();
    method public CharSequence getText();
    method public int getTextSelectionEnd();
    method public int getTextSelectionStart();
    method public boolean hasExtras();
    method public android.view.ViewStructure newChild(int);
    method public android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(String);
    method public void setAccessibilityFocused(boolean);
    method public void setActivated(boolean);
    method public void setAlpha(float);
    method public void setAssistBlocked(boolean);
    method public void setAutofillHints(String[]);
    method public void setAutofillId(android.view.autofill.AutofillId);
    method public void setAutofillId(android.view.autofill.AutofillId, int);
    method public void setAutofillOptions(CharSequence[]);
    method public void setAutofillType(int);
    method public void setAutofillValue(android.view.autofill.AutofillValue);
    method public void setCheckable(boolean);
    method public void setChecked(boolean);
    method public void setChildCount(int);
    method public void setClassName(String);
    method public void setClickable(boolean);
    method public void setContentDescription(CharSequence);
    method public void setContextClickable(boolean);
    method public void setDataIsSensitive(boolean);
    method public void setDimens(int, int, int, int, int, int);
    method public void setElevation(float);
    method public void setEnabled(boolean);
    method public void setFocusable(boolean);
    method public void setFocused(boolean);
    method public void setHint(CharSequence);
    method public void setHtmlInfo(android.view.ViewStructure.HtmlInfo);
    method public void setId(int, String, String, String);
    method public void setInputType(int);
    method public void setLocaleList(android.os.LocaleList);
    method public void setLongClickable(boolean);
    method public void setOpaque(boolean);
    method public void setSelected(boolean);
    method public void setText(CharSequence);
    method public void setText(CharSequence, int, int);
    method public void setTextLines(int[], int[]);
    method public void setTextStyle(float, int, int, int);
    method public void setTransformation(android.graphics.Matrix);
    method public void setVisibility(int);
    method public void setWebDomain(String);
  }

}
+2 −0
Original line number Diff line number Diff line
@@ -52,11 +52,13 @@ public final class AutofillId implements Parcelable {
    }

    /** @hide */
    @TestApi
    public AutofillId(int parentId, int virtualChildId) {
        this(FLAG_IS_VIRTUAL_INT, parentId, virtualChildId, NO_SESSION);
    }

    /** @hide */
    @TestApi
    public AutofillId(@NonNull AutofillId parent, long virtualChildId, int sessionId) {
        this(FLAG_IS_VIRTUAL_LONG | FLAG_HAS_SESSION, parent.mViewId, virtualChildId, sessionId);
    }
+9 −5
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import android.view.ViewStructure.HtmlInfo.Builder;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillValue;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;

//TODO(b/122484602): add javadocs / implement Parcelable / implement
@@ -589,6 +588,7 @@ public final class ViewNode extends AssistStructure.ViewNode {
    }

    /** @hide */
    @TestApi
    public static void writeToParcel(@NonNull Parcel parcel, @Nullable ViewNode node, int flags) {
        if (node == null) {
            parcel.writeLong(0);
@@ -598,18 +598,20 @@ public final class ViewNode extends AssistStructure.ViewNode {
    }

    /** @hide */
    @TestApi
    public static @Nullable ViewNode readFromParcel(@NonNull Parcel parcel) {
        final long nodeFlags = parcel.readLong();
        return nodeFlags == 0 ? null : new ViewNode(nodeFlags, parcel);
    }

    /** @hide */
    @VisibleForTesting // Must be public to be accessed from FrameworkCoreTests' apk.
    @TestApi
    public static final class ViewStructureImpl extends ViewStructure {

        final ViewNode mNode = new ViewNode();

        @VisibleForTesting // Must be public to be accessed from FrameworkCoreTests' apk.
        /** @hide */
        @TestApi
        public ViewStructureImpl(@NonNull View view) {
            mNode.mAutofillId = Preconditions.checkNotNull(view).getAutofillId();
            final ViewParent parent = view.getParent();
@@ -618,13 +620,15 @@ public final class ViewNode extends AssistStructure.ViewNode {
            }
        }

        @VisibleForTesting // Must be public to be accessed from FrameworkCoreTests' apk.
        /** @hide */
        @TestApi
        public ViewStructureImpl(@NonNull AutofillId parentId, long virtualId, int sessionId) {
            mNode.mParentAutofillId = Preconditions.checkNotNull(parentId);
            mNode.mAutofillId = new AutofillId(parentId, virtualId, sessionId);
        }

        @VisibleForTesting // Must be public to be accessed from FrameworkCoreTests' apk.
        /** @hide */
        @TestApi
        public ViewNode getNode() {
            return mNode;
        }
+0 −88
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.view.contentcapture;

import static com.google.common.truth.Truth.assertThat;

import static org.testng.Assert.assertThrows;

import android.net.Uri;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

/**
 * Unit test for {@link UserDataRemovalRequest}.
 *
 * <p>To run it:
 * {@code atest FrameworksCoreTests:android.view.contentcapture.UserDataRemovalRequestTest}
 */
@RunWith(MockitoJUnitRunner.class)
public class UserDataRemovalRequestTest {

    @Mock
    private final Uri mUri = Uri.parse("content://com.example/");

    private UserDataRemovalRequest.Builder mBuilder = new UserDataRemovalRequest.Builder();

    @Test
    public void testBuilder_addUri_invalid() {
        assertThrows(NullPointerException.class, () -> mBuilder.addUri(null, false));
    }

    @Test
    public void testBuilder_addUri_valid() {
        assertThat(mBuilder.addUri(mUri, false)).isNotNull();
        assertThat(mBuilder.addUri(Uri.parse("content://com.example2"), true)).isNotNull();
    }

    @Test
    public void testBuilder_addUriAfterForEverything() {
        assertThat(mBuilder.forEverything()).isNotNull();
        assertThrows(IllegalStateException.class, () -> mBuilder.addUri(mUri, false));
    }

    @Test
    public void testBuilder_forEverythingAfterAddingUri() {
        assertThat(mBuilder.addUri(mUri, false)).isNotNull();
        assertThrows(IllegalStateException.class, () -> mBuilder.forEverything());
    }

    @Test
    public void testBuild_invalid() {
        assertThrows(IllegalStateException.class, () -> mBuilder.build());
    }

    @Test
    public void testBuild_valid() {
        assertThat(new UserDataRemovalRequest.Builder().forEverything().build())
                .isNotNull();
        assertThat(new UserDataRemovalRequest.Builder().addUri(mUri, false).build())
                .isNotNull();
    }

    @Test
    public void testNoMoreInteractionsAfterBuild() {
        assertThat(mBuilder.forEverything().build()).isNotNull();

        assertThrows(IllegalStateException.class, () -> mBuilder.addUri(mUri, false));
        assertThrows(IllegalStateException.class, () -> mBuilder.forEverything());
        assertThrows(IllegalStateException.class, () -> mBuilder.build());

    }
}
+1 −375

File changed.

Preview size limit exceeded, changes collapsed.