[automerger skipped] Merge "Import translations. DO NOT MERGE ANYWHERE" into sc-dev am: 39b3bdf4d5 -s ours am: 9d7b2e34eb -s ours am: e29fef100e -s ours
am skip reason: subject contains skip directive
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/15687643
Change-Id: I183f17fa29a0658e5524fca3d8568fcd541b8c2f
diff --git a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
index 4a308e0..0c30a16 100644
--- a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
+++ b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
@@ -313,11 +313,15 @@
private void bindCallScreeningService(
CompletableFuture<CallFilteringResult> resultFuture) {
- mConnection = new CallScreeningServiceConnection(resultFuture);
+ CallScreeningServiceConnection connection = new CallScreeningServiceConnection(
+ resultFuture);
if (!CallScreeningServiceHelper.bindCallScreeningService(mContext,
- mCallsManager.getCurrentUserHandle(), mPackageName, mConnection)) {
+ mCallsManager.getCurrentUserHandle(), mPackageName, connection)) {
Log.i(this, "Call screening service binding failed.");
resultFuture.complete(mPriorStageResult);
+ mConnection = null;
+ } else {
+ mConnection = connection;
}
}
diff --git a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
index 68caf67..9ff9986 100644
--- a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
@@ -62,6 +62,7 @@
import org.mockito.Mock;
import java.util.Collections;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.TimeUnit;
@@ -229,12 +230,30 @@
CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME,
CallScreeningServiceFilter.PACKAGE_TYPE_CARRIER, mContext, mCallsManager,
mAppLabelProxy, mParcelableCallUtilsConverter);
- filter.startFilterLookup(inputResult);
+ CompletableFuture<CallFilteringResult> result = filter.startFilterLookup(inputResult)
+ .toCompletableFuture();
+
+ assertEquals(result.isDone(), false);
+
filter.unbindCallScreeningService();
}
@SmallTest
@Test
+ public void testBindingFailed() {
+ // Use an empty package name here, which fails in the bindCallScreeningService.
+ CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, "",
+ CallScreeningServiceFilter.PACKAGE_TYPE_CARRIER, mContext, mCallsManager,
+ mAppLabelProxy, mParcelableCallUtilsConverter);
+
+ CompletableFuture<CallFilteringResult> result = filter.startFilterLookup(inputResult)
+ .toCompletableFuture();
+
+ assertEquals(result.isDone(), true);
+ }
+
+ @SmallTest
+ @Test
public void testAllowCall() throws Exception {
CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME,
CallScreeningServiceFilter.PACKAGE_TYPE_CARRIER, mContext, mCallsManager,