diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index d16082915207d..20cafd0464527 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -117,7 +117,7 @@ - wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotspot,inversion,saver,dark,work,cast,night,controls,screenrecord + wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotspot,inversion,saver,dark,work,cast,night,screenrecord diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 17ac5e5ca47ee..fab71918a3d13 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -274,8 +274,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D try { tile = createTile(tileSpec); if (tile != null) { + tile.setTileSpec(tileSpec); if (tile.isAvailable()) { - tile.setTileSpec(tileSpec); newTiles.put(tileSpec, tile); mQSLogger.logTileAdded(tileSpec); } else { 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 00980129cf741..73f3ddd29bcff 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java @@ -22,7 +22,9 @@ import static junit.framework.Assert.assertTrue; import static junit.framework.TestCase.assertFalse; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -137,6 +139,8 @@ public class QSTileHostTest extends SysuiTestCase { return new TestTile1(mQSTileHost); } else if ("spec2".equals(spec)) { return new TestTile2(mQSTileHost); + } else if ("na".equals(spec)) { + return new NotAvailableTile(mQSTileHost); } else if (CUSTOM_TILE_SPEC.equals(spec)) { return mCustomTile; } else { @@ -283,6 +287,12 @@ public class QSTileHostTest extends SysuiTestCase { assertEquals(1, specs.size()); } + @Test + public void testNotAvailableTile_specNotNull() { + mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "na"); + verify(mQSLogger, never()).logTileDestroyed(isNull(), anyString()); + } + private static class TestQSTileHost extends QSTileHost { TestQSTileHost(Context context, StatusBarIconController iconController, QSFactoryImpl defaultFactory, Handler mainHandler, Looper bgLooper, @@ -369,4 +379,16 @@ public class QSTileHostTest extends SysuiTestCase { super(host); } } + + private class NotAvailableTile extends TestTile { + + protected NotAvailableTile(QSHost host) { + super(host); + } + + @Override + public boolean isAvailable() { + return false; + } + } }