mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
d90b84321d
Signed-off-by: Tavi <tavi@divested.dev>
111 lines
4.9 KiB
Diff
111 lines
4.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Fabi=C3=A1n=20Kozynski?= <kozynski@google.com>
|
|
Date: Fri, 13 Oct 2023 16:19:27 -0400
|
|
Subject: [PATCH] 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:7bf830ca0df71496cd47563e138b8712918e0476)
|
|
Merged-In: Ia8126ac65432b124683960e3ebf47301ba6172a1
|
|
Change-Id: Ia8126ac65432b124683960e3ebf47301ba6172a1
|
|
---
|
|
.../qs/external/TileLifecycleManager.java | 5 +++
|
|
.../qs/external/TileLifecycleManagerTest.java | 33 ++++++++++++++++---
|
|
2 files changed, 34 insertions(+), 4 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 1170d7b6e8a9..c0d4736d4a97 100644
|
|
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
|
|
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
|
|
@@ -192,6 +192,11 @@ public class TileLifecycleManager extends BroadcastReceiver implements
|
|
handlePendingMessages();
|
|
}
|
|
|
|
+ @Override
|
|
+ public void onNullBinding(ComponentName name) {
|
|
+ setBindService(false);
|
|
+ }
|
|
+
|
|
@Override
|
|
public void onServiceDisconnected(ComponentName name) {
|
|
if (DEBUG) Log.d(TAG, "onServiceDisconnected " + name);
|
|
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 e5e8ae3311ef..4a389743a395 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
|
|
@@ -22,13 +22,16 @@ import static org.junit.Assert.assertEquals;
|
|
import static org.mockito.Mockito.any;
|
|
import static org.mockito.Mockito.anyInt;
|
|
import static org.mockito.Mockito.anyString;
|
|
+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;
|
|
|
|
import android.content.ComponentName;
|
|
+import android.content.Context;
|
|
import android.content.Intent;
|
|
+import android.content.ServiceConnection;
|
|
import android.content.pm.PackageInfo;
|
|
import android.content.pm.ServiceInfo;
|
|
import android.net.Uri;
|
|
@@ -49,7 +52,7 @@ import org.junit.After;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
-import org.mockito.Mockito;
|
|
+import org.mockito.ArgumentCaptor;
|
|
|
|
@SmallTest
|
|
@RunWith(AndroidJUnit4.class)
|
|
@@ -57,8 +60,8 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
|
|
private static final int TEST_FAIL_TIMEOUT = 5000;
|
|
|
|
private final PackageManagerAdapter mMockPackageManagerAdapter =
|
|
- Mockito.mock(PackageManagerAdapter.class);
|
|
- private final IQSTileService.Stub mMockTileService = Mockito.mock(IQSTileService.Stub.class);
|
|
+ mock(PackageManagerAdapter.class);
|
|
+ private final IQSTileService.Stub mMockTileService = mock(IQSTileService.Stub.class);
|
|
private ComponentName mTileServiceComponentName;
|
|
private Intent mTileServiceIntent;
|
|
private UserHandle mUser;
|
|
@@ -83,7 +86,7 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
|
|
mThread.start();
|
|
mHandler = Handler.createAsync(mThread.getLooper());
|
|
mStateManager = new TileLifecycleManager(mHandler, mContext,
|
|
- Mockito.mock(IQSService.class), new Tile(),
|
|
+ mock(IQSService.class), new Tile(),
|
|
mTileServiceIntent,
|
|
mUser,
|
|
mMockPackageManagerAdapter);
|
|
@@ -236,4 +239,26 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
|
|
verifyBind(2);
|
|
verify(mMockTileService, times(2)).onStartListening();
|
|
}
|
|
+
|
|
+ @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),
|
|
+ new Tile(),
|
|
+ mTileServiceIntent,
|
|
+ mUser,
|
|
+ mMockPackageManagerAdapter,
|
|
+ mMockBroadcastDispatcher);
|
|
+
|
|
+ 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());
|
|
+ }
|
|
}
|