Loading packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +1 −1 Original line number Diff line number Diff line Loading @@ -522,7 +522,7 @@ public class QSPanel extends LinearLayout implements Tunable { return mExpanded; } void addTile(QSPanelControllerBase.TileRecord tileRecord) { final void addTile(QSPanelControllerBase.TileRecord tileRecord) { final QSTile.Callback callback = new QSTile.Callback() { @Override public void onStateChanged(QSTile.State state) { Loading packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +1 −1 Original line number Diff line number Diff line Loading @@ -199,7 +199,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr mMediaHost.removeVisibilityChangeListener(mMediaHostVisibilityListener); for (TileRecord record : mRecords) { record.tile.removeCallbacks(); record.tile.removeCallback(record.callback); } mRecords.clear(); mDumpManager.unregisterDumpable(mView.getDumpableTag()); Loading packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractor.kt +0 −2 Original line number Diff line number Diff line Loading @@ -318,7 +318,6 @@ constructor( // We have a handful of different cases qsTile !is CustomTile -> { // The tile is not a custom tile. Make sure they are reset to the correct user qsTile.removeCallbacks() if (userChanged) { qsTile.userSwitch(user) logger.logTileUserChanged(tileSpec, user) Loading @@ -327,7 +326,6 @@ constructor( } qsTile.user == user -> { // The tile is a custom tile for the same user, just return it qsTile.removeCallbacks() qsTile } else -> { Loading packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -321,4 +321,30 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { assertThat(mController.shouldUseHorizontalLayout()).isFalse(); verify(mHorizontalLayoutListener).run(); } @Test public void changeTiles_callbackRemovedOnOldOnes() { // Start with one tile assertThat(mController.mRecords.size()).isEqualTo(1); QSPanelControllerBase.TileRecord record = mController.mRecords.get(0); assertThat(record.tile).isEqualTo(mQSTile); // Change to a different tile when(mQSHost.getTiles()).thenReturn(List.of(mOtherTile)); mController.setTiles(); verify(mQSTile).removeCallback(record.callback); verify(mOtherTile, never()).removeCallback(any()); verify(mOtherTile, never()).removeCallbacks(); } @Test public void onViewDetached_removesJustTheAssociatedCallback() { QSPanelControllerBase.TileRecord record = mController.mRecords.get(0); mController.onViewDetached(); verify(mQSTile).removeCallback(record.callback); verify(mQSTile, never()).removeCallbacks(); } } packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt +14 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import androidx.test.filters.SmallTest import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.plugins.qs.QSTile import com.android.systemui.plugins.qs.QSTileView import com.android.systemui.qs.QSPanelControllerBase.TileRecord import com.android.systemui.qs.logging.QSLogger import com.android.systemui.qs.tileimpl.QSIconViewImpl import com.android.systemui.qs.tileimpl.QSTileViewImpl Loading Loading @@ -192,6 +194,18 @@ class QSPanelTest : SysuiTestCase() { verify(accessibilityInfo, never()).addAction(actionCollapse) } @Test fun addTile_callbackAdded() { val tile = mock(QSTile::class.java) val tileView = mock(QSTileView::class.java) val record = TileRecord(tile, tileView) qsPanel.addTile(record) verify(tile).addCallback(record.callback) } private infix fun View.isLeftOf(other: View): Boolean { val rect = Rect() getBoundsOnScreen(rect) Loading Loading
packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +1 −1 Original line number Diff line number Diff line Loading @@ -522,7 +522,7 @@ public class QSPanel extends LinearLayout implements Tunable { return mExpanded; } void addTile(QSPanelControllerBase.TileRecord tileRecord) { final void addTile(QSPanelControllerBase.TileRecord tileRecord) { final QSTile.Callback callback = new QSTile.Callback() { @Override public void onStateChanged(QSTile.State state) { Loading
packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +1 −1 Original line number Diff line number Diff line Loading @@ -199,7 +199,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr mMediaHost.removeVisibilityChangeListener(mMediaHostVisibilityListener); for (TileRecord record : mRecords) { record.tile.removeCallbacks(); record.tile.removeCallback(record.callback); } mRecords.clear(); mDumpManager.unregisterDumpable(mView.getDumpableTag()); Loading
packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractor.kt +0 −2 Original line number Diff line number Diff line Loading @@ -318,7 +318,6 @@ constructor( // We have a handful of different cases qsTile !is CustomTile -> { // The tile is not a custom tile. Make sure they are reset to the correct user qsTile.removeCallbacks() if (userChanged) { qsTile.userSwitch(user) logger.logTileUserChanged(tileSpec, user) Loading @@ -327,7 +326,6 @@ constructor( } qsTile.user == user -> { // The tile is a custom tile for the same user, just return it qsTile.removeCallbacks() qsTile } else -> { Loading
packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -321,4 +321,30 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { assertThat(mController.shouldUseHorizontalLayout()).isFalse(); verify(mHorizontalLayoutListener).run(); } @Test public void changeTiles_callbackRemovedOnOldOnes() { // Start with one tile assertThat(mController.mRecords.size()).isEqualTo(1); QSPanelControllerBase.TileRecord record = mController.mRecords.get(0); assertThat(record.tile).isEqualTo(mQSTile); // Change to a different tile when(mQSHost.getTiles()).thenReturn(List.of(mOtherTile)); mController.setTiles(); verify(mQSTile).removeCallback(record.callback); verify(mOtherTile, never()).removeCallback(any()); verify(mOtherTile, never()).removeCallbacks(); } @Test public void onViewDetached_removesJustTheAssociatedCallback() { QSPanelControllerBase.TileRecord record = mController.mRecords.get(0); mController.onViewDetached(); verify(mQSTile).removeCallback(record.callback); verify(mQSTile, never()).removeCallbacks(); } }
packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt +14 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import androidx.test.filters.SmallTest import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.plugins.qs.QSTile import com.android.systemui.plugins.qs.QSTileView import com.android.systemui.qs.QSPanelControllerBase.TileRecord import com.android.systemui.qs.logging.QSLogger import com.android.systemui.qs.tileimpl.QSIconViewImpl import com.android.systemui.qs.tileimpl.QSTileViewImpl Loading Loading @@ -192,6 +194,18 @@ class QSPanelTest : SysuiTestCase() { verify(accessibilityInfo, never()).addAction(actionCollapse) } @Test fun addTile_callbackAdded() { val tile = mock(QSTile::class.java) val tileView = mock(QSTileView::class.java) val record = TileRecord(tile, tileView) qsPanel.addTile(record) verify(tile).addCallback(record.callback) } private infix fun View.isLeftOf(other: View): Boolean { val rect = Rect() getBoundsOnScreen(rect) Loading