Commit 4953f4e0 authored by Jun Cai's avatar Jun Cai Committed by Commit Bot

Device API: Move ItemAdapter out of ItemChooserDialog

Per discussion at:
https://chromium-review.googlesource.com/c/chromium/src/+/1665909/4

This CL is a preliminary CL for the above CL. This CL moves ItemAdapter
out of the ItemChooserDialog so that it can also be used by
BluetoothScanningPermissionDialog in the above CL.

Bug: 960960
Change-Id: I9e08b7dc43b7de6b8c7ca55c3ed3cf4d1693ead7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1669908
Commit-Queue: Jun Cai <juncai@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarBecky Zhou <huayinz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#672236}
parent e78f3646
......@@ -37,8 +37,10 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/DefaultBrowserInfo.java",
"java/src/org/chromium/chrome/browser/DeferredStartupHandler.java",
"java/src/org/chromium/chrome/browser/DelayedScreenLockIntentHandler.java",
"java/src/org/chromium/chrome/browser/DeviceConditions.java",
"java/src/org/chromium/chrome/browser/DevToolsServer.java",
"java/src/org/chromium/chrome/browser/DeviceConditions.java",
"java/src/org/chromium/chrome/browser/DeviceItemAdapter.java",
"java/src/org/chromium/chrome/browser/DeviceItemRow.java",
"java/src/org/chromium/chrome/browser/FileProviderHelper.java",
"java/src/org/chromium/chrome/browser/GlobalDiscardableReferencePool.java",
"java/src/org/chromium/chrome/browser/InsetObserverView.java",
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.Nullable;
import android.text.TextUtils;
/**
* A class representing one data row in the dialog.
*/
public class DeviceItemRow {
public final String mKey;
public String mDescription;
public Drawable mIcon;
public String mIconDescription;
/**
* Creates a device item row which can be shown in the dialog.
*
* @param key Item unique identifier.
* @param description Item description.
* @param icon Item icon.
* @param iconDescription Item icon description.
*/
public DeviceItemRow(String key, String description, @Nullable Drawable icon,
@Nullable String iconDescription) {
mKey = key;
mDescription = description;
mIcon = icon;
mIconDescription = iconDescription;
}
/**
* Returns true if all parameters match the corresponding member.
*
* @param key Expected item unique identifier.
* @param description Expected item description.
* @param icon Expected item icon.
*/
public boolean hasSameContents(String key, String description, @Nullable Drawable icon,
@Nullable String iconDescription) {
if (!TextUtils.equals(mKey, key)) return false;
if (!TextUtils.equals(mDescription, description)) return false;
if (!TextUtils.equals(mIconDescription, iconDescription)) return false;
if (icon == null ^ mIcon == null) return false;
// On Android NMR1 and above, Drawable#getConstantState() always returns a different
// value, so it does not make sense to compare it.
// TODO(crbug.com/773043): Find a way to compare the icons.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1 && mIcon != null
&& !mIcon.getConstantState().equals(icon.getConstantState())) {
return false;
}
return true;
}
}
......@@ -255,7 +255,7 @@ public class BluetoothChooserDialogTest {
Assert.assertEquals(View.VISIBLE, items.getVisibility());
Assert.assertEquals(View.GONE, progress.getVisibility());
ItemChooserDialog.ItemAdapter itemAdapter =
DeviceItemAdapter itemAdapter =
mChooserDialog.mItemChooserDialog.getItemAdapterForTesting();
Assert.assertTrue(itemAdapter.getItem(0).hasSameContents(
"id-1", "Name 1", null /* icon */, null /* iconDescription */));
......
......@@ -372,7 +372,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
TestThreadUtils.runOnUiThreadBlocking(() -> {
Dialog dialog = mChooserDialog.getDialogForTesting();
Assert.assertTrue(dialog.isShowing());
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
{
// Add item 1 with icon.
......@@ -406,7 +406,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
TestThreadUtils.runOnUiThreadBlocking(() -> {
Dialog dialog = mChooserDialog.getDialogForTesting();
Assert.assertTrue(dialog.isShowing());
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
{
// Add item 1 to no icon.
......@@ -440,7 +440,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
TestThreadUtils.runOnUiThreadBlocking(() -> {
Dialog dialog = mChooserDialog.getDialogForTesting();
Assert.assertTrue(dialog.isShowing());
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
{
// Update item 1 with icon.
......@@ -581,7 +581,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
selectItem(dialog, 1, "key1", true);
TestThreadUtils.runOnUiThreadBlocking(() -> {
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
Assert.assertEquals("key1", itemAdapter.getSelectedItemKey());
mChooserDialog.setEnabled("key1", false);
// The selected item is disabled, so no item is selected.
......@@ -665,7 +665,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
selectItem(dialog, 2, "key2", true);
TestThreadUtils.runOnUiThreadBlocking(() -> {
final Button button = (Button) dialog.findViewById(R.id.positive);
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
Assert.assertTrue(button.isEnabled());
......@@ -699,7 +699,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
selectItem(dialog, 2, "key2", true);
TestThreadUtils.runOnUiThreadBlocking(() -> {
Button button = (Button) dialog.findViewById(R.id.positive);
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
Assert.assertTrue(button.isEnabled());
// Remove the selected item.
......@@ -723,7 +723,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
final ListView items = (ListView) dialog.findViewById(R.id.items);
final Button button = (Button) dialog.findViewById(R.id.positive);
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
final String nonExistentKey = "key";
// Initially the itemAdapter is empty.
......@@ -775,7 +775,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
final ListView items = (ListView) dialog.findViewById(R.id.items);
final Button button = (Button) dialog.findViewById(R.id.positive);
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
final String nonExistentKey = "key";
// Initially the itemAdapter is empty.
......@@ -842,7 +842,7 @@ public class ItemChooserDialogTest implements ItemChooserDialog.ItemSelectedCall
Dialog dialog = mChooserDialog.getDialogForTesting();
Assert.assertTrue(dialog.isShowing());
ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
DeviceItemAdapter itemAdapter = mChooserDialog.getItemAdapterForTesting();
// Add item 1.
mChooserDialog.addOrUpdateItem("key1", "desc1");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment