Dialer: Remove even more dead code [7/x]

* ConfigProvider: Used for testing only
* SpeakEasy and Spam.Promo were disabled once no ConfigProvider was
  left
* Buildtype: We only use RELEASE, so remove all code that's not using
  it, including everything related to StrictMode

Change-Id: Ib62a2104dadbd7741cdc68046c3dcefc7f123373
diff --git a/java/com/android/contacts/common/list/ContactTileView.java b/java/com/android/contacts/common/list/ContactTileView.java
deleted file mode 100644
index 732cee7..0000000
--- a/java/com/android/contacts/common/list/ContactTileView.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2011 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.list;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import com.android.contacts.common.MoreContactUtils;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.contacts.resources.R;
-import com.android.dialer.widget.BidiTextView;
-
-/** A ContactTile displays a contact's picture and name */
-public abstract class ContactTileView extends FrameLayout {
-
-  private static final String TAG = ContactTileView.class.getSimpleName();
-  protected Listener mListener;
-  private Uri mLookupUri;
-  private ImageView mPhoto;
-  private BidiTextView mName;
-  private ContactPhotoManager mPhotoManager = null;
-
-  public ContactTileView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    mName = (BidiTextView) findViewById(R.id.contact_tile_name);
-    mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
-
-    OnClickListener listener = createClickListener();
-    setOnClickListener(listener);
-  }
-
-  protected OnClickListener createClickListener() {
-    return new OnClickListener() {
-      @Override
-      public void onClick(View v) {
-        if (mListener == null) {
-          return;
-        }
-        CallSpecificAppData callSpecificAppData =
-            CallSpecificAppData.newBuilder()
-                .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
-                .setAllowAssistedDialing(true)
-                .build();
-        mListener.onContactSelected(
-            getLookupUri(),
-            MoreContactUtils.getTargetRectFromView(ContactTileView.this),
-            callSpecificAppData);
-      }
-    };
-  }
-
-  public void setPhotoManager(ContactPhotoManager photoManager) {
-    mPhotoManager = photoManager;
-  }
-
-  /**
-   * Populates the data members to be displayed from the fields in {@link
-   * com.android.contacts.common.list.ContactEntry}
-   */
-  public void loadFromContact(ContactEntry entry) {
-
-    if (entry != null) {
-      mName.setText(getNameForView(entry));
-      mLookupUri = entry.lookupUri;
-
-      setVisibility(View.VISIBLE);
-
-      if (mPhotoManager != null) {
-        DefaultImageRequest request = getDefaultImageRequest(entry.namePrimary, entry.lookupKey);
-        configureViewForImage(entry.photoUri == null);
-        if (mPhoto != null) {
-          mPhotoManager.loadPhoto(
-              mPhoto,
-              entry.photoUri,
-              getApproximateImageSize(),
-              isDarkTheme(),
-              isContactPhotoCircular(),
-              request);
-
-
-        }
-      } else {
-        LogUtil.w(TAG, "contactPhotoManager not set");
-      }
-    } else {
-      setVisibility(View.INVISIBLE);
-    }
-  }
-
-  public void setListener(Listener listener) {
-    mListener = listener;
-  }
-
-  public Uri getLookupUri() {
-    return mLookupUri;
-  }
-
-  /**
-   * Returns the string that should actually be displayed as the contact's name. Subclasses can
-   * override this to return formatted versions of the name - i.e. first name only.
-   */
-  protected String getNameForView(ContactEntry contactEntry) {
-    return contactEntry.namePrimary;
-  }
-
-  /**
-   * Implemented by subclasses to estimate the size of the picture. This can return -1 if only a
-   * thumbnail is shown anyway
-   */
-  protected abstract int getApproximateImageSize();
-
-  protected abstract boolean isDarkTheme();
-
-  /**
-   * Implemented by subclasses to reconfigure the view's layout and subviews, based on whether or
-   * not the contact has a user-defined photo.
-   *
-   * @param isDefaultImage True if the contact does not have a user-defined contact photo (which
-   *     means a default contact image will be applied by the {@link ContactPhotoManager}
-   */
-  protected void configureViewForImage(boolean isDefaultImage) {
-    // No-op by default.
-  }
-
-  /**
-   * Implemented by subclasses to allow them to return a {@link DefaultImageRequest} with the
-   * various image parameters defined to match their own layouts.
-   *
-   * @param displayName The display name of the contact
-   * @param lookupKey The lookup key of the contact
-   * @return A {@link DefaultImageRequest} object with each field configured by the subclass as
-   *     desired, or {@code null}.
-   */
-  protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
-    return new DefaultImageRequest(displayName, lookupKey, isContactPhotoCircular());
-  }
-
-  /**
-   * Whether contact photo should be displayed as a circular image. Implemented by subclasses so
-   * they can change which drawables to fetch.
-   */
-  protected boolean isContactPhotoCircular() {
-    return true;
-  }
-
-  public interface Listener {
-
-    /** Notification that the contact was selected; no specific action is dictated. */
-    void onContactSelected(
-        Uri contactLookupUri, Rect viewRect, CallSpecificAppData callSpecificAppData);
-
-    /** Notification that the specified number is to be called. */
-    void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData);
-  }
-}
diff --git a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java b/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
deleted file mode 100644
index c75e0a7..0000000
--- a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 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.list;
-
-import android.app.ActionBar;
-import android.net.Uri;
-import com.android.dialer.callintent.CallSpecificAppData;
-
-/** Action callbacks that can be sent by a phone number picker. */
-public interface OnPhoneNumberPickerActionListener {
-
-  /** Returns the selected phone number uri to the requester. */
-  void onPickDataUri(Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
-
-  /**
-   * Returns the specified phone number to the requester. May call the specified phone number,
-   * either as an audio or video call.
-   */
-  void onPickPhoneNumber(
-      String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
-
-  /** Called when home menu in {@link ActionBar} is clicked by the user. */
-  void onHomeInActionBarSelected();
-}
diff --git a/java/com/android/contacts/common/util/AccountFilterUtil.java b/java/com/android/contacts/common/util/AccountFilterUtil.java
deleted file mode 100644
index 4587635..0000000
--- a/java/com/android/contacts/common/util/AccountFilterUtil.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2012 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.util;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.TextView;
-import com.android.contacts.common.list.ContactListFilter;
-import com.android.dialer.contacts.resources.R;
-
-/** Utility class for account filter manipulation. */
-public class AccountFilterUtil {
-
-  /**
-   * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean,
-   * boolean)}, but for Phone UI.
-   */
-  public static boolean updateAccountFilterTitleForPhone(
-      View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) {
-    return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, true);
-  }
-
-  private static boolean updateAccountFilterTitle(
-      View filterContainer,
-      ContactListFilter filter,
-      boolean showTitleForAllAccounts,
-      boolean forPhone) {
-    final Context context = filterContainer.getContext();
-    final TextView headerTextView =
-        (TextView) filterContainer.findViewById(R.id.account_filter_header);
-
-    boolean textWasSet = false;
-    if (filter != null) {
-      if (forPhone) {
-        if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
-          if (showTitleForAllAccounts) {
-            headerTextView.setText(R.string.list_filter_phones);
-            textWasSet = true;
-          }
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
-          headerTextView.setText(
-              context.getString(R.string.listAllContactsInAccount, filter.accountName));
-          textWasSet = true;
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
-          headerTextView.setText(R.string.listCustomView);
-          textWasSet = true;
-        }
-      } else {
-        if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
-          if (showTitleForAllAccounts) {
-            headerTextView.setText(R.string.list_filter_all_accounts);
-            textWasSet = true;
-          }
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
-          headerTextView.setText(
-              context.getString(R.string.listAllContactsInAccount, filter.accountName));
-          textWasSet = true;
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
-          headerTextView.setText(R.string.listCustomView);
-          textWasSet = true;
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
-          headerTextView.setText(R.string.listSingleContact);
-          textWasSet = true;
-        }
-      }
-    }
-    return textWasSet;
-  }
-}
diff --git a/java/com/android/contacts/common/util/ContactListViewUtils.java b/java/com/android/contacts/common/util/ContactListViewUtils.java
index 924789b..ba24079 100644
--- a/java/com/android/contacts/common/util/ContactListViewUtils.java
+++ b/java/com/android/contacts/common/util/ContactListViewUtils.java
@@ -43,47 +43,4 @@
       listView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
     }
   }
-
-  /**
-   * Add padding to {@param listView} if this configuration has set both space weight and view
-   * weight on the layout. Use this util method instead of defining the padding in the layout file
-   * so that the {@param listView}'s padding can be set proportional to the card padding.
-   *
-   * @param listView ListView that we add padding to
-   * @param rootLayout layout that contains ListView and R.id.list_card
-   */
-  public static void applyCardPaddingToView(
-      Resources resources, final ListView listView, final View rootLayout) {
-    // Set a padding on the list view so it appears in the center of the card
-    // in the layout if required.
-    final int listSpaceWeight = resources.getInteger(R.integer.contact_list_space_layout_weight);
-    final int listViewWeight = resources.getInteger(R.integer.contact_list_card_layout_weight);
-    if (listSpaceWeight > 0 && listViewWeight > 0) {
-      rootLayout.setBackgroundResource(0);
-      // Set the card view visible
-      View mCardView = rootLayout.findViewById(R.id.list_card);
-      if (mCardView == null) {
-        throw new RuntimeException(
-            "Your content must have a list card view who can be turned visible "
-                + "whenever it is necessary.");
-      }
-      mCardView.setVisibility(View.VISIBLE);
-
-      // Add extra padding to the list view to make them appear in the center of the card.
-      // In order to avoid jumping, we skip drawing the next frame of the ListView.
-      ViewUtil.doOnPreDraw(
-          listView,
-          false,
-          new Runnable() {
-            @Override
-            public void run() {
-              // Use the rootLayout.getWidth() instead of listView.getWidth() since
-              // we sometimes hide the listView until we finish loading data. This would
-              // result in incorrect padding.
-              ContactListViewUtils.addPaddingToView(
-                  listView, rootLayout.getWidth(), listSpaceWeight, listViewWeight);
-            }
-          });
-    }
-  }
 }
diff --git a/java/com/android/contacts/common/util/ContactLoaderUtils.java b/java/com/android/contacts/common/util/ContactLoaderUtils.java
index e309717..371bb4e 100644
--- a/java/com/android/contacts/common/util/ContactLoaderUtils.java
+++ b/java/com/android/contacts/common/util/ContactLoaderUtils.java
@@ -64,15 +64,6 @@
       throw new IllegalArgumentException("uri format is unknown");
     }
 
-    // Legacy Style? Convert to RawContact
-    final String OBSOLETE_AUTHORITY = Contacts.AUTHORITY;
-    if (OBSOLETE_AUTHORITY.equals(authority)) {
-      // Legacy Format. Convert to RawContact-Uri and then lookup the contact
-      final long rawContactId = ContentUris.parseId(uri);
-      return RawContacts.getContactLookupUri(
-          resolver, ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId));
-    }
-
     throw new IllegalArgumentException("uri authority is unknown");
   }
 }
diff --git a/java/com/android/contacts/common/util/SearchUtil.java b/java/com/android/contacts/common/util/SearchUtil.java
deleted file mode 100644
index 314d565..0000000
--- a/java/com/android/contacts/common/util/SearchUtil.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2012 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.util;
-
-import android.support.annotation.VisibleForTesting;
-
-/** Methods related to search. */
-public class SearchUtil {
-
-  /**
-   * Given a string with lines delimited with '\n', finds the matching line to the given substring.
-   *
-   * @param contents The string to search.
-   * @param substring The substring to search for.
-   * @return A MatchedLine object containing the matching line and the startIndex of the substring
-   *     match within that line.
-   */
-  public static MatchedLine findMatchingLine(String contents, String substring) {
-    final MatchedLine matched = new MatchedLine();
-
-    // Snippet may contain multiple lines separated by "\n".
-    // Locate the lines of the content that contain the substring.
-    final int index = SearchUtil.contains(contents, substring);
-    if (index != -1) {
-      // Match found.  Find the corresponding line.
-      int start = index - 1;
-      while (start > -1) {
-        if (contents.charAt(start) == '\n') {
-          break;
-        }
-        start--;
-      }
-      int end = index + 1;
-      while (end < contents.length()) {
-        if (contents.charAt(end) == '\n') {
-          break;
-        }
-        end++;
-      }
-      matched.line = contents.substring(start + 1, end);
-      matched.startIndex = index - (start + 1);
-    }
-    return matched;
-  }
-
-  /**
-   * Similar to String.contains() with two main differences:
-   *
-   * <p>1) Only searches token prefixes. A token is defined as any combination of letters or
-   * numbers.
-   *
-   * <p>2) Returns the starting index where the substring is found.
-   *
-   * @param value The string to search.
-   * @param substring The substring to look for.
-   * @return The starting index where the substring is found. {@literal -1} if substring is not
-   *     found in value.
-   */
-  @VisibleForTesting
-  static int contains(String value, String substring) {
-    if (value.length() < substring.length()) {
-      return -1;
-    }
-
-    // i18n support
-    // Generate the code points for the substring once.
-    // There will be a maximum of substring.length code points.  But may be fewer.
-    // Since the array length is not an accurate size, we need to keep a separate variable.
-    final int[] substringCodePoints = new int[substring.length()];
-    int substringLength = 0; // may not equal substring.length()!!
-    for (int i = 0; i < substring.length(); ) {
-      final int codePoint = Character.codePointAt(substring, i);
-      substringCodePoints[substringLength] = codePoint;
-      substringLength++;
-      i += Character.charCount(codePoint);
-    }
-
-    for (int i = 0; i < value.length(); i = findNextTokenStart(value, i)) {
-      int numMatch = 0;
-      for (int j = i; j < value.length() && numMatch < substringLength; ++numMatch) {
-        int valueCp = Character.toLowerCase(value.codePointAt(j));
-        int substringCp = substringCodePoints[numMatch];
-        if (valueCp != substringCp) {
-          break;
-        }
-        j += Character.charCount(valueCp);
-      }
-      if (numMatch == substringLength) {
-        return i;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * Find the start of the next token. A token is composed of letters and numbers. Any other
-   * character are considered delimiters.
-   *
-   * @param line The string to search for the next token.
-   * @param startIndex The index to start searching. 0 based indexing.
-   * @return The index for the start of the next token. line.length() if next token not found.
-   */
-  @VisibleForTesting
-  static int findNextTokenStart(String line, int startIndex) {
-    int index = startIndex;
-
-    // If already in token, eat remainder of token.
-    while (index <= line.length()) {
-      if (index == line.length()) {
-        // No more tokens.
-        return index;
-      }
-      final int codePoint = line.codePointAt(index);
-      if (!Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      index += Character.charCount(codePoint);
-    }
-
-    // Out of token, eat all consecutive delimiters.
-    while (index <= line.length()) {
-      if (index == line.length()) {
-        return index;
-      }
-      final int codePoint = line.codePointAt(index);
-      if (Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      index += Character.charCount(codePoint);
-    }
-
-    return index;
-  }
-
-  /**
-   * Anything other than letter and numbers are considered delimiters. Remove start and end
-   * delimiters since they are not relevant to search.
-   *
-   * @param query The query string to clean.
-   * @return The cleaned query. Empty string if all characters are cleaned out.
-   */
-  public static String cleanStartAndEndOfSearchQuery(String query) {
-    int start = 0;
-    while (start < query.length()) {
-      int codePoint = query.codePointAt(start);
-      if (Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      start += Character.charCount(codePoint);
-    }
-
-    if (start == query.length()) {
-      // All characters are delimiters.
-      return "";
-    }
-
-    int end = query.length() - 1;
-    while (end > -1) {
-      if (Character.isLowSurrogate(query.charAt(end))) {
-        // Assume valid i18n string.  There should be a matching high surrogate before it.
-        end--;
-      }
-      int codePoint = query.codePointAt(end);
-      if (Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      end--;
-    }
-
-    // end is a letter or digit.
-    return query.substring(start, end + 1);
-  }
-
-  public static class MatchedLine {
-
-    public int startIndex = -1;
-    public String line;
-
-    @Override
-    public String toString() {
-      return "MatchedLine{" + "line='" + line + '\'' + ", startIndex=" + startIndex + '}';
-    }
-  }
-}
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
deleted file mode 100644
index b878325..0000000
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ /dev/null
@@ -1,1594 +0,0 @@
-/*
- * Copyright (C) 2013 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.app;
-
-import android.app.Fragment;
-import android.app.FragmentTransaction;
-import android.app.KeyguardManager;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.SystemClock;
-import android.os.Trace;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.QuickContact;
-import android.speech.RecognizerIntent;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.ActionBar;
-import android.telecom.PhoneAccount;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.ActionMode;
-import android.view.DragEvent;
-import android.view.Gravity;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnDragListener;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.EditText;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.PopupMenu;
-import android.widget.TextView;
-import android.widget.Toast;
-import com.android.contacts.common.dialog.ClearFrequentsDialog;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.animation.AnimUtils;
-import com.android.dialer.animation.AnimationListenerAdapter;
-import com.android.dialer.app.calllog.CallLogActivity;
-import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.IntentProvider;
-import com.android.dialer.app.list.DialtactsPagerAdapter;
-import com.android.dialer.app.list.DialtactsPagerAdapter.TabIndex;
-import com.android.dialer.app.list.DragDropController;
-import com.android.dialer.app.list.ListsFragment;
-import com.android.dialer.app.list.OldSpeedDialFragment;
-import com.android.dialer.app.list.OnDragDropListener;
-import com.android.dialer.app.list.OnListFragmentScrolledListener;
-import com.android.dialer.app.list.PhoneFavoriteSquareTileView;
-import com.android.dialer.app.settings.DialerSettingsActivity;
-import com.android.dialer.app.widget.ActionBarController;
-import com.android.dialer.app.widget.SearchEditTextLayout;
-import com.android.dialer.callcomposer.CallComposerActivity;
-import com.android.dialer.calldetails.OldCallDetailsActivity;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.UiUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.constants.ActivityRequestCodes;
-import com.android.dialer.contactsfragment.ContactsFragment;
-import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
-import com.android.dialer.database.Database;
-import com.android.dialer.database.DialerDatabaseHelper;
-import com.android.dialer.dialpadview.DialpadFragment;
-import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
-import com.android.dialer.dialpadview.DialpadFragment.LastOutgoingCallCallback;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.i18n.LocaleUtils;
-import com.android.dialer.interactions.PhoneNumberInteraction;
-import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.postcall.PostCall;
-import com.android.dialer.precall.PreCall;
-import com.android.dialer.proguard.UsedByReflection;
-import com.android.dialer.searchfragment.list.NewSearchFragment;
-import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
-import com.android.dialer.simulator.Simulator;
-import com.android.dialer.simulator.SimulatorComponent;
-import com.android.dialer.smartdial.util.SmartDialNameMatcher;
-import com.android.dialer.smartdial.util.SmartDialPrefix;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.util.DialerUtils;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.util.TouchPointManager;
-import com.android.dialer.util.TransactionSafeActivity;
-import com.android.dialer.util.ViewUtil;
-import com.android.dialer.widget.FloatingActionButtonController;
-import com.google.common.base.Optional;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.TimeUnit;
-
-/** The dialer tab's title is 'phone', a more common name (see strings.xml). */
-@UsedByReflection(value = "AndroidManifest-app.xml")
-public class DialtactsActivity extends TransactionSafeActivity
-    implements View.OnClickListener,
-        DialpadFragment.OnDialpadQueryChangedListener,
-        OnListFragmentScrolledListener,
-        CallLogFragment.HostInterface,
-        CallLogAdapter.OnActionModeStateChangedListener,
-        ContactsFragment.OnContactsListScrolledListener,
-        DialpadFragment.HostInterface,
-        OldSpeedDialFragment.HostInterface,
-        OnDragDropListener,
-        OnPhoneNumberPickerActionListener,
-        PopupMenu.OnMenuItemClickListener,
-        ViewPager.OnPageChangeListener,
-        ActionBarController.ActivityUi,
-        PhoneNumberInteraction.InteractionErrorListener,
-        PhoneNumberInteraction.DisambigDialogDismissedListener,
-        ActivityCompat.OnRequestPermissionsResultCallback,
-        DialpadListener,
-        SearchFragmentListener,
-        OnContactSelectedListener {
-
-  public static final boolean DEBUG = false;
-  @VisibleForTesting public static final String TAG_DIALPAD_FRAGMENT = "dialpad";
-  private static final String ACTION_SHOW_TAB = "ACTION_SHOW_TAB";
-  @VisibleForTesting public static final String EXTRA_SHOW_TAB = "EXTRA_SHOW_TAB";
-  public static final String EXTRA_CLEAR_NEW_VOICEMAILS = "EXTRA_CLEAR_NEW_VOICEMAILS";
-  private static final String KEY_LAST_TAB = "last_tab";
-  private static final String TAG = "DialtactsActivity";
-  private static final String KEY_IN_REGULAR_SEARCH_UI = "in_regular_search_ui";
-  private static final String KEY_IN_DIALPAD_SEARCH_UI = "in_dialpad_search_ui";
-  private static final String KEY_IN_NEW_SEARCH_UI = "in_new_search_ui";
-  private static final String KEY_SEARCH_QUERY = "search_query";
-  private static final String KEY_DIALPAD_QUERY = "dialpad_query";
-  private static final String KEY_FIRST_LAUNCH = "first_launch";
-  private static final String KEY_SAVED_LANGUAGE_CODE = "saved_language_code";
-  private static final String KEY_WAS_CONFIGURATION_CHANGE = "was_configuration_change";
-  private static final String KEY_IS_DIALPAD_SHOWN = "is_dialpad_shown";
-  private static final String KEY_FAB_VISIBLE = "fab_visible";
-  private static final String TAG_NEW_SEARCH_FRAGMENT = "new_search";
-  private static final String TAG_FAVORITES_FRAGMENT = "favorites";
-  /** Just for backward compatibility. Should behave as same as {@link Intent#ACTION_DIAL}. */
-  private static final String ACTION_TOUCH_DIALER = "com.android.phone.action.TOUCH_DIALER";
-
-  private static final int FAB_SCALE_IN_DELAY_MS = 300;
-
-  /**
-   * Minimum time the history tab must have been selected for it to be marked as seen in onStop()
-   */
-  private static final long HISTORY_TAB_SEEN_TIMEOUT = TimeUnit.SECONDS.toMillis(3);
-
-  private static Optional<Boolean> voiceSearchEnabledForTest = Optional.absent();
-
-  /** Fragment containing the dialpad that slides into view */
-  protected DialpadFragment dialpadFragment;
-
-  /** Root layout of DialtactsActivity */
-  private CoordinatorLayout parentLayout;
-
-  /** new Fragment for search phone numbers using the keyboard and the dialpad. */
-  private NewSearchFragment newSearchFragment;
-
-  /** Animation that slides in. */
-  private Animation slideIn;
-
-  /** Animation that slides out. */
-  private Animation slideOut;
-  /** Fragment containing the speed dial list, call history list, and all contacts list. */
-  private ListsFragment listsFragment;
-  /**
-   * Tracks whether onSaveInstanceState has been called. If true, no fragment transactions can be
-   * commited.
-   */
-  private boolean stateSaved;
-
-  private boolean isKeyboardOpen;
-  private boolean inNewSearch;
-  private boolean isRestarting;
-  private boolean inDialpadSearch;
-  private boolean inRegularSearch;
-  private boolean clearSearchOnPause;
-  private boolean isDialpadShown;
-  /** Whether or not the device is in landscape orientation. */
-  private boolean isLandscape;
-  /** True if the dialpad is only temporarily showing due to being in call */
-  private boolean inCallDialpadUp;
-  /** True when this activity has been launched for the first time. */
-  private boolean firstLaunch;
-  /**
-   * Search query to be applied to the SearchView in the ActionBar once onCreateOptionsMenu has been
-   * called.
-   */
-  private String pendingSearchViewQuery;
-
-  private PopupMenu overflowMenu;
-  private EditText searchView;
-  private SearchEditTextLayout searchEditTextLayout;
-  private View voiceSearchButton;
-  private String searchQuery;
-  private String dialpadQuery;
-  private DialerDatabaseHelper dialerDatabaseHelper;
-  private DragDropController dragDropController;
-  private ActionBarController actionBarController;
-  private FloatingActionButtonController floatingActionButtonController;
-  private String savedLanguageCode;
-  private boolean wasConfigurationChange;
-  private long timeTabSelected;
-
-  public boolean isMultiSelectModeEnabled;
-
-  private boolean isLastTabEnabled;
-
-  AnimationListenerAdapter slideInListener =
-      new AnimationListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animation animation) {
-          maybeEnterSearchUi();
-        }
-      };
-  /** Listener for after slide out animation completes on dialer fragment. */
-  AnimationListenerAdapter slideOutListener =
-      new AnimationListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animation animation) {
-          commitDialpadFragmentHide();
-        }
-      };
-  /** Listener used to send search queries to the phone search fragment. */
-  private final TextWatcher phoneSearchQueryTextListener =
-      new TextWatcher() {
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-          final String newText = s.toString();
-          if (newText.equals(searchQuery)) {
-            // If the query hasn't changed (perhaps due to activity being destroyed
-            // and restored, or user launching the same DIAL intent twice), then there is
-            // no need to do anything here.
-            return;
-          }
-
-          if (count != 0) {
-            PerformanceReport.recordClick(UiAction.Type.TEXT_CHANGE_WITH_INPUT);
-          }
-
-          LogUtil.v("DialtactsActivity.onTextChanged", "called with new query: " + newText);
-          LogUtil.v("DialtactsActivity.onTextChanged", "previous query: " + searchQuery);
-          searchQuery = newText;
-
-          // Show search fragment only when the query string is changed to non-empty text.
-          if (!TextUtils.isEmpty(newText)) {
-            // Call enterSearchUi only if we are switching search modes, or showing a search
-            // fragment for the first time.
-            final boolean sameSearchMode =
-                (isDialpadShown && inDialpadSearch) || (!isDialpadShown && inRegularSearch);
-            if (!sameSearchMode) {
-              enterSearchUi(isDialpadShown, searchQuery, true /* animate */);
-            }
-          }
-
-          if (newSearchFragment != null && newSearchFragment.isVisible()) {
-            newSearchFragment.setQuery(searchQuery, getCallInitiationType());
-          }
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {}
-      };
-  /** Open the search UI when the user clicks on the search box. */
-  private final View.OnClickListener searchViewOnClickListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-          if (!isInSearchUi()) {
-            PerformanceReport.recordClick(UiAction.Type.OPEN_SEARCH);
-            actionBarController.onSearchBoxTapped();
-            enterSearchUi(
-                false /* smartDialSearch */, searchView.getText().toString(), true /* animate */);
-          }
-        }
-      };
-
-  private int actionBarHeight;
-  private int previouslySelectedTabIndex;
-
-  /**
-   * The text returned from a voice search query. Set in {@link #onActivityResult} and used in
-   * {@link #onResume()} to populate the search box.
-   */
-  private String voiceSearchQuery;
-
-  /**
-   * @param tab the TAB_INDEX_* constant in {@link ListsFragment}
-   * @return A intent that will open the DialtactsActivity into the specified tab. The intent for
-   *     each tab will be unique.
-   */
-  public static Intent getShowTabIntent(Context context, int tab) {
-    Intent intent = new Intent(context, DialtactsActivity.class);
-    intent.setAction(ACTION_SHOW_TAB);
-    intent.putExtra(DialtactsActivity.EXTRA_SHOW_TAB, tab);
-    intent.setData(
-        new Uri.Builder()
-            .scheme("intent")
-            .authority(context.getPackageName())
-            .appendPath(TAG)
-            .appendQueryParameter(DialtactsActivity.EXTRA_SHOW_TAB, String.valueOf(tab))
-            .build());
-
-    return intent;
-  }
-
-  @Override
-  public boolean dispatchTouchEvent(MotionEvent ev) {
-    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-      TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
-    }
-    return super.dispatchTouchEvent(ev);
-  }
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    Trace.beginSection(TAG + " onCreate");
-    LogUtil.enterBlock("DialtactsActivity.onCreate");
-    super.onCreate(savedInstanceState);
-
-    firstLaunch = true;
-    isLastTabEnabled =
-        ConfigProviderComponent.get(this).getConfigProvider().getBoolean("last_tab_enabled", false);
-
-    final Resources resources = getResources();
-    actionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
-
-    Trace.beginSection(TAG + " setContentView");
-    setContentView(R.layout.dialtacts_activity);
-    Trace.endSection();
-    getWindow().setBackgroundDrawable(null);
-
-    Trace.beginSection(TAG + " setup Views");
-    final ActionBar actionBar = getActionBarSafely();
-    actionBar.setCustomView(R.layout.search_edittext);
-    actionBar.setDisplayShowCustomEnabled(true);
-    actionBar.setBackgroundDrawable(null);
-
-    searchEditTextLayout = actionBar.getCustomView().findViewById(R.id.search_view_container);
-
-    actionBarController = new ActionBarController(this, searchEditTextLayout);
-
-    searchView = searchEditTextLayout.findViewById(R.id.search_view);
-    searchView.addTextChangedListener(phoneSearchQueryTextListener);
-    searchView.setHint(getSearchBoxHint());
-
-    voiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
-    searchEditTextLayout
-        .findViewById(R.id.search_box_collapsed)
-        .setOnClickListener(searchViewOnClickListener);
-    searchEditTextLayout
-        .findViewById(R.id.search_back_button)
-        .setOnClickListener(v -> exitSearchUi());
-
-    isLandscape =
-        getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
-    previouslySelectedTabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
-    FloatingActionButton floatingActionButton = findViewById(R.id.floating_action_button);
-    floatingActionButton.setOnClickListener(this);
-    floatingActionButtonController = new FloatingActionButtonController(this, floatingActionButton);
-
-    ImageButton optionsMenuButton =
-        searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
-    optionsMenuButton.setOnClickListener(this);
-    overflowMenu = buildOptionsMenu(optionsMenuButton);
-    optionsMenuButton.setOnTouchListener(overflowMenu.getDragToOpenListener());
-
-    // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
-    // fragment manager is responsible for recreating it.
-    if (savedInstanceState == null) {
-      getFragmentManager()
-          .beginTransaction()
-          .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
-          .commit();
-    } else {
-      searchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
-      dialpadQuery = savedInstanceState.getString(KEY_DIALPAD_QUERY);
-      inRegularSearch = savedInstanceState.getBoolean(KEY_IN_REGULAR_SEARCH_UI);
-      inDialpadSearch = savedInstanceState.getBoolean(KEY_IN_DIALPAD_SEARCH_UI);
-      inNewSearch = savedInstanceState.getBoolean(KEY_IN_NEW_SEARCH_UI);
-      firstLaunch = savedInstanceState.getBoolean(KEY_FIRST_LAUNCH);
-      savedLanguageCode = savedInstanceState.getString(KEY_SAVED_LANGUAGE_CODE);
-      wasConfigurationChange = savedInstanceState.getBoolean(KEY_WAS_CONFIGURATION_CHANGE);
-      isDialpadShown = savedInstanceState.getBoolean(KEY_IS_DIALPAD_SHOWN);
-      floatingActionButtonController.setVisible(savedInstanceState.getBoolean(KEY_FAB_VISIBLE));
-      actionBarController.restoreInstanceState(savedInstanceState);
-    }
-
-    final boolean isLayoutRtl = ViewUtil.isRtl();
-    if (isLandscape) {
-      slideIn =
-          AnimationUtils.loadAnimation(
-              this, isLayoutRtl ? R.anim.dialpad_slide_in_left : R.anim.dialpad_slide_in_right);
-      slideOut =
-          AnimationUtils.loadAnimation(
-              this, isLayoutRtl ? R.anim.dialpad_slide_out_left : R.anim.dialpad_slide_out_right);
-    } else {
-      slideIn = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_in_bottom);
-      slideOut = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_out_bottom);
-    }
-
-    slideIn.setInterpolator(AnimUtils.EASE_IN);
-    slideOut.setInterpolator(AnimUtils.EASE_OUT);
-
-    slideIn.setAnimationListener(slideInListener);
-    slideOut.setAnimationListener(slideOutListener);
-
-    parentLayout = (CoordinatorLayout) findViewById(R.id.dialtacts_mainlayout);
-    parentLayout.setOnDragListener(new LayoutOnDragListener());
-    ViewUtil.doOnGlobalLayout(
-        floatingActionButton,
-        view -> {
-          int screenWidth = parentLayout.getWidth();
-          floatingActionButtonController.setScreenWidth(screenWidth);
-          floatingActionButtonController.align(getFabAlignment(), false /* animate */);
-        });
-
-    Trace.endSection();
-
-    Trace.beginSection(TAG + " initialize smart dialing");
-    dialerDatabaseHelper = Database.get(this).getDatabaseHelper(this);
-    SmartDialPrefix.initializeNanpSettings(this);
-    Trace.endSection();
-
-    Trace.endSection();
-
-    updateSearchFragmentPosition();
-  }
-
-  @NonNull
-  private ActionBar getActionBarSafely() {
-    return Assert.isNotNull(getSupportActionBar());
-  }
-
-  @Override
-  protected void onResume() {
-    LogUtil.enterBlock("DialtactsActivity.onResume");
-    Trace.beginSection(TAG + " onResume");
-    super.onResume();
-
-    // Some calls may not be recorded (eg. from quick contact),
-    // so we should restart recording after these calls. (Recorded call is stopped)
-    PostCall.restartPerformanceRecordingIfARecentCallExist(this);
-    if (!PerformanceReport.isRecording()) {
-      PerformanceReport.startRecording();
-    }
-
-    stateSaved = false;
-    if (firstLaunch) {
-      LogUtil.i("DialtactsActivity.onResume", "mFirstLaunch true, displaying fragment");
-      displayFragment(getIntent());
-    } else if (!phoneIsInUse() && inCallDialpadUp) {
-      LogUtil.i("DialtactsActivity.onResume", "phone not in use, hiding dialpad fragment");
-      hideDialpadFragment(false, true);
-      inCallDialpadUp = false;
-    } else if (isDialpadShown) {
-      LogUtil.i("DialtactsActivity.onResume", "showing dialpad on resume");
-      showDialpadFragment(false);
-    } else {
-      PostCall.promptUserForMessageIfNecessary(this, parentLayout);
-    }
-
-    // On M the fragment manager does not restore the hidden state of a fragment from
-    // savedInstanceState so it must be hidden again.
-    if (!isDialpadShown && dialpadFragment != null && !dialpadFragment.isHidden()) {
-      LogUtil.i(
-          "DialtactsActivity.onResume", "mDialpadFragment attached but not hidden, forcing hide");
-      getFragmentManager().beginTransaction().hide(dialpadFragment).commit();
-    }
-
-    // If there was a voice query result returned in the {@link #onActivityResult} callback, it
-    // will have been stashed in mVoiceSearchQuery since the search results fragment cannot be
-    // shown until onResume has completed.  Active the search UI and set the search term now.
-    if (!TextUtils.isEmpty(voiceSearchQuery)) {
-      actionBarController.onSearchBoxTapped();
-      searchView.setText(voiceSearchQuery);
-      voiceSearchQuery = null;
-    }
-
-    if (isRestarting) {
-      // This is only called when the activity goes from resumed -> paused -> resumed, so it
-      // will not cause an extra view to be sent out on rotation
-      if (isDialpadShown) {
-        Logger.get(this).logScreenView(ScreenEvent.Type.DIALPAD, this);
-      }
-      isRestarting = false;
-    }
-
-    prepareVoiceSearchButton();
-
-    // Start the thread that updates the smart dial database if
-    // (1) the activity is not recreated with a new configuration, or
-    // (2) the activity is recreated with a new configuration but the change is a language change.
-    boolean isLanguageChanged =
-        !LocaleUtils.getLocale(this).getISO3Language().equals(savedLanguageCode);
-    if (!wasConfigurationChange || isLanguageChanged) {
-      dialerDatabaseHelper.startSmartDialUpdateThread(/* forceUpdate = */ isLanguageChanged);
-    }
-
-    if (isDialpadShown) {
-      floatingActionButtonController.scaleOut();
-    } else {
-      floatingActionButtonController.align(getFabAlignment(), false /* animate */);
-    }
-
-    if (firstLaunch) {
-      // Only process the Intent the first time onResume() is called after receiving it
-      if (Calls.CONTENT_TYPE.equals(getIntent().getType())) {
-        // Externally specified extras take precedence to EXTRA_SHOW_TAB, which is only
-        // used internally.
-        final Bundle extras = getIntent().getExtras();
-        if (extras != null && extras.getInt(Calls.EXTRA_CALL_TYPE_FILTER) == Calls.VOICEMAIL_TYPE) {
-          listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-          Logger.get(this).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CLICKED);
-        } else {
-          listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_HISTORY);
-        }
-      } else if (getIntent().hasExtra(EXTRA_SHOW_TAB)) {
-        int index =
-            getIntent().getIntExtra(EXTRA_SHOW_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-        if (index < listsFragment.getTabCount()) {
-          // Hide dialpad since this is an explicit intent to show a specific tab, which is coming
-          // from missed call or voicemail notification.
-          hideDialpadFragment(false, false);
-          exitSearchUi();
-          listsFragment.showTab(index);
-        }
-      }
-
-      if (getIntent().getBooleanExtra(EXTRA_CLEAR_NEW_VOICEMAILS, false)) {
-        LogUtil.i("DialtactsActivity.onResume", "clearing all new voicemails");
-        CallLogNotificationsService.markAllNewVoicemailsAsOld(this);
-      }
-    }
-
-    firstLaunch = false;
-
-    setSearchBoxHint();
-    timeTabSelected = SystemClock.elapsedRealtime();
-
-    Trace.endSection();
-  }
-
-  @Override
-  protected void onRestart() {
-    super.onRestart();
-    isRestarting = true;
-  }
-
-  @Override
-  protected void onPause() {
-    if (clearSearchOnPause) {
-      hideDialpadAndSearchUi();
-      clearSearchOnPause = false;
-    }
-    if (slideOut.hasStarted() && !slideOut.hasEnded()) {
-      commitDialpadFragmentHide();
-    }
-    super.onPause();
-  }
-
-  @Override
-  protected void onStop() {
-    super.onStop();
-    boolean timeoutElapsed =
-        SystemClock.elapsedRealtime() - timeTabSelected >= HISTORY_TAB_SEEN_TIMEOUT;
-    boolean isOnHistoryTab =
-        listsFragment.getCurrentTabIndex() == DialtactsPagerAdapter.TAB_INDEX_HISTORY;
-    if (isOnHistoryTab
-        && timeoutElapsed
-        && !isChangingConfigurations()
-        && !getSystemService(KeyguardManager.class).isKeyguardLocked()) {
-      listsFragment.markMissedCallsAsReadAndRemoveNotifications();
-    }
-    StorageComponent.get(this)
-        .unencryptedSharedPrefs()
-        .edit()
-        .putInt(KEY_LAST_TAB, listsFragment.getCurrentTabIndex())
-        .apply();
-  }
-
-  @Override
-  protected void onSaveInstanceState(Bundle outState) {
-    LogUtil.enterBlock("DialtactsActivity.onSaveInstanceState");
-    super.onSaveInstanceState(outState);
-    outState.putString(KEY_SEARCH_QUERY, searchQuery);
-    outState.putString(KEY_DIALPAD_QUERY, dialpadQuery);
-    outState.putString(KEY_SAVED_LANGUAGE_CODE, LocaleUtils.getLocale(this).getISO3Language());
-    outState.putBoolean(KEY_IN_REGULAR_SEARCH_UI, inRegularSearch);
-    outState.putBoolean(KEY_IN_DIALPAD_SEARCH_UI, inDialpadSearch);
-    outState.putBoolean(KEY_IN_NEW_SEARCH_UI, inNewSearch);
-    outState.putBoolean(KEY_FIRST_LAUNCH, firstLaunch);
-    outState.putBoolean(KEY_IS_DIALPAD_SHOWN, isDialpadShown);
-    outState.putBoolean(KEY_FAB_VISIBLE, floatingActionButtonController.isVisible());
-    outState.putBoolean(KEY_WAS_CONFIGURATION_CHANGE, isChangingConfigurations());
-    actionBarController.saveInstanceState(outState);
-    stateSaved = true;
-  }
-
-  @Override
-  public void onAttachFragment(final Fragment fragment) {
-    LogUtil.i("DialtactsActivity.onAttachFragment", "fragment: %s", fragment);
-    if (fragment instanceof DialpadFragment) {
-      dialpadFragment = (DialpadFragment) fragment;
-    } else if (fragment instanceof ListsFragment) {
-      listsFragment = (ListsFragment) fragment;
-      listsFragment.addOnPageChangeListener(this);
-    } else if (fragment instanceof NewSearchFragment) {
-      newSearchFragment = (NewSearchFragment) fragment;
-      updateSearchFragmentPosition();
-    }
-  }
-
-  protected void handleMenuSettings() {
-    final Intent intent = new Intent(this, DialerSettingsActivity.class);
-    startActivity(intent);
-  }
-
-  public boolean isListsFragmentVisible() {
-    return listsFragment.getUserVisibleHint();
-  }
-
-  @Override
-  public void onClick(View view) {
-    int resId = view.getId();
-    if (resId == R.id.floating_action_button) {
-      if (!isDialpadShown) {
-        LogUtil.i(
-            "DialtactsActivity.onClick", "floating action button clicked, going to show dialpad");
-        PerformanceReport.recordClick(UiAction.Type.OPEN_DIALPAD);
-        inCallDialpadUp = false;
-        showDialpadFragment(true);
-        PostCall.closePrompt();
-      } else {
-        LogUtil.i(
-            "DialtactsActivity.onClick",
-            "floating action button clicked, but dialpad is already showing");
-      }
-    } else if (resId == R.id.voice_search_button) {
-      try {
-        startActivityForResult(
-            new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),
-            ActivityRequestCodes.DIALTACTS_VOICE_SEARCH);
-      } catch (ActivityNotFoundException e) {
-        Toast.makeText(
-                DialtactsActivity.this, R.string.voice_search_not_available, Toast.LENGTH_SHORT)
-            .show();
-      }
-    } else if (resId == R.id.dialtacts_options_menu_button) {
-      overflowMenu.show();
-    } else {
-      Assert.fail("Unexpected onClick event from " + view);
-    }
-  }
-
-  @Override
-  public boolean onMenuItemClick(MenuItem item) {
-    if (!isSafeToCommitTransactions()) {
-      return true;
-    }
-
-    int resId = item.getItemId();
-    if (resId == R.id.menu_history) {
-      PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_HISTORY);
-      final Intent intent = new Intent(this, CallLogActivity.class);
-      startActivity(intent);
-    } else if (resId == R.id.menu_clear_frequents) {
-      ClearFrequentsDialog.show(getFragmentManager());
-      Logger.get(this).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, this);
-      return true;
-    } else if (resId == R.id.menu_call_settings) {
-      handleMenuSettings();
-      Logger.get(this).logScreenView(ScreenEvent.Type.SETTINGS, this);
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-    LogUtil.i(
-        "DialtactsActivity.onActivityResult",
-        "requestCode:%d, resultCode:%d",
-        requestCode,
-        resultCode);
-    if (requestCode == ActivityRequestCodes.DIALTACTS_VOICE_SEARCH) {
-      if (resultCode == RESULT_OK) {
-        final ArrayList<String> matches =
-            data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
-        if (matches.size() > 0) {
-          voiceSearchQuery = matches.get(0);
-        } else {
-          LogUtil.i("DialtactsActivity.onActivityResult", "voice search - nothing heard");
-        }
-      } else {
-        LogUtil.e("DialtactsActivity.onActivityResult", "voice search failed");
-      }
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_COMPOSER) {
-      if (resultCode == RESULT_FIRST_USER) {
-        LogUtil.i(
-            "DialtactsActivity.onActivityResult", "returned from call composer, error occurred");
-        String message =
-            getString(
-                R.string.call_composer_connection_failed,
-                data.getStringExtra(CallComposerActivity.KEY_CONTACT_NAME));
-        Snackbar.make(parentLayout, message, Snackbar.LENGTH_LONG).show();
-      } else {
-        LogUtil.i("DialtactsActivity.onActivityResult", "returned from call composer, no error");
-      }
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
-      if (resultCode == RESULT_OK
-          && data != null
-          && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
-        String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
-        int snackbarDurationMillis = 5_000;
-        Snackbar.make(parentLayout, getString(R.string.ec_data_deleted), snackbarDurationMillis)
-            .setAction(R.string.view_conversation, v -> {
-                IntentProvider provider = IntentProvider.getSendSmsIntentProvider(number);
-                startActivity(provider.getClickIntent(this));
-            })
-            .setActionTextColor(getResources().getColor(R.color.dialer_snackbar_action_text_color))
-            .show();
-      }
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_DUO) {
-      // We just returned from starting Duo for a task. Reload our reachability data since it
-      // may have changed after a user finished activating Duo.
-      DuoComponent.get(this).getDuo().reloadReachability(this);
-    }
-    super.onActivityResult(requestCode, resultCode, data);
-  }
-
-  /**
-   * Update the number of unread voicemails (potentially other tabs) displayed next to the tab icon.
-   */
-  public void updateTabUnreadCounts() {
-    listsFragment.updateTabUnreadCounts();
-  }
-
-  /**
-   * Initiates a fragment transaction to show the dialpad fragment. Animations and other visual
-   * updates are handled by a callback which is invoked after the dialpad fragment is shown.
-   *
-   * @see #onDialpadShown
-   */
-  private void showDialpadFragment(boolean animate) {
-    LogUtil.i("DialtactActivity.showDialpadFragment", "animate: %b", animate);
-    if (isDialpadShown) {
-      LogUtil.i("DialtactsActivity.showDialpadFragment", "dialpad already shown");
-      return;
-    }
-    if (stateSaved) {
-      LogUtil.i("DialtactsActivity.showDialpadFragment", "state already saved");
-      return;
-    }
-    isDialpadShown = true;
-
-    listsFragment.setUserVisibleHint(false);
-
-    final FragmentTransaction ft = getFragmentManager().beginTransaction();
-    if (dialpadFragment == null) {
-      dialpadFragment = new DialpadFragment();
-      ft.add(R.id.dialtacts_container, dialpadFragment, TAG_DIALPAD_FRAGMENT);
-    } else {
-      ft.show(dialpadFragment);
-    }
-
-    dialpadFragment.setAnimate(animate);
-    Logger.get(this).logScreenView(ScreenEvent.Type.DIALPAD, this);
-    ft.commit();
-
-    if (animate) {
-      floatingActionButtonController.scaleOut();
-      maybeEnterSearchUi();
-    } else {
-      floatingActionButtonController.scaleOut();
-      maybeEnterSearchUi();
-    }
-    actionBarController.onDialpadUp();
-
-    Assert.isNotNull(listsFragment.getView()).animate().alpha(0).withLayer();
-
-    // adjust the title, so the user will know where we're at when the activity start/resumes.
-    setTitle(R.string.launcherDialpadActivityLabel);
-  }
-
-  @Override
-  public void getLastOutgoingCall(LastOutgoingCallCallback callback) {
-    DialerExecutorComponent.get(this)
-        .dialerExecutorFactory()
-        .createUiTaskBuilder(
-            getFragmentManager(), "Query last phone number", Calls::getLastOutgoingCall)
-        .onSuccess(output -> callback.lastOutgoingCall(output))
-        .build()
-        .executeParallel(this);
-  }
-
-  /** Callback from child DialpadFragment when the dialpad is shown. */
-  @Override
-  public void onDialpadShown() {
-    LogUtil.enterBlock("DialtactsActivity.onDialpadShown");
-    Assert.isNotNull(dialpadFragment);
-    if (dialpadFragment.getAnimate()) {
-      Assert.isNotNull(dialpadFragment.getView()).startAnimation(slideIn);
-    } else {
-      dialpadFragment.setYFraction(0);
-    }
-
-    updateSearchFragmentPosition();
-  }
-
-  @Override
-  public void onCallPlacedFromDialpad() {
-    clearSearchOnPause = true;
-  }
-
-  @Override
-  public void onContactsListScrolled(boolean isDragging) {
-    // intentionally empty.
-  }
-
-  /**
-   * Initiates animations and other visual updates to hide the dialpad. The fragment is hidden in a
-   * callback after the hide animation ends.
-   *
-   * @see #commitDialpadFragmentHide
-   */
-  private void hideDialpadFragment(boolean animate, boolean clearDialpad) {
-    LogUtil.enterBlock("DialtactsActivity.hideDialpadFragment");
-    if (dialpadFragment == null || dialpadFragment.getView() == null) {
-      return;
-    }
-    if (clearDialpad) {
-      // Temporarily disable accessibility when we clear the dialpad, since it should be
-      // invisible and should not announce anything.
-      dialpadFragment
-          .getDigitsWidget()
-          .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
-      dialpadFragment.clearDialpad();
-      dialpadFragment
-          .getDigitsWidget()
-          .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
-    }
-    if (!isDialpadShown) {
-      return;
-    }
-    isDialpadShown = false;
-    dialpadFragment.setAnimate(animate);
-    listsFragment.setUserVisibleHint(true);
-    listsFragment.sendScreenViewForCurrentPosition();
-
-    updateSearchFragmentPosition();
-
-    floatingActionButtonController.align(getFabAlignment(), animate);
-    if (animate) {
-      dialpadFragment.getView().startAnimation(slideOut);
-    } else {
-      commitDialpadFragmentHide();
-    }
-
-    actionBarController.onDialpadDown();
-
-    // reset the title to normal.
-    setTitle(R.string.launcherActivityLabel);
-  }
-
-  /** Finishes hiding the dialpad fragment after any animations are completed. */
-  private void commitDialpadFragmentHide() {
-    if (!stateSaved && dialpadFragment != null && !dialpadFragment.isHidden() && !isDestroyed()) {
-      final FragmentTransaction ft = getFragmentManager().beginTransaction();
-      ft.hide(dialpadFragment);
-      ft.commit();
-    }
-    floatingActionButtonController.scaleIn();
-  }
-
-  private void updateSearchFragmentPosition() {
-    if (newSearchFragment != null) {
-      int animationDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
-      int actionbarHeight = getResources().getDimensionPixelSize(R.dimen.action_bar_height_large);
-      int shadowHeight = getResources().getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
-      int start = isDialpadShown() ? actionbarHeight - shadowHeight : 0;
-      int end = isDialpadShown() ? 0 : actionbarHeight - shadowHeight;
-      newSearchFragment.animatePosition(start, end, animationDuration);
-    }
-  }
-
-  @Override
-  public boolean isInSearchUi() {
-    return inDialpadSearch || inRegularSearch || inNewSearch;
-  }
-
-  @Override
-  public boolean hasSearchQuery() {
-    return !TextUtils.isEmpty(searchQuery);
-  }
-
-  private void setNotInSearchUi() {
-    inDialpadSearch = false;
-    inRegularSearch = false;
-    inNewSearch = false;
-  }
-
-  private void hideDialpadAndSearchUi() {
-    if (isDialpadShown) {
-      hideDialpadFragment(false, true);
-    }
-    exitSearchUi();
-  }
-
-  private void prepareVoiceSearchButton() {
-    searchEditTextLayout.setVoiceSearchEnabled(isVoiceSearchEnabled());
-    voiceSearchButton.setOnClickListener(this);
-  }
-
-  private boolean isVoiceSearchEnabled() {
-    if (voiceSearchEnabledForTest.isPresent()) {
-      return voiceSearchEnabledForTest.get();
-    }
-    return canIntentBeHandled(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH));
-  }
-
-  public boolean isNearbyPlacesSearchEnabled() {
-    return false;
-  }
-
-  protected int getSearchBoxHint() {
-    return R.string.dialer_hint_find_contact;
-  }
-
-  /** Sets the hint text for the contacts search box */
-  private void setSearchBoxHint() {
-    ((TextView) searchEditTextLayout.findViewById(R.id.search_box_start_search))
-        .setHint(getSearchBoxHint());
-  }
-
-  protected OptionsPopupMenu buildOptionsMenu(View invoker) {
-    final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
-    popupMenu.inflate(R.menu.dialtacts_options);
-    popupMenu.setOnMenuItemClickListener(this);
-    return popupMenu;
-  }
-
-  @Override
-  public boolean onCreateOptionsMenu(Menu menu) {
-    if (pendingSearchViewQuery != null) {
-      searchView.setText(pendingSearchViewQuery);
-      pendingSearchViewQuery = null;
-    }
-    if (actionBarController != null) {
-      actionBarController.restoreActionBarOffset();
-    }
-    return false;
-  }
-
-  /**
-   * Returns true if the intent is due to hitting the green send key (hardware call button:
-   * KEYCODE_CALL) while in a call.
-   *
-   * @param intent the intent that launched this activity
-   * @return true if the intent is due to hitting the green send key while in a call
-   */
-  private boolean isSendKeyWhileInCall(Intent intent) {
-    // If there is a call in progress and the user launched the dialer by hitting the call
-    // button, go straight to the in-call screen.
-    final boolean callKey = Intent.ACTION_CALL_BUTTON.equals(intent.getAction());
-
-    // When KEYCODE_CALL event is handled it dispatches an intent with the ACTION_CALL_BUTTON.
-    // Besides of checking the intent action, we must check if the phone is really during a
-    // call in order to decide whether to ignore the event or continue to display the activity.
-    if (callKey && phoneIsInUse()) {
-      TelecomUtil.showInCallScreen(this, false);
-      return true;
-    }
-
-    return false;
-  }
-
-  /**
-   * Sets the current tab based on the intent's request type
-   *
-   * @param intent Intent that contains information about which tab should be selected
-   */
-  private void displayFragment(Intent intent) {
-    // If we got here by hitting send and we're in call forward along to the in-call activity
-    if (isSendKeyWhileInCall(intent)) {
-      finish();
-      return;
-    }
-
-    boolean showDialpadChooser =
-        !ACTION_SHOW_TAB.equals(intent.getAction())
-            && phoneIsInUse()
-            && !DialpadFragment.isAddCallMode(intent);
-    boolean isDialIntent = intent.getData() != null && isDialIntent(intent);
-    boolean isAddCallIntent = DialpadFragment.isAddCallMode(intent);
-    if (showDialpadChooser || isDialIntent || isAddCallIntent) {
-      LogUtil.i(
-          "DialtactsActivity.displayFragment",
-          "show dialpad fragment (showDialpadChooser: %b, isDialIntent: %b, isAddCallIntent: %b)",
-          showDialpadChooser,
-          isDialIntent,
-          isAddCallIntent);
-      showDialpadFragment(false);
-      dialpadFragment.setStartedFromNewIntent(true);
-      if (showDialpadChooser && !dialpadFragment.isVisible()) {
-        inCallDialpadUp = true;
-      }
-    } else if (isLastTabEnabled) {
-      @TabIndex
-      int tabIndex =
-          StorageComponent.get(this)
-              .unencryptedSharedPrefs()
-              .getInt(KEY_LAST_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-      // If voicemail tab is saved and its availability changes, we still move to the voicemail tab
-      // but it is quickly removed and shown the contacts tab.
-      if (listsFragment != null) {
-        listsFragment.showTab(tabIndex);
-        PerformanceReport.setStartingTabIndex(tabIndex);
-      } else {
-        PerformanceReport.setStartingTabIndex(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-      }
-    }
-  }
-
-  @Override
-  public void onNewIntent(Intent newIntent) {
-    LogUtil.enterBlock("DialtactsActivity.onNewIntent");
-    setIntent(newIntent);
-    firstLaunch = true;
-
-    stateSaved = false;
-    displayFragment(newIntent);
-
-    invalidateOptionsMenu();
-  }
-
-  /** Returns true if the given intent contains a phone number to populate the dialer with */
-  private boolean isDialIntent(Intent intent) {
-    final String action = intent.getAction();
-    if (Intent.ACTION_DIAL.equals(action) || ACTION_TOUCH_DIALER.equals(action)) {
-      return true;
-    }
-    if (Intent.ACTION_VIEW.equals(action)) {
-      final Uri data = intent.getData();
-      if (data != null && PhoneAccount.SCHEME_TEL.equals(data.getScheme())) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /** Shows the search fragment */
-  private void enterSearchUi(boolean smartDialSearch, String query, boolean animate) {
-    LogUtil.i("DialtactsActivity.enterSearchUi", "smart dial: %b", smartDialSearch);
-    if (stateSaved || getFragmentManager().isDestroyed()) {
-      // Weird race condition where fragment is doing work after the activity is destroyed
-      // due to talkback being on (a bug). Just return since we can't do any
-      // constructive here.
-      LogUtil.i(
-          "DialtactsActivity.enterSearchUi",
-          "not entering search UI (mStateSaved: %b, isDestroyed: %b)",
-          stateSaved,
-          getFragmentManager().isDestroyed());
-      return;
-    }
-
-    FragmentTransaction transaction = getFragmentManager().beginTransaction();
-    String tag = TAG_NEW_SEARCH_FRAGMENT;
-    inNewSearch = true;
-
-    floatingActionButtonController.scaleOut();
-
-    if (animate) {
-      transaction.setCustomAnimations(android.R.animator.fade_in, 0);
-    } else {
-      transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
-    }
-
-    NewSearchFragment fragment = (NewSearchFragment) getFragmentManager().findFragmentByTag(tag);
-    if (fragment == null) {
-      fragment = NewSearchFragment.newInstance();
-      transaction.add(R.id.dialtacts_frame, fragment, tag);
-    } else {
-      transaction.show(fragment);
-    }
-
-    // DialtactsActivity will provide the options menu
-    fragment.setHasOptionsMenu(false);
-    fragment.setQuery(query, getCallInitiationType());
-    transaction.commit();
-
-    if (animate) {
-      Assert.isNotNull(listsFragment.getView()).animate().alpha(0).withLayer();
-    }
-    listsFragment.setUserVisibleHint(false);
-  }
-
-  /** Hides the search fragment */
-  private void exitSearchUi() {
-    LogUtil.enterBlock("DialtactsActivity.exitSearchUi");
-
-    // See related bug in enterSearchUI();
-    if (getFragmentManager().isDestroyed() || stateSaved) {
-      return;
-    }
-
-    searchView.setText(null);
-
-    if (dialpadFragment != null) {
-      dialpadFragment.clearDialpad();
-    }
-
-    setNotInSearchUi();
-
-    // There are four states the fab can be in:
-    //   - Not visible and should remain not visible (do nothing)
-    //   - Not visible (move then show the fab)
-    //   - Visible, in the correct position (do nothing)
-    //   - Visible, in the wrong position (hide, move, then show the fab)
-    if (floatingActionButtonController.isVisible()
-        && getFabAlignment() != FloatingActionButtonController.ALIGN_END) {
-      floatingActionButtonController.scaleOut(
-          new OnVisibilityChangedListener() {
-            @Override
-            public void onHidden(FloatingActionButton floatingActionButton) {
-              super.onHidden(floatingActionButton);
-              onPageScrolled(
-                  listsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
-              floatingActionButtonController.scaleIn();
-            }
-          });
-    } else if (!floatingActionButtonController.isVisible() && listsFragment.shouldShowFab()) {
-      onPageScrolled(listsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
-      ThreadUtil.getUiThreadHandler()
-          .postDelayed(() -> floatingActionButtonController.scaleIn(), FAB_SCALE_IN_DELAY_MS);
-    }
-
-    final FragmentTransaction transaction = getFragmentManager().beginTransaction();
-    if (newSearchFragment != null) {
-      transaction.remove(newSearchFragment);
-    }
-    transaction.commit();
-
-    Assert.isNotNull(listsFragment.getView()).animate().alpha(1).withLayer();
-
-    if (dialpadFragment == null || !dialpadFragment.isVisible()) {
-      // If the dialpad fragment wasn't previously visible, then send a screen view because
-      // we are exiting regular search. Otherwise, the screen view will be sent by
-      // {@link #hideDialpadFragment}.
-      listsFragment.sendScreenViewForCurrentPosition();
-      listsFragment.setUserVisibleHint(true);
-    }
-    onPageSelected(listsFragment.getCurrentTabIndex());
-
-    actionBarController.onSearchUiExited();
-  }
-
-  @Override
-  public void onBackPressed() {
-    PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
-
-    if (stateSaved) {
-      return;
-    }
-    if (isDialpadShown) {
-      hideDialpadFragment(true, false);
-      if (TextUtils.isEmpty(dialpadQuery)) {
-        exitSearchUi();
-      }
-    } else if (isInSearchUi()) {
-      if (isKeyboardOpen) {
-        DialerUtils.hideInputMethod(parentLayout);
-        PerformanceReport.recordClick(UiAction.Type.HIDE_KEYBOARD_IN_SEARCH);
-      } else {
-        exitSearchUi();
-      }
-    } else {
-      super.onBackPressed();
-    }
-  }
-
-  @Override
-  public void onConfigurationChanged(Configuration configuration) {
-    super.onConfigurationChanged(configuration);
-    // Checks whether a hardware keyboard is available
-    if (configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
-      isKeyboardOpen = true;
-    } else if (configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
-      isKeyboardOpen = false;
-    }
-  }
-
-  private void maybeEnterSearchUi() {
-    if (!isInSearchUi()) {
-      enterSearchUi(true /* isSmartDial */, searchQuery, false);
-    }
-  }
-
-  @Override
-  public void onDialpadQueryChanged(String query) {
-    dialpadQuery = query;
-    if (newSearchFragment != null) {
-      newSearchFragment.setRawNumber(query);
-    }
-    final String normalizedQuery =
-        SmartDialNameMatcher.normalizeNumber(/* context = */ this, query);
-
-    if (!TextUtils.equals(searchView.getText(), normalizedQuery)) {
-      if (DEBUG) {
-        LogUtil.v("DialtactsActivity.onDialpadQueryChanged", "new query: " + query);
-      }
-      if (dialpadFragment == null || !dialpadFragment.isVisible()) {
-        // This callback can happen if the dialpad fragment is recreated because of
-        // activity destruction. In that case, don't update the search view because
-        // that would bring the user back to the search fragment regardless of the
-        // previous state of the application. Instead, just return here and let the
-        // fragment manager correctly figure out whatever fragment was last displayed.
-        if (!TextUtils.isEmpty(normalizedQuery)) {
-          pendingSearchViewQuery = normalizedQuery;
-        }
-        return;
-      }
-      searchView.setText(normalizedQuery);
-    }
-
-    try {
-      if (dialpadFragment != null && dialpadFragment.isVisible()) {
-        dialpadFragment.process_quote_emergency_unquote(normalizedQuery);
-      }
-    } catch (Exception ignored) {
-      // Skip any exceptions for this piece of code
-    }
-  }
-
-  @Override
-  public boolean onDialpadSpacerTouchWithEmptyQuery() {
-    return false;
-  }
-
-  @Override
-  public boolean shouldShowDialpadChooser() {
-    // Show the dialpad chooser if we're in a call
-    return true;
-  }
-
-  @Override
-  public void onSearchListTouch() {
-    if (isDialpadShown) {
-      PerformanceReport.recordClick(UiAction.Type.CLOSE_DIALPAD);
-      hideDialpadFragment(true, false);
-      if (TextUtils.isEmpty(dialpadQuery)) {
-        exitSearchUi();
-      }
-    } else {
-      UiUtil.hideKeyboardFrom(this, searchEditTextLayout);
-    }
-  }
-
-  @Override
-  public void onListFragmentScrollStateChange(int scrollState) {
-    PerformanceReport.recordScrollStateChange(scrollState);
-    if (scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
-      hideDialpadFragment(true, false);
-      DialerUtils.hideInputMethod(parentLayout);
-    }
-  }
-
-  @Override
-  public void onListFragmentScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-    // TODO: No-op for now. This should eventually show/hide the actionBar based on
-    // interactions with the ListsFragments.
-  }
-
-  private boolean phoneIsInUse() {
-    return TelecomUtil.isInManagedCall(this);
-  }
-
-  private boolean canIntentBeHandled(Intent intent) {
-    final PackageManager packageManager = getPackageManager();
-    final List<ResolveInfo> resolveInfo =
-        packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
-    return resolveInfo != null && resolveInfo.size() > 0;
-  }
-
-  /** Called when the user has long-pressed a contact tile to start a drag operation. */
-  @Override
-  public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-    listsFragment.showRemoveView(true);
-  }
-
-  @Override
-  public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {}
-
-  /** Called when the user has released a contact tile after long-pressing it. */
-  @Override
-  public void onDragFinished(int x, int y) {
-    listsFragment.showRemoveView(false);
-  }
-
-  @Override
-  public void onDroppedOnRemove() {}
-
-  @Override
-  public ImageView getDragShadowOverlay() {
-    return findViewById(R.id.contact_tile_drag_shadow_overlay);
-  }
-
-  @Override
-  public void setHasFrequents(boolean hasFrequents) {
-    // No-op
-  }
-
-  /**
-   * Allows the SpeedDialFragment to attach the drag controller to mRemoveViewContainer once it has
-   * been attached to the activity.
-   */
-  @Override
-  public void setDragDropController(DragDropController dragController) {
-    dragDropController = dragController;
-    listsFragment.getRemoveView().setDragDropController(dragController);
-  }
-
-  /** Implemented to satisfy {@link OldSpeedDialFragment.HostInterface} */
-  @Override
-  public void showAllContactsTab() {
-    if (listsFragment != null) {
-      listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS);
-    }
-  }
-
-  /** Implemented to satisfy {@link CallLogFragment.HostInterface} */
-  @Override
-  public void showDialpad() {
-    showDialpadFragment(true);
-  }
-
-  @Override
-  public void enableFloatingButton(boolean enabled) {
-    LogUtil.d("DialtactsActivity.enableFloatingButton", "enable: %b", enabled);
-    // Floating button shouldn't be enabled when dialpad is shown.
-    if (!isDialpadShown() || !enabled) {
-      floatingActionButtonController.setVisible(enabled);
-    }
-  }
-
-  @Override
-  public void onPickDataUri(
-      Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-    clearSearchOnPause = true;
-    PhoneNumberInteraction.startInteractionForPhoneCall(
-        DialtactsActivity.this, dataUri, isVideoCall, callSpecificAppData);
-  }
-
-  @Override
-  public void onPickPhoneNumber(
-      String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-    if (phoneNumber == null) {
-      // Invalid phone number, but let the call go through so that InCallUI can show
-      // an error message.
-      phoneNumber = "";
-    }
-    PreCall.start(
-        this,
-        new CallIntentBuilder(phoneNumber, callSpecificAppData)
-            .setIsVideoCall(isVideoCall)
-            .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
-
-    clearSearchOnPause = true;
-  }
-
-  @Override
-  public void onHomeInActionBarSelected() {
-    exitSearchUi();
-  }
-
-  @Override
-  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-    // FAB does not move with the new favorites UI
-  }
-
-  @Override
-  public void onPageSelected(int position) {
-    updateMissedCalls();
-    int tabIndex = listsFragment.getCurrentTabIndex();
-    if (tabIndex != previouslySelectedTabIndex) {
-      floatingActionButtonController.scaleIn();
-    }
-    LogUtil.i("DialtactsActivity.onPageSelected", "tabIndex: %d", tabIndex);
-    previouslySelectedTabIndex = tabIndex;
-    timeTabSelected = SystemClock.elapsedRealtime();
-  }
-
-  @Override
-  public void onPageScrollStateChanged(int state) {}
-
-  public boolean isActionBarShowing() {
-    return actionBarController.isActionBarShowing();
-  }
-
-  public boolean isDialpadShown() {
-    return isDialpadShown;
-  }
-
-  @Override
-  public void setActionBarHideOffset(int offset) {
-    getActionBarSafely().setHideOffset(offset);
-  }
-
-  @Override
-  public int getActionBarHeight() {
-    return actionBarHeight;
-  }
-
-  @VisibleForTesting
-  public int getFabAlignment() {
-    return FloatingActionButtonController.ALIGN_END;
-  }
-
-  private void updateMissedCalls() {
-    if (previouslySelectedTabIndex == DialtactsPagerAdapter.TAB_INDEX_HISTORY) {
-      listsFragment.markMissedCallsAsReadAndRemoveNotifications();
-    }
-  }
-
-  @Override
-  public void onDisambigDialogDismissed() {
-    // Don't do anything; the app will remain open with favorites tiles displayed.
-  }
-
-  @Override
-  public void interactionError(@InteractionErrorCode int interactionErrorCode) {
-    switch (interactionErrorCode) {
-      case InteractionErrorCode.USER_LEAVING_ACTIVITY:
-        // This is expected to happen if the user exits the activity before the interaction occurs.
-        return;
-      case InteractionErrorCode.CONTACT_NOT_FOUND:
-      case InteractionErrorCode.CONTACT_HAS_NO_NUMBER:
-      case InteractionErrorCode.OTHER_ERROR:
-      default:
-        // All other error codes are unexpected. For example, it should be impossible to start an
-        // interaction with an invalid contact from the Dialtacts activity.
-        Assert.fail("PhoneNumberInteraction error: " + interactionErrorCode);
-    }
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    // This should never happen; it should be impossible to start an interaction without the
-    // contacts permission from the Dialtacts activity.
-    Assert.fail(
-        String.format(
-            Locale.US,
-            "Permissions requested unexpectedly: %d/%s/%s",
-            requestCode,
-            Arrays.toString(permissions),
-            Arrays.toString(grantResults)));
-  }
-
-  @Override
-  public void onActionModeStateChanged(ActionMode mode, boolean isEnabled) {
-    isMultiSelectModeEnabled = isEnabled;
-  }
-
-  @Override
-  public boolean isActionModeStateEnabled() {
-    return isMultiSelectModeEnabled;
-  }
-
-  private CallInitiationType.Type getCallInitiationType() {
-    return isDialpadShown
-        ? CallInitiationType.Type.DIALPAD
-        : CallInitiationType.Type.REGULAR_SEARCH;
-  }
-
-  @Override
-  public void onCallPlacedFromSearch() {
-    DialerUtils.hideInputMethod(parentLayout);
-    clearSearchOnPause = true;
-  }
-
-  @Override
-  public void requestingPermission() {}
-
-  protected int getPreviouslySelectedTabIndex() {
-    return previouslySelectedTabIndex;
-  }
-
-  @Override
-  public void onContactSelected(ImageView photo, Uri contactUri, long contactId) {
-    Logger.get(this)
-        .logInteraction(InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM);
-    QuickContact.showQuickContact(
-        this, photo, contactUri, QuickContact.MODE_LARGE, null /* excludeMimes */);
-  }
-
-  /** Popup menu accessible from the search bar */
-  protected class OptionsPopupMenu extends PopupMenu {
-
-    public OptionsPopupMenu(Context context, View anchor) {
-      super(context, anchor, Gravity.END);
-    }
-
-    @Override
-    public void show() {
-      Menu menu = getMenu();
-      MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
-      clearFrequents.setVisible(
-          PermissionsUtil.hasContactsReadPermissions(DialtactsActivity.this)
-              && listsFragment != null
-              && listsFragment.hasFrequents());
-
-      menu.findItem(R.id.menu_history)
-          .setVisible(PermissionsUtil.hasPhonePermissions(DialtactsActivity.this));
-
-      Context context = DialtactsActivity.this.getApplicationContext();
-      MenuItem simulatorMenuItem = menu.findItem(R.id.menu_simulator_submenu);
-      Simulator simulator = SimulatorComponent.get(context).getSimulator();
-      if (simulator.shouldShow()) {
-        simulatorMenuItem.setVisible(true);
-        simulatorMenuItem.setActionProvider(simulator.getActionProvider(DialtactsActivity.this));
-      } else {
-        simulatorMenuItem.setVisible(false);
-      }
-      super.show();
-    }
-  }
-
-  /**
-   * Listener that listens to drag events and sends their x and y coordinates to a {@link
-   * DragDropController}.
-   */
-  private class LayoutOnDragListener implements OnDragListener {
-
-    @Override
-    public boolean onDrag(View v, DragEvent event) {
-      if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
-        dragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
-      }
-      return true;
-    }
-  }
-
-  @VisibleForTesting
-  static void setVoiceSearchEnabledForTest(Optional<Boolean> enabled) {
-    voiceSearchEnabledForTest = enabled;
-  }
-}
diff --git a/java/com/android/dialer/app/MainComponent.java b/java/com/android/dialer/app/MainComponent.java
index 1d3a4ce..c076cbc 100644
--- a/java/com/android/dialer/app/MainComponent.java
+++ b/java/com/android/dialer/app/MainComponent.java
@@ -59,6 +59,6 @@
   }
 
   private static String getComponentName() {
-    return "com.android.dialer.app.DialtactsActivity";
+    return "com.android.dialer.main.impl.MainActivity";
   }
 }
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 825bf8c..3675df4 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -33,7 +33,6 @@
 import com.android.dialer.spam.Spam;
 import com.android.dialer.spam.SpamComponent;
 import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
 
 /** Listener to show dialogs for block and report spam actions. */
 public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClickListener {
@@ -45,7 +44,6 @@
   private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
   private final Spam spam;
   private final SpamSettings spamSettings;
-  private final SpamBlockingPromoHelper spamBlockingPromoHelper;
 
   public BlockReportSpamListener(
       Context context,
@@ -60,7 +58,6 @@
     this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
     spam = SpamComponent.get(context).spam();
     spamSettings = SpamComponent.get(context).spamSettings();
-    spamBlockingPromoHelper = new SpamBlockingPromoHelper(context, spamSettings);
   }
 
   @Override
@@ -204,28 +201,5 @@
   }
 
   private void showSpamBlockingPromoDialog() {
-    if (!spamBlockingPromoHelper.shouldShowSpamBlockingPromo()) {
-      return;
-    }
-
-    Logger.get(context).logImpression(DialerImpression.Type.SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN);
-    spamBlockingPromoHelper.showSpamBlockingPromoDialog(
-        fragmentManager,
-        () -> {
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO);
-          spamSettings.modifySpamBlockingSetting(
-              true,
-              success -> {
-                if (!success) {
-                  Logger.get(context)
-                      .logImpression(
-                          DialerImpression.Type
-                              .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO);
-                }
-                spamBlockingPromoHelper.showModifySettingOnCompleteSnackbar(rootView, success);
-              });
-        },
-        null /* onDismissListener */);
   }
 }
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index edea8cb..6866d46 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -68,8 +68,6 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.AsyncTaskExecutor;
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.ContactsComponent;
 import com.android.dialer.duo.Duo;
 import com.android.dialer.duo.DuoComponent;
@@ -119,11 +117,6 @@
 
   public static final String LOAD_DATA_TASK_IDENTIFIER = "load_data";
 
-  public static final String ENABLE_CALL_LOG_MULTI_SELECT = "enable_call_log_multiselect";
-  public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = true;
-
-  @VisibleForTesting static final String FILTER_EMERGENCY_CALLS_FLAG = "filter_emergency_calls";
-
   protected final Activity activity;
   protected final VoicemailPlaybackPresenter voicemailPlaybackPresenter;
   /** Cache for repeated requests to Telecom/Telephony. */
@@ -289,10 +282,7 @@
       new View.OnLongClickListener() {
         @Override
         public boolean onLongClick(View v) {
-          if (ConfigProviderComponent.get(v.getContext())
-                  .getConfigProvider()
-                  .getBoolean(ENABLE_CALL_LOG_MULTI_SELECT, ENABLE_CALL_LOG_MULTI_SELECT_FLAG)
-              && voicemailPlaybackPresenter != null) {
+          if (voicemailPlaybackPresenter != null) {
             if (v.getId() == R.id.primary_action_view || v.getId() == R.id.quick_contact_photo) {
               if (actionMode == null) {
                 Logger.get(activity)
@@ -840,24 +830,12 @@
   }
 
   private boolean isHiddenRow(@Nullable String number, long rowId) {
-    if (isHideableEmergencyNumberRow(number)) {
-      return true;
-    }
     if (hiddenRowIds.contains(rowId)) {
       return true;
     }
     return false;
   }
 
-  private boolean isHideableEmergencyNumberRow(@Nullable String number) {
-    if (!ConfigProviderComponent.get(activity)
-        .getConfigProvider()
-        .getBoolean(FILTER_EMERGENCY_CALLS_FLAG, false)) {
-      return false;
-    }
-    return number != null && PhoneNumberUtils.isEmergencyNumber(number);
-  }
-
   private void loadAndRender(
       final CallLogListItemViewHolder viewHolder,
       final long rowId,
@@ -1054,10 +1032,7 @@
               details.number + details.postDialDigits,
               details.countryIso,
               details.cachedContactInfo,
-              position
-                  < ConfigProviderComponent.get(activity)
-                      .getConfigProvider()
-                      .getLong("number_of_call_to_do_remote_lookup", 5L));
+              position < 5L);
       logCp2Metrics(details, info);
     }
     CharSequence formattedNumber =
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index 51b8dd9..6a44253 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -58,7 +58,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.database.CallLogQueryHandler;
 import com.android.dialer.database.CallLogQueryHandler.Listener;
 import com.android.dialer.location.GeoUtil;
@@ -294,11 +293,6 @@
 
   protected void setupView(View view) {
     recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
-    if (ConfigProviderComponent.get(getContext())
-        .getConfigProvider()
-        .getBoolean("is_call_log_item_anim_null", false)) {
-      recyclerView.setItemAnimator(null);
-    }
     recyclerView.setHasFixedSize(true);
     layoutManager = new LinearLayoutManager(getActivity());
     recyclerView.setLayoutManager(layoutManager);
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index fa0e720..575de56 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -76,7 +76,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.constants.ActivityRequestCodes;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
@@ -152,8 +151,6 @@
 
   public View callButtonView;
   public View videoCallButtonView;
-  public View setUpVideoButtonView;
-  public View inviteVideoButtonView;
   public View createNewContactButtonView;
   public View addToExistingContactButtonView;
   public View sendMessageView;
@@ -317,12 +314,7 @@
     primaryActionButtonView.setOnClickListener(this);
     primaryActionButtonView.setOnLongClickListener(this);
     primaryActionView.setOnClickListener(this.expandCollapseListener);
-    if (this.voicemailPlaybackPresenter != null
-        && ConfigProviderComponent.get(this.context)
-            .getConfigProvider()
-            .getBoolean(
-                CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT,
-                CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT_FLAG)) {
+    if (this.voicemailPlaybackPresenter != null) {
       primaryActionView.setOnLongClickListener(longPressListener);
       quickContactView.setOnLongClickListener(longPressListener);
       quickContactView.setMulitSelectListeners(
@@ -361,54 +353,12 @@
         (ImageView) view.findViewById(R.id.primary_action_button));
   }
 
-  public static CallLogListItemViewHolder createForTest(Context context) {
-    return createForTest(context, null, null, new CallLogCache(context));
-  }
-
-  public static CallLogListItemViewHolder createForTest(
-      Context context,
-      View.OnClickListener expandCollapseListener,
-      VoicemailPlaybackPresenter voicemailPlaybackPresenter,
-      CallLogCache callLogCache) {
-    Resources resources = context.getResources();
-    PhoneCallDetailsHelper phoneCallDetailsHelper =
-        new PhoneCallDetailsHelper(context, resources, callLogCache);
-
-    CallLogListItemViewHolder viewHolder =
-        new CallLogListItemViewHolder(
-            context,
-            null,
-            expandCollapseListener /* expandCollapseListener */,
-            null,
-            null,
-            callLogCache,
-            new CallLogListItemHelper(phoneCallDetailsHelper, resources, callLogCache),
-            voicemailPlaybackPresenter,
-            LayoutInflater.from(context).inflate(R.layout.call_log_list_item, null),
-            new DialerQuickContactBadge(context),
-            new View(context),
-            PhoneCallDetailsViews.createForTest(context),
-            new CardView(context),
-            new TextView(context),
-            new ImageView(context));
-    viewHolder.detailsButtonView = new TextView(context);
-    viewHolder.actionsView = new View(context);
-    viewHolder.voicemailPlaybackView = new VoicemailPlaybackLayout(context);
-    viewHolder.workIconView = new ImageButton(context);
-    viewHolder.checkBoxView = new ImageButton(context);
-    return viewHolder;
-  }
-
   @Override
   public boolean onMenuItemClick(MenuItem item) {
     int resId = item.getItemId();
     if (resId == R.id.context_menu_copy_to_clipboard) {
       ClipboardUtils.copyText(context, null, number, true);
       return true;
-    } else if (resId == R.id.context_menu_copy_transcript_to_clipboard) {
-      ClipboardUtils.copyText(
-          context, null, phoneCallDetailsViews.voicemailTranscriptionView.getText(), true);
-      return true;
     } else if (resId == R.id.context_menu_edit_before_call) {
       final Intent intent = new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(number));
       DialerUtils.startActivityWithErrorToast(context, intent);
@@ -459,12 +409,6 @@
       videoCallButtonView = actionsView.findViewById(R.id.video_call_action);
       videoCallButtonView.setOnClickListener(this);
 
-      setUpVideoButtonView = actionsView.findViewById(R.id.set_up_video_action);
-      setUpVideoButtonView.setOnClickListener(this);
-
-      inviteVideoButtonView = actionsView.findViewById(R.id.invite_video_action);
-      inviteVideoButtonView.setOnClickListener(this);
-
       createNewContactButtonView = actionsView.findViewById(R.id.create_new_contact_action);
       createNewContactButtonView.setOnClickListener(this);
 
@@ -596,8 +540,6 @@
     // This saves us having to remember to set it to GONE in multiple places.
     callButtonView.setVisibility(View.GONE);
     videoCallButtonView.setVisibility(View.GONE);
-    setUpVideoButtonView.setVisibility(View.GONE);
-    inviteVideoButtonView.setVisibility(View.GONE);
 
     // For an emergency number, show "Call details" only.
     if (PhoneNumberHelper.isLocalEmergencyNumber(context, number)) {
@@ -703,43 +645,11 @@
           break;
         }
 
-        boolean identifiedSpamCall = isSpamFeatureEnabled && isSpam;
         if (duo.isReachable(context, number)) {
           videoCallButtonView.setTag(
               IntentProvider.getDuoVideoIntentProvider(number, isNonContactEntry(info)));
           videoCallButtonView.setVisibility(View.VISIBLE);
           CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-        } else if (duo.isActivated(context) && !identifiedSpamCall) {
-          if (ConfigProviderComponent.get(context)
-              .getConfigProvider()
-              .getBoolean("enable_call_log_duo_invite_button", false)) {
-            inviteVideoButtonView.setTag(IntentProvider.getDuoInviteIntentProvider(number));
-            inviteVideoButtonView.setVisibility(View.VISIBLE);
-            Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE_SHOWN);
-            CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-          }
-        } else if (duo.isEnabled(context) && !identifiedSpamCall) {
-          if (!duo.isInstalled(context)) {
-            if (ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getBoolean("enable_call_log_install_duo_button", false)) {
-              setUpVideoButtonView.setTag(IntentProvider.getInstallDuoIntentProvider());
-              setUpVideoButtonView.setVisibility(View.VISIBLE);
-              Logger.get(context)
-                  .logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL_SHOWN);
-              CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-            }
-          } else {
-            if (ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getBoolean("enable_call_log_activate_duo_button", false)) {
-              setUpVideoButtonView.setTag(IntentProvider.getSetUpDuoIntentProvider());
-              setUpVideoButtonView.setVisibility(View.VISIBLE);
-              Logger.get(context)
-                  .logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE_SHOWN);
-              CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-            }
-          }
         }
         break;
       default:
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
index 126b7a1..f37d5d3 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
@@ -23,7 +23,6 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.Build;
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract.Voicemails;
 import android.support.annotation.NonNull;
@@ -38,7 +37,6 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.database.Selection;
 import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
@@ -51,11 +49,6 @@
 
 /** Helper class operating on call log notifications. */
 public class CallLogNotificationsQueryHelper {
-
-  @VisibleForTesting
-  static final String CONFIG_NEW_VOICEMAIL_NOTIFICATION_THRESHOLD_OFFSET =
-      "new_voicemail_notification_threshold";
-
   private final Context context;
   private final NewCallsQuery newCallsQuery;
   private final ContactInfoHelper contactInfoHelper;
@@ -164,11 +157,7 @@
   public List<NewCall> getNewVoicemails() {
     return newCallsQuery.query(
         Calls.VOICEMAIL_TYPE,
-        System.currentTimeMillis()
-            - ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getLong(
-                    CONFIG_NEW_VOICEMAIL_NOTIFICATION_THRESHOLD_OFFSET, TimeUnit.DAYS.toMillis(7)));
+        System.currentTimeMillis() - TimeUnit.DAYS.toMillis(7));
   }
 
   /**
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index e6b94fc..46de7ad 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -79,8 +79,6 @@
   private final Calendar calendar;
 
   private final CachedNumberLookupService cachedNumberLookupService;
-  /** The injected current time in milliseconds since the epoch. Used only by tests. */
-  private Long currentTimeMillisForTest;
 
   private CharSequence phoneTypeLabelForTest;
   /** List of items to be concatenated together for accessibility descriptions */
@@ -570,11 +568,7 @@
    * <p>It can be injected in tests using {@link #setCurrentTimeForTest(long)}.
    */
   private long getCurrentTimeMillis() {
-    if (currentTimeMillisForTest == null) {
-      return System.currentTimeMillis();
-    } else {
-      return currentTimeMillisForTest;
-    }
+    return System.currentTimeMillis();
   }
 
   /** Sets the call count, date, and if it is a voicemail, sets the duration. */
diff --git a/java/com/android/dialer/app/list/ContentChangedFilter.java b/java/com/android/dialer/app/list/ContentChangedFilter.java
deleted file mode 100644
index 8c532ba..0000000
--- a/java/com/android/dialer/app/list/ContentChangedFilter.java
+++ /dev/null
@@ -1,56 +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.app.list;
-
-import android.view.View;
-import android.view.View.AccessibilityDelegate;
-import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityEvent;
-
-/**
- * AccessibilityDelegate that will filter out TYPE_WINDOW_CONTENT_CHANGED Used to suppress "Showing
- * items x of y" from firing of ListView whenever it's content changes. AccessibilityEvent can only
- * be rejected at a view's parent once it is generated, use addToParent() to add this delegate to
- * the parent.
- */
-public class ContentChangedFilter extends AccessibilityDelegate {
-
-  // the view we don't want TYPE_WINDOW_CONTENT_CHANGED to fire.
-  private View view;
-
-  private ContentChangedFilter(View view) {
-    super();
-    this.view = view;
-  }
-
-  /** Add this delegate to the parent of @param view to filter out TYPE_WINDOW_CONTENT_CHANGED */
-  public static void addToParent(View view) {
-    View parent = (View) view.getParent();
-    parent.setAccessibilityDelegate(new ContentChangedFilter(view));
-  }
-
-  @Override
-  public boolean onRequestSendAccessibilityEvent(
-      ViewGroup host, View child, AccessibilityEvent event) {
-    if (child == view) {
-      if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
-        return false;
-      }
-    }
-    return super.onRequestSendAccessibilityEvent(host, child, event);
-  }
-}
diff --git a/java/com/android/dialer/app/list/DialerViewPager.java b/java/com/android/dialer/app/list/DialerViewPager.java
deleted file mode 100644
index ae99f05..0000000
--- a/java/com/android/dialer/app/list/DialerViewPager.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2017 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.app.list;
-
-import android.content.Context;
-import android.support.v4.view.ViewPager;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-/** Class that handles enabling/disabling swiping between @{ViewPagerTabs}. */
-public class DialerViewPager extends ViewPager {
-
-  private boolean enableSwipingPages;
-
-  public DialerViewPager(Context context, AttributeSet attributeSet) {
-    super(context, attributeSet);
-    enableSwipingPages = true;
-  }
-
-  @Override
-  public boolean onInterceptTouchEvent(MotionEvent event) {
-    if (enableSwipingPages) {
-      return super.onInterceptTouchEvent(event);
-    }
-
-    return false;
-  }
-
-  @Override
-  public boolean onTouchEvent(MotionEvent event) {
-    if (enableSwipingPages) {
-      return super.onTouchEvent(event);
-    }
-
-    return false;
-  }
-
-  public void setEnableSwipingPages(boolean enabled) {
-    enableSwipingPages = enabled;
-  }
-}
diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
deleted file mode 100644
index 317f24f..0000000
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2017 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.app.list;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.support.annotation.IntDef;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactsfragment.ContactsFragment;
-import com.android.dialer.contactsfragment.ContactsFragment.Header;
-import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.util.ViewUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/** ViewPager adapter for {@link com.android.dialer.app.DialtactsActivity}. */
-public class DialtactsPagerAdapter extends FragmentPagerAdapter {
-
-  /** IntDef for indices of ViewPager tabs. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({TAB_INDEX_SPEED_DIAL, TAB_INDEX_HISTORY, TAB_INDEX_ALL_CONTACTS, TAB_INDEX_VOICEMAIL})
-  public @interface TabIndex {}
-
-  public static final int TAB_INDEX_SPEED_DIAL = 0;
-  public static final int TAB_INDEX_HISTORY = 1;
-  public static final int TAB_INDEX_ALL_CONTACTS = 2;
-  public static final int TAB_INDEX_VOICEMAIL = 3;
-  public static final int TAB_COUNT_DEFAULT = 3;
-  public static final int TAB_COUNT_WITH_VOICEMAIL = 4;
-
-  private final List<Fragment> fragments = new ArrayList<>();
-  private final String[] tabTitles;
-  private OldSpeedDialFragment oldSpeedDialFragment;
-  private CallLogFragment callLogFragment;
-  private ContactsFragment contactsFragment;
-  private CallLogFragment voicemailFragment;
-
-  private boolean hasActiveVoicemailProvider;
-
-  public DialtactsPagerAdapter(
-      FragmentManager fm, String[] tabTitles, boolean hasVoicemailProvider) {
-    super(fm);
-    this.tabTitles = tabTitles;
-    hasActiveVoicemailProvider = hasVoicemailProvider;
-    fragments.addAll(Collections.nCopies(TAB_COUNT_WITH_VOICEMAIL, null));
-  }
-
-  @Override
-  public long getItemId(int position) {
-    return getRtlPosition(position);
-  }
-
-  @Override
-  public Fragment getItem(int position) {
-    LogUtil.d("ViewPagerAdapter.getItem", "position: %d", position);
-    switch (getRtlPosition(position)) {
-      case TAB_INDEX_SPEED_DIAL:
-        if (oldSpeedDialFragment == null) {
-          oldSpeedDialFragment = new OldSpeedDialFragment();
-        }
-        return oldSpeedDialFragment;
-      case TAB_INDEX_HISTORY:
-        if (callLogFragment == null) {
-          callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
-        }
-        return callLogFragment;
-      case TAB_INDEX_ALL_CONTACTS:
-        if (contactsFragment == null) {
-          contactsFragment = ContactsFragment.newInstance(Header.ADD_CONTACT);
-        }
-        return contactsFragment;
-      case TAB_INDEX_VOICEMAIL:
-        if (voicemailFragment == null) {
-          voicemailFragment = new VisualVoicemailCallLogFragment();
-          LogUtil.v(
-              "ViewPagerAdapter.getItem",
-              "new VisualVoicemailCallLogFragment: %s",
-              voicemailFragment);
-        }
-        return voicemailFragment;
-      default:
-        throw Assert.createIllegalStateFailException("No fragment at position " + position);
-    }
-  }
-
-  @Override
-  public Fragment instantiateItem(ViewGroup container, int position) {
-    LogUtil.d("ViewPagerAdapter.instantiateItem", "position: %d", position);
-    // On rotation the FragmentManager handles rotation. Therefore getItem() isn't called.
-    // Copy the fragments that the FragmentManager finds so that we can store them in
-    // instance variables for later.
-    final Fragment fragment = (Fragment) super.instantiateItem(container, position);
-    if (fragment instanceof OldSpeedDialFragment) {
-      oldSpeedDialFragment = (OldSpeedDialFragment) fragment;
-    } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_HISTORY) {
-      callLogFragment = (CallLogFragment) fragment;
-    } else if (fragment instanceof ContactsFragment) {
-      contactsFragment = (ContactsFragment) fragment;
-    } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
-      voicemailFragment = (CallLogFragment) fragment;
-      LogUtil.v("ViewPagerAdapter.instantiateItem", voicemailFragment.toString());
-    }
-    fragments.set(position, fragment);
-    return fragment;
-  }
-
-  /**
-   * When {@link android.support.v4.view.PagerAdapter#notifyDataSetChanged} is called, this method
-   * is called on all pages to determine whether they need to be recreated. When the voicemail tab
-   * is removed, the view needs to be recreated by returning POSITION_NONE. If notifyDataSetChanged
-   * is called for some other reason, the voicemail tab is recreated only if it is active. All other
-   * tabs do not need to be recreated and POSITION_UNCHANGED is returned.
-   */
-  @Override
-  public int getItemPosition(Object object) {
-    return !hasActiveVoicemailProvider && fragments.indexOf(object) == TAB_INDEX_VOICEMAIL
-        ? POSITION_NONE
-        : POSITION_UNCHANGED;
-  }
-
-  @Override
-  public int getCount() {
-    return hasActiveVoicemailProvider ? TAB_COUNT_WITH_VOICEMAIL : TAB_COUNT_DEFAULT;
-  }
-
-  @Override
-  public CharSequence getPageTitle(@TabIndex int position) {
-    return tabTitles[position];
-  }
-
-  public int getRtlPosition(int position) {
-    if (ViewUtil.isRtl()) {
-      return getCount() - 1 - position;
-    }
-    return position;
-  }
-
-  public void removeVoicemailFragment(FragmentManager manager) {
-    if (voicemailFragment != null) {
-      manager.beginTransaction().remove(voicemailFragment).commitAllowingStateLoss();
-      voicemailFragment = null;
-    }
-  }
-
-  public boolean hasActiveVoicemailProvider() {
-    return hasActiveVoicemailProvider;
-  }
-
-  public void setHasActiveVoicemailProvider(boolean hasActiveVoicemailProvider) {
-    this.hasActiveVoicemailProvider = hasActiveVoicemailProvider;
-  }
-}
diff --git a/java/com/android/dialer/app/list/DragDropController.java b/java/com/android/dialer/app/list/DragDropController.java
deleted file mode 100644
index 1c33a8a..0000000
--- a/java/com/android/dialer/app/list/DragDropController.java
+++ /dev/null
@@ -1,96 +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.app.list;
-
-import android.view.View;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class that handles and combines drag events generated from multiple views, and then fires off
- * events to any OnDragDropListeners that have registered for callbacks.
- */
-public class DragDropController {
-
-  private final List<OnDragDropListener> onDragDropListeners = new ArrayList<OnDragDropListener>();
-  private final DragItemContainer dragItemContainer;
-  private final int[] locationOnScreen = new int[2];
-
-  public DragDropController(DragItemContainer dragItemContainer) {
-    this.dragItemContainer = dragItemContainer;
-  }
-
-  /** @return True if the drag is started, false if the drag is cancelled for some reason. */
-  boolean handleDragStarted(View v, int x, int y) {
-    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(x, y, tileView);
-    }
-
-    return true;
-  }
-
-  public void handleDragHovered(View v, int x, int y) {
-    v.getLocationOnScreen(locationOnScreen);
-    final int screenX = x + locationOnScreen[0];
-    final int screenY = y + locationOnScreen[1];
-    final PhoneFavoriteSquareTileView view = dragItemContainer.getViewForLocation(screenX, screenY);
-    for (int i = 0; i < onDragDropListeners.size(); i++) {
-      onDragDropListeners.get(i).onDragHovered(screenX, screenY, view);
-    }
-  }
-
-  public void handleDragFinished(int x, int y, boolean isRemoveView) {
-    if (isRemoveView) {
-      for (int i = 0; i < onDragDropListeners.size(); i++) {
-        onDragDropListeners.get(i).onDroppedOnRemove();
-      }
-    }
-
-    for (int i = 0; i < onDragDropListeners.size(); i++) {
-      onDragDropListeners.get(i).onDragFinished(x, y);
-    }
-  }
-
-  public void addOnDragDropListener(OnDragDropListener listener) {
-    if (!onDragDropListeners.contains(listener)) {
-      onDragDropListeners.add(listener);
-    }
-  }
-
-  public void removeOnDragDropListener(OnDragDropListener listener) {
-    if (onDragDropListeners.contains(listener)) {
-      onDragDropListeners.remove(listener);
-    }
-  }
-
-  /**
-   * Callback interface used to retrieve views based on the current touch coordinates of the drag
-   * event. The {@link DragItemContainer} houses the draggable views that this {@link
-   * DragDropController} controls.
-   */
-  public interface DragItemContainer {
-
-    PhoneFavoriteSquareTileView getViewForLocation(int x, int y);
-  }
-}
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
deleted file mode 100644
index e75561e..0000000
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Copyright (C) 2013 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.app.list;
-
-import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING;
-
-import android.app.Fragment;
-import android.content.SharedPreferences;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Trace;
-import android.preference.PreferenceManager;
-import android.provider.VoicemailContract;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.contacts.common.list.ViewPagerTabs;
-import com.android.dialer.app.R;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
-import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.database.CallLogQueryHandler.Listener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
-import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
-import java.util.ArrayList;
-
-/**
- * Fragment that is used as the main screen of the Dialer.
- *
- * <p>Contains a ViewPager that contains various contact lists like the Speed Dial list and the All
- * Contacts list. This will also eventually contain the logic that allows sliding the ViewPager
- * containing the lists up above the search bar and pin it against the top of the screen.
- */
-public class ListsFragment extends Fragment
-    implements OnPageChangeListener, Listener, CallLogFragmentListener {
-
-  private static final String TAG = "ListsFragment";
-
-  private DialerViewPager viewPager;
-  private ViewPagerTabs viewPagerTabs;
-  private DialtactsPagerAdapter adapter;
-  private RemoveView removeView;
-  private View removeViewContent;
-  private Fragment currentPage;
-  private SharedPreferences prefs;
-  private boolean hasFetchedVoicemailStatus;
-  private boolean showVoicemailTabAfterVoicemailStatusIsFetched;
-  private final ArrayList<OnPageChangeListener> onPageChangeListeners = new ArrayList<>();
-  /** The position of the currently selected tab. */
-  private int tabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
-
-  private boolean paused;
-  private CallLogQueryHandler callLogQueryHandler;
-
-  private UiAction.Type[] actionTypeList;
-  private final DialerImpression.Type[] swipeImpressionList =
-      new DialerImpression.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-  private final DialerImpression.Type[] clickImpressionList =
-      new DialerImpression.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-
-  // Only for detecting page selected by swiping or clicking.
-  private boolean onPageScrolledBeforeScrollStateSettling;
-
-  private final ContentObserver voicemailStatusObserver =
-      new ContentObserver(new Handler()) {
-        @Override
-        public void onChange(boolean selfChange) {
-          super.onChange(selfChange);
-          callLogQueryHandler.fetchVoicemailStatus();
-        }
-      };
-
-  @Override
-  public void onCreate(Bundle savedInstanceState) {
-    LogUtil.d("ListsFragment.onCreate", null);
-    Trace.beginSection(TAG + " onCreate");
-    super.onCreate(savedInstanceState);
-    prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
-    Trace.endSection();
-  }
-
-  @Override
-  public void onResume() {
-    LogUtil.enterBlock("ListsFragment.onResume");
-    Trace.beginSection(TAG + " onResume");
-    super.onResume();
-
-    paused = false;
-
-    if (getUserVisibleHint()) {
-      sendScreenViewForCurrentPosition();
-    }
-
-    // Fetch voicemail status to determine if we should show the voicemail tab.
-    callLogQueryHandler =
-        new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this);
-    callLogQueryHandler.fetchVoicemailStatus();
-    callLogQueryHandler.fetchMissedCallsUnreadCount();
-    Trace.endSection();
-    currentPage = adapter.getItem(viewPager.getCurrentItem());
-  }
-
-  @Override
-  public void onPause() {
-    LogUtil.enterBlock("ListsFragment.onPause");
-    super.onPause();
-
-    paused = true;
-  }
-
-  @Override
-  public void onDestroyView() {
-    super.onDestroyView();
-    viewPager.removeOnPageChangeListener(this);
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    LogUtil.enterBlock("ListsFragment.onCreateView");
-    Trace.beginSection(TAG + " onCreateView");
-    Trace.beginSection(TAG + " inflate view");
-    final View parentView = inflater.inflate(R.layout.lists_fragment, container, false);
-    Trace.endSection();
-    Trace.beginSection(TAG + " setup views");
-
-    actionTypeList = new UiAction.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        UiAction.Type.CHANGE_TAB_TO_FAVORITE;
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] = UiAction.Type.CHANGE_TAB_TO_CALL_LOG;
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        UiAction.Type.CHANGE_TAB_TO_CONTACTS;
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        UiAction.Type.CHANGE_TAB_TO_VOICEMAIL;
-
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        DialerImpression.Type.SWITCH_TAB_TO_FAVORITE_BY_SWIPE;
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
-        DialerImpression.Type.SWITCH_TAB_TO_CALL_LOG_BY_SWIPE;
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        DialerImpression.Type.SWITCH_TAB_TO_CONTACTS_BY_SWIPE;
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        DialerImpression.Type.SWITCH_TAB_TO_VOICEMAIL_BY_SWIPE;
-
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        DialerImpression.Type.SWITCH_TAB_TO_FAVORITE_BY_CLICK;
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
-        DialerImpression.Type.SWITCH_TAB_TO_CALL_LOG_BY_CLICK;
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        DialerImpression.Type.SWITCH_TAB_TO_CONTACTS_BY_CLICK;
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        DialerImpression.Type.SWITCH_TAB_TO_VOICEMAIL_BY_CLICK;
-
-    String[] tabTitles = new String[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        getResources().getString(R.string.tab_speed_dial);
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
-        getResources().getString(R.string.tab_history);
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        getResources().getString(R.string.tab_all_contacts);
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        getResources().getString(R.string.tab_voicemail);
-
-    int[] tabIcons = new int[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] = R.drawable.quantum_ic_grade_vd_theme_24;
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_HISTORY] = R.drawable.quantum_ic_schedule_vd_theme_24;
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-            R.drawable.quantum_ic_people_vd_theme_24;
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-            R.drawable.quantum_ic_voicemail_vd_theme_24;
-
-    viewPager = (DialerViewPager) parentView.findViewById(R.id.lists_pager);
-    adapter =
-        new DialtactsPagerAdapter(
-            getChildFragmentManager(),
-            tabTitles,
-            prefs.getBoolean(
-                VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false));
-    viewPager.setAdapter(adapter);
-
-    // This is deliberate. See cl/172018946 for the app startup implications of using 1 here
-    // versus loading more fragments upfront.
-    viewPager.setOffscreenPageLimit(1);
-
-    viewPager.addOnPageChangeListener(this);
-    showTab(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-
-    viewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
-    viewPagerTabs.configureTabIcons(tabIcons);
-    viewPagerTabs.setViewPager(viewPager);
-    addOnPageChangeListener(viewPagerTabs);
-    removeView = (RemoveView) parentView.findViewById(R.id.remove_view);
-    removeViewContent = parentView.findViewById(R.id.remove_view_content);
-
-    if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
-        && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
-      getActivity()
-          .getContentResolver()
-          .registerContentObserver(
-              VoicemailContract.Status.CONTENT_URI, true, voicemailStatusObserver);
-    } else {
-      LogUtil.w("ListsFragment.onCreateView", "no voicemail read permissions");
-    }
-
-    Trace.endSection();
-    Trace.endSection();
-    return parentView;
-  }
-
-  @Override
-  public void onDestroy() {
-    getActivity().getContentResolver().unregisterContentObserver(voicemailStatusObserver);
-    super.onDestroy();
-  }
-
-  public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
-    if (!onPageChangeListeners.contains(onPageChangeListener)) {
-      onPageChangeListeners.add(onPageChangeListener);
-    }
-  }
-
-  /**
-   * Shows the tab with the specified index. If the voicemail tab index is specified, but the
-   * voicemail status hasn't been fetched, it will show the speed dial tab and try to show the
-   * voicemail tab after the voicemail status has been fetched.
-   */
-  public void showTab(int index) {
-    if (index == DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL) {
-      if (adapter.hasActiveVoicemailProvider()) {
-        viewPager.setCurrentItem(adapter.getRtlPosition(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL));
-      } else if (!hasFetchedVoicemailStatus) {
-        // Try to show the voicemail tab after the voicemail status returns.
-        showVoicemailTabAfterVoicemailStatusIsFetched = true;
-      }
-    } else if (index < getTabCount()) {
-      viewPager.setCurrentItem(adapter.getRtlPosition(index));
-    }
-  }
-
-  @Override
-  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-    // onPageScrolled(0, 0, 0) is called when app launch. And we should ignore it.
-    // It's also called when swipe right from first tab, but we don't care.
-    if (positionOffsetPixels != 0) {
-      onPageScrolledBeforeScrollStateSettling = true;
-    }
-    tabIndex = adapter.getRtlPosition(position);
-
-    final int count = onPageChangeListeners.size();
-    for (int i = 0; i < count; i++) {
-      onPageChangeListeners.get(i).onPageScrolled(position, positionOffset, positionOffsetPixels);
-    }
-  }
-
-  @Override
-  public void onPageSelected(int position) {
-    // onPageScrollStateChanged(SCROLL_STATE_SETTLING) must be called before this.
-    // If onPageScrolled() is called before that, the page is selected by swiping;
-    // otherwise the page is selected by clicking.
-    if (onPageScrolledBeforeScrollStateSettling) {
-      Logger.get(getContext()).logImpression(swipeImpressionList[position]);
-      onPageScrolledBeforeScrollStateSettling = false;
-    } else {
-      Logger.get(getContext()).logImpression(clickImpressionList[position]);
-    }
-
-    PerformanceReport.recordClick(actionTypeList[position]);
-
-    LogUtil.i("ListsFragment.onPageSelected", "position: %d", position);
-    tabIndex = adapter.getRtlPosition(position);
-
-    // Show the tab which has been selected instead.
-    showVoicemailTabAfterVoicemailStatusIsFetched = false;
-
-    final int count = onPageChangeListeners.size();
-    for (int i = 0; i < count; i++) {
-      onPageChangeListeners.get(i).onPageSelected(position);
-    }
-    sendScreenViewForCurrentPosition();
-
-    if (currentPage instanceof CallLogFragment) {
-      ((CallLogFragment) currentPage).onNotVisible();
-    }
-    currentPage = adapter.getItem(position);
-    if (currentPage instanceof CallLogFragment) {
-      ((CallLogFragment) currentPage).onVisible();
-    }
-  }
-
-  @Override
-  public void onPageScrollStateChanged(int state) {
-    if (state != SCROLL_STATE_SETTLING) {
-      onPageScrolledBeforeScrollStateSettling = false;
-    }
-
-    final int count = onPageChangeListeners.size();
-    for (int i = 0; i < count; i++) {
-      onPageChangeListeners.get(i).onPageScrollStateChanged(state);
-    }
-  }
-
-  @Override
-  public void onVoicemailStatusFetched(Cursor statusCursor) {
-    hasFetchedVoicemailStatus = true;
-
-    if (getActivity() == null || paused) {
-      return;
-    }
-
-    // Update hasActiveVoicemailProvider, which controls the number of tabs displayed.
-    boolean hasActiveVoicemailProvider =
-        VoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
-    if (hasActiveVoicemailProvider != adapter.hasActiveVoicemailProvider()) {
-      adapter.setHasActiveVoicemailProvider(hasActiveVoicemailProvider);
-      adapter.notifyDataSetChanged();
-
-      if (hasActiveVoicemailProvider) {
-        Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_TAB_VISIBLE);
-        viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-      } else {
-        viewPagerTabs.removeTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-        adapter.removeVoicemailFragment(getChildFragmentManager());
-      }
-
-      prefs
-          .edit()
-          .putBoolean(
-              VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER,
-              hasActiveVoicemailProvider)
-          .apply();
-    }
-
-    if (hasActiveVoicemailProvider) {
-      callLogQueryHandler.fetchVoicemailUnreadCount();
-    }
-
-    if (adapter.hasActiveVoicemailProvider() && showVoicemailTabAfterVoicemailStatusIsFetched) {
-      showVoicemailTabAfterVoicemailStatusIsFetched = false;
-      showTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-    }
-  }
-
-  @Override
-  public void onVoicemailUnreadCountFetched(Cursor cursor) {
-    if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
-      return;
-    }
-
-    int count = 0;
-    try {
-      count = cursor.getCount();
-    } finally {
-      cursor.close();
-    }
-
-    viewPagerTabs.setUnreadCount(count, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-    viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-  }
-
-  @Override
-  public void onMissedCallsUnreadCountFetched(Cursor cursor) {
-    if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
-      return;
-    }
-
-    int count = 0;
-    try {
-      count = cursor.getCount();
-    } finally {
-      cursor.close();
-    }
-
-    viewPagerTabs.setUnreadCount(count, DialtactsPagerAdapter.TAB_INDEX_HISTORY);
-    viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_HISTORY);
-  }
-
-  @Override
-  public boolean onCallsFetched(Cursor statusCursor) {
-    // Return false; did not take ownership of cursor
-    return false;
-  }
-
-  public int getCurrentTabIndex() {
-    return tabIndex;
-  }
-
-  public boolean shouldShowFab() {
-    // If the VVM TOS is visible, don't show the fab
-    if (currentPage instanceof VisualVoicemailCallLogFragment
-        && ((VisualVoicemailCallLogFragment) currentPage).isModalAlertVisible()) {
-      return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public void updateTabUnreadCounts() {
-    if (callLogQueryHandler != null) {
-      callLogQueryHandler.fetchMissedCallsUnreadCount();
-      if (adapter.hasActiveVoicemailProvider()) {
-        callLogQueryHandler.fetchVoicemailUnreadCount();
-      }
-    }
-  }
-
-  /** External method to mark all missed calls as read. */
-  public void markMissedCallsAsReadAndRemoveNotifications() {
-    if (callLogQueryHandler != null) {
-      callLogQueryHandler.markMissedCallsAsRead();
-      CallLogNotificationsService.cancelAllMissedCalls(getContext());
-    }
-  }
-
-  public void showRemoveView(boolean show) {
-    removeViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
-    removeView.setAlpha(show ? 0 : 1);
-    removeView.animate().alpha(show ? 1 : 0).start();
-  }
-
-  @Override
-  public void showMultiSelectRemoveView(boolean show) {
-    viewPagerTabs.setVisibility(show ? View.GONE : View.VISIBLE);
-    viewPager.setEnableSwipingPages(!show);
-  }
-
-  public boolean hasFrequents() {
-    OldSpeedDialFragment page =
-        (OldSpeedDialFragment)
-            adapter.getItem(adapter.getRtlPosition(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL));
-    return page.hasFrequents();
-  }
-
-  public RemoveView getRemoveView() {
-    return removeView;
-  }
-
-  public int getTabCount() {
-    return adapter.getCount();
-  }
-
-  public void sendScreenViewForCurrentPosition() {
-    if (!isResumed()) {
-      return;
-    }
-
-    ScreenEvent.Type screenType;
-    switch (getCurrentTabIndex()) {
-      case DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL:
-        screenType = ScreenEvent.Type.SPEED_DIAL;
-        break;
-      case DialtactsPagerAdapter.TAB_INDEX_HISTORY:
-        screenType = ScreenEvent.Type.CALL_LOG;
-        break;
-      case DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS:
-        screenType = ScreenEvent.Type.ALL_CONTACTS;
-        break;
-      case DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL:
-        screenType = ScreenEvent.Type.VOICEMAIL_LOG;
-        break;
-      default:
-        return;
-    }
-    Logger.get(getActivity()).logScreenView(screenType, getActivity());
-  }
-}
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
deleted file mode 100644
index 9922ee2..0000000
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright (C) 2013 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.app.list;
-
-import static android.Manifest.permission.READ_CONTACTS;
-
-import android.animation.Animator;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Trace;
-import android.support.v13.app.FragmentCompat;
-import android.support.v4.util.LongSparseArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LayoutAnimationController;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.FrameLayout;
-import android.widget.FrameLayout.LayoutParams;
-import android.widget.ImageView;
-import android.widget.ListView;
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.app.R;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.FragmentUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.util.ViewUtil;
-import com.android.dialer.widget.EmptyContentView;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/** This fragment displays the user's favorite/frequent contacts in a grid. */
-public class OldSpeedDialFragment extends Fragment
-    implements OnItemClickListener,
-        PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener,
-        EmptyContentView.OnEmptyViewActionButtonClickedListener,
-        FragmentCompat.OnRequestPermissionsResultCallback {
-
-  private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
-
-  /**
-   * By default, the animation code assumes that all items in a list view are of the same height
-   * when animating new list items into view (e.g. from the bottom of the screen into view). This
-   * can cause incorrect translation offsets when a item that is larger or smaller than other list
-   * item is removed from the list. This key is used to provide the actual height of the removed
-   * object so that the actual translation appears correct to the user.
-   */
-  private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
-
-  private static final String TAG = "OldSpeedDialFragment";
-  /** Used with LoaderManager. */
-  private static final int LOADER_ID_CONTACT_TILE = 1;
-
-  private final LongSparseArray<Integer> itemIdTopMap = new LongSparseArray<>();
-  private final LongSparseArray<Integer> itemIdLeftMap = new LongSparseArray<>();
-  private final ContactTileView.Listener contactTileAdapterListener =
-      new ContactTileAdapterListener(this);
-  private final ScrollListener scrollListener = new ScrollListener(this);
-  private LoaderManager.LoaderCallbacks<Cursor> contactTileLoaderListener;
-  private int animationDuration;
-  private PhoneFavoritesTileAdapter contactTileAdapter;
-  private PhoneFavoriteListView listView;
-  private View contactTileFrame;
-  /** Layout used when there are no favorites. */
-  private EmptyContentView emptyView;
-
-  @Override
-  public void onCreate(Bundle savedState) {
-    Trace.beginSection(TAG + " onCreate");
-    super.onCreate(savedState);
-
-    // Construct two base adapters which will become part of PhoneFavoriteMergedAdapter.
-    // We don't construct the resultant adapter at this moment since it requires LayoutInflater
-    // that will be available on onCreateView().
-    contactTileAdapter =
-        new PhoneFavoritesTileAdapter(getContext(), contactTileAdapterListener, this);
-    contactTileAdapter.setPhotoLoader(ContactPhotoManager.getInstance(getContext()));
-    contactTileLoaderListener = new ContactTileLoaderListener(this, contactTileAdapter);
-    animationDuration = getResources().getInteger(R.integer.fade_duration);
-    Trace.endSection();
-  }
-
-  @Override
-  public void onResume() {
-    Trace.beginSection(TAG + " onResume");
-    super.onResume();
-    if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
-      if (getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE) == null) {
-        getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, contactTileLoaderListener);
-
-      } else {
-        getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
-      }
-
-      emptyView.setDescription(R.string.speed_dial_empty);
-      emptyView.setActionLabel(R.string.speed_dial_empty_add_favorite_action);
-    } else {
-      emptyView.setDescription(R.string.permission_no_speeddial);
-      emptyView.setActionLabel(R.string.permission_single_turn_on);
-    }
-    Trace.endSection();
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    Trace.beginSection(TAG + " onCreateView");
-    View parentView = inflater.inflate(R.layout.speed_dial_fragment, container, false);
-
-    listView = (PhoneFavoriteListView) parentView.findViewById(R.id.contact_tile_list);
-    listView.setOnItemClickListener(this);
-    listView.setVerticalScrollBarEnabled(false);
-    listView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_RIGHT);
-    listView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
-    listView.getDragDropController().addOnDragDropListener(contactTileAdapter);
-    listView.setDragShadowOverlay(
-        FragmentUtils.getParentUnsafe(this, HostInterface.class).getDragShadowOverlay());
-
-    emptyView = (EmptyContentView) parentView.findViewById(R.id.empty_list_view);
-    emptyView.setImage(R.drawable.empty_speed_dial);
-    emptyView.setActionClickedListener(this);
-
-    contactTileFrame = parentView.findViewById(R.id.contact_tile_frame);
-
-    final LayoutAnimationController controller =
-        new LayoutAnimationController(
-            AnimationUtils.loadAnimation(getContext(), android.R.anim.fade_in));
-    controller.setDelay(0);
-    listView.setLayoutAnimation(controller);
-    listView.setAdapter(contactTileAdapter);
-
-    listView.setOnScrollListener(scrollListener);
-    listView.setFastScrollEnabled(false);
-    listView.setFastScrollAlwaysVisible(false);
-
-    // prevent content changes of the list from firing accessibility events.
-    listView.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_NONE);
-    ContentChangedFilter.addToParent(listView);
-
-    Trace.endSection();
-    return parentView;
-  }
-
-  public boolean hasFrequents() {
-    if (contactTileAdapter == null) {
-      return false;
-    }
-    return contactTileAdapter.getNumFrequents() > 0;
-  }
-
-  /* package */ void setEmptyViewVisibility(final boolean visible) {
-    final int previousVisibility = emptyView.getVisibility();
-    final int emptyViewVisibility = visible ? View.VISIBLE : View.GONE;
-    final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
-
-    if (previousVisibility != emptyViewVisibility) {
-      final FrameLayout.LayoutParams params = (LayoutParams) contactTileFrame.getLayoutParams();
-      params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
-      contactTileFrame.setLayoutParams(params);
-      emptyView.setVisibility(emptyViewVisibility);
-      listView.setVisibility(listViewVisibility);
-    }
-  }
-
-  @Override
-  public void onStart() {
-    super.onStart();
-    listView
-        .getDragDropController()
-        .addOnDragDropListener(FragmentUtils.getParentUnsafe(this, OnDragDropListener.class));
-    FragmentUtils.getParentUnsafe(this, HostInterface.class)
-        .setDragDropController(listView.getDragDropController());
-
-    // Use initLoader() instead of restartLoader() to refraining unnecessary reload.
-    // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
-    // be called, on which we'll check if "all" contacts should be reloaded again or not.
-    if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
-      getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, contactTileLoaderListener);
-    } else {
-      setEmptyViewVisibility(true);
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   *
-   * <p>This is only effective for elements provided by {@link #contactTileAdapter}. {@link
-   * #contactTileAdapter} has its own logic for click events.
-   */
-  @Override
-  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-    final int contactTileAdapterCount = contactTileAdapter.getCount();
-    if (position <= contactTileAdapterCount) {
-      LogUtil.e(
-          "OldSpeedDialFragment.onItemClick",
-          "event for unexpected position. The position "
-              + position
-              + " is before \"all\" section. Ignored.");
-    }
-  }
-
-  /**
-   * Cache the current view offsets into memory. Once a relayout of views in the ListView has
-   * happened due to a dataset change, the cached offsets are used to create animations that slide
-   * views from their previous positions to their new ones, to give the appearance that the views
-   * are sliding into their new positions.
-   */
-  private void saveOffsets(int removedItemHeight) {
-    final int firstVisiblePosition = listView.getFirstVisiblePosition();
-    for (int i = 0; i < listView.getChildCount(); i++) {
-      final View child = listView.getChildAt(i);
-      final int position = firstVisiblePosition + i;
-      // Since we are getting the position from mListView and then querying
-      // mContactTileAdapter, its very possible that things are out of sync
-      // and we might index out of bounds.  Let's make sure that this doesn't happen.
-      if (!contactTileAdapter.isIndexInBound(position)) {
-        continue;
-      }
-      final long itemId = contactTileAdapter.getItemId(position);
-      itemIdTopMap.put(itemId, child.getTop());
-      itemIdLeftMap.put(itemId, child.getLeft());
-    }
-    itemIdTopMap.put(KEY_REMOVED_ITEM_HEIGHT, removedItemHeight);
-  }
-
-  /*
-   * Performs animations for the gridView
-   */
-  private void animateGridView(final long... idsInPlace) {
-    if (itemIdTopMap.size() == 0) {
-      // Don't do animations if the database is being queried for the first time and
-      // the previous item offsets have not been cached, or the user hasn't done anything
-      // (dragging, swiping etc) that requires an animation.
-      return;
-    }
-
-    ViewUtil.doOnPreDraw(
-        listView,
-        true,
-        new Runnable() {
-          @Override
-          public void run() {
-
-            final int firstVisiblePosition = listView.getFirstVisiblePosition();
-            final AnimatorSet animSet = new AnimatorSet();
-            final ArrayList<Animator> animators = new ArrayList<Animator>();
-            for (int i = 0; i < listView.getChildCount(); i++) {
-              final View child = listView.getChildAt(i);
-              int position = firstVisiblePosition + i;
-
-              // Since we are getting the position from mListView and then querying
-              // mContactTileAdapter, its very possible that things are out of sync
-              // and we might index out of bounds.  Let's make sure that this doesn't happen.
-              if (!contactTileAdapter.isIndexInBound(position)) {
-                continue;
-              }
-
-              final long itemId = contactTileAdapter.getItemId(position);
-
-              if (containsId(idsInPlace, itemId)) {
-                animators.add(ObjectAnimator.ofFloat(child, "alpha", 0.0f, 1.0f));
-                break;
-              } else {
-                Integer startTop = itemIdTopMap.get(itemId);
-                Integer startLeft = itemIdLeftMap.get(itemId);
-                final int top = child.getTop();
-                final int left = child.getLeft();
-                int deltaX = 0;
-                int deltaY = 0;
-
-                if (startLeft != null) {
-                  if (startLeft != left) {
-                    deltaX = startLeft - left;
-                    animators.add(ObjectAnimator.ofFloat(child, "translationX", deltaX, 0.0f));
-                  }
-                }
-
-                if (startTop != null) {
-                  if (startTop != top) {
-                    deltaY = startTop - top;
-                    animators.add(ObjectAnimator.ofFloat(child, "translationY", deltaY, 0.0f));
-                  }
-                }
-              }
-            }
-
-            if (animators.size() > 0) {
-              animSet.setDuration(animationDuration).playTogether(animators);
-              animSet.start();
-            }
-
-            itemIdTopMap.clear();
-            itemIdLeftMap.clear();
-          }
-        });
-  }
-
-  private boolean containsId(long[] ids, long target) {
-    // Linear search on array is fine because this is typically only 0-1 elements long
-    for (int i = 0; i < ids.length; i++) {
-      if (ids[i] == target) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public void onDataSetChangedForAnimation(long... idsInPlace) {
-    animateGridView(idsInPlace);
-  }
-
-  @Override
-  public void cacheOffsetsForDatasetChange() {
-    saveOffsets(0);
-  }
-
-  @Override
-  public void onEmptyViewActionButtonClicked() {
-    String[] deniedPermissions =
-        PermissionsUtil.getPermissionsCurrentlyDenied(
-            getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
-    if (deniedPermissions.length > 0) {
-      LogUtil.i(
-          "OldSpeedDialFragment.onEmptyViewActionButtonClicked",
-          "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(
-          this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
-    } else {
-      // Switch tabs
-      FragmentUtils.getParentUnsafe(this, HostInterface.class).showAllContactsTab();
-    }
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length == 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
-        PermissionsUtil.notifyPermissionGranted(getContext(), READ_CONTACTS);
-      }
-    }
-  }
-
-  private static final class ContactTileLoaderListener
-      implements LoaderManager.LoaderCallbacks<Cursor> {
-
-    private final OldSpeedDialFragment fragment;
-    private final PhoneFavoritesTileAdapter adapter;
-
-    ContactTileLoaderListener(OldSpeedDialFragment fragment, PhoneFavoritesTileAdapter adapter) {
-      this.fragment = fragment;
-      this.adapter = adapter;
-    }
-
-    @Override
-    public CursorLoader onCreateLoader(int id, Bundle args) {
-      return ContactTileLoaderFactory.createStrequentPhoneOnlyLoader(fragment.getContext());
-    }
-
-    @Override
-    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
-      adapter.setContactCursor(data);
-      fragment.setEmptyViewVisibility(adapter.getCount() == 0);
-      FragmentUtils.getParentUnsafe(fragment, HostInterface.class)
-          .setHasFrequents(adapter.getNumFrequents() > 0);
-    }
-
-    @Override
-    public void onLoaderReset(Loader<Cursor> loader) {}
-  }
-
-  private static final class ContactTileAdapterListener implements ContactTileView.Listener {
-
-    private final OldSpeedDialFragment fragment;
-
-    ContactTileAdapterListener(OldSpeedDialFragment fragment) {
-      this.fragment = fragment;
-    }
-
-    @Override
-    public void onContactSelected(
-        Uri contactUri, Rect targetRect, CallSpecificAppData callSpecificAppData) {
-      FragmentUtils.getParentUnsafe(fragment, OnPhoneNumberPickerActionListener.class)
-          .onPickDataUri(contactUri, false /* isVideoCall */, callSpecificAppData);
-    }
-
-    @Override
-    public void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData) {
-      FragmentUtils.getParentUnsafe(fragment, OnPhoneNumberPickerActionListener.class)
-          .onPickPhoneNumber(phoneNumber, false /* isVideoCall */, callSpecificAppData);
-    }
-  }
-
-  private static class ScrollListener implements ListView.OnScrollListener {
-
-    private final OldSpeedDialFragment fragment;
-
-    ScrollListener(OldSpeedDialFragment fragment) {
-      this.fragment = fragment;
-    }
-
-    @Override
-    public void onScroll(
-        AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-      FragmentUtils.getParentUnsafe(fragment, OnListFragmentScrolledListener.class)
-          .onListFragmentScroll(firstVisibleItem, visibleItemCount, totalItemCount);
-    }
-
-    @Override
-    public void onScrollStateChanged(AbsListView view, int scrollState) {
-      FragmentUtils.getParentUnsafe(fragment, OnListFragmentScrolledListener.class)
-          .onListFragmentScrollStateChange(scrollState);
-    }
-  }
-
-  /** Interface for parents of OldSpeedDialFragment to implement. */
-  public interface HostInterface {
-
-    void setDragDropController(DragDropController controller);
-
-    void showAllContactsTab();
-
-    ImageView getDragShadowOverlay();
-
-    void setHasFrequents(boolean hasFrequents);
-  }
-}
diff --git a/java/com/android/dialer/app/list/OnDragDropListener.java b/java/com/android/dialer/app/list/OnDragDropListener.java
deleted file mode 100644
index b71c7fe..0000000
--- a/java/com/android/dialer/app/list/OnDragDropListener.java
+++ /dev/null
@@ -1,58 +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.app.list;
-
-/**
- * Classes that want to receive callbacks in response to drag events should implement this
- * interface.
- */
-public interface OnDragDropListener {
-
-  /**
-   * Called when a drag is started.
-   *
-   * @param x X-coordinate of the drag event
-   * @param y Y-coordinate of the drag event
-   * @param view The contact tile which the drag was started on
-   */
-  void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view);
-
-  /**
-   * Called when a drag is in progress and the user moves the dragged contact to a location.
-   *
-   * @param x X-coordinate of the drag event
-   * @param y Y-coordinate of the drag event
-   * @param view Contact tile in the ListView which is currently being displaced by the dragged
-   *     contact
-   */
-  void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view);
-
-  /**
-   * Called when a drag is completed (whether by dropping it somewhere or simply by dragging the
-   * contact off the screen)
-   *
-   * @param x X-coordinate of the drag event
-   * @param y Y-coordinate of the drag event
-   */
-  void onDragFinished(int x, int y);
-
-  /**
-   * Called when a contact has been dropped on the remove view, indicating that the user wants to
-   * remove this contact.
-   */
-  void onDroppedOnRemove();
-}
diff --git a/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java b/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java
deleted file mode 100644
index a76f3b5..0000000
--- a/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc.
- * Licensed to 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.app.list;
-
-/*
- * Interface to provide callback to activity when a child fragment is scrolled
- */
-public interface OnListFragmentScrolledListener {
-
-  void onListFragmentScrollStateChange(int scrollState);
-
-  void onListFragmentScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount);
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteListView.java b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
deleted file mode 100644
index ff867f9..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteListView.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2017 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.app.list;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.os.Handler;
-import android.util.AttributeSet;
-import android.view.DragEvent;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.widget.GridView;
-import android.widget.ImageView;
-import com.android.dialer.app.R;
-import com.android.dialer.app.list.DragDropController.DragItemContainer;
-import com.android.dialer.common.LogUtil;
-
-/** Viewgroup that presents the user's speed dial contacts in a grid. */
-public class PhoneFavoriteListView extends GridView
-    implements OnDragDropListener, DragItemContainer {
-
-  public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName();
-  final int[] locationOnScreen = new int[2];
-  private static final long SCROLL_HANDLER_DELAY_MILLIS = 5;
-  private static final int DRAG_SCROLL_PX_UNIT = 25;
-  private static final float DRAG_SHADOW_ALPHA = 0.7f;
-  /**
-   * {@link #topScrollBound} and {@link bottomScrollBound} will be offseted to the top / bottom by
-   * {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels.
-   */
-  private static final float BOUND_GAP_RATIO = 0.2f;
-
-  private float touchSlop;
-  private int topScrollBound;
-  private int bottomScrollBound;
-  private int lastDragY;
-  private Handler scrollHandler;
-  private final Runnable dragScroller =
-      new Runnable() {
-        @Override
-        public void run() {
-          if (lastDragY <= topScrollBound) {
-            smoothScrollBy(-DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
-          } else if (lastDragY >= bottomScrollBound) {
-            smoothScrollBy(DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
-          }
-          scrollHandler.postDelayed(this, SCROLL_HANDLER_DELAY_MILLIS);
-        }
-      };
-  private boolean isDragScrollerRunning = false;
-  private int touchDownForDragStartY;
-  private Bitmap dragShadowBitmap;
-  private ImageView dragShadowOverlay;
-  private final AnimatorListenerAdapter dragShadowOverAnimatorListener =
-      new AnimatorListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animator animation) {
-          if (dragShadowBitmap != null) {
-            dragShadowBitmap.recycle();
-            dragShadowBitmap = null;
-          }
-          dragShadowOverlay.setVisibility(GONE);
-          dragShadowOverlay.setImageBitmap(null);
-        }
-      };
-  private View dragShadowParent;
-  private int animationDuration;
-  // X and Y offsets inside the item from where the user grabbed to the
-  // child's left coordinate. This is used to aid in the drawing of the drag shadow.
-  private int touchOffsetToChildLeft;
-  private int touchOffsetToChildTop;
-  private int dragShadowLeft;
-  private int dragShadowTop;
-  private DragDropController dragDropController = new DragDropController(this);
-
-  public PhoneFavoriteListView(Context context) {
-    this(context, null);
-  }
-
-  public PhoneFavoriteListView(Context context, AttributeSet attrs) {
-    this(context, attrs, 0);
-  }
-
-  public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) {
-    super(context, attrs, defStyle);
-    animationDuration = context.getResources().getInteger(R.integer.fade_duration);
-    touchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
-    dragDropController.addOnDragDropListener(this);
-  }
-
-  @Override
-  protected void onConfigurationChanged(Configuration newConfig) {
-    super.onConfigurationChanged(newConfig);
-    touchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop();
-  }
-
-  /**
-   * TODO: This is all swipe to remove code (nothing to do with drag to remove). This should be
-   * cleaned up and removed once drag to remove becomes the only way to remove contacts.
-   */
-  @Override
-  public boolean onInterceptTouchEvent(MotionEvent ev) {
-    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-      touchDownForDragStartY = (int) ev.getY();
-    }
-
-    return super.onInterceptTouchEvent(ev);
-  }
-
-  @Override
-  public boolean onDragEvent(DragEvent event) {
-    final int action = event.getAction();
-    final int eX = (int) event.getX();
-    final int eY = (int) event.getY();
-    switch (action) {
-      case DragEvent.ACTION_DRAG_STARTED:
-        {
-          if (!PhoneFavoriteTileView.DRAG_PHONE_FAVORITE_TILE.equals(event.getLocalState())) {
-            // Ignore any drag events that were not propagated by long pressing
-            // on a {@link PhoneFavoriteTileView}
-            return false;
-          }
-          if (!dragDropController.handleDragStarted(this, eX, eY)) {
-            return false;
-          }
-          break;
-        }
-      case DragEvent.ACTION_DRAG_LOCATION:
-        lastDragY = eY;
-        dragDropController.handleDragHovered(this, eX, eY);
-        // Kick off {@link #mScrollHandler} if it's not started yet.
-        if (!isDragScrollerRunning
-            &&
-            // And if the distance traveled while dragging exceeds the touch slop
-            (Math.abs(lastDragY - touchDownForDragStartY) >= 4 * touchSlop)) {
-          isDragScrollerRunning = true;
-          ensureScrollHandler();
-          scrollHandler.postDelayed(dragScroller, SCROLL_HANDLER_DELAY_MILLIS);
-        }
-        break;
-      case DragEvent.ACTION_DRAG_ENTERED:
-        final int boundGap = (int) (getHeight() * BOUND_GAP_RATIO);
-        topScrollBound = (getTop() + boundGap);
-        bottomScrollBound = (getBottom() - boundGap);
-        break;
-      case DragEvent.ACTION_DRAG_EXITED:
-      case DragEvent.ACTION_DRAG_ENDED:
-      case DragEvent.ACTION_DROP:
-        ensureScrollHandler();
-        scrollHandler.removeCallbacks(dragScroller);
-        isDragScrollerRunning = false;
-        // Either a successful drop or it's ended with out drop.
-        if (action == DragEvent.ACTION_DROP || action == DragEvent.ACTION_DRAG_ENDED) {
-          dragDropController.handleDragFinished(eX, eY, false);
-        }
-        break;
-      default:
-        break;
-    }
-    // This ListView will consume the drag events on behalf of its children.
-    return true;
-  }
-
-  public void setDragShadowOverlay(ImageView overlay) {
-    dragShadowOverlay = overlay;
-    dragShadowParent = (View) dragShadowOverlay.getParent();
-  }
-
-  /** Find the view under the pointer. */
-  private View getViewAtPosition(int x, int y) {
-    final int count = getChildCount();
-    View child;
-    for (int childIdx = 0; childIdx < count; childIdx++) {
-      child = getChildAt(childIdx);
-      if (y >= child.getTop()
-          && y <= child.getBottom()
-          && x >= child.getLeft()
-          && x <= child.getRight()) {
-        return child;
-      }
-    }
-    return null;
-  }
-
-  private void ensureScrollHandler() {
-    if (scrollHandler == null) {
-      scrollHandler = getHandler();
-    }
-  }
-
-  public DragDropController getDragDropController() {
-    return dragDropController;
-  }
-
-  @Override
-  public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView tileView) {
-    if (dragShadowOverlay == null) {
-      return;
-    }
-
-    dragShadowOverlay.clearAnimation();
-    dragShadowBitmap = createDraggedChildBitmap(tileView);
-    if (dragShadowBitmap == null) {
-      return;
-    }
-
-    tileView.getLocationOnScreen(locationOnScreen);
-    dragShadowLeft = locationOnScreen[0];
-    dragShadowTop = locationOnScreen[1];
-
-    // x and y are the coordinates of the on-screen touch event. Using these
-    // and the on-screen location of the tileView, calculate the difference between
-    // the position of the user's finger and the position of the tileView. These will
-    // be used to offset the location of the drag shadow so that it appears that the
-    // tileView is positioned directly under the user's finger.
-    touchOffsetToChildLeft = x - dragShadowLeft;
-    touchOffsetToChildTop = y - dragShadowTop;
-
-    dragShadowParent.getLocationOnScreen(locationOnScreen);
-    dragShadowLeft -= locationOnScreen[0];
-    dragShadowTop -= locationOnScreen[1];
-
-    dragShadowOverlay.setImageBitmap(dragShadowBitmap);
-    dragShadowOverlay.setVisibility(VISIBLE);
-    dragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
-
-    dragShadowOverlay.setX(dragShadowLeft);
-    dragShadowOverlay.setY(dragShadowTop);
-  }
-
-  @Override
-  public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView tileView) {
-    // Update the drag shadow location.
-    dragShadowParent.getLocationOnScreen(locationOnScreen);
-    dragShadowLeft = x - touchOffsetToChildLeft - locationOnScreen[0];
-    dragShadowTop = y - touchOffsetToChildTop - locationOnScreen[1];
-    // Draw the drag shadow at its last known location if the drag shadow exists.
-    if (dragShadowOverlay != null) {
-      dragShadowOverlay.setX(dragShadowLeft);
-      dragShadowOverlay.setY(dragShadowTop);
-    }
-  }
-
-  @Override
-  public void onDragFinished(int x, int y) {
-    if (dragShadowOverlay != null) {
-      dragShadowOverlay.clearAnimation();
-      dragShadowOverlay
-          .animate()
-          .alpha(0.0f)
-          .setDuration(animationDuration)
-          .setListener(dragShadowOverAnimatorListener)
-          .start();
-    }
-  }
-
-  @Override
-  public void onDroppedOnRemove() {}
-
-  private Bitmap createDraggedChildBitmap(View view) {
-    view.setDrawingCacheEnabled(true);
-    final Bitmap cache = view.getDrawingCache();
-
-    Bitmap bitmap = null;
-    if (cache != null) {
-      try {
-        bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
-      } catch (final OutOfMemoryError e) {
-        LogUtil.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
-        bitmap = null;
-      }
-    }
-
-    view.destroyDrawingCache();
-    view.setDrawingCacheEnabled(false);
-
-    return bitmap;
-  }
-
-  @Override
-  public PhoneFavoriteSquareTileView getViewForLocation(int x, int y) {
-    getLocationOnScreen(locationOnScreen);
-    // Calculate the X and Y coordinates of the drag event relative to the view
-    final int viewX = x - locationOnScreen[0];
-    final int viewY = y - locationOnScreen[1];
-    final View child = getViewAtPosition(viewX, viewY);
-
-    if (!(child instanceof PhoneFavoriteSquareTileView)) {
-      return null;
-    }
-
-    return (PhoneFavoriteSquareTileView) child;
-  }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
deleted file mode 100644
index 8fe67f4..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-
-* Copyright (C) 2011 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.app.list;
-
-import android.content.Context;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.QuickContact;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.TextView;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.dialer.app.R;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.widget.BidiTextView;
-
-/** Displays the contact's picture overlaid with their name and number type in a tile. */
-public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
-
-  private final float heightToWidthRatio;
-
-  private ImageButton secondaryButton;
-
-  private ContactEntry contactEntry;
-
-  public PhoneFavoriteSquareTileView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-
-    heightToWidthRatio =
-        getResources().getFraction(R.dimen.contact_tile_height_to_width_ratio, 1, 1);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    BidiTextView nameView = findViewById(R.id.contact_tile_name);
-    nameView.setElegantTextHeight(false);
-
-    TextView phoneTypeView = findViewById(R.id.contact_tile_phone_type);
-    phoneTypeView.setElegantTextHeight(false);
-    secondaryButton = findViewById(R.id.contact_tile_secondary_button);
-  }
-
-  @Override
-  protected int getApproximateImageSize() {
-    // The picture is the full size of the tile (minus some padding, but we can be generous)
-    return getWidth();
-  }
-
-  private void launchQuickContact() {
-    QuickContact.showQuickContact(
-        getContext(),
-        PhoneFavoriteSquareTileView.this,
-        getLookupUri(),
-        null,
-        Phone.CONTENT_ITEM_TYPE);
-  }
-
-  @Override
-  public void loadFromContact(ContactEntry entry) {
-    super.loadFromContact(entry);
-    if (entry != null) {
-      secondaryButton.setOnClickListener(
-          new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-              Logger.get(getContext())
-                  .logInteraction(InteractionEvent.Type.SPEED_DIAL_OPEN_CONTACT_CARD);
-              launchQuickContact();
-            }
-          });
-    }
-    contactEntry = entry;
-  }
-
-  @Override
-  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-    final int width = MeasureSpec.getSize(widthMeasureSpec);
-    final int height = (int) (heightToWidthRatio * width);
-    final int count = getChildCount();
-    for (int i = 0; i < count; i++) {
-      getChildAt(i)
-          .measure(
-              MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
-              MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
-    }
-    setMeasuredDimension(width, height);
-  }
-
-  @Override
-  protected String getNameForView(ContactEntry contactEntry) {
-    return contactEntry.getPreferredDisplayName(getContext());
-  }
-
-  public ContactEntry getContactEntry() {
-    return contactEntry;
-  }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
deleted file mode 100644
index 7f0a6bc..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
-
-* Copyright (C) 2011 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.app.list;
-
-import android.content.ClipData;
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Point;
-import android.net.Uri;
-import android.provider.ContactsContract.PinnedPositions;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageView;
-import com.android.contacts.common.MoreContactUtils;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.contacts.common.model.ContactLoader;
-import com.android.dialer.app.R;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.callintent.SpeedDialContactType;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-
-/**
- * A light version of the {@link com.android.contacts.common.list.ContactTileView} that is used in
- * Dialtacts for frequently called contacts. Slightly different behavior from superclass when you
- * tap it, you want to call the frequently-called number for the contact, even if that is not the
- * default number for that contact. This abstract class is the super class to both the row and tile
- * view.
- */
-public abstract class PhoneFavoriteTileView extends ContactTileView {
-
-  // Constant to pass to the drag event so that the drag action only happens when a phone favorite
-  // tile is long pressed.
-  static final String DRAG_PHONE_FAVORITE_TILE = "PHONE_FAVORITE_TILE";
-  private static final String TAG = PhoneFavoriteTileView.class.getSimpleName();
-  // These parameters instruct the photo manager to display the default image/letter at 70% of
-  // its normal size, and vertically offset upwards 12% towards the top of the letter tile, to
-  // make room for the contact name and number label at the bottom of the image.
-  private static final float DEFAULT_IMAGE_LETTER_OFFSET = -0.12f;
-  private static final float DEFAULT_IMAGE_LETTER_SCALE = 0.70f;
-  // Placeholder clip data object that is attached to drag shadows so that text views
-  // don't crash with an NPE if the drag shadow is released in their bounds
-  private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
-  /** View that contains the transparent shadow that is overlaid on top of the contact image. */
-  private View shadowOverlay;
-  /** Users' most frequent phone number. */
-  private String phoneNumberString;
-
-  private boolean isPinned;
-  private boolean isStarred;
-  private int position = -1;
-
-  public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    shadowOverlay = findViewById(R.id.shadow_overlay);
-
-    setOnLongClickListener(
-        (v) -> {
-          final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
-          // NOTE The drag shadow is handled in the ListView.
-          view.startDragAndDrop(
-              EMPTY_CLIP_DATA, new EmptyDragShadowBuilder(), DRAG_PHONE_FAVORITE_TILE, 0);
-          return true;
-        });
-  }
-
-  @Override
-  public void loadFromContact(ContactEntry entry) {
-    super.loadFromContact(entry);
-    // Set phone number to null in case we're reusing the view.
-    phoneNumberString = null;
-    isPinned = (entry.pinned != PinnedPositions.UNPINNED);
-    isStarred = entry.isFavorite;
-    if (entry != null) {
-      sendViewNotification(getContext(), entry.lookupUri);
-      // Grab the phone-number to call directly. See {@link onClick()}.
-      phoneNumberString = entry.phoneNumber;
-
-      // If this is a blank entry, don't show anything. For this to truly look like an empty row
-      // the entire ContactTileRow needs to be hidden.
-      if (entry == ContactEntry.BLANK_ENTRY) {
-        setVisibility(View.INVISIBLE);
-      } else {
-        final ImageView starIcon = (ImageView) findViewById(R.id.contact_star_icon);
-        starIcon.setVisibility(entry.isFavorite ? View.VISIBLE : View.GONE);
-        setVisibility(View.VISIBLE);
-      }
-    }
-  }
-
-  @Override
-  protected boolean isDarkTheme() {
-    return false;
-  }
-
-  @Override
-  protected OnClickListener createClickListener() {
-    return new OnClickListener() {
-      @Override
-      public void onClick(View v) {
-        if (mListener == null) {
-          return;
-        }
-
-        CallSpecificAppData.Builder callSpecificAppData =
-            CallSpecificAppData.newBuilder()
-                .setAllowAssistedDialing(true)
-                .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
-                .setSpeedDialContactPosition(position);
-        if (isStarred) {
-          callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.STARRED_CONTACT);
-        } else {
-          callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.FREQUENT_CONTACT);
-        }
-        if (isPinned) {
-          callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.PINNED_CONTACT);
-        }
-
-        if (TextUtils.isEmpty(phoneNumberString)) {
-          // Don't set performance report now, since user may spend some time on picking a number
-
-          // Copy "superclass" implementation
-          Logger.get(getContext())
-              .logInteraction(InteractionEvent.Type.SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER);
-          mListener.onContactSelected(
-              getLookupUri(),
-              MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this),
-              callSpecificAppData.build());
-        } else {
-          // When you tap a frequently-called contact, you want to
-          // call them at the number that you usually talk to them
-          // at (i.e. the one displayed in the UI), regardless of
-          // whether that's their default number.
-          mListener.onCallNumberDirectly(phoneNumberString, callSpecificAppData.build());
-        }
-      }
-    };
-  }
-
-  @Override
-  protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
-    return new DefaultImageRequest(
-        displayName,
-        lookupKey,
-        LetterTileDrawable.TYPE_DEFAULT,
-        DEFAULT_IMAGE_LETTER_SCALE,
-        DEFAULT_IMAGE_LETTER_OFFSET,
-        false);
-  }
-
-  @Override
-  protected void configureViewForImage(boolean isDefaultImage) {
-    // Hide the shadow overlay if the image is a default image (i.e. colored letter tile)
-    if (shadowOverlay != null) {
-      shadowOverlay.setVisibility(isDefaultImage ? View.GONE : View.VISIBLE);
-    }
-  }
-
-  @Override
-  protected boolean isContactPhotoCircular() {
-    // Unlike Contacts' tiles, the Dialer's favorites tiles are square.
-    return false;
-  }
-
-  public void setPosition(int position) {
-    this.position = position;
-  }
-
-  private ContactLoader loader;
-
-  /**
-   * Send a notification using a {@link ContactLoader} to inform the sync adapter that we are
-   * viewing a particular contact, so that it can download the high-res photo.
-   */
-  private void sendViewNotification(Context context, Uri contactUri) {
-    if (loader != null) {
-      // Cancels the current load if it's running and clears up any memory if it's using any.
-      loader.reset();
-    }
-    loader = new ContactLoader(context, contactUri, true /* postViewNotification */);
-    // Immediately release anything we're holding in memory
-    loader.registerListener(0, (loader1, contact) -> loader.reset());
-    loader.startLoading();
-  }
-
-  /**
-   * A {@link View.DragShadowBuilder} that doesn't draw anything. An object of this class should be
-   * passed to {@link View#startDragAndDrop} to prevent the framework from drawing a drag shadow.
-   */
-  public static class EmptyDragShadowBuilder extends View.DragShadowBuilder {
-
-    @Override
-    public void onProvideShadowMetrics(Point size, Point touch) {
-      // A workaround for P+ not accepting non-positive drag shadow sizes.
-      size.set(1, 1);
-      touch.set(0, 0);
-    }
-
-    @Override
-    public void onDrawShadow(Canvas canvas) {
-      // Don't draw anything
-    }
-  }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
deleted file mode 100644
index 4cc48a6..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * Copyright (C) 2013 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.app.list;
-
-import android.content.ContentProviderOperation;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.OperationApplicationException;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.PinnedPositions;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import android.util.LongSparseArray;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.dialer.app.R;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.shortcuts.ShortcutRefresher;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.google.common.collect.ComparisonChain;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.PriorityQueue;
-
-/** Also allows for a configurable number of columns as well as a maximum row of tiled contacts. */
-public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDropListener {
-
-  // Pinned positions start from 1, so there are a total of 20 maximum pinned contacts
-  private static final int PIN_LIMIT = 21;
-  private static final String TAG = PhoneFavoritesTileAdapter.class.getSimpleName();
-  private static final boolean DEBUG = false;
-  /**
-   * The soft limit on how many contact tiles to show. NOTE This soft limit would not restrict the
-   * number of starred contacts to show, rather 1. If the count of starred contacts is less than
-   * this limit, show 20 tiles total. 2. If the count of starred contacts is more than or equal to
-   * this limit, show all starred tiles and no frequents.
-   */
-  private static final int TILES_SOFT_LIMIT = 20;
-  /** Contact data stored in cache. This is used to populate the associated view. */
-  private ArrayList<ContactEntry> contactEntries = null;
-
-  private int numFrequents;
-  private int numStarred;
-
-  private ContactTileView.Listener listener;
-  private OnDataSetChangedForAnimationListener dataSetChangedListener;
-  private Context context;
-  private Resources resources;
-  private final Comparator<ContactEntry> contactEntryComparator =
-      new Comparator<ContactEntry>() {
-        @Override
-        public int compare(ContactEntry lhs, ContactEntry rhs) {
-
-          return ComparisonChain.start()
-              .compare(lhs.pinned, rhs.pinned)
-              .compare(getPreferredSortName(lhs), getPreferredSortName(rhs))
-              .result();
-        }
-
-        private String getPreferredSortName(ContactEntry contactEntry) {
-          return ContactsComponent.get(context)
-              .contactDisplayPreferences()
-              .getSortName(contactEntry.namePrimary, contactEntry.nameAlternative);
-        }
-      };
-  /** Back up of the temporarily removed Contact during dragging. */
-  private ContactEntry draggedEntry = null;
-  /** Position of the temporarily removed contact in the cache. */
-  private int draggedEntryIndex = -1;
-  /** New position of the temporarily removed contact in the cache. */
-  private int dropEntryIndex = -1;
-  /** New position of the temporarily entered contact in the cache. */
-  private int dragEnteredEntryIndex = -1;
-
-  private boolean awaitingRemove = false;
-  private boolean delayCursorUpdates = false;
-  private ContactPhotoManager photoManager;
-
-  /** Indicates whether a drag is in process. */
-  private boolean inDragging = false;
-
-  public PhoneFavoritesTileAdapter(
-      Context context,
-      ContactTileView.Listener listener,
-      OnDataSetChangedForAnimationListener dataSetChangedListener) {
-    this.dataSetChangedListener = dataSetChangedListener;
-    this.listener = listener;
-    this.context = context;
-    resources = context.getResources();
-    numFrequents = 0;
-    contactEntries = new ArrayList<>();
-  }
-
-  void setPhotoLoader(ContactPhotoManager photoLoader) {
-    photoManager = photoLoader;
-  }
-
-  /**
-   * Indicates whether a drag is in process.
-   *
-   * @param inDragging Boolean variable indicating whether there is a drag in process.
-   */
-  private void setInDragging(boolean inDragging) {
-    delayCursorUpdates = inDragging;
-    this.inDragging = inDragging;
-  }
-
-  /**
-   * Gets the number of frequents from the passed in cursor.
-   *
-   * <p>This methods is needed so the GroupMemberTileAdapter can override this.
-   *
-   * @param cursor The cursor to get number of frequents from.
-   */
-  private void saveNumFrequentsFromCursor(Cursor cursor) {
-    numFrequents = cursor.getCount() - numStarred;
-  }
-
-  /**
-   * Creates {@link ContactTileView}s for each item in {@link Cursor}.
-   *
-   * <p>Else use {@link ContactTileLoaderFactory}
-   */
-  void setContactCursor(Cursor cursor) {
-    if (!delayCursorUpdates && cursor != null && !cursor.isClosed()) {
-      numStarred = getNumStarredContacts(cursor);
-      if (awaitingRemove) {
-        dataSetChangedListener.cacheOffsetsForDatasetChange();
-      }
-
-      saveNumFrequentsFromCursor(cursor);
-      saveCursorToCache(cursor);
-      // cause a refresh of any views that rely on this data
-      notifyDataSetChanged();
-      // about to start redraw
-      dataSetChangedListener.onDataSetChangedForAnimation();
-    }
-  }
-
-  /**
-   * Saves the cursor data to the cache, to speed up UI changes.
-   *
-   * @param cursor Returned cursor from {@link ContactTileLoaderFactory} with data to populate the
-   *     view.
-   */
-  private void saveCursorToCache(Cursor cursor) {
-    contactEntries.clear();
-
-    if (cursor == null) {
-      return;
-    }
-
-    final LongSparseArray<Object> duplicates = new LongSparseArray<>(cursor.getCount());
-
-    // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}.
-    int counter = 0;
-
-    // Data for logging
-    int starredContactsCount = 0;
-    int pinnedContactsCount = 0;
-    int multipleNumbersContactsCount = 0;
-    int contactsWithPhotoCount = 0;
-    int contactsWithNameCount = 0;
-    int lightbringerReachableContactsCount = 0;
-
-    // The cursor should not be closed since this is invoked from a CursorLoader.
-    if (cursor.moveToFirst()) {
-      int starredColumn = cursor.getColumnIndexOrThrow(Contacts.STARRED);
-      int contactIdColumn = cursor.getColumnIndexOrThrow(Phone.CONTACT_ID);
-      int photoUriColumn = cursor.getColumnIndexOrThrow(Contacts.PHOTO_URI);
-      int lookupKeyColumn = cursor.getColumnIndexOrThrow(Contacts.LOOKUP_KEY);
-      int pinnedColumn = cursor.getColumnIndexOrThrow(Contacts.PINNED);
-      int nameColumn = cursor.getColumnIndexOrThrow(Contacts.DISPLAY_NAME_PRIMARY);
-      int nameAlternativeColumn = cursor.getColumnIndexOrThrow(Contacts.DISPLAY_NAME_ALTERNATIVE);
-      int isDefaultNumberColumn = cursor.getColumnIndexOrThrow(Phone.IS_SUPER_PRIMARY);
-      int phoneTypeColumn = cursor.getColumnIndexOrThrow(Phone.TYPE);
-      int phoneLabelColumn = cursor.getColumnIndexOrThrow(Phone.LABEL);
-      int phoneNumberColumn = cursor.getColumnIndexOrThrow(Phone.NUMBER);
-      do {
-        final int starred = cursor.getInt(starredColumn);
-        final long id;
-
-        // We display a maximum of TILES_SOFT_LIMIT contacts, or the total number of starred
-        // whichever is greater.
-        if (starred < 1 && counter >= TILES_SOFT_LIMIT) {
-          break;
-        } else {
-          id = cursor.getLong(contactIdColumn);
-        }
-
-        final ContactEntry existing = (ContactEntry) duplicates.get(id);
-        if (existing != null) {
-          // Check if the existing number is a default number. If not, clear the phone number
-          // and label fields so that the disambiguation dialog will show up.
-          if (!existing.isDefaultNumber) {
-            existing.phoneLabel = null;
-            existing.phoneNumber = null;
-          }
-          continue;
-        }
-
-        final String photoUri = cursor.getString(photoUriColumn);
-        final String lookupKey = cursor.getString(lookupKeyColumn);
-        final int pinned = cursor.getInt(pinnedColumn);
-        final String name = cursor.getString(nameColumn);
-        final String nameAlternative = cursor.getString(nameAlternativeColumn);
-        final boolean isStarred = cursor.getInt(starredColumn) > 0;
-        final boolean isDefaultNumber = cursor.getInt(isDefaultNumberColumn) > 0;
-
-        final ContactEntry contact = new ContactEntry();
-
-        contact.id = id;
-        contact.namePrimary =
-            (!TextUtils.isEmpty(name)) ? name : resources.getString(R.string.missing_name);
-        contact.nameAlternative =
-            (!TextUtils.isEmpty(nameAlternative))
-                ? nameAlternative
-                : resources.getString(R.string.missing_name);
-        contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
-        contact.lookupKey = lookupKey;
-        contact.lookupUri =
-            ContentUris.withAppendedId(
-                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
-        contact.isFavorite = isStarred;
-        contact.isDefaultNumber = isDefaultNumber;
-
-        // Set phone number and label
-        final int phoneNumberType = cursor.getInt(phoneTypeColumn);
-        final String phoneNumberCustomLabel = cursor.getString(phoneLabelColumn);
-        contact.phoneLabel =
-            (String) Phone.getTypeLabel(resources, phoneNumberType, phoneNumberCustomLabel);
-        contact.phoneNumber = cursor.getString(phoneNumberColumn);
-
-        contact.pinned = pinned;
-        contactEntries.add(contact);
-
-        // Set counts for logging
-        if (isStarred) {
-          // mNumStarred might be larger than the number of visible starred contact,
-          // since it includes invisible ones (starred contact with no phone number).
-          starredContactsCount++;
-        }
-        if (pinned != PinnedPositions.UNPINNED) {
-          pinnedContactsCount++;
-        }
-        if (!TextUtils.isEmpty(name)) {
-          contactsWithNameCount++;
-        }
-        if (photoUri != null) {
-          contactsWithPhotoCount++;
-        }
-
-        duplicates.put(id, contact);
-
-        counter++;
-      } while (cursor.moveToNext());
-    }
-
-    awaitingRemove = false;
-
-    arrangeContactsByPinnedPosition(contactEntries);
-
-    ShortcutRefresher.refresh(context, contactEntries);
-    notifyDataSetChanged();
-
-    Duo duo = DuoComponent.get(context).getDuo();
-    for (ContactEntry contact : contactEntries) {
-      if (contact.phoneNumber == null) {
-        multipleNumbersContactsCount++;
-      } else if (duo.isReachable(context, contact.phoneNumber)) {
-        lightbringerReachableContactsCount++;
-      }
-    }
-
-    Logger.get(context)
-        .logSpeedDialContactComposition(
-            counter,
-            starredContactsCount,
-            pinnedContactsCount,
-            multipleNumbersContactsCount,
-            contactsWithPhotoCount,
-            contactsWithNameCount,
-            lightbringerReachableContactsCount);
-    // Logs for manual testing
-    LogUtil.v("PhoneFavoritesTileAdapter.saveCursorToCache", "counter: %d", counter);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "starredContactsCount: %d",
-        starredContactsCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "pinnedContactsCount: %d",
-        pinnedContactsCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "multipleNumbersContactsCount: %d",
-        multipleNumbersContactsCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "contactsWithPhotoCount: %d",
-        contactsWithPhotoCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "contactsWithNameCount: %d",
-        contactsWithNameCount);
-  }
-
-  /** Iterates over the {@link Cursor} Returns position of the first NON Starred Contact */
-  private int getNumStarredContacts(Cursor cursor) {
-    if (cursor == null) {
-      return 0;
-    }
-
-    if (cursor.moveToFirst()) {
-      int starredColumn = cursor.getColumnIndex(Contacts.STARRED);
-      do {
-        if (cursor.getInt(starredColumn) == 0) {
-          return cursor.getPosition();
-        }
-      } while (cursor.moveToNext());
-    }
-    // There are not NON Starred contacts in cursor
-    // Set divider position to end
-    return cursor.getCount();
-  }
-
-  /** Returns the number of frequents that will be displayed in the list. */
-  int getNumFrequents() {
-    return numFrequents;
-  }
-
-  @Override
-  public int getCount() {
-    if (contactEntries == null) {
-      return 0;
-    }
-
-    return contactEntries.size();
-  }
-
-  /**
-   * Returns an ArrayList of the {@link ContactEntry}s that are to appear on the row for the given
-   * position.
-   */
-  @Override
-  public ContactEntry getItem(int position) {
-    return contactEntries.get(position);
-  }
-
-  /**
-   * For the top row of tiled contacts, the item id is the position of the row of contacts. For
-   * frequent contacts, the item id is the maximum number of rows of tiled contacts + the actual
-   * contact id. Since contact ids are always greater than 0, this guarantees that all items within
-   * this adapter will always have unique ids.
-   */
-  @Override
-  public long getItemId(int position) {
-    return getItem(position).id;
-  }
-
-  @Override
-  public boolean hasStableIds() {
-    return true;
-  }
-
-  @Override
-  public boolean areAllItemsEnabled() {
-    return true;
-  }
-
-  @Override
-  public boolean isEnabled(int position) {
-    return getCount() > 0;
-  }
-
-  @Override
-  public void notifyDataSetChanged() {
-    if (DEBUG) {
-      LogUtil.v(TAG, "notifyDataSetChanged");
-    }
-    super.notifyDataSetChanged();
-  }
-
-  @Override
-  public View getView(int position, View convertView, ViewGroup parent) {
-    if (DEBUG) {
-      LogUtil.v(TAG, "get view for " + position);
-    }
-
-    PhoneFavoriteTileView tileView = null;
-
-    if (convertView instanceof PhoneFavoriteTileView) {
-      tileView = (PhoneFavoriteTileView) convertView;
-    }
-
-    if (tileView == null) {
-      tileView =
-          (PhoneFavoriteTileView) View.inflate(context, R.layout.phone_favorite_tile_view, null);
-    }
-    tileView.setPhotoManager(photoManager);
-    tileView.setListener(listener);
-    tileView.loadFromContact(getItem(position));
-    tileView.setPosition(position);
-    return tileView;
-  }
-
-  @Override
-  public int getViewTypeCount() {
-    return ViewTypes.COUNT;
-  }
-
-  @Override
-  public int getItemViewType(int position) {
-    return ViewTypes.TILE;
-  }
-
-  /**
-   * Temporarily removes a contact from the list for UI refresh. Stores data for this contact in the
-   * back-up variable.
-   *
-   * @param index Position of the contact to be removed.
-   */
-  private void popContactEntry(int index) {
-    if (isIndexInBound(index)) {
-      draggedEntry = contactEntries.get(index);
-      draggedEntryIndex = index;
-      dragEnteredEntryIndex = index;
-      markDropArea(dragEnteredEntryIndex);
-    }
-  }
-
-  /**
-   * @param itemIndex Position of the contact in {@link #contactEntries}.
-   * @return True if the given index is valid for {@link #contactEntries}.
-   */
-  boolean isIndexInBound(int itemIndex) {
-    return itemIndex >= 0 && itemIndex < contactEntries.size();
-  }
-
-  /**
-   * Mark the tile as drop area by given the item index in {@link #contactEntries}.
-   *
-   * @param itemIndex Position of the contact in {@link #contactEntries}.
-   */
-  private void markDropArea(int itemIndex) {
-    if (draggedEntry != null
-        && isIndexInBound(dragEnteredEntryIndex)
-        && isIndexInBound(itemIndex)) {
-      dataSetChangedListener.cacheOffsetsForDatasetChange();
-      // Remove the old placeholder item and place the new placeholder item.
-      contactEntries.remove(dragEnteredEntryIndex);
-      dragEnteredEntryIndex = itemIndex;
-      contactEntries.add(dragEnteredEntryIndex, ContactEntry.BLANK_ENTRY);
-      ContactEntry.BLANK_ENTRY.id = draggedEntry.id;
-      dataSetChangedListener.onDataSetChangedForAnimation();
-      notifyDataSetChanged();
-    }
-  }
-
-  /** Drops the temporarily removed contact to the desired location in the list. */
-  private void handleDrop() {
-    boolean changed = false;
-    if (draggedEntry != null) {
-      if (isIndexInBound(dragEnteredEntryIndex) && dragEnteredEntryIndex != draggedEntryIndex) {
-        // Don't add the ContactEntry here (to prevent a double animation from occuring).
-        // When we receive a new cursor the list of contact entries will automatically be
-        // populated with the dragged ContactEntry at the correct spot.
-        dropEntryIndex = dragEnteredEntryIndex;
-        contactEntries.set(dropEntryIndex, draggedEntry);
-        dataSetChangedListener.cacheOffsetsForDatasetChange();
-        changed = true;
-      } else if (isIndexInBound(draggedEntryIndex)) {
-        // If {@link #mDragEnteredEntryIndex} is invalid,
-        // falls back to the original position of the contact.
-        contactEntries.remove(dragEnteredEntryIndex);
-        contactEntries.add(draggedEntryIndex, draggedEntry);
-        dropEntryIndex = draggedEntryIndex;
-        notifyDataSetChanged();
-      }
-
-      if (changed && dropEntryIndex < PIN_LIMIT) {
-        ArrayList<ContentProviderOperation> operations =
-            getReflowedPinningOperations(contactEntries, draggedEntryIndex, dropEntryIndex);
-        StrictModeUtils.bypass(() -> updateDatabaseWithPinnedPositions(operations));
-      }
-      draggedEntry = null;
-    }
-  }
-
-  private void updateDatabaseWithPinnedPositions(ArrayList<ContentProviderOperation> operations) {
-    if (operations.isEmpty()) {
-      // Nothing to update
-      return;
-    }
-    try {
-      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations);
-      Logger.get(context).logInteraction(InteractionEvent.Type.SPEED_DIAL_PIN_CONTACT);
-    } catch (RemoteException | OperationApplicationException e) {
-      LogUtil.e(TAG, "Exception thrown when pinning contacts", e);
-    }
-  }
-
-  /**
-   * Used when a contact is removed from speeddial. This will both unstar and set pinned position of
-   * the contact to PinnedPosition.DEMOTED so that it doesn't show up anymore in the favorites list.
-   */
-  private void unstarAndUnpinContact(Uri contactUri) {
-    final ContentValues values = new ContentValues(2);
-    values.put(Contacts.STARRED, false);
-    values.put(Contacts.PINNED, PinnedPositions.DEMOTED);
-    StrictModeUtils.bypass(
-        () -> context.getContentResolver().update(contactUri, values, null, null));
-  }
-
-  /**
-   * Given a list of contacts that each have pinned positions, rearrange the list (destructive) such
-   * that all pinned contacts are in their defined pinned positions, and unpinned contacts take the
-   * spaces between those pinned contacts. Demoted contacts should not appear in the resulting list.
-   *
-   * <p>This method also updates the pinned positions of pinned contacts so that they are all unique
-   * positive integers within range from 0 to toArrange.size() - 1. This is because when the contact
-   * entries are read from the database, it is possible for them to have overlapping pin positions
-   * due to sync or modifications by third party apps.
-   */
-  @VisibleForTesting
-  private void arrangeContactsByPinnedPosition(ArrayList<ContactEntry> toArrange) {
-    final PriorityQueue<ContactEntry> pinnedQueue =
-        new PriorityQueue<>(PIN_LIMIT, contactEntryComparator);
-
-    final List<ContactEntry> unpinnedContacts = new LinkedList<>();
-
-    final int length = toArrange.size();
-    for (int i = 0; i < length; i++) {
-      final ContactEntry contact = toArrange.get(i);
-      // Decide whether the contact is hidden(demoted), pinned, or unpinned
-      if (contact.pinned > PIN_LIMIT || contact.pinned == PinnedPositions.UNPINNED) {
-        unpinnedContacts.add(contact);
-      } else if (contact.pinned > PinnedPositions.DEMOTED) {
-        // Demoted or contacts with negative pinned positions are ignored.
-        // Pinned contacts go into a priority queue where they are ranked by pinned
-        // position. This is required because the contacts provider does not return
-        // contacts ordered by pinned position.
-        pinnedQueue.add(contact);
-      }
-    }
-
-    final int maxToPin = Math.min(PIN_LIMIT, pinnedQueue.size() + unpinnedContacts.size());
-
-    toArrange.clear();
-    for (int i = 1; i < maxToPin + 1; i++) {
-      if (!pinnedQueue.isEmpty() && pinnedQueue.peek().pinned <= i) {
-        final ContactEntry toPin = pinnedQueue.poll();
-        toPin.pinned = i;
-        toArrange.add(toPin);
-      } else if (!unpinnedContacts.isEmpty()) {
-        toArrange.add(unpinnedContacts.remove(0));
-      }
-    }
-
-    // If there are still contacts in pinnedContacts at this point, it means that the pinned
-    // positions of these pinned contacts exceed the actual number of contacts in the list.
-    // For example, the user had 10 frequents, starred and pinned one of them at the last spot,
-    // and then cleared frequents. Contacts in this situation should become unpinned.
-    while (!pinnedQueue.isEmpty()) {
-      final ContactEntry entry = pinnedQueue.poll();
-      entry.pinned = PinnedPositions.UNPINNED;
-      toArrange.add(entry);
-    }
-
-    // Any remaining unpinned contacts that weren't in the gaps between the pinned contacts
-    // now just get appended to the end of the list.
-    toArrange.addAll(unpinnedContacts);
-  }
-
-  /**
-   * Given an existing list of contact entries and a single entry that is to be pinned at a
-   * particular position, return a list of {@link ContentProviderOperation}s that contains new
-   * pinned positions for all contacts that are forced to be pinned at new positions, trying as much
-   * as possible to keep pinned contacts at their original location.
-   *
-   * <p>At this point in time the pinned position of each contact in the list has already been
-   * updated by {@link #arrangeContactsByPinnedPosition}, so we can assume that all pinned
-   * positions(within {@link #PIN_LIMIT} are unique positive integers.
-   */
-  @VisibleForTesting
-  private ArrayList<ContentProviderOperation> getReflowedPinningOperations(
-      ArrayList<ContactEntry> list, int oldPos, int newPinPos) {
-    final ArrayList<ContentProviderOperation> positions = new ArrayList<>();
-    final int lowerBound = Math.min(oldPos, newPinPos);
-    final int upperBound = Math.max(oldPos, newPinPos);
-    for (int i = lowerBound; i <= upperBound; i++) {
-      final ContactEntry entry = list.get(i);
-
-      // Pinned positions in the database start from 1 instead of being zero-indexed like
-      // arrays, so offset by 1.
-      final int databasePinnedPosition = i + 1;
-      if (entry.pinned == databasePinnedPosition) {
-        continue;
-      }
-
-      final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(entry.id));
-      final ContentValues values = new ContentValues();
-      values.put(Contacts.PINNED, databasePinnedPosition);
-      positions.add(ContentProviderOperation.newUpdate(uri).withValues(values).build());
-    }
-    return positions;
-  }
-
-  @Override
-  public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-    setInDragging(true);
-    final int itemIndex = contactEntries.indexOf(view.getContactEntry());
-    popContactEntry(itemIndex);
-  }
-
-  @Override
-  public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {
-    if (view == null) {
-      // The user is hovering over a view that is not a contact tile, no need to do
-      // anything here.
-      return;
-    }
-    final int itemIndex = contactEntries.indexOf(view.getContactEntry());
-    if (inDragging
-        && dragEnteredEntryIndex != itemIndex
-        && isIndexInBound(itemIndex)
-        && itemIndex < PIN_LIMIT
-        && itemIndex >= 0) {
-      markDropArea(itemIndex);
-    }
-  }
-
-  @Override
-  public void onDragFinished(int x, int y) {
-    setInDragging(false);
-    // A contact has been dragged to the RemoveView in order to be unstarred,  so simply wait
-    // for the new contact cursor which will cause the UI to be refreshed without the unstarred
-    // contact.
-    if (!awaitingRemove) {
-      handleDrop();
-    }
-  }
-
-  @Override
-  public void onDroppedOnRemove() {
-    if (draggedEntry != null) {
-      unstarAndUnpinContact(draggedEntry.lookupUri);
-      awaitingRemove = true;
-      Logger.get(context).logInteraction(InteractionEvent.Type.SPEED_DIAL_REMOVE_CONTACT);
-    }
-  }
-
-  interface OnDataSetChangedForAnimationListener {
-
-    void onDataSetChangedForAnimation(long... idsInPlace);
-
-    void cacheOffsetsForDatasetChange();
-  }
-
-  private static class ViewTypes {
-
-    static final int TILE = 0;
-    static final int COUNT = 1;
-  }
-}
diff --git a/java/com/android/dialer/app/list/RemoveView.java b/java/com/android/dialer/app/list/RemoveView.java
index c8680bf..bb54735 100644
--- a/java/com/android/dialer/app/list/RemoveView.java
+++ b/java/com/android/dialer/app/list/RemoveView.java
@@ -29,7 +29,6 @@
 
 public class RemoveView extends FrameLayout {
 
-  DragDropController dragDropController;
   TextView removeText;
   ImageView removeIcon;
   int unhighlightedColor;
@@ -59,10 +58,6 @@
             getContext().getTheme());
   }
 
-  public void setDragDropController(DragDropController controller) {
-    dragDropController = controller;
-  }
-
   @Override
   public boolean onDragEvent(DragEvent event) {
     final int action = event.getAction();
@@ -77,15 +72,9 @@
         setAppearanceNormal();
         break;
       case DragEvent.ACTION_DRAG_LOCATION:
-        if (dragDropController != null) {
-          dragDropController.handleDragHovered(this, (int) event.getX(), (int) event.getY());
-        }
         break;
       case DragEvent.ACTION_DROP:
         sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
-        if (dragDropController != null) {
-          dragDropController.handleDragFinished((int) event.getX(), (int) event.getY(), true);
-        }
         setAppearanceNormal();
         break;
     }
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index c454da8..4a220be 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -73,34 +73,6 @@
   </LinearLayout>
 
   <LinearLayout
-      android:id="@+id/set_up_video_action"
-      style="@style/CallLogActionStyle">
-
-    <ImageView
-        style="@style/CallLogActionIconStyle"
-        android:src="@drawable/quantum_ic_videocam_vd_white_24"/>
-
-    <TextView
-        style="@style/CallLogActionTextStyle"
-        android:text="@string/call_log_action_set_up_video"/>
-
-  </LinearLayout>
-
-  <LinearLayout
-      android:id="@+id/invite_video_action"
-      style="@style/CallLogActionStyle">
-
-    <ImageView
-        style="@style/CallLogActionIconStyle"
-        android:src="@drawable/quantum_ic_videocam_vd_white_24"/>
-
-    <TextView
-        style="@style/CallLogActionTextStyle"
-        android:text="@string/call_log_action_invite_video"/>
-
-  </LinearLayout>
-
-  <LinearLayout
     android:id="@+id/create_new_contact_action"
     style="@style/CallLogActionStyle">
 
diff --git a/java/com/android/dialer/app/res/layout/dialtacts_activity.xml b/java/com/android/dialer/app/res/layout/dialtacts_activity.xml
deleted file mode 100644
index 4bd00f6..0000000
--- a/java/com/android/dialer/app/res/layout/dialtacts_activity.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-<android.support.design.widget.CoordinatorLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:app="http://schemas.android.com/apk/res-auto"
-  android:id="@+id/dialtacts_mainlayout"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="?android:attr/colorBackground"
-  android:clipChildren="false"
-  android:clipToPadding="false"
-  android:focusable="true"
-  android:focusableInTouchMode="true"
-  android:orientation="vertical">
-
-  <FrameLayout
-    android:id="@+id/dialtacts_container"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:clipChildren="false">
-    <!-- The main contacts grid -->
-    <FrameLayout
-      android:id="@+id/dialtacts_frame"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:clipChildren="false"/>
-  </FrameLayout>
-
-  <android.support.design.widget.FloatingActionButton
-      android:id="@+id/floating_action_button"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center_horizontal|bottom"
-      android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
-      android:contentDescription="@string/action_menu_dialpad_button"
-      android:src="@drawable/quantum_ic_dialpad_vd_theme_24"
-      app:elevation="@dimen/floating_action_button_translation_z"
-      app:backgroundTint="?android:attr/colorAccent"/>
-
-  <!-- Host container for the contact tile drag shadow -->
-  <FrameLayout
-    android:id="@+id/activity_overlay"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <ImageView
-      android:id="@+id/contact_tile_drag_shadow_overlay"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:importantForAccessibility="no"
-      android:visibility="gone"/>
-  </FrameLayout>
-
-</android.support.design.widget.CoordinatorLayout>
diff --git a/java/com/android/dialer/app/res/layout/lists_fragment.xml b/java/com/android/dialer/app/res/layout/lists_fragment.xml
deleted file mode 100644
index cd2a33d..0000000
--- a/java/com/android/dialer/app/res/layout/lists_fragment.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/lists_frame"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:animateLayoutChanges="true">
-
-  <LinearLayout
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:orientation="vertical">
-
-    <!-- TODO: Apply background color to ActionBar instead of a FrameLayout. For now, this is
-         the easiest way to preserve correct pane scrolling and searchbar collapse/expand
-         behaviors. -->
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/action_bar_height_large"
-        android:background="?android:attr/colorPrimary"
-        android:elevation="@dimen/tab_elevation"/>
-
-    <com.android.contacts.common.list.ViewPagerTabs
-        android:id="@+id/lists_pager_header"
-        style="@style/DialtactsActionBarTabTextStyle"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/tab_height"
-        android:layout_gravity="top"
-        android:elevation="@dimen/tab_elevation"
-        android:orientation="horizontal"
-        android:textAllCaps="true"/>
-
-    <com.android.dialer.app.list.DialerViewPager
-        android:id="@+id/lists_pager"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"/>
-
-  </LinearLayout>
-
-  <!-- Sets android:importantForAccessibility="no" to avoid being announced when navigating with
-       talkback enabled. It will still be announced when user drag or drop contact onto it.
-       This is required since drag and drop event is only sent to views are visible when drag
-       starts. -->
-  <com.android.dialer.app.list.RemoveView
-      android:id="@+id/remove_view"
-      android:layout_width="match_parent"
-      android:layout_height="@dimen/tab_height"
-      android:layout_marginTop="@dimen/action_bar_height_large"
-      android:contentDescription="@string/remove_contact"
-      android:importantForAccessibility="no">
-
-    <LinearLayout
-        android:id="@+id/remove_view_content"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="?android:attr/colorPrimary"
-        android:gravity="center"
-        android:orientation="horizontal"
-        android:visibility="gone">
-
-      <ImageView
-          android:id="@+id/remove_view_icon"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginTop="8dp"
-          android:layout_marginBottom="8dp"
-          android:src="@drawable/quantum_ic_clear_vd_theme_24"
-          android:tint="?colorTextOnUnthemedDarkBackground"/>
-
-      <TextView
-          android:id="@+id/remove_view_text"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:text="@string/remove_contact"
-          android:textColor="?colorTextOnUnthemedDarkBackground"
-          style="@style/Dialer.TextAppearance.Primary"/>
-
-    </LinearLayout>
-
-  </com.android.dialer.app.list.RemoveView>
-
-</FrameLayout>
diff --git a/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml b/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
deleted file mode 100644
index c1903d5..0000000
--- a/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-<view
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/contact_tile"
-    class="com.android.dialer.app.list.PhoneFavoriteSquareTileView"
-    android:paddingBottom="@dimen/contact_tile_divider_width"
-    android:paddingEnd="@dimen/contact_tile_divider_width">
-
-  <RelativeLayout
-      android:id="@+id/contact_favorite_card"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:focusable="true"
-      android:nextFocusRight="@+id/contact_tile_secondary_button">
-
-    <com.android.contacts.common.widget.LayoutSuppressingImageView
-        android:id="@+id/contact_tile_image"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:scaleType="centerCrop"/>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-      <View
-          android:layout_width="match_parent"
-          android:layout_height="0dp"
-          android:layout_weight="6"/>
-      <View
-          android:id="@+id/shadow_overlay"
-          android:layout_width="match_parent"
-          android:layout_height="0dp"
-          android:layout_weight="4"
-          android:background="@drawable/shadow_contact_photo"/>
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:paddingBottom="@dimen/contact_tile_text_bottom_padding"
-        android:paddingStart="@dimen/contact_tile_text_side_padding"
-        android:paddingEnd="@dimen/contact_tile_text_side_padding"
-        android:orientation="vertical">
-
-      <LinearLayout
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:gravity="center_vertical"
-          android:orientation="horizontal">
-        <com.android.dialer.widget.BidiTextView
-            android:id="@+id/contact_tile_name"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="3dip"
-            android:fontFamily="sans-serif-medium"
-            android:singleLine="true"
-            android:textAlignment="viewStart"
-            android:textColor="?colorTextOnUnthemedDarkBackground"
-            android:textSize="15sp"/>
-        <ImageView
-            android:id="@+id/contact_star_icon"
-            android:layout_width="@dimen/favorites_star_icon_size"
-            android:layout_height="@dimen/favorites_star_icon_size"
-            android:layout_marginStart="3dp"
-            android:src="@drawable/quantum_ic_star_vd_theme_24"
-            android:visibility="gone"/>
-      </LinearLayout>
-      <TextView
-          android:id="@+id/contact_tile_phone_type"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:ellipsize="marquee"
-          android:fadingEdge="horizontal"
-          android:fadingEdgeLength="3dip"
-          android:fontFamily="sans-serif"
-          android:gravity="center_vertical"
-          android:singleLine="true"
-          android:textAlignment="viewStart"
-          android:textColor="?colorTextOnUnthemedDarkBackground"
-          android:textSize="11sp"/>
-    </LinearLayout>
-
-    <View
-        android:id="@+id/contact_tile_push_state"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="?android:selectableItemBackground"
-        android:importantForAccessibility="no"/>
-
-    <!-- Wrap the ImageButton in a layout with a transparent background so the ripple has something to draw on -->
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@android:color/transparent">
-      <ImageButton
-          android:id="@id/contact_tile_secondary_button"
-          android:layout_width="@dimen/contact_tile_info_button_height_and_width"
-          android:layout_height="@dimen/contact_tile_info_button_height_and_width"
-          android:layout_gravity="top|end"
-          android:paddingTop="8dp"
-          android:paddingBottom="4dp"
-          android:paddingStart="4dp"
-          android:paddingEnd="4dp"
-          android:background="@drawable/item_background_material_borderless_dark"
-          android:contentDescription="@string/description_view_contact_detail"
-          android:scaleType="center"
-          android:src="@drawable/quantum_ic_more_vert_vd_theme_24"/>
-
-    </FrameLayout>
-
-  </RelativeLayout>
-</view>
diff --git a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml b/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
deleted file mode 100644
index 3fa3be2..0000000
--- a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 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.
--->
-
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:clipChildren="false">
-
-  <FrameLayout
-    android:id="@+id/contact_tile_frame"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_alignParentLeft="true"
-    android:layout_alignParentTop="true"
-    android:paddingStart="@dimen/favorites_row_start_padding"
-    android:paddingEnd="@dimen/favorites_row_end_padding">
-    <com.android.dialer.app.list.PhoneFavoriteListView
-      android:id="@+id/contact_tile_list"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:paddingTop="@dimen/favorites_row_top_padding"
-      android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"
-      android:clipToPadding="false"
-      android:divider="@null"
-      android:fadingEdge="none"
-      android:nestedScrollingEnabled="true"
-      android:numColumns="@integer/contact_tile_column_count_in_favorites"/>
-  </FrameLayout>
-
-  <com.android.dialer.widget.EmptyContentView
-    android:id="@+id/empty_list_view"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:visibility="gone"/>
-
-</FrameLayout>
diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml
index 0fa3503..c3c5281 100644
--- a/java/com/android/dialer/app/res/values/styles.xml
+++ b/java/com/android/dialer/app/res/values/styles.xml
@@ -172,9 +172,4 @@
     <item name="android:paddingRight">16dp</item>
     <item name="android:minHeight">56dp</item>
   </style>
-
-  <style name="PromoLinkStyle">
-    <item name="android:textColor">?android:attr/colorPrimary</item>
-    <item name="android:fontFamily">"sans-serif-medium"</item>
-  </style>
 </resources>
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index 95662a1..7d6195f 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -51,12 +51,10 @@
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.constants.Constants;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumbercache.CallLogQuery;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.google.common.io.ByteStreams;
@@ -519,7 +517,7 @@
       handleError(new IllegalStateException("Cannot play voicemail when call is in progress"));
       return;
     }
-    StrictModeUtils.bypass(this::prepareMediaPlayer);
+    prepareMediaPlayer();
   }
 
   private void prepareMediaPlayer() {
@@ -859,7 +857,7 @@
     if (context == null) {
       return;
     }
-    if (isShareVoicemailAllowed(context) && shareVoicemailButtonView != null) {
+    if (shareVoicemailButtonView != null) {
       if (show) {
         Logger.get(context).logImpression(DialerImpression.Type.VVM_SHARE_VISIBLE);
       }
@@ -868,12 +866,6 @@
     }
   }
 
-  private static boolean isShareVoicemailAllowed(Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_SHARE_VOICEMAIL_ALLOWED, true);
-  }
-
   private static class ShareVoicemailWorker
       implements DialerExecutor.Worker<Pair<Context, Uri>, Pair<Uri, String>> {
 
diff --git a/java/com/android/dialer/app/widget/ActionBarController.java b/java/com/android/dialer/app/widget/ActionBarController.java
deleted file mode 100644
index 8ab57bc..0000000
--- a/java/com/android/dialer/app/widget/ActionBarController.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2013 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.app.widget;
-
-import android.animation.ValueAnimator;
-import android.os.Bundle;
-import com.android.dialer.animation.AnimUtils.AnimationCallback;
-import com.android.dialer.common.LogUtil;
-
-/**
- * Controls the various animated properties of the actionBar: showing/hiding, fading/revealing, and
- * collapsing/expanding, and assigns suitable properties to the actionBar based on the current state
- * of the UI.
- */
-public class ActionBarController {
-
-  private static final String KEY_IS_SLID_UP = "key_actionbar_is_slid_up";
-  private static final String KEY_IS_FADED_OUT = "key_actionbar_is_faded_out";
-  private static final String KEY_IS_EXPANDED = "key_actionbar_is_expanded";
-
-  private ActivityUi activityUi;
-  private SearchEditTextLayout searchBox;
-
-  private boolean isActionBarSlidUp;
-
-  private final AnimationCallback fadeOutCallback =
-      new AnimationCallback() {
-        @Override
-        public void onAnimationEnd() {
-          slideActionBar(true /* slideUp */, false /* animate */);
-        }
-
-        @Override
-        public void onAnimationCancel() {
-          slideActionBar(true /* slideUp */, false /* animate */);
-        }
-      };
-
-  private ValueAnimator animator;
-
-  public ActionBarController(ActivityUi activityUi, SearchEditTextLayout searchBox) {
-    this.activityUi = activityUi;
-    this.searchBox = searchBox;
-  }
-
-  /** @return Whether or not the action bar is currently showing (both slid down and visible) */
-  public boolean isActionBarShowing() {
-    return !isActionBarSlidUp && !searchBox.isFadedOut();
-  }
-
-  /** Called when the user has tapped on the collapsed search box, to start a new search query. */
-  public void onSearchBoxTapped() {
-    LogUtil.d("ActionBarController.onSearchBoxTapped", "isInSearchUi " + activityUi.isInSearchUi());
-    if (!activityUi.isInSearchUi()) {
-      searchBox.expand(true /* animate */, true /* requestFocus */);
-    }
-  }
-
-  /** Called when search UI has been exited for some reason. */
-  public void onSearchUiExited() {
-    LogUtil.d(
-        "ActionBarController.onSearchUIExited",
-        "isExpanded: %b, isFadedOut %b",
-        searchBox.isExpanded(),
-        searchBox.isFadedOut());
-    if (searchBox.isExpanded()) {
-      searchBox.collapse(true /* animate */);
-    }
-    if (searchBox.isFadedOut()) {
-      searchBox.fadeIn();
-    }
-
-    slideActionBar(false /* slideUp */, false /* animate */);
-  }
-
-  /**
-   * Called to indicate that the user is trying to hide the dialpad. Should be called before any
-   * state changes have actually occurred.
-   */
-  public void onDialpadDown() {
-    LogUtil.d(
-        "ActionBarController.onDialpadDown",
-        "isInSearchUi: %b, hasSearchQuery: %b, isFadedOut: %b, isExpanded: %b",
-        activityUi.isInSearchUi(),
-        activityUi.hasSearchQuery(),
-        searchBox.isFadedOut(),
-        searchBox.isExpanded());
-    if (activityUi.isInSearchUi()) {
-      if (searchBox.isFadedOut()) {
-        searchBox.setVisible(true);
-      }
-      if (!searchBox.isExpanded()) {
-        searchBox.expand(false /* animate */, false /* requestFocus */);
-      }
-      slideActionBar(false /* slideUp */, true /* animate */);
-    }
-  }
-
-  /**
-   * Called to indicate that the user is trying to show the dialpad. Should be called before any
-   * state changes have actually occurred.
-   */
-  public void onDialpadUp() {
-    LogUtil.d("ActionBarController.onDialpadUp", "isInSearchUi " + activityUi.isInSearchUi());
-    if (activityUi.isInSearchUi()) {
-      slideActionBar(true /* slideUp */, true /* animate */);
-    } else {
-      // From the lists fragment
-      searchBox.fadeOut(fadeOutCallback);
-    }
-  }
-
-  public void slideActionBar(boolean slideUp, boolean animate) {
-    LogUtil.d("ActionBarController.slidingActionBar", "up: %b, animate: %b", slideUp, animate);
-
-    if (animator != null && animator.isRunning()) {
-      animator.cancel();
-      animator.removeAllUpdateListeners();
-    }
-    if (animate) {
-      animator = slideUp ? ValueAnimator.ofFloat(0, 1) : ValueAnimator.ofFloat(1, 0);
-      animator.addUpdateListener(
-          animation -> {
-            final float value = (float) animation.getAnimatedValue();
-            setHideOffset((int) (activityUi.getActionBarHeight() * value));
-          });
-      animator.start();
-    } else {
-      setHideOffset(slideUp ? activityUi.getActionBarHeight() : 0);
-    }
-    isActionBarSlidUp = slideUp;
-  }
-
-  public void setAlpha(float alphaValue) {
-    searchBox.animate().alpha(alphaValue).start();
-  }
-
-  private void setHideOffset(int offset) {
-    activityUi.setActionBarHideOffset(offset);
-  }
-
-  /** Saves the current state of the action bar into a provided {@link Bundle} */
-  public void saveInstanceState(Bundle outState) {
-    outState.putBoolean(KEY_IS_SLID_UP, isActionBarSlidUp);
-    outState.putBoolean(KEY_IS_FADED_OUT, searchBox.isFadedOut());
-    outState.putBoolean(KEY_IS_EXPANDED, searchBox.isExpanded());
-  }
-
-  /** Restores the action bar state from a provided {@link Bundle}. */
-  public void restoreInstanceState(Bundle inState) {
-    isActionBarSlidUp = inState.getBoolean(KEY_IS_SLID_UP);
-
-    final boolean isSearchBoxFadedOut = inState.getBoolean(KEY_IS_FADED_OUT);
-    if (isSearchBoxFadedOut) {
-      if (!searchBox.isFadedOut()) {
-        searchBox.setVisible(false);
-      }
-    } else if (searchBox.isFadedOut()) {
-      searchBox.setVisible(true);
-    }
-
-    final boolean isSearchBoxExpanded = inState.getBoolean(KEY_IS_EXPANDED);
-    if (isSearchBoxExpanded) {
-      if (!searchBox.isExpanded()) {
-        searchBox.expand(false, false);
-      }
-    } else if (searchBox.isExpanded()) {
-      searchBox.collapse(false);
-    }
-  }
-
-  /**
-   * This should be called after onCreateOptionsMenu has been called, when the actionbar has been
-   * laid out and actually has a height.
-   */
-  public void restoreActionBarOffset() {
-    slideActionBar(isActionBarSlidUp /* slideUp */, false /* animate */);
-  }
-
-  public interface ActivityUi {
-
-    boolean isInSearchUi();
-
-    boolean hasSearchQuery();
-
-    int getActionBarHeight();
-
-    void setActionBarHideOffset(int offset);
-  }
-}
diff --git a/java/com/android/dialer/assisteddialing/ConcreteCreator.java b/java/com/android/dialer/assisteddialing/ConcreteCreator.java
index 6e14516..39158dd 100644
--- a/java/com/android/dialer/assisteddialing/ConcreteCreator.java
+++ b/java/com/android/dialer/assisteddialing/ConcreteCreator.java
@@ -16,19 +16,6 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.content.Context;
-import android.os.Build;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.v4.os.UserManagerCompat;
-import android.telephony.TelephonyManager;
-
-import com.android.dialer.R;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.strictmode.StrictModeUtils;
-
 /**
  * A Creator for AssistedDialingMediators.
  *
@@ -40,25 +27,16 @@
   /**
    * Creates a new AssistedDialingMediator
    *
-   * @param telephonyManager The telephony manager used to determine user location.
-   * @param context The context used to determine whether or not a provided number is an emergency
-   *     number.
    * @return An AssistedDialingMediator
    */
-  public static AssistedDialingMediator createNewAssistedDialingMediator(
-      @NonNull TelephonyManager telephonyManager, @NonNull Context context) {
+  public static AssistedDialingMediator createNewAssistedDialingMediator() {
     return new AssistedDialingMediatorStub();
   }
 
   /**
    * Returns a CountryCodeProvider responsible for providing countries eligible for assisted Dialing
    */
-  public static CountryCodeProvider getCountryCodeProvider(ConfigProvider configProvider) {
-    if (configProvider == null) {
-      LogUtil.i("ConcreteCreator.getCountryCodeProvider", "provided configProvider was null");
-      throw new NullPointerException("Provided configProvider was null");
-    }
-
-    return new CountryCodeProvider(configProvider);
+  public static CountryCodeProvider getCountryCodeProvider() {
+    return new CountryCodeProvider();
   }
 }
diff --git a/java/com/android/dialer/assisteddialing/Constraints.java b/java/com/android/dialer/assisteddialing/Constraints.java
index 41a3e92..9acc04e 100644
--- a/java/com/android/dialer/assisteddialing/Constraints.java
+++ b/java/com/android/dialer/assisteddialing/Constraints.java
@@ -24,7 +24,6 @@
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
@@ -55,7 +54,7 @@
     }
 
     this.countryCodeProvider = countryCodeProvider;
-    this.phoneNumberUtil = StrictModeUtils.bypass(() -> PhoneNumberUtil.getInstance());
+    this.phoneNumberUtil = PhoneNumberUtil.getInstance();
   }
 
   /**
@@ -144,18 +143,15 @@
    */
   private Optional<PhoneNumber> parsePhoneNumber(
       @NonNull String numberToParse, @NonNull String userHomeCountryCode) {
-    return StrictModeUtils.bypass(
-        () -> {
-          try {
-            return Optional.of(
-                phoneNumberUtil.parseAndKeepRawInput(numberToParse, userHomeCountryCode));
-          } catch (NumberParseException e) {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.ASSISTED_DIALING_CONSTRAINT_PARSING_FAILURE);
-            LogUtil.i("Constraints.parsePhoneNumber", "could not parse the number");
-            return Optional.empty();
-          }
-        });
+    try {
+      return Optional.of(
+          phoneNumberUtil.parseAndKeepRawInput(numberToParse, userHomeCountryCode));
+    } catch (NumberParseException e) {
+      Logger.get(context)
+          .logImpression(DialerImpression.Type.ASSISTED_DIALING_CONSTRAINT_PARSING_FAILURE);
+      LogUtil.i("Constraints.parsePhoneNumber", "could not parse the number");
+      return Optional.empty();
+    }
   }
 
   /** Returns a boolean indicating if the provided number is already internationally formatted. */
@@ -193,8 +189,7 @@
 
   /** Returns a boolean indicating if the provided number is considered to be a valid number. */
   private boolean isValidNumber(@NonNull Optional<PhoneNumber> parsedPhoneNumber) {
-    boolean result =
-        StrictModeUtils.bypass(() -> phoneNumberUtil.isValidNumber(parsedPhoneNumber.get()));
+    boolean result = phoneNumberUtil.isValidNumber(parsedPhoneNumber.get());
     LogUtil.i("Constraints.isValidNumber", String.valueOf(result));
 
     return result;
diff --git a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
index 04b2291..721f452 100644
--- a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
+++ b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
@@ -17,16 +17,12 @@
 package com.android.dialer.assisteddialing;
 
 import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
 import android.util.ArraySet;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
-import java.util.StringTokenizer;
 import java.util.stream.Collectors;
 
 /** A class to provide the appropriate country codes related to assisted dialing. */
@@ -46,10 +42,8 @@
 
   private final Set<String> supportedCountryCodes;
 
-  CountryCodeProvider(ConfigProvider configProvider) {
-    supportedCountryCodes =
-        parseConfigProviderCountryCodes(
-                configProvider.getString("assisted_dialing_csv_country_codes", ""))
+  CountryCodeProvider() {
+    supportedCountryCodes = DEFAULT_COUNTRY_CODES
             .stream()
             .map(v -> v.toUpperCase(Locale.US))
             .collect(Collectors.toCollection(ArraySet::new));
@@ -61,43 +55,4 @@
   public boolean isSupportedCountryCode(String countryCode) {
     return supportedCountryCodes.contains(countryCode);
   }
-
-  private List<String> parseConfigProviderCountryCodes(String configProviderCountryCodes) {
-    if (TextUtils.isEmpty(configProviderCountryCodes)) {
-      LogUtil.i(
-          "Constraints.parseConfigProviderCountryCodes",
-          "configProviderCountryCodes was empty, returning default");
-      return DEFAULT_COUNTRY_CODES;
-    }
-
-    StringTokenizer tokenizer = new StringTokenizer(configProviderCountryCodes, ",");
-
-    if (tokenizer.countTokens() < 1) {
-      LogUtil.i(
-          "Constraints.parseConfigProviderCountryCodes", "insufficient provided country codes");
-      return DEFAULT_COUNTRY_CODES;
-    }
-
-    List<String> parsedCountryCodes = new ArrayList<>();
-    while (tokenizer.hasMoreTokens()) {
-      String foundLocale = tokenizer.nextToken();
-      if (foundLocale == null) {
-        LogUtil.i(
-            "Constraints.parseConfigProviderCountryCodes",
-            "Unexpected empty value, returning default.");
-        return DEFAULT_COUNTRY_CODES;
-      }
-
-      if (foundLocale.length() != 2) {
-        LogUtil.i(
-            "Constraints.parseConfigProviderCountryCodes",
-            "Unexpected locale %s, returning default",
-            foundLocale);
-        return DEFAULT_COUNTRY_CODES;
-      }
-
-      parsedCountryCodes.add(foundLocale);
-    }
-    return parsedCountryCodes;
-  }
 }
diff --git a/java/com/android/dialer/assisteddialing/NumberTransformer.java b/java/com/android/dialer/assisteddialing/NumberTransformer.java
index eabf856..f5b1bbd 100644
--- a/java/com/android/dialer/assisteddialing/NumberTransformer.java
+++ b/java/com/android/dialer/assisteddialing/NumberTransformer.java
@@ -18,7 +18,6 @@
 
 import android.text.TextUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
@@ -32,7 +31,7 @@
 
   NumberTransformer(Constraints constraints) {
     this.constraints = constraints;
-    this.phoneNumberUtil = StrictModeUtils.bypass(PhoneNumberUtil::getInstance);
+    this.phoneNumberUtil = PhoneNumberUtil.getInstance();
   }
 
   /**
@@ -53,27 +52,21 @@
       return Optional.empty();
     }
 
-    PhoneNumber phoneNumber =
-        StrictModeUtils.bypass(
-            () -> {
-              try {
-                return phoneNumberUtil.parse(numbertoTransform, userHomeCountryCode);
-              } catch (NumberParseException e) {
-                LogUtil.i(
-                    "NumberTransformer.doAssistedDialingTransformation", "number failed to parse");
-                return null;
-              }
-            });
+    PhoneNumber phoneNumber;
+    try {
+      phoneNumber = phoneNumberUtil.parse(numbertoTransform, userHomeCountryCode);
+    } catch (NumberParseException e) {
+      LogUtil.i(
+          "NumberTransformer.doAssistedDialingTransformation", "number failed to parse");
+      phoneNumber = null;
+    }
 
     if (phoneNumber == null) {
       return Optional.empty();
     }
 
-    String transformedNumber =
-        StrictModeUtils.bypass(
-            () ->
-                phoneNumberUtil.formatNumberForMobileDialing(
-                    phoneNumber, userRoamingCountryCode, true));
+    String transformedNumber = phoneNumberUtil.formatNumberForMobileDialing(
+            phoneNumber, userRoamingCountryCode, true);
 
     // formatNumberForMobileDialing may return an empty String.
     if (TextUtils.isEmpty(transformedNumber)) {
diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
index 76e6127..9de9912 100644
--- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
+++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
@@ -29,7 +29,6 @@
 import com.android.dialer.assisteddialing.ConcreteCreator;
 import com.android.dialer.assisteddialing.CountryCodeProvider;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.google.auto.value.AutoValue;
@@ -63,13 +62,8 @@
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
 
-    assistedDialingMediator =
-        ConcreteCreator.createNewAssistedDialingMediator(
-            getContext().getSystemService(TelephonyManager.class), getContext());
-
-    countryCodeProvider =
-        ConcreteCreator.getCountryCodeProvider(
-            ConfigProviderComponent.get(getContext()).getConfigProvider());
+    assistedDialingMediator = ConcreteCreator.createNewAssistedDialingMediator();
+    countryCodeProvider = ConcreteCreator.getCountryCodeProvider();
 
     // Load the preferences from an XML resource
     addPreferencesFromResource(R.xml.assisted_dialing_setting);
diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index 7f02b38..eb258e2 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -22,7 +22,6 @@
 import com.android.dialer.calllog.CallLogModule;
 import com.android.dialer.commandline.CommandLineModule;
 import com.android.dialer.common.concurrent.DialerExecutorModule;
-import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
 import com.android.dialer.contacts.ContactsModule;
 import com.android.dialer.duo.stub.StubDuoModule;
 import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
@@ -39,10 +38,8 @@
 import com.android.dialer.simulator.stub.StubSimulatorEnrichedCallModule;
 import com.android.dialer.spam.stub.StubSpamModule;
 import com.android.dialer.storage.StorageModule;
-import com.android.dialer.strictmode.impl.SystemStrictModeModule;
 import com.android.dialer.theme.base.impl.AospThemeModule;
 import com.android.incallui.calllocation.stub.StubCallLocationModule;
-import com.android.incallui.speakeasy.StubSpeakEasyModule;
 import com.android.voicemail.impl.VoicemailModule;
 import dagger.Component;
 import javax.inject.Singleton;
@@ -63,7 +60,6 @@
       PreCallModule.class,
       PreferredSimModule.class,
       PromotionModule.class,
-      SharedPrefConfigProviderModule.class,
       SimulatorModule.class,
       StubSimulatorEnrichedCallModule.class,
       StorageModule.class,
@@ -74,8 +70,6 @@
       StubFeedbackModule.class,
       StubSimSuggestionModule.class,
       StubSpamModule.class,
-      StubSpeakEasyModule.class,
-      SystemStrictModeModule.class,
       AospThemeModule.class,
       VoicemailModule.class,
     })
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index f7d3e8e..7c9d02b 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -23,7 +23,6 @@
 import com.android.dialer.calllog.ui.CallLogUiComponent;
 import com.android.dialer.commandline.CommandLineComponent;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.ContactsComponent;
 import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
@@ -40,10 +39,8 @@
 import com.android.dialer.spam.SpamComponent;
 import com.android.dialer.speeddial.loader.UiItemLoaderComponent;
 import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.strictmode.StrictModeComponent;
 import com.android.dialer.theme.base.ThemeComponent;
 import com.android.incallui.calllocation.CallLocationComponent;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 import com.android.voicemail.VoicemailComponent;
 
 /**
@@ -57,7 +54,6 @@
         CallLogComponent.HasComponent,
         CallLogDatabaseComponent.HasComponent,
         CallLogUiComponent.HasComponent,
-        ConfigProviderComponent.HasComponent,
         CommandLineComponent.HasComponent,
         ContactsComponent.HasComponent,
         DialerExecutorComponent.HasComponent,
@@ -75,8 +71,6 @@
         SimSuggestionComponent.HasComponent,
         SimulatorComponent.HasComponent,
         SpamComponent.HasComponent,
-        SpeakEasyComponent.HasComponent,
         StorageComponent.HasComponent,
-        StrictModeComponent.HasComponent,
         ThemeComponent.HasComponent,
         VoicemailComponent.HasComponent {}
diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java
index 6520fc0..268845b 100644
--- a/java/com/android/dialer/binary/common/DialerApplication.java
+++ b/java/com/android/dialer/binary/common/DialerApplication.java
@@ -20,12 +20,10 @@
 import android.os.Trace;
 import android.support.annotation.NonNull;
 import com.android.dialer.callrecord.CallRecordingAutoMigrator;
-import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.persistentlog.PersistentLogger;
-import com.android.dialer.strictmode.StrictModeComponent;
 
 /** A common application subclass for all Dialer build variants. */
 public abstract class DialerApplication extends Application implements HasRootComponent {
@@ -35,7 +33,6 @@
   @Override
   public void onCreate() {
     Trace.beginSection("DialerApplication.onCreate");
-    StrictModeComponent.get(this).getDialerStrictMode().onApplicationCreate(this);
     super.onCreate();
     new CallRecordingAutoMigrator(
             this.getApplicationContext(),
diff --git a/java/com/android/dialer/buildtype/BuildType.java b/java/com/android/dialer/buildtype/BuildType.java
deleted file mode 100644
index c5c41d2..0000000
--- a/java/com/android/dialer/buildtype/BuildType.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 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.buildtype;
-
-import android.support.annotation.IntDef;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** Utility to find out which build type the app is running as. */
-public class BuildType {
-
-  /** The type of build. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({
-    Type.BUGFOOD,
-    Type.FISHFOOD,
-    Type.DOGFOOD,
-    Type.RELEASE,
-    Type.TEST,
-  })
-  public @interface Type {
-    int BUGFOOD = 1;
-    int FISHFOOD = 2;
-    int DOGFOOD = 3;
-    int RELEASE = 4;
-    int TEST = 5;
-  }
-
-  private static int cachedBuildType;
-  private static boolean didInitializeBuildType;
-
-  @Type
-  public static synchronized int get() {
-    if (!didInitializeBuildType) {
-      didInitializeBuildType = true;
-      try {
-        Class<?> clazz = Class.forName(BuildTypeAccessor.class.getName() + "Impl");
-        BuildTypeAccessor accessorImpl = (BuildTypeAccessor) clazz.getConstructor().newInstance();
-        cachedBuildType = accessorImpl.getBuildType();
-      } catch (ReflectiveOperationException e) {
-        LogUtil.e("BuildType.get", "error creating BuildTypeAccessorImpl", e);
-        Assert.fail(
-            "Unable to get build type. To fix this error include one of the build type "
-                + "modules (bugfood, etc...) in your target.");
-      }
-    }
-    return cachedBuildType;
-  }
-
-  private BuildType() {}
-}
diff --git a/java/com/android/dialer/buildtype/BuildTypeAccessor.java b/java/com/android/dialer/buildtype/BuildTypeAccessor.java
deleted file mode 100644
index 940cf81..0000000
--- a/java/com/android/dialer/buildtype/BuildTypeAccessor.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 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.buildtype;
-
-import com.android.dialer.proguard.UsedByReflection;
-
-/**
- * Gets the build type. The functionality depends on a an implementation being present in the app
- * that has the same package and the class name ending in "Impl". For example,
- * com.android.dialer.buildtype.BuildTypeAccessorImpl. This class is found by the module using
- * reflection.
- */
-@UsedByReflection(value = "BuildType.java")
-/* package */ interface BuildTypeAccessor {
-  @BuildType.Type
-  int getBuildType();
-}
diff --git a/java/com/android/dialer/buildtype/release/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/release/BuildTypeAccessorImpl.java
deleted file mode 100644
index 4019dd0..0000000
--- a/java/com/android/dialer/buildtype/release/BuildTypeAccessorImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 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.buildtype;
-
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.proguard.UsedByReflection;
-
-/** Gets the build type. */
-@UsedByReflection(value = "BuildType.java")
-public class BuildTypeAccessorImpl implements BuildTypeAccessor {
-
-  @Override
-  @BuildType.Type
-  public int getBuildType() {
-    return Type.RELEASE;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index fc5cb22..d44bd32 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -60,7 +60,6 @@
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.constants.Constants;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
@@ -346,9 +345,7 @@
 
   @VisibleForTesting
   public long getSessionStartedTimeoutMillis() {
-    return ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getLong("ec_session_started_timeout", 10_000);
+    return 10_000;
   }
 
   @Override
@@ -443,11 +440,7 @@
 
     getEnrichedCallManager().sendCallComposerData(sessionId, data);
     maybeShowPrivacyToast(data);
-    if (data.hasImageData()
-        && ConfigProviderComponent.get(this)
-            .getConfigProvider()
-            .getBoolean("enable_delayed_ec_images", true)
-        && !TelecomUtil.isInManagedCall(this)) {
+    if (data.hasImageData() && !TelecomUtil.isInManagedCall(this)) {
       timeoutHandler.postDelayed(placeTelecomCallRunnable, getRCSTimeoutMillis());
       startActivity(
           CallPendingActivity.getIntent(
@@ -481,9 +474,7 @@
 
   @VisibleForTesting
   public long getRCSTimeoutMillis() {
-    return ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getLong("ec_image_upload_timeout", 15_000);
+    return 15_000;
   }
 
   private void placeTelecomCall() {
diff --git a/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java b/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
index 09e291e..dc16ba4 100644
--- a/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
+++ b/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
@@ -23,8 +23,6 @@
 @Subcomponent
 public abstract class CallLogDatabaseComponent {
 
-  public abstract Coalescer coalescer();
-
   public abstract AnnotatedCallLogDatabaseHelper annotatedCallLogDatabaseHelper();
 
   public static CallLogDatabaseComponent get(Context context) {
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
deleted file mode 100644
index fd751e7..0000000
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright (C) 2017 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.calllog.database;
-
-import android.database.Cursor;
-import android.database.StaleDataException;
-import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
-import com.android.dialer.CoalescedIds;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.NumberAttributes;
-import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.metrics.FutureTimer;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
-import com.android.dialer.telecom.TelecomUtil;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.protobuf.InvalidProtocolBufferException;
-import java.util.Objects;
-import javax.inject.Inject;
-
-/** Combines adjacent rows in {@link AnnotatedCallLog}. */
-public class Coalescer {
-
-  private final FutureTimer futureTimer;
-  private final ListeningExecutorService backgroundExecutorService;
-
-  @Inject
-  Coalescer(
-      @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
-      FutureTimer futureTimer) {
-    this.backgroundExecutorService = backgroundExecutorService;
-    this.futureTimer = futureTimer;
-  }
-
-  /**
-   * Given rows from {@link AnnotatedCallLog}, combine adjacent ones which should be collapsed for
-   * display purposes.
-   *
-   * @param allAnnotatedCallLogRowsSortedByTimestampDesc {@link AnnotatedCallLog} rows sorted in
-   *     descending order of timestamp.
-   * @return a future of a list of {@link CoalescedRow coalesced rows}, which will be used to
-   *     display call log entries.
-   */
-  public ListenableFuture<ImmutableList<CoalescedRow>> coalesce(
-      @NonNull Cursor allAnnotatedCallLogRowsSortedByTimestampDesc) {
-    ListenableFuture<ImmutableList<CoalescedRow>> coalescingFuture =
-        backgroundExecutorService.submit(
-            () -> coalesceInternal(Assert.isNotNull(allAnnotatedCallLogRowsSortedByTimestampDesc)));
-    futureTimer.applyTiming(coalescingFuture, Metrics.NEW_CALL_LOG_COALESCE);
-    return coalescingFuture;
-  }
-
-  /**
-   * Reads the entire {@link AnnotatedCallLog} into memory from the provided cursor and then builds
-   * and returns a list of {@link CoalescedRow coalesced rows}, which is the result of combining
-   * adjacent rows which should be collapsed for display purposes.
-   *
-   * @param allAnnotatedCallLogRowsSortedByTimestampDesc {@link AnnotatedCallLog} rows sorted in
-   *     descending order of timestamp.
-   * @return a list of {@link CoalescedRow coalesced rows}, which will be used to display call log
-   *     entries.
-   */
-  @WorkerThread
-  @NonNull
-  private ImmutableList<CoalescedRow> coalesceInternal(
-      Cursor allAnnotatedCallLogRowsSortedByTimestampDesc) throws ExpectedCoalescerException {
-    Assert.isWorkerThread();
-
-    ImmutableList.Builder<CoalescedRow> coalescedRowListBuilder = new ImmutableList.Builder<>();
-
-    try {
-      if (!allAnnotatedCallLogRowsSortedByTimestampDesc.moveToFirst()) {
-        return ImmutableList.of();
-      }
-
-      RowCombiner rowCombiner = new RowCombiner(allAnnotatedCallLogRowsSortedByTimestampDesc);
-      rowCombiner.startNewGroup();
-
-      long coalescedRowId = 0;
-      do {
-        boolean isRowMerged = rowCombiner.mergeRow(allAnnotatedCallLogRowsSortedByTimestampDesc);
-
-        if (isRowMerged) {
-          allAnnotatedCallLogRowsSortedByTimestampDesc.moveToNext();
-        }
-
-        if (!isRowMerged || allAnnotatedCallLogRowsSortedByTimestampDesc.isAfterLast()) {
-          coalescedRowListBuilder.add(
-              rowCombiner.combine().toBuilder().setId(coalescedRowId++).build());
-          rowCombiner.startNewGroup();
-        }
-      } while (!allAnnotatedCallLogRowsSortedByTimestampDesc.isAfterLast());
-
-      return coalescedRowListBuilder.build();
-
-    } catch (Exception exception) {
-      // Coalescing can fail if cursor "allAnnotatedCallLogRowsSortedByTimestampDesc" is closed by
-      // its loader while the work is still in progress.
-      //
-      // This can happen when the loader restarts and finishes loading data before the coalescing
-      // work is completed.
-      //
-      // This kind of failure doesn't have to crash the app as coalescing will be restarted on the
-      // latest data obtained by the loader. Therefore, we inspect the exception here and throw an
-      // ExpectedCoalescerException if it is the case described above.
-      //
-      // The type of expected exception depends on whether AbstractWindowedCursor#checkPosition() is
-      // called when the cursor is closed.
-      //   (1) If it is called before the cursor is closed, we will get IllegalStateException thrown
-      //       by SQLiteClosable when it attempts to acquire a reference to the database.
-      //   (2) Otherwise, we will get StaleDataException thrown by AbstractWindowedCursor's
-      //       checkPosition() method.
-      //
-      // Note that it would be more accurate to inspect the stack trace to locate the origin of the
-      // exception. However, according to the documentation on Throwable#getStackTrace, "some
-      // virtual machines may, under some circumstances, omit one or more stack frames from the
-      // stack trace". "In the extreme case, a virtual machine that has no stack trace information
-      // concerning this throwable is permitted to return a zero-length array from this method."
-      // Therefore, the best we can do is to inspect the message in the exception.
-      // TODO(linyuh): try to avoid the expected failure.
-      String message = exception.getMessage();
-      if (message != null
-          && ((exception instanceof StaleDataException
-                  && message.startsWith("Attempting to access a closed CursorWindow"))
-              || (exception instanceof IllegalStateException
-                  && message.startsWith("attempt to re-open an already-closed object")))) {
-        throw new ExpectedCoalescerException(exception);
-      }
-
-      throw exception;
-    }
-  }
-
-  /** Combines rows from {@link AnnotatedCallLog} into a {@link CoalescedRow}. */
-  private static final class RowCombiner {
-    private final CoalescedRow.Builder coalescedRowBuilder = CoalescedRow.newBuilder();
-    private final CoalescedIds.Builder coalescedIdsBuilder = CoalescedIds.newBuilder();
-
-    // Indexes for columns in AnnotatedCallLog
-    private final int idColumn;
-    private final int timestampColumn;
-    private final int numberColumn;
-    private final int formattedNumberColumn;
-    private final int numberPresentationColumn;
-    private final int isReadColumn;
-    private final int isNewColumn;
-    private final int geocodedLocationColumn;
-    private final int phoneAccountComponentNameColumn;
-    private final int phoneAccountIdColumn;
-    private final int featuresColumn;
-    private final int numberAttributesColumn;
-    private final int isVoicemailCallColumn;
-    private final int voicemailCallTagColumn;
-    private final int callTypeColumn;
-
-    // DialerPhoneNumberUtil will be created lazily as its instantiation is expensive.
-    private DialerPhoneNumberUtil dialerPhoneNumberUtil = null;
-
-    RowCombiner(Cursor annotatedCallLogRow) {
-      idColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog._ID);
-      timestampColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.TIMESTAMP);
-      numberColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NUMBER);
-      formattedNumberColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.FORMATTED_NUMBER);
-      numberPresentationColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NUMBER_PRESENTATION);
-      isReadColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.IS_READ);
-      isNewColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NEW);
-      geocodedLocationColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.GEOCODED_LOCATION);
-      phoneAccountComponentNameColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME);
-      phoneAccountIdColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.PHONE_ACCOUNT_ID);
-      featuresColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.FEATURES);
-      numberAttributesColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NUMBER_ATTRIBUTES);
-      isVoicemailCallColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.IS_VOICEMAIL_CALL);
-      voicemailCallTagColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.VOICEMAIL_CALL_TAG);
-      callTypeColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.CALL_TYPE);
-    }
-
-    /**
-     * Prepares {@link RowCombiner} for building a new group of rows by clearing information on all
-     * previously merged rows.
-     */
-    void startNewGroup() {
-      coalescedRowBuilder.clear();
-      coalescedIdsBuilder.clear();
-    }
-
-    /**
-     * Merge the given {@link AnnotatedCallLog} row into the current group.
-     *
-     * @return true if the given row is merged.
-     */
-    boolean mergeRow(Cursor annotatedCallLogRow) {
-      Assert.checkArgument(annotatedCallLogRow.getInt(callTypeColumn) != Calls.VOICEMAIL_TYPE);
-
-      if (!canMergeRow(annotatedCallLogRow)) {
-        return false;
-      }
-
-      // Set fields that don't use the most recent value.
-      //
-      // Currently there is only one such field: "features".
-      // If any call in a group includes a feature (like Wifi/HD), consider the group to have
-      // the feature.
-      coalescedRowBuilder.setFeatures(
-          coalescedRowBuilder.getFeatures() | annotatedCallLogRow.getInt(featuresColumn));
-
-      // Set fields that use the most recent value.
-      // Rows passed to Coalescer are already sorted in descending order of timestamp. If the
-      // coalesced ID list is not empty, it means RowCombiner has merged the most recent row in a
-      // group and there is no need to continue as we only set fields that use the most recent value
-      // from this point forward.
-      if (!coalescedIdsBuilder.getCoalescedIdList().isEmpty()) {
-        coalescedIdsBuilder.addCoalescedId(annotatedCallLogRow.getInt(idColumn));
-        return true;
-      }
-
-      coalescedRowBuilder
-          .setTimestamp(annotatedCallLogRow.getLong(timestampColumn))
-          .setNumberPresentation(annotatedCallLogRow.getInt(numberPresentationColumn))
-          .setIsRead(annotatedCallLogRow.getInt(isReadColumn) == 1)
-          .setIsNew(annotatedCallLogRow.getInt(isNewColumn) == 1)
-          .setIsVoicemailCall(annotatedCallLogRow.getInt(isVoicemailCallColumn) == 1)
-          .setCallType(annotatedCallLogRow.getInt(callTypeColumn));
-
-      // Two different DialerPhoneNumbers could be combined if they are different but considered
-      // to be a match by libphonenumber; in this case we arbitrarily select the most recent one.
-      try {
-        coalescedRowBuilder.setNumber(
-            DialerPhoneNumber.parseFrom(annotatedCallLogRow.getBlob(numberColumn)));
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException("Unable to parse DialerPhoneNumber bytes", e);
-      }
-
-      String formattedNumber = annotatedCallLogRow.getString(formattedNumberColumn);
-      if (!TextUtils.isEmpty(formattedNumber)) {
-        coalescedRowBuilder.setFormattedNumber(formattedNumber);
-      }
-
-      String geocodedLocation = annotatedCallLogRow.getString(geocodedLocationColumn);
-      if (!TextUtils.isEmpty(geocodedLocation)) {
-        coalescedRowBuilder.setGeocodedLocation(geocodedLocation);
-      }
-
-      String phoneAccountComponentName =
-          annotatedCallLogRow.getString(phoneAccountComponentNameColumn);
-      if (!TextUtils.isEmpty(phoneAccountComponentName)) {
-        coalescedRowBuilder.setPhoneAccountComponentName(phoneAccountComponentName);
-      }
-
-      String phoneAccountId = annotatedCallLogRow.getString(phoneAccountIdColumn);
-      if (!TextUtils.isEmpty(phoneAccountId)) {
-        coalescedRowBuilder.setPhoneAccountId(phoneAccountId);
-      }
-
-      try {
-        coalescedRowBuilder.setNumberAttributes(
-            NumberAttributes.parseFrom(annotatedCallLogRow.getBlob(numberAttributesColumn)));
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException("Unable to parse NumberAttributes bytes", e);
-      }
-
-      String voicemailCallTag = annotatedCallLogRow.getString(voicemailCallTagColumn);
-      if (!TextUtils.isEmpty(voicemailCallTag)) {
-        coalescedRowBuilder.setVoicemailCallTag(voicemailCallTag);
-      }
-
-      coalescedIdsBuilder.addCoalescedId(annotatedCallLogRow.getInt(idColumn));
-      return true;
-    }
-
-    /** Builds a {@link CoalescedRow} based on all rows merged into the current group. */
-    CoalescedRow combine() {
-      return coalescedRowBuilder.setCoalescedIds(coalescedIdsBuilder.build()).build();
-    }
-
-    /**
-     * Returns true if the given {@link AnnotatedCallLog} row can be merged into the current group.
-     */
-    private boolean canMergeRow(Cursor annotatedCallLogRow) {
-      return coalescedIdsBuilder.getCoalescedIdList().isEmpty()
-          || (samePhoneAccount(annotatedCallLogRow)
-              && sameNumberPresentation(annotatedCallLogRow)
-              && meetsCallFeatureCriteria(annotatedCallLogRow)
-              && meetsDialerPhoneNumberCriteria(annotatedCallLogRow));
-    }
-
-    private boolean samePhoneAccount(Cursor annotatedCallLogRow) {
-      PhoneAccountHandle groupPhoneAccountHandle =
-          TelecomUtil.composePhoneAccountHandle(
-              coalescedRowBuilder.getPhoneAccountComponentName(),
-              coalescedRowBuilder.getPhoneAccountId());
-      PhoneAccountHandle rowPhoneAccountHandle =
-          TelecomUtil.composePhoneAccountHandle(
-              annotatedCallLogRow.getString(phoneAccountComponentNameColumn),
-              annotatedCallLogRow.getString(phoneAccountIdColumn));
-
-      return Objects.equals(groupPhoneAccountHandle, rowPhoneAccountHandle);
-    }
-
-    private boolean sameNumberPresentation(Cursor annotatedCallLogRow) {
-      return coalescedRowBuilder.getNumberPresentation()
-          == annotatedCallLogRow.getInt(numberPresentationColumn);
-    }
-
-    private boolean meetsCallFeatureCriteria(Cursor annotatedCallLogRow) {
-      int groupFeatures = coalescedRowBuilder.getFeatures();
-      int rowFeatures = annotatedCallLogRow.getInt(featuresColumn);
-
-      // A row with FEATURES_ASSISTED_DIALING should not be combined with one without it.
-      if ((groupFeatures & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
-          != (rowFeatures & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)) {
-        return false;
-      }
-
-      // A video call should not be combined with one that is not a video call.
-      if ((groupFeatures & Calls.FEATURES_VIDEO) != (rowFeatures & Calls.FEATURES_VIDEO)) {
-        return false;
-      }
-
-      // A RTT call should not be combined with one that is not a RTT call.
-      if ((groupFeatures & Calls.FEATURES_RTT) != (rowFeatures & Calls.FEATURES_RTT)) {
-        return false;
-      }
-
-      return true;
-    }
-
-    private boolean meetsDialerPhoneNumberCriteria(Cursor annotatedCallLogRow) {
-      DialerPhoneNumber groupPhoneNumber = coalescedRowBuilder.getNumber();
-
-      DialerPhoneNumber rowPhoneNumber;
-      try {
-        byte[] rowPhoneNumberBytes = annotatedCallLogRow.getBlob(numberColumn);
-        if (rowPhoneNumberBytes == null) {
-          return false; // Empty numbers should not be combined.
-        }
-        rowPhoneNumber = DialerPhoneNumber.parseFrom(rowPhoneNumberBytes);
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException("Unable to parse DialerPhoneNumber bytes", e);
-      }
-
-      if (dialerPhoneNumberUtil == null) {
-        dialerPhoneNumberUtil = new DialerPhoneNumberUtil();
-      }
-
-      return dialerPhoneNumberUtil.isMatch(groupPhoneNumber, rowPhoneNumber);
-    }
-  }
-
-  /** A checked exception thrown when expected failure happens when coalescing is in progress. */
-  public static final class ExpectedCoalescerException extends Exception {
-    ExpectedCoalescerException(Throwable throwable) {
-      super("Expected coalescing exception", throwable);
-    }
-  }
-}
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 7b02d0d..f534068 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -41,7 +41,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.duo.Duo;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
@@ -267,7 +266,6 @@
       int countryIsoColumn = cursor.getColumnIndexOrThrow(Calls.COUNTRY_ISO);
       int durationsColumn = cursor.getColumnIndexOrThrow(Calls.DURATION);
       int dataUsageColumn = cursor.getColumnIndexOrThrow(Calls.DATA_USAGE);
-      int transcriptionColumn = cursor.getColumnIndexOrThrow(Calls.TRANSCRIPTION);
       int voicemailUriColumn = cursor.getColumnIndexOrThrow(Calls.VOICEMAIL_URI);
       int isReadColumn = cursor.getColumnIndexOrThrow(Calls.IS_READ);
       int newColumn = cursor.getColumnIndexOrThrow(Calls.NEW);
@@ -300,7 +298,6 @@
         String countryIso = cursor.getString(countryIsoColumn);
         int duration = cursor.getInt(durationsColumn);
         int dataUsage = cursor.getInt(dataUsageColumn);
-        String transcription = cursor.getString(transcriptionColumn);
         String voicemailUri = cursor.getString(voicemailUriColumn);
         int isRead = cursor.getInt(isReadColumn);
         int isNew = cursor.getInt(newColumn);
@@ -345,13 +342,10 @@
         contentValues.put(AnnotatedCallLog.FEATURES, features);
         contentValues.put(AnnotatedCallLog.DURATION, duration);
         contentValues.put(AnnotatedCallLog.DATA_USAGE, dataUsage);
-        contentValues.put(AnnotatedCallLog.TRANSCRIPTION, transcription);
         contentValues.put(AnnotatedCallLog.VOICEMAIL_URI, voicemailUri);
 
         contentValues.put(AnnotatedCallLog.CALL_MAPPING_ID, String.valueOf(date));
 
-        setTranscriptionState(cursor, contentValues);
-
         if (existingAnnotatedCallLogIds.contains(id)) {
           mutations.update(id, contentValues);
         } else {
@@ -379,14 +373,7 @@
         && ((features & Calls.FEATURES_VIDEO) != Calls.FEATURES_VIDEO);
   }
 
-  private void setTranscriptionState(Cursor cursor, ContentValues contentValues) {
-    int transcriptionStateColumn =
-        cursor.getColumnIndexOrThrow(VoicemailCompat.TRANSCRIPTION_STATE);
-    int transcriptionState = cursor.getInt(transcriptionStateColumn);
-    contentValues.put(VoicemailCompat.TRANSCRIPTION_STATE, transcriptionState);
-  }
-
-  private static final String[] PROJECTION_PRE_O =
+  private static final String[] PROJECTION =
       new String[] {
         Calls._ID,
         Calls.DATE,
@@ -397,7 +384,6 @@
         Calls.COUNTRY_ISO,
         Calls.DURATION,
         Calls.DATA_USAGE,
-        Calls.TRANSCRIPTION,
         Calls.VOICEMAIL_URI,
         Calls.IS_READ,
         Calls.NEW,
@@ -408,16 +394,8 @@
         Calls.POST_DIAL_DIGITS
       };
 
-  private static final String[] PROJECTION_O_AND_LATER;
-
-  static {
-    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_PRE_O));
-    projectionList.add(VoicemailCompat.TRANSCRIPTION_STATE);
-    PROJECTION_O_AND_LATER = projectionList.toArray(new String[projectionList.size()]);
-  }
-
   private String[] getProjection() {
-      return PROJECTION_O_AND_LATER;
+      return PROJECTION;
   }
 
   private static void handleDeletes(
diff --git a/java/com/android/dialer/calllogutils/CallLogEntryDescriptions.java b/java/com/android/dialer/calllogutils/CallLogEntryDescriptions.java
deleted file mode 100644
index 52f0cfd..0000000
--- a/java/com/android/dialer/calllogutils/CallLogEntryDescriptions.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2017 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.calllogutils;
-
-import android.content.Context;
-import android.provider.CallLog.Calls;
-import android.support.annotation.PluralsRes;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.time.Clock;
-import com.google.common.collect.Collections2;
-import java.util.List;
-
-/** Builds descriptions of call log entries for accessibility users. */
-public final class CallLogEntryDescriptions {
-
-  private CallLogEntryDescriptions() {}
-
-  /**
-   * Builds the content description for a call log entry.
-   *
-   * <p>The description is of format<br>
-   * {primary description}, {secondary description}, {phone account description}.
-   *
-   * <ul>
-   *   <li>The primary description depends on the number of calls in the entry. For example:<br>
-   *       "1 answered call from Jane Smith", or<br>
-   *       "2 calls, the latest is an answered call from Jane Smith".
-   *   <li>The secondary description is the same as the secondary text for the call log entry,
-   *       except that date/time is not abbreviated. For example:<br>
-   *       "mobile, 11 minutes ago".
-   *   <li>The phone account description is of format "on {phone_account_label}, via {number}". For
-   *       example:<br>
-   *       "on SIM 1, via 6502531234".<br>
-   *       Note that the phone account description will be empty if the device has only one SIM.
-   * </ul>
-   *
-   * <p>An example of the full description can be:<br>
-   * "2 calls, the latest is an answered call from Jane Smith, mobile, 11 minutes ago, on SIM 1, via
-   * 6502531234".
-   */
-  public static CharSequence buildDescriptionForEntry(
-      Context context, Clock clock, CoalescedRow row) {
-
-    // Build the primary description.
-    // Examples:
-    //   (1) For an entry containing only 1 call:
-    //         "1 missed call from James Smith".
-    //   (2) For entries containing multiple calls:
-    //         "2 calls, the latest is a missed call from Jame Smith".
-    CharSequence primaryDescription =
-        TextUtils.expandTemplate(
-            context
-                .getResources()
-                .getQuantityString(
-                    getPrimaryDescriptionResIdForCallType(row),
-                    row.getCoalescedIds().getCoalescedIdCount()),
-            String.valueOf(row.getCoalescedIds().getCoalescedIdCount()),
-            CallLogEntryText.buildPrimaryText(context, row));
-
-    // Build the secondary description.
-    // An example: "mobile, 11 minutes ago".
-    CharSequence secondaryDescription =
-        joinSecondaryTextComponents(
-            CallLogEntryText.buildSecondaryTextListForEntries(
-                context, clock, row, /* abbreviateDateTime = */ false));
-
-    // Build the phone account description.
-    // Note that this description can be an empty string.
-    CharSequence phoneAccountDescription = buildPhoneAccountDescription(context, row);
-
-    return TextUtils.isEmpty(phoneAccountDescription)
-        ? TextUtils.expandTemplate(
-            context
-                .getResources()
-                .getText(
-                    R.string.a11y_new_call_log_entry_full_description_without_phone_account_info),
-            primaryDescription,
-            secondaryDescription)
-        : TextUtils.expandTemplate(
-            context
-                .getResources()
-                .getText(R.string.a11y_new_call_log_entry_full_description_with_phone_account_info),
-            primaryDescription,
-            secondaryDescription,
-            phoneAccountDescription);
-  }
-
-  private static @PluralsRes int getPrimaryDescriptionResIdForCallType(CoalescedRow row) {
-    switch (row.getCallType()) {
-      case Calls.INCOMING_TYPE:
-      case Calls.ANSWERED_EXTERNALLY_TYPE:
-        return R.plurals.a11y_new_call_log_entry_answered_call;
-      case Calls.OUTGOING_TYPE:
-        return R.plurals.a11y_new_call_log_entry_outgoing_call;
-      case Calls.MISSED_TYPE:
-        return R.plurals.a11y_new_call_log_entry_missed_call;
-      case Calls.VOICEMAIL_TYPE:
-        throw new IllegalStateException("Voicemails not expected in call log");
-      case Calls.BLOCKED_TYPE:
-        return R.plurals.a11y_new_call_log_entry_blocked_call;
-      default:
-        // It is possible for users to end up with calls with unknown call types in their
-        // call history, possibly due to 3rd party call log implementations (e.g. to
-        // distinguish between rejected and missed calls). Instead of crashing, just
-        // assume that all unknown call types are missed calls.
-        return R.plurals.a11y_new_call_log_entry_missed_call;
-    }
-  }
-
-  private static CharSequence buildPhoneAccountDescription(Context context, CoalescedRow row) {
-    PhoneAccountHandle phoneAccountHandle =
-        TelecomUtil.composePhoneAccountHandle(
-            row.getPhoneAccountComponentName(), row.getPhoneAccountId());
-    if (phoneAccountHandle == null) {
-      return "";
-    }
-
-    String phoneAccountLabel = PhoneAccountUtils.getAccountLabel(context, phoneAccountHandle);
-    if (TextUtils.isEmpty(phoneAccountLabel)) {
-      return "";
-    }
-
-    if (TextUtils.isEmpty(row.getNumber().getNormalizedNumber())) {
-      return "";
-    }
-
-    return TextUtils.expandTemplate(
-        context.getResources().getText(R.string.a11y_new_call_log_entry_phone_account),
-        phoneAccountLabel,
-        PhoneNumberUtils.createTtsSpannable(row.getNumber().getNormalizedNumber()));
-  }
-
-  private static CharSequence joinSecondaryTextComponents(List<CharSequence> components) {
-    return TextUtils.join(
-        ", ", Collections2.filter(components, (text) -> !TextUtils.isEmpty(text)));
-  }
-}
diff --git a/java/com/android/dialer/calllogutils/CallLogEntryText.java b/java/com/android/dialer/calllogutils/CallLogEntryText.java
index 1ec172f..a8aedaa 100644
--- a/java/com/android/dialer/calllogutils/CallLogEntryText.java
+++ b/java/com/android/dialer/calllogutils/CallLogEntryText.java
@@ -23,7 +23,6 @@
 import com.android.dialer.calllog.model.CoalescedRow;
 import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.spam.Spam;
-import com.android.dialer.time.Clock;
 import com.google.common.base.Optional;
 import com.google.common.collect.Collections2;
 import java.util.ArrayList;
@@ -78,94 +77,7 @@
   }
 
   /**
-   * The secondary text to be shown in the main call log entry list.
-   *
-   * <p>This method first obtains a list of strings to be shown in order and then concatenates them
-   * with " • ".
-   *
-   * <p>Examples:
-   *
-   * <ul>
-   *   <li>Mobile, Duo video • 10 min ago
-   *   <li>Spam • Mobile • Now
-   *   <li>Blocked • Spam • Mobile • Now
-   * </ul>
-   *
-   * @see #buildSecondaryTextListForEntries(Context, Clock, CoalescedRow, boolean) for details.
-   */
-  public static CharSequence buildSecondaryTextForEntries(
-      Context context, Clock clock, CoalescedRow row) {
-    return joinSecondaryTextComponents(
-        buildSecondaryTextListForEntries(context, clock, row, /* abbreviateDateTime = */ true));
-  }
-
-  /**
-   * Returns a list of strings to be shown in order as the main call log entry's secondary text.
-   *
-   * <p>Rules:
-   *
-   * <ul>
-   *   <li>An emergency number: [{Date}]
-   *   <li>Number - not blocked, call - not spam:
-   *       <p>[{$Label(, Duo video|Carrier video)?|$Location}, {Date}]
-   *   <li>Number - blocked, call - not spam:
-   *       <p>["Blocked", {$Label(, Duo video|Carrier video)?|$Location}, {Date}]
-   *   <li>Number - not blocked, call - spam:
-   *       <p>["Spam", {$Label(, Duo video|Carrier video)?}, {Date}]
-   *   <li>Number - blocked, call - spam:
-   *       <p>["Blocked, Spam", {$Label(, Duo video|Carrier video)?}, {Date}]
-   * </ul>
-   *
-   * <p>Examples:
-   *
-   * <ul>
-   *   <li>["Mobile, Duo video", "Now"]
-   *   <li>["Duo video", "10 min ago"]
-   *   <li>["Mobile", "11:45 PM"]
-   *   <li>["Mobile", "Sun"]
-   *   <li>["Blocked", "Mobile, Duo video", "Now"]
-   *   <li>["Blocked", "Brooklyn, NJ", "10 min ago"]
-   *   <li>["Spam", "Mobile", "Now"]
-   *   <li>["Spam", "Now"]
-   *   <li>["Blocked", "Spam", "Mobile", "Now"]
-   *   <li>["Brooklyn, NJ", "Jan 15"]
-   * </ul>
-   *
-   * <p>See {@link CallLogDates#newCallLogTimestampLabel(Context, long, long, boolean)} for date
-   * rules.
-   */
-  static List<CharSequence> buildSecondaryTextListForEntries(
-      Context context, Clock clock, CoalescedRow row, boolean abbreviateDateTime) {
-    // For emergency numbers, the secondary text should contain only the timestamp.
-    if (row.getNumberAttributes().getIsEmergencyNumber()) {
-      return Collections.singletonList(
-          CallLogDates.newCallLogTimestampLabel(
-              context, clock.currentTimeMillis(), row.getTimestamp(), abbreviateDateTime));
-    }
-
-    List<CharSequence> components = new ArrayList<>();
-
-    if (row.getNumberAttributes().getIsBlocked()) {
-      components.add(context.getText(R.string.new_call_log_secondary_blocked));
-    }
-    if (Spam.shouldShowAsSpam(row.getNumberAttributes().getIsSpam(), row.getCallType())) {
-      components.add(context.getText(R.string.new_call_log_secondary_spam));
-    }
-
-    components.add(getNumberTypeLabel(context, row));
-
-    components.add(
-        CallLogDates.newCallLogTimestampLabel(
-            context, clock.currentTimeMillis(), row.getTimestamp(), abbreviateDateTime));
-    return components;
-  }
-
-  /**
    * The secondary text to show in the top item of the bottom sheet.
-   *
-   * <p>This is basically the same as {@link #buildSecondaryTextForEntries(Context, Clock,
-   * CoalescedRow)} except that instead of suffixing with the time of the call, we suffix with the
-   * formatted number.
    */
   public static CharSequence buildSecondaryTextForBottomSheet(Context context, CoalescedRow row) {
     /*
diff --git a/java/com/android/dialer/callstats/CallStatsAdapter.java b/java/com/android/dialer/callstats/CallStatsAdapter.java
index 1d673fc..8319484 100644
--- a/java/com/android/dialer/callstats/CallStatsAdapter.java
+++ b/java/com/android/dialer/callstats/CallStatsAdapter.java
@@ -28,7 +28,6 @@
 import android.view.ViewGroup;
 
 import com.android.dialer.R;
-import com.android.dialer.app.DialtactsActivity;
 import com.android.dialer.app.contactinfo.ContactInfoCache;
 import com.android.dialer.app.contactinfo.NumberWithCountryIso;
 import com.android.dialer.clipboard.ClipboardUtils;
diff --git a/java/com/android/dialer/commandline/CommandLineModule.java b/java/com/android/dialer/commandline/CommandLineModule.java
index c3b58d1..9c7d87a 100644
--- a/java/com/android/dialer/commandline/CommandLineModule.java
+++ b/java/com/android/dialer/commandline/CommandLineModule.java
@@ -18,7 +18,6 @@
 
 import com.android.dialer.commandline.impl.ActiveCallsCommand;
 import com.android.dialer.commandline.impl.BlockingCommand;
-import com.android.dialer.commandline.impl.CallCommand;
 import com.android.dialer.commandline.impl.Echo;
 import com.android.dialer.commandline.impl.Help;
 import com.android.dialer.commandline.impl.Version;
@@ -48,7 +47,6 @@
     private final Version version;
     private final Echo echo;
     private final BlockingCommand blockingCommand;
-    private final CallCommand callCommand;
     private final ActiveCallsCommand activeCallsCommand;
 
     @Inject
@@ -57,13 +55,11 @@
         Version version,
         Echo echo,
         BlockingCommand blockingCommand,
-        CallCommand callCommand,
         ActiveCallsCommand activeCallsCommand) {
       this.help = help;
       this.version = version;
       this.echo = echo;
       this.blockingCommand = blockingCommand;
-      this.callCommand = callCommand;
       this.activeCallsCommand = activeCallsCommand;
     }
 
@@ -72,7 +68,6 @@
       builder.addCommand("version", version);
       builder.addCommand("echo", echo);
       builder.addCommand("blocking", blockingCommand);
-      builder.addCommand("call", callCommand);
       builder.addCommand("activecalls", activeCallsCommand);
       return builder;
     }
diff --git a/java/com/android/dialer/commandline/CommandLineReceiver.java b/java/com/android/dialer/commandline/CommandLineReceiver.java
index effca2e..4624731 100644
--- a/java/com/android/dialer/commandline/CommandLineReceiver.java
+++ b/java/com/android/dialer/commandline/CommandLineReceiver.java
@@ -20,8 +20,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.text.TextUtils;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
 import com.android.dialer.commandline.Command.IllegalCommandLineArgumentException;
 import com.android.dialer.common.LogUtil;
 import com.google.common.util.concurrent.FutureCallback;
@@ -45,7 +43,7 @@
       LogUtil.e("CommandLineReceiver", "missing tag");
       return;
     }
-    if (!LogUtil.isDebugEnabled() && BuildType.get() != Type.BUGFOOD) {
+    if (!LogUtil.isDebugEnabled()) {
       LogUtil.i(outputTag, "DISABLED");
       return;
     }
diff --git a/java/com/android/dialer/commandline/impl/CallCommand.java b/java/com/android/dialer/commandline/impl/CallCommand.java
deleted file mode 100644
index d0008a3..0000000
--- a/java/com/android/dialer/commandline/impl/CallCommand.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.commandline.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.NonNull;
-import android.telecom.TelecomManager;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.precall.PreCall;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Make calls. Requires bugfood build. */
-public class CallCommand implements Command {
-
-  private final Context appContext;
-
-  @Inject
-  CallCommand(@ApplicationContext Context appContext) {
-    this.appContext = appContext;
-  }
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "make a call";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "call [flags --] number\n"
-        + "\nuse 'voicemail' to call voicemail"
-        + "\n\nflags:"
-        + "\n--direct send intent to telecom instead of pre call";
-  }
-
-  @Override
-  @SuppressWarnings("missingPermission")
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    if (BuildType.get() != Type.BUGFOOD) {
-      throw new SecurityException("Bugfood only command");
-    }
-    String number = args.expectPositional(0, "number");
-    TelecomManager telecomManager = appContext.getSystemService(TelecomManager.class);
-    CallIntentBuilder callIntentBuilder;
-    if ("voicemail".equals(number)) {
-      callIntentBuilder =
-          CallIntentBuilder.forVoicemail(CallInitiationType.Type.DIALPAD);
-    } else {
-      callIntentBuilder = new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD);
-    }
-    if (args.getBoolean("direct", false)) {
-      Intent intent = callIntentBuilder.build();
-      appContext
-          .getSystemService(TelecomManager.class)
-          .placeCall(intent.getData(), intent.getExtras());
-    } else {
-      Intent intent = PreCall.getIntent(appContext, callIntentBuilder);
-      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-      appContext.startActivity(intent);
-    }
-    return Futures.immediateFuture("Calling " + number);
-  }
-}
diff --git a/java/com/android/dialer/common/Assert.java b/java/com/android/dialer/common/Assert.java
index 2d7f199..312b1e5 100644
--- a/java/com/android/dialer/common/Assert.java
+++ b/java/com/android/dialer/common/Assert.java
@@ -24,12 +24,6 @@
 /** Assertions which will result in program termination unless disabled by flags. */
 public class Assert {
 
-  private static boolean areThreadAssertsEnabled = true;
-
-  public static void setAreThreadAssertsEnabled(boolean areThreadAssertsEnabled) {
-    Assert.areThreadAssertsEnabled = areThreadAssertsEnabled;
-  }
-
   /**
    * Called when a truly exceptional case occurs.
    *
@@ -182,9 +176,6 @@
    * @throws IllegalStateException if called on a background thread
    */
   public static void isMainThread(@Nullable String messageTemplate, Object... args) {
-    if (!areThreadAssertsEnabled) {
-      return;
-    }
     checkState(Looper.getMainLooper().equals(Looper.myLooper()), messageTemplate, args);
   }
 
@@ -205,9 +196,6 @@
    * @throws IllegalStateException if called on the main thread
    */
   public static void isWorkerThread(@Nullable String messageTemplate, Object... args) {
-    if (!areThreadAssertsEnabled) {
-      return;
-    }
     checkState(!Looper.getMainLooper().equals(Looper.myLooper()), messageTemplate, args);
   }
 
diff --git a/java/com/android/dialer/configprovider/AndroidManifest.xml b/java/com/android/dialer/configprovider/AndroidManifest.xml
deleted file mode 100644
index 7729971..0000000
--- a/java/com/android/dialer/configprovider/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.configprovider">
-
-  <application>
-    <service android:name=".SharedPrefConfigProvider$Service"/>
-  </application>
-
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/configprovider/ConfigProvider.java b/java/com/android/dialer/configprovider/ConfigProvider.java
deleted file mode 100644
index 886a69e..0000000
--- a/java/com/android/dialer/configprovider/ConfigProvider.java
+++ /dev/null
@@ -1,27 +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.configprovider;
-
-/** Gets config values from the container application. */
-public interface ConfigProvider {
-
-  String getString(String key, String defaultValue);
-
-  long getLong(String key, long defaultValue);
-
-  boolean getBoolean(String key, boolean defaultValue);
-}
diff --git a/java/com/android/dialer/configprovider/ConfigProviderComponent.java b/java/com/android/dialer/configprovider/ConfigProviderComponent.java
deleted file mode 100644
index 5b5afd7..0000000
--- a/java/com/android/dialer/configprovider/ConfigProviderComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 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.configprovider;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Dagger component to provide a {@link ConfigProvider}. */
-@Subcomponent
-public abstract class ConfigProviderComponent {
-
-  @NonNull
-  public abstract ConfigProvider getConfigProvider();
-
-  public static ConfigProviderComponent get(Context context) {
-    return ((ConfigProviderComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .configProviderComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    ConfigProviderComponent configProviderComponent();
-  }
-}
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
deleted file mode 100644
index c68312f..0000000
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2017 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.configprovider;
-
-import android.app.IntentService;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.storage.Unencrypted;
-import com.android.dialer.strictmode.StrictModeUtils;
-import javax.inject.Inject;
-
-/**
- * {@link ConfigProvider} which uses a shared preferences file.
- *
- * <p>Config flags can be written using adb (with root access), for example:
- *
- * <pre>
- *   adb root
- *   adb shell am startservice -n \
- *     'com.android.dialer/.configprovider.SharedPrefConfigProvider\$Service' \
- *     --ez boolean_flag_name flag_value
- * </pre>
- *
- * <p>(For longs use --el and for strings use --es.)
- *
- * <p>Flags can be viewed with:
- *
- * <pre>
- *   adb shell cat \
- *     /data/user_de/0/com.android.dialer/shared_prefs/com.android.dialer_preferences.xml
- * </pre>
- */
-public class SharedPrefConfigProvider implements ConfigProvider {
-  private static final String PREF_PREFIX = "config_provider_prefs_";
-
-  private final SharedPreferences sharedPreferences;
-
-  @Inject
-  SharedPrefConfigProvider(@Unencrypted SharedPreferences sharedPreferences) {
-    this.sharedPreferences = sharedPreferences;
-  }
-
-  /** Service to write values into {@link SharedPrefConfigProvider} using adb. */
-  public static class Service extends IntentService {
-
-    public Service() {
-      super("SharedPrefConfigProvider.Service");
-    }
-
-    @Override
-    protected void onHandleIntent(@Nullable Intent intent) {
-      if (intent == null || intent.getExtras() == null || intent.getExtras().size() != 1) {
-        LogUtil.w("SharedPrefConfigProvider.Service.onHandleIntent", "must set exactly one extra");
-        return;
-      }
-      String key = intent.getExtras().keySet().iterator().next();
-      Object value = intent.getExtras().get(key);
-      put(key, value);
-    }
-
-    private void put(String key, Object value) {
-      Editor editor = getSharedPrefs(getApplicationContext()).edit();
-      String prefixedKey = PREF_PREFIX + key;
-      if (value instanceof Boolean) {
-        editor.putBoolean(prefixedKey, (Boolean) value);
-      } else if (value instanceof Long) {
-        editor.putLong(prefixedKey, (Long) value);
-      } else if (value instanceof String) {
-        editor.putString(prefixedKey, (String) value);
-      } else {
-        throw Assert.createAssertionFailException("unsupported extra type: " + value.getClass());
-      }
-      editor.apply();
-    }
-  }
-
-  /** Set a boolean config value. */
-  public void putBoolean(String key, boolean value) {
-    sharedPreferences.edit().putBoolean(PREF_PREFIX + key, value).apply();
-  }
-
-  public void putLong(String key, long value) {
-    sharedPreferences.edit().putLong(PREF_PREFIX + key, value).apply();
-  }
-
-  public void putString(String key, String value) {
-    sharedPreferences.edit().putString(PREF_PREFIX + key, value).apply();
-  }
-
-  @Override
-  public String getString(String key, String defaultValue) {
-    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-    return StrictModeUtils.bypass(
-        () -> sharedPreferences.getString(PREF_PREFIX + key, defaultValue));
-  }
-
-  @Override
-  public long getLong(String key, long defaultValue) {
-    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-    return StrictModeUtils.bypass(() -> sharedPreferences.getLong(PREF_PREFIX + key, defaultValue));
-  }
-
-  @Override
-  public boolean getBoolean(String key, boolean defaultValue) {
-    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-    return StrictModeUtils.bypass(
-        () -> sharedPreferences.getBoolean(PREF_PREFIX + key, defaultValue));
-  }
-
-  private static SharedPreferences getSharedPrefs(Context appContext) {
-    return StorageComponent.get(appContext).unencryptedSharedPrefs();
-  }
-}
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java b/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java
deleted file mode 100644
index 81bed19..0000000
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 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.configprovider;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.storage.StorageModule;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Dagger module providing {@link ConfigProvider} based on shared preferences. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module(includes = StorageModule.class)
-public abstract class SharedPrefConfigProviderModule {
-
-  private SharedPrefConfigProviderModule() {}
-
-  @Binds
-  @Singleton
-  abstract ConfigProvider to(SharedPrefConfigProvider impl);
-}
diff --git a/java/com/android/dialer/constants/ScheduledJobIds.java b/java/com/android/dialer/constants/ScheduledJobIds.java
index 1a852d0..69070e2 100644
--- a/java/com/android/dialer/constants/ScheduledJobIds.java
+++ b/java/com/android/dialer/constants/ScheduledJobIds.java
@@ -29,14 +29,6 @@
  * <p>Do not change any existing IDs.
  */
 public final class ScheduledJobIds {
-  public static final int SPAM_JOB_WIFI = 50;
-  public static final int SPAM_JOB_ANY_NETWORK = 51;
-
-  /** Spam job type including all spam job IDs. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({SPAM_JOB_WIFI, SPAM_JOB_ANY_NETWORK})
-  public @interface SpamJobType {}
-
   // This job refreshes dynamic launcher shortcuts.
   public static final int SHORTCUT_PERIODIC_JOB = 100;
 
@@ -47,10 +39,4 @@
   public static final int VVM_TRANSCRIPTION_BACKFILL_JOB = 204;
   public static final int VVM_NOTIFICATION_JOB = 205;
   public static final int VVM_TRANSCRIPTION_RATING_JOB = 206;
-
-  public static final int VOIP_REGISTRATION = 300;
-
-  // Job Ids from 10_000 to 10_100 should be reserved for proto upload jobs.
-  public static final int PROTO_UPLOAD_JOB_MIN_ID = 10_000;
-  public static final int PROTO_UPLOAD_JOB_MAX_ID = 10_100;
 }
diff --git a/java/com/android/dialer/contactphoto/ContactPhotoManager.java b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
index 353c1ee..67f4371 100644
--- a/java/com/android/dialer/contactphoto/ContactPhotoManager.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
@@ -40,7 +40,6 @@
   public static final float SCALE_DEFAULT = 1.0f;
 
   public static final float OFFSET_DEFAULT = 0.0f;
-  public static final boolean IS_CIRCULAR_DEFAULT = false;
   // TODO: Use LogUtil.isVerboseEnabled for DEBUG branches instead of a lint check.
   // LINT.DoNotSubmitIf(true)
   static final boolean DEBUG = false;
@@ -55,62 +54,10 @@
   private static final String OFFSET_PARAM_KEY = "offset";
   private static final String IS_CIRCULAR_PARAM_KEY = "is_circular";
   private static final String DEFAULT_IMAGE_URI_SCHEME = "defaultimage";
-  private static final Uri DEFAULT_IMAGE_URI = Uri.parse(DEFAULT_IMAGE_URI_SCHEME + "://");
   public static final DefaultImageProvider DEFAULT_AVATAR = new LetterTileDefaultImageProvider();
   private static ContactPhotoManager instance;
 
   /**
-   * Given a {@link DefaultImageRequest}, returns an Uri that can be used to request a letter tile
-   * avatar when passed to the {@link ContactPhotoManager}. The internal implementation of this uri
-   * is not guaranteed to remain the same across application versions, so the actual uri should
-   * never be persisted in long-term storage and reused.
-   *
-   * @param request A {@link DefaultImageRequest} object with the fields configured to return a
-   * @return A Uri that when later passed to the {@link ContactPhotoManager} via {@link
-   *     #loadPhoto(ImageView, Uri, int, boolean, boolean, DefaultImageRequest)}, can be used to
-   *     request a default contact image, drawn as a letter tile using the parameters as configured
-   *     in the provided {@link DefaultImageRequest}
-   */
-  public static Uri getDefaultAvatarUriForContact(DefaultImageRequest request) {
-    final Builder builder = DEFAULT_IMAGE_URI.buildUpon();
-    if (request != null) {
-      if (!TextUtils.isEmpty(request.displayName)) {
-        builder.appendQueryParameter(DISPLAY_NAME_PARAM_KEY, request.displayName);
-      }
-      if (!TextUtils.isEmpty(request.identifier)) {
-        builder.appendQueryParameter(IDENTIFIER_PARAM_KEY, request.identifier);
-      }
-      if (request.contactType != LetterTileDrawable.TYPE_DEFAULT) {
-        builder.appendQueryParameter(CONTACT_TYPE_PARAM_KEY, String.valueOf(request.contactType));
-      }
-      if (request.scale != SCALE_DEFAULT) {
-        builder.appendQueryParameter(SCALE_PARAM_KEY, String.valueOf(request.scale));
-      }
-      if (request.offset != OFFSET_DEFAULT) {
-        builder.appendQueryParameter(OFFSET_PARAM_KEY, String.valueOf(request.offset));
-      }
-      if (request.isCircular != IS_CIRCULAR_DEFAULT) {
-        builder.appendQueryParameter(IS_CIRCULAR_PARAM_KEY, String.valueOf(request.isCircular));
-      }
-    }
-    return builder.build();
-  }
-
-  /**
-   * Adds a business contact type encoded fragment to the URL. Used to ensure photo URLS from Nearby
-   * Places can be identified as business photo URLs rather than URLs for personal contact photos.
-   *
-   * @param photoUrl The photo URL to modify.
-   * @return URL with the contact type parameter added and set to TYPE_BUSINESS.
-   */
-  public static String appendBusinessContactType(String photoUrl) {
-    Uri uri = Uri.parse(photoUrl);
-    Builder builder = uri.buildUpon();
-    builder.encodedFragment(String.valueOf(LetterTileDrawable.TYPE_BUSINESS));
-    return builder.build().toString();
-  }
-
-  /**
    * Removes the contact type information stored in the photo URI encoded fragment.
    *
    * @param photoUri The photo URI to remove the contact type from.
diff --git a/java/com/android/dialer/database/DialerDatabaseHelper.java b/java/com/android/dialer/database/DialerDatabaseHelper.java
index 8c1c1cc..c9ba376 100644
--- a/java/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/java/com/android/dialer/database/DialerDatabaseHelper.java
@@ -41,7 +41,6 @@
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.DialerFutureSerializer;
 import com.android.dialer.common.database.Selection;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.resources.R;
 import com.android.dialer.smartdial.util.SmartDialNameMatcher;
 import com.android.dialer.smartdial.util.SmartDialPrefix;
@@ -654,13 +653,8 @@
     final SharedPreferences databaseLastUpdateSharedPref =
         context.getSharedPreferences(DATABASE_LAST_CREATED_SHARED_PREF, Context.MODE_PRIVATE);
 
-    long defaultLastUpdateMillis =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(DEFAULT_LAST_UPDATED_CONFIG_KEY, 0);
-
     long sharedPrefLastUpdateMillis =
-        databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, defaultLastUpdateMillis);
+        databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, 0);
 
     final String lastUpdateMillis = String.valueOf(forceUpdate ? 0 : sharedPrefLastUpdateMillis);
 
diff --git a/java/com/android/dialer/main/impl/AndroidManifest.xml b/java/com/android/dialer/main/impl/AndroidManifest.xml
index 55eea5d..743e6f8 100644
--- a/java/com/android/dialer/main/impl/AndroidManifest.xml
+++ b/java/com/android/dialer/main/impl/AndroidManifest.xml
@@ -111,14 +111,5 @@
 
     </activity>
 
-    <!-- This is the historical name of the "main" activity and is kept as an alias for backwards
-         compatibility in case older apps refer to the activity in this way. -->
-
-    <!--  {@deprecated Use .MainActivity instead.} -->
-    <activity-alias
-        android:name="com.android.dialer.app.DialtactsActivity"
-        android:exported="true"
-        android:targetActivity=".MainActivity"/>
-
   </application>
 </manifest>
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index c7f2ae6..c261967 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -47,42 +47,19 @@
    */
   private ShowBlockReportSpamDialogReceiver showBlockReportSpamDialogReceiver;
 
-  public static Intent getShowCallLogIntent(Context context) {
-    return getShowTabIntent(context, TabIndex.CALL_LOG);
-  }
-
-  /** Returns intent that will open MainActivity to the specified tab. */
-  public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
-    return OldMainActivityPeer.getShowTabIntent(context, tabIndex);
-  }
-
-  /**
-   * @param context Context of the application package implementing MainActivity class.
-   * @return intent for MainActivity.class
-   */
-  public static Intent getIntent(Context context) {
-    return new Intent(context, MainActivity.class)
-        .setAction(Intent.ACTION_VIEW)
-        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-  }
-
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     setTheme(R.style.MainActivityTheme);
     super.onCreate(savedInstanceState);
     LogUtil.enterBlock("MainActivity.onCreate");
-    // If peer was set by the super, don't reset it.
-    activePeer = getNewPeer();
+
+    activePeer = new OldMainActivityPeer(this);
     activePeer.onActivityCreate(savedInstanceState);
 
     showBlockReportSpamDialogReceiver =
         new ShowBlockReportSpamDialogReceiver(getSupportFragmentManager());
   }
 
-  protected MainActivityPeer getNewPeer() {
-    return new OldMainActivityPeer(this);
-  }
-
   @Override
   protected void onNewIntent(Intent intent) {
     super.onNewIntent(intent);
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 515f11b..fb8b08c 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -561,14 +561,6 @@
     }
   }
 
-  public void addOnSearchShowListener(OnSearchShowListener listener) {
-    onSearchShowListenerList.add(listener);
-  }
-
-  public void removeOnSearchShowListener(OnSearchShowListener listener) {
-    onSearchShowListenerList.remove(listener);
-  }
-
   private void notifyListenersOnSearchOpen() {
     for (OnSearchShowListener listener : onSearchShowListenerList) {
       listener.onSearchOpen();
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index ebc4845..6ccfbaa 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -46,14 +46,11 @@
 import android.text.TextUtils;
 import android.text.method.LinkMovementMethod;
 import android.view.ActionMode;
-import android.view.DragEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
 import com.android.dialer.R;
-import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.app.MainComponent;
 import com.android.dialer.app.calllog.CallLogAdapter;
 import com.android.dialer.app.calllog.CallLogFragment;
@@ -61,12 +58,6 @@
 import com.android.dialer.app.calllog.CallLogNotificationsService;
 import com.android.dialer.app.calllog.IntentProvider;
 import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.app.list.DragDropController;
-import com.android.dialer.app.list.OldSpeedDialFragment;
-import com.android.dialer.app.list.OnDragDropListener;
-import com.android.dialer.app.list.OnListFragmentScrolledListener;
-import com.android.dialer.app.list.PhoneFavoriteSquareTileView;
-import com.android.dialer.app.list.RemoveView;
 import com.android.dialer.callcomposer.CallComposerActivity;
 import com.android.dialer.calldetails.OldCallDetailsActivity;
 import com.android.dialer.callintent.CallIntentBuilder;
@@ -87,7 +78,6 @@
 import com.android.dialer.dialpadview.DialpadFragment.OnDialpadQueryChangedListener;
 import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.i18n.LocaleUtils;
-import com.android.dialer.interactions.PhoneNumberInteraction;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.logging.ScreenEvent;
@@ -98,7 +88,6 @@
 import com.android.dialer.main.impl.bottomnav.MissedCallCountObserver;
 import com.android.dialer.main.impl.toolbar.MainToolbar;
 import com.android.dialer.postcall.PostCall;
-import com.android.dialer.precall.PreCall;
 import com.android.dialer.promotion.Promotion;
 import com.android.dialer.promotion.Promotion.PromotionType;
 import com.android.dialer.promotion.PromotionComponent;
@@ -109,7 +98,6 @@
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.theme.base.Theme;
 import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.TransactionSafeActivity;
 import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
@@ -156,11 +144,8 @@
   // Call Log
   private MainCallLogHost callLogHostInterface;
   private MainCallLogFragmentListener callLogFragmentListener;
-  private MainOnListFragmentScrolledListener onListFragmentScrolledListener;
 
   // Speed Dial
-  private MainOnPhoneNumberPickerActionListener onPhoneNumberPickerActionListener;
-  private MainOldSpeedDialFragmentHost oldSpeedDialFragmentHost;
   private MainSpeedDialFragmentHost speedDialFragmentHost;
 
   /** Language the device was in last time {@link #onSaveInstanceState(Bundle)} was called. */
@@ -176,14 +161,6 @@
   private UiListener<Integer> missedCallObserverUiListener;
   private View bottomSheet;
 
-  public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
-    Intent intent = new Intent(context, MainActivity.class);
-    intent.setAction(ACTION_SHOW_TAB);
-    intent.putExtra(EXTRA_SHOW_TAB, tabIndex);
-    // TODO(calderwoodra): Do we need to set some URI data here
-    return intent;
-  }
-
   static boolean isShowTabIntent(Intent intent) {
     return ACTION_SHOW_TAB.equals(intent.getAction()) && intent.hasExtra(EXTRA_SHOW_TAB);
   }
@@ -291,17 +268,6 @@
         new MainCallLogAdapterOnActionModeStateChangedListener();
     callLogHostInterface = new MainCallLogHost(searchController, fab);
 
-    onListFragmentScrolledListener = new MainOnListFragmentScrolledListener(snackbarContainer);
-    onPhoneNumberPickerActionListener = new MainOnPhoneNumberPickerActionListener(activity);
-    oldSpeedDialFragmentHost =
-        new MainOldSpeedDialFragmentHost(
-            activity,
-            activity.findViewById(R.id.root_layout),
-            bottomNav,
-            activity.findViewById(R.id.contact_tile_drag_shadow_overlay),
-            activity.findViewById(R.id.remove_view),
-            activity.findViewById(R.id.search_view_container),
-            toolbar);
     speedDialFragmentHost =
         new MainSpeedDialFragmentHost(
             toolbar,
@@ -612,12 +578,6 @@
       return (T) callLogHostInterface;
     } else if (callbackInterface.isInstance(callLogFragmentListener)) {
       return (T) callLogFragmentListener;
-    } else if (callbackInterface.isInstance(onListFragmentScrolledListener)) {
-      return (T) onListFragmentScrolledListener;
-    } else if (callbackInterface.isInstance(onPhoneNumberPickerActionListener)) {
-      return (T) onPhoneNumberPickerActionListener;
-    } else if (callbackInterface.isInstance(oldSpeedDialFragmentHost)) {
-      return (T) oldSpeedDialFragmentHost;
     } else if (callbackInterface.isInstance(searchController)) {
       return (T) searchController;
     } else if (callbackInterface.isInstance(speedDialFragmentHost)) {
@@ -1016,157 +976,6 @@
     }
   }
 
-  /** @see OnListFragmentScrolledListener */
-  private static final class MainOnListFragmentScrolledListener
-      implements OnListFragmentScrolledListener {
-
-    private final View parentLayout;
-
-    MainOnListFragmentScrolledListener(View parentLayout) {
-      this.parentLayout = parentLayout;
-    }
-
-    @Override
-    public void onListFragmentScrollStateChange(int scrollState) {
-      DialerUtils.hideInputMethod(parentLayout);
-    }
-
-    @Override
-    public void onListFragmentScroll(
-        int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-      // TODO: No-op for now. This should eventually show/hide the actionBar based on
-      // interactions with the ListsFragments.
-    }
-  }
-
-  /** @see OnPhoneNumberPickerActionListener */
-  private static final class MainOnPhoneNumberPickerActionListener
-      implements OnPhoneNumberPickerActionListener {
-
-    private final TransactionSafeActivity activity;
-
-    MainOnPhoneNumberPickerActionListener(TransactionSafeActivity activity) {
-      this.activity = activity;
-    }
-
-    @Override
-    public void onPickDataUri(
-        Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-      PhoneNumberInteraction.startInteractionForPhoneCall(
-          activity, dataUri, isVideoCall, callSpecificAppData);
-    }
-
-    @Override
-    public void onPickPhoneNumber(
-        String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-      if (phoneNumber == null) {
-        // Invalid phone number, but let the call go through so that InCallUI can show
-        // an error message.
-        phoneNumber = "";
-      }
-      PreCall.start(
-          activity,
-          new CallIntentBuilder(phoneNumber, callSpecificAppData)
-              .setIsVideoCall(isVideoCall)
-              .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
-    }
-
-    @Override
-    public void onHomeInActionBarSelected() {
-      // TODO(calderwoodra): investigate if we need to exit search here
-      // PhoneNumberPickerFragment#onOptionsItemSelected
-    }
-  }
-
-  /**
-   * Handles the callbacks for {@link OldSpeedDialFragment} and drag/drop logic for drag to remove.
-   *
-   * @see OldSpeedDialFragment.HostInterface
-   * @see OnDragDropListener
-   */
-  private static final class MainOldSpeedDialFragmentHost
-      implements OldSpeedDialFragment.HostInterface, OnDragDropListener {
-
-    private final Context context;
-    private final View rootLayout;
-    private final BottomNavBar bottomNavBar;
-    private final ImageView dragShadowOverlay;
-    private final RemoveView removeView;
-    private final View removeViewContent;
-    private final View searchViewContainer;
-    private final MainToolbar toolbar;
-
-    MainOldSpeedDialFragmentHost(
-        Context context,
-        View rootLayout,
-        BottomNavBar bottomNavBar,
-        ImageView dragShadowOverlay,
-        RemoveView removeView,
-        View searchViewContainer,
-        MainToolbar toolbar) {
-      this.context = context;
-      this.rootLayout = rootLayout;
-      this.bottomNavBar = bottomNavBar;
-      this.dragShadowOverlay = dragShadowOverlay;
-      this.removeView = removeView;
-      this.searchViewContainer = searchViewContainer;
-      this.toolbar = toolbar;
-      removeViewContent = removeView.findViewById(R.id.remove_view_content);
-    }
-
-    @Override
-    public void setDragDropController(DragDropController dragDropController) {
-      removeView.setDragDropController(dragDropController);
-      rootLayout.setOnDragListener(
-          (v, event) -> {
-            if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
-              dragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
-            }
-            return true;
-          });
-    }
-
-    @Override
-    public void showAllContactsTab() {
-      bottomNavBar.selectTab(TabIndex.CONTACTS);
-      Logger.get(context).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CONTACTS);
-    }
-
-    @Override
-    public ImageView getDragShadowOverlay() {
-      return dragShadowOverlay;
-    }
-
-    @Override
-    public void setHasFrequents(boolean hasFrequents) {
-      toolbar.showClearFrequents(hasFrequents);
-    }
-
-    @Override
-    public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-      showRemoveView(true);
-    }
-
-    @Override
-    public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {}
-
-    @Override
-    public void onDragFinished(int x, int y) {
-      showRemoveView(false);
-    }
-
-    @Override
-    public void onDroppedOnRemove() {}
-
-    private void showRemoveView(boolean show) {
-      if (show) {
-        AnimUtils.crossFadeViews(removeViewContent, searchViewContainer, 300);
-      } else {
-        AnimUtils.crossFadeViews(searchViewContainer, removeViewContent, 300);
-      }
-    }
-  }
-
   /**
    * Handles the callbacks for {@link SpeedDialFragment}.
    *
diff --git a/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java b/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
index 4cba2a4..a2eca33 100644
--- a/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
+++ b/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
@@ -29,8 +29,6 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import com.android.dialer.common.Assert;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.theme.base.ThemeComponent;
 
 /** Navigation item in a bottom nav. */
 final class BottomNavItem extends LinearLayout {
@@ -74,15 +72,7 @@
     } else {
       String countString = String.format(Integer.toString(count));
 
-      boolean use99PlusCount =
-          ConfigProviderComponent.get(getContext())
-              .getConfigProvider()
-              .getBoolean("use_99_plus", false);
-      boolean use9Plus = !use99PlusCount;
-
-      if (use99PlusCount && count > 99) {
-        countString = getContext().getString(R.string.bottom_nav_count_99_plus);
-      } else if (use9Plus && count > 9) {
+      if (count > 9) {
         countString = getContext().getString(R.string.bottom_nav_count_9_plus);
       }
       notificationBadge.setVisibility(View.VISIBLE);
diff --git a/java/com/android/dialer/metrics/Metrics.java b/java/com/android/dialer/metrics/Metrics.java
index f4ca4d0..0a4a4da 100644
--- a/java/com/android/dialer/metrics/Metrics.java
+++ b/java/com/android/dialer/metrics/Metrics.java
@@ -23,7 +23,6 @@
 public interface Metrics {
 
   // Events related to refreshing the annotated call log.
-  String NEW_CALL_LOG_COALESCE = "NewCallLog.Coalesce";
   String ANNOTATED_CALL_LOG_NOT_DIRTY = "RefreshAnnotatedCallLogReceiver.NotDirty";
   String ANNOTATED_CALL_LOG_CHANGES_NEEDED = "RefreshAnnotatedCallLogReceiver.ChangesNeeded";
   String ANNOTATED_LOG_NO_CHANGES_NEEDED = "RefreshAnnotatedCallLogReceiver.NoChangesNeeded";
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index da217c8..f620347 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -28,7 +28,6 @@
 import android.text.TextUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.google.auto.value.AutoValue;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -110,11 +109,6 @@
   /** Check whether Cequint Caller ID provider package is available and enabled. */
   @AnyThread
   public static synchronized boolean isCequintCallerIdEnabled(@NonNull Context context) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_CALLER_ID_ENABLED, true)) {
-      return false;
-    }
     if (!hasAlreadyCheckedCequintCallerIdPackage) {
       hasAlreadyCheckedCequintCallerIdPackage = true;
 
diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java
index 0268937..3aa3344 100644
--- a/java/com/android/dialer/oem/MotorolaUtils.java
+++ b/java/com/android/dialer/oem/MotorolaUtils.java
@@ -22,23 +22,12 @@
 import android.telephony.TelephonyManager;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.PackageUtils;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /** Util class for Motorola OEM devices. */
 public class MotorolaUtils {
 
-  private static final String CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED =
-      "hd_codec_blinking_icon_when_connecting_enabled";
-  private static final String CONFIG_HD_CODEC_SHOW_ICON_IN_NOTIFICATION_ENABLED =
-      "hd_codec_show_icon_in_notification_enabled";
-  private static final String CONFIG_WIFI_CALL_SHOW_ICON_IN_CALL_LOG_ENABLED =
-      "wifi_call_show_icon_in_call_log_enabled";
-
-  @VisibleForTesting
-  static final String CONFIG_DISABLE_PHONE_NUMBER_FORMATTING = "disable_phone_number_formatting";
-
   // This is used to check if a Motorola device supports HD voice call feature, which comes from
   // system feature setting.
   private static final String HD_CALL_FEATRURE = "com.motorola.software.sprint.hd_call";
@@ -79,24 +68,15 @@
   }
 
   public static boolean shouldBlinkHdIconWhenConnectingCall(Context context) {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED, true)
-        && isSupportingSprintHdCodec(context);
+    return isSupportingSprintHdCodec(context);
   }
 
   public static boolean shouldShowHdIconInNotification(Context context) {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_HD_CODEC_SHOW_ICON_IN_NOTIFICATION_ENABLED, true)
-        && isSupportingSprintHdCodec(context);
+    return isSupportingSprintHdCodec(context);
   }
 
   public static boolean shouldShowWifiIconInCallLog(Context context, int features) {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_WIFI_CALL_SHOW_ICON_IN_CALL_LOG_ENABLED, true)
-        && (features & Calls.FEATURES_WIFI) == Calls.FEATURES_WIFI
+    return (features & Calls.FEATURES_WIFI) == Calls.FEATURES_WIFI
         && isSupportingSprintWifiCall(context);
   }
 
@@ -105,10 +85,7 @@
       return disablePhoneNumberFormattingForTest;
     }
 
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_DISABLE_PHONE_NUMBER_FORMATTING, true)
-        && context.getResources().getBoolean(R.bool.motorola_disable_phone_number_formatting);
+    return context.getResources().getBoolean(R.bool.motorola_disable_phone_number_formatting);
   }
 
   /**
diff --git a/java/com/android/dialer/persistentlog/PersistentLogger.java b/java/com/android/dialer/persistentlog/PersistentLogger.java
index 608602e..847625e 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogger.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogger.java
@@ -26,7 +26,6 @@
 import android.support.v4.os.UserManagerCompat;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -178,7 +177,7 @@
   }
 
   private static byte[] buildTextLog(String tag, String string) {
-    Calendar c = StrictModeUtils.bypass(() -> Calendar.getInstance());
+    Calendar c = Calendar.getInstance();
     return String.format("%tm-%td %tH:%tM:%tS.%tL - %s - %s", c, c, c, c, c, c, tag, string)
         .getBytes(StandardCharsets.UTF_8);
   }
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java
index 7f2d91a..5b2ce7e 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java
@@ -34,7 +34,6 @@
 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.configprovider.ConfigProvider;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.phonelookup.PhoneLookup;
@@ -73,7 +72,6 @@
   private final SharedPreferences sharedPreferences;
   private final ListeningExecutorService backgroundExecutorService;
   private final ListeningExecutorService lightweightExecutorService;
-  private final ConfigProvider configProvider;
   private final MissingPermissionsOperations missingPermissionsOperations;
 
   @Nullable private Long currentLastTimestampProcessed;
@@ -84,13 +82,11 @@
       @Unencrypted SharedPreferences sharedPreferences,
       @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
       @LightweightExecutor ListeningExecutorService lightweightExecutorService,
-      ConfigProvider configProvider,
       MissingPermissionsOperations missingPermissionsOperations) {
     this.appContext = appContext;
     this.sharedPreferences = sharedPreferences;
     this.backgroundExecutorService = backgroundExecutorService;
     this.lightweightExecutorService = lightweightExecutorService;
-    this.configProvider = configProvider;
     this.missingPermissionsOperations = missingPermissionsOperations;
   }
 
@@ -971,6 +967,6 @@
    * if there are too many we fall back to querying CP2 at render time.
    */
   private long getMaxSupportedInvalidNumbers() {
-    return configProvider.getLong("cp2_phone_lookup_max_invalid_numbers", 5);
+    return 5;
   }
 }
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
index 237ae5e..a777233 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
@@ -26,11 +26,7 @@
 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.concurrent.Annotations.NonUiSerial;
-import com.android.dialer.configprovider.ConfigProvider;
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonelookup.PhoneLookup;
 import com.android.dialer.phonelookup.PhoneLookupInfo;
 import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info;
@@ -43,9 +39,6 @@
 import com.google.common.util.concurrent.ListeningExecutorService;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 import java.util.function.Predicate;
 import javax.inject.Inject;
 
@@ -63,25 +56,19 @@
       "cp2_extended_directory_phone_lookup_timout_millis";
 
   private final Context appContext;
-  private final ConfigProvider configProvider;
   private final ListeningExecutorService backgroundExecutorService;
   private final ListeningExecutorService lightweightExecutorService;
   private final MissingPermissionsOperations missingPermissionsOperations;
-  private final ScheduledExecutorService scheduledExecutorService;
 
   @Inject
   Cp2ExtendedDirectoryPhoneLookup(
       @ApplicationContext Context appContext,
       @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
       @LightweightExecutor ListeningExecutorService lightweightExecutorService,
-      @NonUiSerial ScheduledExecutorService scheduledExecutorService,
-      ConfigProvider configProvider,
       MissingPermissionsOperations missingPermissionsOperations) {
     this.appContext = appContext;
     this.backgroundExecutorService = backgroundExecutorService;
     this.lightweightExecutorService = lightweightExecutorService;
-    this.scheduledExecutorService = scheduledExecutorService;
-    this.configProvider = configProvider;
     this.missingPermissionsOperations = missingPermissionsOperations;
   }
 
@@ -91,32 +78,10 @@
       return Futures.immediateFuture(Cp2Info.getDefaultInstance());
     }
 
-    ListenableFuture<Cp2Info> cp2InfoFuture =
-        Futures.transformAsync(
+    return Futures.transformAsync(
             queryCp2ForExtendedDirectoryIds(),
             directoryIds -> queryCp2ForDirectoryContact(dialerPhoneNumber, directoryIds),
             lightweightExecutorService);
-
-    long timeoutMillis =
-        configProvider.getLong(CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT_MILLIS, Long.MAX_VALUE);
-
-    // Do not pass Long.MAX_VALUE to Futures.withTimeout as it will cause the internal
-    // ScheduledExecutorService for timing to keep waiting even after "cp2InfoFuture" is done.
-    // Do not pass 0 or a negative value to Futures.withTimeout either as it will cause the timeout
-    // event to be triggered immediately.
-    return timeoutMillis == Long.MAX_VALUE
-        ? cp2InfoFuture
-        : Futures.catching(
-            Futures.withTimeout(
-                cp2InfoFuture, timeoutMillis, TimeUnit.MILLISECONDS, scheduledExecutorService),
-            TimeoutException.class,
-            unused -> {
-              LogUtil.w("Cp2ExtendedDirectoryPhoneLookup.lookup", "Time out!");
-              Logger.get(appContext)
-                  .logImpression(DialerImpression.Type.CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT);
-              return Cp2Info.getDefaultInstance();
-            },
-            lightweightExecutorService);
   }
 
   private ListenableFuture<List<Long>> queryCp2ForExtendedDirectoryIds() {
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index 69ee376..3fc9a7a 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -31,8 +31,6 @@
 import android.view.View.OnClickListener;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
@@ -100,11 +98,7 @@
           activity.startActivity(PostCallActivity.newIntent(activity, number, isRcsPostCall));
         };
 
-    int durationMs =
-        (int)
-            ConfigProviderComponent.get(activity)
-                .getConfigProvider()
-                .getLong("post_call_prompt_duration_ms", 8_000);
+    int durationMs = 8_000;
     activeSnackbar =
         Snackbar.make(rootView, message, durationMs)
             .setAction(actionText, onClickListener)
@@ -227,13 +221,11 @@
     boolean isSensitiveNumber = SensitivePhoneNumbers.getInstance().isSensitiveNumber(context,
             number, INVALID_SUBSCRIPTION_ID);
 
-    ConfigProvider binding = ConfigProviderComponent.get(context).getConfigProvider();
     return disconnectTimeMillis != -1
         && connectTimeMillis != -1
         && isSimReady(context)
-        && binding.getLong("postcall_last_call_threshold", 30_000) > timeSinceDisconnect
-        && (connectTimeMillis == 0
-            || binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis)
+        && 30_000 > timeSinceDisconnect
+        && (connectTimeMillis == 0 || 35_000 > callDurationMillis)
         && getPhoneNumber(context) != null
         && callDisconnectedByUser
         && !isSensitiveNumber;
@@ -253,9 +245,7 @@
   }
 
   private static boolean isEnabled(Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_post_call_prod", true);
+    return true;
   }
 
   private static boolean isSimReady(Context context) {
diff --git a/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java b/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java
index 60245ee..9e3f231 100644
--- a/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java
+++ b/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java
@@ -27,8 +27,6 @@
 import com.android.dialer.callintent.CallInitiationType.Type;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
@@ -43,8 +41,6 @@
  */
 public class LaunchPreCallActivity extends Activity {
 
-  public static final String ACTION_LAUNCH_PRE_CALL = "com.android.dialer.LAUNCH_PRE_CALL";
-
   public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "phone_account_handle";
 
   public static final String EXTRA_IS_VIDEO_CALL = "is_video_call";
@@ -69,8 +65,6 @@
     super.onCreate(savedInstanceState);
     Logger.get(this).logImpression(DialerImpression.Type.PRECALL_INITIATED_EXTERNAL);
 
-    ConfigProvider configProvider =
-        ConfigProviderComponent.get(getApplicationContext()).getConfigProvider();
     Intent intent = getIntent();
     CallIntentBuilder builder = new CallIntentBuilder(intent.getData(), Type.EXTERNAL_INITIATION);
 
@@ -83,10 +77,7 @@
         .setPhoneAccountHandle(phoneAccountHandle)
         .setIsVideoCall(intent.getBooleanExtra(EXTRA_IS_VIDEO_CALL, false))
         .setCallSubject(intent.getStringExtra(EXTRA_CALL_SUBJECT))
-        .setAllowAssistedDial(
-            intent.getBooleanExtra(
-                EXTRA_ALLOW_ASSISTED_DIAL,
-                configProvider.getBoolean("assisted_dialing_default_precall_state", false)));
+        .setAllowAssistedDial(intent.getBooleanExtra(EXTRA_ALLOW_ASSISTED_DIAL, false));
     filterExtras(intent.getExtras(), builder);
     PreCall.start(this, builder);
     finish();
diff --git a/java/com/android/dialer/precall/impl/AssistedDialAction.java b/java/com/android/dialer/precall/impl/AssistedDialAction.java
index 0e38231..44b7255 100644
--- a/java/com/android/dialer/precall/impl/AssistedDialAction.java
+++ b/java/com/android/dialer/precall/impl/AssistedDialAction.java
@@ -19,8 +19,6 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.telecom.PhoneAccount;
-import android.telephony.SubscriptionInfo;
-import android.telephony.TelephonyManager;
 import com.android.dialer.assisteddialing.AssistedDialingMediator;
 import com.android.dialer.assisteddialing.ConcreteCreator;
 import com.android.dialer.assisteddialing.TransformationInfo;
@@ -28,11 +26,8 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallCoordinator;
-import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.CallUtil;
 import java.util.Optional;
 
@@ -51,8 +46,7 @@
     }
 
     AssistedDialingMediator assistedDialingMediator =
-        ConcreteCreator.createNewAssistedDialingMediator(
-            getAssistedDialingTelephonyManager(context, builder), context);
+            ConcreteCreator.createNewAssistedDialingMediator();
 
     // Checks the platform is N+ and meets other pre-flight checks.
     if (!assistedDialingMediator.isPlatformEligible()) {
@@ -78,45 +72,6 @@
     }
   }
 
-  /**
-   * A convenience method to return the proper TelephonyManager in possible multi-sim environments.
-   */
-  private TelephonyManager getAssistedDialingTelephonyManager(
-      Context context, CallIntentBuilder builder) {
-
-    ConfigProvider configProvider = ConfigProviderComponent.get(context).getConfigProvider();
-    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
-    // None of this will be required in the framework because the PhoneAccountHandle
-    // is already mapped to the request in the TelecomConnection.
-    if (builder.getPhoneAccountHandle() == null) {
-      return telephonyManager;
-    }
-
-    if (!configProvider.getBoolean("assisted_dialing_dual_sim_enabled", false)) {
-      return telephonyManager;
-    }
-
-    com.google.common.base.Optional<SubscriptionInfo> subscriptionInfo =
-        TelecomUtil.getSubscriptionInfo(context, builder.getPhoneAccountHandle());
-    if (!subscriptionInfo.isPresent()) {
-      LogUtil.i(
-          "AssistedDialAction.getAssistedDialingTelephonyManager", "subcriptionInfo was absent.");
-      return telephonyManager;
-    }
-    TelephonyManager pinnedtelephonyManager =
-        telephonyManager.createForSubscriptionId(subscriptionInfo.get().getSubscriptionId());
-    if (pinnedtelephonyManager == null) {
-      LogUtil.i(
-          "AssistedDialAction.getAssistedDialingTelephonyManager",
-          "createForSubscriptionId pinnedtelephonyManager was null.");
-      return telephonyManager;
-    }
-    LogUtil.i(
-        "AssistedDialAction.getAssistedDialingTelephonyManager",
-        "createForPhoneAccountHandle using pinnedtelephonyManager from subscription id.");
-    return pinnedtelephonyManager;
-  }
-
   @Override
   public void runWithUi(PreCallCoordinator coordinator) {
     runWithoutUi(coordinator.getActivity(), coordinator.getBuilder());
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 042f585..9114742 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -32,7 +32,6 @@
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.logging.DialerImpression.Type;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCallAction;
@@ -64,12 +63,6 @@
 
   @Override
   public boolean requiresUi(Context context, CallIntentBuilder builder) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("precall_calling_account_selector_enabled", true)) {
-      return false;
-    }
-
     if (builder.getPhoneAccountHandle() != null) {
       return false;
     }
diff --git a/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java b/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java
index 825375d..b3fb4d5 100644
--- a/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java
+++ b/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java
@@ -19,7 +19,6 @@
 import android.content.Context;
 import android.telephony.PhoneNumberUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.precall.impl.MalformedNumberRectifier.MalformedNumberHandler;
 import com.google.common.base.Optional;
 
@@ -37,11 +36,6 @@
 
   @Override
   public Optional<String> handle(Context context, String number) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("uk_region_prefix_in_international_format_fix_enabled", true)) {
-      return Optional.absent();
-    }
     if (!PhoneNumberUtils.normalizeNumber(number).startsWith(MALFORMED_PREFIX)) {
       return Optional.absent();
     }
diff --git a/java/com/android/dialer/preferredsim/PreferredAccountUtil.java b/java/com/android/dialer/preferredsim/PreferredAccountUtil.java
index 9b7c56b..1fd8a9c 100644
--- a/java/com/android/dialer/preferredsim/PreferredAccountUtil.java
+++ b/java/com/android/dialer/preferredsim/PreferredAccountUtil.java
@@ -24,7 +24,6 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 
@@ -72,12 +71,9 @@
    * com.android.contacts.common.model.AccountTypeManager#getAccountTypes(boolean)}. External
    * accounts are not supported.
    */
-  public static ImmutableSet<String> getValidAccountTypes(Context context) {
+  public static ImmutableSet<String> getValidAccountTypes() {
     return ImmutableSet.copyOf(
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getString(
-                "preferred_sim_valid_account_types",
+            (
                 "com.google;"
                     + "com.osp.app.signin;"
                     + "com.android.exchange;"
diff --git a/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java b/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java
index ffd98f4..3ef08e5 100644
--- a/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java
+++ b/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java
@@ -44,7 +44,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.logging.DialerImpression.Type;
 import com.android.dialer.logging.Logger;
@@ -264,8 +263,7 @@
       if (cursor == null) {
         return Optional.absent();
       }
-      ImmutableSet<String> validAccountTypes =
-          PreferredAccountUtil.getValidAccountTypes(appContext);
+      ImmutableSet<String> validAccountTypes = PreferredAccountUtil.getValidAccountTypes();
       String result = null;
       while (cursor.moveToNext()) {
         Optional<String> accountType =
@@ -357,11 +355,6 @@
   @WorkerThread
   private static boolean isPreferredSimEnabled(Context context) {
     Assert.isWorkerThread();
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("preferred_sim_enabled", true)) {
-      return false;
-    }
 
     Intent quickContactIntent = getQuickContactIntent();
     ResolveInfo resolveInfo =
diff --git a/java/com/android/dialer/promotion/impl/DuoPromotion.java b/java/com/android/dialer/promotion/impl/DuoPromotion.java
deleted file mode 100644
index 750e4a1..0000000
--- a/java/com/android/dialer/promotion/impl/DuoPromotion.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.promotion.impl;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.promotion.Promotion;
-import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
-import com.android.dialer.storage.Unencrypted;
-import java.util.concurrent.TimeUnit;
-import javax.inject.Inject;
-
-/** Duo promotion. */
-final class DuoPromotion implements Promotion {
-  private static final String SHARED_PREF_KEY_DUO_DISCLOSURE_DISMISSED = "duo_disclosure_dismissed";
-
-  private static final String SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS =
-      "duo_disclosure_first_viewed_time_ms";
-  @VisibleForTesting static final String FLAG_SHOW_DUO_DISCLOSURE = "show_duo_disclosure";
-
-  @VisibleForTesting
-  static final String FLAG_DUO_DISCLOSURE_AUTO_DISMISS_AFTER_VIEWED_TIME_MILLIS =
-      "show_duo_disclosure_auto_dismiss_after_viewed_time_millis";
-
-  private final Context appContext;
-  private final ConfigProvider configProvider;
-  private final Duo duo;
-  private final SharedPreferences sharedPreferences;
-
-  @Inject
-  DuoPromotion(
-      @ApplicationContext Context context,
-      ConfigProvider configProvider,
-      Duo duo,
-      @Unencrypted SharedPreferences sharedPreferences) {
-    this.appContext = context;
-    this.configProvider = configProvider;
-    this.duo = duo;
-    this.sharedPreferences = sharedPreferences;
-  }
-
-  @Override
-  public int getType() {
-    return PromotionType.CARD;
-  }
-
-  @Override
-  public boolean isEligibleToBeShown() {
-    if (!configProvider.getBoolean(FLAG_SHOW_DUO_DISCLOSURE, false)) {
-      return false;
-    }
-    // Don't show the Duo disclosure card if
-    // (1) Duo integration is not enabled on the device, or
-    // (2) Duo is not activated.
-    if (!duo.isEnabled(appContext) || !duo.isActivated(appContext)) {
-      return false;
-    }
-
-    // Don't show the Duo disclosure card if it has been dismissed.
-    if (sharedPreferences.getBoolean(SHARED_PREF_KEY_DUO_DISCLOSURE_DISMISSED, false)) {
-      return false;
-    }
-
-    // At this point, Duo is activated and the disclosure card hasn't been dismissed.
-    // We should show the card if it has never been viewed by the user.
-    if (!sharedPreferences.contains(SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS)) {
-      return true;
-    }
-
-    // At this point, the card has been viewed but not dismissed.
-    // We should not show the card if it has been viewed for more than 1 day.
-    long duoDisclosureFirstViewTimeMillis =
-        sharedPreferences.getLong(SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS, 0);
-    return System.currentTimeMillis() - duoDisclosureFirstViewTimeMillis
-        <= configProvider.getLong(
-            FLAG_DUO_DISCLOSURE_AUTO_DISMISS_AFTER_VIEWED_TIME_MILLIS, TimeUnit.DAYS.toMillis(1));
-  }
-
-  @Override
-  public void onViewed() {
-    if (!sharedPreferences.contains(SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS)) {
-      sharedPreferences
-          .edit()
-          .putLong(
-              SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS, System.currentTimeMillis())
-          .apply();
-    }
-  }
-
-  @Override
-  public void dismiss() {
-    sharedPreferences.edit().putBoolean(SHARED_PREF_KEY_DUO_DISCLOSURE_DISMISSED, true).apply();
-  }
-
-  @Override
-  public CharSequence getTitle() {
-    return appContext.getString(R.string.duo_disclosure_title);
-  }
-
-  @Override
-  public CharSequence getDetails() {
-    return new ContentWithLearnMoreSpanner(appContext)
-        .create(
-            appContext.getString(R.string.duo_disclosure_details),
-            configProvider.getString(
-                "duo_disclosure_link_full_url",
-                "http://support.google.com/pixelphone/?p=dialer_duo"));
-  }
-
-  @Override
-  public int getIconRes() {
-    return duo.getLogo();
-  }
-}
diff --git a/java/com/android/dialer/promotion/impl/PromotionModule.java b/java/com/android/dialer/promotion/impl/PromotionModule.java
index f090878..5750b5b 100644
--- a/java/com/android/dialer/promotion/impl/PromotionModule.java
+++ b/java/com/android/dialer/promotion/impl/PromotionModule.java
@@ -30,7 +30,7 @@
 
   @Provides
   static ImmutableList<Promotion> providePriorityPromotionList(
-      RttPromotion rttPromotion, DuoPromotion duoPromotion) {
-    return ImmutableList.of(rttPromotion, duoPromotion);
+      RttPromotion rttPromotion) {
+    return ImmutableList.of(rttPromotion);
   }
 }
diff --git a/java/com/android/dialer/promotion/impl/RttPromotion.java b/java/com/android/dialer/promotion/impl/RttPromotion.java
index f0f7f54..1a2df1c 100644
--- a/java/com/android/dialer/promotion/impl/RttPromotion.java
+++ b/java/com/android/dialer/promotion/impl/RttPromotion.java
@@ -20,7 +20,6 @@
 import android.content.SharedPreferences;
 import android.support.annotation.DrawableRes;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.promotion.Promotion;
 import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
@@ -34,7 +33,6 @@
   private static final String SHARED_PREFERENCE_KEY_DISMISSED = "rtt_promotion_dismissed";
   private final Context appContext;
   private final SharedPreferences sharedPreferences;
-  private final ConfigProvider configProvider;
 
   @Override
   public int getType() {
@@ -44,11 +42,9 @@
   @Inject
   RttPromotion(
       @ApplicationContext Context context,
-      @Unencrypted SharedPreferences sharedPreferences,
-      ConfigProvider configProvider) {
+      @Unencrypted SharedPreferences sharedPreferences) {
     appContext = context;
     this.sharedPreferences = sharedPreferences;
-    this.configProvider = configProvider;
   }
 
   @Override
@@ -67,9 +63,7 @@
     return new ContentWithLearnMoreSpanner(appContext)
         .create(
             appContext.getString(R.string.rtt_promotion_details),
-            configProvider.getString(
-                "rtt_promo_learn_more_link_full_url",
-                "http://support.google.com/pixelphone/?p=dialer_rtt"));
+                "http://support.google.com/pixelphone/?p=dialer_rtt");
   }
 
   @Override
diff --git a/java/com/android/dialer/shortcuts/CallContactActivity.java b/java/com/android/dialer/shortcuts/CallContactActivity.java
index 87f6fce..a6bd836 100644
--- a/java/com/android/dialer/shortcuts/CallContactActivity.java
+++ b/java/com/android/dialer/shortcuts/CallContactActivity.java
@@ -45,14 +45,9 @@
     super.onCreate(savedInstanceState);
 
     if ("com.android.dialer.shortcuts.CALL_CONTACT".equals(getIntent().getAction())) {
-      if (Shortcuts.areDynamicShortcutsEnabled(this)) {
         LogUtil.i("CallContactActivity.onCreate", "shortcut clicked");
         contactUri = getIntent().getData();
         makeCall();
-      } else {
-        LogUtil.i("CallContactActivity.onCreate", "dynamic shortcuts disabled");
-        finish();
-      }
     }
   }
 
diff --git a/java/com/android/dialer/shortcuts/ShortcutRefresher.java b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
index 810fd8b..dad4a12 100644
--- a/java/com/android/dialer/shortcuts/ShortcutRefresher.java
+++ b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
@@ -38,10 +38,6 @@
     Assert.isMainThread();
     Assert.isNotNull(context);
 
-    if (!Shortcuts.areDynamicShortcutsEnabled(context)) {
-      return;
-    }
-
     DialerExecutorComponent.get(context)
         .dialerExecutorFactory()
         .createNonUiTaskBuilder(new RefreshWorker(context))
diff --git a/java/com/android/dialer/shortcuts/Shortcuts.java b/java/com/android/dialer/shortcuts/Shortcuts.java
deleted file mode 100644
index d08e344..0000000
--- a/java/com/android/dialer/shortcuts/Shortcuts.java
+++ /dev/null
@@ -1,36 +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.shortcuts;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-
-/** Checks if dynamic shortcuts should be enabled. */
-public class Shortcuts {
-
-  /** Key for boolean config value which determines whether or not to enable dynamic shortcuts. */
-  private static final String DYNAMIC_SHORTCUTS_ENABLED = "dynamic_shortcuts_enabled";
-
-  static boolean areDynamicShortcutsEnabled(@NonNull Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(DYNAMIC_SHORTCUTS_ENABLED, true);
-  }
-
-  private Shortcuts() {}
-}
diff --git a/java/com/android/dialer/shortcuts/ShortcutsJobScheduler.java b/java/com/android/dialer/shortcuts/ShortcutsJobScheduler.java
deleted file mode 100644
index 4cfc436..0000000
--- a/java/com/android/dialer/shortcuts/ShortcutsJobScheduler.java
+++ /dev/null
@@ -1,48 +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.shortcuts;
-
-import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-
-/**
- * Schedules dialer shortcut jobs.
- *
- * <p>A {@link ConfigProvider} value controls whether the jobs which creates shortcuts should be
- * scheduled or cancelled.
- */
-public class ShortcutsJobScheduler {
-
-  @MainThread
-  public static void scheduleAllJobs(@NonNull Context context) {
-    LogUtil.enterBlock("ShortcutsJobScheduler.scheduleAllJobs");
-    Assert.isMainThread();
-
-    if (Shortcuts.areDynamicShortcutsEnabled(context)) {
-      LogUtil.i("ShortcutsJobScheduler.scheduleAllJobs", "enabling shortcuts");
-
-      PeriodicJobService.schedulePeriodicJob(context);
-    } else {
-      LogUtil.i("ShortcutsJobScheduler.scheduleAllJobs", "disabling shortcuts");
-
-      PeriodicJobService.cancelJob(context);
-    }
-  }
-}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorImpl.java b/java/com/android/dialer/simulator/impl/SimulatorImpl.java
index ee910ba..9519ba8 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorImpl.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorImpl.java
@@ -18,8 +18,6 @@
 
 import android.support.v7.app.AppCompatActivity;
 import android.view.ActionProvider;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.simulator.Simulator;
 import javax.inject.Inject;
@@ -34,7 +32,7 @@
 
   @Override
   public boolean shouldShow() {
-    return BuildType.get() == Type.BUGFOOD || LogUtil.isDebugEnabled();
+    return LogUtil.isDebugEnabled();
   }
 
   @Override
diff --git a/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java b/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java
index 0296ace..721336d 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java
@@ -30,7 +30,6 @@
 import android.telephony.TelephonyManager;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
@@ -67,23 +66,19 @@
   public static void register(@NonNull Context context) {
     LogUtil.enterBlock("SimulatorSimCallManager.register");
     Assert.isNotNull(context);
-    StrictModeUtils.bypass(
-        () -> {
-          TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
-          telecomManager.registerPhoneAccount(buildSimCallManagerAccount(context));
-          telecomManager.registerPhoneAccount(buildVideoProviderAccount(context));
-        });
+
+    TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+    telecomManager.registerPhoneAccount(buildSimCallManagerAccount(context));
+    telecomManager.registerPhoneAccount(buildVideoProviderAccount(context));
   }
 
   public static void unregister(@NonNull Context context) {
     LogUtil.enterBlock("SimulatorSimCallManager.unregister");
     Assert.isNotNull(context);
-    StrictModeUtils.bypass(
-        () -> {
-          TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
-          telecomManager.unregisterPhoneAccount(getSimCallManagerHandle(context));
-          telecomManager.unregisterPhoneAccount(getVideoProviderHandle(context));
-        });
+
+    TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+    telecomManager.unregisterPhoneAccount(getSimCallManagerHandle(context));
+    telecomManager.unregisterPhoneAccount(getVideoProviderHandle(context));
   }
 
   @NonNull
diff --git a/java/com/android/dialer/smartdial/util/SmartDialPrefix.java b/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
index 7fef881..82bc420 100644
--- a/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
@@ -566,15 +566,6 @@
     return result;
   }
 
-  /**
-   * Returns whether the user is in a region that uses Nanp format based on the sim location.
-   *
-   * @return Whether user is in Nanp region.
-   */
-  public static boolean getUserInNanpRegion() {
-    return userInNanpRegion;
-  }
-
   /** Explicitly setting the user Nanp to the given boolean */
   @VisibleForTesting
   public static void setUserInNanpRegion(boolean userInNanpRegion) {
diff --git a/java/com/android/dialer/spam/promo/AndroidManifest.xml b/java/com/android/dialer/spam/promo/AndroidManifest.xml
deleted file mode 100644
index 7d766b8..0000000
--- a/java/com/android/dialer/spam/promo/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  ~ 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
-  -->
-
-<manifest
-    package="com.android.dialer.spam.promo">
-</manifest>
diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoDialogFragment.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoDialogFragment.java
deleted file mode 100644
index dbefc52..0000000
--- a/java/com/android/dialer/spam/promo/SpamBlockingPromoDialogFragment.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.spam.promo;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v7.app.AlertDialog;
-
-/** Dialog for spam blocking on-boarding promotion. */
-public class SpamBlockingPromoDialogFragment extends DialogFragment {
-
-  public static final String SPAM_BLOCKING_PROMO_DIALOG_TAG = "SpamBlockingPromoDialog";
-
-  /** Called when dialog positive button is pressed. */
-  protected OnEnableListener positiveListener;
-
-  /** Called when the dialog is dismissed. */
-  @Nullable protected DialogInterface.OnDismissListener dismissListener;
-
-  public static DialogFragment newInstance(
-      OnEnableListener positiveListener,
-      @Nullable DialogInterface.OnDismissListener dismissListener) {
-    SpamBlockingPromoDialogFragment fragment = new SpamBlockingPromoDialogFragment();
-    fragment.positiveListener = positiveListener;
-    fragment.dismissListener = dismissListener;
-    return fragment;
-  }
-
-  @Override
-  public void onDismiss(DialogInterface dialog) {
-    if (dismissListener != null) {
-      dismissListener.onDismiss(dialog);
-    }
-    super.onDismiss(dialog);
-  }
-
-  @Override
-  public void onPause() {
-    // The dialog is dismissed onPause, i.e. rotation.
-    dismiss();
-    dismissListener = null;
-    positiveListener = null;
-    super.onPause();
-  }
-
-  @Override
-  public Dialog onCreateDialog(Bundle savedInstanceState) {
-    super.onCreateDialog(savedInstanceState);
-    // Return the newly created dialog
-    return new AlertDialog.Builder(getActivity())
-        .setCancelable(true)
-        .setTitle(R.string.spam_blocking_promo_title)
-        .setMessage(R.string.spam_blocking_promo_text)
-        .setNegativeButton(
-            R.string.spam_blocking_promo_action_dismiss, (dialog, which) -> dismiss())
-        .setPositiveButton(
-            R.string.spam_blocking_promo_action_filter_spam,
-            (dialog, which) -> {
-              dismiss();
-              positiveListener.onClick();
-            })
-        .create();
-  }
-
-  /** Positive listener for spam blocking promotion dialog. */
-  public interface OnEnableListener {
-    /** Called when user clicks on positive button in the spam blocking promo dialog. */
-    void onClick();
-  }
-}
diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
deleted file mode 100644
index cf67a79..0000000
--- a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * 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.spam.promo;
-
-import android.annotation.SuppressLint;
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.DialogInterface.OnDismissListener;
-import android.graphics.drawable.Icon;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.FragmentManager;
-import android.view.View;
-import android.widget.Toast;
-
-import com.android.dialer.R;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.notification.DialerNotificationManager;
-import com.android.dialer.notification.NotificationChannelId;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoDialogFragment.OnEnableListener;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.theme.base.ThemeComponent;
-
-/** Helper class for showing spam blocking on-boarding promotions. */
-public class SpamBlockingPromoHelper {
-
-  static final String SPAM_BLOCKING_PROMO_PERIOD_MILLIS = "spam_blocking_promo_period_millis";
-  static final String SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS = "spam_blocking_promo_last_show_millis";
-  public static final String ENABLE_SPAM_BLOCKING_PROMO = "enable_spam_blocking_promo";
-  public static final String ENABLE_AFTER_CALL_SPAM_BLOCKING_PROMO =
-      "enable_after_call_spam_blocking_promo";
-
-  private final Context context;
-  private final SpamSettings spamSettings;
-
-  public SpamBlockingPromoHelper(Context context, SpamSettings spamSettings) {
-    this.context = context;
-    this.spamSettings = spamSettings;
-  }
-
-  /**
-   * Returns true if we should show a spam blocking promo.
-   *
-   * <p>Should show spam blocking promo only when all of the following criteria meet 1. Spam
-   * blocking promo is enabled by flag. 2. Spam blocking setting is available. 3. Spam blocking
-   * setting is not yet enabled. 4. Time since last spam blocking promo exceeds the threshold.
-   *
-   * @return true if we should show a spam blocking promo.
-   */
-  public boolean shouldShowSpamBlockingPromo() {
-    if (!ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(ENABLE_SPAM_BLOCKING_PROMO, false)
-        || !spamSettings.isSpamEnabled()
-        || !spamSettings.isSpamBlockingEnabledByFlag()
-        || spamSettings.isSpamBlockingEnabledByUser()) {
-      return false;
-    }
-
-    long lastShowMillis =
-        StorageComponent.get(context)
-            .unencryptedSharedPrefs()
-            .getLong(SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS, 0);
-    long showPeriodMillis =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(SPAM_BLOCKING_PROMO_PERIOD_MILLIS, Long.MAX_VALUE);
-    return lastShowMillis == 0 || System.currentTimeMillis() - lastShowMillis > showPeriodMillis;
-  }
-
-  /* Returns true if we should show a spam blocking promo in after call notification scenario. */
-  public boolean shouldShowAfterCallSpamBlockingPromo() {
-    return shouldShowSpamBlockingPromo()
-        && ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(ENABLE_AFTER_CALL_SPAM_BLOCKING_PROMO, false);
-  }
-
-  /**
-   * Shows a spam blocking promo dialog.
-   *
-   * @param fragmentManager the fragment manager to show the dialog.
-   * @param onEnableListener the listener called when enable button is clicked.
-   * @param onDismissListener the listener called when the dialog is dismissed.
-   */
-  public void showSpamBlockingPromoDialog(
-      FragmentManager fragmentManager,
-      OnEnableListener onEnableListener,
-      OnDismissListener onDismissListener) {
-    updateLastShowSpamTimestamp();
-    SpamBlockingPromoDialogFragment.newInstance(onEnableListener, onDismissListener)
-        .show(fragmentManager, SpamBlockingPromoDialogFragment.SPAM_BLOCKING_PROMO_DIALOG_TAG);
-  }
-
-  private void updateLastShowSpamTimestamp() {
-    StorageComponent.get(context)
-        .unencryptedSharedPrefs()
-        .edit()
-        .putLong(SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS, System.currentTimeMillis())
-        .apply();
-  }
-
-  /**
-   * Shows a modify setting on complete snackbar and a link to redirect to setting page.
-   *
-   * @param view the view to attach on-complete notice snackbar.
-   * @param success whether the modify setting operation succceeds.
-   */
-  public void showModifySettingOnCompleteSnackbar(View view, boolean success) {
-    String snackBarText =
-        success
-            ? context.getString(R.string.spam_blocking_settings_enable_complete_text)
-            : context.getString(R.string.spam_blocking_settings_enable_error_text);
-    Snackbar.make(view, snackBarText, Snackbar.LENGTH_LONG)
-        .setAction(
-            R.string.spam_blocking_setting_prompt,
-            v -> context.startActivity(spamSettings.getSpamBlockingSettingIntent(context)))
-        .setActionTextColor(
-            context.getResources().getColor(R.color.dialer_snackbar_action_text_color))
-        .show();
-  }
-
-  /** Shows a modify setting on complete toast message. */
-  public void showModifySettingOnCompleteToast(boolean success) {
-    String toastText =
-        success
-            ? context.getString(R.string.spam_blocking_settings_enable_complete_text)
-            : context.getString(R.string.spam_blocking_settings_enable_error_text);
-    Toast.makeText(context, toastText, Toast.LENGTH_LONG).show();
-  }
-
-  /**
-   * Shows a spam blocking promo notification.
-   *
-   * @param notificationTag a string identifier for this notification.
-   * @param notificationId an identifier for this notification.
-   * @param contentIntent pending intent to be sent when notification is clicked.
-   * @param actionIntent pending intent to be sent when enable-spam-blocking button is clicked.
-   */
-  public void showSpamBlockingPromoNotification(
-      String notificationTag,
-      int notificationId,
-      PendingIntent contentIntent,
-      PendingIntent actionIntent) {
-    updateLastShowSpamTimestamp();
-    Logger.get(context)
-        .logImpression(DialerImpression.Type.SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN);
-    DialerNotificationManager.notify(
-        context,
-        notificationTag,
-        notificationId,
-        getSpamBlockingPromoNotification(contentIntent, actionIntent));
-  }
-
-  /**
-   * Builds a spam blocking promo notification with given intents.
-   *
-   * @param contentIntent pending intent to be sent when notification is clicked.
-   * @param actionIntent pending intent to be sent when enable-spam-blocking button is clicked.
-   */
-  @SuppressLint("NewApi")
-  private Notification getSpamBlockingPromoNotification(
-      PendingIntent contentIntent, PendingIntent actionIntent) {
-    Notification.Builder builder =
-        new Builder(context)
-            .setContentIntent(contentIntent)
-            .setCategory(Notification.CATEGORY_STATUS)
-            .setPriority(Notification.PRIORITY_DEFAULT)
-            .setColor(ThemeComponent.get(context).theme().getColorPrimary())
-            .setSmallIcon(R.drawable.quantum_ic_call_vd_theme_24)
-            .setLargeIcon(Icon.createWithResource(context, R.drawable.spam_blocking_promo_icon))
-            .setContentText(context.getString(R.string.spam_blocking_promo_text))
-            .setStyle(
-                new Notification.BigTextStyle()
-                    .bigText(context.getString(R.string.spam_blocking_promo_text)))
-            .addAction(
-                new Notification.Action.Builder(
-                        R.drawable.quantum_ic_block_vd_theme_24,
-                        context.getString(R.string.spam_blocking_promo_action_filter_spam),
-                        actionIntent)
-                    .build())
-            .setContentTitle(context.getString(R.string.spam_blocking_promo_title))
-            .setChannelId(NotificationChannelId.DEFAULT);
-    return builder.build();
-  }
-}
-
diff --git a/java/com/android/dialer/spam/promo/res/drawable/spam_blocking_promo_icon.xml b/java/com/android/dialer/spam/promo/res/drawable/spam_blocking_promo_icon.xml
deleted file mode 100644
index ecb0279..0000000
--- a/java/com/android/dialer/spam/promo/res/drawable/spam_blocking_promo_icon.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ 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
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <item>
-    <shape android:shape="oval">
-      <!-- Note: Ensure matches incallui and blocking colors. -->
-      <solid android:color="#A52714"/>
-      <size
-          android:height="@android:dimen/notification_large_icon_height"
-          android:width="@android:dimen/notification_large_icon_width"/>
-    </shape>
-  </item>
-
-  <item
-      android:drawable="@drawable/quantum_ic_report_vd_theme_24"
-      android:gravity="center"/>
-
-</layer-list>
diff --git a/java/com/android/dialer/spam/promo/res/values-af/strings.xml b/java/com/android/dialer/spam/promo/res/values-af/strings.xml
deleted file mode 100644
index 37a210f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-af/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtreer alle verdagte strooiposoproepe?</string>
-  <string name="spam_blocking_promo_text">Oproepe soos die een wat jy pas geblokkeer het, sal jou nie meer
-      steur nie</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtreer strooipos</string>
-  <string name="spam_blocking_promo_action_dismiss">Weier</string>
-  <string name="spam_blocking_setting_prompt">Instellings</string>
-  <string name="spam_blocking_settings_enable_error_text">Sukkel om strooiposfiltrering aan te skakel</string>
-  <string name="spam_blocking_settings_disable_error_text">Sukkel om strooiposfiltrering af te skakel</string>
-  <string name="spam_blocking_settings_enable_complete_text">Strooiposfiltrering is aangeskakel</string>
-  <string name="spam_blocking_settings_disable_complete_text">Strooiposfiltrering is afgeskakel</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-am/strings.xml b/java/com/android/dialer/spam/promo/res/values-am/strings.xml
deleted file mode 100644
index 46ff084..0000000
--- a/java/com/android/dialer/spam/promo/res/values-am/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ሁሉንም የተጠረጠሩ አይፈለጌ ጥሪዎችን አጣራ?</string>
-  <string name="spam_blocking_promo_text">አሁን እንዳገዱት ጥሪ አይነት ጥሪዎች ከእንግዲህ ወዲያ አይረብሹዎትም</string>
-  <string name="spam_blocking_promo_action_filter_spam">አይፈለጌ መልዕክትን አጣራ</string>
-  <string name="spam_blocking_promo_action_dismiss">አሰናብት</string>
-  <string name="spam_blocking_setting_prompt">ቅንብሮች</string>
-  <string name="spam_blocking_settings_enable_error_text">አይፈለጌ ማጣራትን በማብራት ላይ ችግር</string>
-  <string name="spam_blocking_settings_disable_error_text">አይፈለጌ ማጣራትን በማብራት ላይ ችግር</string>
-  <string name="spam_blocking_settings_enable_complete_text">የአይፈለጌ መልዕክት ማጣሪያ በርቷል</string>
-  <string name="spam_blocking_settings_disable_complete_text">የአይፈለጌ መልዕክት ማጣሪያ ጠፍቷል</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ar/strings.xml b/java/com/android/dialer/spam/promo/res/values-ar/strings.xml
deleted file mode 100644
index 7e3705f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ar/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">هل تريد تصفية كل المكالمات غير المرغوب فيها؟</string>
-  <string name="spam_blocking_promo_text">لن تزعجك أي مكالمات مثل التي حظرتها لتوك
-      بعد الآن</string>
-  <string name="spam_blocking_promo_action_filter_spam">تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_promo_action_dismiss">رفض</string>
-  <string name="spam_blocking_setting_prompt">الإعدادات</string>
-  <string name="spam_blocking_settings_enable_error_text">حدثت مشكلة أثناء تفعيل تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_settings_disable_error_text">حدثت مشكلة أثناء إيقاف تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_settings_enable_complete_text">تم تفعيل تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_settings_disable_complete_text">تم إيقاف تصفية المحتوى غير المرغوب فيه</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-az/strings.xml b/java/com/android/dialer/spam/promo/res/values-az/strings.xml
deleted file mode 100644
index 8faa2fa..0000000
--- a/java/com/android/dialer/spam/promo/res/values-az/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Bütün şübhəli spam zəngləri filtrlənsin?</string>
-  <string name="spam_blocking_promo_text">Yeni blok etdiyiniz kimi zənglər artıq Sizi narahat etməyəcək</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spamı Filtrləyin</string>
-  <string name="spam_blocking_promo_action_dismiss">Kənarlaşdırın</string>
-  <string name="spam_blocking_setting_prompt">Ayarlar</string>
-  <string name="spam_blocking_settings_enable_error_text">Spam filterini aktiv edərkən xəta baş verdi</string>
-  <string name="spam_blocking_settings_disable_error_text">Spam filterini deaktiv edərkən xəta baş verdi</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filteri aktivdir</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtri deaktivdir</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/spam/promo/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 8f62f39..0000000
--- a/java/com/android/dialer/spam/promo/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Želite li da filtrirate sve pozive za koje se sumnja da su nepoželjni?</string>
-  <string name="spam_blocking_promo_text">Pozivi kao što je ovaj koji ste upravo blokirali vas više
-      neće ometati</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriraj nepoželjne pozive</string>
-  <string name="spam_blocking_promo_action_dismiss">Odbaci</string>
-  <string name="spam_blocking_setting_prompt">Podešavanja</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem pri uključivanju filtriranja nepoželjnih poziva</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem pri isključivanju filtriranja nepoželjnih poziva</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje nepoželjnih poziva je uključeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje nepoželjnih poziva je isključeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-be/strings.xml b/java/com/android/dialer/spam/promo/res/values-be/strings.xml
deleted file mode 100644
index b6e0655..0000000
--- a/java/com/android/dialer/spam/promo/res/values-be/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Фільтраванне ўсіх выклікаў, якія падазраюцца ў спаме</string>
-  <string name="spam_blocking_promo_text">Выклікі, падобныя на той, які вы заблакіравалі, больш не
-      будуць турбаваць вас</string>
-  <string name="spam_blocking_promo_action_filter_spam">Фільтраваць спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Адхіліць</string>
-  <string name="spam_blocking_setting_prompt">Налады</string>
-  <string name="spam_blocking_settings_enable_error_text">Памылка ўключэння фільтра спама</string>
-  <string name="spam_blocking_settings_disable_error_text">Памылка выключэння фільтра спама</string>
-  <string name="spam_blocking_settings_enable_complete_text">Фільтрацыя спама ўключана</string>
-  <string name="spam_blocking_settings_disable_complete_text">Фільтрацыя спама выключана</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-bg/strings.xml b/java/com/android/dialer/spam/promo/res/values-bg/strings.xml
deleted file mode 100644
index 608c5b2..0000000
--- a/java/com/android/dialer/spam/promo/res/values-bg/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Да се филтрират ли всички обаждания, които са възможен спам?</string>
-  <string name="spam_blocking_promo_text">Повече няма да ви безпокоят обаждания като току-що блокираното от вас</string>
-  <string name="spam_blocking_promo_action_filter_spam">Филтриране на спама</string>
-  <string name="spam_blocking_promo_action_dismiss">Отхвърляне</string>
-  <string name="spam_blocking_setting_prompt">Настройки</string>
-  <string name="spam_blocking_settings_enable_error_text">При включването на филтрирането на спама възникна проблем</string>
-  <string name="spam_blocking_settings_disable_error_text">При изключването на филтрирането на спама възникна проблем</string>
-  <string name="spam_blocking_settings_enable_complete_text">Филтрирането на спама е включено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Филтрирането на спама е изключено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-bn/strings.xml b/java/com/android/dialer/spam/promo/res/values-bn/strings.xml
deleted file mode 100644
index 60fc070..0000000
--- a/java/com/android/dialer/spam/promo/res/values-bn/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">সন্দেহজনক স্প্যাম কল ফিল্টার করবেন?</string>
-  <string name="spam_blocking_promo_text">আপনি এইমাত্র যে কলটি ব্লক করলেন, সেই ধরনের কল দিয়ে আপনাকে
-      আর বিরক্ত করা হবে না</string>
-  <string name="spam_blocking_promo_action_filter_spam">স্প্যাম ফিল্টার করুন</string>
-  <string name="spam_blocking_promo_action_dismiss">খারিজ</string>
-  <string name="spam_blocking_setting_prompt">সেটিংস</string>
-  <string name="spam_blocking_settings_enable_error_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য চালু করতে সমস্যা হয়েছে</string>
-  <string name="spam_blocking_settings_disable_error_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য বন্ধ করতে সমস্যা হয়েছে</string>
-  <string name="spam_blocking_settings_enable_complete_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য চালু করা হয়েছে</string>
-  <string name="spam_blocking_settings_disable_complete_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য বন্ধ করা হয়েছে</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-bs/strings.xml b/java/com/android/dialer/spam/promo/res/values-bs/strings.xml
deleted file mode 100644
index 495192a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-bs/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrirati sve potencijalne neželjene pozive?</string>
-  <string name="spam_blocking_promo_text">Pozivi, kao što je onaj koji ste upravo blokirali, više vas neće
-      uznemiravati</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriranje neželjenih poziva</string>
-  <string name="spam_blocking_promo_action_dismiss">Odbaci</string>
-  <string name="spam_blocking_setting_prompt">Postavke</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem prilikom uključivanja filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem prilikom isključivanja filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje neželjenih poziva je uključeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje neželjenih poziva je isključeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ca/strings.xml b/java/com/android/dialer/spam/promo/res/values-ca/strings.xml
deleted file mode 100644
index 2b26129..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ca/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vols filtrar totes les possibles trucades brossa?</string>
-  <string name="spam_blocking_promo_text">Les trucades com la que acabes de bloquejar ja no
-      t\'interrompran</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtra les trucades brossa</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignora</string>
-  <string name="spam_blocking_setting_prompt">Configuració</string>
-  <string name="spam_blocking_settings_enable_error_text">S\'ha produït un error en activar el filtre de correu brossa</string>
-  <string name="spam_blocking_settings_disable_error_text">S\'ha produït un error en desactivar el filtre de correu brossa</string>
-  <string name="spam_blocking_settings_enable_complete_text">El filtre de trucades brossa s\'ha activat</string>
-  <string name="spam_blocking_settings_disable_complete_text">El filtre de trucades brossa s\'ha desactivat</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-cs/strings.xml b/java/com/android/dialer/spam/promo/res/values-cs/strings.xml
deleted file mode 100644
index 6aa3e79..0000000
--- a/java/com/android/dialer/spam/promo/res/values-cs/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrovat všechny hovory, u kterých je podezření na spam?</string>
-  <string name="spam_blocking_promo_text">Hovory jako ten, který jste právě zablokovali, už vás nebudou rušit</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrovat spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Zavřít</string>
-  <string name="spam_blocking_setting_prompt">Nastavení</string>
-  <string name="spam_blocking_settings_enable_error_text">Filtrování spamu se nepodařilo zapnout</string>
-  <string name="spam_blocking_settings_disable_error_text">Filtrování spamu se nepodařilo vypnout</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrování spamu je zapnuto</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrování spamu je vypnuto</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-da/strings.xml b/java/com/android/dialer/spam/promo/res/values-da/strings.xml
deleted file mode 100644
index 2e72e5c..0000000
--- a/java/com/android/dialer/spam/promo/res/values-da/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vil du filtrere alle formodede spamopkald?</string>
-  <string name="spam_blocking_promo_text">Opkald som det, du netop har blokeret, forstyrrer dig
-      ikke længere</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrer spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Afvis</string>
-  <string name="spam_blocking_setting_prompt">Indstillinger</string>
-  <string name="spam_blocking_settings_enable_error_text">Der opstod et problem, da filtrering af spamopkald skulle aktiveres</string>
-  <string name="spam_blocking_settings_disable_error_text">Der opstod et problem, da filtrering af spamopkald skulle deaktiveres</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrering af spamopkald blev aktiveret</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrering af spamopkald blev deaktiveret</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-de/strings.xml b/java/com/android/dialer/spam/promo/res/values-de/strings.xml
deleted file mode 100644
index 1d21d96..0000000
--- a/java/com/android/dialer/spam/promo/res/values-de/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Alle Anrufe bei Verdacht auf Spam herausfiltern?</string>
-  <string name="spam_blocking_promo_text">Anrufe wie der, den du gerade blockiert hast,
-      werden dich in Zukunft nicht mehr stören</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spam herausfiltern</string>
-  <string name="spam_blocking_promo_action_dismiss">Schließen</string>
-  <string name="spam_blocking_setting_prompt">Einstellungen</string>
-  <string name="spam_blocking_settings_enable_error_text">Fehler beim Aktivieren des Spamfilters</string>
-  <string name="spam_blocking_settings_disable_error_text">Fehler beim Deaktivieren des Spamfilters</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamfilter aktiviert</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamfilter deaktiviert</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-el/strings.xml b/java/com/android/dialer/spam/promo/res/values-el/strings.xml
deleted file mode 100644
index def1d70..0000000
--- a/java/com/android/dialer/spam/promo/res/values-el/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Φιλτράρισμα όλων των ύποπτων ανεπιθύμητων κλήσεων;</string>
-  <string name="spam_blocking_promo_text">Κλήσεις όπως αυτή που μόλις αποκλείσατε δεν θα σας ενοχλούν πλέον</string>
-  <string name="spam_blocking_promo_action_filter_spam">Φιλτράρισμα ανεπιθύμητων κλήσεων</string>
-  <string name="spam_blocking_promo_action_dismiss">Απόρριψη</string>
-  <string name="spam_blocking_setting_prompt">Ρυθμίσεις</string>
-  <string name="spam_blocking_settings_enable_error_text">Προέκυψε πρόβλημα κατά την ενεργοποίηση του φιλτραρίσματος ανεπιθύμητων μηνυμάτων</string>
-  <string name="spam_blocking_settings_disable_error_text">Προέκυψε πρόβλημα κατά την απενεργοποίηση του φιλτραρίσματος ανεπιθύμητων μηνυμάτων</string>
-  <string name="spam_blocking_settings_enable_complete_text">Το φιλτράρισμα ανεπιθύμητων κλήσεων ενεργοποιήθηκε</string>
-  <string name="spam_blocking_settings_disable_complete_text">Το φιλτράρισμα ανεπιθύμητων κλήσεων απενεργοποιήθηκε</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-en-rAU/strings.xml b/java/com/android/dialer/spam/promo/res/values-en-rAU/strings.xml
deleted file mode 100644
index ab59fce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <string name="spam_blocking_promo_text">Calls like the one that you just blocked will no longer
-      disturb you</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <string name="spam_blocking_setting_prompt">Settings</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-en-rGB/strings.xml b/java/com/android/dialer/spam/promo/res/values-en-rGB/strings.xml
deleted file mode 100644
index ab59fce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <string name="spam_blocking_promo_text">Calls like the one that you just blocked will no longer
-      disturb you</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <string name="spam_blocking_setting_prompt">Settings</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-en-rIN/strings.xml b/java/com/android/dialer/spam/promo/res/values-en-rIN/strings.xml
deleted file mode 100644
index ab59fce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <string name="spam_blocking_promo_text">Calls like the one that you just blocked will no longer
-      disturb you</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <string name="spam_blocking_setting_prompt">Settings</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-es-rUS/strings.xml b/java/com/android/dialer/spam/promo/res/values-es-rUS/strings.xml
deleted file mode 100644
index 3144e82..0000000
--- a/java/com/android/dialer/spam/promo/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">¿Quieres filtrar todas las llamadas que se identifiquen como spam?</string>
-  <string name="spam_blocking_promo_text">Las llamadas como la que bloqueaste recién ya no
-      te molestarán</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Descartar</string>
-  <string name="spam_blocking_setting_prompt">Configuración</string>
-  <string name="spam_blocking_settings_enable_error_text">Hubo un problema al activar la opción para filtrar spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Hubo un problema al desactivar la opción para filtrar spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Se activó la opción para filtrar spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Se desactivó la opción para filtrar spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-es/strings.xml b/java/com/android/dialer/spam/promo/res/values-es/strings.xml
deleted file mode 100644
index 163ed85..0000000
--- a/java/com/android/dialer/spam/promo/res/values-es/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">¿Quieres filtrar todas las posibles llamadas de spam?</string>
-  <string name="spam_blocking_promo_text">Las llamadas como la que acabas de bloquear ya no te
-      molestarán</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorar</string>
-  <string name="spam_blocking_setting_prompt">Ajustes</string>
-  <string name="spam_blocking_settings_enable_error_text">No se ha podido activar el filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">No se ha podido desactivar el filtrado de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Se ha activado el filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Se ha desactivado el filtrado de spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-et/strings.xml b/java/com/android/dialer/spam/promo/res/values-et/strings.xml
deleted file mode 100644
index 521f14f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-et/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Kas soovite filtreerida kõik arvatavad rämpskõned?</string>
-  <string name="spam_blocking_promo_text">Hiljuti blokeeritud kõnega sarnased kõned
-      ei häiri teid edaspidi</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtreeri rämpskõned</string>
-  <string name="spam_blocking_promo_action_dismiss">Loobu</string>
-  <string name="spam_blocking_setting_prompt">Seaded</string>
-  <string name="spam_blocking_settings_enable_error_text">Rämpskõnede filtreerimise sisselülitamisel tekkis probleem</string>
-  <string name="spam_blocking_settings_disable_error_text">Rämpskõnede filtreerimise väljalülitamisel tekkis probleem</string>
-  <string name="spam_blocking_settings_enable_complete_text">Rämpskõnede filtreerimine on sisse lülitatud</string>
-  <string name="spam_blocking_settings_disable_complete_text">Rämpskõnede filtreerimine on välja lülitatud</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-eu/strings.xml b/java/com/android/dialer/spam/promo/res/values-eu/strings.xml
deleted file mode 100644
index 94023c0..0000000
--- a/java/com/android/dialer/spam/promo/res/values-eu/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Ustezko spam-dei guztiak iragazi nahi dituzu?</string>
-  <string name="spam_blocking_promo_text">Aurrerantzean, blokeatu berri duzunaren antzeko deiek
-      ez zaituzte molestatuko</string>
-  <string name="spam_blocking_promo_action_filter_spam">Iragazi spama</string>
-  <string name="spam_blocking_promo_action_dismiss">Baztertu</string>
-  <string name="spam_blocking_setting_prompt">Ezarpenak</string>
-  <string name="spam_blocking_settings_enable_error_text">Arazo bat izan da spama iragazteko aukera aktibatzean</string>
-  <string name="spam_blocking_settings_disable_error_text">Arazo bat izan da spama iragazteko aukera desaktibatzean</string>
-  <string name="spam_blocking_settings_enable_complete_text">Aktibatu da spama iragazteko aukera</string>
-  <string name="spam_blocking_settings_disable_complete_text">Desaktibatu da spama iragazteko aukera</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fa/strings.xml b/java/com/android/dialer/spam/promo/res/values-fa/strings.xml
deleted file mode 100644
index db797c6..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fa/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">همه تماس‌های مشکوک به هرزنامه فیلتر شود؟</string>
-  <string name="spam_blocking_promo_text">تماس‌های مشابه تماسی که همین‌حالا مسدود کردید
-      دیگر برای شما مزاحمت ایجاد نخواهند کرد</string>
-  <string name="spam_blocking_promo_action_filter_spam">فیلتر هرزنامه</string>
-  <string name="spam_blocking_promo_action_dismiss">نپذیرفتن</string>
-  <string name="spam_blocking_setting_prompt">تنظیمات</string>
-  <string name="spam_blocking_settings_enable_error_text">مشکل هنگام روشن کردن فیلتر هرزنامه</string>
-  <string name="spam_blocking_settings_disable_error_text">مشکل هنگام خاموش کردن فیلتر هرزنامه</string>
-  <string name="spam_blocking_settings_enable_complete_text">فیلتر هرزنامه فعال است</string>
-  <string name="spam_blocking_settings_disable_complete_text">فیلتر هرزنامه غیرفعال است</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fi/strings.xml b/java/com/android/dialer/spam/promo/res/values-fi/strings.xml
deleted file mode 100644
index 3b85fb0..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fi/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Suodatetaanko kaikki häirikköpuheluilta vaikuttavat puhelut?</string>
-  <string name="spam_blocking_promo_text">Estämäsi kaltaiset puhelut eivät enää
-      häiritse sinua</string>
-  <string name="spam_blocking_promo_action_filter_spam">Suodata häirikköpuhelut</string>
-  <string name="spam_blocking_promo_action_dismiss">Ohita</string>
-  <string name="spam_blocking_setting_prompt">Asetukset</string>
-  <string name="spam_blocking_settings_enable_error_text">Häirikköpuhelujen suodatuksen käyttöönotossa oli ongelma</string>
-  <string name="spam_blocking_settings_disable_error_text">Häirikköpuhelujen suodatuksen poistamisessa käytöstä oli ongelma</string>
-  <string name="spam_blocking_settings_enable_complete_text">Häirikköpuhelujen suodatus päällä</string>
-  <string name="spam_blocking_settings_disable_complete_text">Häirikköpuhelujen suodatus pois päältä</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fr-rCA/strings.xml b/java/com/android/dialer/spam/promo/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 312f7f0..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrer tous les appels importuns suspects?</string>
-  <string name="spam_blocking_promo_text">Les appels comme celui que vous venez de bloquer ne vous
-      dérangeront plus</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrer les appels importuns</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorer</string>
-  <string name="spam_blocking_setting_prompt">Paramètres</string>
-  <string name="spam_blocking_settings_enable_error_text">Problème lors de l\'activation du filtrage des appels importuns</string>
-  <string name="spam_blocking_settings_disable_error_text">Problème lors de la désactivation du filtrage des appels importuns</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrage des appels importuns activé</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrage des appels importuns désactivé</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fr/strings.xml b/java/com/android/dialer/spam/promo/res/values-fr/strings.xml
deleted file mode 100644
index c6ec5a9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fr/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrer tous les appels potentiellement indésirables ?</string>
-  <string name="spam_blocking_promo_text">Vous ne serez plus dérangé par des appels similaires à celui que vous venez de bloquer.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrer le spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorer</string>
-  <string name="spam_blocking_setting_prompt">Paramètres</string>
-  <string name="spam_blocking_settings_enable_error_text">Problème lors de l\'activation du fitre antispam</string>
-  <string name="spam_blocking_settings_disable_error_text">Problème lors de la désactivation du filtre antispam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Le filtre antispam est activé</string>
-  <string name="spam_blocking_settings_disable_complete_text">Le filtre antispam est désactivé</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-gl/strings.xml b/java/com/android/dialer/spam/promo/res/values-gl/strings.xml
deleted file mode 100644
index 3b3b5df..0000000
--- a/java/com/android/dialer/spam/promo/res/values-gl/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Queres filtrar todas as posibles chamadas de spam?</string>
-  <string name="spam_blocking_promo_text">Xa non te amolarán chamadas como a que
-      acabas de bloquear</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorar</string>
-  <string name="spam_blocking_setting_prompt">Configuración</string>
-  <string name="spam_blocking_settings_enable_error_text">Produciuse un problema ao activar o filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Produciuse un problema ao desactivar o filtrado de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Activouse o filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Desactivouse o filtrado de spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-gu/strings.xml b/java/com/android/dialer/spam/promo/res/values-gu/strings.xml
deleted file mode 100644
index 265ecfe..0000000
--- a/java/com/android/dialer/spam/promo/res/values-gu/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">બધા શંકાસ્પદ સ્પામ કૉલને ફિલ્ટર કરીએ?</string>
-  <string name="spam_blocking_promo_text">તમે હમણાં જ જે કૉલને બ્લૉક કર્યો છે તેવા કૉલ હવેથી તમારા કામમાં ખલેલ
-      પાડી શકશે નહીં</string>
-  <string name="spam_blocking_promo_action_filter_spam">સ્પામ ફિલ્ટર કરો</string>
-  <string name="spam_blocking_promo_action_dismiss">છોડી દો</string>
-  <string name="spam_blocking_setting_prompt">સેટિંગ</string>
-  <string name="spam_blocking_settings_enable_error_text">સ્પામ ફિલ્ટરિંગને ચાલુ કરવામાં સમસ્યા</string>
-  <string name="spam_blocking_settings_disable_error_text">સ્પામ ફિલ્ટરિંગને બંધ કરવામાં સમસ્યા</string>
-  <string name="spam_blocking_settings_enable_complete_text">સ્પામ ફિલ્ટરિંગ ચાલુ કર્યું</string>
-  <string name="spam_blocking_settings_disable_complete_text">સ્પામ ફિલ્ટરિંગ બંધ કર્યું</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hi/strings.xml b/java/com/android/dialer/spam/promo/res/values-hi/strings.xml
deleted file mode 100644
index 80a98d4..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hi/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">सभी संदिग्ध स्पैम कॉल फ़िल्टर करें?</string>
-  <string name="spam_blocking_promo_text">आपने अभी-अभी जिस तरह के कॉल पर रोक लगाई है, वैसे कॉल अब आपको
-      परेशान नहीं करेंगे</string>
-  <string name="spam_blocking_promo_action_filter_spam">स्पैम फ़िल्टर करें</string>
-  <string name="spam_blocking_promo_action_dismiss">खारिज करें</string>
-  <string name="spam_blocking_setting_prompt">सेटिंग</string>
-  <string name="spam_blocking_settings_enable_error_text">स्पैम फ़िल्टर करने की सुविधा चालू करने में समस्या आई</string>
-  <string name="spam_blocking_settings_disable_error_text">स्पैम फ़िल्टर करने की सुविधा बंद करने में समस्या आई</string>
-  <string name="spam_blocking_settings_enable_complete_text">स्पैम फ़िल्टर चालू किया गया</string>
-  <string name="spam_blocking_settings_disable_complete_text">स्पैम फ़िल्टर बंद किया गया</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hr/strings.xml b/java/com/android/dialer/spam/promo/res/values-hr/strings.xml
deleted file mode 100644
index 5ce00b1..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hr/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Želite li filtrirati sve moguće neželjene pozive?</string>
-  <string name="spam_blocking_promo_text">Pozivi kao što je ovaj koji ste upravo blokirali više
-      vas neće ometati</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriranje neželjenih poziva</string>
-  <string name="spam_blocking_promo_action_dismiss">Odbaci</string>
-  <string name="spam_blocking_setting_prompt">Postavke</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem pri uključivanju filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem pri isključivanju filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje neželjenih poziva uključeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje neželjenih poziva isključeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hu/strings.xml b/java/com/android/dialer/spam/promo/res/values-hu/strings.xml
deleted file mode 100644
index cdd2c57..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hu/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Ki szeretné szűrni az összes gyanús spamhívást?</string>
-  <string name="spam_blocking_promo_text">Az épp letiltotthoz hasonló hívások nem fogják többet zavarni.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spamszűrés</string>
-  <string name="spam_blocking_promo_action_dismiss">Bezárás</string>
-  <string name="spam_blocking_setting_prompt">Beállítások</string>
-  <string name="spam_blocking_settings_enable_error_text">Hiba történt a spamszűrés bekapcsolásakor</string>
-  <string name="spam_blocking_settings_disable_error_text">Hiba történt a spamszűrés kikapcsolásakor</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamszűrés bekapcsolva</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamszűrés kikapcsolva</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hy/strings.xml b/java/com/android/dialer/spam/promo/res/values-hy/strings.xml
deleted file mode 100644
index b0fe325..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hy/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Զտե՞լ բոլոր անցանկալի զանգերը</string>
-  <string name="spam_blocking_promo_text">Դուք քիչ առաջ զանգ արգելափակեցիք: Նման զանգերը այլևս ձեզ
-      չեն անհանգստացնի</string>
-  <string name="spam_blocking_promo_action_filter_spam">Զտել սպամը</string>
-  <string name="spam_blocking_promo_action_dismiss">Փակել</string>
-  <string name="spam_blocking_setting_prompt">Կարգավորումներ</string>
-  <string name="spam_blocking_settings_enable_error_text">Չհաջողվեց միացնել սպամի զտումը</string>
-  <string name="spam_blocking_settings_disable_error_text">Չհաջողվեց անջատել սպամի զտումը</string>
-  <string name="spam_blocking_settings_enable_complete_text">Սպապի զտումը միացավ</string>
-  <string name="spam_blocking_settings_disable_complete_text">Սպապի զտումն անջատվեց</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-in/strings.xml b/java/com/android/dialer/spam/promo/res/values-in/strings.xml
deleted file mode 100644
index 53e3e7a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-in/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter semua panggilan yang diduga spam?</string>
-  <string name="spam_blocking_promo_text">Panggilan seperti yang baru saja diblokir tidak akan lagi
-      mengganggu Anda</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Tutup</string>
-  <string name="spam_blocking_setting_prompt">Setelan</string>
-  <string name="spam_blocking_settings_enable_error_text">Masalah saat mengaktifkan pemfilteran spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Masalah saat menonaktifkan pemfilteran spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Pemfilteran spam diaktifkan</string>
-  <string name="spam_blocking_settings_disable_complete_text">Pemfilteran spam dinonaktifkan</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-is/strings.xml b/java/com/android/dialer/spam/promo/res/values-is/strings.xml
deleted file mode 100644
index b48f100..0000000
--- a/java/com/android/dialer/spam/promo/res/values-is/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Viltu sía út símtöl sem berast úr hugsanlegum ruslnúmerum?</string>
-  <string name="spam_blocking_promo_text">Þú munt ekki lengur fá símtal eins og það
-      sem þú lokaðir á</string>
-  <string name="spam_blocking_promo_action_filter_spam">Sía símtöl úr ruslnúmerum</string>
-  <string name="spam_blocking_promo_action_dismiss">Hunsa</string>
-  <string name="spam_blocking_setting_prompt">Stillingar</string>
-  <string name="spam_blocking_settings_enable_error_text">Villa við að kveikja á síun símtala úr ruslnúmerum</string>
-  <string name="spam_blocking_settings_disable_error_text">Villa við að slökkva á síun símtala úr ruslnúmerum</string>
-  <string name="spam_blocking_settings_enable_complete_text">Kveikt á síun símtala úr ruslnúmerum</string>
-  <string name="spam_blocking_settings_disable_complete_text">Slökkt á síun símtala úr ruslnúmerum</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-it/strings.xml b/java/com/android/dialer/spam/promo/res/values-it/strings.xml
deleted file mode 100644
index e882f7b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-it/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrare tutte le chiamate di presunto spam?</string>
-  <string name="spam_blocking_promo_text">Le chiamate come quella che hai appena bloccato non ti disturberanno più</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtro antispam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignora</string>
-  <string name="spam_blocking_setting_prompt">Impostazioni</string>
-  <string name="spam_blocking_settings_enable_error_text">Errore durante l\'attivazione del filtro antispam</string>
-  <string name="spam_blocking_settings_disable_error_text">Errore durante la disattivazione del filtro antispam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtro antispam attivato</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtro antispam disattivato</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-iw/strings.xml b/java/com/android/dialer/spam/promo/res/values-iw/strings.xml
deleted file mode 100644
index 76caf27..0000000
--- a/java/com/android/dialer/spam/promo/res/values-iw/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">רוצה לסנן את כל השיחות שחשודות כספאם?</string>
-  <string name="spam_blocking_promo_text">שיחות כמו השיחה שחסמת לא יטרידו אותך יותר.</string>
-  <string name="spam_blocking_promo_action_filter_spam">סינון ספאם</string>
-  <string name="spam_blocking_promo_action_dismiss">סגירה</string>
-  <string name="spam_blocking_setting_prompt">הגדרות</string>
-  <string name="spam_blocking_settings_enable_error_text">הייתה בעיה בהפעלת הסינון של שיחות ספאם</string>
-  <string name="spam_blocking_settings_disable_error_text">הייתה בעיה בהשבתת הסינון של שיחות ספאם</string>
-  <string name="spam_blocking_settings_enable_complete_text">סינון הספאם הופעל</string>
-  <string name="spam_blocking_settings_disable_complete_text">סינון הספאם הושבת</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ja/strings.xml b/java/com/android/dialer/spam/promo/res/values-ja/strings.xml
deleted file mode 100644
index 7e517b4..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ja/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">迷惑電話の疑いがある通話をすべてブロックしますか?</string>
-  <string name="spam_blocking_promo_text">迷惑電話の疑いがある通話はすべて
-      ブロックされます</string>
-  <string name="spam_blocking_promo_action_filter_spam">迷惑電話をフィルタリング</string>
-  <string name="spam_blocking_promo_action_dismiss">閉じる</string>
-  <string name="spam_blocking_setting_prompt">設定</string>
-  <string name="spam_blocking_settings_enable_error_text">迷惑電話のブロックを ON にできませんでした</string>
-  <string name="spam_blocking_settings_disable_error_text">迷惑電話のブロックを OFF にできませんでした</string>
-  <string name="spam_blocking_settings_enable_complete_text">迷惑電話のフィルタリングを ON にしました</string>
-  <string name="spam_blocking_settings_disable_complete_text">迷惑電話のフィルタリングを OFF にしました</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ka/strings.xml b/java/com/android/dialer/spam/promo/res/values-ka/strings.xml
deleted file mode 100644
index 4452f99..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ka/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">გსურთ ყველა სავარაუდოდ სპამი ზარის გაფილტვრა?</string>
-  <string name="spam_blocking_promo_text">ისეთი ზარები, როგორიც ახლახან დაბლოკეთ, აღარ
-      შეგაწუხებთ</string>
-  <string name="spam_blocking_promo_action_filter_spam">სპამის გაფილტვრა</string>
-  <string name="spam_blocking_promo_action_dismiss">დახურვა</string>
-  <string name="spam_blocking_setting_prompt">პარამეტრები</string>
-  <string name="spam_blocking_settings_enable_error_text">სპამის გაფილტვრის ჩართვისას წარმოიშვა პრობლემა</string>
-  <string name="spam_blocking_settings_disable_error_text">სპამის გაფილტვრის გამორთვისას წარმოიშვა პრობლემა</string>
-  <string name="spam_blocking_settings_enable_complete_text">სპამის გაფილტვრა ჩართულია</string>
-  <string name="spam_blocking_settings_disable_complete_text">სპამის გაფილტვრა გამორთულია</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-kk/strings.xml b/java/com/android/dialer/spam/promo/res/values-kk/strings.xml
deleted file mode 100644
index 5a73b4f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-kk/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Барлық күдікті спам қоңырауларды сүзу қажет пе?</string>
-  <string name="spam_blocking_promo_text">Осы сияқты бөгелген қоңыраулар енді мазаңызды алмайды</string>
-  <string name="spam_blocking_promo_action_filter_spam">Спам сүзу</string>
-  <string name="spam_blocking_promo_action_dismiss">Жабу</string>
-  <string name="spam_blocking_setting_prompt">Параметрлер</string>
-  <string name="spam_blocking_settings_enable_error_text">Спам сүзгісі қосылмады</string>
-  <string name="spam_blocking_settings_disable_error_text">Спам сүзгісі өшірілмеді</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спам сүзгісі қосылды</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спам сүзгісі өшірілді</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-km/strings.xml b/java/com/android/dialer/spam/promo/res/values-km/strings.xml
deleted file mode 100644
index ec3ca45..0000000
--- a/java/com/android/dialer/spam/promo/res/values-km/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ត្រង​ការហៅទូរសព្ទ​​​ឥតបាន​ការ​ដែល​សង្ស័យ​ទាំងអស់​ដែរ​ឬ​ទេ?</string>
-  <string name="spam_blocking_promo_text">ការហៅ​ទូរសព្ទ​ដូច​ការហៅដែល​អ្នក​ទើបបាន​ទប់ស្កាត់​នឹង​លែង
-      រំខាន​អ្នក​ទៀត​ហើយ</string>
-  <string name="spam_blocking_promo_action_filter_spam">តម្រង​សារ​ឥត​បានការ</string>
-  <string name="spam_blocking_promo_action_dismiss">បដិសេធ</string>
-  <string name="spam_blocking_setting_prompt">ការកំណត់</string>
-  <string name="spam_blocking_settings_enable_error_text">មាន​បញ្ហា​ក្នុង​ការបើក​តម្រង​ការហៅ​ឥត​បានការ</string>
-  <string name="spam_blocking_settings_disable_error_text">មាន​បញ្ហា​បិទ​តម្រង​ការហៅ​ឥត​បានការ</string>
-  <string name="spam_blocking_settings_enable_complete_text">បាន​បើក​​តម្រង​ការហៅ​ឥត​បានការ</string>
-  <string name="spam_blocking_settings_disable_complete_text">បាន​បិទ​តម្រង​ការហៅ​ឥត​​បានការ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-kn/strings.xml b/java/com/android/dialer/spam/promo/res/values-kn/strings.xml
deleted file mode 100644
index bde9a45..0000000
--- a/java/com/android/dialer/spam/promo/res/values-kn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ಶಂಕಿತ ಸ್ಪ್ಯಾಮ್ ಕರೆಗಳನ್ನು ಫಿಲ್ಟರ್‌ ಮಾಡುವುದೇ?</string>
-  <string name="spam_blocking_promo_text">ನೀವು ನಿರ್ಬಂಧಿಸಿದಂತಹ ಕರೆಗಳು ಇನ್ನು ಮುಂದೆ ನಿಮಗೆ ತೊಂದರೆ ಉಂಟು ಮಾಡುವುದಿಲ್ಲ</string>
-  <string name="spam_blocking_promo_action_filter_spam">ಸ್ಪ್ಯಾಮ್‌ ಫಿಲ್ಟರ್‌</string>
-  <string name="spam_blocking_promo_action_dismiss">ವಜಾಗೊಳಿಸಿ</string>
-  <string name="spam_blocking_setting_prompt">ಸೆಟ್ಟಿಂಗ್‌ಗಳು</string>
-  <string name="spam_blocking_settings_enable_error_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್‌ ಆನ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ</string>
-  <string name="spam_blocking_settings_disable_error_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್‌ ಆಫ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ</string>
-  <string name="spam_blocking_settings_enable_complete_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್ ಆನ್ ಮಾಡಲಾಗಿದೆ</string>
-  <string name="spam_blocking_settings_disable_complete_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್ ಆಫ್ ಮಾಡಲಾಗಿದೆ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ko/strings.xml b/java/com/android/dialer/spam/promo/res/values-ko/strings.xml
deleted file mode 100644
index b6effac..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ko/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">의심스러운 스팸 통화를 모두 필터링하시겠습니까?</string>
-  <string name="spam_blocking_promo_text">방금 차단한 통화와 같은 스팸 통화를
-      더 이상 받지 않게 됩니다.</string>
-  <string name="spam_blocking_promo_action_filter_spam">스팸 필터링</string>
-  <string name="spam_blocking_promo_action_dismiss">닫기</string>
-  <string name="spam_blocking_setting_prompt">설정</string>
-  <string name="spam_blocking_settings_enable_error_text">스팸 필터링을 켜는 중에 문제가 발생했습니다.</string>
-  <string name="spam_blocking_settings_disable_error_text">스팸 필터링을 끄는 중에 문제가 발생했습니다.</string>
-  <string name="spam_blocking_settings_enable_complete_text">스팸 필터링이 켜짐</string>
-  <string name="spam_blocking_settings_disable_complete_text">스팸 필터링이 꺼짐</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ky/strings.xml b/java/com/android/dialer/spam/promo/res/values-ky/strings.xml
deleted file mode 100644
index 4f3cd6f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ky/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Бардык шектүү спам чалуулар чыпкалансынбы?</string>
-  <string name="spam_blocking_promo_text">Сиз азыр эле бөгөттөгөн чалууга окшош чалуулар мындан ары
-      тынчыңызды албайт</string>
-  <string name="spam_blocking_promo_action_filter_spam">Спамды чыпкалоо</string>
-  <string name="spam_blocking_promo_action_dismiss">Жабуу</string>
-  <string name="spam_blocking_setting_prompt">Жөндөөлөр</string>
-  <string name="spam_blocking_settings_enable_error_text">Спамдын чыпкасын күйгүзүүдө көйгөй келип чыкты</string>
-  <string name="spam_blocking_settings_disable_error_text">Спамдын чыпкасын өчүрүүдө көйгөй келип чыкты</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спам чыпкасы күйгүзүлдү</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спам чыпкасы өчүрүлдү</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-lo/strings.xml b/java/com/android/dialer/spam/promo/res/values-lo/strings.xml
deleted file mode 100644
index 298ecae..0000000
--- a/java/com/android/dialer/spam/promo/res/values-lo/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ກັ່ນຕອງສາຍທີ່ສົງໄສວ່າເປັນສະແປມທັງໝົດບໍ?</string>
-  <string name="spam_blocking_promo_text">ສາຍແບບດຽວກັບທີ່ທ່ານຫາກໍບລັອກໄປຈະບໍ່ສາມາດລົບກວນທ່ານໄດ້ອີກ.</string>
-  <string name="spam_blocking_promo_action_filter_spam">ກັ່ນຕອງສະແປມ</string>
-  <string name="spam_blocking_promo_action_dismiss">ປິດໄວ້</string>
-  <string name="spam_blocking_setting_prompt">ການຕັ້ງຄ່າ</string>
-  <string name="spam_blocking_settings_enable_error_text">ເກີດບັນຫາໃນການເປີດຕົວກັ່ນຕອງສະແປມ</string>
-  <string name="spam_blocking_settings_disable_error_text">ເກີດບັນຫາໃນການປິດຕົວກັ່ນຕອງສະແປມ</string>
-  <string name="spam_blocking_settings_enable_complete_text">ເປີດຕົວກັ່ນຕອງສະແປມແລ້ວ</string>
-  <string name="spam_blocking_settings_disable_complete_text">ປິດຕົວກັ່ນຕອງສະແປມແລ້ວ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-lt/strings.xml b/java/com/android/dialer/spam/promo/res/values-lt/strings.xml
deleted file mode 100644
index d3d9cdc..0000000
--- a/java/com/android/dialer/spam/promo/res/values-lt/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtruoti visus įtartinus šlamšto skambučius?</string>
-  <string name="spam_blocking_promo_text">Tokie skambučiai kaip ką tik užblokuotas
-      nebetrukdys jums</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtruoti šlamštą</string>
-  <string name="spam_blocking_promo_action_dismiss">Atsisakyti</string>
-  <string name="spam_blocking_setting_prompt">Nustatymai</string>
-  <string name="spam_blocking_settings_enable_error_text">Įjungiant šlamšto filtravimą kilo problema</string>
-  <string name="spam_blocking_settings_disable_error_text">Išjungiant šlamšto filtravimą kilo problema</string>
-  <string name="spam_blocking_settings_enable_complete_text">Šlamšto filtravimas įjungtas</string>
-  <string name="spam_blocking_settings_disable_complete_text">Šlamšto filtravimas išjungtas</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-lv/strings.xml b/java/com/android/dialer/spam/promo/res/values-lv/strings.xml
deleted file mode 100644
index 9d0aafa..0000000
--- a/java/com/android/dialer/spam/promo/res/values-lv/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vai filtrēt visus aizdomīgos nevēlamos zvanus?</string>
-  <string name="spam_blocking_promo_text">Jūs vairs netraucēs tādi zvani kā zvans, ko tikko bloķējāt.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrēt nevēlamus zvanus</string>
-  <string name="spam_blocking_promo_action_dismiss">Nerādīt</string>
-  <string name="spam_blocking_setting_prompt">Iestatījumi</string>
-  <string name="spam_blocking_settings_enable_error_text">Ieslēdzot nevēlamu zvanu filtrēšanu, radās problēma.</string>
-  <string name="spam_blocking_settings_disable_error_text">Izslēdzot nevēlamu zvanu filtrēšanu, radās problēma.</string>
-  <string name="spam_blocking_settings_enable_complete_text">Nevēlamu zvanu filtrēšana ieslēgta</string>
-  <string name="spam_blocking_settings_disable_complete_text">Nevēlamu zvanu filtrēšana izslēgta</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-mk/strings.xml b/java/com/android/dialer/spam/promo/res/values-mk/strings.xml
deleted file mode 100644
index 457039a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-mk/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Да се филтрираат сите повици што може да се спам?</string>
-  <string name="spam_blocking_promo_text">Повици како оној што го блокиравте веќе нема
-      да ве вознемируваат</string>
-  <string name="spam_blocking_promo_action_filter_spam">Филтрирање спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Отфрли</string>
-  <string name="spam_blocking_setting_prompt">Поставки</string>
-  <string name="spam_blocking_settings_enable_error_text">Проблем при вклучување филтрирање спам</string>
-  <string name="spam_blocking_settings_disable_error_text">Проблем при исклучување филтрирање спам</string>
-  <string name="spam_blocking_settings_enable_complete_text">Филтрирањето спам е вклучено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Филтрирањето спам е исклучено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ml/strings.xml b/java/com/android/dialer/spam/promo/res/values-ml/strings.xml
deleted file mode 100644
index c76754a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ml/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">എല്ലാ സംശയാസ്‌പദമായ സ്‌പാം കോളുകളും ഫിൽട്ടർ ചെയ്യണോ?</string>
-  <string name="spam_blocking_promo_text">നിങ്ങൾ ഇപ്പോൾ ബ്ലോക്ക് ചെയ്‌ത പോലുള്ള കോളുകൾ ഇനി നിങ്ങളെ ശല്യപ്പെടുത്തില്ല</string>
-  <string name="spam_blocking_promo_action_filter_spam">സ്‌പാം ഫിൽട്ടർ ചെയ്യുക</string>
-  <string name="spam_blocking_promo_action_dismiss">ഒഴിവാക്കുക</string>
-  <string name="spam_blocking_setting_prompt">ക്രമീകരണം</string>
-  <string name="spam_blocking_settings_enable_error_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓണാക്കുന്നതിൽ പ്രശ്‌നം</string>
-  <string name="spam_blocking_settings_disable_error_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓഫാക്കുന്നതിൽ പ്രശ്‌നം</string>
-  <string name="spam_blocking_settings_enable_complete_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓണാക്കി</string>
-  <string name="spam_blocking_settings_disable_complete_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓഫാക്കി</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-mn/strings.xml b/java/com/android/dialer/spam/promo/res/values-mn/strings.xml
deleted file mode 100644
index 1acdb00..0000000
--- a/java/com/android/dialer/spam/promo/res/values-mn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Бүх сэжигтэй спам дуудлагыг шүүх үү?</string>
-  <string name="spam_blocking_promo_text">Таны саяхан блоклосон иймэрхүү дуудлагууд танд цаашид саад болохгүй</string>
-  <string name="spam_blocking_promo_action_filter_spam">Спам шүүлтүүрдэх</string>
-  <string name="spam_blocking_promo_action_dismiss">Хаах</string>
-  <string name="spam_blocking_setting_prompt">Тохиргоо</string>
-  <string name="spam_blocking_settings_enable_error_text">Спамийн шүүлтүүрийг асаахад асуудал гарсан</string>
-  <string name="spam_blocking_settings_disable_error_text">Спамийн шүүлтүүрийг унтраахад асуудал гарсан</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спамын шүүлтүүрийг асаасан</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спамын шүүлтүүрийг унтраасан</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-mr/strings.xml b/java/com/android/dialer/spam/promo/res/values-mr/strings.xml
deleted file mode 100644
index 3f2bee5..0000000
--- a/java/com/android/dialer/spam/promo/res/values-mr/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">सर्व संशयित स्पॅम कॉल फिल्टर करायचे?</string>
-  <string name="spam_blocking_promo_text">तुम्ही आत्ताच ब्लॉक केलेल्या सारखे कॉल तुम्हाला अडथळा आणणार नाहीत</string>
-  <string name="spam_blocking_promo_action_filter_spam">स्पॅम फिल्टर करा</string>
-  <string name="spam_blocking_promo_action_dismiss">डिसमिस करा</string>
-  <string name="spam_blocking_setting_prompt">सेटिंग्ज</string>
-  <string name="spam_blocking_settings_enable_error_text">स्‍पॅम फिल्‍टरिंग सुरू करण्‍यात समस्‍या</string>
-  <string name="spam_blocking_settings_disable_error_text">स्‍पॅम फिल्‍टरिंग बंद करण्‍यात समस्‍या</string>
-  <string name="spam_blocking_settings_enable_complete_text">स्पॅम फिल्टरिंग चालू केलेले आहे</string>
-  <string name="spam_blocking_settings_disable_complete_text">स्पॅम फिल्टरिंग बंद केलेले आहे</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ms/strings.xml b/java/com/android/dialer/spam/promo/res/values-ms/strings.xml
deleted file mode 100644
index 28a51da..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ms/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Tapis semua panggilan yang disyaki spam?</string>
-  <string name="spam_blocking_promo_text">Panggilan seperti yang baru sahaja anda sekat tidak akan mengganggu anda lagi</string>
-  <string name="spam_blocking_promo_action_filter_spam">Tapis Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ketepikan</string>
-  <string name="spam_blocking_setting_prompt">Tetapan</string>
-  <string name="spam_blocking_settings_enable_error_text">Masalah semasa menghidupkan penapisan spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Masalah semasa mematikan penapisan spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Penapisan spam dihidupkan</string>
-  <string name="spam_blocking_settings_disable_complete_text">Penapisan spam dimatikan</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-my/strings.xml b/java/com/android/dialer/spam/promo/res/values-my/strings.xml
deleted file mode 100644
index 641e814..0000000
--- a/java/com/android/dialer/spam/promo/res/values-my/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">သံသယဖြစ်ဖွဘ် စပမ်းခေါ်ဆိုမှုအားလုံးကို စစ်ထုတ်မလား။</string>
-  <string name="spam_blocking_promo_text">သင်ပိတ်ထားသော ခေါ်ဆိုမှုများသည် သင့်အား အနှောင့်အယှက် ပေးတော့မည်မဟုတ်ပါ</string>
-  <string name="spam_blocking_promo_action_filter_spam">စပမ်းကို စစ်ထုတ်ရန်</string>
-  <string name="spam_blocking_promo_action_dismiss">ပယ်ရန်</string>
-  <string name="spam_blocking_setting_prompt">ဆက်တင်များ</string>
-  <string name="spam_blocking_settings_enable_error_text">စပမ်းစစ်ထုတ်ခြင်းကို ဖွင့်ရာတွင် အခက်အခဲရှိပါသည်</string>
-  <string name="spam_blocking_settings_disable_error_text">စပမ်းစစ်ထုတ်ခြင်းကို ပိတ်ရာတွင် အခက်အခဲရှိပါသည်</string>
-  <string name="spam_blocking_settings_enable_complete_text">စပမ်းစစ်ထုတ်ခြင်းကို ဖွင့်လိုက်ပါပြီ</string>
-  <string name="spam_blocking_settings_disable_complete_text">စပမ်းစစ်ထုတ်ခြင်းကို ပိတ်လိုက်ပါပြီ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-nb/strings.xml b/java/com/android/dialer/spam/promo/res/values-nb/strings.xml
deleted file mode 100644
index a0b645b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-nb/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vil du filtrere alle potensielt useriøse anrop?</string>
-  <string name="spam_blocking_promo_text">Anrop som det du akkurat har blokkert, kommer ikke til
-      å forstyrre deg lenger</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrér useriøse anrop</string>
-  <string name="spam_blocking_promo_action_dismiss">Lukk</string>
-  <string name="spam_blocking_setting_prompt">Innstillinger</string>
-  <string name="spam_blocking_settings_enable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås på</string>
-  <string name="spam_blocking_settings_disable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås av</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrering av useriøse anrop er slått på</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrering av useriøse anrop er slått av</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ne/strings.xml b/java/com/android/dialer/spam/promo/res/values-ne/strings.xml
deleted file mode 100644
index 629b97c..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ne/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">सबै शङ्कास्पद स्प्याम कलहरूलाई फिल्टर गर्ने हो?</string>
-  <string name="spam_blocking_promo_text">तपाईंले भर्खरै रोक लगाउनुभएका जस्ता कलहरूले तपाईंलाई अब उप्रान्त बाधा पुऱ्याउने छैनन्</string>
-  <string name="spam_blocking_promo_action_filter_spam">स्प्यामलाई फिल्टर गर्नुहोस्</string>
-  <string name="spam_blocking_promo_action_dismiss">खारेज गर्नुहोस्</string>
-  <string name="spam_blocking_setting_prompt">सेटिङहरू</string>
-  <string name="spam_blocking_settings_enable_error_text">स्प्यामलाई फिल्टर गर्ने सुविधा सक्रिय गर्दा समस्या भयो</string>
-  <string name="spam_blocking_settings_disable_error_text">स्प्याम फिल्टर गर्ने सुविधा निष्क्रिय पार्दा समस्या भयो</string>
-  <string name="spam_blocking_settings_enable_complete_text">स्प्याम फिल्टर गर्ने सुविधा सक्रिय गरियो</string>
-  <string name="spam_blocking_settings_disable_complete_text">स्प्याम फिल्टर गर्ने सुविधा निष्क्रिय पारियो</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-nl/strings.xml b/java/com/android/dialer/spam/promo/res/values-nl/strings.xml
deleted file mode 100644
index 498fb53..0000000
--- a/java/com/android/dialer/spam/promo/res/values-nl/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Alle vermoedelijke spamoproepen filteren?</string>
-  <string name="spam_blocking_promo_text">Je wordt niet meer gestoord door oproepen zoals de oproep die je net hebt geblokkeerd</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spam filteren</string>
-  <string name="spam_blocking_promo_action_dismiss">Sluiten</string>
-  <string name="spam_blocking_setting_prompt">Instellingen</string>
-  <string name="spam_blocking_settings_enable_error_text">Probleem bij inschakelen van spamfilters</string>
-  <string name="spam_blocking_settings_disable_error_text">Probleem bij uitschakelen van spamfilters</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamfilter ingeschakeld</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamfilter uitgeschakeld</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-no/strings.xml b/java/com/android/dialer/spam/promo/res/values-no/strings.xml
deleted file mode 100644
index a0b645b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-no/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vil du filtrere alle potensielt useriøse anrop?</string>
-  <string name="spam_blocking_promo_text">Anrop som det du akkurat har blokkert, kommer ikke til
-      å forstyrre deg lenger</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrér useriøse anrop</string>
-  <string name="spam_blocking_promo_action_dismiss">Lukk</string>
-  <string name="spam_blocking_setting_prompt">Innstillinger</string>
-  <string name="spam_blocking_settings_enable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås på</string>
-  <string name="spam_blocking_settings_disable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås av</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrering av useriøse anrop er slått på</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrering av useriøse anrop er slått av</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pa/strings.xml b/java/com/android/dialer/spam/promo/res/values-pa/strings.xml
deleted file mode 100644
index ef0bb01..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pa/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ਕੀ ਸਾਰੀਆਂ ਸ਼ੱਕੀ ਸਪੈਮ ਕਾਲਾਂ ਫਿਲਟਰ ਕਰਨੀਆਂ ਹਨ?</string>
-  <string name="spam_blocking_promo_text">ਜਿਸ ਤਰ੍ਹਾਂ ਦੀਆਂ ਕਾਲਾਂ ਤੁਸੀਂ ਬਲਾਕ ਕੀਤੀਆਂ ਹਨ ਉਹ ਹੁਣ ਤੁਹਾਨੂੰ ਕਦੇ ਵੀ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ</string>
-  <string name="spam_blocking_promo_action_filter_spam">ਸਪੈਮ ਨੂੰ ਫਿਲਟਰ ਕਰੋ</string>
-  <string name="spam_blocking_promo_action_dismiss">ਖਾਰਜ ਕਰੋ</string>
-  <string name="spam_blocking_setting_prompt">ਸੈਟਿੰਗਾਂ</string>
-  <string name="spam_blocking_settings_enable_error_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨ ਦਾ ਵਿਕਲਪ ਚਾਲੂ ਕਰਨ ਵੇਲੇ ਸਮੱਸਿਆ ਆਈ</string>
-  <string name="spam_blocking_settings_disable_error_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨ ਦਾ ਵਿਕਲਪ ਬੰਦ ਕਰਨ ਵੇਲੇ ਸਮੱਸਿਆ ਆਈ</string>
-  <string name="spam_blocking_settings_enable_complete_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨਾ ਚਾਲੂ ਕੀਤਾ ਗਿਆ</string>
-  <string name="spam_blocking_settings_disable_complete_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨਾ ਬੰਦ ਕੀਤਾ ਗਿਆ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pl/strings.xml b/java/com/android/dialer/spam/promo/res/values-pl/strings.xml
deleted file mode 100644
index e3c35c4..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pl/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrować wszystkie połączenia podejrzanie o spam?</string>
-  <string name="spam_blocking_promo_text">Połączenia podobne do tego, które właśnie zostało zablokowane, nie będą Ci już przeszkadzać</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtruj spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Odrzuć</string>
-  <string name="spam_blocking_setting_prompt">Ustawienia</string>
-  <string name="spam_blocking_settings_enable_error_text">Nie udało się włączyć filtrowania spamu</string>
-  <string name="spam_blocking_settings_disable_error_text">Nie udało się wyłączyć filtrowania spamu</string>
-  <string name="spam_blocking_settings_enable_complete_text">Włączono filtrowanie spamu</string>
-  <string name="spam_blocking_settings_disable_complete_text">Wyłączono filtrowanie spamu</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pt-rBR/strings.xml b/java/com/android/dialer/spam/promo/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 42ad4a9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrar todas as chamadas suspeitas (spam)?</string>
-  <string name="spam_blocking_promo_text">Você não será mais incomodado por chamadas como a que acabou de bloquear</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dispensar</string>
-  <string name="spam_blocking_setting_prompt">Configurações</string>
-  <string name="spam_blocking_settings_enable_error_text">Ocorreu um problema ao ativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Ocorreu um problema ao desativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">A filtragem de spam foi ativada</string>
-  <string name="spam_blocking_settings_disable_complete_text">A filtragem de spam foi desativada</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pt-rPT/strings.xml b/java/com/android/dialer/spam/promo/res/values-pt-rPT/strings.xml
deleted file mode 100644
index cc9ad00..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrar chamadas de spam suspeitas?</string>
-  <string name="spam_blocking_promo_text">As chamadas como a que acabou de bloquear não voltarão
-      a incomodá-lo</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorar</string>
-  <string name="spam_blocking_setting_prompt">Definições</string>
-  <string name="spam_blocking_settings_enable_error_text">Problema ao ativar o filtro de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Problema ao desativar o filtro de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtro de spam ativado</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtro de spam desativado</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pt/strings.xml b/java/com/android/dialer/spam/promo/res/values-pt/strings.xml
deleted file mode 100644
index 42ad4a9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pt/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrar todas as chamadas suspeitas (spam)?</string>
-  <string name="spam_blocking_promo_text">Você não será mais incomodado por chamadas como a que acabou de bloquear</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dispensar</string>
-  <string name="spam_blocking_setting_prompt">Configurações</string>
-  <string name="spam_blocking_settings_enable_error_text">Ocorreu um problema ao ativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Ocorreu um problema ao desativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">A filtragem de spam foi ativada</string>
-  <string name="spam_blocking_settings_disable_complete_text">A filtragem de spam foi desativada</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ro/strings.xml b/java/com/android/dialer/spam/promo/res/values-ro/strings.xml
deleted file mode 100644
index e96a266..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ro/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrați apelurile care ar putea fi spam?</string>
-  <string name="spam_blocking_promo_text">Apelurile precum cel pe care tocmai l-ați blocat
-      nu vă vor mai deranja</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrați mesajele spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Închideți</string>
-  <string name="spam_blocking_setting_prompt">Setări</string>
-  <string name="spam_blocking_settings_enable_error_text">Problemă la activarea filtrării spamului</string>
-  <string name="spam_blocking_settings_disable_error_text">Problemă la dezactivarea filtrării spamului</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrarea apelurilor spam este activată.</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrarea mesajelor spam este dezactivată.</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ru/strings.xml b/java/com/android/dialer/spam/promo/res/values-ru/strings.xml
deleted file mode 100644
index 2586017..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ru/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Фильтровать спам?</string>
-  <string name="spam_blocking_promo_text">Звонки, подобные этому, больше не будут беспокоить вас.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Фильтровать спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Закрыть</string>
-  <string name="spam_blocking_setting_prompt">Настройки</string>
-  <string name="spam_blocking_settings_enable_error_text">Не удалось включить фильтрацию спама</string>
-  <string name="spam_blocking_settings_disable_error_text">Не удалось выключить фильтрацию спама</string>
-  <string name="spam_blocking_settings_enable_complete_text">Фильтрация спама включена</string>
-  <string name="spam_blocking_settings_disable_complete_text">Фильтрация спама выключена</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-si/strings.xml b/java/com/android/dialer/spam/promo/res/values-si/strings.xml
deleted file mode 100644
index 8bf35f2..0000000
--- a/java/com/android/dialer/spam/promo/res/values-si/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">සියලු සැකසහිත අයාචිත ඇමතුම් පෙරන්නද?</string>
-  <string name="spam_blocking_promo_text">ඔබ මේ දැන් අවහිර කළ එක වැනි ඇමතුම් තවදුරටත් ඔබට බාධා නොකරනු ඇත</string>
-  <string name="spam_blocking_promo_action_filter_spam">අයාචිත තැපැල් පෙරහන් කරන්න</string>
-  <string name="spam_blocking_promo_action_dismiss">ඉවත ලන්න</string>
-  <string name="spam_blocking_setting_prompt">සැකසීම්</string>
-  <string name="spam_blocking_settings_enable_error_text">අයාචිත පෙරහන ක්‍රියාත්මක කිරීමේ ගැටලුවකි</string>
-  <string name="spam_blocking_settings_disable_error_text">අයාචිත පෙරහන ක්‍රියාවිරහිත කිරීමේ ගැටලුවකි</string>
-  <string name="spam_blocking_settings_enable_complete_text">අයාචිත පෙරහන ක්‍රියාත්මකයි</string>
-  <string name="spam_blocking_settings_disable_complete_text">අයාචිත පෙරහන ක්‍රියාවිරහිතයි</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sk/strings.xml b/java/com/android/dialer/spam/promo/res/values-sk/strings.xml
deleted file mode 100644
index b57d9ed..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sk/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrovať všetky hovory, pri ktorých je podozrenie, že ide o spam?</string>
-  <string name="spam_blocking_promo_text">Hovory, ako ten, ktorý ste práve zablokovali, vás už nebudú
-      rušiť</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrovať spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Zavrieť</string>
-  <string name="spam_blocking_setting_prompt">Nastavenia</string>
-  <string name="spam_blocking_settings_enable_error_text">Filtrovanie spamu sa nepodarilo zapnúť</string>
-  <string name="spam_blocking_settings_disable_error_text">Filtrovanie spamu sa nepodarilo vypnúť</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrovanie spamu bolo zapnuté</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrovanie spamu bolo vypnuté</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sl/strings.xml b/java/com/android/dialer/spam/promo/res/values-sl/strings.xml
deleted file mode 100644
index 6a2d709..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sl/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Želite filtrirati vse domnevno neželene klice?</string>
-  <string name="spam_blocking_promo_text">Klici kot ta, ki ste ga pravkar blokirali, vas ne bodo več
-      zmotili</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriraj neželene klice</string>
-  <string name="spam_blocking_promo_action_dismiss">Opusti</string>
-  <string name="spam_blocking_setting_prompt">Nastavitve</string>
-  <string name="spam_blocking_settings_enable_error_text">Težava pri vklopu filtriranja neželenih klicev</string>
-  <string name="spam_blocking_settings_disable_error_text">Težava pri izklopu filtriranja neželenih klicev</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje neželenih klicev je vklopljeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje neželenih klicev je izklopljeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sq/strings.xml b/java/com/android/dialer/spam/promo/res/values-sq/strings.xml
deleted file mode 100644
index 8677f4a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sq/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Të filtrohen të gjitha telefonatat e dyshuara si të padëshiruara?</string>
-  <string name="spam_blocking_promo_text">Telefonatat si ajo që sapo bllokove nuk do të të shqetësojnë më</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtro të padëshiruarat</string>
-  <string name="spam_blocking_promo_action_dismiss">Hiq</string>
-  <string name="spam_blocking_setting_prompt">Cilësimet</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem me aktivizimin e filtrimit për të padëshiruarat</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem me çaktivizimin e filtrimit për të padëshiruarat</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrimi për të padëshiruarat u aktivizua</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrimi për të padëshiruarat u çaktivizua</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sr/strings.xml b/java/com/android/dialer/spam/promo/res/values-sr/strings.xml
deleted file mode 100644
index 9706917..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sr/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Желите ли да филтрирате све позиве за које се сумња да су непожељни?</string>
-  <string name="spam_blocking_promo_text">Позиви као што је овај који сте управо блокирали вас више
-      неће ометати</string>
-  <string name="spam_blocking_promo_action_filter_spam">Филтрирај непожељне позиве</string>
-  <string name="spam_blocking_promo_action_dismiss">Одбаци</string>
-  <string name="spam_blocking_setting_prompt">Подешавања</string>
-  <string name="spam_blocking_settings_enable_error_text">Проблем при укључивању филтрирања непожељних позива</string>
-  <string name="spam_blocking_settings_disable_error_text">Проблем при искључивању филтрирања непожељних позива</string>
-  <string name="spam_blocking_settings_enable_complete_text">Филтрирање непожељних позива је укључено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Филтрирање непожељних позива је искључено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sv/strings.xml b/java/com/android/dialer/spam/promo/res/values-sv/strings.xml
deleted file mode 100644
index 52b32ce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sv/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vill du filtrera alla misstänkta spamsamtal?</string>
-  <string name="spam_blocking_promo_text">Du kommer inte längre att störas av samtal som det du precis blockerade</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrera spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Stäng</string>
-  <string name="spam_blocking_setting_prompt">Inställningar</string>
-  <string name="spam_blocking_settings_enable_error_text">Problemet med att aktivera spamfilter</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem med att stänga av spamfilter</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamfiltrering har aktiverats</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamfiltrering har inaktiverats</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sw/strings.xml b/java/com/android/dialer/spam/promo/res/values-sw/strings.xml
deleted file mode 100644
index 9758fe9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sw/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Je, ungependa kuchuja simu zote unazoshuku kuwa taka?</string>
-  <string name="spam_blocking_promo_text">Simu kama ile uliyozuia sasa hivi hazitakusumbua tena</string>
-  <string name="spam_blocking_promo_action_filter_spam">Chuja Taka</string>
-  <string name="spam_blocking_promo_action_dismiss">Ondoa</string>
-  <string name="spam_blocking_setting_prompt">Mipangilio</string>
-  <string name="spam_blocking_settings_enable_error_text">Hitilafu imetokea wakati wa kuwasha kipengele cha kuchuja simu taka</string>
-  <string name="spam_blocking_settings_disable_error_text">Hitilafu imetokea wakati wa kuzima kipengele cha kuchuja simu taka</string>
-  <string name="spam_blocking_settings_enable_complete_text">Kipengele cha kuchuja simu taka kimewashwa</string>
-  <string name="spam_blocking_settings_disable_complete_text">Kipengele cha kuchuja simu taka kimezimwa</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ta/strings.xml b/java/com/android/dialer/spam/promo/res/values-ta/strings.xml
deleted file mode 100644
index 681d289..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ta/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">சந்தேகத்திற்குரிய ஸ்பேம் அழைப்புகளைத் தடுக்கவா?</string>
-  <string name="spam_blocking_promo_text">இப்போது நீங்கள் தடுத்த அழைப்பு போன்று, வேறு எந்த அழைப்புகளும் இனி
-      உங்களைத் தொந்தரவு செய்யாது</string>
-  <string name="spam_blocking_promo_action_filter_spam">ஸ்பேமைத் தடு</string>
-  <string name="spam_blocking_promo_action_dismiss">நிராகரி</string>
-  <string name="spam_blocking_setting_prompt">அமைப்புகள்</string>
-  <string name="spam_blocking_settings_enable_error_text">ஸ்பேம் தடுத்தலை இயக்குவதில் சிக்கல்</string>
-  <string name="spam_blocking_settings_disable_error_text">ஸ்பேம் தடுத்தலை முடக்குவதில் சிக்கல்</string>
-  <string name="spam_blocking_settings_enable_complete_text">ஸ்பேம் தடுத்தல் இயக்கப்பட்டது</string>
-  <string name="spam_blocking_settings_disable_complete_text">ஸ்பேம் தடுத்தல் முடக்கப்பட்டது</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-te/strings.xml b/java/com/android/dialer/spam/promo/res/values-te/strings.xml
deleted file mode 100644
index 3b7aeff..0000000
--- a/java/com/android/dialer/spam/promo/res/values-te/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">అనుమానిత స్పామ్ కాల్‌లన్నింటినీ ఫిల్టర్ చేయాలా?</string>
-  <string name="spam_blocking_promo_text">మీరు ఇప్పుడు బ్లాక్ చేసినటువంటి కాల్‌లు
-      మీకు ఇకపై అంతరాయం కలిగించవు</string>
-  <string name="spam_blocking_promo_action_filter_spam">స్పామ్‌ని ఫిల్టర్ చేయి</string>
-  <string name="spam_blocking_promo_action_dismiss">విస్మరించు</string>
-  <string name="spam_blocking_setting_prompt">సెట్టింగ్‌లు</string>
-  <string name="spam_blocking_settings_enable_error_text">స్పామ్ ఫిల్టరింగ్‌ని ఆన్ చేస్తున్నప్పుడు సమస్య ఏర్పడింది</string>
-  <string name="spam_blocking_settings_disable_error_text">స్పామ్ ఫిల్టరింగ్‌ని ఆఫ్ చేస్తున్నప్పుడు సమస్య ఏర్పడింది</string>
-  <string name="spam_blocking_settings_enable_complete_text">స్పామ్ ఫిల్టరింగ్ ఆన్ చేయబడింది</string>
-  <string name="spam_blocking_settings_disable_complete_text">స్పామ్ ఫిల్టరింగ్ ఆఫ్ చేయబడింది</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-th/strings.xml b/java/com/android/dialer/spam/promo/res/values-th/strings.xml
deleted file mode 100644
index 702486d..0000000
--- a/java/com/android/dialer/spam/promo/res/values-th/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">กรองสายที่สงสัยว่าเป็นสแปมทั้งหมดไหม</string>
-  <string name="spam_blocking_promo_text">จะไม่มีสายแบบเดียวกับที่บล็อกเมื่อสักครู่
-      มารบกวนคุณอีกต่อไป</string>
-  <string name="spam_blocking_promo_action_filter_spam">กรองสแปม</string>
-  <string name="spam_blocking_promo_action_dismiss">ปิด</string>
-  <string name="spam_blocking_setting_prompt">การตั้งค่า</string>
-  <string name="spam_blocking_settings_enable_error_text">มีปัญหาในการเปิดการกรองสแปม</string>
-  <string name="spam_blocking_settings_disable_error_text">มีปัญหาในการปิดการกรองสแปม</string>
-  <string name="spam_blocking_settings_enable_complete_text">เปิดตัวกรองสแปมแล้ว</string>
-  <string name="spam_blocking_settings_disable_complete_text">ปิดตัวกรองสแปมแล้ว</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-tl/strings.xml b/java/com/android/dialer/spam/promo/res/values-tl/strings.xml
deleted file mode 100644
index 8844c13..0000000
--- a/java/com/android/dialer/spam/promo/res/values-tl/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">I-filter ang lahat ng pinaghihinalaang spam na tawag?</string>
-  <string name="spam_blocking_promo_text">Ang mga tawag na kaka-block mo lang ay hindi 
-      ka na iistorbohin</string>
-  <string name="spam_blocking_promo_action_filter_spam">I-filter ang Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">I-dismiss</string>
-  <string name="spam_blocking_setting_prompt">Mga Setting</string>
-  <string name="spam_blocking_settings_enable_error_text">May problema sa pag-on ng pag-filter ng spam</string>
-  <string name="spam_blocking_settings_disable_error_text">May problema sa pag-off ng pag-filter ng spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">In-on ang pag-filter ng spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">In-off ang pag-filter ng spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-tr/strings.xml b/java/com/android/dialer/spam/promo/res/values-tr/strings.xml
deleted file mode 100644
index 0eb6609..0000000
--- a/java/com/android/dialer/spam/promo/res/values-tr/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Spam olabilecek çağrılar filtrelensin mi?</string>
-  <string name="spam_blocking_promo_text">Az önce engellediğiniz gibi çağrılar artık
-      sizi rahatsız edemez</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spam Çağrıları Filtrele</string>
-  <string name="spam_blocking_promo_action_dismiss">Kapat</string>
-  <string name="spam_blocking_setting_prompt">Ayarlar</string>
-  <string name="spam_blocking_settings_enable_error_text">Spam filtresi etkinleştirilirken sorun oluştu</string>
-  <string name="spam_blocking_settings_disable_error_text">Spam filtresi devre dışı bırakılırken sorun oluştu</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtresi etkinleştirildi</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtresi devre dışı bırakıldı</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-uk/strings.xml b/java/com/android/dialer/spam/promo/res/values-uk/strings.xml
deleted file mode 100644
index 16b6597..0000000
--- a/java/com/android/dialer/spam/promo/res/values-uk/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Відфільтрувати всі виклики, які можуть бути спамом?</string>
-  <string name="spam_blocking_promo_text">Виклики, подібні до щойно заблокованого, більше не надходитимуть</string>
-  <string name="spam_blocking_promo_action_filter_spam">Відфільтрувати спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Відхилити</string>
-  <string name="spam_blocking_setting_prompt">Налаштування</string>
-  <string name="spam_blocking_settings_enable_error_text">Проблема з увімкненням спам-фільтра</string>
-  <string name="spam_blocking_settings_disable_error_text">Проблема з вимкненням спам-фільтра</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спам-фільтр увімкнено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спам-фільтр вимкнено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ur/strings.xml b/java/com/android/dialer/spam/promo/res/values-ur/strings.xml
deleted file mode 100644
index 8fc0613..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ur/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">کیا تمام مشتبہ اسپام کالز فلٹر کریں؟</string>
-  <string name="spam_blocking_promo_text">کال جس کو آپ نے ابھی مسدود کیا ہے اس طرح کی کالز آپ کو مزید
-      پریشان نہیں کریں گی</string>
-  <string name="spam_blocking_promo_action_filter_spam">سپام فلٹر کریں</string>
-  <string name="spam_blocking_promo_action_dismiss">برخاست کریں</string>
-  <string name="spam_blocking_setting_prompt">ترتیبات</string>
-  <string name="spam_blocking_settings_enable_error_text">اسپام فلٹر کرنے کی سہولت کو آن کرنے میں مسئلہ</string>
-  <string name="spam_blocking_settings_disable_error_text">اسپام فلٹر کرنے کی سہولت کو آف کرنے میں مسئلہ</string>
-  <string name="spam_blocking_settings_enable_complete_text">سپام فلٹر کرنے کی سہولت آن ہے</string>
-  <string name="spam_blocking_settings_disable_complete_text">سپام فلٹر کرنے کی سہولت آف ہے</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-uz/strings.xml b/java/com/android/dialer/spam/promo/res/values-uz/strings.xml
deleted file mode 100644
index 5856c25..0000000
--- a/java/com/android/dialer/spam/promo/res/values-uz/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Spam deb taxmin qilingan barcha chaqiruvlar filtrlansinmi?</string>
-  <string name="spam_blocking_promo_text">Shunga o‘xshash chaqiruvlar sizni boshqa bezovta qilmaydi</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spamni filtrlash</string>
-  <string name="spam_blocking_promo_action_dismiss">Yopish</string>
-  <string name="spam_blocking_setting_prompt">Sozlamalar</string>
-  <string name="spam_blocking_settings_enable_error_text">Spam chaqiruvlarni filtrlar funksiyasi yoqilmadi</string>
-  <string name="spam_blocking_settings_disable_error_text">Spam chaqiruvlarni filtrlar funksiyasi o‘chmadi</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam chaqiruvlarni filtrlash funksiyasi yoqildi</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam chaqiruvlarni filtrlash funksiyasi o‘chdi</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-vi/strings.xml b/java/com/android/dialer/spam/promo/res/values-vi/strings.xml
deleted file mode 100644
index 7eb4c0b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-vi/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Lọc tất cả các cuộc gọi nghi ngờ là spam?</string>
-  <string name="spam_blocking_promo_text">Các cuộc gọi như cuộc gọi bạn vừa chặn sẽ không còn
-      làm phiền bạn nữa</string>
-  <string name="spam_blocking_promo_action_filter_spam">Lọc spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Bỏ qua</string>
-  <string name="spam_blocking_setting_prompt">Cài đặt</string>
-  <string name="spam_blocking_settings_enable_error_text">Đã xảy ra sự cố khi bật tính năng lọc spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Đã xảy ra sự cố khi tắt tính năng lọc spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Đã bật tính năng lọc spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Đã tắt tính năng lọc spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zh-rCN/strings.xml b/java/com/android/dialer/spam/promo/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 560d840..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">要过滤所有疑似骚扰电话吗?</string>
-  <string name="spam_blocking_promo_text">您日后不会再收到与刚刚所屏蔽电话类似的骚扰电话</string>
-  <string name="spam_blocking_promo_action_filter_spam">过滤骚扰电话</string>
-  <string name="spam_blocking_promo_action_dismiss">关闭</string>
-  <string name="spam_blocking_setting_prompt">设置</string>
-  <string name="spam_blocking_settings_enable_error_text">启用骚扰电话过滤功能时出错</string>
-  <string name="spam_blocking_settings_disable_error_text">停用骚扰电话过滤功能时出错</string>
-  <string name="spam_blocking_settings_enable_complete_text">骚扰电话过滤功能已启用</string>
-  <string name="spam_blocking_settings_disable_complete_text">骚扰电话过滤功能已停用</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zh-rHK/strings.xml b/java/com/android/dialer/spam/promo/res/values-zh-rHK/strings.xml
deleted file mode 100644
index d0ea019..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">要過濾所有疑似垃圾來電嗎?</string>
-  <string name="spam_blocking_promo_text">剛封鎖的類似來電不會再
-      打擾您</string>
-  <string name="spam_blocking_promo_action_filter_spam">過濾垃圾來電</string>
-  <string name="spam_blocking_promo_action_dismiss">關閉</string>
-  <string name="spam_blocking_setting_prompt">設定</string>
-  <string name="spam_blocking_settings_enable_error_text">開啟垃圾來電濾除功能時發生錯誤</string>
-  <string name="spam_blocking_settings_disable_error_text">關閉垃圾來電濾除功能時發生錯誤</string>
-  <string name="spam_blocking_settings_enable_complete_text">已開啟垃圾來電過濾功能</string>
-  <string name="spam_blocking_settings_disable_complete_text">已關閉垃圾來電過濾功能</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zh-rTW/strings.xml b/java/com/android/dialer/spam/promo/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 0ffc0ed..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">要過濾所有可疑的騷擾/廣告來電嗎?</string>
-  <string name="spam_blocking_promo_text">剛才封鎖的類似來電將不會再打擾你</string>
-  <string name="spam_blocking_promo_action_filter_spam">過濾騷擾/廣告電話</string>
-  <string name="spam_blocking_promo_action_dismiss">關閉</string>
-  <string name="spam_blocking_setting_prompt">設定</string>
-  <string name="spam_blocking_settings_enable_error_text">無法開啟過濾騷擾/廣告電話的功能</string>
-  <string name="spam_blocking_settings_disable_error_text">無法關閉過濾騷擾/廣告電話的功能</string>
-  <string name="spam_blocking_settings_enable_complete_text">已開啟過濾騷擾/廣告電話的功能</string>
-  <string name="spam_blocking_settings_disable_complete_text">已關閉過濾騷擾/廣告電話的功能</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zu/strings.xml b/java/com/android/dialer/spam/promo/res/values-zu/strings.xml
deleted file mode 100644
index 88fd297..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zu/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Hlunga onke amakholi kagaxekile asolisayo?</string>
-  <string name="spam_blocking_promo_text">Amakholi afana nale osanda kuyivimbela ngeke
-      asakuphazamisa</string>
-  <string name="spam_blocking_promo_action_filter_spam">Hlunga ugaxekile</string>
-  <string name="spam_blocking_promo_action_dismiss">Cashisa</string>
-  <string name="spam_blocking_setting_prompt">Izilungiselelo</string>
-  <string name="spam_blocking_settings_enable_error_text">Inkinga ukuvula isihlungi sikagaxekile</string>
-  <string name="spam_blocking_settings_disable_error_text">Inkinga ngokuvala isihlungi sikagaxekile</string>
-  <string name="spam_blocking_settings_enable_complete_text">Ukuhlunga kogaxekile kuvuliwe</string>
-  <string name="spam_blocking_settings_disable_complete_text">Ukuhlunga kogaxekile kuvaliwe</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values/strings.xml b/java/com/android/dialer/spam/promo/res/values/strings.xml
deleted file mode 100644
index 91036be..0000000
--- a/java/com/android/dialer/spam/promo/res/values/strings.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<resources>
-  <!-- Title for the spam blocking promo dialog. [CHAR LIMIT=100] -->
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <!-- Text for the spam blocking promo dialog. [CHAR LIMIT=NONE] -->
-  <string name="spam_blocking_promo_text">Calls like the one you just blocked will no longer
-      disturb you</string>
-  <!-- Label for filter spam dialog action. [CHAR LIMIT=32] -->
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <!-- Label for "Dismiss" dialog action. [CHAR LIMIT=32] -->
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <!-- Button text to prompt a user to open spam blocking setting [CHAR LIMIT=NONE] -->
-  <string name="spam_blocking_setting_prompt">Settings</string>
-
-  <!-- Spam blocking error text, shown when error happens during setting enabling. -->
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <!-- Spam blocking error text, shown when error happens during setting disabling. -->
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-
-  <!-- On complete text shown when spam blocking is enabled successfully. -->
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <!-- On complete text shown when spam blocking is disabled successfully. -->
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/strictmode/DialerStrictMode.java b/java/com/android/dialer/strictmode/DialerStrictMode.java
deleted file mode 100644
index 462db57..0000000
--- a/java/com/android/dialer/strictmode/DialerStrictMode.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2017 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.strictmode;
-
-import android.app.Application;
-import android.support.annotation.MainThread;
-
-/** Interface for strict mode to handle strict mode violations. */
-public interface DialerStrictMode {
-
-  /** Initializes strict mode on application start. */
-  @MainThread
-  void onApplicationCreate(Application application);
-}
diff --git a/java/com/android/dialer/strictmode/StrictModeComponent.java b/java/com/android/dialer/strictmode/StrictModeComponent.java
deleted file mode 100644
index 7b9f48e..0000000
--- a/java/com/android/dialer/strictmode/StrictModeComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2017 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.strictmode;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-/** Dagger component for DialerStrictMode. */
-@Subcomponent
-public abstract class StrictModeComponent {
-
-  public abstract DialerStrictMode getDialerStrictMode();
-
-  public static StrictModeComponent get(Context context) {
-    return ((StrictModeComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .strictModeComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    StrictModeComponent strictModeComponent();
-  }
-}
diff --git a/java/com/android/dialer/strictmode/StrictModeUtils.java b/java/com/android/dialer/strictmode/StrictModeUtils.java
deleted file mode 100644
index 27f8142..0000000
--- a/java/com/android/dialer/strictmode/StrictModeUtils.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2017 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.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.buildtype.BuildType.Type;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.storage.StorageComponent;
-
-/** Utilities for enforcing strict-mode in an app. */
-public final class StrictModeUtils {
-
-  private static final ThreadPolicy THREAD_NO_PENALTY =
-      new StrictMode.ThreadPolicy.Builder().permitAll().build();
-
-  /**
-   * Convenience method for disabling and enabling the thread policy death penalty using lambdas.
-   *
-   * <p>For example:
-   *
-   * <p><code>
-   *   Value foo = StrictModeUtils.bypass(() -> doDiskAccessOnMainThreadReturningValue());
-   * </code>
-   *
-   * <p>The thread policy is only mutated if this is called from the main thread.
-   */
-  @AnyThread
-  public static <T> T bypass(Supplier<T> supplier) {
-    if (isStrictModeAllowed() && onMainThread()) {
-      ThreadPolicy originalPolicy = StrictMode.getThreadPolicy();
-      StrictMode.setThreadPolicy(THREAD_NO_PENALTY);
-      try {
-        return supplier.get();
-      } finally {
-        StrictMode.setThreadPolicy(originalPolicy);
-      }
-    }
-    return supplier.get();
-  }
-
-  /**
-   * Convenience method for disabling and enabling the thread policy death penalty using lambdas.
-   *
-   * <p>For example:
-   *
-   * <p><code>
-   *   StrictModeUtils.bypass(() -> doDiskAccessOnMainThread());
-   * </code>
-   *
-   * <p>The thread policy is only mutated if this is called from the main thread.
-   */
-  @AnyThread
-  public static void bypass(Runnable runnable) {
-    if (isStrictModeAllowed() && onMainThread()) {
-      ThreadPolicy originalPolicy = StrictMode.getThreadPolicy();
-      StrictMode.setThreadPolicy(THREAD_NO_PENALTY);
-      try {
-        runnable.run();
-      } finally {
-        StrictMode.setThreadPolicy(originalPolicy);
-      }
-    } else {
-      runnable.run();
-    }
-  }
-
-  public static boolean isStrictModeAllowed() {
-    return BuildType.get() == Type.BUGFOOD;
-  }
-
-  private static boolean onMainThread() {
-    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
-    StorageComponent.get(application).unencryptedSharedPrefs();
-  }
-
-  private StrictModeUtils() {}
-}
diff --git a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
deleted file mode 100644
index 4e527e5..0000000
--- a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2017 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.strictmode.impl;
-
-import android.app.Application;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.StrictMode;
-import android.os.StrictMode.ThreadPolicy;
-import android.os.StrictMode.VmPolicy;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.strictmode.DialerStrictMode;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.google.auto.value.AutoValue;
-import java.util.Map;
-import javax.inject.Inject;
-
-final class SystemDialerStrictMode implements DialerStrictMode {
-  private static final VmPolicy VM_DEATH_PENALTY =
-      new StrictMode.VmPolicy.Builder().penaltyLog().penaltyDeath().build();
-
-  private static final ThreadPolicy THREAD_DEATH_PENALTY =
-      new StrictMode.ThreadPolicy.Builder().penaltyLog().penaltyDeath().build();
-
-  @Inject
-  public SystemDialerStrictMode() {}
-
-  @MainThread
-  @Override
-  public void onApplicationCreate(Application application) {
-    if (StrictModeUtils.isStrictModeAllowed()) {
-      StrictModeUtils.warmupSharedPrefs(application);
-      setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY);
-      setRecommendedVMPolicy(VM_DEATH_PENALTY);
-
-      // Because Android resets StrictMode policies after Application.onCreate is done, we set it
-      // again right after.
-      // See cl/105932355 for the discussion.
-      // See a bug for the public bug.
-      Handler handler = new Handler(Looper.myLooper());
-      handler.postAtFrontOfQueue(() -> setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY));
-    }
-  }
-
-  /**
-   * Set the recommended policy for the app.
-   *
-   * @param threadPenalties policy with preferred penalties. Detection bits will be ignored.
-   */
-  private static void setRecommendedMainThreadPolicy(StrictMode.ThreadPolicy threadPenalties) {
-    StrictMode.ThreadPolicy threadPolicy =
-        new StrictMode.ThreadPolicy.Builder(threadPenalties).detectAll().build();
-    StrictMode.setThreadPolicy(threadPolicy);
-  }
-
-  /**
-   * Set the recommended policy for the app.
-   *
-   * @param vmPenalties policy with preferred penalties. Detection bits should be unset.
-   */
-  private static void setRecommendedVMPolicy(StrictMode.VmPolicy vmPenalties) {
-    setRecommendedVMPolicy(vmPenalties, StrictModeVmConfig.empty());
-  }
-
-  /**
-   * Set the recommended policy for the app.
-   *
-   * @param vmPenalties policy with preferred penalties. Detection bits should be unset.
-   */
-  private static void setRecommendedVMPolicy(
-      StrictMode.VmPolicy vmPenalties, StrictModeVmConfig config) {
-    Assert.isNotNull(config);
-    StrictMode.VmPolicy.Builder vmPolicyBuilder =
-        new StrictMode.VmPolicy.Builder(vmPenalties)
-            .detectLeakedClosableObjects()
-            .detectLeakedSqlLiteObjects()
-            .detectContentUriWithoutPermission();
-      // TODO(azlatin): Enable detecting untagged sockets once: a bug is fixed.
-      // vmPolicyBuilder.detectUntaggedSockets();
-    StrictMode.setVmPolicy(vmPolicyBuilder.build());
-  }
-
-  /** VmPolicy configuration. */
-  @AutoValue
-  abstract static class StrictModeVmConfig {
-    /** A map of a class to the maximum number of allowed instances of that class. */
-    @Nullable
-    abstract Map<Class<?>, Integer> maxInstanceLimits();
-
-    public static StrictModeVmConfig empty() {
-      return builder().build();
-    }
-
-    public static Builder builder() {
-      return new AutoValue_SystemDialerStrictMode_StrictModeVmConfig.Builder();
-    }
-
-    /** VmPolicy configuration builder. */
-    @AutoValue.Builder
-    public abstract static class Builder {
-      public abstract Builder setMaxInstanceLimits(Map<Class<?>, Integer> limits);
-
-      public abstract StrictModeVmConfig build();
-
-      Builder() {}
-    }
-
-    StrictModeVmConfig() {}
-  }
-}
diff --git a/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java b/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java
deleted file mode 100644
index ac6416c..0000000
--- a/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2017 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.strictmode.impl;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.strictmode.DialerStrictMode;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Module which binds {@link SystemDialerStrictMode}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class SystemStrictModeModule {
-
-  @Binds
-  @Singleton
-  public abstract DialerStrictMode bindDialerStrictMode(SystemDialerStrictMode impl);
-}
diff --git a/java/com/android/dialer/time/Clock.java b/java/com/android/dialer/time/Clock.java
deleted file mode 100644
index 4b7edc6..0000000
--- a/java/com/android/dialer/time/Clock.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2017 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.time;
-
-/** Functional interface for providing time since epoch. */
-public interface Clock {
-  /** Returns milliseconds since epoch. */
-  long currentTimeMillis();
-}
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java
index efc094c..76f54b6 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java
@@ -37,7 +37,6 @@
 import android.view.View.OnClickListener;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
@@ -552,11 +551,7 @@
   }
 
   private String getLearnMoreUrl() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(
-            "voicemail_transcription_learn_more_url",
-            context.getString(R.string.dialer_terms_and_conditions_learn_more_url));
+    return context.getString(R.string.dialer_terms_and_conditions_learn_more_url);
   }
 
   private int getTosDeclinedDialogMessageId() {
diff --git a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
index 00b5901..3b4df9d 100644
--- a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
@@ -36,7 +36,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.preference.SwitchPreferenceWithClickableSummary;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.notification.NotificationChannelManager;
@@ -310,15 +309,7 @@
   }
 
   private void setupChangeGreetingPreference() {
-    if (!ConfigProviderComponent.get(getContext())
-        .getConfigProvider()
-        .getBoolean("voicemail_change_greeting_enabled", false)) {
-      getPreferenceScreen().removePreference(changeGreetingPreference);
-      return;
-    }
-
-    Intent changeGreetingIntent = new Intent(getContext(), CurrentVoicemailGreetingActivity.class);
-    changeGreetingPreference.setIntent(changeGreetingIntent);
+    getPreferenceScreen().removePreference(changeGreetingPreference);
   }
 
   private void setupAdvancedSettingsPreference() {
diff --git a/java/com/android/dialer/voicemailstatus/AndroidManifest.xml b/java/com/android/dialer/voicemailstatus/AndroidManifest.xml
deleted file mode 100644
index a39894c..0000000
--- a/java/com/android/dialer/voicemailstatus/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.dialer.voicemailstatus">
-</manifest>
diff --git a/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java b/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java
index 8010e02..63520d7 100644
--- a/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java
+++ b/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java
@@ -44,7 +44,6 @@
       "has_active_voicemail_provider";
   private SharedPreferences prefs;
   private boolean hasActiveVoicemailProvider;
-  private CallLogQueryHandler callLogQueryHandler;
   private Context context;
   private Callback callback;
 
@@ -55,23 +54,6 @@
     hasActiveVoicemailProvider = prefs.getBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false);
   }
 
-  /**
-   * @return whether visual voicemail is enabled. Result is cached, call asyncUpdate() to update the
-   *     result.
-   */
-  public boolean isVisualVoicemailEnabled() {
-    return hasActiveVoicemailProvider;
-  }
-
-  /**
-   * Perform an async query into the system to check the status of visual voicemail. If the status
-   * has changed, Callback.onVisualVoicemailEnabledStatusChanged() will be called.
-   */
-  public void asyncUpdate() {
-    callLogQueryHandler = new CallLogQueryHandler(context, context.getContentResolver(), this);
-    callLogQueryHandler.fetchVoicemailStatus();
-  }
-
   @Override
   public void onVoicemailStatusFetched(Cursor statusCursor) {
     boolean hasActiveVoicemailProvider =
diff --git a/java/com/android/dialer/widget/ResizingTextTextView.java b/java/com/android/dialer/widget/ResizingTextTextView.java
deleted file mode 100644
index 100b2ca..0000000
--- a/java/com/android/dialer/widget/ResizingTextTextView.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2014 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.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.util.AttributeSet;
-import android.widget.TextView;
-import com.android.dialer.util.ViewUtil;
-
-/** TextView which resizes dynamically with respect to text length. */
-public class ResizingTextTextView extends TextView {
-
-  private final int originalTextSize;
-  private final int minTextSize;
-
-  public ResizingTextTextView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-    originalTextSize = (int) getTextSize();
-    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResizingText);
-    minTextSize =
-        (int) a.getDimension(R.styleable.ResizingText_resizing_text_min_size, originalTextSize);
-    a.recycle();
-  }
-
-  @Override
-  protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
-    super.onTextChanged(text, start, lengthBefore, lengthAfter);
-    ViewUtil.resizeText(this, originalTextSize, minTextSize);
-  }
-
-  @Override
-  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-    super.onSizeChanged(w, h, oldw, oldh);
-    ViewUtil.resizeText(this, originalTextSize, minTextSize);
-  }
-}
diff --git a/java/com/android/dialer/widget/TextViewPreference.java b/java/com/android/dialer/widget/TextViewPreference.java
deleted file mode 100644
index 1c479d4..0000000
--- a/java/com/android/dialer/widget/TextViewPreference.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.widget;
-
-import android.content.Context;
-import android.preference.Preference;
-import android.text.method.LinkMovementMethod;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.TextView;
-
-/**
- * Provides a {@link TextView} inside a preference. Useful for displaying static text which may
- * contain hyperlinks.
- */
-public class TextViewPreference extends Preference {
-
-  /**
-   * The resource ID of the text to be populated in the {@link TextView} when a resource ID is used.
-   */
-  private int textResourceId = 0;
-
-  /** The text to be populated in the {@link TextView} when a {@link CharSequence} is used. */
-  private CharSequence text;
-
-  /** The {@link TextView} containing the text. */
-  private TextView textView;
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   * @param attrs The attributes of the XML tag that is inflating the preference.
-   * @param defStyleAttr An attribute in the current theme that contains a reference to a style
-   *     resource that supplies default values for the view. Can be 0 to not look for defaults.
-   * @param defStyleRes A resource identifier of a style resource that supplies default values for
-   *     the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not
-   *     look for defaults.
-   */
-  public TextViewPreference(
-      Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-    super(context, attrs, defStyleAttr, defStyleRes);
-
-    setLayoutResource(R.layout.text_view_preference);
-  }
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   * @param attrs The attributes of the XML tag that is inflating the preference.
-   * @param defStyleAttr An attribute in the current theme that contains a reference to a style
-   *     resource that supplies default values for the view. Can be 0 to not look for defaults.
-   */
-  public TextViewPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-    this(context, attrs, defStyleAttr, 0);
-  }
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   * @param attrs The attributes of the XML tag that is inflating the preference.
-   */
-  public TextViewPreference(Context context, AttributeSet attrs) {
-    this(context, attrs, android.R.attr.preferenceStyle, 0);
-  }
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   */
-  public TextViewPreference(Context context) {
-    super(context, null);
-
-    setLayoutResource(R.layout.text_view_preference);
-  }
-
-  /**
-   * Handles binding the preference.
-   *
-   * @param view The view.
-   */
-  @Override
-  protected void onBindView(View view) {
-    super.onBindView(view);
-    textView = (TextView) view.findViewById(R.id.text);
-    if (textResourceId != 0) {
-      setTitle(textResourceId);
-    } else if (text != null) {
-      setTitle(text);
-    } else if (getTitleRes() != 0) {
-      setTitle(getTitleRes());
-    }
-  }
-
-  /**
-   * Sets the preference title from a {@link CharSequence}.
-   *
-   * @param text The text.
-   */
-  @Override
-  public void setTitle(CharSequence text) {
-    textResourceId = 0;
-    this.text = text;
-    if (textView == null) {
-      return;
-    }
-
-    textView.setMovementMethod(LinkMovementMethod.getInstance());
-    textView.setText(text);
-  }
-
-  /**
-   * Sets the preference title from a resource id.
-   *
-   * @param textResId The string resource Id.
-   */
-  @Override
-  public void setTitle(int textResId) {
-    textResourceId = textResId;
-    setTitle(getContext().getString(textResId));
-  }
-}
diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml
index b10e044..2ce765f 100644
--- a/java/com/android/incallui/AndroidManifest.xml
+++ b/java/com/android/incallui/AndroidManifest.xml
@@ -125,10 +125,6 @@
         android:exported="false"
         android:name="com.android.incallui.NotificationBroadcastReceiver"/>
 
-    <receiver
-        android:exported="false"
-        android:name=".ReturnToCallActionReceiver"/>
-
   </application>
 
 </manifest>
diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java
index 8b789f3..b134d41 100644
--- a/java/com/android/incallui/AnswerScreenPresenter.java
+++ b/java/com/android/incallui/AnswerScreenPresenter.java
@@ -94,17 +94,7 @@
 
   @Override
   public void onAnswer(boolean answerVideoAsAudio) {
-
-    DialerCall incomingCall = CallList.getInstance().getIncomingCall();
-    InCallActivity inCallActivity =
-        (InCallActivity) answerScreen.getAnswerScreenFragment().getActivity();
-    ListenableFuture<Void> answerPrecondition;
-
-    if (incomingCall != null && inCallActivity != null) {
-      answerPrecondition = inCallActivity.getSpeakEasyCallManager().onNewIncomingCall(incomingCall);
-    } else {
-      answerPrecondition = Futures.immediateFuture(null);
-    }
+    ListenableFuture<Void> answerPrecondition = Futures.immediateFuture(null);
 
     Futures.addCallback(
         answerPrecondition,
@@ -168,17 +158,6 @@
   }
 
   @Override
-  public void onSpeakEasyCall() {
-    LogUtil.enterBlock("AnswerScreenPresenter.onSpeakEasyCall");
-    DialerCall incomingCall = CallList.getInstance().getIncomingCall();
-    if (incomingCall == null) {
-      LogUtil.i("AnswerScreenPresenter.onSpeakEasyCall", "incomingCall == null");
-      return;
-    }
-    incomingCall.setIsSpeakEasyCall(true);
-  }
-
-  @Override
   public void onAnswerAndReleaseCall() {
     LogUtil.enterBlock("AnswerScreenPresenter.onAnswerAndReleaseCall");
     DialerCall activeCall = CallList.getInstance().getActiveCall();
diff --git a/java/com/android/incallui/AnswerScreenPresenterStub.java b/java/com/android/incallui/AnswerScreenPresenterStub.java
index e85fdaa..3c85a1f 100644
--- a/java/com/android/incallui/AnswerScreenPresenterStub.java
+++ b/java/com/android/incallui/AnswerScreenPresenterStub.java
@@ -37,8 +37,6 @@
   @Override
   public void onReject() {}
 
-  @Override
-  public void onSpeakEasyCall() {}
 
   @Override
   public void onAnswerAndReleaseCall() {}
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index 0fa833e..e72f4ec 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -551,7 +551,7 @@
                 .getCallList()
                 .getAllCalls()
                 .stream()
-                .noneMatch(c -> c != null && c.isSpeakEasyCall())
+                .noneMatch(c -> c != null)
             && call.can(android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
     final boolean showUpgradeToVideo = !isVideo && (hasVideoCallCapabilities(call));
     final boolean showDowngradeToAudio = isVideo && isDowngradeToAudioSupported(call);
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index dd1fc4f..fb7dc74 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -46,7 +46,6 @@
 import com.android.contacts.common.ContactsUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.ContactsComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
@@ -98,19 +97,11 @@
    */
   private static final long ACCESSIBILITY_ANNOUNCEMENT_DELAY_MILLIS = 500;
 
-  /** Flag to allow the user's current location to be shown during emergency calls. */
-  private static final String CONFIG_ENABLE_EMERGENCY_LOCATION = "config_enable_emergency_location";
-
-  private static final boolean CONFIG_ENABLE_EMERGENCY_LOCATION_DEFAULT = true;
-
   /**
    * Make it possible to not get location during an emergency call if the battery is too low, since
    * doing so could trigger gps and thus potentially cause the phone to die in the middle of the
    * call.
    */
-  private static final String CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION =
-      "min_battery_percent_for_emergency_location";
-
   private static final long CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION_DEFAULT = 10;
 
   private final Context context;
@@ -764,12 +755,6 @@
   }
 
   private boolean shouldShowLocation() {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_ENABLE_EMERGENCY_LOCATION, CONFIG_ENABLE_EMERGENCY_LOCATION_DEFAULT)) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "disabled by config.");
-      return false;
-    }
     if (!isPotentialEmergencyCall()) {
       LogUtil.i("CallCardPresenter.getLocationFragment", "shouldn't show location");
       return false;
@@ -836,12 +821,7 @@
     int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
     int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
     float batteryPercent = (100f * level) / scale;
-    long threshold =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(
-                CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION,
-                CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION_DEFAULT);
+    long threshold = CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION_DEFAULT;
     LogUtil.i(
         "CallCardPresenter.isBatteryTooLowForEmergencyLocation",
         "percent charged: " + batteryPercent + ", min required charge: " + threshold);
diff --git a/java/com/android/incallui/CallerInfoAsyncQuery.java b/java/com/android/incallui/CallerInfoAsyncQuery.java
index 35011cb..69933a0 100644
--- a/java/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/java/com/android/incallui/CallerInfoAsyncQuery.java
@@ -38,7 +38,6 @@
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.strictmode.StrictModeUtils;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -188,7 +187,7 @@
       OnQueryCompleteListener listener,
       Object cookie) {
     Trace.beginSection("CallerInfoAsyncQuery.startOtherDirectoriesQuery");
-    long[] directoryIds = StrictModeUtils.bypass(() -> getDirectoryIds(context));
+    long[] directoryIds = getDirectoryIds(context);
     int size = directoryIds.length;
     if (size == 0) {
       Trace.endSection();
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index f23f445..4f71611 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -61,7 +61,6 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.preferredsim.PreferredAccountRecorder;
@@ -92,7 +91,6 @@
 import com.android.incallui.rtt.protocol.RttCallScreen;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegate;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegateFactory;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
 import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment;
 import com.android.incallui.video.bindings.VideoBindings;
 import com.android.incallui.video.protocol.VideoCallScreen;
@@ -145,8 +143,6 @@
   private boolean didShowInCallScreen;
   private boolean didShowVideoCallScreen;
   private boolean didShowRttCallScreen;
-  private boolean didShowSpeakEasyScreen;
-  private String lastShownSpeakEasyScreenUniqueCallid = "";
   private boolean dismissKeyguard;
   private boolean isInShowMainInCallFragment;
   private boolean isRecreating; // whether the activity is going to be recreated
@@ -155,7 +151,6 @@
   private boolean touchDownWhenPseudoScreenOff;
   private int[] backgroundDrawableColors;
   @DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
-  private SpeakEasyCallManager speakEasyCallManager;
   private DialogFragment rttRequestDialogFragment;
 
   public static Intent getIntent(
@@ -195,7 +190,6 @@
       didShowInCallScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_IN_CALL_SCREEN);
       didShowVideoCallScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_VIDEO_CALL_SCREEN);
       didShowRttCallScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_RTT_CALL_SCREEN);
-      didShowSpeakEasyScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_SPEAK_EASY_SCREEN);
     }
 
     setWindowFlags();
@@ -418,7 +412,6 @@
     out.putBoolean(KeysForSavedInstance.DID_SHOW_IN_CALL_SCREEN, didShowInCallScreen);
     out.putBoolean(KeysForSavedInstance.DID_SHOW_VIDEO_CALL_SCREEN, didShowVideoCallScreen);
     out.putBoolean(KeysForSavedInstance.DID_SHOW_RTT_CALL_SCREEN, didShowRttCallScreen);
-    out.putBoolean(KeysForSavedInstance.DID_SHOW_SPEAK_EASY_SCREEN, didShowSpeakEasyScreen);
 
     super.onSaveInstanceState(out);
     isVisible = false;
@@ -935,8 +928,7 @@
   public boolean getCallCardFragmentVisible() {
     return didShowInCallScreen
         || didShowVideoCallScreen
-        || didShowRttCallScreen
-        || didShowSpeakEasyScreen;
+        || didShowRttCallScreen;
   }
 
   public void dismissKeyguard(boolean dismiss) {
@@ -1209,21 +1201,18 @@
     ShouldShowUiResult shouldShowAnswerUi = getShouldShowAnswerUi();
     ShouldShowUiResult shouldShowVideoUi = getShouldShowVideoUi();
     ShouldShowUiResult shouldShowRttUi = getShouldShowRttUi();
-    ShouldShowUiResult shouldShowSpeakEasyUi = getShouldShowSpeakEasyUi();
     LogUtil.i(
         "InCallActivity.showMainInCallFragment",
         "shouldShowAnswerUi: %b, shouldShowRttUi: %b, shouldShowVideoUi: %b, "
-            + "shouldShowSpeakEasyUi: %b, didShowAnswerScreen: %b, didShowInCallScreen: %b, "
-            + "didShowRttCallScreen: %b, didShowVideoCallScreen: %b, didShowSpeakEasyScreen: %b",
+            + "didShowAnswerScreen: %b, didShowInCallScreen: %b, "
+            + "didShowRttCallScreen: %b, didShowVideoCallScreen: %b",
         shouldShowAnswerUi.shouldShow,
         shouldShowRttUi.shouldShow,
         shouldShowVideoUi.shouldShow,
-        shouldShowSpeakEasyUi.shouldShow,
         didShowAnswerScreen,
         didShowInCallScreen,
         didShowRttCallScreen,
-        didShowVideoCallScreen,
-        didShowSpeakEasyScreen);
+        didShowVideoCallScreen);
     // Only video call ui allows orientation change.
     setAllowOrientationChange(shouldShowVideoUi.shouldShow);
 
@@ -1233,31 +1222,21 @@
       didChange = hideInCallScreenFragment(transaction);
       didChange |= hideVideoCallScreenFragment(transaction);
       didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= showAnswerScreenFragment(transaction, shouldShowAnswerUi.call);
     } else if (shouldShowVideoUi.shouldShow) {
       didChange = hideInCallScreenFragment(transaction);
       didChange |= showVideoCallScreenFragment(transaction, shouldShowVideoUi.call);
       didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= hideAnswerScreenFragment(transaction);
     } else if (shouldShowRttUi.shouldShow) {
       didChange = hideInCallScreenFragment(transaction);
       didChange |= hideVideoCallScreenFragment(transaction);
       didChange |= hideAnswerScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= showRttCallScreenFragment(transaction, shouldShowRttUi.call);
-    } else if (shouldShowSpeakEasyUi.shouldShow) {
-      didChange = hideInCallScreenFragment(transaction);
-      didChange |= hideVideoCallScreenFragment(transaction);
-      didChange |= hideAnswerScreenFragment(transaction);
-      didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= showSpeakEasyFragment(transaction, shouldShowSpeakEasyUi.call);
     } else {
       didChange = showInCallScreenFragment(transaction);
       didChange |= hideVideoCallScreenFragment(transaction);
       didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= hideAnswerScreenFragment(transaction);
     }
 
@@ -1271,104 +1250,9 @@
     Trace.endSection();
   }
 
-  private boolean showSpeakEasyFragment(FragmentTransaction transaction, DialerCall call) {
-
-    if (didShowSpeakEasyScreen) {
-      if (lastShownSpeakEasyScreenUniqueCallid.equals(call.getUniqueCallId())) {
-        LogUtil.i("InCallActivity.showSpeakEasyFragment", "found existing fragment");
-        return false;
-      }
-      hideSpeakEasyFragment(transaction);
-      LogUtil.i("InCallActivity.showSpeakEasyFragment", "hid existing fragment");
-    }
-
-    Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
-    if (speakEasyFragment.isPresent()) {
-      transaction.add(R.id.main, speakEasyFragment.get(), Tags.SPEAK_EASY_SCREEN);
-      didShowSpeakEasyScreen = true;
-      lastShownSpeakEasyScreenUniqueCallid = call.getUniqueCallId();
-      LogUtil.i(
-          "InCallActivity.showSpeakEasyFragment",
-          "set fragment for call %s",
-          lastShownSpeakEasyScreenUniqueCallid);
-      return true;
-    }
-    return false;
-  }
-
-  private Fragment getSpeakEasyScreen() {
-    return getSupportFragmentManager().findFragmentByTag(Tags.SPEAK_EASY_SCREEN);
-  }
-
-  private boolean hideSpeakEasyFragment(FragmentTransaction transaction) {
-    if (!didShowSpeakEasyScreen) {
-      return false;
-    }
-
-    Fragment speakEasyFragment = getSpeakEasyScreen();
-
-    if (speakEasyFragment != null) {
-      transaction.remove(speakEasyFragment);
-      didShowSpeakEasyScreen = false;
-      return true;
-    }
-    return false;
-  }
-
-  @VisibleForTesting
-  public void setSpeakEasyCallManager(SpeakEasyCallManager speakEasyCallManager) {
-    this.speakEasyCallManager = speakEasyCallManager;
-  }
-
-  @Nullable
-  public SpeakEasyCallManager getSpeakEasyCallManager() {
-    if (this.speakEasyCallManager == null) {
-      this.speakEasyCallManager = InCallPresenter.getInstance().getSpeakEasyCallManager();
-    }
-    return speakEasyCallManager;
-  }
-
-  private ShouldShowUiResult getShouldShowSpeakEasyUi() {
-    SpeakEasyCallManager speakEasyCallManager = getSpeakEasyCallManager();
-
-    if (speakEasyCallManager == null) {
-      return new ShouldShowUiResult(false, null);
-    }
-
-    DialerCall call =
-        CallList.getInstance().getIncomingCall() != null
-            ? CallList.getInstance().getIncomingCall()
-            : CallList.getInstance().getActiveCall();
-
-    if (call == null) {
-      // This is a special case where the first call is not automatically resumed
-      // after the second active call is remotely disconnected.
-      DialerCall backgroundCall = CallList.getInstance().getBackgroundCall();
-      if (backgroundCall != null && backgroundCall.isSpeakEasyCall()) {
-        LogUtil.i("InCallActivity.getShouldShowSpeakEasyUi", "taking call off hold");
-
-        backgroundCall.unhold();
-        return new ShouldShowUiResult(true, backgroundCall);
-      }
-
-      return new ShouldShowUiResult(false, call);
-    }
-
-    if (!call.isSpeakEasyCall() || !call.isSpeakEasyEligible()) {
-      return new ShouldShowUiResult(false, call);
-    }
-
-    Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
-
-    if (!speakEasyFragment.isPresent()) {
-      return new ShouldShowUiResult(false, call);
-    }
-    return new ShouldShowUiResult(true, call);
-  }
-
   private ShouldShowUiResult getShouldShowAnswerUi() {
     DialerCall call = CallList.getInstance().getIncomingCall();
-    if (call != null && !call.isSpeakEasyCall()) {
+    if (call != null) {
       LogUtil.i("InCallActivity.getShouldShowAnswerUi", "found incoming call");
       return new ShouldShowUiResult(true, call);
     }
@@ -1478,9 +1362,7 @@
             isVideoUpgradeRequest,
             call.getVideoTech().isSelfManagedCamera(),
             shouldAllowAnswerAndRelease(call),
-            CallList.getInstance().getBackgroundCall() != null,
-            getSpeakEasyCallManager().isAvailable(getApplicationContext())
-                && call.isSpeakEasyEligible());
+            CallList.getInstance().getBackgroundCall() != null);
     transaction.add(R.id.main, answerScreen.getAnswerScreenFragment(), Tags.ANSWER_SCREEN);
 
     Logger.get(this).logScreenView(ScreenEvent.Type.INCOMING_CALL, this);
@@ -1502,12 +1384,6 @@
       LogUtil.i("InCallActivity.shouldAllowAnswerAndRelease", "video call");
       return false;
     }
-    if (!ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getBoolean(ConfigNames.ANSWER_AND_RELEASE_ENABLED, true)) {
-      LogUtil.i("InCallActivity.shouldAllowAnswerAndRelease", "disabled by config");
-      return false;
-    }
 
     return true;
   }
@@ -1705,7 +1581,6 @@
     static final String DID_SHOW_IN_CALL_SCREEN = "did_show_in_call_screen";
     static final String DID_SHOW_VIDEO_CALL_SCREEN = "did_show_video_call_screen";
     static final String DID_SHOW_RTT_CALL_SCREEN = "did_show_rtt_call_screen";
-    static final String DID_SHOW_SPEAK_EASY_SCREEN = "did_show_speak_easy_screen";
   }
 
   /** Request codes for pending intents. */
@@ -1724,14 +1599,9 @@
     static final String VIDEO_CALL_SCREEN = "tag_video_call_screen";
     static final String RTT_CALL_SCREEN = "tag_rtt_call_screen";
     static final String POST_CHAR_DIALOG_FRAGMENT = "tag_post_char_dialog_fragment";
-    static final String SPEAK_EASY_SCREEN = "tag_speak_easy_screen";
     static final String RTT_REQUEST_DIALOG = "tag_rtt_request_dialog";
   }
 
-  private static final class ConfigNames {
-    static final String ANSWER_AND_RELEASE_ENABLED = "answer_and_release_enabled";
-  }
-
   private static final class SelectPhoneAccountListener
       extends SelectPhoneAccountDialogFragment.SelectPhoneAccountListener {
     private static final String TAG = SelectPhoneAccountListener.class.getCanonicalName();
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index fb13b77..3406fc7 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -52,7 +52,6 @@
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.postcall.PostCall;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.TouchPointManager;
@@ -67,7 +66,6 @@
 import com.android.incallui.disconnectdialog.DisconnectMessage;
 import com.android.incallui.incalluilock.InCallUiLock;
 import com.android.incallui.spam.SpamCallListListener;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
 import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogActivity;
 import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment;
 import com.android.incallui.videosurface.bindings.VideoSurfaceBindings;
@@ -90,8 +88,6 @@
  */
 public class InCallPresenter implements CallList.Listener, AudioModeProvider.AudioModeListener {
 
-  private static final String CALL_CONFIGURATION_EXTRA = "call_configuration";
-
   private static final Bundle EMPTY_EXTRAS = new Bundle();
 
   private static InCallPresenter inCallPresenter;
@@ -260,8 +256,6 @@
   private VideoSurfaceTexture localVideoSurfaceTexture;
   private VideoSurfaceTexture remoteVideoSurfaceTexture;
 
-  private SpeakEasyCallManager speakEasyCallManager;
-
   private boolean addCallClicked = false;
   private boolean automaticallyMutedByAddCall = false;
 
@@ -328,8 +322,7 @@
       StatusBarNotifier statusBarNotifier,
       ExternalCallNotifier externalCallNotifier,
       ContactInfoCache contactInfoCache,
-      ProximitySensor proximitySensor,
-      @NonNull SpeakEasyCallManager speakEasyCallManager) {
+      ProximitySensor proximitySensor) {
     Trace.beginSection("InCallPresenter.setUp");
     if (serviceConnected) {
       LogUtil.i("InCallPresenter.setUp", "New service connection replacing existing one.");
@@ -386,8 +379,6 @@
     this.callList.addListener(activeCallsListener);
 
     VideoPauseController.getInstance().setUp(this);
-
-    this.speakEasyCallManager = speakEasyCallManager;
     this.context
         .getSystemService(TelephonyManager.class)
         .listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
@@ -406,66 +397,6 @@
   }
 
   /**
-   * Return whether we should start call in bubble mode and not show InCallActivity. The call mode
-   * should be set in CallConfiguration in EXTRA_OUTGOING_CALL_EXTRAS when starting a call intent.
-   */
-  public boolean shouldStartInBubbleMode() {
-    if (!ReturnToCallController.isEnabled(context)) {
-      return false;
-    }
-
-    // We only start in Bubble mode for outgoing call
-    DialerCall dialerCall = callList.getPendingOutgoingCall();
-    if (dialerCall == null) {
-      dialerCall = callList.getOutgoingCall();
-    }
-    // Outgoing call can be disconnected and reason will be shown in toast
-    if (dialerCall == null) {
-      dialerCall = callList.getDisconnectedCall();
-    }
-    if (dialerCall == null) {
-      return false;
-    }
-    if (dialerCall.isEmergencyCall()) {
-      return false;
-    }
-
-    Bundle extras = dialerCall.getIntentExtras();
-    boolean result = shouldStartInBubbleModeWithExtras(extras);
-    if (result) {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.START_CALL_IN_BUBBLE_MODE,
-              dialerCall.getUniqueCallId(),
-              dialerCall.getTimeAddedMs());
-    }
-    return result;
-  }
-
-  private boolean shouldStartInBubbleModeWithExtras(Bundle outgoingExtras) {
-    if (!ReturnToCallController.isEnabled(context)) {
-      return false;
-    }
-
-    if (outgoingExtras == null) {
-      return false;
-    }
-    byte[] callConfigurationByteArray = outgoingExtras.getByteArray(CALL_CONFIGURATION_EXTRA);
-    if (callConfigurationByteArray == null) {
-      return false;
-    }
-    try {
-      CallConfiguration callConfiguration = CallConfiguration.parseFrom(callConfigurationByteArray);
-      LogUtil.i(
-          "InCallPresenter.shouldStartInBubbleMode",
-          "call mode: " + callConfiguration.getCallMode());
-      return callConfiguration.getCallMode() == Mode.BUBBLE;
-    } catch (InvalidProtocolBufferException e) {
-      return false;
-    }
-  }
-
-  /**
    * Called when the telephony service has disconnected from us. This will happen when there are no
    * more active calls. However, we may still want to continue showing the UI for certain cases like
    * showing "Call Ended". What we really want is to wait for the activity and the service to both
@@ -597,10 +528,6 @@
     Trace.endSection();
   }
 
-  public SpeakEasyCallManager getSpeakEasyCallManager() {
-    return this.speakEasyCallManager;
-  }
-
   public void setManageConferenceActivity(
       @Nullable ManageConferenceActivity manageConferenceActivity) {
     this.manageConferenceActivity = manageConferenceActivity;
@@ -866,13 +793,6 @@
   }
 
   @Override
-  public void onSpeakEasyStateChange() {
-    if (inCallActivity != null) {
-      inCallActivity.onPrimaryCallStateChanged();
-    }
-  }
-
-  @Override
   public void onSessionModificationStateChange(DialerCall call) {
     int newState = call.getVideoTech().getSessionModificationState();
     LogUtil.i("InCallPresenter.onSessionModificationStateChange", "state: %d", newState);
@@ -1437,7 +1357,7 @@
       inCallActivity.dismissPendingDialogs();
     }
 
-    if ((showCallUi || showAccountPicker) && !shouldStartInBubbleMode()) {
+    if (showCallUi || showAccountPicker) {
       LogUtil.i("InCallPresenter.startOrFinishUi", "Start in call UI");
       showInCall(false /* showDialpad */, !showAccountPicker /* newOutgoingCall */);
     } else if (newState == InCallState.NO_CALLS) {
@@ -1598,12 +1518,6 @@
 
     setBoundAndWaitingForOutgoingCall(true, accountHandle);
 
-    if (shouldStartInBubbleModeWithExtras(extras)) {
-      LogUtil.i("InCallPresenter.maybeStartRevealAnimation", "shouldStartInBubbleMode");
-      // Show bubble instead of in call UI
-      return;
-    }
-
     final Intent activityIntent =
         InCallActivity.getIntent(context, false, true, false /* forFullScreen */);
     activityIntent.putExtra(TouchPointManager.TOUCH_POINT, touchPoint);
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index b225d53..9f2c92a 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -23,15 +23,12 @@
 import android.telecom.Call;
 import android.telecom.CallAudioState;
 import android.telecom.InCallService;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.feedback.FeedbackComponent;
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.CallRecorder;
 import com.android.incallui.call.ExternalCallList;
 import com.android.incallui.call.TelecomAdapter;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 
 /**
  * Used to receive updates about calls from the Telecom component. This service is bound to Telecom
@@ -41,13 +38,7 @@
  */
 public class InCallServiceImpl extends InCallService {
 
-  private ReturnToCallController returnToCallController;
   private CallList.Listener feedbackListener;
-  // We only expect there to be one speakEasyCallManager to be instantiated at a time.
-  // We did not use a singleton SpeakEasyCallManager to avoid holding on to state beyond the
-  // lifecycle of this service, because the singleton is associated with the state of the
-  // Application, not this service.
-  private SpeakEasyCallManager speakEasyCallManager;
 
   @Override
   public void onCallAudioStateChanged(CallAudioState audioState) {
@@ -73,7 +64,6 @@
   @Override
   public void onCallRemoved(Call call) {
     Trace.beginSection("InCallServiceImpl.onCallRemoved");
-    speakEasyCallManager.onCallRemoved(CallList.getInstance().getDialerCallFromTelecomCall(call));
 
     InCallPresenter.getInstance().onCallRemoved(call);
     Trace.endSection();
@@ -89,7 +79,6 @@
   @Override
   public void onCreate() {
     super.onCreate();
-    this.speakEasyCallManager = SpeakEasyComponent.get(this).speakEasyCallManager();
   }
 
   @Override
@@ -107,14 +96,11 @@
             new ExternalCallNotifier(context, contactInfoCache),
             contactInfoCache,
             new ProximitySensor(
-                context, AudioModeProvider.getInstance(), new AccelerometerListener(context)),
-            speakEasyCallManager);
+                context, AudioModeProvider.getInstance(), new AccelerometerListener(context)));
     InCallPresenter.getInstance().onServiceBind();
     InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
     TelecomAdapter.getInstance().setInCallService(this);
     CallRecorder.getInstance().setUp(context);
-    returnToCallController =
-        new ReturnToCallController(this, ContactInfoCache.getInstance(context));
     feedbackListener = FeedbackComponent.get(context).getCallFeedbackListener();
     CallList.getInstance().addListener(feedbackListener);
 
@@ -141,10 +127,6 @@
     // Tear down the InCall system
     InCallPresenter.getInstance().tearDown();
     TelecomAdapter.getInstance().clearInCallService();
-    if (returnToCallController != null) {
-      returnToCallController.tearDown();
-      returnToCallController = null;
-    }
     if (feedbackListener != null) {
       CallList.getInstance().removeListener(feedbackListener);
       feedbackListener = null;
diff --git a/java/com/android/incallui/NotificationBroadcastReceiver.java b/java/com/android/incallui/NotificationBroadcastReceiver.java
index 5051231..b910dfb 100644
--- a/java/com/android/incallui/NotificationBroadcastReceiver.java
+++ b/java/com/android/incallui/NotificationBroadcastReceiver.java
@@ -32,7 +32,6 @@
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.TelecomAdapter;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -65,8 +64,6 @@
   public static final String ACTION_TURN_ON_SPEAKER = "com.android.incallui.ACTION_TURN_ON_SPEAKER";
   public static final String ACTION_TURN_OFF_SPEAKER =
       "com.android.incallui.ACTION_TURN_OFF_SPEAKER";
-  public static final String ACTION_ANSWER_SPEAKEASY_CALL =
-      "com.android.incallui.ACTION_ANSWER_SPEAKEASY_CALL";
 
   public static final String ACTION_PULL_EXTERNAL_CALL =
       "com.android.incallui.ACTION_PULL_EXTERNAL_CALL";
@@ -84,9 +81,6 @@
       answerIncomingCall(VideoProfile.STATE_BIDIRECTIONAL, context);
     } else if (action.equals(ACTION_ANSWER_VOICE_INCOMING_CALL)) {
       answerIncomingCall(VideoProfile.STATE_AUDIO_ONLY, context);
-    } else if (action.equals(ACTION_ANSWER_SPEAKEASY_CALL)) {
-      markIncomingCallAsSpeakeasyCall();
-      answerIncomingCall(VideoProfile.STATE_AUDIO_ONLY, context);
     } else if (action.equals(ACTION_DECLINE_INCOMING_CALL)) {
       Logger.get(context)
           .logImpression(DialerImpression.Type.REJECT_INCOMING_CALL_FROM_NOTIFICATION);
@@ -152,19 +146,6 @@
     }
   }
 
-  private void markIncomingCallAsSpeakeasyCall() {
-    CallList callList = InCallPresenter.getInstance().getCallList();
-    if (callList == null) {
-      LogUtil.e(
-          "NotificationBroadcastReceiver.markIncomingCallAsSpeakeasyCall", "call list is empty");
-    } else {
-      DialerCall call = callList.getIncomingCall();
-      if (call != null) {
-        call.setIsSpeakEasyCall(true);
-      }
-    }
-  }
-
   private void answerIncomingCall(int videoState, @NonNull Context context) {
     CallList callList = InCallPresenter.getInstance().getCallList();
     if (callList == null) {
@@ -174,18 +155,8 @@
       DialerCall call = callList.getIncomingCall();
       if (call != null) {
 
-        SpeakEasyCallManager speakEasyCallManager =
-            InCallPresenter.getInstance().getSpeakEasyCallManager();
-        ListenableFuture<Void> answerPrecondition;
-
-        if (speakEasyCallManager != null) {
-          answerPrecondition = speakEasyCallManager.onNewIncomingCall(call);
-        } else {
-          answerPrecondition = Futures.immediateFuture(null);
-        }
-
         Futures.addCallback(
-            answerPrecondition,
+            Futures.immediateFuture(null),
             new FutureCallback<Void>() {
               @Override
               public void onSuccess(Void result) {
diff --git a/java/com/android/incallui/ReturnToCallActionReceiver.java b/java/com/android/incallui/ReturnToCallActionReceiver.java
deleted file mode 100644
index d6014aa..0000000
--- a/java/com/android/incallui/ReturnToCallActionReceiver.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2017 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.incallui;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.telecom.CallAudioState;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.incallui.audiomode.AudioModeProvider;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.DialerCall;
-import com.android.incallui.call.TelecomAdapter;
-
-/** Handles clicks on the return-to-call bubble */
-public class ReturnToCallActionReceiver extends BroadcastReceiver {
-
-  public static final String ACTION_RETURN_TO_CALL = "returnToCallV2";
-  public static final String ACTION_TOGGLE_SPEAKER = "toggleSpeakerV2";
-  public static final String ACTION_SHOW_AUDIO_ROUTE_SELECTOR = "showAudioRouteSelectorV2";
-  public static final String ACTION_TOGGLE_MUTE = "toggleMuteV2";
-  public static final String ACTION_END_CALL = "endCallV2";
-
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    switch (intent.getAction()) {
-      case ACTION_RETURN_TO_CALL:
-        returnToCall(context);
-        break;
-      case ACTION_TOGGLE_SPEAKER:
-        toggleSpeaker(context);
-        break;
-      case ACTION_SHOW_AUDIO_ROUTE_SELECTOR:
-        showAudioRouteSelector(context);
-        break;
-      case ACTION_TOGGLE_MUTE:
-        toggleMute(context);
-        break;
-      case ACTION_END_CALL:
-        endCall(context);
-        break;
-      default:
-        throw Assert.createIllegalStateFailException(
-            "Invalid intent action: " + intent.getAction());
-    }
-  }
-
-  private void returnToCall(Context context) {
-    DialerCall call = getCall();
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.BUBBLE_V2_RETURN_TO_CALL,
-            call != null ? call.getUniqueCallId() : "",
-            call != null ? call.getTimeAddedMs() : 0);
-
-    Intent activityIntent = InCallActivity.getIntent(context, false, false, false);
-    activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-    context.startActivity(activityIntent);
-  }
-
-  private void toggleSpeaker(Context context) {
-    CallAudioState audioState = AudioModeProvider.getInstance().getAudioState();
-
-    if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH)
-        == CallAudioState.ROUTE_BLUETOOTH) {
-      LogUtil.w(
-          "ReturnToCallActionReceiver.toggleSpeaker",
-          "toggleSpeaker() called when bluetooth available."
-              + " Probably should have shown audio route selector");
-    }
-
-    DialerCall call = getCall();
-
-    int newRoute;
-    if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) {
-      newRoute = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.BUBBLE_V2_WIRED_OR_EARPIECE,
-              call != null ? call.getUniqueCallId() : "",
-              call != null ? call.getTimeAddedMs() : 0);
-    } else {
-      newRoute = CallAudioState.ROUTE_SPEAKER;
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.BUBBLE_V2_SPEAKERPHONE,
-              call != null ? call.getUniqueCallId() : "",
-              call != null ? call.getTimeAddedMs() : 0);
-    }
-    TelecomAdapter.getInstance().setAudioRoute(newRoute);
-  }
-
-  public void showAudioRouteSelector(Context context) {
-    Intent intent = new Intent(context, AudioRouteSelectorActivity.class);
-    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
-    context.startActivity(intent);
-  }
-
-  private void toggleMute(Context context) {
-    DialerCall call = getCall();
-    boolean shouldMute = !AudioModeProvider.getInstance().getAudioState().isMuted();
-    Logger.get(context)
-        .logCallImpression(
-            shouldMute
-                ? DialerImpression.Type.BUBBLE_V2_MUTE_CALL
-                : DialerImpression.Type.BUBBLE_V2_UNMUTE_CALL,
-            call != null ? call.getUniqueCallId() : "",
-            call != null ? call.getTimeAddedMs() : 0);
-    TelecomAdapter.getInstance().mute(shouldMute);
-  }
-
-  private void endCall(Context context) {
-    DialerCall call = getCall();
-
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.BUBBLE_V2_END_CALL,
-            call != null ? call.getUniqueCallId() : "",
-            call != null ? call.getTimeAddedMs() : 0);
-    if (call != null) {
-      call.disconnect();
-    }
-  }
-
-  private DialerCall getCall() {
-    CallList callList = InCallPresenter.getInstance().getCallList();
-    if (callList != null) {
-      DialerCall call = callList.getOutgoingCall();
-      if (call == null) {
-        call = callList.getActiveOrBackgroundCall();
-      }
-      if (call != null) {
-        return call;
-      }
-    }
-    return null;
-  }
-}
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
deleted file mode 100644
index addde55..0000000
--- a/java/com/android/incallui/ReturnToCallController.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * 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.incallui;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.telecom.CallAudioState;
-import android.text.TextUtils;
-import com.android.bubble.Bubble;
-import com.android.bubble.BubbleComponent;
-import com.android.bubble.BubbleInfo;
-import com.android.bubble.BubbleInfo.Action;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.theme.base.ThemeComponent;
-import com.android.incallui.ContactInfoCache.ContactCacheEntry;
-import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
-import com.android.incallui.InCallPresenter.InCallState;
-import com.android.incallui.InCallPresenter.InCallUiListener;
-import com.android.incallui.audiomode.AudioModeProvider;
-import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.CallList.Listener;
-import com.android.incallui.call.DialerCall;
-import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Listens for events relevant to the return-to-call bubble and updates the bubble's state as
- * necessary.
- *
- * <p>Bubble shows when one of following happens: 1. a new outgoing/ongoing call appears 2. leave
- * in-call UI with an outgoing/ongoing call
- *
- * <p>Bubble hides when one of following happens: 1. a call disconnect and there is no more
- * outgoing/ongoing call 2. show in-call UI
- */
-public class ReturnToCallController implements InCallUiListener, Listener, AudioModeListener {
-
-  private final Context context;
-
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  Bubble bubble;
-
-  private static Boolean canShowBubblesForTesting = null;
-
-  private CallAudioState audioState;
-
-  private final PendingIntent toggleSpeaker;
-  private final PendingIntent showSpeakerSelect;
-  private final PendingIntent toggleMute;
-  private final PendingIntent endCall;
-  private final PendingIntent fullScreen;
-
-  private final ContactInfoCache contactInfoCache;
-
-  private InCallState inCallState;
-
-  public static boolean isEnabled(Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_return_to_call_bubble_v2", false);
-  }
-
-  public ReturnToCallController(Context context, ContactInfoCache contactInfoCache) {
-    this.context = context;
-    this.contactInfoCache = contactInfoCache;
-
-    toggleSpeaker = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_SPEAKER);
-    showSpeakerSelect =
-        createActionIntent(ReturnToCallActionReceiver.ACTION_SHOW_AUDIO_ROUTE_SELECTOR);
-    toggleMute = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_MUTE);
-    endCall = createActionIntent(ReturnToCallActionReceiver.ACTION_END_CALL);
-    fullScreen = createActionIntent(ReturnToCallActionReceiver.ACTION_RETURN_TO_CALL);
-
-    AudioModeProvider.getInstance().addListener(this);
-    audioState = AudioModeProvider.getInstance().getAudioState();
-    InCallPresenter.getInstance().addInCallUiListener(this);
-    CallList.getInstance().addListener(this);
-  }
-
-  public void tearDown() {
-    hide();
-    InCallPresenter.getInstance().removeInCallUiListener(this);
-    CallList.getInstance().removeListener(this);
-    AudioModeProvider.getInstance().removeListener(this);
-  }
-
-  @Override
-  public void onUiShowing(boolean showing) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    LogUtil.i("ReturnToCallController.onUiShowing", "showing: " + showing);
-    if (showing) {
-      LogUtil.i("ReturnToCallController.onUiShowing", "going to hide");
-      hide();
-    } else {
-      if (getCall() != null) {
-        LogUtil.i("ReturnToCallController.onUiShowing", "going to show");
-        show();
-      }
-    }
-  }
-
-  private void hide() {
-    if (bubble != null) {
-      bubble.hide();
-    } else {
-      LogUtil.i("ReturnToCallController.hide", "hide() called without calling show()");
-    }
-  }
-
-  private void show() {
-    if (bubble == null) {
-      bubble = startBubble();
-    } else {
-      bubble.show();
-    }
-    startContactInfoSearch();
-  }
-
-  /**
-   * Determines whether bubbles can be shown based on permissions obtained. This should be checked
-   * before attempting to create a Bubble.
-   *
-   * @return true iff bubbles are able to be shown.
-   * @see Settings#canDrawOverlays(Context)
-   */
-  private static boolean canShowBubbles(@NonNull Context context) {
-    return canShowBubblesForTesting != null
-        ? canShowBubblesForTesting
-        : Settings.canDrawOverlays(context);
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  static void setCanShowBubblesForTesting(boolean canShowBubbles) {
-    canShowBubblesForTesting = canShowBubbles;
-  }
-
-  private Bubble startBubble() {
-    if (!canShowBubbles(context)) {
-      LogUtil.i("ReturnToCallController.startBubble", "can't show bubble, no permission");
-      return null;
-    }
-    Bubble returnToCallBubble = BubbleComponent.get(context).getBubble();
-    returnToCallBubble.setBubbleInfo(generateBubbleInfo());
-    returnToCallBubble.show();
-    return returnToCallBubble;
-  }
-
-  @Override
-  public void onIncomingCall(DialerCall call) {}
-
-  @Override
-  public void onUpgradeToVideo(DialerCall call) {}
-
-  @Override
-  public void onSessionModificationStateChange(DialerCall call) {}
-
-  @Override
-  public void onCallListChange(CallList callList) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    boolean shouldStartInBubbleMode = InCallPresenter.getInstance().shouldStartInBubbleMode();
-    InCallState newInCallState =
-        InCallPresenter.getInstance().getPotentialStateFromCallList(callList);
-    boolean isNewBackgroundCall =
-        newInCallState != inCallState
-            && newInCallState == InCallState.OUTGOING
-            && shouldStartInBubbleMode;
-    boolean bubbleNeverVisible = (bubble == null || !(bubble.isVisible() || bubble.isDismissed()));
-    if (bubble != null && isNewBackgroundCall) {
-      // If new outgoing call is in bubble mode, update bubble info.
-      // We don't update if new call is not in bubble mode even if the existing call is.
-      bubble.setBubbleInfo(generateBubbleInfoForBackgroundCalling());
-    }
-    if (((bubbleNeverVisible && newInCallState != InCallState.OUTGOING) || isNewBackgroundCall)
-        && getCall() != null
-        && !InCallPresenter.getInstance().isShowingInCallUi()) {
-      LogUtil.i("ReturnToCallController.onCallListChange", "going to show bubble");
-      show();
-    } else {
-      // The call to display might be different for the existing bubble
-      startContactInfoSearch();
-    }
-    inCallState = newInCallState;
-  }
-
-  @Override
-  public void onDisconnect(DialerCall call) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    LogUtil.enterBlock("ReturnToCallController.onDisconnect");
-    if (bubble != null && bubble.isVisible() && (getCall() == null)) {
-      // Show "Call ended" and hide bubble when there is no outgoing, active or background call
-      LogUtil.i("ReturnToCallController.onDisconnect", "show call ended and hide bubble");
-      // Don't show text if it's Duo upgrade
-      // It doesn't work for Duo fallback upgrade since we're not considered in call
-      if (!TelecomUtil.isInCall(context) || CallList.getInstance().getIncomingCall() != null) {
-        bubble.showText(context.getText(R.string.incall_call_ended));
-      }
-      hide();
-    } else {
-      startContactInfoSearch();
-    }
-  }
-
-  @Override
-  public void onWiFiToLteHandover(DialerCall call) {}
-
-  @Override
-  public void onHandoverToWifiFailed(DialerCall call) {}
-
-  @Override
-  public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
-
-  @Override
-  public void onAudioStateChanged(CallAudioState audioState) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    this.audioState = audioState;
-    if (bubble != null) {
-      bubble.updateActions(generateActions());
-    }
-  }
-
-  private void startContactInfoSearch() {
-    DialerCall dialerCall = getCall();
-    if (dialerCall != null) {
-      contactInfoCache.findInfo(
-          dialerCall, false /* isIncoming */, new ReturnToCallContactInfoCacheCallback(this));
-    }
-  }
-
-  private DialerCall getCall() {
-    DialerCall dialerCall = CallList.getInstance().getOutgoingCall();
-    if (dialerCall == null) {
-      dialerCall = CallList.getInstance().getActiveOrBackgroundCall();
-    }
-    return dialerCall;
-  }
-
-  private void onPhotoAvatarReceived(@NonNull Drawable photo) {
-    if (bubble != null) {
-      bubble.updatePhotoAvatar(photo);
-    }
-  }
-
-  private void onLetterTileAvatarReceived(@NonNull Drawable photo) {
-    if (bubble != null) {
-      bubble.updateAvatar(photo);
-    }
-  }
-
-  private BubbleInfo generateBubbleInfo() {
-    return BubbleInfo.builder()
-        .setPrimaryColor(ThemeComponent.get(context).theme().getColorPrimary())
-        .setPrimaryIcon(Icon.createWithResource(context, R.drawable.on_going_call))
-        .setStartingYPosition(
-            InCallPresenter.getInstance().shouldStartInBubbleMode()
-                ? context.getResources().getDisplayMetrics().heightPixels / 2
-                : context
-                    .getResources()
-                    .getDimensionPixelOffset(R.dimen.return_to_call_initial_offset_y))
-        .setActions(generateActions())
-        .build();
-  }
-
-  private BubbleInfo generateBubbleInfoForBackgroundCalling() {
-    return BubbleInfo.builder()
-        .setPrimaryColor(ThemeComponent.get(context).theme().getColorPrimary())
-        .setPrimaryIcon(Icon.createWithResource(context, R.drawable.on_going_call))
-        .setStartingYPosition(context.getResources().getDisplayMetrics().heightPixels / 2)
-        .setActions(generateActions())
-        .build();
-  }
-
-  @NonNull
-  private List<Action> generateActions() {
-    List<Action> actions = new ArrayList<>();
-    SpeakerButtonInfo speakerButtonInfo = new SpeakerButtonInfo(audioState);
-
-    // Return to call
-    actions.add(
-        Action.builder()
-            .setIconDrawable(
-                context.getDrawable(R.drawable.quantum_ic_exit_to_app_flip_vd_theme_24))
-            .setIntent(fullScreen)
-            .setName(context.getText(R.string.bubble_return_to_call))
-            .setCheckable(false)
-            .build());
-    // Mute/unmute
-    actions.add(
-        Action.builder()
-            .setIconDrawable(context.getDrawable(R.drawable.quantum_ic_mic_off_vd_theme_24))
-            .setChecked(audioState.isMuted())
-            .setIntent(toggleMute)
-            .setName(context.getText(R.string.incall_label_mute))
-            .build());
-    // Speaker/audio selector
-    actions.add(
-        Action.builder()
-            .setIconDrawable(context.getDrawable(speakerButtonInfo.icon))
-            .setSecondaryIconDrawable(
-                speakerButtonInfo.nonBluetoothMode
-                    ? null
-                    : context.getDrawable(R.drawable.quantum_ic_arrow_drop_down_vd_theme_24))
-            .setName(context.getText(speakerButtonInfo.label))
-            .setCheckable(speakerButtonInfo.nonBluetoothMode)
-            .setChecked(speakerButtonInfo.isChecked)
-            .setIntent(speakerButtonInfo.nonBluetoothMode ? toggleSpeaker : showSpeakerSelect)
-            .build());
-    // End call
-    actions.add(
-        Action.builder()
-            .setIconDrawable(context.getDrawable(R.drawable.quantum_ic_call_end_vd_theme_24))
-            .setIntent(endCall)
-            .setName(context.getText(R.string.incall_label_end_call))
-            .setCheckable(false)
-            .build());
-    return actions;
-  }
-
-  @NonNull
-  private PendingIntent createActionIntent(String action) {
-    Intent intent = new Intent(context, ReturnToCallActionReceiver.class);
-    intent.setAction(action);
-    return PendingIntent.getBroadcast(context, 0, intent, 0);
-  }
-
-  @NonNull
-  private LetterTileDrawable createLettleTileDrawable(
-      DialerCall dialerCall, ContactCacheEntry entry) {
-    String preferredName =
-        ContactsComponent.get(context)
-            .contactDisplayPreferences()
-            .getDisplayName(entry.namePrimary, entry.nameAlternative);
-    if (TextUtils.isEmpty(preferredName)) {
-      preferredName = entry.number;
-    }
-
-    LetterTileDrawable letterTile = new LetterTileDrawable(context.getResources());
-    letterTile.setCanonicalDialerLetterTileDetails(
-        dialerCall.updateNameIfRestricted(preferredName),
-        entry.lookupKey,
-        LetterTileDrawable.SHAPE_CIRCLE,
-        LetterTileDrawable.getContactTypeFromPrimitives(
-            dialerCall.isVoiceMailNumber(),
-            dialerCall.isSpam(),
-            entry.isBusiness,
-            dialerCall.getNumberPresentation(),
-            dialerCall.isConferenceCall()));
-    return letterTile;
-  }
-
-  private static class ReturnToCallContactInfoCacheCallback implements ContactInfoCacheCallback {
-
-    private final WeakReference<ReturnToCallController> returnToCallControllerWeakReference;
-
-    private ReturnToCallContactInfoCacheCallback(ReturnToCallController returnToCallController) {
-      returnToCallControllerWeakReference = new WeakReference<>(returnToCallController);
-    }
-
-    @Override
-    public void onContactInfoComplete(String callId, ContactCacheEntry entry) {
-      ReturnToCallController returnToCallController = returnToCallControllerWeakReference.get();
-      if (returnToCallController == null) {
-        return;
-      }
-      if (entry.photo != null) {
-        returnToCallController.onPhotoAvatarReceived(entry.photo);
-      } else {
-        DialerCall dialerCall = CallList.getInstance().getCallById(callId);
-        if (dialerCall != null) {
-          returnToCallController.onLetterTileAvatarReceived(
-              returnToCallController.createLettleTileDrawable(dialerCall, entry));
-        }
-      }
-    }
-
-    @Override
-    public void onImageLoadComplete(String callId, ContactCacheEntry entry) {
-      ReturnToCallController returnToCallController = returnToCallControllerWeakReference.get();
-      if (returnToCallController == null) {
-        return;
-      }
-      if (entry.photo != null) {
-        returnToCallController.onPhotoAvatarReceived(entry.photo);
-      } else {
-        DialerCall dialerCall = CallList.getInstance().getCallById(callId);
-        if (dialerCall != null) {
-          returnToCallController.onLetterTileAvatarReceived(
-              returnToCallController.createLettleTileDrawable(dialerCall, entry));
-        }
-      }
-    }
-  }
-}
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 59a3f2e..6b78b60 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -22,7 +22,6 @@
 import static com.android.dialer.app.DevicePolicyResources.NOTIFICATION_ONGOING_WORK_CALL_TITLE;
 import static com.android.dialer.app.DevicePolicyResources.NOTIFICATION_WIFI_WORK_CALL_LABEL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ACCEPT_VIDEO_UPGRADE_REQUEST;
-import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ANSWER_SPEAKEASY_CALL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ANSWER_VIDEO_INCOMING_CALL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ANSWER_VOICE_INCOMING_CALL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_DECLINE_INCOMING_CALL;
@@ -59,7 +58,6 @@
 import android.text.BidiFormatter;
 import android.text.Spannable;
 import android.text.SpannableString;
-import android.text.Spanned;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
@@ -68,7 +66,6 @@
 import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contactphoto.BitmapUtil;
 import com.android.dialer.contacts.ContactsComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
@@ -93,9 +90,7 @@
 import com.android.incallui.ringtone.DialerRingtoneManager;
 import com.android.incallui.ringtone.InCallTonePlayer;
 import com.android.incallui.ringtone.ToneGeneratorFactory;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 import com.android.incallui.videotech.utils.SessionModificationState;
-import com.google.common.base.Optional;
 import java.util.Objects;
 
 /** This class adds Notifications to the status bar for the in-call experience. */
@@ -295,20 +290,10 @@
     if (callState == DialerCallState.INCOMING
         || callState == DialerCallState.CALL_WAITING
         || isVideoUpgradeRequest) {
-      if (ConfigProviderComponent.get(context)
-          .getConfigProvider()
-          .getBoolean("quiet_incoming_call_if_ui_showing", true)) {
         notificationType =
             InCallPresenter.getInstance().isShowingInCallUi()
                 ? NOTIFICATION_INCOMING_CALL_QUIET
                 : NOTIFICATION_INCOMING_CALL;
-      } else {
-        boolean alreadyActive =
-            callList.getActiveOrBackgroundCall() != null
-                && InCallPresenter.getInstance().isShowingInCallUi();
-        notificationType =
-            alreadyActive ? NOTIFICATION_INCOMING_CALL_QUIET : NOTIFICATION_INCOMING_CALL;
-      }
     } else {
       notificationType = NOTIFICATION_IN_CALL;
     }
@@ -447,7 +432,6 @@
         addVideoCallAction(builder);
       } else {
         addAnswerAction(builder);
-        addSpeakeasyAnswerAction(builder, call);
       }
     }
   }
@@ -658,12 +642,7 @@
     } else if (call.hasProperty(Details.PROPERTY_HAS_CDMA_VOICE_PRIVACY)) {
       return R.drawable.quantum_ic_phone_locked_vd_theme_24;
     }
-    // If ReturnToCall is enabled, use the static icon. The animated one will show in the bubble.
-    if (ReturnToCallController.isEnabled(context)) {
-      return R.drawable.quantum_ic_call_vd_theme_24;
-    } else {
-      return R.drawable.on_going_call;
-    }
+    return R.drawable.on_going_call;
   }
 
   /** Returns the message to use with the notification. */
@@ -888,48 +867,6 @@
             .build());
   }
 
-  private void addSpeakeasyAnswerAction(Notification.Builder builder, DialerCall call) {
-    if (!call.isSpeakEasyEligible()) {
-      return;
-    }
-
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_speakeasy_notification_button", false)) {
-      return;
-    }
-
-    if (!SpeakEasyComponent.get(context).speakEasyCallManager().isAvailable(context)) {
-      return;
-    }
-
-    Optional<Integer> buttonText = SpeakEasyComponent.get(context).speakEasyTextResource();
-    if (!buttonText.isPresent()) {
-      return;
-    }
-
-    LogUtil.d("StatusBarNotifier.addSpeakeasyAnswerAction", "showing button");
-    PendingIntent answerVoicePendingIntent =
-        createNotificationPendingIntent(context, ACTION_ANSWER_SPEAKEASY_CALL);
-
-    Spannable spannable = new SpannableString(context.getText(buttonText.get()));
-    // TODO(erfanian): Migrate these color values to somewhere more permanent in subsequent
-    // implementation.
-    spannable.setSpan(
-        new ForegroundColorSpan(
-            context.getColor(R.color.DO_NOT_USE_OR_I_WILL_BREAK_YOU_text_span_tertiary_button)),
-        0,
-        spannable.length(),
-        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
-    builder.addAction(
-        new Notification.Action.Builder(
-                Icon.createWithResource(context, R.drawable.quantum_ic_call_vd_theme_24),
-                spannable,
-                answerVoicePendingIntent)
-            .build());
-  }
-
   private void addDismissAction(Notification.Builder builder) {
     LogUtil.d(
         "StatusBarNotifier.addDismissAction",
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 0d1d1a5..a1fe820 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -29,7 +29,6 @@
 import android.view.SurfaceView;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
 import com.android.incallui.InCallPresenter.InCallOrientationListener;
@@ -1101,12 +1100,6 @@
           "VideoCallPresenter.shouldShowCameraPermissionToast", "already shown for this call");
       return false;
     }
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("camera_permission_dialog_allowed", true)) {
-      LogUtil.i("VideoCallPresenter.shouldShowCameraPermissionToast", "disabled by config");
-      return false;
-    }
     return !VideoUtils.hasCameraPermission(context)
         || !PermissionsUtil.hasCameraPrivacyToastShown(context);
   }
diff --git a/java/com/android/incallui/answer/bindings/AnswerBindings.java b/java/com/android/incallui/answer/bindings/AnswerBindings.java
index c370d74..9f4199b 100644
--- a/java/com/android/incallui/answer/bindings/AnswerBindings.java
+++ b/java/com/android/incallui/answer/bindings/AnswerBindings.java
@@ -29,8 +29,7 @@
       boolean isVideoUpgradeRequest,
       boolean isSelfManagedCamera,
       boolean allowAnswerAndRelease,
-      boolean hasCallOnHold,
-      boolean allowSpeakEasy) {
+      boolean hasCallOnHold) {
     return AnswerFragment.newInstance(
         callId,
         isRttCall,
@@ -38,7 +37,6 @@
         isVideoUpgradeRequest,
         isSelfManagedCamera,
         allowAnswerAndRelease,
-        hasCallOnHold,
-        allowSpeakEasy);
+        hasCallOnHold);
   }
 }
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 4387443..a37c4a9 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -86,8 +86,6 @@
 import com.android.incallui.incalluilock.InCallUiLock;
 import com.android.incallui.sessiondata.AvatarPresenter;
 import com.android.incallui.sessiondata.MultimediaFragment;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 import com.android.incallui.util.AccessibilityUtil;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.videotech.utils.VideoUtils;
@@ -124,8 +122,6 @@
   @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
   static final String ARG_IS_SELF_MANAGED_CAMERA = "is_self_managed_camera";
 
-  static final String ARG_ALLOW_SPEAK_EASY = "allow_speak_easy";
-
   private static final String STATE_HAS_ANIMATED_ENTRY = "hasAnimated";
 
   private static final int HINT_SECONDARY_SHOW_DURATION_MILLIS = 5000;
@@ -227,11 +223,6 @@
     }
   }
 
-  private void performSpeakEasy(View unused) {
-    answerScreenDelegate.onSpeakEasyCall();
-    buttonAcceptClicked = true;
-  }
-
   private void performAnswerAndRelease() {
     restoreAnswerAndReleaseButtonAnimation();
     answerScreenDelegate.onAnswerAndReleaseCall();
@@ -365,8 +356,7 @@
       boolean isVideoUpgradeRequest,
       boolean isSelfManagedCamera,
       boolean allowAnswerAndRelease,
-      boolean hasCallOnHold,
-      boolean allowSpeakEasy) {
+      boolean hasCallOnHold) {
     Bundle bundle = new Bundle();
     bundle.putString(ARG_CALL_ID, Assert.isNotNull(callId));
     bundle.putBoolean(ARG_IS_RTT_CALL, isRttCall);
@@ -375,7 +365,6 @@
     bundle.putBoolean(ARG_IS_SELF_MANAGED_CAMERA, isSelfManagedCamera);
     bundle.putBoolean(ARG_ALLOW_ANSWER_AND_RELEASE, allowAnswerAndRelease);
     bundle.putBoolean(ARG_HAS_CALL_ON_HOLD, hasCallOnHold);
-    bundle.putBoolean(ARG_ALLOW_SPEAK_EASY, allowSpeakEasy);
 
     AnswerFragment instance = new AnswerFragment();
     instance.setArguments(bundle);
@@ -466,24 +455,7 @@
 
   /** Initialize chip buttons */
   private void initChips() {
-
-    if (!allowSpeakEasy()) {
-      chipContainer.setVisibility(View.GONE);
-      return;
-    }
-    chipContainer.setVisibility(View.VISIBLE);
-
-    @SpeakEasyChipResourceId
-    Optional<Integer> chipLayoutOptional = SpeakEasyComponent.get(getContext()).speakEasyChip();
-    if (chipLayoutOptional.isPresent()) {
-
-      LinearLayout chipLayout =
-          (LinearLayout) getLayoutInflater().inflate(chipLayoutOptional.get(), null);
-
-      chipLayout.setOnClickListener(this::performSpeakEasy);
-
-      chipContainer.addView(chipLayout);
-    }
+    chipContainer.setVisibility(View.GONE);
   }
 
   @Override
@@ -491,11 +463,6 @@
     return getArguments().getBoolean(ARG_ALLOW_ANSWER_AND_RELEASE);
   }
 
-  @Override
-  public boolean allowSpeakEasy() {
-    return getArguments().getBoolean(ARG_ALLOW_SPEAK_EASY);
-  }
-
   private boolean hasCallOnHold() {
     return getArguments().getBoolean(ARG_HAS_CALL_ON_HOLD);
   }
diff --git a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
index 494a622..6e086ef 100644
--- a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
@@ -20,18 +20,13 @@
 import android.hardware.SensorEvent;
 import android.util.DisplayMetrics;
 import android.view.MotionEvent;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 
 /** An classifier trying to determine whether it is a human interacting with the phone or not. */
 class HumanInteractionClassifier extends Classifier {
 
-  private static final String CONFIG_ANSWER_FALSE_TOUCH_DETECTION_ENABLED =
-      "answer_false_touch_detection_enabled";
-
   private final StrokeClassifier[] strokeClassifiers;
   private final GestureClassifier[] gestureClassifiers;
   private final HistoryEvaluator historyEvaluator;
-  private final boolean enabled;
 
   HumanInteractionClassifier(Context context) {
     DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
@@ -43,10 +38,6 @@
     float dpi = (displayMetrics.xdpi + displayMetrics.ydpi) / 2.0f;
     classifierData = new ClassifierData(dpi, displayMetrics.heightPixels);
     historyEvaluator = new HistoryEvaluator();
-    enabled =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_ANSWER_FALSE_TOUCH_DETECTION_ENABLED, true);
 
     strokeClassifiers =
         new StrokeClassifier[] {
@@ -133,7 +124,7 @@
   }
 
   public boolean isEnabled() {
-    return enabled;
+    return true;
   }
 
   @Override
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreen.java b/java/com/android/incallui/answer/protocol/AnswerScreen.java
index 38e4dc5..f030ce9 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreen.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreen.java
@@ -32,8 +32,6 @@
 
   boolean allowAnswerAndRelease();
 
-  boolean allowSpeakEasy();
-
   boolean isActionTimeout();
 
   void setTextResponses(List<String> textResponses);
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
index 172d964..5710922 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
@@ -30,8 +30,6 @@
 
   void onReject();
 
-  void onSpeakEasyCall();
-
   void onAnswerAndReleaseCall();
 
   void onAnswerAndReleaseButtonEnabled();
diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
index dbb8df9..29c557e 100644
--- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
+++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
@@ -22,7 +22,6 @@
 import android.os.Trace;
 import android.view.Display;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCallListener;
 import com.android.incallui.call.state.DialerCallState;
@@ -37,11 +36,6 @@
 public class AnswerProximitySensor
     implements DialerCallListener, AnswerProximityWakeLock.ScreenOnListener {
 
-  private static final String CONFIG_ANSWER_PROXIMITY_SENSOR_ENABLED =
-      "answer_proximity_sensor_enabled";
-  private static final String CONFIG_ANSWER_PSEUDO_PROXIMITY_WAKE_LOCK_ENABLED =
-      "answer_pseudo_proximity_wake_lock_enabled";
-
   private final DialerCall call;
   private final AnswerProximityWakeLock answerProximityWakeLock;
 
@@ -55,14 +49,6 @@
       return false;
     }
 
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_ANSWER_PROXIMITY_SENSOR_ENABLED, true)) {
-      LogUtil.i("AnswerProximitySensor.shouldUse", "disabled by config");
-      Trace.endSection();
-      return false;
-    }
-
     if (!context.getResources().getBoolean(R.bool.config_answer_proximity_sensor_enabled)) {
       LogUtil.i("AnswerProximitySensor.shouldUse", "disabled by overlay");
       return false;
@@ -92,17 +78,7 @@
     this.call = call;
 
     LogUtil.i("AnswerProximitySensor.constructor", "acquiring lock");
-    if (ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_ANSWER_PSEUDO_PROXIMITY_WAKE_LOCK_ENABLED, true)) {
-      answerProximityWakeLock = new PseudoProximityWakeLock(context, pseudoScreenState);
-    } else {
-      // TODO(twyen): choose a wake lock implementation base on framework/device.
-      // These bugs requires the PseudoProximityWakeLock workaround:
-      // a bug Proximity sensor not working on M
-      // a bug fautly touch input when screen is off on marlin/sailfish
-      answerProximityWakeLock = new SystemProximityWakeLock(context);
-    }
+    answerProximityWakeLock = new PseudoProximityWakeLock(context, pseudoScreenState);
     answerProximityWakeLock.setScreenOnListener(this);
     answerProximityWakeLock.acquire();
 
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 42d3d0c..47da983 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -748,9 +748,6 @@
      */
     default void onUpgradeToRtt(DialerCall call, int rttRequestId) {}
 
-    /** Called when the SpeakEasy state of a Dialer call is mutated. */
-    default void onSpeakEasyStateChange() {}
-
     /** Called when the session modification state of a call changes. */
     void onSessionModificationStateChange(DialerCall call);
 
@@ -829,13 +826,6 @@
     }
 
     @Override
-    public void onDialerCallSpeakEasyStateChange() {
-      for (Listener listener : listeners) {
-        listener.onSpeakEasyStateChange();
-      }
-    }
-
-    @Override
     public void onDialerCallUpgradeToVideo() {
       for (Listener listener : listeners) {
         listener.onUpgradeToVideo(call);
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 8d4e4f0..ef3527f 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -45,9 +45,7 @@
 import android.text.TextUtils;
 import android.widget.Toast;
 import com.android.contacts.common.compat.CallCompat;
-import com.android.dialer.assisteddialing.ConcreteCreator;
 import com.android.dialer.assisteddialing.TransformationInfo;
-import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentParser;
 import com.android.dialer.callintent.CallSpecificAppData;
@@ -55,7 +53,6 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DefaultFutureCallback;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
@@ -76,7 +73,6 @@
 import com.android.dialer.telecom.TelecomCallUtil;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.theme.common.R;
-import com.android.dialer.time.Clock;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.state.DialerCallState;
@@ -114,10 +110,6 @@
 
   private static final String ID_PREFIX = "DialerCall_";
 
-  @VisibleForTesting
-  public static final String CONFIG_EMERGENCY_CALLBACK_WINDOW_MILLIS =
-      "emergency_callback_window_millis";
-
   private static int idCounter = 0;
 
   public static final int UNKNOWN_PEER_DIMENSIONS = -1;
@@ -146,8 +138,6 @@
   private final List<CannedTextResponsesLoadedListener> cannedTextResponsesLoadedListeners =
       new CopyOnWriteArrayList<>();
   private final VideoTechManager videoTechManager;
-
-  private boolean isSpeakEasyCall;
   private boolean isEmergencyCall;
   private Uri handle;
   private int state = DialerCallState.INVALID;
@@ -192,8 +182,6 @@
 
   private volatile boolean feedbackRequested = false;
 
-  private Clock clock = System::currentTimeMillis;
-
   @Nullable private PreferredAccountRecorder preferredAccountRecorder;
   private boolean isCallRemoved;
 
@@ -826,10 +814,7 @@
   }
 
   boolean isInEmergencyCallbackWindow(long timestampMillis) {
-    long emergencyCallbackWindowMillis =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(CONFIG_EMERGENCY_CALLBACK_WINDOW_MILLIS, TimeUnit.MINUTES.toMillis(5));
+    long emergencyCallbackWindowMillis = TimeUnit.MINUTES.toMillis(5);
     return System.currentTimeMillis() - timestampMillis < emergencyCallbackWindowMillis;
   }
 
@@ -860,13 +845,13 @@
         LogUtil.i("DialerCall.updateCallTiming", "state is already active");
         return;
       }
-      logState.dialerConnectTimeMillis = clock.currentTimeMillis();
+      logState.dialerConnectTimeMillis = System.currentTimeMillis();
       logState.dialerConnectTimeMillisElapsedRealtime = SystemClock.elapsedRealtime();
     }
 
     if (newState == DialerCallState.DISCONNECTED) {
       long newDuration =
-          getConnectTimeMillis() == 0 ? 0 : clock.currentTimeMillis() - getConnectTimeMillis();
+          getConnectTimeMillis() == 0 ? 0 : System.currentTimeMillis() - getConnectTimeMillis();
       if (this.state == DialerCallState.DISCONNECTED) {
         LogUtil.i(
             "DialerCall.setState",
@@ -880,7 +865,7 @@
       logState.dialerDurationMillis =
           logState.dialerConnectTimeMillis == 0
               ? 0
-              : clock.currentTimeMillis() - logState.dialerConnectTimeMillis;
+              : System.currentTimeMillis() - logState.dialerConnectTimeMillis;
       logState.dialerDurationMillisElapsedRealtime =
           logState.dialerConnectTimeMillisElapsedRealtime == 0
               ? 0
@@ -890,11 +875,6 @@
     }
   }
 
-  @VisibleForTesting
-  void setClock(Clock clock) {
-    this.clock = clock;
-  }
-
   public boolean isOutgoing() {
     return isOutgoing;
   }
@@ -1672,66 +1652,6 @@
     this.preferredAccountRecorder = preferredAccountRecorder;
   }
 
-  /** Indicates the call is eligible for SpeakEasy */
-  public boolean isSpeakEasyEligible() {
-
-    PhoneAccount phoneAccount = getPhoneAccount();
-
-    if (phoneAccount == null) {
-      return false;
-    }
-
-    if (!phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
-      return false;
-    }
-
-    return !isPotentialEmergencyCallback()
-        && !isEmergencyCall()
-        && !isActiveRttCall()
-        && !isConferenceCall()
-        && !isVideoCall()
-        && !isVoiceMailNumber()
-        && !hasReceivedVideoUpgradeRequest()
-        && !isVoipCallNotSupportedBySpeakeasy();
-  }
-
-  private boolean isVoipCallNotSupportedBySpeakeasy() {
-    Bundle extras = getIntentExtras();
-
-    if (extras == null) {
-      return false;
-    }
-
-    // Indicates an VOIP call.
-    String callid = extras.getString("callid");
-
-    if (TextUtils.isEmpty(callid)) {
-      LogUtil.i("DialerCall.isVoipCallNotSupportedBySpeakeasy", "callid was empty");
-      return false;
-    }
-
-    LogUtil.i("DialerCall.isVoipCallNotSupportedBySpeakeasy", "call is not eligible");
-    return true;
-  }
-
-  /** Indicates the user has selected SpeakEasy */
-  public boolean isSpeakEasyCall() {
-    if (!isSpeakEasyEligible()) {
-      return false;
-    }
-    return isSpeakEasyCall;
-  }
-
-  /** Sets the user preference for SpeakEasy */
-  public void setIsSpeakEasyCall(boolean isSpeakEasyCall) {
-    this.isSpeakEasyCall = isSpeakEasyCall;
-    if (listeners != null) {
-      for (DialerCallListener listener : listeners) {
-        listener.onDialerCallSpeakEasyStateChange();
-      }
-    }
-  }
-
   /**
    * Specifies whether a number is in the call history or not. {@link #CALL_HISTORY_STATUS_UNKNOWN}
    * means there is no result.
diff --git a/java/com/android/incallui/call/DialerCallListener.java b/java/com/android/incallui/call/DialerCallListener.java
index a42ccbd..37c30d3 100644
--- a/java/com/android/incallui/call/DialerCallListener.java
+++ b/java/com/android/incallui/call/DialerCallListener.java
@@ -31,8 +31,6 @@
 
   default void onDialerCallUpgradeToRtt(int rttRequestId) {}
 
-  default void onDialerCallSpeakEasyStateChange() {}
-
   void onDialerCallSessionModificationStateChange();
 
   void onWiFiToLteHandover();
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index 336550d..b6c76fe 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -48,7 +48,6 @@
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.dialer.widget.LockableViewPager;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
@@ -154,9 +153,7 @@
     LogUtil.i("InCallFragment.onCreateView", null);
     getActivity().setTheme(R.style.Theme_InCallScreen);
     // Bypass to avoid StrictModeResourceMismatchViolation
-    final View view =
-        StrictModeUtils.bypass(
-            () -> layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false));
+    final View view = layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false);
     contactGridManager =
         new ContactGridManager(
             view,
diff --git a/java/com/android/incallui/spam/SpamNotificationActivity.java b/java/com/android/incallui/spam/SpamNotificationActivity.java
index 59356c7..190345c 100644
--- a/java/com/android/incallui/spam/SpamNotificationActivity.java
+++ b/java/com/android/incallui/spam/SpamNotificationActivity.java
@@ -43,8 +43,6 @@
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
 import com.android.incallui.call.DialerCall;
 
 /** Creates the after call notification dialogs. */
@@ -61,12 +59,6 @@
   static final String ACTION_MARK_NUMBER_AS_NOT_SPAM =
       "com.android.incallui.spam.ACTION_MARK_NUMBER_AS_NOT_SPAM";
 
-  static final String ACTION_ENABLE_SPAM_BLOCKING =
-      "com.android.incallui.spam.ACTION_ENABLE_SPAM_BLOCKING";
-
-  static final String ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG =
-      "com.android.incallui.spam.ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG";
-
   private static final String TAG = "SpamNotifications";
   private static final String EXTRA_NOTIFICATION_TAG = "notification_tag";
   private static final String EXTRA_NOTIFICATION_ID = "notification_id";
@@ -87,8 +79,6 @@
         }
       };
   private FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
-  private SpamSettings spamSettings;
-  private SpamBlockingPromoHelper spamBlockingPromoHelper;
 
   /**
    * Creates an intent to start this activity.
@@ -163,8 +153,6 @@
     super.onCreate(savedInstanceState);
     setFinishOnTouchOutside(true);
     filteredNumberAsyncQueryHandler = new FilteredNumberAsyncQueryHandler(this);
-    spamSettings = SpamComponent.get(this).spamSettings();
-    spamBlockingPromoHelper = new SpamBlockingPromoHelper(getApplicationContext(), spamSettings);
     cancelNotification();
   }
 
@@ -199,9 +187,6 @@
           showNonSpamDialog();
         }
         break;
-      case ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG:
-        showSpamBlockingPromoDialog();
-        break;
       default: // fall out
     }
   }
@@ -512,35 +497,6 @@
   }
 
   private void maybeShowSpamBlockingPromoAndFinish() {
-    if (!spamBlockingPromoHelper.shouldShowAfterCallSpamBlockingPromo()) {
-      finish();
-      return;
-    }
-    Logger.get(this)
-        .logImpression(DialerImpression.Type.SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN);
-    showSpamBlockingPromoDialog();
-  }
-
-  private void showSpamBlockingPromoDialog() {
-    spamBlockingPromoHelper.showSpamBlockingPromoDialog(
-        getSupportFragmentManager(),
-        () -> {
-          Logger.get(this)
-              .logImpression(
-                  DialerImpression.Type
-                      .SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-          spamSettings.modifySpamBlockingSetting(
-              true,
-              success -> {
-                if (!success) {
-                  Logger.get(this)
-                      .logImpression(
-                          DialerImpression.Type
-                              .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-                }
-                spamBlockingPromoHelper.showModifySettingOnCompleteToast(success);
-              });
-        },
-        dialog -> finish());
+    finish();
   }
 }
diff --git a/java/com/android/incallui/spam/SpamNotificationService.java b/java/com/android/incallui/spam/SpamNotificationService.java
index 26aec2f..04f2f29 100644
--- a/java/com/android/incallui/spam/SpamNotificationService.java
+++ b/java/com/android/incallui/spam/SpamNotificationService.java
@@ -16,7 +16,6 @@
 
 package com.android.incallui.spam;
 
-import android.app.PendingIntent;
 import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
@@ -32,8 +31,6 @@
 import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
 import com.android.incallui.call.DialerCall;
 
 /**
@@ -103,18 +100,9 @@
     ContactLookupResult.Type contactLookupResultType =
         ContactLookupResult.Type.forNumber(intent.getIntExtra(EXTRA_CONTACT_LOOKUP_RESULT_TYPE, 0));
 
-    SpamSettings spamSettings = SpamComponent.get(this).spamSettings();
-    SpamBlockingPromoHelper spamBlockingPromoHelper =
-        new SpamBlockingPromoHelper(this, SpamComponent.get(this).spamSettings());
-    boolean shouldShowSpamBlockingPromo =
-        SpamNotificationActivity.ACTION_MARK_NUMBER_AS_SPAM.equals(intent.getAction())
-            && spamBlockingPromoHelper.shouldShowAfterCallSpamBlockingPromo();
-
     // Cancel notification only if we are not showing spam blocking promo. Otherwise we will show
     // spam blocking promo notification in place.
-    if (!shouldShowSpamBlockingPromo) {
-      DialerNotificationManager.cancel(this, notificationTag, notificationId);
-    }
+    DialerNotificationManager.cancel(this, notificationTag, notificationId);
 
     switch (intent.getAction()) {
       case SpamNotificationActivity.ACTION_MARK_NUMBER_AS_SPAM:
@@ -129,13 +117,6 @@
                 ReportingLocation.Type.FEEDBACK_PROMPT,
                 contactLookupResultType);
         new FilteredNumberAsyncQueryHandler(this).blockNumber(null, number);
-        if (shouldShowSpamBlockingPromo) {
-          spamBlockingPromoHelper.showSpamBlockingPromoNotification(
-              notificationTag,
-              notificationId,
-              createPromoActivityPendingIntent(),
-              createEnableSpamBlockingPendingIntent());
-        }
         break;
       case SpamNotificationActivity.ACTION_MARK_NUMBER_AS_NOT_SPAM:
         logCallImpression(
@@ -149,22 +130,6 @@
                 ReportingLocation.Type.FEEDBACK_PROMPT,
                 contactLookupResultType);
         break;
-      case SpamNotificationActivity.ACTION_ENABLE_SPAM_BLOCKING:
-        Logger.get(this)
-            .logImpression(
-                DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-        spamSettings.modifySpamBlockingSetting(
-            true,
-            success -> {
-              if (!success) {
-                Logger.get(this)
-                    .logImpression(
-                        DialerImpression.Type
-                            .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-              }
-              spamBlockingPromoHelper.showModifySettingOnCompleteToast(success);
-            });
-        break;
       default: // fall out
     }
     // TODO: call stopSelf() after async tasks complete (a bug)
@@ -185,28 +150,4 @@
             intent.getStringExtra(EXTRA_CALL_ID),
             intent.getLongExtra(EXTRA_CALL_START_TIME_MILLIS, 0));
   }
-
-  private PendingIntent createPromoActivityPendingIntent() {
-    Intent intent =
-        SpamNotificationActivity.createActivityIntent(
-            this,
-            null,
-            SpamNotificationActivity.ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG,
-            notificationTag,
-            notificationId);
-    return PendingIntent.getActivity(
-        this, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
-  }
-
-  private PendingIntent createEnableSpamBlockingPendingIntent() {
-    Intent intent =
-        SpamNotificationService.createServiceIntent(
-            this,
-            null,
-            SpamNotificationActivity.ACTION_ENABLE_SPAM_BLOCKING,
-            notificationTag,
-            notificationId);
-    return PendingIntent.getService(
-        this, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
-  }
 }
diff --git a/java/com/android/incallui/speakeasy/Annotations.java b/java/com/android/incallui/speakeasy/Annotations.java
deleted file mode 100644
index c66fe94..0000000
--- a/java/com/android/incallui/speakeasy/Annotations.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.incallui.speakeasy;
-
-import javax.inject.Qualifier;
-
-/** Annotations for Speakeasy providers. */
-public final class Annotations {
-
-  /** A Speakeasy settings fragment */
-  @Qualifier
-  public @interface SpeakEasySettingsActivity {}
-
-  /** A Speakeasy settings object */
-  @Qualifier
-  public @interface SpeakEasySettingsObject {}
-
-  /** A Speakeasy chip */
-  @Qualifier
-  public @interface SpeakEasyChipResourceId {}
-
-  /** A Speakeasy text resource */
-  @Qualifier
-  public @interface SpeakEasyTextResourceId {}
-}
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyCallManager.java b/java/com/android/incallui/speakeasy/SpeakEasyCallManager.java
deleted file mode 100644
index 55905ce..0000000
--- a/java/com/android/incallui/speakeasy/SpeakEasyCallManager.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.incallui.speakeasy;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import com.android.incallui.call.DialerCall;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Optional;
-
-/** Provides operations necessary to SpeakEasy. */
-public interface SpeakEasyCallManager {
-
-  /**
-   * Returns the Fragment used to display data.
-   *
-   * <p>An absent optional indicates the feature is unavailable.
-   */
-  Optional<Fragment> getSpeakEasyFragment(@NonNull DialerCall call);
-
-  /**
-   * Indicates a call has been removed.
-   *
-   * @param call The call which has been removed.
-   */
-  void onCallRemoved(@NonNull DialerCall call);
-
-  /**
-   * Indicates there is a new incoming call that is about to be answered.
-   *
-   * @param call The call which is about to become active.
-   */
-  ListenableFuture<Void> onNewIncomingCall(@NonNull DialerCall call);
-
-  /**
-   * Indicates the feature is available.
-   *
-   * @param context The application context.
-   */
-  boolean isAvailable(@NonNull Context context);
-
-  /**
-   * Optional: Performs work necessary to happen-before callers use other methods on this interface.
-   *
-   * @apiNote Use of this API is completely optional, and callers are NOT required to invoke this
-   *     method prior to using other methods on the interface.
-   * @implSpec Other members of this interface always promise to do any required initialization work
-   *     at the time they are invoked. This method will always be idempotent.
-   */
-  default void performManualInitialization() {}
-
-  /** Returns the config provider flag associated with the feature. */
-  @NonNull
-  String getConfigProviderFlag();
-}
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyCallManagerStub.java b/java/com/android/incallui/speakeasy/SpeakEasyCallManagerStub.java
deleted file mode 100644
index 4eebc80..0000000
--- a/java/com/android/incallui/speakeasy/SpeakEasyCallManagerStub.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.incallui.speakeasy;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import com.android.incallui.call.DialerCall;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Optional;
-import javax.inject.Inject;
-
-/** Default implementation of SpeakEasyCallManager. */
-public class SpeakEasyCallManagerStub implements SpeakEasyCallManager {
-
-  @Inject
-  public SpeakEasyCallManagerStub() {}
-
-  /** Returns an absent optional. */
-  @Override
-  @Nullable
-  public Optional<Fragment> getSpeakEasyFragment(DialerCall call) {
-    return Optional.empty();
-  }
-
-  /** Always inert in the stub. */
-  @Override
-  public void onCallRemoved(DialerCall call) {}
-
-  @Override
-  public ListenableFuture<Void> onNewIncomingCall(@NonNull DialerCall call) {
-    return Futures.immediateFuture(null);
-  }
-
-  /** Always returns false. */
-  @Override
-  public boolean isAvailable(@NonNull Context unused) {
-    return false;
-  }
-
-  /** Always returns a stub string. */
-  @NonNull
-  @Override
-  public String getConfigProviderFlag() {
-    return "not_yet_implmented";
-  }
-}
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyComponent.java b/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
deleted file mode 100644
index 422ebd6..0000000
--- a/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.incallui.speakeasy;
-
-import android.content.Context;
-import android.preference.PreferenceActivity;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsActivity;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsObject;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyTextResourceId;
-import com.google.common.base.Optional;
-import dagger.Subcomponent;
-
-/** Dagger component to get SpeakEasyCallManager. */
-@Subcomponent
-public abstract class SpeakEasyComponent {
-
-  public static SpeakEasyComponent get(Context context) {
-    return ((SpeakEasyComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .speakEasyComponent();
-  }
-
-  public abstract SpeakEasyCallManager speakEasyCallManager();
-
-  public abstract @SpeakEasySettingsActivity Optional<PreferenceActivity>
-      speakEasySettingsActivity();
-
-  public abstract @SpeakEasySettingsObject Optional<Object> speakEasySettingsObject();
-
-  public abstract @SpeakEasyChipResourceId Optional<Integer> speakEasyChip();
-
-  public abstract @SpeakEasyTextResourceId Optional<Integer> speakEasyTextResource();
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    SpeakEasyComponent speakEasyComponent();
-  }
-}
diff --git a/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java b/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
deleted file mode 100644
index 5441075..0000000
--- a/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.incallui.speakeasy;
-
-import android.preference.PreferenceActivity;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsActivity;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsObject;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyTextResourceId;
-import com.google.common.base.Optional;
-import dagger.Binds;
-import dagger.Module;
-import dagger.Provides;
-
-/** Module which binds {@link SpeakEasyCallManagerStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class StubSpeakEasyModule {
-
-  @Binds
-  abstract SpeakEasyCallManager bindsSpeakEasy(SpeakEasyCallManagerStub stub);
-
-  @Provides
-  static @SpeakEasySettingsActivity Optional<PreferenceActivity>
-      provideSpeakEasySettingsActivity() {
-    return Optional.absent();
-  }
-
-  @Provides
-  static @SpeakEasySettingsObject Optional<Object> provideSpeakEasySettingsObject() {
-    return Optional.absent();
-  }
-
-  @Provides
-  static @SpeakEasyChipResourceId Optional<Integer> provideSpeakEasyChip() {
-    return Optional.absent();
-  }
-
-  @Provides
-  static @SpeakEasyTextResourceId Optional<Integer> provideSpeakEasyTextResource() {
-    return Optional.absent();
-  }
-}
diff --git a/java/com/android/incallui/videotech/duo/DuoVideoTech.java b/java/com/android/incallui/videotech/duo/DuoVideoTech.java
index 47f0757..d9a31a5 100644
--- a/java/com/android/incallui/videotech/duo/DuoVideoTech.java
+++ b/java/com/android/incallui/videotech/duo/DuoVideoTech.java
@@ -24,7 +24,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DefaultFutureCallback;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.duo.Duo;
 import com.android.dialer.duo.DuoListener;
 import com.android.dialer.logging.DialerImpression;
@@ -60,13 +59,6 @@
 
   @Override
   public boolean isAvailable(Context context, PhoneAccountHandle phoneAccountHandle) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_lightbringer_video_upgrade", true)) {
-      LogUtil.v("DuoVideoTech.isAvailable", "upgrade disabled by flag");
-      return false;
-    }
-
     if (callState != Call.STATE_ACTIVE) {
       LogUtil.v("DuoVideoTech.isAvailable", "upgrade unavailable, call must be active");
       return false;
diff --git a/java/com/android/voicemail/impl/DialerVvmConfigManager.java b/java/com/android/voicemail/impl/DialerVvmConfigManager.java
index 99c95dd..ba7affa 100644
--- a/java/com/android/voicemail/impl/DialerVvmConfigManager.java
+++ b/java/com/android/voicemail/impl/DialerVvmConfigManager.java
@@ -23,7 +23,6 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.util.ArrayMap;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.voicemail.impl.utils.XmlUtils;
 import com.google.common.collect.ComparisonChain;
 import java.io.IOException;
@@ -132,10 +131,7 @@
         }
         PersistableBundle bundle = (PersistableBundle) object;
 
-        if (bundle.containsKey(KEY_FEATURE_FLAG_NAME)
-            && !ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getBoolean(bundle.getString(KEY_FEATURE_FLAG_NAME), false)) {
+        if (bundle.containsKey(KEY_FEATURE_FLAG_NAME)) {
           continue;
         }
 
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 2a112e8..f21f4fe 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -28,7 +28,6 @@
 
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.VisualVoicemailTypeExtensions;
 import com.android.voicemail.VoicemailClient;
@@ -96,17 +95,11 @@
 
   @Override
   public boolean isVoicemailArchiveAvailable(Context context) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(ALLOW_VOICEMAIL_ARCHIVE, false)) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailArchiveAllowed",
-          "feature disabled by config: %s",
-          ALLOW_VOICEMAIL_ARCHIVE);
-      return false;
-    }
-
-    return true;
+    LogUtil.i(
+        "VoicemailClientImpl.isVoicemailArchiveAllowed",
+        "feature disabled by config: %s",
+        ALLOW_VOICEMAIL_ARCHIVE);
+    return false;
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/VoicemailStatus.java b/java/com/android/voicemail/impl/VoicemailStatus.java
index 2ebc49b..18bfb68 100644
--- a/java/com/android/voicemail/impl/VoicemailStatus.java
+++ b/java/com/android/voicemail/impl/VoicemailStatus.java
@@ -24,7 +24,6 @@
 import android.provider.VoicemailContract.Status;
 import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.strictmode.StrictModeUtils;
 
 public class VoicemailStatus {
 
@@ -100,7 +99,7 @@
       ContentResolver contentResolver = context.getContentResolver();
       Uri statusUri = VoicemailContract.Status.buildSourceUri(context.getPackageName());
       try {
-        StrictModeUtils.bypass(() -> contentResolver.insert(statusUri, values));
+        contentResolver.insert(statusUri, values);
       } catch (IllegalArgumentException iae) {
         VvmLog.e(TAG, "apply :: failed to insert content resolver ", iae);
         values.clear();
diff --git a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
index d05940a..9e61825 100644
--- a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
+++ b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
@@ -35,7 +35,6 @@
 import android.text.TextUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.voicemail.VoicemailComponent;
 
 /**
@@ -128,10 +127,8 @@
   }
 
   public static boolean isOverridden(Context context) {
-    return StrictModeUtils.bypass(
-        () ->
-            PreferenceManager.getDefaultSharedPreferences(context)
-                .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false));
+    return PreferenceManager.getDefaultSharedPreferences(context)
+            .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false);
   }
 
   public static PersistableBundle getConfig(Context context) {
diff --git a/java/com/android/voicemail/impl/mail/Message.java b/java/com/android/voicemail/impl/mail/Message.java
index 4e2c642..cc000db 100644
--- a/java/com/android/voicemail/impl/mail/Message.java
+++ b/java/com/android/voicemail/impl/mail/Message.java
@@ -51,39 +51,19 @@
 
   public abstract void setSubject(String subject) throws MessagingException;
 
-  public Date getInternalDate() {
-    return internalDate;
-  }
-
   public void setInternalDate(Date internalDate) {
     this.internalDate = internalDate;
   }
 
-  public abstract Date getReceivedDate() throws MessagingException;
-
   public abstract Date getSentDate() throws MessagingException;
 
-  public abstract void setSentDate(Date sentDate) throws MessagingException;
-
   @Nullable
   public abstract Long getDuration() throws MessagingException;
 
-  public abstract Address[] getRecipients(String type) throws MessagingException;
-
-  public abstract void setRecipients(String type, Address[] addresses) throws MessagingException;
-
-  public void setRecipient(String type, Address address) throws MessagingException {
-    setRecipients(type, new Address[] {address});
-  }
-
   public abstract Address[] getFrom() throws MessagingException;
 
   public abstract void setFrom(Address from) throws MessagingException;
 
-  public abstract Address[] getReplyTo() throws MessagingException;
-
-  public abstract void setReplyTo(Address[] from) throws MessagingException;
-
   // Always use these instead of getHeader("Message-ID") or setHeader("Message-ID");
   public abstract void setMessageId(String messageId) throws MessagingException;
 
@@ -137,12 +117,6 @@
     }
   }
 
-  public boolean isSet(String flag) {
-    return getFlagSet().contains(flag);
-  }
-
-  public abstract void saveChanges() throws MessagingException;
-
   @Override
   public String toString() {
     return getClass().getSimpleName() + ':' + uid;
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
index 2997ad8..39b292b 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
@@ -156,11 +156,6 @@
   }
 
   @Override
-  public Date getReceivedDate() throws MessagingException {
-    return null;
-  }
-
-  @Override
   public Date getSentDate() throws MessagingException {
     if (sentDate == null) {
       try {
@@ -193,12 +188,6 @@
   }
 
   @Override
-  public void setSentDate(Date sentDate) throws MessagingException {
-    setHeader("Date", DATE_FORMAT.format(sentDate));
-    this.sentDate = sentDate;
-  }
-
-  @Override
   @Nullable
   public Long getDuration() {
     String durationHeader = null;
@@ -256,66 +245,6 @@
     return size;
   }
 
-  /**
-   * Returns a list of the given recipient type from this message. If no addresses are found the
-   * method returns an empty array.
-   */
-  @Override
-  public Address[] getRecipients(String type) throws MessagingException {
-    if (type == RECIPIENT_TYPE_TO) {
-      if (to == null) {
-        to = Address.parse(MimeUtility.unfold(getFirstHeader("To")));
-      }
-      return to;
-    } else if (type == RECIPIENT_TYPE_CC) {
-      if (cc == null) {
-        cc = Address.parse(MimeUtility.unfold(getFirstHeader("CC")));
-      }
-      return cc;
-    } else if (type == RECIPIENT_TYPE_BCC) {
-      if (bcc == null) {
-        bcc = Address.parse(MimeUtility.unfold(getFirstHeader("BCC")));
-      }
-      return bcc;
-    } else {
-      throw new MessagingException("Unrecognized recipient type.");
-    }
-  }
-
-  @Override
-  public void setRecipients(String type, Address[] addresses) throws MessagingException {
-    final int toLength = 4; // "To: "
-    final int ccLength = 4; // "Cc: "
-    final int bccLength = 5; // "Bcc: "
-    if (type == RECIPIENT_TYPE_TO) {
-      if (addresses == null || addresses.length == 0) {
-        removeHeader("To");
-        this.to = null;
-      } else {
-        setHeader("To", MimeUtility.fold(Address.toHeader(addresses), toLength));
-        this.to = addresses;
-      }
-    } else if (type == RECIPIENT_TYPE_CC) {
-      if (addresses == null || addresses.length == 0) {
-        removeHeader("CC");
-        this.cc = null;
-      } else {
-        setHeader("CC", MimeUtility.fold(Address.toHeader(addresses), ccLength));
-        this.cc = addresses;
-      }
-    } else if (type == RECIPIENT_TYPE_BCC) {
-      if (addresses == null || addresses.length == 0) {
-        removeHeader("BCC");
-        this.bcc = null;
-      } else {
-        setHeader("BCC", MimeUtility.fold(Address.toHeader(addresses), bccLength));
-        this.bcc = addresses;
-      }
-    } else {
-      throw new MessagingException("Unrecognized recipient type.");
-    }
-  }
-
   /** Returns the unfolded, decoded value of the Subject header. */
   @Override
   public String getSubject() throws MessagingException {
@@ -351,26 +280,6 @@
     }
   }
 
-  @Override
-  public Address[] getReplyTo() throws MessagingException {
-    if (replyTo == null) {
-      replyTo = Address.parse(MimeUtility.unfold(getFirstHeader("Reply-to")));
-    }
-    return replyTo;
-  }
-
-  @Override
-  public void setReplyTo(Address[] replyTo) throws MessagingException {
-    final int replyToLength = 10; // "Reply-to: "
-    if (replyTo == null || replyTo.length == 0) {
-      removeHeader("Reply-to");
-      this.replyTo = null;
-    } else {
-      setHeader("Reply-to", MimeUtility.fold(Address.toHeader(replyTo), replyToLength));
-      this.replyTo = replyTo;
-    }
-  }
-
   /**
    * Set the mime "Message-ID" header
    *
@@ -400,11 +309,6 @@
   }
 
   @Override
-  public void saveChanges() throws MessagingException {
-    throw new MessagingException("saveChanges not yet implemented");
-  }
-
-  @Override
   public Body getBody() throws MessagingException {
     return body;
   }
diff --git a/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java b/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
index c478a93..1ad5c31 100644
--- a/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
+++ b/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
@@ -16,7 +16,6 @@
 
 package com.android.voicemail.impl.protocol;
 
-import android.content.Context;
 import android.net.Network;
 import android.os.Build;
 import android.os.Bundle;
@@ -29,7 +28,6 @@
 import android.text.Spanned;
 import android.text.style.URLSpan;
 import android.util.ArrayMap;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.OmtpEvents;
@@ -216,7 +214,7 @@
       String gatewayUrl = getSelfProvisioningGateway();
       String selfProvisionResponse = getSelfProvisionResponse(gatewayUrl);
       String subscribeLink =
-          findSubscribeLink(getSubscribeLinkPatterns(helper.getContext()), selfProvisionResponse);
+          findSubscribeLink(getSubscribeLinkPatterns(), selfProvisionResponse);
       clickSubscribeLink(subscribeLink);
     } catch (ProvisioningException e) {
       VvmLog.e(TAG, e.toString());
@@ -321,12 +319,8 @@
   }
 
   @VisibleForTesting
-  static List<Pattern> getSubscribeLinkPatterns(Context context) {
-    String patternsJsonString =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getString(
-                VVM3_SUBSCRIBE_LINK_PATTERNS_JSON_ARRAY, VVM3_SUBSCRIBE_LINK_DEFAULT_PATTERNS);
+  static List<Pattern> getSubscribeLinkPatterns() {
+    String patternsJsonString = VVM3_SUBSCRIBE_LINK_DEFAULT_PATTERNS;
     List<Pattern> patterns = new ArrayList<>();
     try {
       JSONArray patternsArray = new JSONArray(patternsJsonString);
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
index 2daf3a1..7b251b8 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -28,7 +28,6 @@
 import android.preference.PreferenceManager;
 import android.support.annotation.MainThread;
 import com.android.dialer.constants.ScheduledJobIds;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.scheduling.Tasks.TaskCreationException;
@@ -56,9 +55,8 @@
   @MainThread
   public boolean onStartJob(JobParameters params) {
     int jobId = params.getTransientExtras().getInt(EXTRA_JOB_ID);
-    int expectedJobId =
-        StrictModeUtils.bypass(
-            () -> PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0));
+    int expectedJobId = PreferenceManager.getDefaultSharedPreferences(this)
+            .getInt(EXPECTED_JOB_ID, 0);
     if (jobId != expectedJobId) {
       VvmLog.e(
           TAG, "Job " + jobId + " is not the last scheduled job " + expectedJobId + ", ignoring");
diff --git a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
index 3acf60d..c98dcf0 100644
--- a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
+++ b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
@@ -168,20 +168,6 @@
     return prefs.getBoolean(DONATE_VOICEMAILS_KEY, false);
   }
 
-  /**
-   * Whether the client enabled status is explicitly set by user or by default(Whether carrier VVM
-   * app is installed). This is used to determine whether to disable the client when the carrier VVM
-   * app is installed. If the carrier VVM app is installed the client should give priority to it if
-   * the settings are not touched.
-   */
-  public static boolean isEnabledUserSet(Context context, PhoneAccountHandle phoneAccount) {
-    if (phoneAccount == null) {
-      return false;
-    }
-    VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phoneAccount);
-    return prefs.contains(IS_ENABLED_KEY);
-  }
-
   /** Delete all the voicemails whose source_package field matches this package */
   private static class VoicemailDeleteWorker implements Worker<Void, Void> {
     private final Context context;
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
index ee10685..252d73c 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
@@ -16,7 +16,6 @@
 package com.android.voicemail.impl.transcribe;
 
 import android.content.Context;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import java.util.concurrent.TimeUnit;
 
 /** Provides configuration values needed to connect to the transcription server. */
@@ -28,25 +27,17 @@
   }
 
   public boolean isVoicemailTranscriptionAvailable() {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean("voicemail_transcription_available", false);
+    return false;
   }
 
   public String getServerAddress() {
     // Private voicemail transcription service
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(
-            "voicemail_transcription_server_address", "voicemailtranscription-pa.googleapis.com");
+    return "";
   }
 
   public String getApiKey() {
     // Android API key restricted to com.google.android.dialer
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(
-            "voicemail_transcription_client_api_key", "AIzaSyAXdDnif6B7sBYxU8hzw9qAp3pRPVHs060");
+    return "";
   }
 
   public String getAuthToken() {
@@ -54,56 +45,35 @@
   }
 
   public boolean shouldUsePlaintext() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_server_use_plaintext", false);
+    return false;
   }
 
   public boolean shouldUseSyncApi() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_server_use_sync_api", false);
+    return false;
   }
 
   public long getMaxTranscriptionRetries() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getLong("voicemail_transcription_max_transcription_retries", 2L);
+    return 2L;
   }
 
   public int getMaxGetTranscriptPolls() {
-    return (int)
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong("voicemail_transcription_max_get_transcript_polls", 20L);
+    return 20;
   }
 
   public long getInitialGetTranscriptPollDelayMillis() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getLong(
-            "voicemail_transcription_get_initial_transcript_poll_delay_millis",
-            TimeUnit.SECONDS.toMillis(1));
+    return TimeUnit.SECONDS.toMillis(1);
   }
 
   public long getMaxGetTranscriptPollTimeMillis() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getLong(
-            "voicemail_transcription_get_max_transcript_poll_time_millis",
-            TimeUnit.MINUTES.toMillis(20));
+    return TimeUnit.MINUTES.toMillis(20);
   }
 
   public boolean isVoicemailDonationAvailable() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_donation_available", false);
+    return false;
   }
 
   public boolean useClientGeneratedVoicemailIds() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_client_generated_voicemail_ids", false);
+    return false;
   }
 
   @Override
diff --git a/packages.mk b/packages.mk
index 2691f77..6488a9a 100644
--- a/packages.mk
+++ b/packages.mk
@@ -27,7 +27,6 @@
 	com.android.dialer.common \
 	com.android.dialer.common.concurrent.testing \
 	com.android.dialer.common.preference \
-	com.android.dialer.configprovider \
 	com.android.dialer.contacts.displaypreference \
 	com.android.dialer.contacts.resources \
 	com.android.dialer.contactphoto \
@@ -65,7 +64,6 @@
 	com.android.dialer.shortcuts \
 	com.android.dialer.simulator.impl \
 	com.android.dialer.simulator.service \
-	com.android.dialer.spam.promo \
 	com.android.dialer.speeddial \
 	com.android.dialer.spannable \
 	com.android.dialer.theme \
@@ -95,7 +93,6 @@
 	com.android.incallui.incall.impl \
 	com.android.incallui.rtt.impl \
 	com.android.incallui.rtt.protocol \
-  com.android.incallui.speakeasy \
 	com.android.incallui.sessiondata \
 	com.android.incallui.spam \
 	com.android.incallui.speakerbuttonlogic \