From ddd02efbe85361645c1d233d361a6d0832215aa1 Mon Sep 17 00:00:00 2001 From: Cassie Date: Mon, 2 Aug 2021 13:19:04 -0700 Subject: [PATCH] Make InternetTile default in SysUI. Bug: 174753536 Test: Manual Change-Id: I1d9642f73b84a1f68cfb3d8a40554fb90b2ca01f --- .../providers/settings/SettingsProvider.java | 40 ++++++++++++++++++- packages/SystemUI/res/values/config.xml | 2 +- .../com/android/systemui/qs/QSTileHost.java | 36 ----------------- .../qs/customize/TileQueryHelper.java | 14 +------ .../android/systemui/qs/QSTileHostTest.java | 19 --------- .../qs/customize/TileQueryHelperTest.java | 24 +---------- 6 files changed, 42 insertions(+), 93 deletions(-) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 294399e754dfd..6bb125bab68f4 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -3588,7 +3588,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 204; + private static final int SETTINGS_VERSION = 205; private final int mUserId; @@ -5399,6 +5399,44 @@ public class SettingsProvider extends ContentProvider { currentVersion = 204; } + if (currentVersion == 204) { + // Version 204: Replace 'wifi' or 'cell' tiles with 'internet' if existed. + final SettingsState secureSettings = getSecureSettingsLocked(userId); + final Setting currentValue = secureSettings.getSettingLocked(Secure.QS_TILES); + if (!currentValue.isNull()) { + String tileList = currentValue.getValue(); + String[] tileSplit = tileList.split(","); + final ArrayList tiles = new ArrayList(); + boolean hasInternetTile = false; + for (int i = 0; i < tileSplit.length; i++) { + String tile = tileSplit[i].trim(); + if (tile.isEmpty()) continue; + tiles.add(tile); + if (tile.equals("internet")) hasInternetTile = true; + } + if (!hasInternetTile) { + 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"); + } + secureSettings.insertSettingOverrideableByRestoreLocked( + Secure.QS_TILES, + TextUtils.join(",", tiles), + null /* tag */, + true /* makeDefault */, + SettingsState.SYSTEM_PACKAGE_NAME); + } + currentVersion = 205; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 721e1f3810a46..10b0f791fae0a 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -110,7 +110,7 @@ - internet,wifi,cell,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle,location,hotspot,inversion,saver,dark,work,night,reverse,reduce_brightness + internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle,location,hotspot,inversion,saver,dark,work,night,reverse,reduce_brightness diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 240cf93c77c62..541ee2c4fe8ff 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -39,7 +39,6 @@ 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; @@ -512,33 +511,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D } } } - // TODO(b/174753536): Move it into the config file. - // Only do the below hacking when at least one of the below tiles exist - // --InternetTile - // --WiFiTile - // --CellularTIle - if (tiles.contains("internet") || tiles.contains("wifi") || tiles.contains("cell")) { - if (FeatureFlags.isProviderModelSettingEnabled(context)) { - 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"); - } - } else { - if (tiles.contains("internet")) { - tiles.set(tiles.indexOf("internet"), "wifi"); - tiles.add("cell"); - } - } - } return tiles; } @@ -558,14 +530,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D && GarbageMonitor.ADD_MEMORY_TILE_TO_DEFAULT_ON_DEBUGGABLE_BUILDS) { tiles.add(GarbageMonitor.MemoryTile.TILE_SPEC); } - // TODO(b/174753536): Change the config file directly. - // Filter out unused tiles from the default QS config. - if (FeatureFlags.isProviderModelSettingEnabled(context)) { - tiles.remove("cell"); - tiles.remove("wifi"); - } else { - tiles.remove("internet"); - } return tiles; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java index 17708071c57cd..3c2f35b954ea3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java @@ -34,7 +34,6 @@ 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; @@ -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,19 +117,11 @@ public class TileQueryHelper { } final ArrayList tilesToAdd = new ArrayList<>(); - // TODO(b/174753536): Move it into the config file. - if (mFeatureFlags.isProviderModelSettingEnabled()) { - possibleTiles.remove("cell"); - possibleTiles.remove("wifi"); - } else { - possibleTiles.remove("internet"); - } for (String spec : possibleTiles) { // Only add current and stock tiles that can be created from QSFactoryImpl. // Do not include CustomTile. Those will be created by `addPackageTiles`. if (spec.startsWith(CustomTile.PREFIX)) continue; - // TODO(b/174753536): Move it into the config file. final QSTile tile = host.createTile(spec); if (tile == null) { continue; diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java index 3b78632a7ca3c..9e97f801be3e2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java @@ -44,7 +44,6 @@ import android.view.View; import androidx.annotation.Nullable; import androidx.test.filters.SmallTest; -import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.util.CollectionUtils; @@ -53,7 +52,6 @@ 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; @@ -71,15 +69,12 @@ import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.tuner.TunerService; import com.android.systemui.util.settings.SecureSettings; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.mockito.MockitoSession; -import org.mockito.quality.Strictness; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -133,16 +128,9 @@ public class QSTileHostTest extends SysuiTestCase { private Handler mHandler; private TestableLooper mLooper; private QSTileHost mQSTileHost; - MockitoSession mMockingSession = null; @Before public void setUp() { - // TODO(b/174753536): Remove the mMockingSession when - // FeatureFlagUtils.SETTINGS_PROVIDER_MODEL is removed. - mMockingSession = ExtendedMockito.mockitoSession().strictness(Strictness.LENIENT) - .mockStatic(FeatureFlags.class).startMocking(); - ExtendedMockito.doReturn(false) - .when(() -> FeatureFlags.isProviderModelSettingEnabled(mContext)); MockitoAnnotations.initMocks(this); mLooper = TestableLooper.get(this); mHandler = new Handler(mLooper.getLooper()); @@ -156,13 +144,6 @@ public class QSTileHostTest extends SysuiTestCase { .thenReturn(""); } - @After - public void tearDown() throws Exception { - if (mMockingSession != null) { - mMockingSession.finishMocking(); - } - } - private void setUpTileFactory() { when(mMockState.toString()).thenReturn(MOCK_STATE_STRING); // Only create this kind of tiles diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java index a6d044a51ac29..4efcc5c3fc734 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java @@ -45,17 +45,14 @@ import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.text.TextUtils; import android.util.ArraySet; -import android.util.FeatureFlagUtils; import android.view.View; import androidx.annotation.Nullable; import androidx.test.filters.SmallTest; -import com.android.dx.mockito.inline.extended.ExtendedMockito; 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; @@ -64,7 +61,6 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -74,8 +70,6 @@ import org.mockito.Captor; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.mockito.MockitoSession; -import org.mockito.quality.Strictness; import java.util.ArrayList; import java.util.Arrays; @@ -114,7 +108,6 @@ public class TileQueryHelperTest extends SysuiTestCase { private PackageManager mPackageManager; @Mock private UserTracker mUserTracker; - @Mock private FeatureFlags mFeatureFlags; @Captor private ArgumentCaptor> mCaptor; @@ -122,18 +115,10 @@ public class TileQueryHelperTest extends SysuiTestCase { private TileQueryHelper mTileQueryHelper; private FakeExecutor mMainExecutor; private FakeExecutor mBgExecutor; - MockitoSession mMockingSession = null; @Before public void setup() { MockitoAnnotations.initMocks(this); - // TODO(b/174753536): Remove the mMockingSession when - // FeatureFlagUtils.SETTINGS_PROVIDER_MODEL is removed. - mMockingSession = ExtendedMockito.mockitoSession().strictness(Strictness.LENIENT) - .mockStatic(FeatureFlagUtils.class).startMocking(); - ExtendedMockito.doReturn(false).when(() -> FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)); - mContext.setMockPackageManager(mPackageManager); mState = new QSTile.State(); @@ -153,17 +138,10 @@ public class TileQueryHelperTest extends SysuiTestCase { mMainExecutor = new FakeExecutor(clock); mBgExecutor = new FakeExecutor(clock); mTileQueryHelper = new TileQueryHelper( - mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags); + mContext, mUserTracker, mMainExecutor, mBgExecutor); mTileQueryHelper.setListener(mListener); } - @After - public void tearDown() throws Exception { - if (mMockingSession != null) { - mMockingSession.finishMocking(); - } - } - @Test public void testIsFinished_falseBeforeQuerying() { assertFalse(mTileQueryHelper.isFinished());