| 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 357e328d2d19b3a19fcfe3d19670e92dde14df62..637fc96cb091d68d8f3b4538b581911fe4d61e11 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.graphics.drawable.Drawable;
|
| +import android.support.graphics.drawable.VectorDrawableCompat;
|
| import android.test.UiThreadTest;
|
| import android.test.suitebuilder.annotation.LargeTest;
|
| import android.text.SpannableString;
|
| @@ -34,6 +36,9 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| String mLastSelectedId = "None";
|
|
|
| + Drawable mTestDrawable1;
|
| + Drawable mTestDrawable2;
|
| +
|
| public ItemChooserDialogTest() {
|
| super(ChromeActivity.class);
|
| }
|
| @@ -44,6 +49,11 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
| protected void setUp() throws Exception {
|
| super.setUp();
|
| mChooserDialog = createDialog();
|
| +
|
| + mTestDrawable1 = VectorDrawableCompat.create(
|
| + getActivity().getResources(), R.drawable.ic_bluetooth_connected_grey, null);
|
| + mTestDrawable2 = VectorDrawableCompat.create(
|
| + getActivity().getResources(), R.drawable.downloads_big, null);
|
| }
|
|
|
| @Override
|
| @@ -117,6 +127,19 @@ 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 {
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| @@ -298,6 +321,226 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi
|
|
|
| @LargeTest
|
| @UiThreadTest
|
| + public void testAddItemsWithNoIcons() throws InterruptedException {
|
| + 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.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1");
|
| + assertEquals(View.GONE, getIconVisibilityForItem(items, 0));
|
| +
|
| + // Add item 2 with no icon.
|
| + mChooserDialog.addOrUpdateItem("key2", "desc2");
|
| + assertEquals(View.GONE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testAddItemWithIconAfterItemWithNoIcon() throws InterruptedException {
|
| + 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.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1");
|
| + assertEquals(View.GONE, getIconVisibilityForItem(items, 0));
|
| +
|
| + // Add item 2 with icon.
|
| + mChooserDialog.addOrUpdateItem("key2", "desc2", mTestDrawable1, "icon desc");
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testAddItemWithNoIconAfterItemWithIcon() throws InterruptedException {
|
| + 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 icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable1, "icon desc");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + // Add item 2 with no icon.
|
| + mChooserDialog.addOrUpdateItem("key2", "desc2");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testRemoveItemWithIconNoItemsWithIconsLeft() throws InterruptedException {
|
| + 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 icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable1, "icon desc");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + // Add item 2 with no icon.
|
| + mChooserDialog.addOrUpdateItem("key2", "desc2");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.removeItemFromList("key1");
|
| + assertEquals(View.GONE, getIconVisibilityForItem(items, 0));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testRemoveItemWithIconOneItemWithIconLeft() throws InterruptedException {
|
| + 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 icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable1, "icon desc1");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| +
|
| + // Add item 2 with icon.
|
| + mChooserDialog.addOrUpdateItem("key2", "desc2", mTestDrawable2, "icon desc2");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 1));
|
| +
|
| + // Add item 3 with no icon.
|
| + mChooserDialog.addOrUpdateItem("key3", "desc3");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 1));
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 2));
|
| +
|
| + mChooserDialog.removeItemFromList("key1");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertEquals(View.INVISIBLE, getIconVisibilityForItem(items, 1));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testUpdateItemWithIconToNoIcon() throws InterruptedException {
|
| + 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 icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable1, "icon desc");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertTrue(itemAdapter.getItem(0).hasSameContents(
|
| + "key1", "desc1", mTestDrawable1, "icon desc"));
|
| +
|
| + // Update item 1 to no icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1");
|
| +
|
| + // We should still see the original item with the icon.
|
| + assertTrue(itemAdapter.getItem(0).hasSameContents(
|
| + "key1", "desc1", mTestDrawable1, "icon desc"));
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testUpdateItemWithNoIconToIcon() throws InterruptedException {
|
| + 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 to no icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1");
|
| + assertTrue(itemAdapter.getItem(0).hasSameContents("key1", "desc1"));
|
| +
|
| + // Update item 1 with different icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable1, "icon desc");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertTrue(itemAdapter.getItem(0).hasSameContents(
|
| + "key1", "desc1", mTestDrawable1, "icon desc"));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| + public void testUpdateItemIcon() throws InterruptedException {
|
| + 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());
|
| +
|
| + // Update item 1 with icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable1, "icon desc1");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertTrue(itemAdapter.getItem(0).hasSameContents(
|
| + "key1", "desc1", mTestDrawable1, "icon desc1"));
|
| +
|
| + // Update item 1 with icon.
|
| + mChooserDialog.addOrUpdateItem("key1", "desc1", mTestDrawable2, "icon desc2");
|
| + assertEquals(View.VISIBLE, getIconVisibilityForItem(items, 0));
|
| + assertTrue(itemAdapter.getItem(0).hasSameContents(
|
| + "key1", "desc1", mTestDrawable2, "icon desc2"));
|
| +
|
| + mChooserDialog.setIdleState();
|
| + mChooserDialog.dismiss();
|
| + }
|
| +
|
| + @LargeTest
|
| + @UiThreadTest
|
| public void testUpdateItemAndRemoveItemFromList() throws InterruptedException {
|
| Dialog dialog = mChooserDialog.getDialogForTesting();
|
| assertTrue(dialog.isShowing());
|
|
|