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

Commit 965b0a31 authored by Hyundo Moon's avatar Hyundo Moon Committed by Gerrit Code Review
Browse files

Merge "Encode phone number when using Uri.withAppendedPath" into main

parents de5e959a d86584dc
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -555,11 +555,17 @@ public class AtPhonebook {
                // try caller id lookup
                // TODO: This code is horribly inefficient. I saw it
                // take 7 seconds to process 100 missed calls.
                Cursor c = BluetoothMethodProxy.getInstance().contentResolverQuery(mContentResolver,
                        Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, number),
                        new String[]{
                                PhoneLookup.DISPLAY_NAME, PhoneLookup.TYPE
                        }, null, null, null);
                Cursor c =
                        BluetoothMethodProxy.getInstance()
                                .contentResolverQuery(
                                        mContentResolver,
                                        Uri.withAppendedPath(
                                                PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
                                                Uri.encode(number)),
                                        new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.TYPE},
                                        null,
                                        null,
                                        null);
                if (c != null) {
                    if (c.moveToFirst()) {
                        name = c.getString(0);
+32 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -40,6 +41,7 @@ import com.android.bluetooth.BluetoothMethodProxy;
import com.android.bluetooth.R;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.util.DevicePolicyUtils;
import com.android.internal.telephony.GsmAlphabet;

import org.junit.After;
@@ -284,6 +286,35 @@ public class AtPhonebookTest {
        verify(mNativeInterface).atResponseString(mTestDevice, expected);
    }

    @Test
    public void processCpbrCommand_doesNotCrashWithEncodingNeededNumber() {
        final String encodingNeededNumber = "###0102124";

        Cursor mockCursorOne = mock(Cursor.class);
        when(mockCursorOne.getCount()).thenReturn(1);
        when(mockCursorOne.getColumnIndex(Phone.TYPE)).thenReturn(1); // TypeColumn
        when(mockCursorOne.getColumnIndex(Phone.NUMBER)).thenReturn(2); // numberColumn
        when(mockCursorOne.getColumnIndex(Phone.DISPLAY_NAME)).thenReturn(-1); // nameColumn
        when(mockCursorOne.getInt(1)).thenReturn(Phone.TYPE_WORK);
        when(mockCursorOne.getString(2)).thenReturn(encodingNeededNumber);
        when(mockCursorOne.moveToNext()).thenReturn(false);
        doReturn(mockCursorOne)
                .when(mHfpMethodProxy)
                .contentResolverQuery(
                        any(),
                        eq(DevicePolicyUtils.getEnterprisePhoneUri(mTargetContext)),
                        any(),
                        any(),
                        any());

        mAtPhonebook.mCurrentPhonebook = "ME";
        mAtPhonebook.mCpbrIndex1 = 1;
        mAtPhonebook.mCpbrIndex2 = 2;

        // This call should not crash
        mAtPhonebook.processCpbrCommand(mTestDevice);
    }

    @Test
    public void setCpbrIndex() {
        int index = 1;