Remove obsolete version checks and compat utilities after min SDK was bumped up to N.

Test: Existing tests
PiperOrigin-RevId: 190508397
Change-Id: Ia5f33e45af1d1cc666fec5f43efa564b2b68c193
diff --git a/java/com/android/contacts/common/ContactsUtils.java b/java/com/android/contacts/common/ContactsUtils.java
index bca8b62..7e44a26 100644
--- a/java/com/android/contacts/common/ContactsUtils.java
+++ b/java/com/android/contacts/common/ContactsUtils.java
@@ -17,8 +17,8 @@
 package com.android.contacts.common;
 
 import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Directory;
 import android.support.annotation.IntDef;
-import com.android.dialer.common.cp2.DirectoryCompat;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -60,9 +60,7 @@
   public static @UserType long determineUserType(Long directoryId, Long contactId) {
     // First check directory id
     if (directoryId != null) {
-      return DirectoryCompat.isEnterpriseDirectoryId(directoryId)
-          ? USER_TYPE_WORK
-          : USER_TYPE_CURRENT;
+      return Directory.isEnterpriseDirectoryId(directoryId) ? USER_TYPE_WORK : USER_TYPE_CURRENT;
     }
     // Only check contact id if directory id is null
     if (contactId != null && contactId != 0L && Contacts.isEnterpriseContactId(contactId)) {
diff --git a/java/com/android/contacts/common/compat/CallableCompat.java b/java/com/android/contacts/common/compat/CallableCompat.java
deleted file mode 100644
index 5e86f51..0000000
--- a/java/com/android/contacts/common/compat/CallableCompat.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.compat;
-
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.ContactsContract.CommonDataKinds.Callable;
-
-public class CallableCompat {
-
-  // TODO: Use N APIs
-  private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
-      Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
-
-  public static Uri getContentFilterUri() {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return ENTERPRISE_CONTENT_FILTER_URI;
-    }
-    return Callable.CONTENT_FILTER_URI;
-  }
-}
diff --git a/java/com/android/contacts/common/compat/ContactsCompat.java b/java/com/android/contacts/common/compat/ContactsCompat.java
deleted file mode 100644
index e0c9b7e..0000000
--- a/java/com/android/contacts/common/compat/ContactsCompat.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.compat;
-
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Contacts;
-
-/** Compatibility class for {@link ContactsContract.Contacts} */
-public class ContactsCompat {
-
-  // TODO: Use N APIs
-  private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
-      Uri.withAppendedPath(Contacts.CONTENT_URI, "filter_enterprise");
-
-  /** Not instantiable. */
-  private ContactsCompat() {}
-
-  public static Uri getContentUri() {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return ENTERPRISE_CONTENT_FILTER_URI;
-    }
-    return Contacts.CONTENT_FILTER_URI;
-  }
-}
diff --git a/java/com/android/contacts/common/compat/PhoneCompat.java b/java/com/android/contacts/common/compat/PhoneCompat.java
deleted file mode 100644
index 31db7b5..0000000
--- a/java/com/android/contacts/common/compat/PhoneCompat.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.compat;
-
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-
-public class PhoneCompat {
-
-  // TODO: Use N APIs
-  private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
-      Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
-
-  public static Uri getContentFilterUri() {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return ENTERPRISE_CONTENT_FILTER_URI;
-    }
-    return Phone.CONTENT_FILTER_URI;
-  }
-}
diff --git a/java/com/android/dialer/animation/AnimUtils.java b/java/com/android/dialer/animation/AnimUtils.java
index 9c9396e..9160cf5 100644
--- a/java/com/android/dialer/animation/AnimUtils.java
+++ b/java/com/android/dialer/animation/AnimUtils.java
@@ -22,17 +22,16 @@
 import android.view.View;
 import android.view.ViewPropertyAnimator;
 import android.view.animation.Interpolator;
