| Index: chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java
|
| index 3f1abe26b3f27a5c7751f51e5a6ec0700f737ea1..d07f766cac078c4b6f9bb2346167218b41689cb5 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java
|
| @@ -5,6 +5,8 @@
|
| package org.chromium.chrome.browser;
|
|
|
| import android.app.Dialog;
|
| +import android.content.res.Resources;
|
| +import android.support.graphics.drawable.VectorDrawableCompat;
|
| import android.test.suitebuilder.annotation.LargeTest;
|
| import android.text.SpannableString;
|
| import android.view.View;
|
| @@ -33,6 +35,9 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| String mLastSelectedId = "None";
|
|
|
| + private ItemChooserDialog.ItemChooserRowIcon mTestIcon1;
|
| + private ItemChooserDialog.ItemChooserRowIcon mTestIcon2;
|
| +
|
| public ItemChooserDialogTest() {
|
| super(ChromeActivity.class);
|
| }
|
| @@ -42,7 +47,20 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| @Override
|
| protected void setUp() throws Exception {
|
| super.setUp();
|
| - mChooserDialog = createDialog();
|
| + Resources resources = getActivity().getResources();
|
| + mTestIcon1 = new ItemChooserDialog.ItemChooserRowIcon(
|
| + VectorDrawableCompat.create(
|
| + resources, R.drawable.ic_signal_cellular_0_bar_grey, null /* theme */),
|
| + VectorDrawableCompat.create(
|
| + resources, R.drawable.ic_signal_cellular_0_bar_white, null /* theme */),
|
| + resources.getQuantityString(R.plurals.signal_strength_level_n_bars, 0, 0));
|
| +
|
| + mTestIcon2 = new ItemChooserDialog.ItemChooserRowIcon(
|
| + VectorDrawableCompat.create(
|
| + resources, R.drawable.ic_signal_cellular_1_bar_grey, null /* theme */),
|
| + VectorDrawableCompat.create(
|
| + resources, R.drawable.ic_signal_cellular_1_bar_white, null /* theme */),
|
| + resources.getQuantityString(R.plurals.signal_strength_level_n_bars, 1, 1));
|
| }
|
|
|
| @Override
|
| @@ -57,7 +75,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| mLastSelectedId = id;
|
| }
|
|
|
| - private ItemChooserDialog createDialog() {
|
| + private ItemChooserDialog createDialog(final boolean usingIcon) {
|
| SpannableString title = new SpannableString("title");
|
| SpannableString searching = new SpannableString("searching");
|
| SpannableString noneFound = new SpannableString("noneFound");
|
| @@ -73,7 +91,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| @Override
|
| public ItemChooserDialog call() {
|
| ItemChooserDialog dialog = new ItemChooserDialog(
|
| - getActivity(), ItemChooserDialogTest.this, labels);
|
| + getActivity(), ItemChooserDialogTest.this, labels, usingIcon);
|
| return dialog;
|
| }
|
| });
|
| @@ -116,8 +134,24 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| }));
|
| }
|
|
|
| + private int getIconVisibilityForItem(ListView items, int pos) {
|
| + final int first = items.getFirstVisiblePosition();
|
| + final int last = items.getLastVisiblePosition();
|
| +
|
| + View item;
|
| + if (pos < first || pos > last) {
|
| + item = items.getAdapter().getView(pos, null, items);
|
| + } else {
|
| + final int visiblePos = pos - first;
|
| + item = items.getChildAt(visiblePos);
|
| + }
|
| + return item.findViewById(R.id.icon).getVisibility();
|
| + }
|
| +
|
| @LargeTest
|
| public void testSimpleItemSelection() throws InterruptedException {
|
| + mChooserDialog = createDialog(false /* usingIcon */);
|
| +
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
|
|
| @@ -159,6 +193,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| @LargeTest
|
| public void testNoItemsAddedDiscoveryIdle() throws InterruptedException {
|
| + mChooserDialog = createDialog(false /* usingIcon */);
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
|
|
| @@ -187,6 +222,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| @LargeTest
|
| public void testDisabledSelection() throws InterruptedException {
|
| + mChooserDialog = createDialog(false /* usingIcon */);
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
|
|
| @@ -203,6 +239,33 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| }
|
|
|
| @LargeTest
|
| + public void testNotUsingIconAdapterRows() throws InterruptedException {
|
| + mChooserDialog = createDialog(false /* usingIcon */);
|
| + Dialog dialog = mChooserDialog.getDialogForTesting();
|
| + assertTrue(dialog.isShowing());
|
| +
|
| + ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
|
| + final ListView items = (ListView) dialog.findViewById(R.id.items);
|
| +
|
| + // Initially the itemAdapter is empty.
|
| + assertTrue(itemAdapter.isEmpty());
|
| +
|
| + // Add item 1 with no icon.
|
| + ItemChooserDialog.ItemChooserRow item1 =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + mChooserDialog.addOrUpdateItem(item1);
|
| + assertEquals(View.GONE, getIconVisibilityForItem(items, 0));
|
| +
|
| + ItemChooserDialog.ItemChooserRow item2 =
|
| + new ItemChooserDialog.ItemChooserRow("key2", "desc2", mTestIcon1);
|
| + mChooserDialog.addOrUpdateItem(item2);
|
| + assertEquals(View.GONE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| public void testPairButtonDisabledOrEnabledAfterSelectedItemDisabledOrEnabled()
|
| throws InterruptedException {
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| @@ -226,6 +289,33 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| }
|
|
|
| @LargeTest
|
| + public void testUsingIconAdapterRows() throws InterruptedException {
|
| + mChooserDialog = createDialog(true /* usingIcon */);
|
| + Dialog dialog = mChooserDialog.getDialogForTesting();
|
| + assertTrue(dialog.isShowing());
|
| +
|
| + ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
|
| + final ListView items = (ListView) dialog.findViewById(R.id.items);
|
| +
|
| + // Initially the itemAdapter is empty.
|
| + assertTrue(itemAdapter.isEmpty());
|
| +
|
| + // Add item 1 with no icon.
|
| + ItemChooserDialog.ItemChooserRow item1 =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + mChooserDialog.addOrUpdateItem(item1);
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + ItemChooserDialog.ItemChooserRow item2 =
|
| + new ItemChooserDialog.ItemChooserRow("key2", "desc2", mTestIcon1);
|
| + mChooserDialog.addOrUpdateItem(item2);
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| public void testPairButtonDisabledAfterSelectedItemRemoved() throws InterruptedException {
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
| @@ -249,6 +339,75 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| }
|
|
|
| @LargeTest
|
| + public void testUpdateItemWithIconToNoIcon() throws InterruptedException {
|
| + mChooserDialog = createDialog(true /* usingIcon */);
|
| + Dialog dialog = mChooserDialog.getDialogForTesting();
|
| + assertTrue(dialog.isShowing());
|
| +
|
| + ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
|
| + final ListView items = (ListView) dialog.findViewById(R.id.items);
|
| +
|
| + // Initially the itemAdapter is empty.
|
| + assertTrue(itemAdapter.isEmpty());
|
| +
|
| + // Add item 1.
|
| + ItemChooserDialog.ItemChooserRow item1 =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1);
|
| + mChooserDialog.addOrUpdateItem(item1);
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(1, itemAdapter.getCount());
|
| + assertEquals(itemAdapter.getItem(0), item1);
|
| +
|
| + // Add item 1 with no icon.
|
| + ItemChooserDialog.ItemChooserRow item1WithNoIcon =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + mChooserDialog.addOrUpdateItem(item1WithNoIcon);
|
| + assertEquals(1, itemAdapter.getCount());
|
| + // We should still see the original item with the icon.
|
| + ItemChooserDialog.ItemChooserRow expectedItem =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1);
|
| + assertEquals(itemAdapter.getItem(0), expectedItem);
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + public void testUpdateItemWithNoIconToIcon() throws InterruptedException {
|
| + mChooserDialog = createDialog(true /* usingIcon */);
|
| + Dialog dialog = mChooserDialog.getDialogForTesting();
|
| + assertTrue(dialog.isShowing());
|
| +
|
| + ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
|
| + final ListView items = (ListView) dialog.findViewById(R.id.items);
|
| +
|
| + // Initially the itemAdapter is empty.
|
| + assertTrue(itemAdapter.isEmpty());
|
| +
|
| + // Add item 1 with no icon.
|
| + ItemChooserDialog.ItemChooserRow item1WithNoIcon =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + mChooserDialog.addOrUpdateItem(item1WithNoIcon);
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(1, itemAdapter.getCount());
|
| + assertEquals(itemAdapter.getItem(0), item1WithNoIcon);
|
| +
|
| + // Add item 1 with icon.
|
| + ItemChooserDialog.ItemChooserRow item1 =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1);
|
| + mChooserDialog.addOrUpdateItem(item1);
|
| + assertEquals(1, itemAdapter.getCount());
|
| + ItemChooserDialog.ItemChooserRow expectedItem =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1);
|
| + assertEquals(itemAdapter.getItem(0), expectedItem);
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| public void testSelectAnItemAndRemoveAnotherItem() throws InterruptedException {
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
| @@ -284,6 +443,38 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| }
|
|
|
| @LargeTest
|
| + public void testUpdateItemWithNoIconToNoIcon() throws InterruptedException {
|
| + mChooserDialog = createDialog(true /* usingIcon */);
|
| + Dialog dialog = mChooserDialog.getDialogForTesting();
|
| + assertTrue(dialog.isShowing());
|
| +
|
| + ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
|
| + final ListView items = (ListView) dialog.findViewById(R.id.items);
|
| +
|
| + // Initially the itemAdapter is empty.
|
| + assertTrue(itemAdapter.isEmpty());
|
| +
|
| + // Add item 1 with no icon.
|
| + ItemChooserDialog.ItemChooserRow item1WithNoIcon =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + mChooserDialog.addOrUpdateItem(item1WithNoIcon);
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(1, itemAdapter.getCount());
|
| + assertEquals(itemAdapter.getItem(0), item1WithNoIcon);
|
| +
|
| + // Add item 1 with no icon again.
|
| + mChooserDialog.addOrUpdateItem(item1WithNoIcon);
|
| + assertEquals(1, itemAdapter.getCount());
|
| + ItemChooserDialog.ItemChooserRow expectedItem =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + assertEquals(itemAdapter.getItem(0), expectedItem);
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| public void testSelectAnItemAndRemoveTheSelectedItem() throws InterruptedException {
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
| @@ -315,6 +506,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| @LargeTest
|
| public void testAddOrUpdateItemAndRemoveItemFromList() throws InterruptedException {
|
| + mChooserDialog = createDialog(true /* usingIcon */);
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
|
|
| @@ -336,25 +528,28 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| // Add item 1.
|
| ItemChooserDialog.ItemChooserRow item1 =
|
| - new ItemChooserDialog.ItemChooserRow("key1", "desc1");
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1);
|
| mChooserDialog.addOrUpdateItem(item1);
|
| assertEquals(1, itemAdapter.getCount());
|
| assertEquals(itemAdapter.getItem(0), item1);
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
|
|
| - // Add item 1 with different description.
|
| - ItemChooserDialog.ItemChooserRow item1_again =
|
| - new ItemChooserDialog.ItemChooserRow("key1", "desc1_again");
|
| - mChooserDialog.addOrUpdateItem(item1_again);
|
| + // Add item 1 with different description and icon.
|
| + ItemChooserDialog.ItemChooserRow item1Again =
|
| + new ItemChooserDialog.ItemChooserRow("key1", "desc1_again", mTestIcon2);
|
| + mChooserDialog.addOrUpdateItem(item1Again);
|
| assertEquals(1, itemAdapter.getCount());
|
| - assertEquals(itemAdapter.getItem(0), item1_again);
|
| + assertEquals(itemAdapter.getItem(0), item1Again);
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
|
|
| // Add item 2.
|
| ItemChooserDialog.ItemChooserRow item2 =
|
| new ItemChooserDialog.ItemChooserRow("key2", "desc2");
|
| mChooserDialog.addOrUpdateItem(item2);
|
| assertEquals(2, itemAdapter.getCount());
|
| - assertEquals(itemAdapter.getItem(0), item1_again);
|
| + assertEquals(itemAdapter.getItem(0), item1Again);
|
| assertEquals(itemAdapter.getItem(1), item2);
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 1));
|
|
|
| mChooserDialog.setIdleState();
|
|
|
| @@ -365,7 +560,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| // Remove item 2.
|
| mChooserDialog.removeItemFromList(item2);
|
| assertEquals(1, itemAdapter.getCount());
|
| - assertEquals(itemAdapter.getItem(0), item1_again);
|
| + assertEquals(itemAdapter.getItem(0), item1Again);
|
|
|
| // The list should be visible with one item, it should not show
|
| // the empty view and the button should not be enabled.
|
| @@ -376,7 +571,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| assertFalse(button.isEnabled());
|
|
|
| // Remove item 1.
|
| - mChooserDialog.removeItemFromList(item1_again);
|
| + mChooserDialog.removeItemFromList(item1Again);
|
| assertTrue(itemAdapter.isEmpty());
|
|
|
| // Listview should now be showing empty, with an empty view visible
|
| @@ -392,6 +587,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| @LargeTest
|
| public void testAddItemWithSameNameToListAndRemoveItemFromList() throws InterruptedException {
|
| + mChooserDialog = createDialog(false /* usingIcon */);
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
|
|
|
|