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()); |