Merge "Add a way to suppress injected tiles for OEMs" into qt-dev
am: ac76a480bd
Change-Id: I5d72983c4c9cda2a6cfb36fb5931dfdff00ac45f
This commit is contained in:
@@ -363,4 +363,7 @@
|
||||
|
||||
<!-- Grayscale settings intent -->
|
||||
<string name="config_grayscale_settings_intent" translate="false"></string>
|
||||
|
||||
<!-- List containing the injected tile keys which are suppressed. -->
|
||||
<string-array name="config_suppress_injected_tile_keys" translatable="false"/>
|
||||
</resources>
|
||||
|
@@ -150,6 +150,9 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
|
||||
|
||||
@Override
|
||||
protected boolean displayTile(Tile tile) {
|
||||
if (!super.displayTile(tile)) {
|
||||
return false;
|
||||
}
|
||||
if (mAccountType == null) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -24,12 +24,14 @@ import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceGroup;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.PreferenceControllerListHelper;
|
||||
@@ -43,6 +45,7 @@ import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -65,12 +68,15 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
private DashboardTilePlaceholderPreferenceController mPlaceholderPreferenceController;
|
||||
private boolean mListeningToCategoryChange;
|
||||
private SummaryLoader mSummaryLoader;
|
||||
private List<String> mSuppressInjectedTileKeys;
|
||||
@VisibleForTesting
|
||||
UiBlockerController mBlockerController;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mSuppressInjectedTileKeys = Arrays.asList(context.getResources().getStringArray(
|
||||
R.array.config_suppress_injected_tile_keys));
|
||||
mDashboardFeatureProvider = FeatureFactory.getFactory(context).
|
||||
getDashboardFeatureProvider(context);
|
||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||
@@ -283,7 +289,12 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
/**
|
||||
* Returns true if this tile should be displayed
|
||||
*/
|
||||
@CallSuper
|
||||
protected boolean displayTile(Tile tile) {
|
||||
if (mSuppressInjectedTileKeys != null && tile.hasKey()) {
|
||||
// For suppressing injected tiles for OEMs.
|
||||
return !mSuppressInjectedTileKeys.contains(tile.getKey(getContext()));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -88,4 +88,9 @@
|
||||
|
||||
<!-- Grayscale settings intent -->
|
||||
<string name="config_grayscale_settings_intent" translate="false">intent:#Intent;action=test.test;end</string>
|
||||
|
||||
<!-- List containing the injected tile keys which are suppressed. -->
|
||||
<string-array name="config_suppress_injected_tile_keys" translatable="false">
|
||||
<item>injected_tile_key</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
@@ -16,6 +16,7 @@
|
||||
package com.android.settings.dashboard;
|
||||
|
||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.DASHBOARD_CONTAINER;
|
||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -53,6 +54,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -79,6 +81,8 @@ public class DashboardFragmentTest {
|
||||
mActivityInfo = new ActivityInfo();
|
||||
mActivityInfo.packageName = "pkg";
|
||||
mActivityInfo.name = "class";
|
||||
mActivityInfo.metaData = new Bundle();
|
||||
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "injected_tile_key");
|
||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mDashboardCategory = new DashboardCategory("key");
|
||||
mDashboardCategory.addTile(new Tile(mActivityInfo, mDashboardCategory.key));
|
||||
@@ -143,6 +147,20 @@ public class DashboardFragmentTest {
|
||||
verify(mTestFragment.mScreen, never()).addPreference(nullable(Preference.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(qualifiers = "mcc999")
|
||||
public void displayTilesAsPreference_shouldNotAddSuppressedTiles() {
|
||||
when(mFakeFeatureFactory.dashboardFeatureProvider
|
||||
.getTilesForCategory(nullable(String.class)))
|
||||
.thenReturn(mDashboardCategory);
|
||||
when(mFakeFeatureFactory.dashboardFeatureProvider
|
||||
.getDashboardKeyForTile(nullable(Tile.class)))
|
||||
.thenReturn("test_key");
|
||||
mTestFragment.onCreatePreferences(new Bundle(), "rootKey");
|
||||
|
||||
verify(mTestFragment.mScreen, never()).addPreference(nullable(Preference.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onAttach_shouldCreatePlaceholderPreferenceController() {
|
||||
final AbstractPreferenceController controller = mTestFragment.use(
|
||||
|
Reference in New Issue
Block a user