-import com.android.dialer.compat.PathInterpolatorCompat;
+import android.view.animation.PathInterpolator;
 
 public class AnimUtils {
 
   public static final int DEFAULT_DURATION = -1;
   public static final int NO_DELAY = 0;
 
-  public static final Interpolator EASE_IN = PathInterpolatorCompat.create(0.0f, 0.0f, 0.2f, 1.0f);
-  public static final Interpolator EASE_OUT = PathInterpolatorCompat.create(0.4f, 0.0f, 1.0f, 1.0f);
-  public static final Interpolator EASE_OUT_EASE_IN =
-      PathInterpolatorCompat.create(0.4f, 0, 0.2f, 1);
+  public static final Interpolator EASE_IN = new PathInterpolator(0.0f, 0.0f, 0.2f, 1.0f);
+  public static final Interpolator EASE_OUT = new PathInterpolator(0.4f, 0.0f, 1.0f, 1.0f);
+  public static final Interpolator EASE_OUT_EASE_IN = new PathInterpolator(0.4f, 0, 0.2f, 1);
 
   public static void crossFadeViews(View fadeIn, View fadeOut, int duration) {
     fadeIn(fadeIn, duration);
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index de9b95e..d25a2f3 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -945,10 +945,8 @@
       Cursor cursor, int count, final CallLogListItemViewHolder views) {
     Assert.isMainThread();
     final String number = cursor.getString(CallLogQuery.NUMBER);
-    final String postDialDigits =
-        (VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
-    final String viaNumber =
-        (VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.VIA_NUMBER) : "";
+    final String postDialDigits = cursor.getString(CallLogQuery.POST_DIAL_DIGITS);
+    final String viaNumber = cursor.getString(CallLogQuery.VIA_NUMBER);
     final int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION);
     final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(cursor);
     final int transcriptionState =
diff --git a/java/com/android/dialer/app/list/DragDropController.java b/java/com/android/dialer/app/list/DragDropController.java
index 458e31e..1c33a8a 100644
--- a/java/com/android/dialer/app/list/DragDropController.java
+++ b/java/com/android/dialer/app/list/DragDropController.java
@@ -16,8 +16,6 @@
 
 package com.android.dialer.app.list;
 
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.view.View;
 import java.util.ArrayList;
 import java.util.List;
@@ -38,22 +36,15 @@
 
   /** @return True if the drag is started, false if the drag is cancelled for some reason. */
   boolean handleDragStarted(View v, int x, int y) {
-    int screenX = x;
-    int screenY = y;
-    // The coordinates in dragEvent of DragEvent.ACTION_DRAG_STARTED before NYC is window-related.
-    // This is fixed in NYC.
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      v.getLocationOnScreen(locationOnScreen);
-      screenX = x + locationOnScreen[0];
-      screenY = y + locationOnScreen[1];
-    }
-    final PhoneFavoriteSquareTileView tileView =
-        dragItemContainer.getViewForLocation(screenX, screenY);
+    v.getLocationOnScreen(locationOnScreen);
+    x = x + locationOnScreen[0];
+    y = y + locationOnScreen[1];
+    final PhoneFavoriteSquareTileView tileView = dragItemContainer.getViewForLocation(x, y);
     if (tileView == null) {
       return false;
     }
     for (int i = 0; i < onDragDropListeners.size(); i++) {
-      onDragDropListeners.get(i).onDragStarted(screenX, screenY, tileView);
+      onDragDropListeners.get(i).onDragStarted(x, y, tileView);
     }
 
     return true;
diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
index 09fe03e..6b763ae 100644
--- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java
+++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
@@ -128,7 +128,7 @@
       callSettingsHeader.titleRes = R.string.call_settings_label;
       callSettingsHeader.intent = callSettingsIntent;
       target.add(callSettingsHeader);
-    } else if ((VERSION.SDK_INT >= VERSION_CODES.N) || isPrimaryUser) {
+    } else if (isPrimaryUser) {
       Header phoneAccountSettingsHeader = new Header();
       Intent phoneAccountSettingsIntent = new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
       phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
diff --git a/java/com/android/dialer/common/cp2/DirectoryCompat.java b/java/com/android/dialer/common/cp2/DirectoryCompat.java
deleted file mode 100644
index 3e33394..0000000
--- a/java/com/android/dialer/common/cp2/DirectoryCompat.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.common.cp2;
-
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.ContactsContract.Directory;
-
-/** Compatibility utility for {@link Directory}. */
-public class DirectoryCompat {
-
-  public static Uri getContentUri() {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return Directory.ENTERPRISE_CONTENT_URI;
-    }
-    return Directory.CONTENT_URI;
-  }
-
-  public static boolean isInvisibleDirectory(long directoryId) {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return (directoryId == Directory.LOCAL_INVISIBLE
-          || directoryId == Directory.ENTERPRISE_LOCAL_INVISIBLE);
-    }
-    return directoryId == Directory.LOCAL_INVISIBLE;
-  }
-
-  public static boolean isRemoteDirectoryId(long directoryId) {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return Directory.isRemoteDirectoryId(directoryId);
-    }
-    return directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE;
-  }
-
-  public static boolean isEnterpriseDirectoryId(long directoryId) {
-    return VERSION.SDK_INT >= VERSION_CODES.N && Directory.isEnterpriseDirectoryId(directoryId);
-  }
-
-  public static boolean isOnlyEnterpriseDirectoryId(long directoryId) {
-    return isEnterpriseDirectoryId(directoryId) && !isRemoteDirectoryId(directoryId);
-  }
-}
diff --git a/java/com/android/dialer/common/cp2/DirectoryUtils.java b/java/com/android/dialer/common/cp2/DirectoryUtils.java
new file mode 100644
index 0000000..fa5a226
--- /dev/null
+++ b/java/com/android/dialer/common/cp2/DirectoryUtils.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.common.cp2;
+
+import android.provider.ContactsContract.Directory;
+
+/** Utilities for {@link Directory}. */
+public class DirectoryUtils {
+
+  /** Returns true if the given ID belongs to an invisible directory. */
+  public static boolean isInvisibleDirectoryId(long directoryId) {
+    return directoryId == Directory.LOCAL_INVISIBLE
+        || directoryId == Directory.ENTERPRISE_LOCAL_INVISIBLE;
+  }
+
+  /** Returns true if the given ID belongs to a local enterprise directory. */
+  public static boolean isLocalEnterpriseDirectoryId(long directoryId) {
+    return Directory.isEnterpriseDirectoryId(directoryId)
+        && !Directory.isRemoteDirectoryId(directoryId);
+  }
+}
diff --git a/java/com/android/dialer/compat/ActivityCompat.java b/java/com/android/dialer/compat/ActivityCompat.java
deleted file mode 100644
index e59b115..0000000
--- a/java/com/android/dialer/compat/ActivityCompat.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.compat;
-
-import android.app.Activity;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-
-/** Utility for calling methods introduced after Marshmallow for Activities. */
-public class ActivityCompat {
-
-  public static boolean isInMultiWindowMode(Activity activity) {
-    return VERSION.SDK_INT >= VERSION_CODES.N && activity.isInMultiWindowMode();
-  }
-}
diff --git a/java/com/android/dialer/compat/CompatUtils.java b/java/com/android/dialer/compat/CompatUtils.java
index d09f8b0..f0039e9 100644
--- a/java/com/android/dialer/compat/CompatUtils.java
+++ b/java/com/android/dialer/compat/CompatUtils.java
@@ -16,15 +16,14 @@
 package com.android.dialer.compat;
 
 import android.content.Context;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.LocaleList;
 import java.util.Locale;
 
-/** TODO(calderwoodra): documentation */
+/** TODO(linyuh): Remove deprecated methods and rename this class. */
 public final class CompatUtils {
 
   /** PrioritizedMimeType is added in API level 23. */
+  @Deprecated
   public static boolean hasPrioritizedMimeType() {
     return true;
   }
@@ -35,6 +34,7 @@
    *
    * @return {@code true} if multi-SIM capability is available, {@code false} otherwise.
    */
+  @Deprecated
   public static boolean isMSIMCompatible() {
     return true;
   }
@@ -45,6 +45,7 @@
    *
    * @return {@code true} if video calling is allowed, {@code false} otherwise.
    */
+  @Deprecated
   public static boolean isVideoCompatible() {
     return true;
   }
@@ -55,6 +56,7 @@
    *
    * @return {@code true} if video presence checking is allowed, {@code false} otherwise.
    */
+  @Deprecated
   public static boolean isVideoPresenceCompatible() {
     return true;
   }
@@ -65,20 +67,17 @@
    *
    * @return {@code true} if call subject is a feature on this device, {@code false} otherwise.
    */
+  @Deprecated
   public static boolean isCallSubjectCompatible() {
     return true;
   }
 
   /** Returns locale of the device. */
   public static Locale getLocale(Context context) {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      LocaleList localList = context.getResources().getConfiguration().getLocales();
-      if (!localList.isEmpty()) {
-        return localList.get(0);
-      }
-      return Locale.getDefault();
-    } else {
-      return context.getResources().getConfiguration().locale;
+    LocaleList localList = context.getResources().getConfiguration().getLocales();
+    if (!localList.isEmpty()) {
+      return localList.get(0);
     }
+    return Locale.getDefault();
   }
 }
