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

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

Merge "Made moar ContentCapture APIs available for testing."

parents 6f82297c f38d414e
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -2669,6 +2669,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 {
@@ -2718,6 +2720,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.