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

Commit 1ec12f22 authored by Ying Xu's avatar Ying Xu Committed by Android (Google) Code Review
Browse files

Merge "Revert "[DO NOT MERGE] Make sure WiFi and Cell tiles are not created in...

Merge "Revert "[DO NOT MERGE] Make sure WiFi and Cell tiles are not created in Provider Model am: bc6f74db"" into sc-qpr1-dev
parents 462291a5 493a11ea
Loading
Loading
Loading
Loading
+5 −25
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@ import com.android.systemui.qs.external.TileServices;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.phone.AutoTileManager;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
@@ -96,7 +95,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
    private final UiEventLogger mUiEventLogger;
    private final InstanceIdSequence mInstanceIdSequence;
    private final CustomTileStatePersister mCustomTileStatePersister;
    private final FeatureFlags mFeatureFlags;

    private final List<Callback> mCallbacks = new ArrayList<>();
    private AutoTileManager mAutoTiles;
@@ -124,8 +122,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
            UiEventLogger uiEventLogger,
            UserTracker userTracker,
            SecureSettings secureSettings,
            CustomTileStatePersister customTileStatePersister,
            FeatureFlags featureFlags
            CustomTileStatePersister customTileStatePersister
    ) {
        mIconController = iconController;
        mContext = context;
@@ -147,7 +144,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
        mUserTracker = userTracker;
        mSecureSettings = secureSettings;
        mCustomTileStatePersister = customTileStatePersister;
        mFeatureFlags = featureFlags;

        mainHandler.post(() -> {
            // This is technically a hack to avoid circular dependency of
@@ -269,7 +265,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
        if (newValue == null && UserManager.isDeviceInDemoMode(mContext)) {
            newValue = mContext.getResources().getString(R.string.quick_settings_tiles_retail_mode);
        }
        final List<String> tileSpecs = loadTileSpecs(mContext, newValue, mFeatureFlags);
        final List<String> tileSpecs = loadTileSpecs(mContext, newValue);
        int currentUser = mUserTracker.getUserId();
        if (currentUser != mCurrentUser) {
            mUserContext = mUserTracker.getUserContext();
@@ -338,7 +334,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
        if (newTiles.isEmpty() && !tileSpecs.isEmpty()) {
            // If we didn't manage to create any tiles, set it to empty (default)
            Log.d(TAG, "No valid tiles on tuning changed. Setting to default.");
            changeTiles(currentSpecs, loadTileSpecs(mContext, "", mFeatureFlags));
            changeTiles(currentSpecs, loadTileSpecs(mContext, ""));
        } else {
            for (int i = 0; i < mCallbacks.size(); i++) {
                mCallbacks.get(i).onTilesChanged();
@@ -406,7 +402,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D

    private void changeTileSpecs(Predicate<List<String>> changeFunction) {
        final String setting = mSecureSettings.getStringForUser(TILES_SETTING, mCurrentUser);
        final List<String> tileSpecs = loadTileSpecs(mContext, setting, mFeatureFlags);
        final List<String> tileSpecs = loadTileSpecs(mContext, setting);
        if (changeFunction.test(tileSpecs)) {
            saveTilesToSettings(tileSpecs);
        }
@@ -495,8 +491,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
        throw new RuntimeException("Default factory didn't create view for " + tile.getTileSpec());
    }

    protected static List<String> loadTileSpecs(
            Context context, String tileList, FeatureFlags featureFlags) {
    protected static List<String> loadTileSpecs(Context context, String tileList) {
        final Resources res = context.getResources();

        if (TextUtils.isEmpty(tileList)) {
@@ -529,21 +524,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
                }
            }
        }
        if (featureFlags.isProviderModelSettingEnabled()) {
            if (!tiles.contains("internet")) {
                if (tiles.contains("wifi")) {
                    // Replace the WiFi with Internet, and remove the Cell
                    tiles.set(tiles.indexOf("wifi"), "internet");
                    tiles.remove("cell");
                } else if (tiles.contains("cell")) {
                    // Replace the Cell with Internet
                    tiles.set(tiles.indexOf("cell"), "internet");
                }
            } else {
                tiles.remove("wifi");
                tiles.remove("cell");
            }
        }
        return tiles;
    }

+1 −9
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.tileimpl.QSTileImpl.DrawableIcon;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.util.leak.GarbageMonitor;

import java.util.ArrayList;
@@ -63,7 +62,6 @@ public class TileQueryHelper {
    private final Executor mBgExecutor;
    private final Context mContext;
    private final UserTracker mUserTracker;
    private final FeatureFlags mFeatureFlags;
    private TileStateListener mListener;

    private boolean mFinished;
@@ -73,14 +71,12 @@ public class TileQueryHelper {
            Context context,
            UserTracker userTracker,
            @Main Executor mainExecutor,
            @Background Executor bgExecutor,
            FeatureFlags featureFlags
            @Background Executor bgExecutor
    ) {
        mContext = context;
        mMainExecutor = mainExecutor;
        mBgExecutor = bgExecutor;
        mUserTracker = userTracker;
        mFeatureFlags = featureFlags;
    }

    public void setListener(TileStateListener listener) {
@@ -121,10 +117,6 @@ public class TileQueryHelper {
        }

        final ArrayList<QSTile> tilesToAdd = new ArrayList<>();
        if (mFeatureFlags.isProviderModelSettingEnabled()) {
            possibleTiles.remove("cell");
            possibleTiles.remove("wifi");
        }

        for (String spec : possibleTiles) {
            // Only add current and stock tiles that can be created from QSFactoryImpl.
+1 −1
Original line number Diff line number Diff line
@@ -139,7 +139,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
                () -> mock(AutoTileManager.class), mock(DumpManager.class),
                mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)),
                mock(QSLogger.class), mock(UiEventLogger.class), mock(UserTracker.class),
                mock(SecureSettings.class), mock(CustomTileStatePersister.class), mFeatureFlags);
                mock(SecureSettings.class), mock(CustomTileStatePersister.class));
        qs.setHost(host);

        qs.setListening(true);
+8 −67
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.phone.AutoTileManager;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
@@ -121,8 +120,6 @@ public class QSTileHostTest extends SysuiTestCase {
    private SecureSettings mSecureSettings;
    @Mock
    private CustomTileStatePersister mCustomTileStatePersister;
    @Mock
    private FeatureFlags mFeatureFlags;

    private Handler mHandler;
    private TestableLooper mLooper;
@@ -140,14 +137,8 @@ public class QSTileHostTest extends SysuiTestCase {
        mQSTileHost = new TestQSTileHost(mContext, mIconController, mDefaultFactory, mHandler,
                mLooper.getLooper(), mPluginManager, mTunerService, mAutoTiles, mDumpManager,
                mBroadcastDispatcher, mStatusBar, mQSLogger, mUiEventLogger, mUserTracker,
                mSecureSettings, mCustomTileStatePersister, mFeatureFlags);
                mSecureSettings, mCustomTileStatePersister);
        setUpTileFactory();
<<<<<<< TARGET BRANCH (33be4a Merge "Correctly clip QS during heads-up pull down" into sc-)
=======
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(false);
        when(mSecureSettings.getStringForUser(eq(QSTileHost.TILES_SETTING), anyInt()))
                .thenReturn("");
>>>>>>> SOURCE BRANCH (bc6f74 [DO NOT MERGE] Make sure WiFi and Cell tiles are not created)
    }

    private void setUpTileFactory() {
@@ -175,13 +166,13 @@ public class QSTileHostTest extends SysuiTestCase {

    @Test
    public void testLoadTileSpecs_emptySetting() {
        List<String> tiles = QSTileHost.loadTileSpecs(mContext, "", mFeatureFlags);
        List<String> tiles = QSTileHost.loadTileSpecs(mContext, "");
        assertFalse(tiles.isEmpty());
    }

    @Test
    public void testLoadTileSpecs_nullSetting() {
        List<String> tiles = QSTileHost.loadTileSpecs(mContext, null, mFeatureFlags);
        List<String> tiles = QSTileHost.loadTileSpecs(mContext, null);
        assertFalse(tiles.isEmpty());
    }

@@ -194,55 +185,6 @@ public class QSTileHostTest extends SysuiTestCase {
        assertEquals(2, mQSTileHost.getTiles().size());
    }

    @Test
    public void testRemoveWifiAndCellularWithoutInternet() {
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true);
        mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "wifi, spec1, cell, spec2");

        assertEquals("internet", mQSTileHost.mTileSpecs.get(0));
        assertEquals("spec1", mQSTileHost.mTileSpecs.get(1));
        assertEquals("spec2", mQSTileHost.mTileSpecs.get(2));
    }

    @Test
    public void testRemoveWifiAndCellularWithInternet() {
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true);
        mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "wifi, spec1, cell, spec2, internet");

        assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
        assertEquals("spec2", mQSTileHost.mTileSpecs.get(1));
        assertEquals("internet", mQSTileHost.mTileSpecs.get(2));
    }

    @Test
    public void testRemoveWifiWithoutInternet() {
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true);
        mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1, wifi, spec2");

        assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
        assertEquals("internet", mQSTileHost.mTileSpecs.get(1));
        assertEquals("spec2", mQSTileHost.mTileSpecs.get(2));
    }

    @Test
    public void testRemoveCellWithInternet() {
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true);
        mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1, spec2, cell, internet");

        assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
        assertEquals("spec2", mQSTileHost.mTileSpecs.get(1));
        assertEquals("internet", mQSTileHost.mTileSpecs.get(2));
    }

    @Test
    public void testNoWifiNoCellularNoInternet() {
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true);
        mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1,spec2");

        assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
        assertEquals("spec2", mQSTileHost.mTileSpecs.get(1));
    }

    @Test
    public void testSpecWithInvalidDoesNotUseDefault() {
        mContext.getOrCreateTestableResources()
@@ -376,7 +318,7 @@ public class QSTileHostTest extends SysuiTestCase {

    @Test
    public void testLoadTileSpec_repeated() {
        List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2", mFeatureFlags);
        List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2");

        assertEquals(2, specs.size());
        assertEquals("spec1", specs.get(0));
@@ -387,7 +329,7 @@ public class QSTileHostTest extends SysuiTestCase {
    public void testLoadTileSpec_repeatedInDefault() {
        mContext.getOrCreateTestableResources()
                .addOverride(R.string.quick_settings_tiles_default, "spec1,spec1");
        List<String> specs = QSTileHost.loadTileSpecs(mContext, "default", mFeatureFlags);
        List<String> specs = QSTileHost.loadTileSpecs(mContext, "default");

        // Remove spurious tiles, like dbg:mem
        specs.removeIf(spec -> !"spec1".equals(spec));
@@ -398,7 +340,7 @@ public class QSTileHostTest extends SysuiTestCase {
    public void testLoadTileSpec_repeatedDefaultAndSetting() {
        mContext.getOrCreateTestableResources()
                .addOverride(R.string.quick_settings_tiles_default, "spec1");
        List<String> specs = QSTileHost.loadTileSpecs(mContext, "default,spec1", mFeatureFlags);
        List<String> specs = QSTileHost.loadTileSpecs(mContext, "default,spec1");

        // Remove spurious tiles, like dbg:mem
        specs.removeIf(spec -> !"spec1".equals(spec));
@@ -436,12 +378,11 @@ public class QSTileHostTest extends SysuiTestCase {
                Provider<AutoTileManager> autoTiles, DumpManager dumpManager,
                BroadcastDispatcher broadcastDispatcher, StatusBar statusBar, QSLogger qsLogger,
                UiEventLogger uiEventLogger, UserTracker userTracker,
                SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister,
                FeatureFlags featureFlags) {
                SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister) {
            super(context, iconController, defaultFactory, mainHandler, bgLooper, pluginManager,
                    tunerService, autoTiles, dumpManager, broadcastDispatcher,
                    Optional.of(statusBar), qsLogger, uiEventLogger, userTracker, secureSettings,
                    customTileStatePersister, featureFlags);
                    customTileStatePersister);
        }

        @Override
+2 −5
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ import com.android.systemui.plugins.qs.QSIconView;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;

@@ -109,8 +108,6 @@ public class TileQueryHelperTest extends SysuiTestCase {
    private PackageManager mPackageManager;
    @Mock
    private UserTracker mUserTracker;
    @Mock
    private FeatureFlags mFeatureFlags;
    @Captor
    private ArgumentCaptor<List<TileQueryHelper.TileInfo>> mCaptor;

@@ -136,12 +133,12 @@ public class TileQueryHelperTest extends SysuiTestCase {
                    }
                }
        ).when(mQSTileHost).createTile(anyString());
        when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(false);

        FakeSystemClock clock = new FakeSystemClock();
        mMainExecutor = new FakeExecutor(clock);
        mBgExecutor = new FakeExecutor(clock);
        mTileQueryHelper = new TileQueryHelper(
                mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags);
                mContext, mUserTracker, mMainExecutor, mBgExecutor);
        mTileQueryHelper.setListener(mListener);
    }

Loading