Loading src/com/android/settings/dashboard/DashboardFragment.java +16 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.SettingsDrawerActivity; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import java.util.ArrayList; import java.util.Collection; Loading Loading @@ -227,6 +228,20 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment return true; } @VisibleForTesting boolean tintTileIcon(Tile tile) { // 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 = getContext().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. */ Loading Loading @@ -315,7 +330,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment android.R.attr.colorControlNormal}); final int tintColor = a.getColor(0, context.getColor(android.R.color.white)); a.recycle(); final String pkgName = context.getPackageName(); // Install dashboard tiles. for (Tile tile : tiles) { final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile); Loading @@ -326,9 +340,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment if (!displayTile(tile)) { continue; } if (pkgName != null && tile.intent != null && !pkgName.equals(tile.intent.getComponent().getPackageName())) { // If this drawable is coming from outside Settings, tint it to match the color. if (tintTileIcon(tile)) { tile.icon.setTint(tintColor); } if (mDashboardTilePrefKeys.contains(key)) { Loading tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -24,7 +24,9 @@ import static org.mockito.Mockito.never; 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.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; Loading @@ -39,6 +41,7 @@ import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; 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; Loading Loading @@ -152,6 +155,35 @@ public class DashboardFragmentTest { verify(mockController2).getPreferenceKey(); } @Test public void tintTileIcon_hasMetadata_shouldReturnIconTintableMetadata() { final Tile tile = new Tile(); 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_noMetadata_shouldReturnPackageNameCheck() { final Tile tile = new Tile(); final Intent intent = new Intent(); tile.intent = intent; intent.setComponent(new ComponentName( ShadowApplication.getInstance().getApplicationContext().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 { Loading Loading
src/com/android/settings/dashboard/DashboardFragment.java +16 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.SettingsDrawerActivity; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import java.util.ArrayList; import java.util.Collection; Loading Loading @@ -227,6 +228,20 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment return true; } @VisibleForTesting boolean tintTileIcon(Tile tile) { // 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 = getContext().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. */ Loading Loading @@ -315,7 +330,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment android.R.attr.colorControlNormal}); final int tintColor = a.getColor(0, context.getColor(android.R.color.white)); a.recycle(); final String pkgName = context.getPackageName(); // Install dashboard tiles. for (Tile tile : tiles) { final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile); Loading @@ -326,9 +340,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment if (!displayTile(tile)) { continue; } if (pkgName != null && tile.intent != null && !pkgName.equals(tile.intent.getComponent().getPackageName())) { // If this drawable is coming from outside Settings, tint it to match the color. if (tintTileIcon(tile)) { tile.icon.setTint(tintColor); } if (mDashboardTilePrefKeys.contains(key)) { Loading
tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -24,7 +24,9 @@ import static org.mockito.Mockito.never; 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.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; Loading @@ -39,6 +41,7 @@ import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; 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; Loading Loading @@ -152,6 +155,35 @@ public class DashboardFragmentTest { verify(mockController2).getPreferenceKey(); } @Test public void tintTileIcon_hasMetadata_shouldReturnIconTintableMetadata() { final Tile tile = new Tile(); 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_noMetadata_shouldReturnPackageNameCheck() { final Tile tile = new Tile(); final Intent intent = new Intent(); tile.intent = intent; intent.setComponent(new ComponentName( ShadowApplication.getInstance().getApplicationContext().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 { Loading