diff --git a/java/com/android/dialer/compat/PathInterpolatorCompat.java b/java/com/android/dialer/compat/PathInterpolatorCompat.java
deleted file mode 100644
index d0d410d..0000000
--- a/java/com/android/dialer/compat/PathInterpolatorCompat.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.compat;
-
-import android.graphics.Path;
-import android.graphics.PathMeasure;
-import android.os.Build;
-import android.view.animation.Interpolator;
-import android.view.animation.PathInterpolator;
-
-public class PathInterpolatorCompat {
-
-  public static Interpolator create(
-      float controlX1, float controlY1, float controlX2, float controlY2) {
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-      return new PathInterpolator(controlX1, controlY1, controlX2, controlY2);
-    }
-    return new PathInterpolatorBase(controlX1, controlY1, controlX2, controlY2);
-  }
-
-  private static class PathInterpolatorBase implements Interpolator {
-
-    /** Governs the accuracy of the approximation of the {@link Path}. */
-    private static final float PRECISION = 0.002f;
-
-    private final float[] x;
-    private final float[] y;
-
-    public PathInterpolatorBase(Path path) {
-      final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */);
-
-      final float pathLength = pathMeasure.getLength();
-      final int numPoints = (int) (pathLength / PRECISION) + 1;
-
-      x = new float[numPoints];
-      y = new float[numPoints];
-
-      final float[] position = new float[2];
-      for (int i = 0; i < numPoints; ++i) {
-        final float distance = (i * pathLength) / (numPoints - 1);
-        pathMeasure.getPosTan(distance, position, null /* tangent */);
-
-        x[i] = position[0];
-        y[i] = position[1];
-      }
-    }
-
-    public PathInterpolatorBase(float controlX, float controlY) {
-      this(createQuad(controlX, controlY));
-    }
-
-    public PathInterpolatorBase(
-        float controlX1, float controlY1, float controlX2, float controlY2) {
-      this(createCubic(controlX1, controlY1, controlX2, controlY2));
-    }
-
-    private static Path createQuad(float controlX, float controlY) {
-      final Path path = new Path();
-      path.moveTo(0.0f, 0.0f);
-      path.quadTo(controlX, controlY, 1.0f, 1.0f);
-      return path;
-    }
-
-    private static Path createCubic(
-        float controlX1, float controlY1, float controlX2, float controlY2) {
-      final Path path = new Path();
-      path.moveTo(0.0f, 0.0f);
-      path.cubicTo(controlX1, controlY1, controlX2, controlY2, 1.0f, 1.0f);
-      return path;
-    }
-
-    @Override
-    public float getInterpolation(float t) {
-      if (t <= 0.0f) {
-        return 0.0f;
-      } else if (t >= 1.0f) {
-        return 1.0f;
-      }
-
-      // Do a binary search for the correct x to interpolate between.
-      int startIndex = 0;
-      int endIndex = x.length - 1;
-      while (endIndex - startIndex > 1) {
-        int midIndex = (startIndex + endIndex) / 2;
-        if (t < x[midIndex]) {
-          endIndex = midIndex;
-        } else {
-          startIndex = midIndex;
-        }
-      }
-
-      final float xRange = x[endIndex] - x[startIndex];
-      if (xRange == 0) {
-        return y[startIndex];
-      }
-
-      final float tInRange = t - x[startIndex];
-      final float fraction = tInRange / xRange;
-
-      final float startY = y[startIndex];
-      final float endY = y[endIndex];
-
-      return startY + (fraction * (endY - startY));
-    }
-  }
-}
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
index e497989..2b98f26 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
@@ -19,15 +19,13 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract;
+import android.provider.ContactsContract.Directory;
 import android.support.annotation.VisibleForTesting;
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
-import com.android.dialer.common.cp2.DirectoryCompat;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.phonelookup.PhoneLookup;
 import com.android.dialer.phonelookup.PhoneLookupInfo;
@@ -80,7 +78,7 @@
               appContext
                   .getContentResolver()
                   .query(
-                      DirectoryCompat.getContentUri(),
+                      Directory.ENTERPRISE_CONTENT_URI,
                       /* projection = */ new String[] {ContactsContract.Directory._ID},
                       /* selection = */ null,
                       /* selectionArgs = */ null,
@@ -178,13 +176,8 @@
 
   @VisibleForTesting
   static Uri getContentUriForContacts(String number, long directoryId) {
-    Uri baseUri =
-        VERSION.SDK_INT >= VERSION_CODES.N
-            ? ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI
-            : ContactsContract.PhoneLookup.CONTENT_FILTER_URI;
-
     Uri.Builder builder =
-        baseUri
+        ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI
             .buildUpon()
             .appendPath(number)
             .appendQueryParameter(
@@ -197,8 +190,8 @@
   }
 
   private static boolean isExtendedDirectory(long directoryId) {
-    return DirectoryCompat.isRemoteDirectoryId(directoryId)
-        || DirectoryCompat.isEnterpriseDirectoryId(directoryId);
+    return Directory.isRemoteDirectoryId(directoryId)
+        || Directory.isEnterpriseDirectoryId(directoryId);
   }
 
   @Override
diff --git a/java/com/android/dialer/phonenumbercache/CallLogQuery.java b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
index 2ebc302..488aa26 100644
--- a/java/com/android/dialer/phonenumbercache/CallLogQuery.java
+++ b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
@@ -63,7 +63,7 @@
   @RequiresApi(VERSION_CODES.O)
   public static final int TRANSCRIPTION_STATE = 26;
 
-  private static final String[] PROJECTION_M =
+  private static final String[] PROJECTION_N =
       new String[] {
         Calls._ID, // 0
         Calls.NUMBER, // 1
@@ -89,17 +89,10 @@
         Calls.DATA_USAGE, // 21
         Calls.TRANSCRIPTION, // 22
         Calls.CACHED_PHOTO_URI, // 23
+        CallLog.Calls.POST_DIAL_DIGITS, // 24
+        CallLog.Calls.VIA_NUMBER // 25
       };
 
-  private static final String[] PROJECTION_N;
-
-  static {
-    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_M));
-    projectionList.add(CallLog.Calls.POST_DIAL_DIGITS);
-    projectionList.add(CallLog.Calls.VIA_NUMBER);
-    PROJECTION_N = projectionList.toArray(new String[projectionList.size()]);
-  }
-
   private static final String[] PROJECTION_O;
 
   // TODO(mdooley): remove when this becomes a public api
@@ -114,12 +107,6 @@
 
   @NonNull
   public static String[] getProjection() {
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
-      return PROJECTION_O;
-    }
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return PROJECTION_N;
-    }
-    return PROJECTION_M;
+    return VERSION.SDK_INT >= VERSION_CODES.O ? PROJECTION_O : PROJECTION_N;
   }
 }
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index d6e378c..777175e 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -35,7 +35,6 @@
 import com.android.contacts.common.util.Constants;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.cp2.DirectoryCompat;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.CequintCallerIdManager;
 import com.android.dialer.oem.CequintCallerIdManager.CequintCallerIdContact;
