summaryrefslogtreecommitdiff
path: root/library/gingerbread/test/instrumentation/src
diff options
context:
space:
mode:
Diffstat (limited to 'library/gingerbread/test/instrumentation/src')
-rw-r--r--library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java129
-rw-r--r--library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java3
-rw-r--r--library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java602
3 files changed, 359 insertions, 375 deletions
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
index f5b8253..7f51fa7 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
@@ -18,19 +18,16 @@ package com.android.setupwizardlib.items;
import static org.junit.Assert.assertTrue;
+import androidx.annotation.StyleRes;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.LinearLayout;
import android.support.test.annotation.UiThreadTest;
import android.support.test.filters.SmallTest;
import android.support.test.rule.UiThreadTestRule;
import android.support.test.runner.AndroidJUnit4;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.LinearLayout;
-
-import androidx.annotation.StyleRes;
-
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.test.util.DrawingTestHelper;
-
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -39,69 +36,65 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class ButtonItemDrawingTest {
- private static final int GLIF_ACCENT_COLOR = 0xff4285f4;
- private static final int GLIF_V3_ACCENT_COLOR = 0xff1a73e8;
-
- // These tests need to be run on UI thread because button uses ValueAnimator
- @Rule
- public UiThreadTestRule mUiThreadTestRule = new UiThreadTestRule();
-
- @Test
- @UiThreadTest
- public void drawButton_glif_shouldHaveAccentColoredButton()
- throws InstantiationException, IllegalAccessException {
- Button button = createButton(R.style.SuwThemeGlif_Light);
-
- DrawingTestHelper drawingTestHelper = new DrawingTestHelper(50, 50);
- drawingTestHelper.drawView(button);
-
- int accentPixelCount =
- countPixelsWithColor(drawingTestHelper.getPixels(), GLIF_ACCENT_COLOR);
- assertTrue("> 10 pixels should be #4285f4. Found " + accentPixelCount,
- accentPixelCount > 10);
- }
-
- @Test
- @UiThreadTest
- public void drawButton_glifV3_shouldHaveAccentColoredButton()
- throws InstantiationException, IllegalAccessException {
- Button button = createButton(R.style.SuwThemeGlifV3_Light);
-
- DrawingTestHelper drawingTestHelper = new DrawingTestHelper(50, 50);
- drawingTestHelper.drawView(button);
-
- int accentPixelCount =
- countPixelsWithColor(drawingTestHelper.getPixels(), GLIF_V3_ACCENT_COLOR);
- assertTrue("> 10 pixels should be #1a73e8. Found " + accentPixelCount,
- accentPixelCount > 10);
- }
-
- private Button createButton(@StyleRes int theme)
- throws InstantiationException, IllegalAccessException {
- final ViewGroup parent = new LinearLayout(DrawingTestHelper.createCanvasActivity(theme));
- TestButtonItem item = new TestButtonItem();
- item.setTheme(R.style.SuwButtonItem_Colored);
- item.setText("foobar");
-
- return item.createButton(parent);
- }
-
- private int countPixelsWithColor(int[] pixels, int color) {
- int count = 0;
- for (int pixel : pixels) {
- if (pixel == color) {
- count++;
- }
- }
- return count;
+ private static final int GLIF_ACCENT_COLOR = 0xff4285f4;
+ private static final int GLIF_V3_ACCENT_COLOR = 0xff1a73e8;
+
+ // These tests need to be run on UI thread because button uses ValueAnimator
+ @Rule public UiThreadTestRule mUiThreadTestRule = new UiThreadTestRule();
+
+ @Test
+ @UiThreadTest
+ public void drawButton_glif_shouldHaveAccentColoredButton()
+ throws InstantiationException, IllegalAccessException {
+ Button button = createButton(R.style.SuwThemeGlif_Light);
+
+ DrawingTestHelper drawingTestHelper = new DrawingTestHelper(50, 50);
+ drawingTestHelper.drawView(button);
+
+ int accentPixelCount = countPixelsWithColor(drawingTestHelper.getPixels(), GLIF_ACCENT_COLOR);
+ assertTrue("> 10 pixels should be #4285f4. Found " + accentPixelCount, accentPixelCount > 10);
+ }
+
+ @Test
+ @UiThreadTest
+ public void drawButton_glifV3_shouldHaveAccentColoredButton()
+ throws InstantiationException, IllegalAccessException {
+ Button button = createButton(R.style.SuwThemeGlifV3_Light);
+
+ DrawingTestHelper drawingTestHelper = new DrawingTestHelper(50, 50);
+ drawingTestHelper.drawView(button);
+
+ int accentPixelCount =
+ countPixelsWithColor(drawingTestHelper.getPixels(), GLIF_V3_ACCENT_COLOR);
+ assertTrue("> 10 pixels should be #1a73e8. Found " + accentPixelCount, accentPixelCount > 10);
+ }
+
+ private Button createButton(@StyleRes int theme)
+ throws InstantiationException, IllegalAccessException {
+ final ViewGroup parent = new LinearLayout(DrawingTestHelper.createCanvasActivity(theme));
+ TestButtonItem item = new TestButtonItem();
+ item.setTheme(R.style.SuwButtonItem_Colored);
+ item.setText("foobar");
+
+ return item.createButton(parent);
+ }
+
+ private int countPixelsWithColor(int[] pixels, int color) {
+ int count = 0;
+ for (int pixel : pixels) {
+ if (pixel == color) {
+ count++;
+ }
}
+ return count;
+ }
- private static class TestButtonItem extends ButtonItem {
+ private static class TestButtonItem extends ButtonItem {
- @Override
- public Button createButton(ViewGroup parent) {
- // Make this method public for testing
- return super.createButton(parent);
- }
+ @Override
+ public Button createButton(ViewGroup parent) {
+ // Make this method public for testing
+ return super.createButton(parent);
}
+ }
}
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
index d3518f4..80e23e9 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
@@ -26,5 +26,4 @@ import androidx.appcompat.app.AppCompatActivity;
*
* @see DrawingTestHelper
*/
-public class DrawingTestActivity extends AppCompatActivity {
-}
+public class DrawingTestActivity extends AppCompatActivity {}
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
index 7b4ad4d..da5e16c 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
@@ -25,342 +25,334 @@ import static org.mockito.Mockito.verify;
import android.graphics.Rect;
import android.os.Bundle;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
+import androidx.customview.widget.ExploreByTouchHelper;
import android.text.SpannableStringBuilder;
import android.util.DisplayMetrics;
import android.util.TypedValue;
-import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.FrameLayout;
import android.widget.TextView;
-
import androidx.core.text.BidiFormatter;
-import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
-import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
-import androidx.customview.widget.ExploreByTouchHelper;
-
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
import com.android.setupwizardlib.span.LinkSpan;
import com.android.setupwizardlib.util.LinkAccessibilityHelper.PreOLinkAccessibilityHelper;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.junit.Test;
+import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class LinkAccessibilityHelperTest {
- private static final LinkSpan LINK_SPAN = new LinkSpan("foobar");
-
- private TextView mTextView;
- private TestPreOLinkAccessibilityHelper mHelper;
-
- private DisplayMetrics mDisplayMetrics;
-
- @Test
- public void testGetVirtualViewAt() {
- initTextView();
- final int virtualViewId = mHelper.getVirtualViewAt(dp2Px(15), dp2Px(10));
- assertEquals("Virtual view ID should be 1", 1, virtualViewId);
- }
-
- @Test
- public void testGetVirtualViewAtHost() {
- initTextView();
- final int virtualViewId = mHelper.getVirtualViewAt(dp2Px(100), dp2Px(100));
- assertEquals("Virtual view ID should be INVALID_ID",
- ExploreByTouchHelper.INVALID_ID, virtualViewId);
- }
-
- @Test
- public void testGetVisibleVirtualViews() {
- initTextView();
- List<Integer> virtualViewIds = new ArrayList<>();
- mHelper.getVisibleVirtualViews(virtualViewIds);
-
- assertEquals("VisibleVirtualViews should be [1]",
- Collections.singletonList(1), virtualViewIds);
- }
-
- @Test
- public void testOnPopulateEventForVirtualView() {
- initTextView();
- AccessibilityEvent event = AccessibilityEvent.obtain();
- mHelper.onPopulateEventForVirtualView(1, event);
-
- // LinkSpan is set on substring(1, 2) of "Hello world" --> "e"
- assertEquals("LinkSpan description should be \"e\"",
- "e", event.getContentDescription().toString());
-
- event.recycle();
- }
-
- @Test
- public void testOnPopulateEventForVirtualViewHost() {
- initTextView();
- AccessibilityEvent event = AccessibilityEvent.obtain();
- mHelper.onPopulateEventForVirtualView(ExploreByTouchHelper.INVALID_ID, event);
-
- assertEquals("Host view description should be \"Hello world\"", "Hello world",
- event.getContentDescription().toString());
-
- event.recycle();
- }
-
- @Test
- public void testOnPopulateNodeForVirtualView() {
- initTextView();
- AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
- mHelper.onPopulateNodeForVirtualView(1, info);
-
- assertEquals("LinkSpan description should be \"e\"",
- "e", info.getContentDescription().toString());
- assertTrue("LinkSpan should be focusable", info.isFocusable());
- assertTrue("LinkSpan should be clickable", info.isClickable());
- Rect bounds = new Rect();
- info.getBoundsInParent(bounds);
- assertEquals("LinkSpan bounds should be (10.5dp, 0dp, 18.5dp, 20.5dp)",
- new Rect(dp2Px(10.5f), dp2Px(0f), dp2Px(18.5f), dp2Px(20.5f)), bounds);
-
- info.recycle();
- }
-
- @Test
- public void testNullLayout() {
- initTextView();
- // Setting the padding will cause the layout to be null-ed out.
- mTextView.setPadding(1, 1, 1, 1);
-
- AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
- mHelper.onPopulateNodeForVirtualView(0, info);
-
- Rect bounds = new Rect();
- info.getBoundsInParent(bounds);
- assertEquals("LinkSpan bounds should be (0, 0, 1, 1)",
- new Rect(0, 0, 1, 1), bounds);
-
- info.recycle();
- }
-
- @Test
- public void testRtlLayout() {
- SpannableStringBuilder ssb = new SpannableStringBuilder("מכונה בתרגום");
- ssb.setSpan(LINK_SPAN, 1, 2, 0 /* flags */);
- initTextView(ssb);
-
- AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
- mHelper.onPopulateNodeForVirtualView(1, info);
-
- assertEquals("LinkSpan description should be \"כ\"",
- "כ", info.getContentDescription().toString());
- Rect bounds = new Rect();
- info.getBoundsInParent(bounds);
- assertEquals("LinkSpan bounds should be (481.5dp, 0dp, 489.5dp, 20.5dp)",
- new Rect(dp2Px(481.5f), dp2Px(0f), dp2Px(489.5f), dp2Px(20.5f)), bounds);
-
- info.recycle();
- }
-
- @Test
- public void testMultilineLink() {
- SpannableStringBuilder ssb = new SpannableStringBuilder(
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
+ private static final LinkSpan LINK_SPAN = new LinkSpan("foobar");
+
+ private TextView mTextView;
+ private TestPreOLinkAccessibilityHelper mHelper;
+
+ private DisplayMetrics mDisplayMetrics;
+
+ @Test
+ public void testGetVirtualViewAt() {
+ initTextView();
+ final int virtualViewId = mHelper.getVirtualViewAt(dp2Px(15), dp2Px(10));
+ assertEquals("Virtual view ID should be 1", 1, virtualViewId);
+ }
+
+ @Test
+ public void testGetVirtualViewAtHost() {
+ initTextView();
+ final int virtualViewId = mHelper.getVirtualViewAt(dp2Px(100), dp2Px(100));
+ assertEquals(
+ "Virtual view ID should be INVALID_ID", ExploreByTouchHelper.INVALID_ID, virtualViewId);
+ }
+
+ @Test
+ public void testGetVisibleVirtualViews() {
+ initTextView();
+ List<Integer> virtualViewIds = new ArrayList<>();
+ mHelper.getVisibleVirtualViews(virtualViewIds);
+
+ assertEquals("VisibleVirtualViews should be [1]", Collections.singletonList(1), virtualViewIds);
+ }
+
+ @Test
+ public void testOnPopulateEventForVirtualView() {
+ initTextView();
+ AccessibilityEvent event = AccessibilityEvent.obtain();
+ mHelper.onPopulateEventForVirtualView(1, event);
+
+ // LinkSpan is set on substring(1, 2) of "Hello world" --> "e"
+ assertEquals(
+ "LinkSpan description should be \"e\"", "e", event.getContentDescription().toString());
+
+ event.recycle();
+ }
+
+ @Test
+ public void testOnPopulateEventForVirtualViewHost() {
+ initTextView();
+ AccessibilityEvent event = AccessibilityEvent.obtain();
+ mHelper.onPopulateEventForVirtualView(ExploreByTouchHelper.INVALID_ID, event);
+
+ assertEquals(
+ "Host view description should be \"Hello world\"",
+ "Hello world",
+ event.getContentDescription().toString());
+
+ event.recycle();
+ }
+
+ @Test
+ public void testOnPopulateNodeForVirtualView() {
+ initTextView();
+ AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+ mHelper.onPopulateNodeForVirtualView(1, info);
+
+ assertEquals(
+ "LinkSpan description should be \"e\"", "e", info.getContentDescription().toString());
+ assertTrue("LinkSpan should be focusable", info.isFocusable());
+ assertTrue("LinkSpan should be clickable", info.isClickable());
+ Rect bounds = new Rect();
+ info.getBoundsInParent(bounds);
+ assertEquals(
+ "LinkSpan bounds should be (10.5dp, 0dp, 18.5dp, 20.5dp)",
+ new Rect(dp2Px(10.5f), dp2Px(0f), dp2Px(18.5f), dp2Px(20.5f)),
+ bounds);
+
+ info.recycle();
+ }
+
+ @Test
+ public void testNullLayout() {
+ initTextView();
+ // Setting the padding will cause the layout to be null-ed out.
+ mTextView.setPadding(1, 1, 1, 1);
+
+ AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+ mHelper.onPopulateNodeForVirtualView(0, info);
+
+ Rect bounds = new Rect();
+ info.getBoundsInParent(bounds);
+ assertEquals("LinkSpan bounds should be (0, 0, 1, 1)", new Rect(0, 0, 1, 1), bounds);
+
+ info.recycle();
+ }
+
+ @Test
+ public void testRtlLayout() {
+ SpannableStringBuilder ssb = new SpannableStringBuilder("מכונה בתרגום");
+ ssb.setSpan(LINK_SPAN, 1, 2, 0 /* flags */);
+ initTextView(ssb);
+
+ AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+ mHelper.onPopulateNodeForVirtualView(1, info);
+
+ assertEquals(
+ "LinkSpan description should be \"כ\"", "כ", info.getContentDescription().toString());
+ Rect bounds = new Rect();
+ info.getBoundsInParent(bounds);
+ assertEquals(
+ "LinkSpan bounds should be (481.5dp, 0dp, 489.5dp, 20.5dp)",
+ new Rect(dp2Px(481.5f), dp2Px(0f), dp2Px(489.5f), dp2Px(20.5f)),
+ bounds);
+
+ info.recycle();
+ }
+
+ @Test
+ public void testMultilineLink() {
+ SpannableStringBuilder ssb =
+ new SpannableStringBuilder(
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
+ "Praesent accumsan efficitur eros eu porttitor.");
- ssb.setSpan(LINK_SPAN, 51, 74, 0 /* flags */);
- initTextView(ssb);
-
- AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
- mHelper.onPopulateNodeForVirtualView(51, info);
-
- assertEquals("LinkSpan description should match the span",
- "elit. Praesent accumsan", info.getContentDescription().toString());
- Rect bounds = new Rect();
- info.getBoundsInParent(bounds);
- assertEquals("LinkSpan bounds should match first line of the span",
- new Rect(dp2Px(343f), dp2Px(0f), dp2Px(500f), dp2Px(19.5f)), bounds);
-
- info.recycle();
+ ssb.setSpan(LINK_SPAN, 51, 74, 0 /* flags */);
+ initTextView(ssb);
+
+ AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+ mHelper.onPopulateNodeForVirtualView(51, info);
+
+ assertEquals(
+ "LinkSpan description should match the span",
+ "elit. Praesent accumsan",
+ info.getContentDescription().toString());
+ Rect bounds = new Rect();
+ info.getBoundsInParent(bounds);
+ assertEquals(
+ "LinkSpan bounds should match first line of the span",
+ new Rect(dp2Px(343f), dp2Px(0f), dp2Px(500f), dp2Px(19.5f)),
+ bounds);
+
+ info.recycle();
+ }
+
+ @Test
+ public void testRtlMultilineLink() {
+ String iwLoremIpsum =
+ "אחר על רביעי אקטואליה. לוח דת אחרות המקובל רומנית, מיזמים מועמדים "
+ + "האנציקלופדיה בה צ'ט. מתן מה שנורו לערוך ייִדיש, בקר או החול אנתרופולוגיה, עוד "
+ + "דפים המחשב מיזמים ב.";
+ SpannableStringBuilder ssb = new SpannableStringBuilder(iwLoremIpsum);
+ ssb.setSpan(LINK_SPAN, 50, 100, 0 /* flags */);
+ initTextView(ssb);
+
+ AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+ mHelper.onPopulateNodeForVirtualView(50, info);
+
+ assertEquals(
+ "LinkSpan description should match the span",
+ iwLoremIpsum.substring(50, 100),
+ info.getContentDescription().toString());
+ Rect bounds = new Rect();
+ info.getBoundsInParent(bounds);
+ assertEquals(
+ "LinkSpan bounds should match the first line of the span",
+ new Rect(dp2Px(0f), dp2Px(0f), dp2Px(150f), dp2Px(19.5f)),
+ bounds);
+
+ info.recycle();
+ }
+
+ @Test
+ public void testBidiMultilineLink() {
+ String iwLoremIpsum =
+ "אחר על רביעי אקטואליה. לוח דת אחרות המקובל רומנית, מיזמים מועמדים "
+ + "האנציקלופדיה בה צ'ט. מתן מה שנורו לערוך ייִדיש, בקר או החול אנתרופולוגיה, עוד "
+ + "דפים המחשב מיזמים ב.";
+ BidiFormatter formatter = BidiFormatter.getInstance(false /* rtlContext */);
+ SpannableStringBuilder ssb = new SpannableStringBuilder();
+ ssb.append("hello ").append(formatter.unicodeWrap(iwLoremIpsum)).append(" world");
+ ssb.setSpan(
+ LINK_SPAN,
+ "hello ".length() + 2, // Add two for the characters added by BidiFormatter
+ "hello ".length() + 2 + iwLoremIpsum.length(),
+ 0 /* flags */);
+ initTextView(ssb);
+
+ AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+ mHelper.onPopulateNodeForVirtualView("hello ".length() + 2, info);
+
+ assertEquals(
+ "LinkSpan description should match the span",
+ iwLoremIpsum,
+ info.getContentDescription().toString());
+ Rect bounds = new Rect();
+ info.getBoundsInParent(bounds);
+ assertEquals(
+ "LinkSpan bounds should match the first line of the span",
+ new Rect(dp2Px(491.5f), dp2Px(0f), dp2Px(500f), dp2Px(19.5f)),
+ bounds);
+
+ info.recycle();
+ }
+
+ @Test
+ public void testMethodDelegation() {
+ initTextView();
+ AccessibilityDelegateCompat delegate = mock(AccessibilityDelegateCompat.class);
+ LinkAccessibilityHelper helper = new LinkAccessibilityHelper(delegate);
+
+ AccessibilityEvent accessibilityEvent =
+ AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_CLICKED);
+
+ helper.sendAccessibilityEvent(mTextView, AccessibilityEvent.TYPE_VIEW_CLICKED);
+ verify(delegate)
+ .sendAccessibilityEvent(same(mTextView), eq(AccessibilityEvent.TYPE_VIEW_CLICKED));
+
+ helper.sendAccessibilityEventUnchecked(mTextView, accessibilityEvent);
+ verify(delegate).sendAccessibilityEventUnchecked(same(mTextView), same(accessibilityEvent));
+
+ helper.performAccessibilityAction(
+ mTextView, AccessibilityActionCompat.ACTION_CLICK.getId(), Bundle.EMPTY);
+ verify(delegate)
+ .performAccessibilityAction(
+ same(mTextView), eq(AccessibilityActionCompat.ACTION_CLICK.getId()), eq(Bundle.EMPTY));
+
+ helper.dispatchPopulateAccessibilityEvent(mTextView, accessibilityEvent);
+ verify(delegate).dispatchPopulateAccessibilityEvent(same(mTextView), same(accessibilityEvent));
+
+ helper.getAccessibilityNodeProvider(mTextView);
+ verify(delegate).getAccessibilityNodeProvider(same(mTextView));
+
+ helper.onInitializeAccessibilityEvent(mTextView, accessibilityEvent);
+ verify(delegate).onInitializeAccessibilityEvent(same(mTextView), eq(accessibilityEvent));
+
+ AccessibilityNodeInfoCompat accessibilityNodeInfo = AccessibilityNodeInfoCompat.obtain();
+ helper.onInitializeAccessibilityNodeInfo(mTextView, accessibilityNodeInfo);
+ verify(delegate)
+ .onInitializeAccessibilityNodeInfo(same(mTextView), same(accessibilityNodeInfo));
+
+ helper.onPopulateAccessibilityEvent(mTextView, accessibilityEvent);
+ verify(delegate).onPopulateAccessibilityEvent(same(mTextView), same(accessibilityEvent));
+
+ FrameLayout parent = new FrameLayout(InstrumentationRegistry.getTargetContext());
+ helper.onRequestSendAccessibilityEvent(parent, mTextView, accessibilityEvent);
+ verify(delegate)
+ .onRequestSendAccessibilityEvent(same(parent), same(mTextView), same(accessibilityEvent));
+ }
+
+ private void initTextView() {
+ SpannableStringBuilder ssb = new SpannableStringBuilder("Hello world");
+ ssb.setSpan(LINK_SPAN, 1, 2, 0 /* flags */);
+ initTextView(ssb);
+ }
+
+ private void initTextView(CharSequence text) {
+ mTextView = new TextView(InstrumentationRegistry.getContext());
+ mTextView.setSingleLine(false);
+ mTextView.setText(text);
+ mTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
+ mHelper = new TestPreOLinkAccessibilityHelper(mTextView);
+
+ int measureExactly500dp =
+ View.MeasureSpec.makeMeasureSpec(dp2Px(500), View.MeasureSpec.EXACTLY);
+ mTextView.measure(measureExactly500dp, measureExactly500dp);
+ mTextView.layout(dp2Px(0), dp2Px(0), dp2Px(500), dp2Px(500));
+ }
+
+ private int dp2Px(float dp) {
+ if (mDisplayMetrics == null) {
+ mDisplayMetrics = InstrumentationRegistry.getContext().getResources().getDisplayMetrics();
}
+ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, mDisplayMetrics);
+ }
- @Test
- public void testRtlMultilineLink() {
- String iwLoremIpsum = "אחר על רביעי אקטואליה. לוח דת אחרות המקובל רומנית, מיזמים מועמדים "
- + "האנציקלופדיה בה צ'ט. מתן מה שנורו לערוך ייִדיש, בקר או החול אנתרופולוגיה, עוד "
- + "דפים המחשב מיזמים ב.";
- SpannableStringBuilder ssb = new SpannableStringBuilder(iwLoremIpsum);
- ssb.setSpan(LINK_SPAN, 50, 100, 0 /* flags */);
- initTextView(ssb);
-
- AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
- mHelper.onPopulateNodeForVirtualView(50, info);
-
- assertEquals("LinkSpan description should match the span",
- iwLoremIpsum.substring(50, 100),
- info.getContentDescription().toString());
- Rect bounds = new Rect();
- info.getBoundsInParent(bounds);
- assertEquals("LinkSpan bounds should match the first line of the span",
- new Rect(dp2Px(0f), dp2Px(0f), dp2Px(150f), dp2Px(19.5f)), bounds);
-
- info.recycle();
- }
+ public static class TestPreOLinkAccessibilityHelper extends PreOLinkAccessibilityHelper {
- @Test
- public void testBidiMultilineLink() {
- String iwLoremIpsum = "אחר על רביעי אקטואליה. לוח דת אחרות המקובל רומנית, מיזמים מועמדים "
- + "האנציקלופדיה בה צ'ט. מתן מה שנורו לערוך ייִדיש, בקר או החול אנתרופולוגיה, עוד "
- + "דפים המחשב מיזמים ב.";
- BidiFormatter formatter = BidiFormatter.getInstance(false /* rtlContext */);
- SpannableStringBuilder ssb = new SpannableStringBuilder();
- ssb.append("hello ").append(formatter.unicodeWrap(iwLoremIpsum)).append(" world");
- ssb.setSpan(LINK_SPAN,
- "hello ".length() + 2, // Add two for the characters added by BidiFormatter
- "hello ".length() + 2 + iwLoremIpsum.length(),
- 0 /* flags */);
- initTextView(ssb);
-
- AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
- mHelper.onPopulateNodeForVirtualView("hello ".length() + 2, info);
-
- assertEquals("LinkSpan description should match the span",
- iwLoremIpsum,
- info.getContentDescription().toString());
- Rect bounds = new Rect();
- info.getBoundsInParent(bounds);
- assertEquals("LinkSpan bounds should match the first line of the span",
- new Rect(dp2Px(491.5f), dp2Px(0f), dp2Px(500f), dp2Px(19.5f)), bounds);
-
- info.recycle();
+ TestPreOLinkAccessibilityHelper(TextView view) {
+ super(view);
}
- @Test
- public void testMethodDelegation() {
- initTextView();
- ExploreByTouchHelper delegate = mock(TestPreOLinkAccessibilityHelper.class);
- LinkAccessibilityHelper helper = new LinkAccessibilityHelper(delegate);
-
- AccessibilityEvent accessibilityEvent =
- AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_CLICKED);
-
- helper.sendAccessibilityEvent(mTextView, AccessibilityEvent.TYPE_VIEW_CLICKED);
- verify(delegate).sendAccessibilityEvent(
- same(mTextView),
- eq(AccessibilityEvent.TYPE_VIEW_CLICKED));
-
- helper.sendAccessibilityEventUnchecked(mTextView, accessibilityEvent);
- verify(delegate).sendAccessibilityEventUnchecked(same(mTextView), same(accessibilityEvent));
-
- helper.performAccessibilityAction(
- mTextView,
- AccessibilityActionCompat.ACTION_CLICK.getId(),
- Bundle.EMPTY);
- verify(delegate).performAccessibilityAction(
- same(mTextView),
- eq(AccessibilityActionCompat.ACTION_CLICK.getId()),
- eq(Bundle.EMPTY));
-
- helper.dispatchPopulateAccessibilityEvent(
- mTextView,
- accessibilityEvent);
- verify(delegate).dispatchPopulateAccessibilityEvent(
- same(mTextView),
- same(accessibilityEvent));
-
- MotionEvent motionEvent = MotionEvent.obtain(0, 0, 0, 0, 0, 0);
- helper.dispatchHoverEvent(motionEvent);
- verify(delegate).dispatchHoverEvent(eq(motionEvent));
-
- helper.getAccessibilityNodeProvider(mTextView);
- verify(delegate).getAccessibilityNodeProvider(same(mTextView));
-
- helper.onInitializeAccessibilityEvent(mTextView, accessibilityEvent);
- verify(delegate).onInitializeAccessibilityEvent(
- same(mTextView),
- eq(accessibilityEvent));
-
- AccessibilityNodeInfoCompat accessibilityNodeInfo = AccessibilityNodeInfoCompat.obtain();
- helper.onInitializeAccessibilityNodeInfo(mTextView, accessibilityNodeInfo);
- verify(delegate).onInitializeAccessibilityNodeInfo(
- same(mTextView),
- same(accessibilityNodeInfo));
-
- helper.onPopulateAccessibilityEvent(mTextView, accessibilityEvent);
- verify(delegate).onPopulateAccessibilityEvent(
- same(mTextView),
- same(accessibilityEvent));
-
- FrameLayout parent = new FrameLayout(InstrumentationRegistry.getTargetContext());
- helper.onRequestSendAccessibilityEvent(parent, mTextView, accessibilityEvent);
- verify(delegate).onRequestSendAccessibilityEvent(
- same(parent),
- same(mTextView),
- same(accessibilityEvent));
+ @Override
+ public int getVirtualViewAt(float x, float y) {
+ return super.getVirtualViewAt(x, y);
}
- private void initTextView() {
- SpannableStringBuilder ssb = new SpannableStringBuilder("Hello world");
- ssb.setSpan(LINK_SPAN, 1, 2, 0 /* flags */);
- initTextView(ssb);
+ @Override
+ public void getVisibleVirtualViews(List<Integer> virtualViewIds) {
+ super.getVisibleVirtualViews(virtualViewIds);
}
- private void initTextView(CharSequence text) {
- mTextView = new TextView(InstrumentationRegistry.getContext());
- mTextView.setSingleLine(false);
- mTextView.setText(text);
- mTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
- mHelper = new TestPreOLinkAccessibilityHelper(mTextView);
-
- int measureExactly500dp = View.MeasureSpec.makeMeasureSpec(dp2Px(500),
- View.MeasureSpec.EXACTLY);
- mTextView.measure(measureExactly500dp, measureExactly500dp);
- mTextView.layout(dp2Px(0), dp2Px(0), dp2Px(500), dp2Px(500));
+ @Override
+ public void onPopulateEventForVirtualView(int virtualViewId, AccessibilityEvent event) {
+ super.onPopulateEventForVirtualView(virtualViewId, event);
}
- private int dp2Px(float dp) {
- if (mDisplayMetrics == null) {
- mDisplayMetrics =
- InstrumentationRegistry.getContext().getResources().getDisplayMetrics();
- }
- return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, mDisplayMetrics);
+ @Override
+ public void onPopulateNodeForVirtualView(int virtualViewId, AccessibilityNodeInfoCompat info) {
+ super.onPopulateNodeForVirtualView(virtualViewId, info);
}
- public static class TestPreOLinkAccessibilityHelper extends PreOLinkAccessibilityHelper {
-
- TestPreOLinkAccessibilityHelper(TextView view) {
- super(view);
- }
-
- @Override
- public int getVirtualViewAt(float x, float y) {
- return super.getVirtualViewAt(x, y);
- }
-
- @Override
- public void getVisibleVirtualViews(List<Integer> virtualViewIds) {
- super.getVisibleVirtualViews(virtualViewIds);
- }
-
- @Override
- public void onPopulateEventForVirtualView(int virtualViewId, AccessibilityEvent event) {
- super.onPopulateEventForVirtualView(virtualViewId, event);
- }
-
- @Override
- public void onPopulateNodeForVirtualView(int virtualViewId,
- AccessibilityNodeInfoCompat info) {
- super.onPopulateNodeForVirtualView(virtualViewId, info);
- }
-
- @Override
- public boolean onPerformActionForVirtualView(int virtualViewId, int action,
- Bundle arguments) {
- return super.onPerformActionForVirtualView(virtualViewId, action, arguments);
- }
+ @Override
+ public boolean onPerformActionForVirtualView(int virtualViewId, int action, Bundle arguments) {
+ return super.onPerformActionForVirtualView(virtualViewId, action, arguments);
}
+ }
}