Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 213ab50b authored by Hall Liu's avatar Hall Liu Committed by Android (Google) Code Review
Browse files

Merge "Fix app name in call screening privacy notification" into rvc-dev

parents 594bb89a 2f13c8e0
Loading
Loading
Loading
Loading
+6 −14
Original line number Diff line number Diff line
@@ -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;
@@ -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() {
+2 −1
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ public class CallScreeningServiceFilter extends CallFilter {
                            .setShouldReject(false)
                            .setShouldSilence(false)
                            .setShouldScreenViaAudio(true)
                            .setCallScreeningAppName(mAppName)
                            .setContactExists(mPriorStageResult.contactExists)
                            .build());
                } else {
@@ -289,7 +290,7 @@ public class CallScreeningServiceFilter extends CallFilter {
            return false;
        } else {
            return mPackageName.equals(
                    TelecomManager.from(mContext).getSystemDialerPackage());
                    mContext.getSystemService(TelecomManager.class).getSystemDialerPackage());
        }
    }

+32 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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);
@@ -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