@@ -107,12 +106,12 @@
 
     if (directoryId != null) {
       // Query {@link Contacts#CONTENT_LOOKUP_URI} with work lookup key is not allowed.
-      if (DirectoryCompat.isEnterpriseDirectoryId(directoryId)) {
+      if (Directory.isEnterpriseDirectoryId(directoryId)) {
         return null;
       }
 
       // Skip this to avoid an extra remote network call for alternative name
-      if (DirectoryCompat.isRemoteDirectoryId(directoryId)) {
+      if (Directory.isRemoteDirectoryId(directoryId)) {
         return null;
       }
     }
@@ -289,7 +288,7 @@
     try {
       while (cursor.moveToNext()) {
         long directoryId = cursor.getLong(idIndex);
-        if (DirectoryCompat.isRemoteDirectoryId(directoryId)) {
+        if (Directory.isRemoteDirectoryId(directoryId)) {
           remoteDirectories.add(directoryId);
         }
       }
@@ -323,7 +322,7 @@
             .getContentResolver()
             .query(
                 uri,
-                PhoneQuery.getPhoneLookupProjection(uri),
+                PhoneQuery.getPhoneLookupProjection(),
                 null /* selection */,
                 null /* selectionArgs */,
                 null /* sortOrder */)) {
diff --git a/java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java b/java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java
deleted file mode 100644
index 74175e8..0000000
--- a/java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.phonenumbercache;
-
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.PhoneLookup;
-
-public final class PhoneLookupUtil {
-
-  private PhoneLookupUtil() {}
-
-  /** @return the column name that stores contact id for phone lookup query. */
-  public static String getContactIdColumnNameForUri(Uri phoneLookupUri) {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return PhoneLookup.CONTACT_ID;
-    }
-    // In pre-N, contact id is stored in {@link PhoneLookup#_ID} in non-sip query.
-    boolean isSip =
-        phoneLookupUri.getBooleanQueryParameter(
-            ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false);
-    return (isSip) ? PhoneLookup.CONTACT_ID : ContactsContract.PhoneLookup._ID;
-  }
-}
diff --git a/java/com/android/dialer/phonenumbercache/PhoneQuery.java b/java/com/android/dialer/phonenumbercache/PhoneQuery.java
index 5ddd5f8..a43e489 100644
--- a/java/com/android/dialer/phonenumbercache/PhoneQuery.java
+++ b/java/com/android/dialer/phonenumbercache/PhoneQuery.java
@@ -16,10 +16,6 @@
 
 package com.android.dialer.phonenumbercache;
 
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.PhoneLookup;
@@ -27,27 +23,27 @@
 /** The queries to look up the {@link ContactInfo} for a given number in the Call Log. */
 final class PhoneQuery {
 
-  public static final int PERSON_ID = 0;
-  public static final int NAME = 1;
-  public static final int PHONE_TYPE = 2;
-  public static final int LABEL = 3;
-  public static final int MATCHED_NUMBER = 4;
-  public static final int NORMALIZED_NUMBER = 5;
-  public static final int PHOTO_ID = 6;
-  public static final int LOOKUP_KEY = 7;
-  public static final int PHOTO_URI = 8;
+  static final int PERSON_ID = 0;
+  static final int NAME = 1;
+  static final int PHONE_TYPE = 2;
+  static final int LABEL = 3;
+  static final int MATCHED_NUMBER = 4;
+  static final int NORMALIZED_NUMBER = 5;
+  static final int PHOTO_ID = 6;
+  static final int LOOKUP_KEY = 7;
+  static final int PHOTO_URI = 8;
   /** Projection to look up a contact's DISPLAY_NAME_ALTERNATIVE */
-  public static final String[] DISPLAY_NAME_ALTERNATIVE_PROJECTION =
+  static final String[] DISPLAY_NAME_ALTERNATIVE_PROJECTION =
       new String[] {
         Contacts.DISPLAY_NAME_ALTERNATIVE,
       };
 
-  public static final int NAME_ALTERNATIVE = 0;
+  static final int NAME_ALTERNATIVE = 0;
 
-  public static final String[] ADDITIONAL_CONTACT_INFO_PROJECTION =
+  static final String[] ADDITIONAL_CONTACT_INFO_PROJECTION =
       new String[] {Phone.DISPLAY_NAME_ALTERNATIVE, Phone.CARRIER_PRESENCE};
-  public static final int ADDITIONAL_CONTACT_INFO_DISPLAY_NAME_ALTERNATIVE = 0;
-  public static final int ADDITIONAL_CONTACT_INFO_CARRIER_PRESENCE = 1;
+  static final int ADDITIONAL_CONTACT_INFO_DISPLAY_NAME_ALTERNATIVE = 0;
+  static final int ADDITIONAL_CONTACT_INFO_CARRIER_PRESENCE = 1;
 
   /**
    * Projection to look up the ContactInfo. Does not include DISPLAY_NAME_ALTERNATIVE as that column
@@ -66,31 +62,8 @@
         PhoneLookup.LOOKUP_KEY,
         PhoneLookup.PHOTO_URI
       };
-  /**
-   * Similar to {@link PHONE_LOOKUP_PROJECTION}. In pre-N, contact id is stored in {@link
-   * PhoneLookup#_ID} in non-sip query.
-   */
-  private static final String[] BACKWARD_COMPATIBLE_NON_SIP_PHONE_LOOKUP_PROJECTION =
-      new String[] {
-        PhoneLookup._ID,
-        PhoneLookup.DISPLAY_NAME,
-        PhoneLookup.TYPE,
-        PhoneLookup.LABEL,
-        PhoneLookup.NUMBER,
-        PhoneLookup.NORMALIZED_NUMBER,
-        PhoneLookup.PHOTO_ID,
-        PhoneLookup.LOOKUP_KEY,
-        PhoneLookup.PHOTO_URI
-      };
 
-  public static String[] getPhoneLookupProjection(Uri phoneLookupUri) {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
+  static String[] getPhoneLookupProjection() {
       return PHONE_LOOKUP_PROJECTION;
-    }
-    // Pre-N
-    boolean isSip =
-        phoneLookupUri.getBooleanQueryParameter(
-            ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false);
-    return (isSip) ? PHONE_LOOKUP_PROJECTION : BACKWARD_COMPATIBLE_NON_SIP_PHONE_LOOKUP_PROJECTION;
   }
 }
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
index 4d7ea3f..754e055 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
@@ -20,9 +20,6 @@
 import android.content.Context;
 import android.content.CursorLoader;
 import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract;
 import android.support.annotation.Nullable;
 import com.android.dialer.common.LogUtil;
@@ -51,7 +48,13 @@
   private static final int PHOTO_SUPPORT = 2;
 
   public DirectoriesCursorLoader(Context context) {
-    super(context, getContentUri(), PROJECTION, null, null, ContactsContract.Directory._ID);
+    super(
+        context,
+        ContactsContract.Directory.ENTERPRISE_CONTENT_URI,
+        PROJECTION,
+        null,
+        null,
+        ContactsContract.Directory._ID);
   }
 
   @Override
@@ -88,12 +91,6 @@
     return directories;
   }
 
-  private static Uri getContentUri() {
-    return VERSION.SDK_INT >= VERSION_CODES.N
-        ? ContactsContract.Directory.ENTERPRISE_CONTENT_URI
-        : ContactsContract.Directory.CONTENT_URI;
-  }
-
   /** POJO representing the results returned from {@link DirectoriesCursorLoader}. */
   @AutoValue
   public abstract static class Directory {
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
index fbb662c..29127ff 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
@@ -29,7 +29,7 @@
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
-import com.android.dialer.common.cp2.DirectoryCompat;
+import com.android.dialer.common.cp2.DirectoryUtils;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.searchfragment.common.Projections;
@@ -80,7 +80,7 @@
     nameView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name, context));
     numberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, secondaryInfo, context));
     workBadge.setVisibility(
-        DirectoryCompat.isOnlyEnterpriseDirectoryId(cursor.getDirectoryId())
+        DirectoryUtils.isLocalEnterpriseDirectoryId(cursor.getDirectoryId())
             ? View.VISIBLE
             : View.GONE);
 
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
index 0c1ad83..b081de0 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
@@ -23,7 +23,7 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import com.android.dialer.common.Assert;
-import com.android.dialer.common.cp2.DirectoryCompat;
+import com.android.dialer.common.cp2.DirectoryUtils;
 import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
 import java.util.ArrayList;
