From c8a7c2bd74b00bfda55788d63303ef693d186e36 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 21 Jan 2020 11:25:10 -0500 Subject: [PATCH] Do not destroy CustomTile when in QSCustomizer Before this CL, TileQueryHelper would create CustomTile when creating tiles for current tiles. This caused them to be destroyed after taking the information and being removed from the maps in TileServices. In this CL, current CustomTile are fixed to only being created by addPackageTiles which knows what to do. Fixes: 148002667 Fixes: 127508346 Test: manual Test: atest TileQueryHelperTest Change-Id: I2c4d3ce6c31449f20670982dad334019cc25469c Merged-In: I2c4d3ce6c31449f20670982dad334019cc25469c (cherry picked from commit 198b0b6ef1e15ca040a67c48f232cdd6efa6c081) --- .../systemui/qs/customize/TileQueryHelper.java | 4 +++- .../qs/customize/TileQueryHelperTest.java | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) 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 70062492c1624..7a8f497041c11 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java @@ -103,7 +103,9 @@ public class TileQueryHelper { final ArrayList tilesToAdd = new ArrayList<>(); for (String spec : possibleTiles) { - // Only add current and stock tiles that can be created from QSFactoryImpl + // 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; final QSTile tile = host.createTile(spec); if (tile == null) { continue; 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 9e226f6936223..2fed441c861ec 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 @@ -27,6 +27,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -79,12 +80,14 @@ public class TileQueryHelperTest extends SysuiTestCase { private static final Set FACTORY_TILES = new ArraySet<>(); private static final String TEST_PKG = "test_pkg"; private static final String TEST_CLS = "test_cls"; + private static final String CUSTOM_TILE = "custom(" + TEST_PKG + "/" + TEST_CLS + ")"; static { FACTORY_TILES.addAll(Arrays.asList( new String[]{"wifi", "bt", "cell", "dnd", "inversion", "airplane", "work", "rotation", "flashlight", "location", "cast", "hotspot", "user", "battery", "saver", "night", "nfc"})); + FACTORY_TILES.add(CUSTOM_TILE); } @Mock @@ -227,6 +230,18 @@ public class TileQueryHelperTest extends SysuiTestCase { assertFalse(specs.contains("other")); } + @Test + public void testCustomTileNotCreated() { + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.QS_TILES, + CUSTOM_TILE); + mTileQueryHelper.queryTiles(mQSTileHost); + + mBGLooper.processAllMessages(); + waitForIdleSync(Dependency.get(Dependency.MAIN_HANDLER)); + + verify(mQSTileHost, never()).createTile(CUSTOM_TILE); + } + @Test public void testThirdPartyTilesInactive() { ResolveInfo resolveInfo = new ResolveInfo();