Merge "dismiss obsolete dialogues" into atel.lnx.2.0-dev
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 94c2f00..db4abe7 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -283,10 +283,12 @@
                 if (TextUtils.isEmpty(mNumber)) {
                     return;
                 }
-                mContext.startActivity(
-                        new CallIntentBuilder(getDialableNumber())
-                                .setCallInitiationType(LogState.INITIATION_CALL_DETAILS)
-                                .build());
+                Intent dialIntent = new CallIntentBuilder(getDialableNumber())
+                        .setCallInitiationType(LogState.INITIATION_CALL_DETAILS).build();
+                if (DialerUtils.isConferenceURICallLog(mNumber, mPostDialDigits)) {
+                    dialIntent.putExtra("org.codeaurora.extra.DIAL_CONFERENCE_URI", true);
+                }
+                mContext.startActivity(dialIntent);
             }
         });
 
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 4a55b8f..462b036 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -60,6 +60,7 @@
 import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.service.ExtendedBlockingButtonRenderer;
+import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.PhoneNumberUtil;
 import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
 
@@ -497,15 +498,15 @@
         }
 
         int count = getGroupSize(position);
-
         final String phoneNumber = c.getString(CallLogQuery.NUMBER);
         Pattern pattern = Pattern.compile("[,;]");
         String[] num = pattern.split(phoneNumber);
-        final String number = num.length > 0 ? num[0] : "";
         final String countryIso = c.getString(CallLogQuery.COUNTRY_ISO);
         final String postDialDigits = CompatUtils.isNCompatible()
                 && mActivityType != ACTIVITY_TYPE_ARCHIVE ?
                 c.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
+        final String number = DialerUtils.isConferenceURICallLog(phoneNumber, postDialDigits) ?
+                phoneNumber : num.length > 0 ? num[0] : "";
         final String viaNumber = CompatUtils.isNCompatible()
                 && mActivityType != ACTIVITY_TYPE_ARCHIVE ?
                 c.getString(CallLogQuery.VIA_NUMBER) : "";
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 4036f10..d63531b 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -710,6 +710,9 @@
             if (intentProvider != null) {
                 final Intent intent = intentProvider.getIntent(mContext);
                 // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
+                if (DialerUtils.isConferenceURICallLog(number, postDialDigits)) {
+                    intent.putExtra("org.codeaurora.extra.DIAL_CONFERENCE_URI", true);
+                }
                 if (intent != null) {
                     DialerUtils.startActivityWithErrorToast(mContext, intent);
                 }
diff --git a/src/com/android/dialer/util/DialerUtils.java b/src/com/android/dialer/util/DialerUtils.java
index a71e287..f2b04f9 100644
--- a/src/com/android/dialer/util/DialerUtils.java
+++ b/src/com/android/dialer/util/DialerUtils.java
@@ -232,4 +232,13 @@
                 PREFS_MESSAGE, Context.MODE_PRIVATE);
         prefs.edit().putBoolean(KEY_STATE, show).apply();
     }
+
+    /**
+     * @return true if calllog inserted earlier when dial a ConfURI call.
+     */
+    public static boolean isConferenceURICallLog(String number, String postDialDigits) {
+        return (number == null || number.contains(";") || number.contains(",")) &&
+                (postDialDigits == null || postDialDigits.equals(""));
+    }
+
 }