summaryrefslogtreecommitdiff
path: root/src/com
diff options
context:
space:
mode:
authorAnthony Lee <anthonylee@google.com>2014-09-30 15:55:31 -0700
committerAnthony Lee <anthonylee@google.com>2014-10-01 21:27:19 -0700
commit55733814f213809baaa8eaa8984ff026bdb08b4e (patch)
tree66976c709ec9b3706254fd60fc8ea9384cd4ba19 /src/com
parent56493453580bb0db9a7ebd90b3c9868c8e3a8a59 (diff)
Fix HTTP request to a report bad caller ID entry in the call log (1/2)
A few things needed to change to fix this bug. 1. Add object ID to ContactInfo and make sure that it is persisted 2. Adding a new row means migration from older versions of DBs 3. Fix logic that determines if we can report a given call log entry since the strategy of using isExternal() is not valid. UI impact. 4. Fix the HTTP request that is generated to include a valid object ID intead of using the source ID. Bug: 17692726 Change-Id: If541fea963837118b7466b6c59f453103cdbdc4a
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java8
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViews.java5
-rw-r--r--src/com/android/dialer/calllog/ContactInfo.java4
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java15
-rw-r--r--src/com/android/dialer/service/CachedNumberLookupService.java3
5 files changed, 22 insertions, 13 deletions
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index b585b89c1..dcd2de3c0 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -758,7 +758,11 @@ public class CallLogAdapter extends GroupingListAdapter
final PhoneCallDetails details;
views.reported = info.isBadData;
- views.isExternal = mContactInfoHelper.isExternal(info.sourceType);
+
+ // The entry can only be reported as invalid if it has a valid ID and the source of the
+ // entry supports marking entries as invalid.
+ views.canBeReportedAsInvalid = mContactInfoHelper.canReportAsInvalid(info.sourceType,
+ info.objectId);
// Restore expansion state of the row on rebind. Inflate the actions ViewStub if required,
// and set its visibility state accordingly.
@@ -1023,7 +1027,7 @@ public class CallLogAdapter extends GroupingListAdapter
views.rowId, views.callIds, null)
);
- if (views.isExternal && !views.reported) {
+ if (views.canBeReportedAsInvalid && !views.reported) {
views.reportButtonView.setVisibility(View.VISIBLE);
} else {
views.reportButtonView.setVisibility(View.GONE);
diff --git a/src/com/android/dialer/calllog/CallLogListItemViews.java b/src/com/android/dialer/calllog/CallLogListItemViews.java
index dde4c91be..0ccdf00a1 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViews.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViews.java
@@ -108,9 +108,10 @@ public final class CallLogListItemViews {
public boolean reported;
/**
- * Whether or not the contact info came from a source other than the android contacts provider.
+ * Whether or not the contact info can be marked as invalid from the source where
+ * it was obtained.
*/
- public boolean isExternal;
+ public boolean canBeReportedAsInvalid;
private CallLogListItemViews(QuickContactBadge quickContactView, View primaryActionView,
PhoneCallDetailsViews phoneCallDetailsViews, View callLogEntryView,
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index cf29c5c83..7b6014dd1 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -39,6 +39,7 @@ public class ContactInfo {
/** The high-res photo for the contact, if available. */
public Uri photoUri;
public boolean isBadData;
+ public String objectId;
public static ContactInfo EMPTY = new ContactInfo();
@@ -73,6 +74,7 @@ public class ContactInfo {
if (!TextUtils.equals(normalizedNumber, other.normalizedNumber)) return false;
if (photoId != other.photoId) return false;
if (!UriUtils.areEqual(photoUri, other.photoUri)) return false;
+ if (!TextUtils.equals(objectId, other.objectId)) return false;
return true;
}
@@ -81,6 +83,6 @@ public class ContactInfo {
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();
+ .add("photoUri", photoUri).add("objectId", objectId).toString();
}
}
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 1f99a8820..01749fc22 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -294,14 +294,17 @@ public class ContactInfoHelper {
}
/**
- * Given a contact's sourceType, return true if the contact came from an
- * external source.
+ * This function looks at a contact's source and determines if the user can
+ * mark caller ids from this source as invalid.
*
- * @param sourceType sourceType of the contact. This is usually populated by
- * {@link #mCachedNumberLookupService}.
+ * @param sourceType The source type to be checked
+ * @param objectId The ID of the Contact object.
+ * @return true if contacts from this source can be marked with an invalid caller id
*/
- public boolean isExternal(int sourceType) {
+ public boolean canReportAsInvalid(int sourceType, String objectId) {
return mCachedNumberLookupService != null
- && mCachedNumberLookupService.isExternal(sourceType);
+ && mCachedNumberLookupService.canReportAsInvalid(sourceType, objectId);
}
+
+
}
diff --git a/src/com/android/dialer/service/CachedNumberLookupService.java b/src/com/android/dialer/service/CachedNumberLookupService.java
index 2fec45cd6..a3782f162 100644
--- a/src/com/android/dialer/service/CachedNumberLookupService.java
+++ b/src/com/android/dialer/service/CachedNumberLookupService.java
@@ -34,8 +34,7 @@ public interface CachedNumberLookupService {
public boolean isCacheUri(String uri);
public boolean isBusiness(int sourceType);
-
- public boolean isExternal(int sourceType);
+ public boolean canReportAsInvalid(int sourceType, String objectId);
public boolean addPhoto(Context context, String number, byte[] photo);