Merge "Realtime drop area" into klp-dev
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index e26d2f0..24b59fb 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -436,7 +436,7 @@
                 // Cache the details about the phone number.
                 final boolean canPlaceCallsTo =
                     PhoneNumberHelper.canPlaceCallsTo(mNumber, numberPresentation);
-                final boolean isVoicemailNumber = mPhoneNumberHelper.isVoicemailNumber(mNumber);
+                final boolean isVoicemailNumber = PhoneNumberHelper.isVoicemailNumber(mNumber);
                 final boolean isSipNumber = mPhoneNumberHelper.isSipNumber(mNumber);
 
                 // Let user view contact details if they exist, otherwise add option to create new
@@ -631,7 +631,7 @@
             // If this is not a regular number, there is no point in looking it up in the contacts.
             ContactInfo info =
                     PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)
-                    && !mPhoneNumberHelper.isVoicemailNumber(number)
+                    && !PhoneNumberHelper.isVoicemailNumber(number)
                             ? mContactInfoHelper.lookupNumber(number, countryIso)
                             : null;
             if (info == null) {
diff --git a/src/com/android/dialer/PhoneCallDetailsHelper.java b/src/com/android/dialer/PhoneCallDetailsHelper.java
index be9cb66..d882eb6 100644
--- a/src/com/android/dialer/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/PhoneCallDetailsHelper.java
@@ -117,7 +117,7 @@
         if (TextUtils.isEmpty(details.name)) {
             nameText = displayNumber;
             if (TextUtils.isEmpty(details.geocode)
-                    || mPhoneNumberHelper.isVoicemailNumber(details.number)) {
+                    || PhoneNumberHelper.isVoicemailNumber(details.number)) {
                 numberText = mResources.getString(R.string.call_log_empty_gecode);
             } else {
                 numberText = details.geocode;
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index c0054ba..136899e 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -542,7 +542,7 @@
                 mContactInfoCache.getCachedValue(numberCountryIso);
         ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
         if (!PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)
-                || mPhoneNumberHelper.isVoicemailNumber(number)) {
+                || PhoneNumberHelper.isVoicemailNumber(number)) {
             // If this is a number that cannot be dialed, there is no point in looking up a contact
             // for it.
             info = ContactInfo.EMPTY;
@@ -615,10 +615,11 @@
             mViewTreeObserver.addOnPreDrawListener(this);
         }
 
-        postBindView(views, info);
+        postBindView(views, info, details);
     }
 
-    protected void postBindView(CallLogListItemViews views, ContactInfo info) {
+    protected void postBindView(CallLogListItemViews views, ContactInfo info,
+            PhoneCallDetails details) {
         // no-op
     }
 
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index ac858df..2006744 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -20,6 +20,7 @@
 import android.text.TextUtils;
 
 import com.android.contacts.common.util.UriUtils;
+import com.google.common.base.Objects;
 
 /**
  * Information for a contact as needed by the Call Log.
@@ -70,4 +71,12 @@
         if (!UriUtils.areEqual(photoUri, other.photoUri)) return false;
         return true;
     }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this).add("lookupUri", lookupUri).add("name", name).add(
+                "type", type).add("label", label).add("number", number).add("formattedNumber",
+                formattedNumber).add("normalizedNumber", normalizedNumber).add("photoId", photoId)
+                .add("photoUri", photoUri).toString();
+    }
 }
diff --git a/src/com/android/dialer/calllog/PhoneNumberHelper.java b/src/com/android/dialer/calllog/PhoneNumberHelper.java
index 7d46f40..b89c727 100644
--- a/src/com/android/dialer/calllog/PhoneNumberHelper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberHelper.java
@@ -75,11 +75,30 @@
         }
     }
 
+    public static boolean isUnknownNumberThatCanBeLookedUp(CharSequence number, int presentation) {
+        if (presentation == Calls.PRESENTATION_UNKNOWN) {
+            return false;
+        }
+        if (presentation == Calls.PRESENTATION_RESTRICTED) {
+            return false;
+        }
+        if (presentation == Calls.PRESENTATION_PAYPHONE) {
+            return false;
+        }
+        if (TextUtils.isEmpty(number)) {
+            return false;
+        }
+        if (isVoicemailNumber(number)) {
+            return false;
+        }
+        return true;
+    }
+
     /**
      * Returns true if the given number is the number of the configured voicemail.
      * To be able to mock-out this, it is not a static method.
      */
-    public boolean isVoicemailNumber(CharSequence number) {
+    public static boolean isVoicemailNumber(CharSequence number) {
         return PhoneNumberUtils.isVoiceMailNumber(number.toString());
     }
 
diff --git a/tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java b/tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java
index 1446359..2671a71 100644
--- a/tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java
+++ b/tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java
@@ -30,8 +30,4 @@
         mVoicemailNumber = voicemailNumber;
     }
 
-    @Override
-    public boolean isVoicemailNumber(CharSequence number) {
-        return mVoicemailNumber.equals(number);
-    }
 }