Loading android/app/src/com/android/bluetooth/hfp/AtPhonebook.java +11 −5 Original line number Original line Diff line number Diff line Loading @@ -555,11 +555,17 @@ public class AtPhonebook { // try caller id lookup // try caller id lookup // TODO: This code is horribly inefficient. I saw it // TODO: This code is horribly inefficient. I saw it // take 7 seconds to process 100 missed calls. // take 7 seconds to process 100 missed calls. Cursor c = BluetoothMethodProxy.getInstance().contentResolverQuery(mContentResolver, Cursor c = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, number), BluetoothMethodProxy.getInstance() new String[]{ .contentResolverQuery( PhoneLookup.DISPLAY_NAME, PhoneLookup.TYPE mContentResolver, }, null, null, null); 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 != null) { if (c.moveToFirst()) { if (c.moveToFirst()) { name = c.getString(0); name = c.getString(0); Loading android/app/tests/unit/src/com/android/bluetooth/hfp/AtPhonebookTest.java +32 −1 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.any; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.when; Loading @@ -40,6 +41,7 @@ import com.android.bluetooth.BluetoothMethodProxy; import com.android.bluetooth.R; import com.android.bluetooth.R; import com.android.bluetooth.TestUtils; import com.android.bluetooth.TestUtils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.util.DevicePolicyUtils; import com.android.internal.telephony.GsmAlphabet; import com.android.internal.telephony.GsmAlphabet; import org.junit.After; import org.junit.After; Loading Loading @@ -284,6 +286,35 @@ public class AtPhonebookTest { verify(mNativeInterface).atResponseString(mTestDevice, expected); 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 @Test public void setCpbrIndex() { public void setCpbrIndex() { int index = 1; int index = 1; Loading Loading
android/app/src/com/android/bluetooth/hfp/AtPhonebook.java +11 −5 Original line number Original line Diff line number Diff line Loading @@ -555,11 +555,17 @@ public class AtPhonebook { // try caller id lookup // try caller id lookup // TODO: This code is horribly inefficient. I saw it // TODO: This code is horribly inefficient. I saw it // take 7 seconds to process 100 missed calls. // take 7 seconds to process 100 missed calls. Cursor c = BluetoothMethodProxy.getInstance().contentResolverQuery(mContentResolver, Cursor c = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, number), BluetoothMethodProxy.getInstance() new String[]{ .contentResolverQuery( PhoneLookup.DISPLAY_NAME, PhoneLookup.TYPE mContentResolver, }, null, null, null); 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 != null) { if (c.moveToFirst()) { if (c.moveToFirst()) { name = c.getString(0); name = c.getString(0); Loading
android/app/tests/unit/src/com/android/bluetooth/hfp/AtPhonebookTest.java +32 −1 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.any; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.when; Loading @@ -40,6 +41,7 @@ import com.android.bluetooth.BluetoothMethodProxy; import com.android.bluetooth.R; import com.android.bluetooth.R; import com.android.bluetooth.TestUtils; import com.android.bluetooth.TestUtils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.util.DevicePolicyUtils; import com.android.internal.telephony.GsmAlphabet; import com.android.internal.telephony.GsmAlphabet; import org.junit.After; import org.junit.After; Loading Loading @@ -284,6 +286,35 @@ public class AtPhonebookTest { verify(mNativeInterface).atResponseString(mTestDevice, expected); 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 @Test public void setCpbrIndex() { public void setCpbrIndex() { int index = 1; int index = 1; Loading