From: Fan Zhang Date: Fri, 3 Aug 2018 16:13:53 +0000 (-0700) Subject: Remove custom tintable check. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=60243e6873c6da630af68414eac243614a0bf24d;p=android-x86%2Fpackages-apps-Settings.git Remove custom tintable check. Make a bunch keys private in tile and DashboardCategory Bug: 77600770 Test: robotests Change-Id: I4693e6bb71bd50cc664f578c7f8e25e67da20b67 --- diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index f95a303ead..0df0e6fa48 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -42,6 +42,16 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.Toolbar; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import androidx.preference.Preference; +import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.PreferenceManager; + import com.android.internal.util.ArrayUtils; import com.android.settings.Settings.WifiSettingsActivity; import com.android.settings.applications.manageapplications.ManageApplications; @@ -65,16 +75,6 @@ import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.List; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import androidx.preference.Preference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - public class SettingsActivity extends SettingsBaseActivity implements PreferenceManager.OnPreferenceTreeClickListener, diff --git a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java index 709066aac6..14d2fd3b72 100644 --- a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java +++ b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java @@ -126,7 +126,7 @@ public class AccountDetailDashboardFragment extends DashboardFragment { if (mAccountType == null) { return false; } - final Bundle metadata = tile.metaData; + final Bundle metadata = tile.getMetaData(); if (metadata == null) { return false; } diff --git a/src/com/android/settings/dashboard/CategoryManager.java b/src/com/android/settings/dashboard/CategoryManager.java index 2d830def20..baabe28ffa 100644 --- a/src/com/android/settings/dashboard/CategoryManager.java +++ b/src/com/android/settings/dashboard/CategoryManager.java @@ -153,7 +153,7 @@ public class CategoryManager { boolean useNewKey = false; boolean useOldKey = false; for (Tile tile : tiles) { - if (CategoryKey.KEY_COMPAT_MAP.containsKey(tile.category)) { + if (CategoryKey.KEY_COMPAT_MAP.containsKey(tile.getCategory())) { useOldKey = true; } else { useNewKey = true; @@ -163,12 +163,13 @@ public class CategoryManager { // Uses only old key, map them to new keys one by one. if (useOldKey && !useNewKey) { for (Tile tile : tiles) { - final String newCategoryKey = CategoryKey.KEY_COMPAT_MAP.get(tile.category); - tile.category = newCategoryKey; + final String newCategoryKey = + CategoryKey.KEY_COMPAT_MAP.get(tile.getCategory()); + tile.setCategory(newCategoryKey); // move tile to new category. DashboardCategory newCategory = categoryByKeyMap.get(newCategoryKey); if (newCategory == null) { - newCategory = new DashboardCategory(); + newCategory = new DashboardCategory(newCategoryKey); categoryByKeyMap.put(newCategoryKey, newCategory); } newCategory.addTile(tile); diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index d256a5d8b7..fc1a129c1b 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -321,8 +321,9 @@ public class DashboardAdapter extends RecyclerView.Adapter { final Map providerMap = new ArrayMap<>(); - final String uri = tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI); + final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_SUMMARY_URI); final String summary = TileUtils.getTextFromUri( mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY); ThreadUtils.postOnMainThread(() -> preference.setSummary(summary)); @@ -241,8 +241,8 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { final Icon tileIcon = tile.getIcon(mContext); if (tileIcon != null) { preference.setIcon(tileIcon.loadDrawable(preference.getContext())); - } else if (tile.metaData != null - && tile.metaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) { + } else if (tile.getMetaData() != null + && tile.getMetaData().containsKey(META_DATA_PREFERENCE_ICON_URI)) { ThreadUtils.postOnBackgroundThread(() -> { String packageName = null; if (tile.intent != null) { @@ -254,7 +254,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } } final Map providerMap = new ArrayMap<>(); - final String uri = tile.metaData.getString(META_DATA_PREFERENCE_ICON_URI); + final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_ICON_URI); final Pair iconInfo = TileUtils.getIconFromUri( mContext, packageName, uri, providerMap); if (iconInfo == null) { diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index b24164f5b4..acf885dee0 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -18,6 +18,7 @@ package com.android.settings.dashboard; import android.app.Activity; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.drawable.Icon; import android.os.Bundle; import android.text.TextUtils; import android.util.ArrayMap; @@ -40,7 +41,6 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; -import com.android.settingslib.drawer.TileUtils; import java.util.ArrayList; import java.util.Collection; @@ -254,24 +254,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment return true; } - @VisibleForTesting - boolean tintTileIcon(Tile tile) { - final Context context = getContext(); - if (tile.getIcon(context) == null) { - return false; - } - // First check if the tile has set the icon tintable metadata. - final Bundle metadata = tile.metaData; - if (metadata != null - && metadata.containsKey(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE)) { - return metadata.getBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE); - } - final String pkgName = context.getPackageName(); - // If this drawable is coming from outside Settings, tint it to match the color. - return pkgName != null && tile.intent != null - && !pkgName.equals(tile.intent.getComponent().getPackageName()); - } - /** * Displays resource based tiles. */ @@ -370,8 +352,11 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment if (!displayTile(tile)) { continue; } - if (tintTileIcon(tile)) { - tile.getIcon(context).setTint(tintColor); + if (tile.isIconTintable(context)) { + final Icon icon = tile.getIcon(context); + if (icon != null) { + icon.setTint(tintColor); + } } if (mDashboardTilePrefKeys.contains(key)) { // Have the key already, will rebind. diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java index ffd6246485..d8694f2bac 100644 --- a/src/com/android/settings/dashboard/SummaryLoader.java +++ b/src/com/android/settings/dashboard/SummaryLoader.java @@ -30,6 +30,8 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; +import androidx.annotation.VisibleForTesting; + import com.android.settings.SettingsActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.drawer.DashboardCategory; @@ -39,8 +41,6 @@ import com.android.settingslib.utils.ThreadUtils; import java.lang.reflect.Field; import java.util.List; -import androidx.annotation.VisibleForTesting; - public class SummaryLoader { private static final boolean DEBUG = DashboardSummary.DEBUG; private static final String TAG = "SummaryLoader"; @@ -160,7 +160,7 @@ public class SummaryLoader { // TODO: Load summary indirectly. return null; } - Bundle metaData = getMetaData(tile); + final Bundle metaData = tile.getMetaData(); if (metaData == null) { if (DEBUG) Log.d(TAG, "No metadata specified for " + tile.intent.getComponent()); return null; @@ -187,10 +187,6 @@ public class SummaryLoader { return null; } - private Bundle getMetaData(Tile tile) { - return tile.metaData; - } - /** * Registers a receiver and automatically unregisters it when the activity is stopping. * This ensures that the receivers are unregistered immediately, since most summary loader diff --git a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java index 97f724050d..26d15f5c53 100644 --- a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java +++ b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java @@ -167,8 +167,8 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider { // Build parent-child class pairs for all children listed under this key. for (Tile tile : category.getTiles()) { String childClass = null; - if (tile.metaData != null) { - childClass = tile.metaData.getString( + if (tile.getMetaData() != null) { + childClass = tile.getMetaData().getString( SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS); } if (childClass == null) { diff --git a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java index 33ac5b6fab..88ed112c70 100644 --- a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java @@ -57,10 +57,13 @@ public class AccountDetailDashboardFragmentTest { private AccountDetailDashboardFragment mFragment; private Context mContext; + private ActivityInfo mActivityInfo; @Before public void setUp() { mContext = RuntimeEnvironment.application; + mActivityInfo = new ActivityInfo(); + mActivityInfo.metaData = new Bundle(); final Bundle args = new Bundle(); args.putParcelable(METADATA_USER_HANDLE, UserHandle.CURRENT); @@ -79,32 +82,26 @@ public class AccountDetailDashboardFragmentTest { @Test public void refreshDashboardTiles_HasAccountType_shouldDisplay() { - final Tile tile = new Tile(new ActivityInfo()); - final Bundle metaData = new Bundle(); - metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL); - metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc"); - tile.metaData = metaData; + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL); + mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL); + mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc"); assertThat(mFragment.displayTile(tile)).isTrue(); } @Test public void refreshDashboardTiles_NoAccountType_shouldNotDisplay() { - final Tile tile = new Tile(new ActivityInfo()); - final Bundle metaData = new Bundle(); - metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL); - tile.metaData = metaData; + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL); + mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL); assertThat(mFragment.displayTile(tile)).isFalse(); } @Test public void refreshDashboardTiles_OtherAccountType_shouldNotDisplay() { - final Tile tile = new Tile(new ActivityInfo()); - final Bundle metaData = new Bundle(); - metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL); - metaData.putString(METADATA_ACCOUNT_TYPE, "com.other"); - tile.metaData = metaData; + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL); + mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL); + mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.other"); assertThat(mFragment.displayTile(tile)).isFalse(); } @@ -118,12 +115,12 @@ public class AccountDetailDashboardFragmentTest { when(packageManager.resolveActivity(any(Intent.class), anyInt())) .thenReturn(mock(ResolveInfo.class)); - final Tile tile = new Tile(new ActivityInfo()); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL); tile.key = "key"; - tile.metaData = new Bundle(); - tile.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT); - tile.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc"); - tile.metaData.putString("com.android.settings.intent.action", Intent.ACTION_ASSIST); + mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT); + mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc"); + mActivityInfo.metaData.putString("com.android.settings.intent.action", + Intent.ACTION_ASSIST); tile.intent = new Intent(); tile.userHandle = null; mFragment.displayTile(tile); diff --git a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java b/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java index 3bb4a654f4..5b658a98ff 100644 --- a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java @@ -16,6 +16,8 @@ package com.android.settings.dashboard; +import static com.android.settingslib.drawer.CategoryKey.CATEGORY_HOMEPAGE; + import static com.google.common.truth.Truth.assertThat; import android.content.ComponentName; @@ -65,11 +67,9 @@ public class CategoryManagerTest { @Test public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForNewKeys() { - final Tile tile1 = new Tile(mActivityInfo); - final Tile tile2 = new Tile(mActivityInfo); - tile1.category = CategoryKey.CATEGORY_ACCOUNT; - tile2.category = CategoryKey.CATEGORY_ACCOUNT; - final DashboardCategory category = new DashboardCategory(); + final Tile tile1 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT); + final Tile tile2 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT); + final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_ACCOUNT); category.addTile(tile1); category.addTile(tile2); mCategoryByKeyMap.put(CategoryKey.CATEGORY_ACCOUNT, category); @@ -84,14 +84,12 @@ public class CategoryManagerTest { @Test public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForMixedKeys() { - final Tile tile1 = new Tile(mActivityInfo); - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile1 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT); final String oldCategory = "com.android.settings.category.wireless"; - tile1.category = CategoryKey.CATEGORY_ACCOUNT; - tile2.category = oldCategory; - final DashboardCategory category1 = new DashboardCategory(); + final Tile tile2 = new Tile(mActivityInfo, oldCategory); + final DashboardCategory category1 = new DashboardCategory(CategoryKey.CATEGORY_ACCOUNT); category1.addTile(tile1); - final DashboardCategory category2 = new DashboardCategory(); + final DashboardCategory category2 = new DashboardCategory(oldCategory); category2.addTile(tile2); mCategoryByKeyMap.put(CategoryKey.CATEGORY_ACCOUNT, category1); mCategoryByKeyMap.put(oldCategory, category2); @@ -108,10 +106,10 @@ public class CategoryManagerTest { @Test public void backwardCompatCleanupForCategory_shouldChangeCategoryForOldKeys() { - final Tile tile1 = new Tile(mActivityInfo); final String oldCategory = "com.android.settings.category.wireless"; - tile1.category = oldCategory; - final DashboardCategory category1 = new DashboardCategory(); + final Tile tile1 = new Tile(mActivityInfo, oldCategory); + tile1.setCategory(oldCategory); + final DashboardCategory category1 = new DashboardCategory(oldCategory); category1.addTile(tile1); mCategoryByKeyMap.put(oldCategory, category1); mTileByComponentCache.put(new Pair<>("PACKAGE", "CLASS1"), tile1); @@ -131,23 +129,23 @@ public class CategoryManagerTest { public void sortCategories_singlePackage_shouldReorderBasedOnPriority() { // Create some fake tiles that are not sorted. final String testPackage = "com.android.test"; - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile1.priority = 100; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage, "class2")); tile2.priority = 50; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage, "class3")); tile3.priority = 200; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); // Sort their priorities mCategoryManager.sortCategories(ShadowApplication.getInstance().getApplicationContext(), @@ -164,23 +162,23 @@ public class CategoryManagerTest { // Create some fake tiles that are not sorted. final String testPackage1 = "com.android.test1"; final String testPackage2 = "com.android.test2"; - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage2, "class1")); tile1.priority = 100; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage1, "class2")); tile2.priority = 100; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage1, "class3")); tile3.priority = 50; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); // Sort their priorities mCategoryManager.sortCategories(mContext, mCategoryByKeyMap); @@ -195,23 +193,23 @@ public class CategoryManagerTest { public void sortCategories_internalPackageTiles_shouldSkipTileForInternalPackage() { // Create some fake tiles that are not sorted. final String testPackage = mContext.getPackageName(); - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile1.priority = 100; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage, "class2")); tile2.priority = 100; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage, "class3")); tile3.priority = 50; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); // Sort their priorities mCategoryManager.sortCategories(mContext, mCategoryByKeyMap); @@ -227,24 +225,24 @@ public class CategoryManagerTest { // Inject one external tile among internal tiles. final String testPackage = mContext.getPackageName(); final String testPackage2 = "com.google.test2"; - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile1.priority = 2; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage, "class2")); tile2.priority = 1; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage2, "class0")); tile3.priority = 0; - final Tile tile4 = new Tile(mActivityInfo); + final Tile tile4 = new Tile(mActivityInfo, category.key); tile4.intent = new Intent().setComponent(new ComponentName(testPackage, "class3")); tile4.priority = -1; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); category.addTile(tile4); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); // Sort their priorities mCategoryManager.sortCategories(mContext, mCategoryByKeyMap); @@ -262,20 +260,20 @@ public class CategoryManagerTest { final String testPackage = mContext.getPackageName(); final String testPackage2 = "com.google.test2"; final String testPackage3 = "com.abcde.test3"; - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage2, "class1")); tile1.priority = 1; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage, "class2")); tile2.priority = 1; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage3, "class3")); tile3.priority = 1; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); // Sort their priorities mCategoryManager.sortCategories(mContext, mCategoryByKeyMap); @@ -290,23 +288,23 @@ public class CategoryManagerTest { public void filterTiles_noDuplicate_noChange() { // Create some unique tiles final String testPackage = mContext.getPackageName(); - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile1.priority = 100; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage, "class2")); tile2.priority = 100; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage, "class3")); tile3.priority = 50; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); mCategoryManager.filterDuplicateTiles(mCategoryByKeyMap); @@ -317,23 +315,23 @@ public class CategoryManagerTest { public void filterTiles_hasDuplicate_shouldOnlyKeepUniqueTiles() { // Create tiles pointing to same intent. final String testPackage = mContext.getPackageName(); - final DashboardCategory category = new DashboardCategory(); - final Tile tile1 = new Tile(mActivityInfo); + final DashboardCategory category = new DashboardCategory(CATEGORY_HOMEPAGE); + final Tile tile1 = new Tile(mActivityInfo, category.key); tile1.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile1.priority = 100; - final Tile tile2 = new Tile(mActivityInfo); + final Tile tile2 = new Tile(mActivityInfo, category.key); tile2.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile2.priority = 100; - final Tile tile3 = new Tile(mActivityInfo); + final Tile tile3 = new Tile(mActivityInfo, category.key); tile3.intent = new Intent().setComponent(new ComponentName(testPackage, "class1")); tile3.priority = 50; category.addTile(tile1); category.addTile(tile2); category.addTile(tile3); - mCategoryByKeyMap.put(CategoryKey.CATEGORY_HOMEPAGE, category); + mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category); mCategoryManager.filterDuplicateTiles(mCategoryByKeyMap); diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java index c82343325b..95eba63c35 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java @@ -50,6 +50,7 @@ import com.android.settings.dashboard.suggestions.SuggestionAdapter; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import com.android.settingslib.utils.IconCache; @@ -91,6 +92,7 @@ public class DashboardAdapterTest { MockitoAnnotations.initMocks(this); mFactory = FakeFeatureFactory.setupForTest(); mActivityInfo = new ActivityInfo(); + mActivityInfo.metaData = new Bundle(); when(mFactory.dashboardFeatureProvider.shouldTintIcon()).thenReturn(true); when(mContext.getSystemService(Context.WINDOW_SERVICE)).thenReturn(mWindowManager); @@ -201,7 +203,7 @@ public class DashboardAdapterTest { final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); final DashboardAdapter.DashboardItemHolder holder = new DashboardAdapter.DashboardItemHolder(view); - final Tile tile = spy(new Tile(mActivityInfo)); + final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); doReturn(Icon.createWithResource(context, R.drawable.ic_settings)) .when(tile).getIcon(context); final IconCache iconCache = mock(IconCache.class); @@ -222,7 +224,7 @@ public class DashboardAdapterTest { final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); final DashboardAdapter.DashboardItemHolder holder = new DashboardAdapter.DashboardItemHolder(view); - final Tile tile = spy(new Tile(mActivityInfo)); + final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); final Icon icon = Icon.createWithResource(context, R.drawable.ic_settings); doReturn(icon).when(tile).getIcon(context); @@ -245,9 +247,8 @@ public class DashboardAdapterTest { final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); final DashboardAdapter.DashboardItemHolder holder = new DashboardAdapter.DashboardItemHolder(view); - final Tile tile = spy(new Tile(mActivityInfo)); - tile.metaData = new Bundle(); - tile.metaData.putInt(TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, + final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); + tile.getMetaData().putInt(TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, R.color.memory_critical); doReturn(Icon.createWithResource(context, R.drawable.ic_settings)) .when(tile).getIcon(context); @@ -271,7 +272,7 @@ public class DashboardAdapterTest { final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); final DashboardAdapter.DashboardItemHolder holder = new DashboardAdapter.DashboardItemHolder(view); - final Tile tile = spy(new Tile(mActivityInfo)); + final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); doReturn(mock(Icon.class)).when(tile).getIcon(context); when(tile.getIcon(context).getResPackage()).thenReturn("another.package"); diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java index 5ea7d2d11c..dfa049446b 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java @@ -36,6 +36,7 @@ import androidx.recyclerview.widget.ListUpdateCallback; import com.android.settings.dashboard.conditional.AirplaneModeCondition; import com.android.settings.dashboard.conditional.Condition; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; @@ -72,7 +73,7 @@ public class DashboardDataTest { public void SetUp() { MockitoAnnotations.initMocks(this); - mDashboardCategory = new DashboardCategory(); + mDashboardCategory = new DashboardCategory(CategoryKey.CATEGORY_HOMEPAGE); // Build suggestions final List suggestions = new ArrayList<>(); @@ -276,14 +277,16 @@ public class DashboardDataTest { /** * Test when using the * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback} - * to transfer List from {@paramref baseDashboardData} to {@paramref diffDashboardData}, whether + * to transfer List from {@paramref baseDashboardData} to {@paramref diffDashboardData}, + * whether * the transform data result is equals to {@paramref testResultData} *

* The steps are described below: * 1. Calculate a {@link androidx.recyclerview.widget.DiffUtil.DiffResult} from * {@paramref baseDashboardData} to {@paramref diffDashboardData} *

- * 2. Dispatch the {@link androidx.recyclerview.widget.DiffUtil.DiffResult} calculated from step 1 + * 2. Dispatch the {@link androidx.recyclerview.widget.DiffUtil.DiffResult} calculated from step + * 1 * into {@link ListUpdateResult} *

* 3. Get result data(a.k.a. baseResultData) from {@link ListUpdateResult} and compare it to diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java index 963411d37a..f3601c457a 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java @@ -101,6 +101,7 @@ public class DashboardFeatureProviderImplTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mActivityInfo = new ActivityInfo(); + mActivityInfo.metaData = new Bundle(); doReturn(mPackageManager).when(mContext).getPackageManager(); when(mPackageManager.resolveActivity(any(Intent.class), anyInt())) .thenReturn(new ResolveInfo()); @@ -116,13 +117,12 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_shouldBindAllData() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = spy(new Tile(mActivityInfo)); + final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); tile.title = "title"; tile.summary = "summary"; doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565))) .when(tile).getIcon(any(Context.class)); - tile.metaData = new Bundle(); - tile.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI"); + mActivityInfo.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI"); tile.priority = 10; mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.SETTINGS_GESTURES, preference, tile, "123", Preference.DEFAULT_ORDER); @@ -130,16 +130,15 @@ public class DashboardFeatureProviderImplTest { assertThat(preference.getTitle()).isEqualTo(tile.title); assertThat(preference.getSummary()).isEqualTo(tile.summary); assertThat(preference.getIcon()).isNotNull(); - assertThat(preference.getFragment()) - .isEqualTo(tile.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS)); + assertThat(preference.getFragment()).isEqualTo( + mActivityInfo.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS)); assertThat(preference.getOrder()).isEqualTo(-tile.priority); } @Test public void bindPreference_noFragmentMetadata_shouldBindIntent() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.priority = 10; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); @@ -155,8 +154,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.userHandle = new ArrayList<>(); tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class)); @@ -176,8 +174,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noFragmentMetadataSingleUser_shouldBindToDirectLaunchIntent() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.userHandle = new ArrayList<>(); tile.userHandle.add(mock(UserHandle.class)); tile.intent = new Intent(); @@ -201,8 +198,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_toInternalSettingActivity_shouldBindToDirectLaunchIntentAndNotLog() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.userHandle = new ArrayList<>(); tile.userHandle.add(mock(UserHandle.class)); tile.intent = new Intent(); @@ -237,7 +233,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, @@ -250,7 +246,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noSummary_shouldSetSummaryToPlaceholder() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, @@ -263,7 +259,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_hasSummary_shouldSetSummary() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.summary = "test"; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); @@ -277,11 +273,10 @@ public class DashboardFeatureProviderImplTest { @Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class}) public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); - tile.metaData = new Bundle(); - tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, + mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, "content://com.android.settings/tile_summary"); mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, @@ -293,7 +288,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withNullKeyTileKey_shouldUseTileKey() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.key = "key"; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); @@ -307,13 +302,12 @@ public class DashboardFeatureProviderImplTest { @Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class}) public void bindPreference_withIconUri_shouldLoadIconFromContentProvider() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.key = "key"; tile.intent = new Intent(); tile.intent.setComponent( new ComponentName(RuntimeEnvironment.application.getPackageName(), "class")); - tile.metaData = new Bundle(); - tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_ICON_URI, + mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_ICON_URI, "content://com.android.settings/tile_icon"); mImpl.bindIcon(preference, tile); @@ -324,8 +318,7 @@ public class DashboardFeatureProviderImplTest { public void bindPreference_withBaseOrder_shouldOffsetPriority() { final int baseOrder = 100; final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.priority = 10; mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, preference, tile, "123", baseOrder); @@ -337,9 +330,8 @@ public class DashboardFeatureProviderImplTest { public void bindPreference_withOrderMetadata_shouldUseOrderInMetadata() { final Preference preference = new Preference(RuntimeEnvironment.application); final int testOrder = -30; - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); - tile.metaData.putInt(mImpl.META_DATA_KEY_ORDER, testOrder); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); + mActivityInfo.metaData.putInt(mImpl.META_DATA_KEY_ORDER, testOrder); tile.priority = 10; mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, preference, tile, "123", Preference.DEFAULT_ORDER); @@ -350,9 +342,8 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_invalidOrderMetadata_shouldIgnore() { final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); - tile.metaData.putString(mImpl.META_DATA_KEY_ORDER, "hello"); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); + mActivityInfo.metaData.putString(mImpl.META_DATA_KEY_ORDER, "hello"); tile.priority = 10; mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, preference, tile, "123", Preference.DEFAULT_ORDER); @@ -364,12 +355,11 @@ public class DashboardFeatureProviderImplTest { public void bindPreference_withIntentActionMetadata_shouldSetLaunchAction() { Activity activity = Robolectric.buildActivity(Activity.class).get(); final Preference preference = new Preference(RuntimeEnvironment.application); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.key = "key"; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); - tile.metaData = new Bundle(); - tile.metaData.putString("com.android.settings.intent.action", "TestAction"); + mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction"); tile.userHandle = null; mImpl.bindPreferenceToTile(activity, MetricsProto.MetricsEvent.SETTINGS_GESTURES, preference, tile, "123", Preference.DEFAULT_ORDER); @@ -390,12 +380,11 @@ public class DashboardFeatureProviderImplTest { Activity activity = Robolectric.buildActivity(Activity.class).get(); final ShadowApplication application = ShadowApplication.getInstance(); final Preference preference = new Preference(application.getApplicationContext()); - final Tile tile = new Tile(mActivityInfo); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.key = "key"; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); - tile.metaData = new Bundle(); - tile.metaData.putString("com.android.settings.intent.action", "TestAction"); + mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction"); tile.userHandle = null; mImpl.bindPreferenceToTile(activity, MetricsProto.MetricsEvent.SETTINGS_GESTURES, @@ -425,7 +414,7 @@ public class DashboardFeatureProviderImplTest { mImpl = new DashboardFeatureProviderImpl(mActivity); ReflectionHelpers.setField(mImpl, "mCategoryManager", mCategoryManager); when(mCategoryManager.getTilesByCategory(mActivity, CategoryKey.CATEGORY_HOMEPAGE)) - .thenReturn(new DashboardCategory()); + .thenReturn(new DashboardCategory(CategoryKey.CATEGORY_HOMEPAGE)); assertThat(mImpl.getPreferencesForCategory(null, null, MetricsProto.MetricsEvent.SETTINGS_GESTURES, CategoryKey.CATEGORY_HOMEPAGE)) @@ -436,8 +425,8 @@ public class DashboardFeatureProviderImplTest { public void getPreferences_hasTileForCategory_shouldReturnPrefList() { mImpl = new DashboardFeatureProviderImpl(mActivity); ReflectionHelpers.setField(mImpl, "mCategoryManager", mCategoryManager); - final DashboardCategory category = new DashboardCategory(); - category.addTile(new Tile(mActivityInfo)); + final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_HOMEPAGE); + category.addTile(new Tile(mActivityInfo, category.key)); when(mCategoryManager .getTilesByCategory(any(Context.class), eq(CategoryKey.CATEGORY_HOMEPAGE))) .thenReturn(category); @@ -467,8 +456,7 @@ public class DashboardFeatureProviderImplTest { @Test public void openTileIntent_profileSelectionDialog_shouldShow() { - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); final ArrayList handles = new ArrayList<>(); @@ -484,9 +472,8 @@ public class DashboardFeatureProviderImplTest { @Test public void openTileIntent_profileSelectionDialog_explicitMetadataShouldShow() { - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); - tile.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_ALL); + mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_ALL); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); final ArrayList handles = new ArrayList<>(); @@ -502,9 +489,8 @@ public class DashboardFeatureProviderImplTest { @Test public void openTileIntent_profileSelectionDialog_shouldNotShow() { - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); - tile.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_PRIMARY); + mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_PRIMARY); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); final ArrayList handles = new ArrayList<>(); diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java index 8c1b99b6e8..90bd7db6cc 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java @@ -17,9 +17,7 @@ package com.android.settings.dashboard; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; @@ -27,11 +25,8 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.content.ComponentName; import android.content.Context; -import android.content.Intent; import android.content.pm.ActivityInfo; -import android.graphics.drawable.Icon; import android.os.Bundle; import androidx.preference.Preference; @@ -45,7 +40,6 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; -import com.android.settingslib.drawer.TileUtils; import org.junit.Before; import org.junit.Test; @@ -74,8 +68,8 @@ public class DashboardFragmentTest { mContext = spy(RuntimeEnvironment.application); mActivityInfo = new ActivityInfo(); mFakeFeatureFactory = FakeFeatureFactory.setupForTest(); - mDashboardCategory = new DashboardCategory(); - mDashboardCategory.addTile(new Tile(mActivityInfo)); + mDashboardCategory = new DashboardCategory("key"); + mDashboardCategory.addTile(new Tile(mActivityInfo, mDashboardCategory.key)); mTestFragment = new TestFragment(RuntimeEnvironment.application); when(mFakeFeatureFactory.dashboardFeatureProvider .getTilesForCategory(nullable(String.class))) @@ -181,42 +175,6 @@ public class DashboardFragmentTest { verify(mockController2).getPreferenceKey(); } - @Test - public void tintTileIcon_hasMetadata_shouldReturnIconTintableMetadata() { - final Tile tile = spy(new Tile(mActivityInfo)); - doReturn(mock(Icon.class)).when(tile).getIcon(any(Context.class)); - final Bundle metaData = new Bundle(); - tile.metaData = metaData; - - metaData.putBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE, false); - assertThat(mTestFragment.tintTileIcon(tile)).isFalse(); - - metaData.putBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE, true); - assertThat(mTestFragment.tintTileIcon(tile)).isTrue(); - } - - @Test - public void tintTileIcon_noIcon_shouldReturnFalse() { - final Tile tile = new Tile(mActivityInfo); - tile.metaData = new Bundle(); - - assertThat(mTestFragment.tintTileIcon(tile)).isFalse(); - } - - @Test - public void tintTileIcon_noMetadata_shouldReturnPackageNameCheck() { - final Tile tile = spy(new Tile(mActivityInfo)); - doReturn(mock(Icon.class)).when(tile).getIcon(any(Context.class)); - final Intent intent = new Intent(); - tile.intent = intent; - intent.setComponent( - new ComponentName(RuntimeEnvironment.application.getPackageName(), "TestClass")); - assertThat(mTestFragment.tintTileIcon(tile)).isFalse(); - - intent.setComponent(new ComponentName("OtherPackage", "TestClass")); - assertThat(mTestFragment.tintTileIcon(tile)).isTrue(); - } - public static class TestPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardItemAnimatorTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardItemAnimatorTest.java index b1d2031d7b..543bfdb3a5 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardItemAnimatorTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardItemAnimatorTest.java @@ -25,6 +25,7 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.Tile; import org.junit.Before; @@ -42,7 +43,7 @@ public class DashboardItemAnimatorTest { public void SetUp() { mDashboardItemAnimator = new DashboardItemAnimator(); mViewHolder = new ViewHolder(new TextView(RuntimeEnvironment.application)); - mViewHolder.itemView.setTag(new Tile(new ActivityInfo())); + mViewHolder.itemView.setTag(new Tile(new ActivityInfo(), CategoryKey.CATEGORY_HOMEPAGE)); } @Test diff --git a/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java b/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java index 053bc9ce76..e207cab2c5 100644 --- a/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java @@ -53,7 +53,7 @@ public class SummaryLoaderTest { MockitoAnnotations.initMocks(this); mFeatureFactory = FakeFeatureFactory.setupForTest(); - mTile = new Tile(new ActivityInfo()); + mTile = new Tile(new ActivityInfo(), CategoryKey.CATEGORY_HOMEPAGE); mTile.summary = SUMMARY_1; mCallbackInvoked = false; @@ -85,8 +85,8 @@ public class SummaryLoaderTest { @Test public void testUpdateSummaryToCache_hasCache_shouldUpdate() { final String testSummary = "test_summary"; - final DashboardCategory category = new DashboardCategory(); - final Tile tile = new Tile(new ActivityInfo()); + final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_HOMEPAGE); + final Tile tile = new Tile(new ActivityInfo(), category.key); tile.key = "123"; tile.intent = new Intent(); category.addTile(tile); diff --git a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java index 70bac9a7bf..4c2ef42706 100644 --- a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java @@ -31,6 +31,7 @@ import android.os.UserHandle; import android.os.UserManager; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.Tile; import org.junit.Before; @@ -61,7 +62,7 @@ public class ProfileSelectDialogTest { @Test public void updateUserHandlesIfNeeded_Normal() { - final Tile tile = new Tile(new ActivityInfo()); + final Tile tile = new Tile(new ActivityInfo(), CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.userHandle.add(NORMAL_USER); @@ -74,7 +75,7 @@ public class ProfileSelectDialogTest { @Test public void updateUserHandlesIfNeeded_Remove() { - final Tile tile = new Tile(new ActivityInfo()); + final Tile tile = new Tile(new ActivityInfo(), CategoryKey.CATEGORY_HOMEPAGE); tile.intent = new Intent(); tile.userHandle.add(REMOVED_USER); tile.userHandle.add(NORMAL_USER); diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java index ffd25c34c2..ea1af69e17 100644 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java @@ -36,6 +36,7 @@ import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.ShadowSecureSettings; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.Tile; import com.android.settingslib.suggestions.SuggestionControllerMixinCompat; @@ -144,13 +145,13 @@ public class SuggestionFeatureProviderImplTest { @Test public void filterExclusiveSuggestions_shouldOnlyKeepFirst3() { final List suggestions = new ArrayList<>(); - suggestions.add(new Tile(mActivityInfo)); - suggestions.add(new Tile(mActivityInfo)); - suggestions.add(new Tile(mActivityInfo)); - suggestions.add(new Tile(mActivityInfo)); - suggestions.add(new Tile(mActivityInfo)); - suggestions.add(new Tile(mActivityInfo)); - suggestions.add(new Tile(mActivityInfo)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); + suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS)); mProvider.filterExclusiveSuggestions(suggestions);