Merge changes Ief58171c,Ie48671dc

* changes:
  Fix incorrect information in LightbringerTech log line
  Warmup shared prefs in googledialer when strict mode is enabled.
diff --git a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
index 741e606..8cf54b9 100644
--- a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -42,6 +42,7 @@
 import com.android.contacts.common.util.Constants;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
@@ -500,14 +501,22 @@
     if (getDirectorySearchMode() == DirectoryListLoader.SEARCH_MODE_NONE) {
       return;
     }
-    final int numExtendedDirectories = mExtendedDirectories.size();
+    int numExtendedDirectories = mExtendedDirectories.size();
+
+    if (ConfigProviderBindings.get(getContext()).getBoolean("p13n_ranker_should_enable", false)) {
+      // Suggested results wasn't formulated as an extended directory, so manually
+      // increment the count here when the feature is enabled. Suggestions are
+      // only shown when the ranker is enabled.
+      numExtendedDirectories++;
+    }
+
     if (getPartitionCount() == cursor.getCount() + numExtendedDirectories) {
       // already added all directories;
       return;
     }
-    //
+
     mFirstExtendedDirectoryId = Long.MAX_VALUE;
-    if (numExtendedDirectories > 0) {
+    if (!mExtendedDirectories.isEmpty()) {
       // The Directory.LOCAL_INVISIBLE is not in the cursor but we can't reuse it's
       // "special" ID.
       long maxId = Directory.LOCAL_INVISIBLE;
@@ -527,7 +536,7 @@
       }
       // Extended directories ID's cannot collide with base directories
       mFirstExtendedDirectoryId = maxId + 1;
-      for (int i = 0; i < numExtendedDirectories; i++) {
+      for (int i = 0; i < mExtendedDirectories.size(); i++) {
         final long id = mFirstExtendedDirectoryId + i;
         final DirectoryPartition directory = mExtendedDirectories.get(i);
         if (getPartitionByDirectoryId(id) == -1) {
diff --git a/java/com/android/dialer/strictmode/StrictModeUtils.java b/java/com/android/dialer/strictmode/StrictModeUtils.java
index c83beb0..5ccd25d 100644
--- a/java/com/android/dialer/strictmode/StrictModeUtils.java
+++ b/java/com/android/dialer/strictmode/StrictModeUtils.java
@@ -16,12 +16,17 @@
 
 package com.android.dialer.strictmode;
 
+import android.app.Application;
+import android.content.Context;
 import android.os.Looper;
 import android.os.StrictMode;
 import android.os.StrictMode.ThreadPolicy;
+import android.preference.PreferenceManager;
 import android.support.annotation.AnyThread;
+import android.support.v4.os.UserManagerCompat;
 import com.android.dialer.buildtype.BuildType;
 import com.android.dialer.function.Supplier;
+import com.android.dialer.util.DialerUtils;
 
 /** Utilities for enforcing strict-mode in an app. */
 public final class StrictModeUtils {
@@ -88,5 +93,30 @@
     return Looper.getMainLooper().equals(Looper.myLooper());
   }
 
+  /**
+   * We frequently access shared preferences on the main thread, which causes strict mode
+   * violations. When strict mode is allowed, warm up the shared preferences so that later uses of
+   * shared preferences access the in-memory versions and we don't have to bypass strict mode at
+   * every point in the application where shared preferences are accessed.
+   */
+  public static void warmupSharedPrefs(Application application) {
+    // From credential-encrypted (CE) storage, i.e.:
+    //    /data/data/com.android.dialer/shared_prefs
+
+    if (UserManagerCompat.isUserUnlocked(application)) {
+      // <package_name>_preferences.xml
+      PreferenceManager.getDefaultSharedPreferences(application);
+
+      // <package_name>.xml
+      application.getSharedPreferences(application.getPackageName(), Context.MODE_PRIVATE);
+    }
+
+    // From device-encrypted (DE) storage, i.e.:
+    //   /data/user_de/0/com.android.dialer/shared_prefs/
+
+    // <package_name>_preferences.xml
+    DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(application);
+  }
+
   private StrictModeUtils() {}
 }
diff --git a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
index 4d65241..b974ab1 100644
--- a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
+++ b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
@@ -17,21 +17,17 @@
 package com.android.dialer.strictmode.impl;
 
 import android.app.Application;
-import android.content.Context;
 import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.StrictMode;
 import android.os.StrictMode.ThreadPolicy;
 import android.os.StrictMode.VmPolicy;
-import android.preference.PreferenceManager;
 import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.buildtype.BuildType;
 import com.android.dialer.common.Assert;
 import com.android.dialer.strictmode.DialerStrictMode;
-import com.android.dialer.util.DialerUtils;
+import com.android.dialer.strictmode.StrictModeUtils;
 import com.google.auto.value.AutoValue;
 import java.util.Map;
 import javax.inject.Inject;
@@ -49,8 +45,8 @@
   @MainThread
   @Override
   public void onApplicationCreate(Application application) {
-    if (isStrictModeAllowed()) {
-      warmupSharedPrefs(application);
+    if (StrictModeUtils.isStrictModeAllowed()) {
+      StrictModeUtils.warmupSharedPrefs(application);
       setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY);
       setRecommendedVMPolicy(VM_DEATH_PENALTY);
 
@@ -64,35 +60,6 @@
   }
 
   /**
-   * We frequently access shared preferences on the main thread, which causes strict mode
-   * violations. When strict mode is allowed, warm up the shared preferences so that later uses of
-   * shared preferences access the in-memory versions and we don't have to bypass strict mode at
-   * every point in the application where shared preferences are accessed.
-   */
-  private static void warmupSharedPrefs(Application application) {
-    // From credential-encrypted (CE) storage, i.e.:
-    //    /data/data/com.android.dialer/shared_prefs
-
-    if (UserManagerCompat.isUserUnlocked(application)) {
-      // <package_name>_preferences.xml
-      PreferenceManager.getDefaultSharedPreferences(application);
-
-      // <package_name>.xml
-      application.getSharedPreferences(application.getPackageName(), Context.MODE_PRIVATE);
-    }
-
-    // From device-encrypted (DE) storage, i.e.:
-    //   /data/user_de/0/com.android.dialer/shared_prefs/
-
-    // <package_name>_preferences.xml
-    DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(application);
-  }
-
-  private static boolean isStrictModeAllowed() {
-    return BuildType.get() == BuildType.BUGFOOD;
-  }
-
-  /**
    * Set the recommended policy for the app.
    *
    * @param threadPenalties policy with preferred penalties. Detection bits will be ignored.
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index 9adc53b..3a0ac48 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -58,7 +58,7 @@
   @Override
   public boolean isAvailable(Context context) {
     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
-      LogUtil.v("LightbringerTech.isAvailable", "upgrade unavailable, only supported on O+");
+      LogUtil.v("LightbringerTech.isAvailable", "upgrade unavailable, only supported on N+");
       return false;
     }