@@ -101,7 +101,7 @@
 
   private static MatrixCursor createHeaderCursor(Context context, String name, long id) {
     MatrixCursor headerCursor = new MatrixCursor(PROJECTION, 1);
-    if (DirectoryCompat.isOnlyEnterpriseDirectoryId(id)) {
+    if (DirectoryUtils.isLocalEnterpriseDirectoryId(id)) {
       headerCursor.addRow(
           new Object[] {context.getString(R.string.directory_search_label_work), id});
     } else {
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
index d719cb9..bf56a1c 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
@@ -21,13 +21,11 @@
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.support.annotation.NonNull;
 import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.cp2.DirectoryCompat;
+import com.android.dialer.common.cp2.DirectoryUtils;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
 import java.util.ArrayList;
@@ -71,14 +69,14 @@
     for (int i = 0; i < directories.size(); i++) {
       Directory directory = directories.get(i);
 
-      if (!DirectoryCompat.isRemoteDirectoryId(directory.getId())
-          && !DirectoryCompat.isEnterpriseDirectoryId(directory.getId())) {
+      if (!ContactsContract.Directory.isRemoteDirectoryId(directory.getId())
+          && !ContactsContract.Directory.isEnterpriseDirectoryId(directory.getId())) {
         cursors[i] = null;
         continue;
       }
 
       // Filter out invisible directories.
-      if (DirectoryCompat.isInvisibleDirectory(directory.getId())) {
+      if (DirectoryUtils.isInvisibleDirectoryId(directory.getId())) {
         cursors[i] = null;
         continue;
       }
@@ -145,12 +143,7 @@
 
   @VisibleForTesting
   static Uri getContentFilterUri(String query, long directoryId) {
-    Uri baseUri =
-        VERSION.SDK_INT >= VERSION_CODES.N
-            ? ENTERPRISE_CONTENT_FILTER_URI
-            : Phone.CONTENT_FILTER_URI;
-
-    return baseUri
+    return ENTERPRISE_CONTENT_FILTER_URI
         .buildUpon()
         .appendPath(query)
         .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId))
diff --git a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
index 09fdf5c..f3ce70c 100644
--- a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
+++ b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
@@ -18,6 +18,7 @@
 
 import android.app.Application;
 import android.os.Build;
+import android.os.Build.VERSION_CODES;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.StrictMode;
@@ -91,7 +92,7 @@
         new StrictMode.VmPolicy.Builder(vmPenalties)
             .detectLeakedClosableObjects()
             .detectLeakedSqlLiteObjects();
-    if (Build.VERSION.SDK_INT >= 26) {
+    if (Build.VERSION.SDK_INT >= VERSION_CODES.O) {
       vmPolicyBuilder.detectContentUriWithoutPermission();
       // TODO(azlatin): Enable detecting untagged sockets once: a bug is fixed.
       // vmPolicyBuilder.detectUntaggedSockets();
diff --git a/java/com/android/dialer/util/DialerUtils.java b/java/com/android/dialer/util/DialerUtils.java
index 7f7b9da..49a0733 100644
--- a/java/com/android/dialer/util/DialerUtils.java
+++ b/java/com/android/dialer/util/DialerUtils.java
@@ -15,6 +15,7 @@
  */
 package com.android.dialer.util;
 
+import android.annotation.SuppressLint;
 import android.app.AlertDialog;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -22,8 +23,6 @@
 import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
 import android.graphics.Point;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
@@ -131,12 +130,12 @@
    * currently active call over LTE. Regardless of the country or carrier, the radio will drop an
    * active LTE call if a WPS number is dialed, so this warning is necessary.
    */
+  @SuppressLint("MissingPermission")
   private static boolean shouldWarnForOutgoingWps(Context context, String number) {
     if (number != null && number.startsWith(WPS_PREFIX)) {
       TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
       boolean isOnVolte =
-          VERSION.SDK_INT >= VERSION_CODES.N
-              && telephonyManager.getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_LTE;
+          telephonyManager.getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_LTE;
       boolean hasCurrentActiveCall =
           telephonyManager.getCallState() == TelephonyManager.CALL_STATE_OFFHOOK;
       return isOnVolte && hasCurrentActiveCall;
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java b/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java
index 9b7b7fd..4f4dbbb 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java
@@ -107,16 +107,10 @@
     }
     isAirplaneMode =
         Settings.System.getInt(context.getContentResolver(), Global.AIRPLANE_MODE_ON, 0) != 0;
-
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      quotaOccupied =
-          getInt(statusCursor, VoicemailStatusQuery.QUOTA_OCCUPIED_INDEX, Status.QUOTA_UNAVAILABLE);
-      quotaTotal =
-          getInt(statusCursor, VoicemailStatusQuery.QUOTA_TOTAL_INDEX, Status.QUOTA_UNAVAILABLE);
-    } else {
-      quotaOccupied = Status.QUOTA_UNAVAILABLE;
-      quotaTotal = Status.QUOTA_UNAVAILABLE;
-    }
+    quotaOccupied =
+        getInt(statusCursor, VoicemailStatusQuery.QUOTA_OCCUPIED_INDEX, Status.QUOTA_UNAVAILABLE);
+    quotaTotal =
+        getInt(statusCursor, VoicemailStatusQuery.QUOTA_TOTAL_INDEX, Status.QUOTA_UNAVAILABLE);
   }
 
   private VoicemailStatus(Builder builder) {
diff --git a/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java b/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java
index 4a6e9f7..8923f74 100644
--- a/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java
+++ b/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java
@@ -51,28 +51,24 @@
   @RequiresApi(VERSION_CODES.N_MR1)
   public static final int SOURCE_TYPE_INDEX = 10;
 
-  private static final String[] PROJECTION_M =
+  @RequiresApi(VERSION_CODES.N)
+  private static final String[] PROJECTION_N =
       new String[] {
         Status.SOURCE_PACKAGE, // 0
         Status.SETTINGS_URI, // 1
         Status.VOICEMAIL_ACCESS_URI, // 2
         Status.CONFIGURATION_STATE, // 3
         Status.DATA_CHANNEL_STATE, // 4
-        Status.NOTIFICATION_CHANNEL_STATE // 5
+        Status.NOTIFICATION_CHANNEL_STATE, // 5
+        Status.QUOTA_OCCUPIED, // 6
+        Status.QUOTA_TOTAL // 7
       };
 
-  @RequiresApi(VERSION_CODES.N)
-  private static final String[] PROJECTION_N;
-
   @RequiresApi(VERSION_CODES.N_MR1)
   private static final String[] PROJECTION_NMR1;
 
   static {
-    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_M));
-    projectionList.add(Status.QUOTA_OCCUPIED); // 6
-    projectionList.add(Status.QUOTA_TOTAL); // 7
-    PROJECTION_N = projectionList.toArray(new String[projectionList.size()]);
-
+    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_N));
     projectionList.add(Status.PHONE_ACCOUNT_COMPONENT_NAME); // 8
     projectionList.add(Status.PHONE_ACCOUNT_ID); // 9
     projectionList.add(Status.SOURCE_TYPE); // 10
@@ -80,12 +76,6 @@
   }
 
   public static String[] getProjection() {
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
-      return PROJECTION_NMR1;
-    }
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return PROJECTION_N;
-    }
-    return PROJECTION_M;
+    return VERSION.SDK_INT >= VERSION_CODES.N_MR1 ? PROJECTION_NMR1 : PROJECTION_N;
   }
 }
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 316b6cc..9c5e062 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -46,7 +46,6 @@
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
@@ -836,7 +835,7 @@
       LogUtil.i("CallCardPresenter.getLocationFragment", "low battery.");
       return false;
     }
