Remove AppCompat library from Contacts (1/3)

This will reduce size of GoogleContacts-N.apk by 0.7 MB (8.4 MB --> 7.7 MB)

* CL was prepared by running the following:

  git revert --no-commit e7fd1ad19023a0b79b232462bcb988676c605b9a # https://googleplex-android-review.git.corp.google.com/#/c/841451/
  git revert --no-commit 3d53e233beb1742d3274fb27576d4d1420e4aac2 # https://googleplex-android-review.git.corp.google.com/#/c/841473/
  git revert --no-commit 903fbfc4fb63ceaccddb722217a5d5e9d80f88b3 # https://googleplex-android-review.git.corp.google.com/#/c/839578/

Also:
  - added import view.Window back to PeopleActivity;
  - removed an AppCompat style

Bug 27257097

Change-Id: I21653376c78ef0a435f90b565b6c40dd5b747317
diff --git a/Android.mk b/Android.mk
index ad13292..566e27e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -20,7 +20,6 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
 LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) \
-    $(support_library_root_dir)/v7/appcompat/res \
     $(support_library_root_dir)/v7/cardview/res
 LOCAL_ASSET_DIR := $(addprefix $(LOCAL_PATH)/, $(asset_dirs))
 
@@ -28,7 +27,6 @@
     --auto-add-overlay \
     --extra-packages com.android.contacts.common \
     --extra-packages com.android.phone.common \
-    --extra-packages android.support.v7.appcompat \
     --extra-packages android.support.v7.cardview
 
 LOCAL_STATIC_JAVA_LIBRARIES := \
@@ -36,7 +34,6 @@
     android-common \
     guava \
     android-support-v13 \
-    android-support-v7-appcompat \
     android-support-v7-cardview \
     android-support-v7-palette \
     android-support-v4 \
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 45826d1..f415d88 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -64,7 +64,7 @@
         <!-- The main Contacts activity with the contact list, favorites, and groups. -->
         <activity android:name=".activities.PeopleActivity"
             android:label="@string/launcherActivityLabel"
-            android:theme="@style/PeopleActivityTheme"
+            android:theme="@style/PeopleTheme"
             android:clearTaskOnLaunch="true"
             android:launchMode="singleTop"
             android:resizeableActivity="true"
diff --git a/res/layout-land/contacts_unavailable_fragment_content.xml b/res/layout-land/contacts_unavailable_fragment_content.xml
index 3d5a0b0..4f26db6 100644
--- a/res/layout-land/contacts_unavailable_fragment_content.xml
+++ b/res/layout-land/contacts_unavailable_fragment_content.xml
@@ -69,7 +69,6 @@
             android:layout_gravity="center_horizontal">
 
             <Button
-                style="@style/ContactsUnavailableButtonStyle"
                 android:id="@+id/add_account_button"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -79,7 +78,6 @@
                 android:text="@string/contacts_unavailable_add_account" />
 
             <Button
-                style="@style/ContactsUnavailableButtonStyle"
                 android:id="@+id/import_contacts_button"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
diff --git a/res/layout-land/people_activity_toolbar.xml b/res/layout-land/people_activity_toolbar.xml
index c110133..d33a96c 100644
--- a/res/layout-land/people_activity_toolbar.xml
+++ b/res/layout-land/people_activity_toolbar.xml
@@ -28,15 +28,13 @@
     <FrameLayout
         android:id="@+id/toolbar_frame"
         android:layout_width="match_parent"
-        android:layout_height="?attr/actionBarSize"
+        android:layout_height="?android:attr/actionBarSize"
         android:background="@color/actionbar_background_color">
 
-        <!-- the attribute padding removes the gap between this Toolbar and its parent FrameLayout on tablet -->
-        <android.support.v7.widget.Toolbar
+        <Toolbar
             android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
+            android:layout_height="?android:attr/actionBarSize"
             android:id="@+id/toolbar"
-            android:padding="0dp"
             style="@style/ContactsToolbarStyle" />
 
     </FrameLayout>
diff --git a/res/layout/contacts_unavailable_fragment_content.xml b/res/layout/contacts_unavailable_fragment_content.xml
index 765e453..9482273 100644
--- a/res/layout/contacts_unavailable_fragment_content.xml
+++ b/res/layout/contacts_unavailable_fragment_content.xml
@@ -58,7 +58,6 @@
         android:layout_height="wrap_content">
 
         <Button
