Loading packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +25 −5 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.PluginListener; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.qs.QSTile; Loading Loading @@ -96,6 +97,7 @@ 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; Loading Loading @@ -126,7 +128,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D UserTracker userTracker, SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister, TileServiceRequestController.Builder tileServiceRequestControllerBuilder TileServiceRequestController.Builder tileServiceRequestControllerBuilder, FeatureFlags featureFlags ) { mIconController = iconController; mContext = context; Loading @@ -149,6 +152,7 @@ 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 Loading Loading @@ -272,7 +276,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); final List<String> tileSpecs = loadTileSpecs(mContext, newValue, mFeatureFlags); int currentUser = mUserTracker.getUserId(); if (currentUser != mCurrentUser) { mUserContext = mUserTracker.getUserContext(); Loading Loading @@ -341,7 +345,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, "")); changeTiles(currentSpecs, loadTileSpecs(mContext, "", mFeatureFlags)); } else { for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onTilesChanged(); Loading Loading @@ -409,7 +413,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); final List<String> tileSpecs = loadTileSpecs(mContext, setting, mFeatureFlags); if (changeFunction.test(tileSpecs)) { saveTilesToSettings(tileSpecs); } Loading Loading @@ -498,7 +502,8 @@ 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) { protected static List<String> loadTileSpecs( Context context, String tileList, FeatureFlags featureFlags) { final Resources res = context.getResources(); if (TextUtils.isEmpty(tileList)) { Loading Loading @@ -531,6 +536,21 @@ 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; } Loading packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +9 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.widget.Button; import com.android.systemui.R; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile.State; import com.android.systemui.qs.QSTileHost; Loading Loading @@ -62,6 +63,7 @@ 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; Loading @@ -71,12 +73,14 @@ public class TileQueryHelper { Context context, UserTracker userTracker, @Main Executor mainExecutor, @Background Executor bgExecutor @Background Executor bgExecutor, FeatureFlags featureFlags ) { mContext = context; mMainExecutor = mainExecutor; mBgExecutor = bgExecutor; mUserTracker = userTracker; mFeatureFlags = featureFlags; } public void setListener(TileStateListener listener) { Loading Loading @@ -117,6 +121,10 @@ 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. Loading packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiBaseFragmentTest; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; Loading Loading @@ -100,6 +101,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder; @Mock private TileServiceRequestController mTileServiceRequestController; @Mock private FeatureFlags mFeatureFlags; public QSFragmentTest() { super(QSFragment.class); Loading Loading @@ -145,7 +148,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)), mock(QSLogger.class), mock(UiEventLogger.class), mock(UserTracker.class), mock(SecureSettings.class), mock(CustomTileStatePersister.class), mTileServiceRequestControllerBuilder); mTileServiceRequestControllerBuilder, mFeatureFlags); qs.setHost(host); qs.setListening(true); Loading packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +63 −8 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.qs.QSTile; Loading Loading @@ -126,6 +127,8 @@ public class QSTileHostTest extends SysuiTestCase { private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder; @Mock private TileServiceRequestController mTileServiceRequestController; @Mock private FeatureFlags mFeatureFlags; private Handler mHandler; private TestableLooper mLooper; Loading @@ -145,8 +148,10 @@ 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, mTileServiceRequestControllerBuilder); mSecureSettings, mCustomTileStatePersister, mTileServiceRequestControllerBuilder, mFeatureFlags); setUpTileFactory(); when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(false); } private void setUpTileFactory() { Loading Loading @@ -174,13 +179,13 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testLoadTileSpecs_emptySetting() { List<String> tiles = QSTileHost.loadTileSpecs(mContext, ""); List<String> tiles = QSTileHost.loadTileSpecs(mContext, "", mFeatureFlags); assertFalse(tiles.isEmpty()); } @Test public void testLoadTileSpecs_nullSetting() { List<String> tiles = QSTileHost.loadTileSpecs(mContext, null); List<String> tiles = QSTileHost.loadTileSpecs(mContext, null, mFeatureFlags); assertFalse(tiles.isEmpty()); } Loading @@ -193,6 +198,55 @@ 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() Loading Loading @@ -326,7 +380,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testLoadTileSpec_repeated() { List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2"); List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2", mFeatureFlags); assertEquals(2, specs.size()); assertEquals("spec1", specs.get(0)); Loading @@ -337,7 +391,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"); List<String> specs = QSTileHost.loadTileSpecs(mContext, "default", mFeatureFlags); // Remove spurious tiles, like dbg:mem specs.removeIf(spec -> !"spec1".equals(spec)); Loading @@ -348,7 +402,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"); List<String> specs = QSTileHost.loadTileSpecs(mContext, "default,spec1", mFeatureFlags); // Remove spurious tiles, like dbg:mem specs.removeIf(spec -> !"spec1".equals(spec)); Loading Loading @@ -387,11 +441,12 @@ public class QSTileHostTest extends SysuiTestCase { BroadcastDispatcher broadcastDispatcher, StatusBar statusBar, QSLogger qsLogger, UiEventLogger uiEventLogger, UserTracker userTracker, SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister, TileServiceRequestController.Builder tileServiceRequestControllerBuilder) { TileServiceRequestController.Builder tileServiceRequestControllerBuilder, FeatureFlags featureFlags) { super(context, iconController, defaultFactory, mainHandler, bgLooper, pluginManager, tunerService, autoTiles, dumpManager, broadcastDispatcher, Optional.of(statusBar), qsLogger, uiEventLogger, userTracker, secureSettings, customTileStatePersister, tileServiceRequestControllerBuilder); customTileStatePersister, tileServiceRequestControllerBuilder, featureFlags); } @Override Loading packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.logging.InstanceId; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; Loading Loading @@ -108,6 +109,8 @@ public class TileQueryHelperTest extends SysuiTestCase { private PackageManager mPackageManager; @Mock private UserTracker mUserTracker; @Mock private FeatureFlags mFeatureFlags; @Captor private ArgumentCaptor<List<TileQueryHelper.TileInfo>> mCaptor; Loading @@ -133,12 +136,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); mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags); mTileQueryHelper.setListener(mListener); } Loading Loading
packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +25 −5 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.PluginListener; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.qs.QSTile; Loading Loading @@ -96,6 +97,7 @@ 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; Loading Loading @@ -126,7 +128,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D UserTracker userTracker, SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister, TileServiceRequestController.Builder tileServiceRequestControllerBuilder TileServiceRequestController.Builder tileServiceRequestControllerBuilder, FeatureFlags featureFlags ) { mIconController = iconController; mContext = context; Loading @@ -149,6 +152,7 @@ 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 Loading Loading @@ -272,7 +276,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); final List<String> tileSpecs = loadTileSpecs(mContext, newValue, mFeatureFlags); int currentUser = mUserTracker.getUserId(); if (currentUser != mCurrentUser) { mUserContext = mUserTracker.getUserContext(); Loading Loading @@ -341,7 +345,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, "")); changeTiles(currentSpecs, loadTileSpecs(mContext, "", mFeatureFlags)); } else { for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onTilesChanged(); Loading Loading @@ -409,7 +413,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); final List<String> tileSpecs = loadTileSpecs(mContext, setting, mFeatureFlags); if (changeFunction.test(tileSpecs)) { saveTilesToSettings(tileSpecs); } Loading Loading @@ -498,7 +502,8 @@ 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) { protected static List<String> loadTileSpecs( Context context, String tileList, FeatureFlags featureFlags) { final Resources res = context.getResources(); if (TextUtils.isEmpty(tileList)) { Loading Loading @@ -531,6 +536,21 @@ 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; } Loading
packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +9 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.widget.Button; import com.android.systemui.R; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile.State; import com.android.systemui.qs.QSTileHost; Loading Loading @@ -62,6 +63,7 @@ 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; Loading @@ -71,12 +73,14 @@ public class TileQueryHelper { Context context, UserTracker userTracker, @Main Executor mainExecutor, @Background Executor bgExecutor @Background Executor bgExecutor, FeatureFlags featureFlags ) { mContext = context; mMainExecutor = mainExecutor; mBgExecutor = bgExecutor; mUserTracker = userTracker; mFeatureFlags = featureFlags; } public void setListener(TileStateListener listener) { Loading Loading @@ -117,6 +121,10 @@ 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. Loading
packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiBaseFragmentTest; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; Loading Loading @@ -100,6 +101,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder; @Mock private TileServiceRequestController mTileServiceRequestController; @Mock private FeatureFlags mFeatureFlags; public QSFragmentTest() { super(QSFragment.class); Loading Loading @@ -145,7 +148,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)), mock(QSLogger.class), mock(UiEventLogger.class), mock(UserTracker.class), mock(SecureSettings.class), mock(CustomTileStatePersister.class), mTileServiceRequestControllerBuilder); mTileServiceRequestControllerBuilder, mFeatureFlags); qs.setHost(host); qs.setListening(true); Loading
packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +63 −8 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.qs.QSTile; Loading Loading @@ -126,6 +127,8 @@ public class QSTileHostTest extends SysuiTestCase { private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder; @Mock private TileServiceRequestController mTileServiceRequestController; @Mock private FeatureFlags mFeatureFlags; private Handler mHandler; private TestableLooper mLooper; Loading @@ -145,8 +148,10 @@ 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, mTileServiceRequestControllerBuilder); mSecureSettings, mCustomTileStatePersister, mTileServiceRequestControllerBuilder, mFeatureFlags); setUpTileFactory(); when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(false); } private void setUpTileFactory() { Loading Loading @@ -174,13 +179,13 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testLoadTileSpecs_emptySetting() { List<String> tiles = QSTileHost.loadTileSpecs(mContext, ""); List<String> tiles = QSTileHost.loadTileSpecs(mContext, "", mFeatureFlags); assertFalse(tiles.isEmpty()); } @Test public void testLoadTileSpecs_nullSetting() { List<String> tiles = QSTileHost.loadTileSpecs(mContext, null); List<String> tiles = QSTileHost.loadTileSpecs(mContext, null, mFeatureFlags); assertFalse(tiles.isEmpty()); } Loading @@ -193,6 +198,55 @@ 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() Loading Loading @@ -326,7 +380,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testLoadTileSpec_repeated() { List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2"); List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2", mFeatureFlags); assertEquals(2, specs.size()); assertEquals("spec1", specs.get(0)); Loading @@ -337,7 +391,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"); List<String> specs = QSTileHost.loadTileSpecs(mContext, "default", mFeatureFlags); // Remove spurious tiles, like dbg:mem specs.removeIf(spec -> !"spec1".equals(spec)); Loading @@ -348,7 +402,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"); List<String> specs = QSTileHost.loadTileSpecs(mContext, "default,spec1", mFeatureFlags); // Remove spurious tiles, like dbg:mem specs.removeIf(spec -> !"spec1".equals(spec)); Loading Loading @@ -387,11 +441,12 @@ public class QSTileHostTest extends SysuiTestCase { BroadcastDispatcher broadcastDispatcher, StatusBar statusBar, QSLogger qsLogger, UiEventLogger uiEventLogger, UserTracker userTracker, SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister, TileServiceRequestController.Builder tileServiceRequestControllerBuilder) { TileServiceRequestController.Builder tileServiceRequestControllerBuilder, FeatureFlags featureFlags) { super(context, iconController, defaultFactory, mainHandler, bgLooper, pluginManager, tunerService, autoTiles, dumpManager, broadcastDispatcher, Optional.of(statusBar), qsLogger, uiEventLogger, userTracker, secureSettings, customTileStatePersister, tileServiceRequestControllerBuilder); customTileStatePersister, tileServiceRequestControllerBuilder, featureFlags); } @Override Loading
packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.logging.InstanceId; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; Loading Loading @@ -108,6 +109,8 @@ public class TileQueryHelperTest extends SysuiTestCase { private PackageManager mPackageManager; @Mock private UserTracker mUserTracker; @Mock private FeatureFlags mFeatureFlags; @Captor private ArgumentCaptor<List<TileQueryHelper.TileInfo>> mCaptor; Loading @@ -133,12 +136,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); mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags); mTileQueryHelper.setListener(mListener); } Loading