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

Commit 75e14b81 authored by Hall Liu's avatar Hall Liu Committed by Automerger Merge Worker
Browse files

Fix app name in call screening privacy notification am: 31250552

Change-Id: I87104497de9910e689c39ba228101772cfe57ba0
parents c4711b67 31250552
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