Merge "Fix CP2 unit tests" into nyc-dev
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 871793e..5fd357c 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -5572,7 +5572,8 @@
         // Make sure authority is CP2 not other providers
         if (!ContactsContract.AUTHORITY.equals(localUri.getAuthority())) {
             Log.w(TAG, "Invalid authority: " + localUri.getAuthority());
-            return createEmptyCursor(localUri, projection);
+            throw new IllegalArgumentException(
+                    "Authority " + localUri.getAuthority() + " is not a valid CP2 authority.");
         }
         final Uri remoteUri = maybeAddUserId(localUri, corpUserId);
         Cursor cursor = getContext().getContentResolver().query(remoteUri, projection, selection,
diff --git a/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java b/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java
index 0e7907b..3a39e80 100644
--- a/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java
+++ b/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java
@@ -67,7 +67,6 @@
         final boolean isCallerIdEnabled = !mDpm.getCrossProfileCallerIdDisabled(currentHandle);
         final boolean isContactsSearchEnabled =
                 !mDpm.getCrossProfileContactsSearchDisabled(currentHandle);
-        final boolean isCrossProfileDirectorySupported = isCrossProfileDirectorySupported(uri);
         final String directory = uri.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY);
 
         if (VERBOSE_LOGGING) {
diff --git a/src/com/android/providers/contacts/util/UserUtils.java b/src/com/android/providers/contacts/util/UserUtils.java
index 891990e..3edbb45 100644
--- a/src/com/android/providers/contacts/util/UserUtils.java
+++ b/src/com/android/providers/contacts/util/UserUtils.java
@@ -46,17 +46,6 @@
 
     /**
      * @param context Context
-     * @return {@link UserHandle} of the corp user that is linked to the current user,
-     *         if any. If there's no such user or cross-user contacts access is
-     *         disallowed by policy, returns null.
-     */
-    public static UserHandle getCorpUserHandle(Context context) {
-        final UserInfo ui = getCorpUserInfo(context);
-        return ui == null ? null : ui.getUserHandle();
-    }
-
-    /**
-     * @param context Context
      * @return {@link UserInfo} of the corp user that is linked to the current user,
      *         if any. If there's no such user or cross-user contacts access is
      *         disallowed by policy, returns null.
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index b0c3ef4..e6b8b86 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -2708,16 +2708,40 @@
 
         // No corp user.  Primary only.
         assertEquals(-1, UserUtils.getCorpUserId(mActor.getProviderContext()));
-        assertNull(provider.queryCorpContactsProvider(enterpriseUri, null, null, null,
-                null, null));
+        assertEquals(0, provider.queryCorpContactsProvider(enterpriseUri, null, null, null,
+                null, null).getCount());
 
         final SynchronousContactsProvider2 corpCp2 = setUpCorpProvider();
+        // Insert a contact to the corp CP2
+        long rawContactId = ContentUris.parseId(
+                corpCp2.insert(RawContacts.CONTENT_URI, new ContentValues()));
+        // Insert a name
+        ContentValues cv = cv(
+                Data.RAW_CONTACT_ID, rawContactId,
+                Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE,
+                StructuredName.DISPLAY_NAME, "Contact2 Corp",
+                StructuredName.GIVEN_NAME, "Contact2",
+                StructuredName.FAMILY_NAME, "Corp");
+        corpCp2.insert(ContactsContract.Data.CONTENT_URI, cv);
+        // Insert a number
+        cv = cv(
+                Data.RAW_CONTACT_ID, rawContactId,
+                Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE,
+                Phone.NUMBER, "408-222-2222",
+                Phone.TYPE, Phone.TYPE_HOME);
+        corpCp2.insert(ContactsContract.Data.CONTENT_URI, cv);
         // Primary + corp
         um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.CORP_USER);
-        assertNotNull(provider.queryCorpContactsProvider(enterpriseUri, null, null, null,
-                null, null));
-        assertNull(provider.queryCorpContactsProvider(invalidAuthorityUri, null, null,
-                null, null, null));
+        // It returns 2 identical rows, probably because of the join in phone_lookup.
+        assertEquals(2, provider.queryCorpContactsProvider(enterpriseUri, null, null, null,
+                null, null).getCount());
+        try {
+            provider.queryCorpContactsProvider(invalidAuthorityUri, null, null,
+                    null, null, null);
+            fail(invalidAuthorityUri.toString() + " should throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected
+        }
     }
 
     /**
diff --git a/tests/src/com/android/providers/contacts/util/UserUtilsTest.java b/tests/src/com/android/providers/contacts/util/UserUtilsTest.java
index 7193637..611ad3f 100644
--- a/tests/src/com/android/providers/contacts/util/UserUtilsTest.java
+++ b/tests/src/com/android/providers/contacts/util/UserUtilsTest.java
@@ -48,18 +48,15 @@
 
         // No corp user.  Primary only.
         assertEquals(-1, UserUtils.getCorpUserId(c));
-        assertNull(UserUtils.getCorpUserHandle(c));
 
         // Primary + corp
         um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.CORP_USER);
 
         um.myUser = MockUserManager.PRIMARY_USER.id;
         assertEquals(MockUserManager.CORP_USER.id, UserUtils.getCorpUserId(c));
-        assertNotNull(UserUtils.getCorpUserHandle(c));
 
         um.myUser = MockUserManager.CORP_USER.id;
         assertEquals(-1, UserUtils.getCorpUserId(c));
-        assertNull(UserUtils.getCorpUserHandle(c));
 
         // Primary + secondary + corp
         um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.SECONDARY_USER,
@@ -67,25 +64,20 @@
 
         um.myUser = MockUserManager.PRIMARY_USER.id;
         assertEquals(MockUserManager.CORP_USER.id, UserUtils.getCorpUserId(c));
-        assertNotNull(UserUtils.getCorpUserHandle(c));
 
         um.myUser = MockUserManager.CORP_USER.id;
         assertEquals(-1, UserUtils.getCorpUserId(c));
-        assertNull(UserUtils.getCorpUserHandle(c));
 
         um.myUser = MockUserManager.SECONDARY_USER.id;
         assertEquals(-1, UserUtils.getCorpUserId(c));
-        assertNull(UserUtils.getCorpUserHandle(c));
 
         // Primary + secondary
         um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.SECONDARY_USER);
 
         um.myUser = MockUserManager.PRIMARY_USER.id;
         assertEquals(-1, UserUtils.getCorpUserId(c));
-        assertNull(UserUtils.getCorpUserHandle(c));
 
         um.myUser = MockUserManager.SECONDARY_USER.id;
         assertEquals(-1, UserUtils.getCorpUserId(c));
-        assertNull(UserUtils.getCorpUserHandle(c));
     }
 }