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

Commit 1341699f authored by Hall Liu's avatar Hall Liu Committed by Automerger Merge Worker
Browse files

Merge "Fix app name in call screening privacy notification" into rvc-dev am: 213ab50b

Change-Id: I41146d979e3a9ab18d39e522b8e3450a9d2ce780
parents 4cc9f6b6 213ab50b
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