-    if (ActivityCompat.isInMultiWindowMode(inCallScreen.getInCallScreenFragment().getActivity())) {
+    if (inCallScreen.getInCallScreenFragment().getActivity().isInMultiWindowMode()) {
       LogUtil.i("CallCardPresenter.getLocationFragment", "in multi-window mode");
       return false;
     }
diff --git a/java/com/android/incallui/CallerInfo.java b/java/com/android/incallui/CallerInfo.java
index 0aedea5..817535f 100644
--- a/java/com/android/incallui/CallerInfo.java
+++ b/java/com/android/incallui/CallerInfo.java
@@ -21,7 +21,6 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -37,7 +36,6 @@
 import com.android.contacts.common.util.TelephonyManagerUtils;
 import com.android.dialer.logging.ContactLookupResult;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
-import com.android.dialer.phonenumbercache.PhoneLookupUtil;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 
 /**
@@ -48,7 +46,6 @@
 
   private static final String TAG = "CallerInfo";
 
-  // We should always use this projection starting from N onward.
   @RequiresApi(VERSION_CODES.N)
   private static final String[] DEFAULT_PHONELOOKUP_PROJECTION =
       new String[] {
@@ -64,20 +61,6 @@
         PhoneLookup.SEND_TO_VOICEMAIL
       };
 
-  // In pre-N, contact id is stored in {@link PhoneLookup._ID} in non-sip query.
-  private static final String[] BACKWARD_COMPATIBLE_NON_SIP_DEFAULT_PHONELOOKUP_PROJECTION =
-      new String[] {
-        PhoneLookup._ID,
-        PhoneLookup.DISPLAY_NAME,
-        PhoneLookup.LOOKUP_KEY,
-        PhoneLookup.NUMBER,
-        PhoneLookup.NORMALIZED_NUMBER,
-        PhoneLookup.LABEL,
-        PhoneLookup.TYPE,
-        PhoneLookup.PHOTO_URI,
-        PhoneLookup.CUSTOM_RINGTONE,
-        PhoneLookup.SEND_TO_VOICEMAIL
-      };
   /**
    * Please note that, any one of these member variables can be null, and any accesses to them
    * should be prepared to handle such a case.
@@ -176,17 +159,8 @@
     userType = ContactsUtils.USER_TYPE_CURRENT;
   }
 
-  public static String[] getDefaultPhoneLookupProjection(Uri phoneLookupUri) {
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      return DEFAULT_PHONELOOKUP_PROJECTION;
-    }
-    // Pre-N
-    boolean isSip =
-        phoneLookupUri.getBooleanQueryParameter(
-            ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false);
-    return (isSip)
-        ? DEFAULT_PHONELOOKUP_PROJECTION
-        : BACKWARD_COMPATIBLE_NON_SIP_DEFAULT_PHONELOOKUP_PROJECTION;
+  static String[] getDefaultPhoneLookupProjection() {
+    return DEFAULT_PHONELOOKUP_PROJECTION;
   }
 
   /**
@@ -276,9 +250,7 @@
     columnIndex = getColumnIndexForPersonId(contactRef, cursor);
     if (columnIndex != -1) {
       contactId = cursor.getLong(columnIndex);
-      // QuickContacts in M doesn't support enterprise contact id
-      if (contactId != 0
-          && (VERSION.SDK_INT >= VERSION_CODES.N || !Contacts.isEnterpriseContactId(contactId))) {
+      if (contactId != 0 && !Contacts.isEnterpriseContactId(contactId)) {
         info.contactIdOrZero = contactId;
         Log.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero);
       }
@@ -453,7 +425,7 @@
       // for phone numbers.
       // MIME type: PhoneLookup.CONTENT_TYPE (= "vnd.android.cursor.dir/phone_lookup")
       Log.v(TAG, "'phone_lookup' URI; using PhoneLookup._ID");
-      columnName = PhoneLookupUtil.getContactIdColumnNameForUri(contactRef);
+      columnName = PhoneLookup.CONTACT_ID;
     } else {
       Log.v(TAG, "Unexpected prefix for contactRef '" + url + "'");
     }
diff --git a/java/com/android/incallui/CallerInfoAsyncQuery.java b/java/com/android/incallui/CallerInfoAsyncQuery.java
index 4170cc3..0ac252a 100644
--- a/java/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/java/com/android/incallui/CallerInfoAsyncQuery.java
@@ -24,7 +24,6 @@
 import android.database.Cursor;
 import android.database.SQLException;
 import android.net.Uri;
-import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.os.Handler;
 import android.os.Looper;
@@ -36,7 +35,6 @@
 import android.support.annotation.RequiresPermission;
 import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
-import com.android.dialer.common.cp2.DirectoryCompat;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
@@ -174,7 +172,7 @@
       cw.event = EVENT_NEW_QUERY;
     }
 
-    String[] proejection = CallerInfo.getDefaultPhoneLookupProjection(contactRef);
+    String[] proejection = CallerInfo.getDefaultPhoneLookupProjection();
     handler.startQuery(
         token,
         cw, // cookie
@@ -223,10 +221,7 @@
   private static long[] getDirectoryIds(Context context) {
     ArrayList<Long> results = new ArrayList<>();
 
-    Uri uri = Directory.CONTENT_URI;
-    if (VERSION.SDK_INT >= VERSION_CODES.N) {
-      uri = Uri.withAppendedPath(ContactsContract.AUTHORITY_URI, "directories_enterprise");
-    }
+    Uri uri = Uri.withAppendedPath(ContactsContract.AUTHORITY_URI, "directories_enterprise");
 
     ContentResolver cr = context.getContentResolver();
     Cursor cursor = cr.query(uri, DIRECTORY_PROJECTION, null, null, null);
@@ -244,7 +239,7 @@
       int idIndex = cursor.getColumnIndex(Directory._ID);
       while (cursor.moveToNext()) {
         long id = cursor.getLong(idIndex);
-        if (DirectoryCompat.isRemoteDirectoryId(id)) {
+        if (Directory.isRemoteDirectoryId(id)) {
           results.add(id);
         }
       }
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index b79fd64..165ec13 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -22,8 +22,6 @@
 import android.graphics.drawable.Drawable;
 import android.media.RingtoneManager;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.SystemClock;
 import android.os.Trace;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -641,10 +639,7 @@
       cce.photo = null;
     }
 
-    // Support any contact id in N because QuickContacts in N starts supporting enterprise
-    // contact id
-    if (info.lookupKeyOrNull != null
-        && (VERSION.SDK_INT >= VERSION_CODES.N || info.contactIdOrZero != 0)) {
+    if (info.lookupKeyOrNull != null && info.contactIdOrZero != 0) {
       cce.lookupUri = Contacts.getLookupUri(info.contactIdOrZero, info.lookupKeyOrNull);
     } else {
       Log.v(TAG, "lookup key is null or contact ID is 0 on M. Don't create a lookup uri.");
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index be36509..3236e16 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -60,7 +60,6 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.compat.CompatUtils;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.logging.DialerImpression.Type;
@@ -465,8 +464,7 @@
       InCallPresenter.getInstance().onUiShowing(true);
     }
 
-    if (ActivityCompat.isInMultiWindowMode(this)
-        && !getResources().getBoolean(R.bool.incall_dialpad_allowed)) {
+    if (isInMultiWindowMode() && !getResources().getBoolean(R.bool.incall_dialpad_allowed)) {
       // Hide the dialpad because there may not be enough room
       showDialpadFragment(false, false);
     }
@@ -926,7 +924,7 @@
     @ColorInt int bottom;
     @ColorInt int gray = 0x66000000;
 
-    if (ActivityCompat.isInMultiWindowMode(this)) {
+    if (isInMultiWindowMode()) {
       top = themeColorManager.getBackgroundColorSolid();
       middle = themeColorManager.getBackgroundColorSolid();
       bottom = themeColorManager.getBackgroundColorSolid();
@@ -1236,7 +1234,7 @@
   }
 
   private void updateNavigationBar(boolean isDialpadVisible) {
-    if (ActivityCompat.isInMultiWindowMode(this)) {
+    if (isInMultiWindowMode()) {
       return;
     }
 
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 05fd4f6..e5271f5 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -53,7 +53,6 @@
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.MathUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
@@ -411,7 +410,7 @@
       LogUtil.i("AnswerFragment.setTextResponses", "no text responses, hiding secondary button");
       this.textResponses = null;
       secondaryButton.setVisibility(View.INVISIBLE);
-    } else if (ActivityCompat.isInMultiWindowMode(getActivity())) {
+    } else if (getActivity().isInMultiWindowMode()) {
       LogUtil.i("AnswerFragment.setTextResponses", "in multiwindow, hiding secondary button");
       this.textResponses = null;
       secondaryButton.setVisibility(View.INVISIBLE);
@@ -731,7 +730,7 @@
     updateImportanceBadgeVisibility();
 
     contactGridManager = new ContactGridManager(view, null, 0, false /* showAnonymousAvatar */);
