Added data restriction constants to ContactsContract.

Each data item can now be flagged as IS_RESTRICTED by the
package that owns it.  Restricted data items will only be
visible to the owning package, unless the owner creates
RestrictionExceptions for other packages.

Currently @hide, so no current.xml needed.
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 75ca5af..4ed3223 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -310,6 +310,12 @@
          */
         public static final String IS_SUPER_PRIMARY = "is_super_primary";
 
+        /**
+         * Flag indicating that this data entry has been restricted by the owner
+         * {@link #PACKAGE}.
+         */
+        public static final String IS_RESTRICTED = "is_restricted";
+
         /** Generic data column, the meaning is {@link #MIMETYPE} specific */
         public static final String DATA1 = "data1";
         /** Generic data column, the meaning is {@link #MIMETYPE} specific */
@@ -904,4 +910,51 @@
          */
         public static final String CONTACT_ID2 = "contact_id2";
     }
+
+    private interface RestrictionExceptionsColumns {
+        /**
+         * Package name of a specific data provider, which will be matched
+         * against {@link Data#PACKAGE}.
+         * <p>
+         * Type: STRING
+         */
+        public static final String PACKAGE_PROVIDER = "package_provider";
+
+        /**
+         * Package name of a specific data client, which will be matched against
+         * the incoming {@link android.os.Binder#getCallingUid()} to decide if
+         * the caller can access values with {@link Data#IS_RESTRICTED} flags.
+         * <p>
+         * Type: STRING
+         */
+        public static final String PACKAGE_CLIENT = "package_client";
+
+        /**
+         * Flag indicating if {@link #PACKAGE_PROVIDER} allows
+         * {@link #PACKAGE_CLIENT} to access restricted {@link Data} rows.
+         * <p>
+         * Type: INTEGER
+         */
+        public static final String ALLOW_ACCESS = "allow_access";
+    }
+
+    /**
+     * Constants for {@link Data} restriction exceptions. Sync adapters who
+     * insert restricted data can use this table to specify exceptions about
+     * which additional packages can access that restricted data.You can only
+     * modify rules for a {@link RestrictionExceptionsColumns#PACKAGE_PROVIDER}
+     * that your {@link android.os.Binder#getCallingUid()} owns.
+     */
+    public static final class RestrictionExceptions implements RestrictionExceptionsColumns {
+        /**
+         * This utility class cannot be instantiated
+         */
+        private RestrictionExceptions() {}
+
+        /**
+         * The content:// style URI for this table
+         */
+        public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI,
+                "restriction_exceptions");
+    }
 }