Prefer primary data to others.
Bug: 4723377
Change-Id: Iaeb74924a8567d049adcd91dfa03814a63abf088
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 87ebda8..d56ba23 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -436,7 +436,8 @@
+ DataUsageStatColumns.TIMES_USED + " DESC, "
+ Contacts.DISPLAY_NAME + ", "
+ Data.CONTACT_ID + ", "
- + Data.IS_SUPER_PRIMARY + " DESC";
+ + Data.IS_SUPER_PRIMARY + " DESC, "
+ + Data.IS_PRIMARY + " DESC";
/** Currently same as {@link #EMAIL_FILTER_SORT_ORDER} */
private static final String PHONE_FILTER_SORT_ORDER = EMAIL_FILTER_SORT_ORDER;
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index ea76866..aabfca3 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -1110,6 +1110,41 @@
}
/**
+ * Tests if ContactsProvider2 returns addresses according to registration order.
+ */
+ public void testEmailFilterDefaultSortOrder() {
+ long rawContactId1 = createRawContact();
+ insertEmail(rawContactId1, "address1@email.com");
+ insertEmail(rawContactId1, "address2@email.com");
+ insertEmail(rawContactId1, "address3@email.com");
+ ContentValues v1 = new ContentValues();
+ v1.put(Email.ADDRESS, "address1@email.com");
+ ContentValues v2 = new ContentValues();
+ v2.put(Email.ADDRESS, "address2@email.com");
+ ContentValues v3 = new ContentValues();
+ v3.put(Email.ADDRESS, "address3@email.com");
+
+ Uri filterUri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, "address");
+ assertStoredValuesOrderly(filterUri, new ContentValues[] { v1, v2, v3 });
+ }
+
+ /**
+ * Tests if ContactsProvider2 returns primary addresses before the other addresses.
+ */
+ public void testEmailFilterPrimaryAddress() {
+ long rawContactId1 = createRawContact();
+ insertEmail(rawContactId1, "address1@email.com");
+ insertEmail(rawContactId1, "address2@email.com", true);
+ ContentValues v1 = new ContentValues();
+ v1.put(Email.ADDRESS, "address1@email.com");
+ ContentValues v2 = new ContentValues();
+ v2.put(Email.ADDRESS, "address2@email.com");
+
+ Uri filterUri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, "address");
+ assertStoredValuesOrderly(filterUri, new ContentValues[] { v2, v1 });
+ }
+
+ /**
* Tests if ContactsProvider2 has email address associated with a primary account before the
* other address.
*/