-    boolean isInMultiWindowMode = ActivityCompat.isInMultiWindowMode(getActivity());
+    boolean isInMultiWindowMode = getActivity().isInMultiWindowMode();
     contactGridManager.onMultiWindowModeChanged(isInMultiWindowMode);
 
     Fragment answerMethod =
diff --git a/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java b/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
index ccb132b..f318f08 100644
--- a/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
+++ b/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
@@ -22,7 +22,6 @@
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.app.Fragment;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.incallui.util.AccessibilityUtil;
 
 /** Creates the appropriate {@link AnswerMethod} for the circumstances. */
@@ -59,7 +58,6 @@
       return true;
     }
 
-    return AccessibilityUtil.isTouchExplorationEnabled(activity)
-        || ActivityCompat.isInMultiWindowMode(activity);
+    return AccessibilityUtil.isTouchExplorationEnabled(activity) || activity.isInMultiWindowMode();
   }
 }
diff --git a/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java b/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java
index 67b1b96..1086449 100644
--- a/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java
+++ b/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java
@@ -36,7 +36,6 @@
 import android.widget.TextView;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.incallui.answer.impl.answermethod.FlingUpDownTouchHandler.OnProgressChangedListener;
 import com.android.incallui.util.AccessibilityUtil;
 
@@ -157,8 +156,7 @@
     if (hintTextView == null) {
       return;
     }
-    hintTextView.setVisibility(
-        ActivityCompat.isInMultiWindowMode(getActivity()) ? View.GONE : View.VISIBLE);
+    hintTextView.setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     if (!TextUtils.isEmpty(hintText) && !buttonClicked) {
       hintTextView.setText(hintText);
       hintTextView.animate().alpha(1f).start();
diff --git a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
index 487283a..c8647fc 100644
--- a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
+++ b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
@@ -19,8 +19,6 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.RectF;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.support.annotation.Nullable;
 import android.text.Layout.Alignment;
 import android.text.StaticLayout;
@@ -52,9 +50,6 @@
   private float minTextSize = DEFAULT_MIN_TEXT_SIZE;
   private float maxTextSize;
   private int maxWidth;
-  private int maxLines;
-  private float lineSpacingMultiplier = 1.0f;
-  private float lineSpacingExtra = 0.0f;
 
   public AutoResizeTextView(Context context) {
     super(context, null, 0);
@@ -86,53 +81,6 @@
     textPaint.set(getPaint());
   }
 
-  /** Overridden because getMaxLines is only defined in JB+. */
-  @Override
-  public final int getMaxLines() {
-    if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
-      return super.getMaxLines();
-    } else {
-      return maxLines;
-    }
-  }
-
-  /** Overridden because getMaxLines is only defined in JB+. */
-  @Override
-  public final void setMaxLines(int maxLines) {
-    super.setMaxLines(maxLines);
-    this.maxLines = maxLines;
-  }
-
-  /** Overridden because getLineSpacingMultiplier is only defined in JB+. */
-  @Override
-  public final float getLineSpacingMultiplier() {
-    if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
-      return super.getLineSpacingMultiplier();
-    } else {
-      return lineSpacingMultiplier;
-    }
-  }
-
-  /** Overridden because getLineSpacingExtra is only defined in JB+. */
-  @Override
-  public final float getLineSpacingExtra() {
-    if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
-      return super.getLineSpacingExtra();
-    } else {
-      return lineSpacingExtra;
-    }
-  }
-
-  /**
-   * Overridden because getLineSpacingMultiplier and getLineSpacingExtra are only defined in JB+.
-   */
-  @Override
-  public final void setLineSpacing(float add, float mult) {
-    super.setLineSpacing(add, mult);
-    lineSpacingMultiplier = mult;
-    lineSpacingExtra = add;
-  }
-
   /**
    * Although this overrides the setTextSize method from the TextView base class, it changes the
    * semantics a bit: Calling setTextSize now specifies the maximum text size to be used by this
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 2ce4550..9a7c653 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -1018,13 +1018,10 @@
    * <p>An external call is one which does not exist locally for the {@link
    * android.telecom.ConnectionService} it is associated with.
    *
-   * <p>External calls are only supported in N and higher.
-   *
    * @return {@code true} if the call is an external call, {@code false} otherwise.
    */
