Chromium Code Reviews| 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 cdbc4f35b63fc39fff040e7c86b34004a0ef16c9..7f59b7ae9d208431bd7c8d7e92486495b1d91b51 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_grey600_24dp, null /* theme */), |
| + VectorDrawableCompat.create(resources, |
| + R.drawable.ic_signal_cellular_0_bar_white_24dp, 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_grey600_24dp, null /* theme */), |
| + VectorDrawableCompat.create(resources, |
| + R.drawable.ic_signal_cellular_1_bar_white_24dp, 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 getImageContainerVisibilityForItem(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.imageContainer).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,7 +239,163 @@ 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, getImageContainerVisibilityForItem(items, 0)); |
| + |
| + ItemChooserDialog.ItemChooserRow item2 = |
| + new ItemChooserDialog.ItemChooserRow("key2", "desc2", mTestIcon1); |
| + mChooserDialog.addOrUpdateItem(item2); |
| + assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 1)); |
| + |
| + mChooserDialog.setIdleState(); |
| + mChooserDialog.dismiss(); |
| + } |
| + |
| + @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, getImageContainerVisibilityForItem(items, 0)); |
| + |
| + ItemChooserDialog.ItemChooserRow item2 = |
| + new ItemChooserDialog.ItemChooserRow("key2", "desc2", mTestIcon1); |
| + mChooserDialog.addOrUpdateItem(item2); |
| + assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 1)); |
| + |
| + mChooserDialog.setIdleState(); |
| + mChooserDialog.dismiss(); |
| + } |
| + |
| + @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, getImageContainerVisibilityForItem(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, getImageContainerVisibilityForItem(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, getImageContainerVisibilityForItem(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, getImageContainerVisibilityForItem(items, 0)); |
| + |
| + mChooserDialog.setIdleState(); |
| + mChooserDialog.dismiss(); |
| + } |
| + |
| + @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, getImageContainerVisibilityForItem(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, getImageContainerVisibilityForItem(items, 0)); |
| + |
| + mChooserDialog.setIdleState(); |
| + mChooserDialog.dismiss(); |
| + } |
| + |
|
juncai
2016/09/26 18:49:01
Maybe add some test code to test different color i
|
| + @LargeTest |
| public void testAddOrUpdateItemAndRemoveItemFromList() throws InterruptedException { |
| + mChooserDialog = createDialog(true /* usingIcon */); |
| Dialog dialog = mChooserDialog.getDialogForTesting(); |
| assertTrue(dialog.isShowing()); |
| @@ -225,25 +417,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, getImageContainerVisibilityForItem(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, getImageContainerVisibilityForItem(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, getImageContainerVisibilityForItem(items, 1)); |
| mChooserDialog.setIdleState(); |
| @@ -254,7 +449,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. |
| @@ -265,7 +460,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 |
| @@ -281,6 +476,7 @@ public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi |
| @LargeTest |
| public void testAddItemWithSameNameToListAndRemoveItemFromList() throws InterruptedException { |
| + mChooserDialog = createDialog(false /* usingIcon */); |
| Dialog dialog = mChooserDialog.getDialogForTesting(); |
| assertTrue(dialog.isShowing()); |