-            style="@style/ContactsUnavailableButtonStyle"
             android:id="@+id/add_account_button"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -68,7 +67,6 @@
             android:text="@string/contacts_unavailable_add_account" />
 
         <Button
-            style="@style/ContactsUnavailableButtonStyle"
             android:id="@+id/import_contacts_button"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/res/layout/custom_action_bar.xml b/res/layout/custom_action_bar.xml
index 9604849..5b930ea 100644
--- a/res/layout/custom_action_bar.xml
+++ b/res/layout/custom_action_bar.xml
@@ -28,7 +28,7 @@
         android:layout_height="1px" >
         <requestFocus />
     </View>
-    <android.support.v7.widget.SearchView
+    <SearchView
         android:id="@+id/search_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
diff --git a/res/layout/people_activity_toolbar.xml b/res/layout/people_activity_toolbar.xml
index da1dae4..cbb4d91 100644
--- a/res/layout/people_activity_toolbar.xml
+++ b/res/layout/people_activity_toolbar.xml
@@ -24,15 +24,13 @@
     <FrameLayout
         android:id="@+id/toolbar_frame"
         android:layout_width="match_parent"
-        android:layout_height="?attr/actionBarSize"
+        android:layout_height="?android:attr/actionBarSize"
         android:background="@color/actionbar_background_color">
 
-        <!-- the attribute padding removes the gap between this Toolbar and its parent FrameLayout on tablet -->
-        <android.support.v7.widget.Toolbar
+        <Toolbar
             android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
+            android:layout_height="?android:attr/actionBarSize"
             android:id="@+id/toolbar"
-            android:padding="0dp"
             style="@style/ContactsToolbarStyle" />
 
     </FrameLayout>
@@ -40,7 +38,7 @@
     <com.android.contacts.common.list.ViewPagerTabs
         android:id="@+id/lists_pager_header"
         android:layout_width="match_parent"
-        android:layout_height="?attr/actionBarSize"
+        android:layout_height="?android:attr/actionBarSize"
         android:textAllCaps="true"
         android:orientation="horizontal"
         android:layout_gravity="top"
diff --git a/res/layout/selection_bar.xml b/res/layout/selection_bar.xml
index f91c2b8..34cdd60 100644
--- a/res/layout/selection_bar.xml
+++ b/res/layout/selection_bar.xml
@@ -25,7 +25,7 @@
         android:layout_width="48dp"
         android:layout_height="48dp"
         android:src="@drawable/ic_back_arrow"
-        android:background="?attr/selectableItemBackgroundBorderless"
+        android:background="?android:attr/selectableItemBackgroundBorderless"
         android:contentDescription="@string/action_menu_back_from_search"
         android:layout_gravity="center_vertical|start"
         android:tint="@android:color/white" />
@@ -37,6 +37,6 @@
         android:layout_height="wrap_content"
         android:visibility="gone"
         android:layout_gravity="center_vertical|start"
-        style="@style/ContactsActionBarTitleTextAppCompat" />
+        style="@style/ContactsActionBarTitleText" />
 
 </FrameLayout>
diff --git a/res/menu/people_options.xml b/res/menu/people_options.xml
index af98f9d..dde404c 100644
--- a/res/menu/people_options.xml
+++ b/res/menu/people_options.xml
@@ -13,13 +13,12 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:contacts="http://schemas.android.com/apk/res-auto">
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/menu_search"
         android:icon="@drawable/ic_ab_search"
         android:title="@string/menu_search"
-        contacts:showAsAction="ifRoom" />
+        android:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/menu_contacts_filter"
diff --git a/res/menu/search_menu.xml b/res/menu/search_menu.xml
index c890f20..355442e 100644
--- a/res/menu/search_menu.xml
+++ b/res/menu/search_menu.xml
@@ -13,11 +13,10 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:contacts="http://schemas.android.com/apk/res-auto">
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/menu_search"
         android:icon="@drawable/ic_ab_search"
         android:title="@string/menu_search"
-        contacts:showAsAction="always" />
+        android:showAsAction="always" />
 </menu>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 86c46fc..6da3b94 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -20,6 +20,8 @@
         <attr name="mimeType" format="string"/>
         <!-- RemoteViews XML that should be used to format this data -->
         <attr name="remoteViews" format="reference"/>
