Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a4b2a5b authored by Fan Zhang's avatar Fan Zhang Committed by android-build-merger
Browse files

Merge "Add a way to suppress injected tiles for OEMs" into qt-dev

am: ac76a480

Change-Id: I5d72983c4c9cda2a6cfb36fb5931dfdff00ac45f
parents 5a0629d1 ac76a480
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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>
+3 −0
Original line number Diff line number Diff line
@@ -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;
        }
+11 −0
Original line number Diff line number Diff line
@@ -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;
    }

+5 −0
Original line number Diff line number Diff line
@@ -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>
+18 −0
Original line number Diff line number Diff line
@@ -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(