summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabián Kozynski <kozynski@google.com>2023-10-13 16:19:27 -0400
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-06 22:43:01 +0000
commita176edb7e13b3597bced1a7de87edbd2113bc91f (patch)
tree5e1ed4b7c45e0556017ec30324335614ab0abf64
parentc4fa7aeb5626f4281c07b6db06f6c00a300f9aed (diff)
downloadbase-a176edb7e13b3597bced1a7de87edbd2113bc91f.tar.gz
Unbind TileService onNullBinding
Test: atest TileLifecycleManagerTest Test: manual: adb shell dumpsys activity service Test: sts test Bug: 300903792 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:3b93880c0b0052fe03c781a9768b81b098a353c0) Merged-In: Ia8126ac65432b124683960e3ebf47301ba6172a1 Change-Id: Ia8126ac65432b124683960e3ebf47301ba6172a1
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java21
2 files changed, 26 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index a49d3fd16591..ea49c7006100 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -243,6 +243,11 @@ public class TileLifecycleManager extends BroadcastReceiver implements
}
@Override
+ public void onNullBinding(ComponentName name) {
+ setBindService(false);
+ }
+
+ @Override
public void onServiceDisconnected(ComponentName name) {
if (DEBUG) Log.d(TAG, "onServiceDisconnected " + name);
handleDeath();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
index 04b50d8d98c1..09f612fff16b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
@@ -290,6 +290,27 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
verify(falseContext).unbindService(captor.getValue());
}
+ @Test
+ public void testNullBindingCallsUnbind() {
+ Context mockContext = mock(Context.class);
+ // Binding has to succeed
+ when(mockContext.bindServiceAsUser(any(), any(), anyInt(), any())).thenReturn(true);
+ TileLifecycleManager manager = new TileLifecycleManager(mHandler, mockContext,
+ mock(IQSService.class),
+ mMockPackageManagerAdapter,
+ mMockBroadcastDispatcher,
+ mTileServiceIntent,
+ mUser);
+
+ manager.setBindService(true);
+
+ ArgumentCaptor<ServiceConnection> captor = ArgumentCaptor.forClass(ServiceConnection.class);
+ verify(mockContext).bindServiceAsUser(any(), captor.capture(), anyInt(), any());
+
+ captor.getValue().onNullBinding(mTileServiceComponentName);
+ verify(mockContext).unbindService(captor.getValue());
+ }
+
private static class TestContextWrapper extends ContextWrapper {
private IntentFilter mLastIntentFilter;
private int mLastFlag;