Merge "Add RawContactsEntity.CORP_CONTENT_URI"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index eeaae48..347abb3 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -50,6 +50,9 @@
             <path-permission
                     android:pathPrefix="/data_enterprise"
                     android:readPermission="android.permission.INTERACT_ACROSS_USERS" />
+            <path-permission
+                android:pathPattern="/raw_contact_entities_corp"
+                android:readPermission="android.permission.INTERACT_ACROSS_USERS" />
             <grant-uri-permission android:pathPattern=".*" />
         </provider>
 
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index ec6da0c..58d55bf 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -368,6 +368,7 @@
     private static final int SEARCH_SHORTCUT = 12002;
 
     private static final int RAW_CONTACT_ENTITIES = 15001;
+    private static final int RAW_CONTACT_ENTITIES_CORP = 15002;
 
     private static final int PROVIDER_STATUS = 16001;
 
@@ -1201,6 +1202,7 @@
                 RAW_CONTACTS_ID_STREAM_ITEMS_ID);
 
         matcher.addURI(ContactsContract.AUTHORITY, "raw_contact_entities", RAW_CONTACT_ENTITIES);
+        matcher.addURI(ContactsContract.AUTHORITY, "raw_contact_entities_corp", RAW_CONTACT_ENTITIES_CORP);
 
         matcher.addURI(ContactsContract.AUTHORITY, "data", DATA);
         matcher.addURI(ContactsContract.AUTHORITY, "data/#", DATA_ID);
@@ -6378,6 +6380,18 @@
                 setTablesAndProjectionMapForRawEntities(qb, uri);
                 break;
             }
+            case RAW_CONTACT_ENTITIES_CORP: {
+                final int corpUserId = UserUtils.getCorpUserId(getContext());
+                if (corpUserId < 0) {
+                    // No Corp user or policy not allowed, return empty cursor
+                    final String[] outputProjection = (projection != null) ? projection
+                            : sRawEntityProjectionMap.getColumnNames();
+                    return new MatrixCursor(outputProjection);
+                }
+                final Uri remoteUri = maybeAddUserId(RawContactsEntity.CONTENT_URI, corpUserId);
+                return getContext().getContentResolver().query(remoteUri, projection, selection,
+                        selectionArgs, sortOrder);
+            }
 
             case RAW_CONTACT_ID_ENTITY: {
                 long rawContactId = Long.parseLong(uri.getPathSegments().get(1));