Loading src/com/android/server/telecom/callfiltering/CallFilteringResult.java +6 −14 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.provider.CallLog; import android.provider.CallLog.Calls; import android.text.TextUtils; import java.util.Objects; public class CallFilteringResult { public static class Builder { private boolean mShouldAllowCall; Loading Loading @@ -230,22 +232,12 @@ public class CallFilteringResult { if (mCallBlockReason != that.mCallBlockReason) return false; if (contactExists != that.contactExists) return false; if ((TextUtils.isEmpty(mCallScreeningAppName) && TextUtils.isEmpty(that.mCallScreeningAppName)) && (TextUtils.isEmpty(mCallScreeningComponentName) && TextUtils.isEmpty(that.mCallScreeningComponentName))) { return true; } else if (!TextUtils.isEmpty(mCallScreeningAppName) && !TextUtils.isEmpty(that.mCallScreeningAppName) && mCallScreeningAppName.equals(that.mCallScreeningAppName) && !TextUtils.isEmpty(mCallScreeningComponentName) && !TextUtils.isEmpty(that.mCallScreeningComponentName) && mCallScreeningComponentName.equals(that.mCallScreeningComponentName)) { return true; } if (!Objects.equals(mCallScreeningAppName, that.mCallScreeningAppName)) return false; if (!Objects.equals(mCallScreeningComponentName, that.mCallScreeningComponentName)) { return false; } return true; } @Override public int hashCode() { Loading src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java +2 −1 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ public class CallScreeningServiceFilter extends CallFilter { .setShouldReject(false) .setShouldSilence(false) .setShouldScreenViaAudio(true) .setCallScreeningAppName(mAppName) .setContactExists(mPriorStageResult.contactExists) .build()); } else { Loading Loading @@ -289,7 +290,7 @@ public class CallScreeningServiceFilter extends CallFilter { return false; } else { return mPackageName.equals( TelecomManager.from(mContext).getSystemDialerPackage()); mContext.getSystemService(TelecomManager.class).getSystemDialerPackage()); } } Loading tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.os.UserHandle; import android.provider.CallLog; import android.telecom.CallScreeningService; import android.telecom.ParcelableCall; import android.telecom.TelecomManager; import android.test.suitebuilder.annotation.SmallTest; import com.android.internal.telecom.ICallScreeningAdapter; Loading Loading @@ -67,6 +68,7 @@ import java.util.concurrent.TimeUnit; public class CallScreeningServiceFilterTest extends TelecomTestCase { static @Mock Call mCall; @Mock Context mContext; @Mock TelecomManager mTelecomManager; @Mock PackageManager mPackageManager; @Mock CallsManager mCallsManager; @Mock AppLabelProxy mAppLabelProxy; Loading Loading @@ -111,6 +113,9 @@ public class CallScreeningServiceFilterTest extends TelecomTestCase { when(mCallsManager.getCurrentUserHandle()).thenReturn(UserHandle.CURRENT); when(mCall.getId()).thenReturn(CALL_ID); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(TelecomManager.class)) .thenReturn(mTelecomManager); when(mTelecomManager.getSystemDialerPackage()).thenReturn(PKG_NAME); when(mAppLabelProxy.getAppLabel(PKG_NAME)).thenReturn(APP_NAME); when(mParcelableCallUtilsConverter.toParcelableCall( eq(mCall), anyBoolean(), eq(mPhoneAccountRegistrar))).thenReturn(null); Loading Loading @@ -286,6 +291,33 @@ public class CallScreeningServiceFilterTest extends TelecomTestCase { serviceConnection.onServiceDisconnected(COMPONENT_NAME); } @SmallTest @Test public void testScreenCallFurther() throws Exception { CallFilteringResult expectedResult = new CallFilteringResult.Builder() .setShouldAllowCall(true) .setShouldReject(false) .setShouldSilence(false) .setShouldScreenViaAudio(true) .setCallScreeningAppName(APP_NAME) .build(); CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME, CallScreeningServiceFilter.PACKAGE_TYPE_DEFAULT_DIALER, mContext, mCallsManager, mAppLabelProxy, mParcelableCallUtilsConverter); CompletionStage<CallFilteringResult> resultFuture = filter.startFilterLookup(inputResult); ServiceConnection serviceConnection = verifyBindingIntent(); serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder); ICallScreeningAdapter csAdapter = getCallScreeningAdapter(); csAdapter.screenCallFurther(CALL_ID); assertEquals(expectedResult, resultFuture.toCompletableFuture().get( CallScreeningServiceFilter.CALL_SCREENING_FILTER_TIMEOUT, TimeUnit.MILLISECONDS)); serviceConnection.onServiceDisconnected(COMPONENT_NAME); } private ServiceConnection verifyBindingIntent() { ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); ArgumentCaptor<ServiceConnection> serviceCaptor = ArgumentCaptor Loading Loading
src/com/android/server/telecom/callfiltering/CallFilteringResult.java +6 −14 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.provider.CallLog; import android.provider.CallLog.Calls; import android.text.TextUtils; import java.util.Objects; public class CallFilteringResult { public static class Builder { private boolean mShouldAllowCall; Loading Loading @@ -230,22 +232,12 @@ public class CallFilteringResult { if (mCallBlockReason != that.mCallBlockReason) return false; if (contactExists != that.contactExists) return false; if ((TextUtils.isEmpty(mCallScreeningAppName) && TextUtils.isEmpty(that.mCallScreeningAppName)) && (TextUtils.isEmpty(mCallScreeningComponentName) && TextUtils.isEmpty(that.mCallScreeningComponentName))) { return true; } else if (!TextUtils.isEmpty(mCallScreeningAppName) && !TextUtils.isEmpty(that.mCallScreeningAppName) && mCallScreeningAppName.equals(that.mCallScreeningAppName) && !TextUtils.isEmpty(mCallScreeningComponentName) && !TextUtils.isEmpty(that.mCallScreeningComponentName) && mCallScreeningComponentName.equals(that.mCallScreeningComponentName)) { return true; } if (!Objects.equals(mCallScreeningAppName, that.mCallScreeningAppName)) return false; if (!Objects.equals(mCallScreeningComponentName, that.mCallScreeningComponentName)) { return false; } return true; } @Override public int hashCode() { Loading
src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java +2 −1 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ public class CallScreeningServiceFilter extends CallFilter { .setShouldReject(false) .setShouldSilence(false) .setShouldScreenViaAudio(true) .setCallScreeningAppName(mAppName) .setContactExists(mPriorStageResult.contactExists) .build()); } else { Loading Loading @@ -289,7 +290,7 @@ public class CallScreeningServiceFilter extends CallFilter { return false; } else { return mPackageName.equals( TelecomManager.from(mContext).getSystemDialerPackage()); mContext.getSystemService(TelecomManager.class).getSystemDialerPackage()); } } Loading
tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.os.UserHandle; import android.provider.CallLog; import android.telecom.CallScreeningService; import android.telecom.ParcelableCall; import android.telecom.TelecomManager; import android.test.suitebuilder.annotation.SmallTest; import com.android.internal.telecom.ICallScreeningAdapter; Loading Loading @@ -67,6 +68,7 @@ import java.util.concurrent.TimeUnit; public class CallScreeningServiceFilterTest extends TelecomTestCase { static @Mock Call mCall; @Mock Context mContext; @Mock TelecomManager mTelecomManager; @Mock PackageManager mPackageManager; @Mock CallsManager mCallsManager; @Mock AppLabelProxy mAppLabelProxy; Loading Loading @@ -111,6 +113,9 @@ public class CallScreeningServiceFilterTest extends TelecomTestCase { when(mCallsManager.getCurrentUserHandle()).thenReturn(UserHandle.CURRENT); when(mCall.getId()).thenReturn(CALL_ID); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(TelecomManager.class)) .thenReturn(mTelecomManager); when(mTelecomManager.getSystemDialerPackage()).thenReturn(PKG_NAME); when(mAppLabelProxy.getAppLabel(PKG_NAME)).thenReturn(APP_NAME); when(mParcelableCallUtilsConverter.toParcelableCall( eq(mCall), anyBoolean(), eq(mPhoneAccountRegistrar))).thenReturn(null); Loading Loading @@ -286,6 +291,33 @@ public class CallScreeningServiceFilterTest extends TelecomTestCase { serviceConnection.onServiceDisconnected(COMPONENT_NAME); } @SmallTest @Test public void testScreenCallFurther() throws Exception { CallFilteringResult expectedResult = new CallFilteringResult.Builder() .setShouldAllowCall(true) .setShouldReject(false) .setShouldSilence(false) .setShouldScreenViaAudio(true) .setCallScreeningAppName(APP_NAME) .build(); CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME, CallScreeningServiceFilter.PACKAGE_TYPE_DEFAULT_DIALER, mContext, mCallsManager, mAppLabelProxy, mParcelableCallUtilsConverter); CompletionStage<CallFilteringResult> resultFuture = filter.startFilterLookup(inputResult); ServiceConnection serviceConnection = verifyBindingIntent(); serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder); ICallScreeningAdapter csAdapter = getCallScreeningAdapter(); csAdapter.screenCallFurther(CALL_ID); assertEquals(expectedResult, resultFuture.toCompletableFuture().get( CallScreeningServiceFilter.CALL_SCREENING_FILTER_TIMEOUT, TimeUnit.MILLISECONDS)); serviceConnection.onServiceDisconnected(COMPONENT_NAME); } private ServiceConnection verifyBindingIntent() { ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); ArgumentCaptor<ServiceConnection> serviceCaptor = ArgumentCaptor Loading