+        <!-- Icon that should be used to represent this data -->
+        <attr name="icon" format="reference"/>
         <!-- Column in data table to summarize this data -->
         <attr name="summaryColumn" format="string"/>
         <!-- Column in data table to show details of this data -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 708675b..a8dbe0c 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -108,83 +108,6 @@
         <item name="favorites_padding_bottom">0dip</item>
     </style>
 
-    <style name="PeopleActivityTheme" parent="@style/PeopleThemeAppCompat">
-        <item name="windowActionBar">false</item>
-        <item name="windowNoTitle">true</item>
-        <item name="android:listSelector">?android:attr/listChoiceBackgroundIndicator</item>
-    </style>
-
-    <style name="ContactsUnavailableButtonStyle" parent="@style/Widget.AppCompat.Button.Colored">
-    </style>
-
-    <style name="PeopleThemeAppCompat" parent="Theme.AppCompat.Light">
-        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-        <item name="android:actionBarStyle">@style/ContactsActionBarStyleAppCompat</item>
-        <item name="actionBarStyle">@style/ContactsActionBarStyleAppCompat</item>
-        <!-- Style for the tab bar (for the divider between tabs) -->
-        <item name="android:actionBarTabBarStyle">@style/ContactsActionBarTabBarStyle</item>
-        <item name="actionBarTabBarStyle">@style/ContactsActionBarTabBarStyle</item>
-        <!-- Style for the tab bar text (for text on tabs) -->
-        <item name="android:actionBarTabTextStyle">@style/ContactsActionBarTabTextStyle</item>
-        <item name="actionBarTabTextStyle">@style/ContactsActionBarTabTextStyle</item>
-        <!--  Drawable for the back button -->
-        <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
-        <item name="homeAsUpIndicator">@drawable/ic_back_arrow</item>
-        <!-- Style for the overflow button in the actionbar. -->
-        <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
-        <item name="actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
-        <item name="android:actionModeCloseDrawable">@drawable/ic_close_lt</item>
-        <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb</item>
-        <item name="android:fastScrollTrackDrawable">@null</item>
-        <item name="android:textColorPrimary">@color/primary_text_color</item>
-        <item name="android:textColorSecondary">@color/secondary_text_color</item>
-        <item name="android:icon">@android:color/transparent</item>
-        <item name="android:listViewStyle">@style/ListViewStyle</item>
-        <item name="android:windowBackground">@color/background_primary</item>
-        <item name="android:colorPrimaryDark">@color/primary_color_dark</item>
-        <item name="colorPrimaryDark">@color/primary_color_dark</item>
-        <item name="android:colorPrimary">@color/primary_color</item>
-        <item name="colorPrimary">@color/primary_color</item>
-        <item name="android:colorAccent">@color/primary_color</item>
-        <item name="colorAccent">@color/primary_color</item>
-        <item name="android:alertDialogTheme">@style/ContactsAlertDialogTheme</item>
-        <item name="alertDialogTheme">@style/ContactsAlertDialogTheme</item>
-        <item name="list_item_height">?android:attr/listPreferredItemHeight</item>
-        <item name="activated_background">@drawable/list_item_activated_background</item>
-        <item name="section_header_background">@drawable/list_title_holo</item>
-        <item name="list_section_header_height">24dip</item>
-        <item name="list_item_padding_top">
-            @dimen/contact_browser_list_item_padding_top_or_bottom
-        </item>
-        <item name="list_item_padding_right">32dp</item>
-        <item name="list_item_padding_bottom">
-            @dimen/contact_browser_list_item_padding_top_or_bottom
-        </item>
-        <item name="list_item_padding_left">16dip</item>
-        <item name="list_item_gap_between_image_and_text">
-            @dimen/contact_browser_list_item_gap_between_image_and_text
-        </item>
-        <item name="list_item_gap_between_label_and_data">5dip</item>
-        <item name="list_item_presence_icon_margin">4dip</item>
-        <item name="list_item_presence_icon_size">16dip</item>
-        <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
-        <item name="list_item_profile_photo_size">70dip</item>
-        <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
-        <item name="list_item_background_color">@color/list_item_pinned_header_color</item>
-        <item name="list_item_header_text_color">@color/people_app_theme_color</item>
-        <item name="list_item_header_text_size">14sp</item>
-        <item name="list_item_header_height">30dip</item>
-        <item name="list_item_data_width_weight">5</item>
-        <item name="list_item_label_width_weight">3</item>
-        <item name="list_item_header_text_indent">8dip</item>
-        <item name="contact_browser_list_padding_left">0dip</item>
-        <item name="contact_browser_list_padding_right">0dip</item>
-        <item name="contact_browser_background">@color/background_primary</item>
-        <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
-        <!-- Favorites -->
-        <item name="favorites_padding_bottom">0dip</item>
-    </style>
-
     <style name="ContactsActionBarOverflow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
         <item name="android:src">@drawable/ic_overflow_menu</item>
     </style>
