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 f95a303..0df0e6f 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -42,6 +42,16 @@
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 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 709066a..14d2fd3 100644
--- a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
@@ -126,7 +126,7 @@
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 2d830de..baabe28 100644
--- a/src/com/android/settings/dashboard/CategoryManager.java
+++ b/src/com/android/settings/dashboard/CategoryManager.java
@@ -153,7 +153,7 @@
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 @@
// 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 d256a5d..fc1a129 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -321,8 +321,9 @@
&& !(icon instanceof RoundedHomepageIcon)) {
icon = new RoundedHomepageIcon(mContext, icon);
try {
- if (tile.metaData != null) {
- final int colorRes = tile.metaData.getInt(
+ final Bundle metaData = tile.getMetaData();
+ if (metaData != null) {
+ final int colorRes = metaData.getInt(
TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, 0 /* default */);
if (colorRes != 0) {
final int bgColor = mContext.getPackageManager()
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index 1bef415..42bc777 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -143,7 +143,7 @@
}
bindSummary(pref, tile);
bindIcon(pref, tile);
- final Bundle metadata = tile.metaData;
+ final Bundle metadata = tile.getMetaData();
String clsName = null;
String action = null;
Integer order = null;
@@ -218,15 +218,15 @@
private void bindSummary(Preference preference, Tile tile) {
if (tile.summary != null) {
preference.setSummary(tile.summary);
- } else if (tile.metaData != null
- && tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
+ } else if (tile.getMetaData() != null
+ && tile.getMetaData().containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
// Set a placeholder summary before starting to fetch real summary, this is necessary
// to avoid preference height change.
preference.setSummary(R.string.summary_placeholder);
ThreadUtils.postOnBackgroundThread(() -> {
final Map<String, IContentProvider> 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 @@
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 @@
}
}
final Map<String, IContentProvider> 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<String, Integer> 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 b24164f..acf885d 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -18,6 +18,7 @@
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.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 @@
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 @@
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 ffd6246..d8694f2 100644
--- a/src/com/android/settings/dashboard/SummaryLoader.java
+++ b/src/com/android/settings/dashboard/SummaryLoader.java
@@ -30,6 +30,8 @@
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 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 @@
// 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 @@
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 97f7240..26d15f5 100644
--- a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
+++ b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
@@ -167,8 +167,8 @@
// 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) {