Allow google dialer code to be compiled against M and N SDKs for enterprise features

Following dialer's practice, use src-N and pre-N to separate implementation
in different build sdk

BUG=26312016

Change-Id: Ia9bd420cb2a96b1c31aa3ce2a61fd772b8811f2e
diff --git a/src/com/android/contacts/common/ContactsUtils.java b/src/com/android/contacts/common/ContactsUtils.java
index 2ef68d4..0eafb72 100644
--- a/src/com/android/contacts/common/ContactsUtils.java
+++ b/src/com/android/contacts/common/ContactsUtils.java
@@ -30,6 +30,7 @@
 import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.model.dataitem.ImDataItem;
 import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.compat.SdkSelectionUtils;
 import com.android.contacts.common.model.AccountTypeManager;
 
 import java.util.List;
@@ -46,10 +47,9 @@
 
     private static int sThumbnailSize = -1;
 
-    public static final boolean FLAG_N_FEATURE =
-            false // Enforce Pre-N behavior in release build
-            && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M
-                    || Build.VERSION.CODENAME.startsWith("N"));
+    public static final boolean FLAG_N_FEATURE = SdkSelectionUtils.TARGET_N_SDK // build-time flag
+            && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M // runtime flag
+                    || Build.VERSION.CODENAME.startsWith("N")); // TODO: remove startsWith("N")
 
     // TODO find a proper place for the canonical version of these
     public interface ProviderNames {
diff --git a/src/com/android/contacts/common/compat/CallableCompat.java b/src/com/android/contacts/common/compat/CallableCompat.java
index 2979f63..d25d4be 100644
--- a/src/com/android/contacts/common/compat/CallableCompat.java
+++ b/src/com/android/contacts/common/compat/CallableCompat.java
@@ -28,8 +28,7 @@
             Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
 
     public static Uri getContentFilterUri() {
-        // TODO: Use N APIs
-        if (ContactsUtils.FLAG_N_FEATURE && android.os.Build.VERSION.CODENAME.startsWith("N")) {
+        if (ContactsUtils.FLAG_N_FEATURE) {
             return ENTERPRISE_CONTENT_FILTER_URI;
         }
         return Callable.CONTENT_FILTER_URI;
diff --git a/src/com/android/contacts/common/compat/ContactsCompat.java b/src/com/android/contacts/common/compat/ContactsCompat.java
index 5b50385..5a5e46a 100644
--- a/src/com/android/contacts/common/compat/ContactsCompat.java
+++ b/src/com/android/contacts/common/compat/ContactsCompat.java
@@ -40,8 +40,7 @@
     private static final long ENTERPRISE_CONTACT_ID_BASE = 1000000000;
 
     public static Uri getContentUri() {
-        // TODO: Use N APIs
-        if (ContactsUtils.FLAG_N_FEATURE && android.os.Build.VERSION.CODENAME.startsWith("N")) {
+        if (ContactsUtils.FLAG_N_FEATURE) {
             return ENTERPRISE_CONTENT_FILTER_URI;
         }
         return Contacts.CONTENT_FILTER_URI;
diff --git a/src/com/android/contacts/common/compat/DirectoryCompat.java b/src/com/android/contacts/common/compat/DirectoryCompat.java
index 5f6d8bf..f100938 100644
--- a/src/com/android/contacts/common/compat/DirectoryCompat.java
+++ b/src/com/android/contacts/common/compat/DirectoryCompat.java
@@ -24,30 +24,31 @@
 
 public class DirectoryCompat {
 
-    // TODO: Use N APIs
-    private static final Uri ENTERPRISE_CONTENT_URI =
-            Uri.withAppendedPath(ContactsContract.AUTHORITY_URI, "directories_enterprise");
-    // TODO: Use N APIs
-    private static final long ENTERPRISE_LOCAL_INVISIBLE = 1000000000L + Directory.LOCAL_INVISIBLE;
-
     public static Uri getContentUri() {
-        // TODO: Use N APIs
-        if (ContactsUtils.FLAG_N_FEATURE && android.os.Build.VERSION.CODENAME.startsWith("N")) {
-            return ENTERPRISE_CONTENT_URI;
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return DirectorySdkCompat.ENTERPRISE_CONTENT_URI;
         }
         return Directory.CONTENT_URI;
     }
 
     public static boolean isInvisibleDirectory(long directoryId) {
-        return (directoryId == Directory.LOCAL_INVISIBLE
-                || directoryId == ENTERPRISE_LOCAL_INVISIBLE);
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return (directoryId == Directory.LOCAL_INVISIBLE
+                    || directoryId == DirectorySdkCompat.ENTERPRISE_LOCAL_INVISIBLE);
+        }
+        return directoryId == Directory.LOCAL_INVISIBLE;
     }
 
     public static boolean isRemoteDirectory(long directoryId) {
-        // TODO: Use N APIs
-        if (ContactsUtils.FLAG_N_FEATURE && android.os.Build.VERSION.CODENAME.startsWith("N")) {
+        if (ContactsUtils.FLAG_N_FEATURE) {
             return DirectorySdkCompat.isRemoteDirectory(directoryId);
         }
         return !(directoryId == Directory.DEFAULT || directoryId == Directory.LOCAL_INVISIBLE);
     }
+
+    public static boolean isEnterpriseDirectoryId(long directoryId) {
+        return ContactsUtils.FLAG_N_FEATURE
+                ? DirectorySdkCompat.isEnterpriseDirectoryId(directoryId)
+                : false;
+    }
 }
diff --git a/src/com/android/contacts/common/compat/PhoneCompat.java b/src/com/android/contacts/common/compat/PhoneCompat.java
index 24600f5..5277761 100644
--- a/src/com/android/contacts/common/compat/PhoneCompat.java
+++ b/src/com/android/contacts/common/compat/PhoneCompat.java
@@ -28,8 +28,7 @@
             Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
 
     public static Uri getContentFilterUri() {
-        // TODO: Use N APIs
-        if (ContactsUtils.FLAG_N_FEATURE && android.os.Build.VERSION.CODENAME.startsWith("N")) {
+        if (ContactsUtils.FLAG_N_FEATURE) {
             return ENTERPRISE_CONTENT_FILTER_URI;
         }
         return Phone.CONTENT_FILTER_URI;