Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java

Issue 2431243003: bluetooth: Show connected icon for connected devices. (Closed)
Patch Set: Rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698