@@ -199,45 +122,26 @@
         <item name="android:icon">@android:color/transparent</item>
     </style>
 
-    <style name="ContactsActionBarStyleAppCompat"
-           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
-        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-        <item name="android:background">@color/actionbar_background_color</item>
-        <item name="background">@color/actionbar_background_color</item>
-        <item name="android:titleTextStyle">@style/ContactsActionBarTitleTextAppCompat</item>
-        <item name="titleTextStyle">@style/ContactsActionBarTitleTextAppCompat</item>
-        <item name="android:backgroundStacked">@color/actionbar_background_color</item>
-        <item name="backgroundStacked">@color/actionbar_background_color</item>
-        <!-- Empty icon -->
-        <item name="android:icon">@android:color/transparent</item>
-        <item name="icon">@android:color/transparent</item>
-    </style>
-
     <style name="EditorActionBarStyle" parent="@style/ContactsActionBarStyle">
         <item name="android:contentInsetStart">72dp</item>
     </style>
 
     <!-- When this style was added, android:toolbarStyle was private. Therefore, this style
          must be directly applied to every toolbar -->
-    <style name="ContactsToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
-        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-        <item name="android:titleTextAppearance">@style/ContactsActionBarTitleTextAppCompat</item>
-        <item name="titleTextAppearance">@style/ContactsActionBarTitleTextAppCompat</item>
+    <style name="ContactsToolbarStyle" parent="@android:style/Widget.Toolbar">
+        <item name="android:titleTextAppearance">@style/ContactsActionBarTitleText</item>
     </style>
 
-    <style name="ContactsPickerActionBarStyle" parent="@style/ContactsActionBarStyleAppCompat">
+    <style name="ContactsPickerActionBarStyle" parent="@style/ContactsActionBarStyle">
         <!-- when first loading, don't show title or up button -->
         <item name="android:displayOptions"></item>
     </style>
 
-    <style name="ContactPickerSearchTheme" parent="@style/PeopleThemeAppCompat">
+    <style name="ContactPickerSearchTheme" parent="@style/PeopleTheme">
         <item name="android:textColorPrimary">@android:color/white</item>
         <item name="android:textColorHint">?android:textColorHintInverse</item>
-        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
         <item name="android:colorControlActivated">?android:textColorHintInverse</item>
-        <item name="colorControlActivated">?android:textColorHintInverse</item>
         <item name="android:colorControlNormal">@android:color/white</item>
-        <item name="colorControlNormal">@android:color/white</item>
     </style>
 
     <!-- Text in the action bar at the top of the screen -->
@@ -246,10 +150,6 @@
         <item name="android:textColor">@color/actionbar_text_color</item>
     </style>
 
-    <style name="ContactsActionBarTitleTextAppCompat" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
-        <item name="android:textColor">@color/actionbar_text_color</item>
-    </style>
-
     <!-- Styling for the tab bar; handles styling of the divider line. -->
     <style name="ContactsActionBarTabBarStyle"
            parent="@android:style/Widget.Material.ActionBar.TabBar">
@@ -268,7 +168,7 @@
 
     <!-- Action bar overflow menu icon. -->
     <style name="ContactsActionBarOverflowQP"
-           parent="Widget.AppCompat.Light.ActionButton.Overflow">
+           parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
         <item name="android:src">@drawable/ic_menu_overflow_lt</item>
     </style>
 
@@ -287,11 +187,8 @@
         <item name="android:listSelector">?android:attr/listChoiceBackgroundIndicator</item>
     </style>
 
-    <style name="ContactPickerTheme" parent="@style/PeopleThemeAppCompat">
-        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+    <style name="ContactPickerTheme" parent="@style/PeopleTheme" >
         <item name="android:actionBarStyle">@style/ContactsPickerActionBarStyle</item>
