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