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

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

Issue 2271413002: bluetooth: Implement RSSI indicator on android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-impl-rssi-tx-power
Patch Set: Clean up Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser; 5 package org.chromium.chrome.browser;
6 6
7 import android.app.Dialog; 7 import android.app.Dialog;
8 import android.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 import android.text.SpannableString; 9 import android.text.SpannableString;
10 import android.view.View; 10 import android.view.View;
(...skipping 14 matching lines...) Expand all
25 /** 25 /**
26 * Tests for the ItemChooserDialog class. 26 * Tests for the ItemChooserDialog class.
27 */ 27 */
28 public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi vity> 28 public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi vity>
29 implements ItemChooserDialog.ItemSelectedCallback { 29 implements ItemChooserDialog.ItemSelectedCallback {
30 30
31 ItemChooserDialog mChooserDialog; 31 ItemChooserDialog mChooserDialog;
32 32
33 String mLastSelectedId = "None"; 33 String mLastSelectedId = "None";
34 34
35 private static final ItemChooserDialog.ItemChooserRowIcon TEST_ICON1 =
36 new ItemChooserDialog.ItemChooserRowIcon(
37 R.drawable.ic_signal_cellular_0_bar_grey600_24dp,
38 R.drawable.ic_signal_cellular_0_bar_white_24dp, "test icon1" );
39 private static final ItemChooserDialog.ItemChooserRowIcon TEST_ICON2 =
40 new ItemChooserDialog.ItemChooserRowIcon(
41 R.drawable.ic_signal_cellular_1_bar_grey600_24dp,
42 R.drawable.ic_signal_cellular_1_bar_white_24dp, "test icon2" );
43
35 public ItemChooserDialogTest() { 44 public ItemChooserDialogTest() {
36 super(ChromeActivity.class); 45 super(ChromeActivity.class);
37 } 46 }
38 47
39 // ChromeActivityTestCaseBase: 48 // ChromeActivityTestCaseBase:
40 49
41 @Override 50 @Override
42 protected void setUp() throws Exception { 51 protected void setUp() throws Exception {
43 super.setUp(); 52 super.setUp();
44 mChooserDialog = createDialog(); 53 mChooserDialog = createDialog();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 117
109 CriteriaHelper.pollUiThread( 118 CriteriaHelper.pollUiThread(
110 Criteria.equals(expectedItemId, new Callable<String>() { 119 Criteria.equals(expectedItemId, new Callable<String>() {
111 @Override 120 @Override
112 public String call() { 121 public String call() {
113 return mLastSelectedId; 122 return mLastSelectedId;
114 } 123 }
115 })); 124 }));
116 } 125 }
117 126
127 private int getImageContainerVisibilityForItem(ListView items, int pos) {
128 final int first = items.getFirstVisiblePosition();
129 final int last = first + items.getChildCount() - 1;
juncai 2016/09/12 20:05:49 Maybe use: getLastVisiblePosition() here for |last
ortuno 2016/09/13 03:00:45 Done.
130
131 View item;
132 if (pos < first || pos > last) {
133 item = items.getAdapter().getView(pos, null, items);
134 } else {
135 final int visiblePos = pos - first;
136 item = items.getChildAt(visiblePos);
137 }
138 return item.findViewById(R.id.imageContainer).getVisibility();
139 }
140
118 @SmallTest 141 @SmallTest
119 public void testSimpleItemSelection() throws InterruptedException { 142 public void testSimpleItemSelection() throws InterruptedException {
120 Dialog dialog = mChooserDialog.getDialogForTesting(); 143 Dialog dialog = mChooserDialog.getDialogForTesting();
121 assertTrue(dialog.isShowing()); 144 assertTrue(dialog.isShowing());
122 145
123 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans) 146 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans)
124 dialog.findViewById(R.id.status); 147 dialog.findViewById(R.id.status);
125 final ListView items = (ListView) dialog.findViewById(R.id.items); 148 final ListView items = (ListView) dialog.findViewById(R.id.items);
126 final Button button = (Button) dialog.findViewById(R.id.positive); 149 final Button button = (Button) dialog.findViewById(R.id.positive);
127 150
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 // Disable one item and try to select it. 218 // Disable one item and try to select it.
196 mChooserDialog.setEnabled("key", false); 219 mChooserDialog.setEnabled("key", false);
197 selectItem(dialog, 1, "None", false); 220 selectItem(dialog, 1, "None", false);
198 // The other is still selectable. 221 // The other is still selectable.
199 selectItem(dialog, 2, "key2", true); 222 selectItem(dialog, 2, "key2", true);
200 223
201 mChooserDialog.dismiss(); 224 mChooserDialog.dismiss();
202 } 225 }
203 226
204 @SmallTest 227 @SmallTest
228 public void testUpdateItemWithIconToNoIcon() throws InterruptedException {
229 Dialog dialog = mChooserDialog.getDialogForTesting();
230 assertTrue(dialog.isShowing());
231
232 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
233 final ListView items = (ListView) dialog.findViewById(R.id.items);
234
235 // Initially the itemAdapter is empty.
236 assertTrue(itemAdapter.isEmpty());
237
238 // Add item 1.
239 ItemChooserDialog.ItemChooserRow item1 =
240 new ItemChooserDialog.ItemChooserRow("key1", "desc1", TEST_ICON1 );
241 mChooserDialog.addOrUpdateItem(item1);
242 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
243 assertEquals(1, itemAdapter.getCount());
244 assertEquals(itemAdapter.getItem(0), item1);
245
246 // Add item 1 with no icon.
247 ItemChooserDialog.ItemChooserRow item1WithNoIcon =
248 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
249 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
250 assertEquals(1, itemAdapter.getCount());
251 // We should still see the original item with the icon.
252 ItemChooserDialog.ItemChooserRow expectedItem =
253 new ItemChooserDialog.ItemChooserRow("key1", "desc1", TEST_ICON1 );
254 assertEquals(itemAdapter.getItem(0), expectedItem);
255 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
256
257 mChooserDialog.setIdleState();
258 mChooserDialog.dismiss();
259 }
260
261 @SmallTest
262 public void testUpdateItemWithNoIconToIcon() throws InterruptedException {
263 Dialog dialog = mChooserDialog.getDialogForTesting();
264 assertTrue(dialog.isShowing());
265
266 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
267 final ListView items = (ListView) dialog.findViewById(R.id.items);
268
269 // Initially the itemAdapter is empty.
270 assertTrue(itemAdapter.isEmpty());
271
272 // Add item 1 with no icon.
273 ItemChooserDialog.ItemChooserRow item1WithNoIcon =
274 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
275 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
276 assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 0));
277 assertEquals(1, itemAdapter.getCount());
278 assertEquals(itemAdapter.getItem(0), item1WithNoIcon);
279
280 // Add item 1 with icon.
281 ItemChooserDialog.ItemChooserRow item1 =
282 new ItemChooserDialog.ItemChooserRow("key1", "desc1", TEST_ICON1 );
283 mChooserDialog.addOrUpdateItem(item1);
284 assertEquals(1, itemAdapter.getCount());
285 ItemChooserDialog.ItemChooserRow expectedItem =
286 new ItemChooserDialog.ItemChooserRow("key1", "desc1", TEST_ICON1 );
287 assertEquals(itemAdapter.getItem(0), expectedItem);
288 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
289
290 mChooserDialog.setIdleState();
291 mChooserDialog.dismiss();
292 }
293
294 @SmallTest
295 public void testUpdateItemWithNoIconToNoIcon() throws InterruptedException {
296 Dialog dialog = mChooserDialog.getDialogForTesting();
297 assertTrue(dialog.isShowing());
298
299 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
300 final ListView items = (ListView) dialog.findViewById(R.id.items);
301
302 // Initially the itemAdapter is empty.
303 assertTrue(itemAdapter.isEmpty());
304
305 // Add item 1 with no icon.
306 ItemChooserDialog.ItemChooserRow item1WithNoIcon =
307 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
308 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
309 assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 0));
310 assertEquals(1, itemAdapter.getCount());
311 assertEquals(itemAdapter.getItem(0), item1WithNoIcon);
312
313 // Add item 1 with no icon again.
314 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
315 assertEquals(1, itemAdapter.getCount());
316 ItemChooserDialog.ItemChooserRow expectedItem =
317 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
318 assertEquals(itemAdapter.getItem(0), expectedItem);
319 assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 0));
320
321 mChooserDialog.setIdleState();
322 mChooserDialog.dismiss();
323 }
324
325 @SmallTest
205 public void testAddOrUpdateItemAndRemoveItemFromList() throws InterruptedExc eption { 326 public void testAddOrUpdateItemAndRemoveItemFromList() throws InterruptedExc eption {
206 Dialog dialog = mChooserDialog.getDialogForTesting(); 327 Dialog dialog = mChooserDialog.getDialogForTesting();
207 assertTrue(dialog.isShowing()); 328 assertTrue(dialog.isShowing());
208 329
209 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans) 330 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans)
210 dialog.findViewById(R.id.status); 331 dialog.findViewById(R.id.status);
211 final ListView items = (ListView) dialog.findViewById(R.id.items); 332 final ListView items = (ListView) dialog.findViewById(R.id.items);
212 final Button button = (Button) dialog.findViewById(R.id.positive); 333 final Button button = (Button) dialog.findViewById(R.id.positive);
213 334
214 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting(); 335 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
215 ItemChooserDialog.ItemChooserRow nonExistentItem = 336 ItemChooserDialog.ItemChooserRow nonExistentItem =
216 new ItemChooserDialog.ItemChooserRow("key", "key"); 337 new ItemChooserDialog.ItemChooserRow("key", "key");
217 338
218 // Initially the itemAdapter is empty. 339 // Initially the itemAdapter is empty.
219 assertTrue(itemAdapter.isEmpty()); 340 assertTrue(itemAdapter.isEmpty());
220 341
221 // Try removing an item from an empty itemAdapter. 342 // Try removing an item from an empty itemAdapter.
222 mChooserDialog.removeItemFromList(nonExistentItem); 343 mChooserDialog.removeItemFromList(nonExistentItem);
223 assertTrue(itemAdapter.isEmpty()); 344 assertTrue(itemAdapter.isEmpty());
224 345
225 // Add item 1. 346 // Add item 1.
226 ItemChooserDialog.ItemChooserRow item1 = 347 ItemChooserDialog.ItemChooserRow item1 =
227 new ItemChooserDialog.ItemChooserRow("key1", "desc1"); 348 new ItemChooserDialog.ItemChooserRow("key1", "desc1", TEST_ICON1 );
228 mChooserDialog.addOrUpdateItem(item1); 349 mChooserDialog.addOrUpdateItem(item1);
229 assertEquals(1, itemAdapter.getCount()); 350 assertEquals(1, itemAdapter.getCount());
230 assertEquals(itemAdapter.getItem(0), item1); 351 assertEquals(itemAdapter.getItem(0), item1);
352 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
231 353
232 // Add item 1 with different description. 354 // Add item 1 with different description and icon.
233 ItemChooserDialog.ItemChooserRow item1_again = 355 ItemChooserDialog.ItemChooserRow item1Again =
234 new ItemChooserDialog.ItemChooserRow("key1", "desc1_again"); 356 new ItemChooserDialog.ItemChooserRow("key1", "desc1_again", TEST _ICON2);
235 mChooserDialog.addOrUpdateItem(item1_again); 357 mChooserDialog.addOrUpdateItem(item1Again);
236 assertEquals(1, itemAdapter.getCount()); 358 assertEquals(1, itemAdapter.getCount());
237 assertEquals(itemAdapter.getItem(0), item1_again); 359 assertEquals(itemAdapter.getItem(0), item1Again);
360 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
238 361
239 // Add item 2. 362 // Add item 2.
240 ItemChooserDialog.ItemChooserRow item2 = 363 ItemChooserDialog.ItemChooserRow item2 =
241 new ItemChooserDialog.ItemChooserRow("key2", "desc2"); 364 new ItemChooserDialog.ItemChooserRow("key2", "desc2");
242 mChooserDialog.addOrUpdateItem(item2); 365 mChooserDialog.addOrUpdateItem(item2);
243 assertEquals(2, itemAdapter.getCount()); 366 assertEquals(2, itemAdapter.getCount());
244 assertEquals(itemAdapter.getItem(0), item1_again); 367 assertEquals(itemAdapter.getItem(0), item1Again);
245 assertEquals(itemAdapter.getItem(1), item2); 368 assertEquals(itemAdapter.getItem(1), item2);
369 assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 1));
246 370
247 mChooserDialog.setIdleState(); 371 mChooserDialog.setIdleState();
248 372
249 // Try removing an item that doesn't exist. 373 // Try removing an item that doesn't exist.
250 mChooserDialog.removeItemFromList(nonExistentItem); 374 mChooserDialog.removeItemFromList(nonExistentItem);
251 assertEquals(2, itemAdapter.getCount()); 375 assertEquals(2, itemAdapter.getCount());
252 376
253 // Remove item 2. 377 // Remove item 2.
254 mChooserDialog.removeItemFromList(item2); 378 mChooserDialog.removeItemFromList(item2);
255 assertEquals(1, itemAdapter.getCount()); 379 assertEquals(1, itemAdapter.getCount());
256 assertEquals(itemAdapter.getItem(0), item1_again); 380 assertEquals(itemAdapter.getItem(0), item1Again);
257 381
258 // The list should be visible with one item, it should not show 382 // The list should be visible with one item, it should not show
259 // the empty view and the button should not be enabled. 383 // the empty view and the button should not be enabled.
260 // The chooser should show a status message at the bottom. 384 // The chooser should show a status message at the bottom.
261 assertEquals(View.VISIBLE, items.getVisibility()); 385 assertEquals(View.VISIBLE, items.getVisibility());
262 assertEquals(View.GONE, items.getEmptyView().getVisibility()); 386 assertEquals(View.GONE, items.getEmptyView().getVisibility());
263 assertEquals("statusIdleSomeFound", statusView.getText().toString()); 387 assertEquals("statusIdleSomeFound", statusView.getText().toString());
264 assertFalse(button.isEnabled()); 388 assertFalse(button.isEnabled());
265 389
266 // Remove item 1. 390 // Remove item 1.
267 mChooserDialog.removeItemFromList(item1_again); 391 mChooserDialog.removeItemFromList(item1Again);
268 assertTrue(itemAdapter.isEmpty()); 392 assertTrue(itemAdapter.isEmpty());
269 393
270 // Listview should now be showing empty, with an empty view visible 394 // Listview should now be showing empty, with an empty view visible
271 // and the button should not be enabled. 395 // and the button should not be enabled.
272 // The chooser should show a status message at the bottom. 396 // The chooser should show a status message at the bottom.
273 assertEquals(View.GONE, items.getVisibility()); 397 assertEquals(View.GONE, items.getVisibility());
274 assertEquals(View.VISIBLE, items.getEmptyView().getVisibility()); 398 assertEquals(View.VISIBLE, items.getEmptyView().getVisibility());
275 assertEquals("statusIdleNoneFound", statusView.getText().toString()); 399 assertEquals("statusIdleNoneFound", statusView.getText().toString());
276 assertFalse(button.isEnabled()); 400 assertFalse(button.isEnabled());
277 401
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 472
349 // 1460 * .3 is 438, which rounds above the maximum height. 473 // 1460 * .3 is 438, which rounds above the maximum height.
350 assertEquals(408, ItemChooserDialog.getListHeight(1460, 1.0f)); 474 assertEquals(408, ItemChooserDialog.getListHeight(1460, 1.0f));
351 475
352 // 1100px is 500dp at a density of 2.2. 500 * .3 is 150dp, which is 48dp * 476 // 1100px is 500dp at a density of 2.2. 500 * .3 is 150dp, which is 48dp *
353 // 3.125. 48dp * 3.5 is 168dp. 168dp * 2.2px/dp is 369.6, which rounds t o 477 // 3.125. 48dp * 3.5 is 168dp. 168dp * 2.2px/dp is 369.6, which rounds t o
354 // 370. 478 // 370.
355 assertEquals(370, ItemChooserDialog.getListHeight(1100, 2.2f)); 479 assertEquals(370, ItemChooserDialog.getListHeight(1100, 2.2f));
356 } 480 }
357 } 481 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698