-        <item name="actionBarStyle">@style/ContactsPickerActionBarStyle</item>
-        <item name="android:listSelector">?android:attr/listChoiceBackgroundIndicator</item>
     </style>
 
     <style name="ContactPickerLayout" parent="ContactPickerTheme">
@@ -303,9 +200,8 @@
         <item name="android:listViewStyle">@style/ListViewStyle</item>
     </style>
 
-    <style name="ContactListFilterTheme" parent="@style/PeopleThemeAppCompat">
-        <!-- Make the shadow when pressing a list item transparent rather than yellow. -->
-        <item name="android:listSelector">?android:attr/listChoiceBackgroundIndicator</item>
+    <style name="ContactListFilterTheme" parent="@style/PeopleTheme">
+        <item name="android:listViewStyle">@style/ListViewStyle</item>
     </style>
 
     <style name="NonPhoneActivityTheme" parent="@android:Theme.Translucent.NoTitleBar">
@@ -314,17 +210,16 @@
     <style name="NonPhoneDialogTheme" parent="@android:Theme.Material.Light.Dialog">
     </style>
 
-    <style name="ConfirmAddDetailDialogTheme" parent="Theme.AppCompat.Light.Dialog">
+    <style name="ConfirmAddDetailDialogTheme" parent="@android:style/Theme.Material.Light.Dialog.MinWidth">
         <item name="android:windowCloseOnTouchOutside">true</item>
     </style>
 
-    <style name="ContactEditorAccountsChangedActivityTheme" parent="Theme.AppCompat.Light.Dialog">
+    <style name="ContactEditorAccountsChangedActivityTheme" parent="@android:style/Theme.Material.Light.Dialog.NoActionBar.MinWidth">
         <item name="android:windowCloseOnTouchOutside">true</item>
         <item name="android:textColorPrimary">@color/primary_text_color</item>
         <item name="android:textColorSecondary">@color/secondary_text_color</item>
         <item name="android:listViewStyle">@style/ListViewStyle</item>
         <item name="android:colorAccent">@color/primary_color</item>
-        <item name="colorAccent">@color/primary_color</item>
     </style>
 
     <style name="SectionDivider">
@@ -420,11 +315,6 @@
         <item name="android:colorAccent">@color/primary_color</item>
     </style>
 
-    <style name="ContactsAlertDialogThemeAppCompat" parent="Theme.AppCompat.Light.Dialog">
-        <item name="android:colorAccent">@color/primary_color</item>
-        <item name="colorAccent">@color/primary_color</item>
-    </style>
-
     <style name="EditKindIconStyle">
         <item name="android:layout_width">24dp</item>
         <item name="android:layout_height">24dp</item>