-  public boolean isExternalCall() {
-    return VERSION.SDK_INT >= VERSION_CODES.N
-        && hasProperty(CallCompat.Details.PROPERTY_IS_EXTERNAL_CALL);
+  boolean isExternalCall() {
+    return hasProperty(CallCompat.Details.PROPERTY_IS_EXTERNAL_CALL);
   }
 
   /**
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index 1cada32..fb8c2c4 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -17,10 +17,9 @@
 package com.android.incallui.incall.impl;
 
 import android.Manifest.permission;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.annotation.ColorInt;
@@ -44,7 +43,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
@@ -141,6 +139,7 @@
 
   @Nullable
   @Override
+  @SuppressLint("MissingPermission")
   public View onCreateView(
       @NonNull LayoutInflater layoutInflater,
       @Nullable ViewGroup viewGroup,
@@ -156,7 +155,7 @@
             (ImageView) view.findViewById(R.id.contactgrid_avatar),
             getResources().getDimensionPixelSize(R.dimen.incall_avatar_size),
             true /* showAnonymousAvatar */);
-    contactGridManager.onMultiWindowModeChanged(ActivityCompat.isInMultiWindowMode(getActivity()));
+    contactGridManager.onMultiWindowModeChanged(getActivity().isInMultiWindowMode());
 
     paginator = (InCallPaginator) view.findViewById(R.id.incall_paginator);
     pager = (LockableViewPager) view.findViewById(R.id.incall_pager);
@@ -173,11 +172,8 @@
         != PackageManager.PERMISSION_GRANTED) {
       voiceNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
     } else {
-
       voiceNetworkType =
-          VERSION.SDK_INT >= VERSION_CODES.N
-              ? getContext().getSystemService(TelephonyManager.class).getVoiceNetworkType()
-              : TelephonyManager.NETWORK_TYPE_UNKNOWN;
+          getContext().getSystemService(TelephonyManager.class).getVoiceNetworkType();
     }
     // TODO(a bug): Change to use corresponding phone type used for current call.
     phoneType = getContext().getSystemService(TelephonyManager.class).getPhoneType();
diff --git a/java/com/android/incallui/ringtone/DialerRingtoneManager.java b/java/com/android/incallui/ringtone/DialerRingtoneManager.java
index 49badf5..b8a3071 100644
--- a/java/com/android/incallui/ringtone/DialerRingtoneManager.java
+++ b/java/com/android/incallui/ringtone/DialerRingtoneManager.java
@@ -18,8 +18,6 @@
 
 import android.content.ContentResolver;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.Settings;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -92,11 +90,9 @@
   }
 
   private boolean isDialerRingingEnabled() {
-    boolean enabledFlag =
-        isDialerRingingEnabledForTesting != null
-            ? isDialerRingingEnabledForTesting
-            : IS_DIALER_RINGING_ENABLED;
-    return VERSION.SDK_INT >= VERSION_CODES.N && enabledFlag;
+    return isDialerRingingEnabledForTesting != null
+        ? isDialerRingingEnabledForTesting
+        : IS_DIALER_RINGING_ENABLED;
   }
 
   /**
diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
index b97d2eb..f270eda 100644
--- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
@@ -50,7 +50,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
@@ -187,8 +186,7 @@
         new ContactGridManager(view, null /* no avatar */, 0, false /* showAnonymousAvatar */);
 
     controls = view.findViewById(R.id.videocall_video_controls);
-    controls.setVisibility(
-        ActivityCompat.isInMultiWindowMode(getActivity()) ? View.GONE : View.VISIBLE);
+    controls.setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     controlsContainer = view.findViewById(R.id.videocall_video_controls_container);
     speakerButton = (CheckableImageButton) view.findViewById(R.id.videocall_speaker_button);
     muteButton = (CheckableImageButton) view.findViewById(R.id.videocall_mute_button);
@@ -200,8 +198,7 @@
     swapCameraButton = (ImageButton) view.findViewById(R.id.videocall_switch_video);
     swapCameraButton.setOnClickListener(this);
     view.findViewById(R.id.videocall_switch_controls)
-        .setVisibility(
-            ActivityCompat.isInMultiWindowMode(getActivity()) ? View.GONE : View.VISIBLE);
+        .setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     switchOnHoldButton = view.findViewById(R.id.videocall_switch_on_hold);
     onHoldContainer = view.findViewById(R.id.videocall_on_hold_banner);
     remoteVideoOff = (TextView) view.findViewById(R.id.videocall_remote_video_off);
@@ -478,7 +475,7 @@
 
   private Point getPreviewOffsetStartShown() {
     // No insets in multiwindow mode, and rootWindowInsets will get the display's insets.
-    if (ActivityCompat.isInMultiWindowMode(getActivity())) {
+    if (getActivity().isInMultiWindowMode()) {
       return new Point();
     }
     if (isLandscape()) {
@@ -690,7 +687,7 @@
     isInGreenScreenMode = shouldShowGreenScreen;
     isInFullscreenMode = shouldShowFullscreen;
 
-    if (getView().isAttachedToWindow() && !ActivityCompat.isInMultiWindowMode(getActivity())) {
+    if (getView().isAttachedToWindow() && !getActivity().isInMultiWindowMode()) {
       controlsContainer.onApplyWindowInsets(getView().getRootWindowInsets());
     }
     if (shouldShowGreenScreen) {
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index 2a810cf..11b80ce 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -60,7 +60,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
@@ -234,8 +233,7 @@
         new ContactGridManager(view, null /* no avatar */, 0, false /* showAnonymousAvatar */);
 
     controls = view.findViewById(R.id.videocall_video_controls);
-    controls.setVisibility(
-        ActivityCompat.isInMultiWindowMode(getActivity()) ? View.GONE : View.VISIBLE);
+    controls.setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     controlsContainer = view.findViewById(R.id.videocall_video_controls_container);
     speakerButton = (CheckableImageButton) view.findViewById(R.id.videocall_speaker_button);
     muteButton = (CheckableImageButton) view.findViewById(R.id.videocall_mute_button);
@@ -249,8 +247,7 @@
     swapCameraButton = (ImageButton) view.findViewById(R.id.videocall_switch_video);
     swapCameraButton.setOnClickListener(this);
     view.findViewById(R.id.videocall_switch_controls)
-        .setVisibility(
-            ActivityCompat.isInMultiWindowMode(getActivity()) ? View.GONE : View.VISIBLE);
+        .setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     switchOnHoldButton = view.findViewById(R.id.videocall_switch_on_hold);
     onHoldContainer = view.findViewById(R.id.videocall_on_hold_banner);
     remoteVideoOff = (TextView) view.findViewById(R.id.videocall_remote_video_off);
@@ -540,7 +537,7 @@
 
   private Point getPreviewOffsetStartShown() {
     // No insets in multiwindow mode, and rootWindowInsets will get the display's insets.
-    if (ActivityCompat.isInMultiWindowMode(getActivity())) {
+    if (getActivity().isInMultiWindowMode()) {
       return new Point();
     }
     if (isLandscape()) {
@@ -758,7 +755,7 @@
     isInGreenScreenMode = shouldShowGreenScreen;
     isInFullscreenMode = shouldShowFullscreen;
 
-    if (getView().isAttachedToWindow() && !ActivityCompat.isInMultiWindowMode(getActivity())) {
+    if (getView().isAttachedToWindow() && !getActivity().isInMultiWindowMode()) {
       controlsContainer.onApplyWindowInsets(getView().getRootWindowInsets());
     }
     if (shouldShowGreenScreen) {