Merge "Fix broken test testImIntentCustom"
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index c47040d..f836139 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -999,25 +999,35 @@
}
} else {
// Build an IM Intent
- String host = im.getCustomProtocol();
-
- if (protocol != Im.PROTOCOL_CUSTOM) {
- // Try bringing in a well-known host for specific protocols
- host = ContactsUtils.lookupProviderNameFromId(protocol);
- }
-
- if (!TextUtils.isEmpty(host)) {
- final String authority = host.toLowerCase();
- final Uri imUri = new Uri.Builder().scheme(CallUtil.SCHEME_IMTO).authority(
- authority).appendPath(data).build();
- final Intent intent = new Intent(Intent.ACTION_SENDTO, imUri);
- if (PhoneCapabilityTester.isIntentRegistered(context, intent)) {
- entry.intent = intent;
- }
+ final Intent imIntent = getCustomIMIntent(im, protocol);
+ if (imIntent != null &&
+ PhoneCapabilityTester.isIntentRegistered(context, imIntent)) {
+ entry.intent = imIntent;
}
}
}
+ @VisibleForTesting
+ public static Intent getCustomIMIntent(ImDataItem im, int protocol) {
+ String host = im.getCustomProtocol();
+ final String data = im.getData();
+ if (TextUtils.isEmpty(data)) {
+ return null;
+ }
+ if (protocol != Im.PROTOCOL_CUSTOM) {
+ // Try bringing in a well-known host for specific protocols
+ host = ContactsUtils.lookupProviderNameFromId(protocol);
+ }
+ if (TextUtils.isEmpty(host)) {
+ return null;
+ }
+ final String authority = host.toLowerCase();
+ final Uri imUri = new Uri.Builder().scheme(CallUtil.SCHEME_IMTO).authority(
+ authority).appendPath(data).build();
+ final Intent intent = new Intent(Intent.ACTION_SENDTO, imUri);
+ return intent;
+ }
+
/**
* Show a list popup. Used for "popup-able" entry, such as "More networks".
*/
diff --git a/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java b/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
index 0b86912..1747add 100644
--- a/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
+++ b/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
@@ -105,10 +105,11 @@
ImDataItem im = (ImDataItem) DataItem.createFrom(values);
DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
- ContactDetailFragment.buildImActions(mContext, entry, im);
- assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
+ final Intent imIntent =
+ ContactDetailFragment.getCustomIMIntent(im, Im.PROTOCOL_CUSTOM);
+ assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
- final Uri data = entry.intent.getData();
+ final Uri data = imIntent.getData();
assertEquals("imto", data.getScheme());
assertEquals(TEST_PROTOCOL, data.getAuthority());
assertEquals(TEST_ADDRESS, data.getPathSegments().get(0));