diff --git a/src/com/android/contacts/AppCompatContactsActivity.java b/src/com/android/contacts/AppCompatContactsActivity.java
deleted file mode 100644
index cd5a79f..0000000
--- a/src/com/android/contacts/AppCompatContactsActivity.java
+++ /dev/null
@@ -1,130 +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.contacts;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.ContentResolver;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.View;
-
-import com.android.contacts.common.activity.AppCompatTransactionSafeActivity;
-import com.android.contacts.common.testing.InjectedServices;
-
-/**
- * A common superclass for Contacts activities that handles application-wide services, copied from
- * {@link com.android.contacts.ContactsActivity}, which will be deprecated after Kitkat backporting
- * is done.
- */
-public abstract class AppCompatContactsActivity extends AppCompatTransactionSafeActivity
-    implements ContactSaveService.Listener {
-
-    private ContentResolver mContentResolver;
-
-    @Override
-    public ContentResolver getContentResolver() {
-        if (mContentResolver == null) {
-            InjectedServices services = ContactsApplication.getInjectedServices();
-            if (services != null) {
-                mContentResolver = services.getContentResolver();
-            }
-            if (mContentResolver == null) {
-                mContentResolver = super.getContentResolver();
-            }
-        }
-        return mContentResolver;
-    }
-
-    @Override
-    public SharedPreferences getSharedPreferences(String name, int mode) {
-        InjectedServices services = ContactsApplication.getInjectedServices();
-        if (services != null) {
-            SharedPreferences prefs = services.getSharedPreferences();
-            if (prefs != null) {
-                return prefs;
-            }
-        }
-
-        return super.getSharedPreferences(name, mode);
-    }
-
-    @Override
-    public Object getSystemService(String name) {
-        Object service = super.getSystemService(name);
-        if (service != null) {
-            return service;
-        }
-
-        return getApplicationContext().getSystemService(name);
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        ContactSaveService.registerListener(this);
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    protected void onDestroy() {
-        ContactSaveService.unregisterListener(this);
-        super.onDestroy();
-    }
-
-    @Override
-    public void onServiceCompleted(Intent callbackIntent) {
-        onNewIntent(callbackIntent);
-    }
-
-    /**
-     * Convenient version of {@link FragmentManager#findFragmentById(int)}, which throws
-     * an exception if the fragment doesn't exist.
-     */
-    @SuppressWarnings("unchecked")
-    public <T extends Fragment> T getFragment(int id) {
-        T result = (T)getFragmentManager().findFragmentById(id);
-        if (result == null) {
-            throw new IllegalArgumentException("fragment 0x" + Integer.toHexString(id)
-                    + " doesn't exist");
-        }
-        return result;
-    }
-
-    /**
-     * Convenient version of {@link #findViewById(int)}, which throws
-     * an exception if the view doesn't exist.
-     */
-    @SuppressWarnings("unchecked")
-    public <T extends View> T getView(int id) {
-        T result = (T)findViewById(id);
-        if (result == null) {
-            throw new IllegalArgumentException("view 0x" + Integer.toHexString(id)
-                    + " doesn't exist");
-        }
-        return result;
-    }
-
-    protected static void showFragment(FragmentTransaction ft, Fragment f) {
-        if ((f != null) && f.isHidden()) ft.show(f);
-    }
-
-    protected static void hideFragment(FragmentTransaction ft, Fragment f) {
-        if ((f != null) && !f.isHidden()) ft.hide(f);
-    }
-}
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index ad70d92..9862b6f 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -17,6 +17,7 @@
 package com.android.contacts.activities;
 
 import android.animation.ValueAnimator;
+import android.app.ActionBar;
 import android.app.Activity;
 import android.content.Context;
 import android.content.SharedPreferences;
@@ -24,8 +25,6 @@
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.support.v4.content.ContextCompat;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.Toolbar;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -40,6 +39,7 @@
 import android.view.View.OnClickListener;
 import android.widget.EditText;
 import android.widget.TextView;
+import android.widget.Toolbar;
 
 import com.android.contacts.R;
 import com.android.contacts.activities.ActionBarAdapter.Listener.Action;
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index f9a9735..f4e8c78 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.activities;
 
+import android.app.Activity;
 import android.app.Dialog;
 import android.app.ProgressDialog;
 import android.content.AsyncQueryHandler;
@@ -46,7 +47,6 @@
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.RawContactsEntity;
-import android.support.v7.app.AppCompatActivity;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.Log;
@@ -102,7 +102,7 @@
  * Note when there's no accounts, it *is* okay to show the picker / dialog, because the local-only
  * contacts are writable.
  */
-public class ConfirmAddDetailActivity extends AppCompatActivity implements
+public class ConfirmAddDetailActivity extends Activity implements
         DialogManager.DialogShowingViewActivity {
 
     private static final String TAG = "ConfirmAdd"; // The class name is too long to be a tag.
diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
index 9748e46..78b0a3b 100644
--- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
@@ -16,12 +16,12 @@
 
 package com.android.contacts.activities;
 
+import android.app.Activity;
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.ContactsContract.Intents;
-import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.AdapterView;
@@ -48,7 +48,7 @@
  * the new contact in. If the activity result doesn't contain intent data, then there is no
  * account for this contact.
  */
-public class ContactEditorAccountsChangedActivity extends AppCompatActivity {
+public class ContactEditorAccountsChangedActivity extends Activity {
 
     private static final String TAG = ContactEditorAccountsChangedActivity.class.getSimpleName();
 
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 4235fe0..ba1e0dd 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -16,6 +16,9 @@
 
 package com.android.contacts.activities;
 
+import android.app.ActionBar;
+import android.app.ActionBar.LayoutParams;
+import android.app.Activity;
 import android.app.Fragment;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -24,8 +27,6 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Intents.Insert;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBar.LayoutParams;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -36,12 +37,12 @@
 import android.view.View.OnClickListener;
 import android.view.View.OnFocusChangeListener;
 import android.view.inputmethod.InputMethodManager;
-import android.support.v7.widget.SearchView;
-import android.support.v7.widget.SearchView.OnCloseListener;
-import android.support.v7.widget.SearchView.OnQueryTextListener;
+import android.widget.SearchView;
+import android.widget.SearchView.OnCloseListener;
+import android.widget.SearchView.OnQueryTextListener;
 import android.widget.Toast;
 
-import com.android.contacts.AppCompatContactsActivity;
+import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
 import com.android.contacts.common.activity.RequestPermissionsActivity;
 import com.android.contacts.common.list.ContactEntryListFragment;
@@ -67,7 +68,7 @@
  * Displays a list of contacts (or phone numbers or postal addresses) for the
  * purposes of selecting one.
  */
-public class ContactSelectionActivity extends AppCompatContactsActivity
+public class ContactSelectionActivity extends ContactsActivity
         implements View.OnCreateContextMenuListener, OnQueryTextListener, OnClickListener,
                 OnCloseListener, OnFocusChangeListener {
     private static final String TAG = "ContactSelectionActivity";
@@ -133,7 +134,7 @@
     }
 
     private void prepareSearchViewAndActionBar() {
-        final ActionBar actionBar = getSupportActionBar();
+        final ActionBar actionBar = getActionBar();
         mSearchViewContainer = LayoutInflater.from(actionBar.getThemedContext())
                 .inflate(R.layout.custom_action_bar, null);
         mSearchView = (SearchView) mSearchViewContainer.findViewById(R.id.search_view);
@@ -176,7 +177,7 @@
     }
 
     private void configureSearchMode() {
-        final ActionBar actionBar = getSupportActionBar();
+        final ActionBar actionBar = getActionBar();
         if (mIsSearchMode) {
             actionBar.setDisplayShowTitleEnabled(false);
             mSearchViewContainer.setVisibility(View.VISIBLE);
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 8c3d227..5aab771 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -40,7 +40,6 @@
 import android.support.v13.app.FragmentPagerAdapter;
 import android.support.v4.view.PagerAdapter;
 import android.support.v4.view.ViewPager;
-import android.support.v7.widget.Toolbar;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
 import android.util.Log;
@@ -51,10 +50,12 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.Window;
 import android.widget.ImageButton;
 import android.widget.Toast;
+import android.widget.Toolbar;
 
-import com.android.contacts.AppCompatContactsActivity;
+import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
 import com.android.contacts.activities.ActionBarAdapter.TabState;
 import com.android.contacts.common.ContactsUtils;
@@ -105,7 +106,7 @@
 /**
  * Displays a list to browse contacts.
  */
-public class PeopleActivity extends AppCompatContactsActivity implements
+public class PeopleActivity extends ContactsActivity implements
         View.OnCreateContextMenuListener,
         View.OnClickListener,
         ActionBarAdapter.Listener,
@@ -299,6 +300,10 @@
     }
 
     private void createViewsAndFragments(Bundle savedState) {
+        // Disable the ActionBar so that we can use a Toolbar. This needs to be called before
+        // setContentView().
+        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
+
         setContentView(R.layout.people_activity);
 
         final FragmentManager fragmentManager = getFragmentManager();
@@ -314,9 +319,9 @@
         mTabPager.setAdapter(mTabPagerAdapter);
         mTabPager.setOnPageChangeListener(mTabPagerListener);
 
-        // Configure toolbar and toolbar tabs. If in landscape mode, we configure tabs differently.
+        // Configure toolbar and toolbar tabs. If in landscape mode, we  configure tabs differntly.
         final Toolbar toolbar = getView(R.id.toolbar);
-        setSupportActionBar(toolbar);
+        setActionBar(toolbar);
         final ViewPagerTabs portraitViewPagerTabs
                 = (ViewPagerTabs) findViewById(R.id.lists_pager_header);
         ViewPagerTabs landscapeViewPagerTabs = null;
@@ -367,7 +372,7 @@
         // Setting Properties after fragment is created
         mFavoritesFragment.setDisplayType(DisplayType.STREQUENT);
 
-        mActionBarAdapter = new ActionBarAdapter(this, this, getSupportActionBar(),
+        mActionBarAdapter = new ActionBarAdapter(this, this, getActionBar(),
                 portraitViewPagerTabs, landscapeViewPagerTabs, toolbar);
         mActionBarAdapter.initialize(savedState, mRequest);