Make Dialer app handles work directory correctly in Search bar

BUG=25899500

Change-Id: I5d6d9b6af72166c10d7658eb81ebbabbf26fac21
diff --git a/src/com/android/contacts/common/ContactsUtils.java b/src/com/android/contacts/common/ContactsUtils.java
index a6e0e0e..2ef68d4 100644
--- a/src/com/android/contacts/common/ContactsUtils.java
+++ b/src/com/android/contacts/common/ContactsUtils.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.DisplayPhoto;
 import android.telephony.PhoneNumberUtils;
@@ -45,6 +46,11 @@
 
     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"));
+
     // TODO find a proper place for the canonical version of these
     public interface ProviderNames {
         String YAHOO = "Yahoo";
diff --git a/src/com/android/contacts/common/list/DirectoryListLoader.java b/src/com/android/contacts/common/list/DirectoryListLoader.java
index b327361..3e5868e 100644
--- a/src/com/android/contacts/common/list/DirectoryListLoader.java
+++ b/src/com/android/contacts/common/list/DirectoryListLoader.java
@@ -23,10 +23,12 @@
 import android.database.MatrixCursor;
 import android.net.Uri;
 import android.os.Handler;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.Directory;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.R;
 
 /**
@@ -42,7 +44,10 @@
     public static final int SEARCH_MODE_DATA_SHORTCUT = 3;
 
     private static final class DirectoryQuery {
-        public static final Uri URI = Directory.CONTENT_URI;
+        // TODO(b/26056939): Directory.ENTERPRISE_CONTENT_URI;
+        public static final Uri URI = ContactsUtils.FLAG_N_FEATURE
+                ? Uri.withAppendedPath(ContactsContract.AUTHORITY_URI, "directories_enterprise")
+                : Directory.CONTENT_URI;
         public static final String ORDER_BY = Directory._ID;
 
         public static final String[] PROJECTION = {
@@ -101,7 +106,7 @@
     @Override
     protected void onStartLoading() {
         getContext().getContentResolver().
-                registerContentObserver(Directory.CONTENT_URI, false, mObserver);
+                registerContentObserver(DirectoryQuery.URI, false, mObserver);
         forceLoad();
     }
 
diff --git a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
index fee0a6a..45470d1 100644
--- a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -28,15 +28,15 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
-import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.GeoUtil;
 import com.android.contacts.common.R;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.extensions.ExtendedPhoneDirectoriesManager;
 import com.android.contacts.common.extensions.ExtensionsFactory;
 import com.android.contacts.common.preference.ContactsPreferences;
@@ -175,9 +175,19 @@
             if (isSearchMode()) {
                 final Uri baseUri;
                 if (isRemoteDirectoryQuery) {
-                    baseUri = Phone.CONTENT_FILTER_URI;
+                    if (ContactsUtils.FLAG_N_FEATURE) {
+                        //TODO(b/26056939): Phone.ENTERPRISE_CONTENT_FILTER_URI
+                        baseUri = Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+                    } else {
+                        baseUri = Phone.CONTENT_FILTER_URI;
+                    }
                 } else if (mUseCallableUri) {
-                    baseUri = Callable.CONTENT_FILTER_URI;
+                    if (ContactsUtils.FLAG_N_FEATURE) {
+                        //TODO(b/26056939): Callable.ENTERPRISE_CONTENT_FILTER_URI
+                        baseUri = Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
+                    } else {
+                        baseUri = Callable.CONTENT_FILTER_URI;
+                    }
                 } else {
                     baseUri = Phone.CONTENT_FILTER_URI;
                 }
@@ -190,7 +200,16 @@
                             String.valueOf(getDirectoryResultLimit(getDirectoryById(directoryId))));
                 }
             } else {
-                final Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
+                Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
+                if (ContactsUtils.FLAG_N_FEATURE) {
+                    if (mUseCallableUri) {
+                        //TODO(b/26056939): Callable.ENTERPRISE_CONTENT_FILTER_URI
+                        baseUri = Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
+                    } else {
+                        //TODO(b/26056939): Phone.ENTERPRISE_CONTENT_FILTER_URI
+                        baseUri = Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+                    }
+                }
                 builder = baseUri.buildUpon().appendQueryParameter(
                         ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
                 if (isSectionHeaderDisplayEnabled()) {
@@ -556,6 +575,7 @@
         }
     }
 
+    @Override
     protected Uri getContactUri(int partitionIndex, Cursor cursor,
             int contactIdColumn, int lookUpKeyColumn) {
         final DirectoryPartition directory = (DirectoryPartition) getPartition(partitionIndex);