Merge "Style and layout changes to match redlines"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 273429c..e66733c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -175,12 +175,11 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.TAB" />
             </intent-filter>
-            -->
-
+             -->
         </activity>
 
         <activity android:name="com.android.dialer.calllog.NewCallLogActivity"
-                  android:label="@string/recentCallsIconLabel"
+                  android:label="@string/call_log_activity_title"
                   android:theme="@style/NewDialtactsTheme"
                   android:screenOrientation="portrait"
                   android:icon="@mipmap/ic_launcher_phone">
diff --git a/res/anim/slide_in.xml b/res/anim/slide_in.xml
index b7836f0..31502a9 100644
--- a/res/anim/slide_in.xml
+++ b/res/anim/slide_in.xml
@@ -15,7 +15,7 @@
 -->
 <objectAnimator
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/linear_interpolator"
+    android:interpolator="@android:anim/decelerate_interpolator"
     android:valueFrom="0.67"
     android:valueTo="0"
     android:valueType="floatType"
diff --git a/res/anim/slide_out.xml b/res/anim/slide_out.xml
index 7df102d..e037009 100644
--- a/res/anim/slide_out.xml
+++ b/res/anim/slide_out.xml
@@ -15,7 +15,7 @@
 -->
 <objectAnimator
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/linear_interpolator"
+    android:interpolator="@android:anim/decelerate_interpolator"
     android:valueFrom="0"
     android:valueTo="0.67"
     android:valueType="floatType"
diff --git a/res/drawable-hdpi/ic_ab_dialer_holo_light.png b/res/drawable-hdpi/ic_ab_dialer_holo_light.png
new file mode 100644
index 0000000..7e34576
--- /dev/null
+++ b/res/drawable-hdpi/ic_ab_dialer_holo_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_close_dk.png b/res/drawable-hdpi/ic_close_dk.png
new file mode 100644
index 0000000..f5e378f
--- /dev/null
+++ b/res/drawable-hdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_info.png b/res/drawable-hdpi/ic_contact_info.png
new file mode 100644
index 0000000..9c23000
--- /dev/null
+++ b/res/drawable-hdpi/ic_contact_info.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_menu_dialpad_dk.png b/res/drawable-hdpi/ic_dialer_menu_dialpad_dk.png
new file mode 100644
index 0000000..4da8f28
--- /dev/null
+++ b/res/drawable-hdpi/ic_dialer_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_menu_history_dk.png b/res/drawable-hdpi/ic_dialer_menu_history_dk.png
new file mode 100644
index 0000000..b8d1944
--- /dev/null
+++ b/res/drawable-hdpi/ic_dialer_menu_history_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_overflow_dark.png b/res/drawable-hdpi/ic_menu_overflow_dark.png
new file mode 100644
index 0000000..69741cb
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_overflow_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_holo_light.png b/res/drawable-hdpi/ic_play_holo_light.png
new file mode 100644
index 0000000..684df00
--- /dev/null
+++ b/res/drawable-hdpi/ic_play_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_light.png b/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_light.png
new file mode 100644
index 0000000..1bc02cc
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_light.png
new file mode 100644
index 0000000..8a25e70
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_light.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_close_dk.png b/res/drawable-mdpi/ic_close_dk.png
new file mode 100644
index 0000000..13f68ee
--- /dev/null
+++ b/res/drawable-mdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_info.png b/res/drawable-mdpi/ic_contact_info.png
new file mode 100644
index 0000000..5d35ec5
--- /dev/null
+++ b/res/drawable-mdpi/ic_contact_info.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_menu_dialpad_dk.png b/res/drawable-mdpi/ic_dialer_menu_dialpad_dk.png
new file mode 100644
index 0000000..5a3ac0c
--- /dev/null
+++ b/res/drawable-mdpi/ic_dialer_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_menu_history_dk.png b/res/drawable-mdpi/ic_dialer_menu_history_dk.png
new file mode 100644
index 0000000..d9306ba
--- /dev/null
+++ b/res/drawable-mdpi/ic_dialer_menu_history_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_overflow_dark.png b/res/drawable-mdpi/ic_menu_overflow_dark.png
new file mode 100644
index 0000000..2a477c8
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_overflow_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_holo_light.png b/res/drawable-mdpi/ic_play_holo_light.png
new file mode 100644
index 0000000..f36edf9
--- /dev/null
+++ b/res/drawable-mdpi/ic_play_holo_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_close_dk.png b/res/drawable-xhdpi/ic_close_dk.png
new file mode 100644
index 0000000..4f965fe
--- /dev/null
+++ b/res/drawable-xhdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_contact_info.png b/res/drawable-xhdpi/ic_contact_info.png
new file mode 100644
index 0000000..88d367b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_contact_info.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_menu_dialpad_dk.png b/res/drawable-xhdpi/ic_dialer_menu_dialpad_dk.png
new file mode 100644
index 0000000..317bf66
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialer_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_menu_history_dk.png b/res/drawable-xhdpi/ic_dialer_menu_history_dk.png
new file mode 100644
index 0000000..63ad62b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialer_menu_history_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_overflow_dark.png b/res/drawable-xhdpi/ic_menu_overflow_dark.png
new file mode 100644
index 0000000..8cbd508
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_overflow_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_people_info.png b/res/drawable-xhdpi/ic_people_info.png
new file mode 100644
index 0000000..b933bbc
--- /dev/null
+++ b/res/drawable-xhdpi/ic_people_info.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_holo_light.png b/res/drawable-xhdpi/ic_play_holo_light.png
new file mode 100644
index 0000000..f797576
--- /dev/null
+++ b/res/drawable-xhdpi/ic_play_holo_light.png
Binary files differ
diff --git a/res/drawable/bottom_border_background.xml b/res/drawable/bottom_border_background.xml
new file mode 100644
index 0000000..9a35e8a
--- /dev/null
+++ b/res/drawable/bottom_border_background.xml
@@ -0,0 +1,29 @@
+<?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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+<item>
+    <shape android:shape="rectangle" >
+        <solid android:color="@color/favorite_contacts_separator_color" />
+        <padding android:bottom="1dp" />
+    </shape>
+</item>
+<item>
+    <shape android:shape="rectangle" >
+        <solid android:color="@color/background_dial_holo_light" />
+    </shape>
+</item>
+</layer-list>
\ No newline at end of file
diff --git a/res/layout/new_dialtacts_activity.xml b/res/layout/new_dialtacts_activity.xml
index a9960d8..7845d0f 100644
--- a/res/layout/new_dialtacts_activity.xml
+++ b/res/layout/new_dialtacts_activity.xml
@@ -22,17 +22,36 @@
     android:clipChildren="false"
     android:id="@+id/dialtacts_container"
     >
+    <!-- Overlapping dialpad fragment is inserted here -->
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:clipChildren="false"
         android:orientation="vertical" >
-        <SearchView
-            android:id="@+id/search_view"
+        <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:iconifiedByDefault="false"
-            android:inputType="textFilter" />
+            android:layout_height="wrap_content"
+            android:paddingLeft="16dp"
+            android:paddingRight="23dp"
+            android:id="@+id/search_view_container"
+            android:background="@color/searchbox_background_color"
+            android:orientation="horizontal"
+            android:gravity="center_vertical">
+            <EditText
+                android:id="@+id/search_view"
+                android:layout_width="0dp"
+                android:layout_height="56dp"
+                android:layout_weight="1"
+                android:inputType="textFilter"/>
+            <ImageView
+                android:id="@+id/search_close_button"
+                android:layout_height="40dp"
+                android:layout_width="40dp"
+                android:padding="6dp"
+                android:src="@drawable/ic_close_dk"
+                android:background="?android:attr/selectableItemBackground"
+                android:visibility="gone" />
+        </LinearLayout>
         <FrameLayout
             android:layout_height="0dp"
             android:layout_weight="1"
diff --git a/res/layout/new_phone_favorites_fragment.xml b/res/layout/new_phone_favorites_fragment.xml
index 33a3eb4..90d0aac 100644
--- a/res/layout/new_phone_favorites_fragment.xml
+++ b/res/layout/new_phone_favorites_fragment.xml
@@ -46,9 +46,10 @@
             android:textAppearance="?android:attr/textAppearanceLarge"/>
     </FrameLayout>
     <FrameLayout
-        android:layout_height="?android:attr/actionBarSize"
+        android:layout_height="48dp"
         android:layout_width="match_parent"
-        android:id="@+id/fake_action_bar">
+        android:id="@+id/fake_action_bar"
+        android:background="@color/actionbar_background_color">
         <ImageButton
             android:id="@+id/call_history_button"
             android:layout_width="@dimen/fake_menu_button_min_width"
@@ -56,7 +57,7 @@
             android:layout_gravity="bottom|start"
             android:background="?android:attr/selectableItemBackground"
             android:contentDescription="@string/description_search_button"
-            android:src="@drawable/ic_dial_action_search"/>
+            android:src="@drawable/ic_dialer_menu_history_dk"/>
         <ImageButton
             android:id="@+id/dialpad_button"
             android:layout_width="@dimen/fake_menu_button_min_width"
@@ -64,13 +65,13 @@
             android:layout_gravity="bottom|center"
             android:background="?android:attr/selectableItemBackground"
             android:contentDescription="@string/description_search_button"
-            android:src="@drawable/ic_dial_action_search"/>
+            android:src="@drawable/ic_dialer_menu_dialpad_dk"/>
         <ImageButton
              android:id="@+id/overflow_menu"
              android:layout_width="@dimen/fake_menu_button_min_width"
              android:layout_height="match_parent"
              android:layout_gravity="bottom|end"
-             android:src="@drawable/ic_menu_overflow"
+             android:src="@drawable/ic_menu_overflow_dark"
              android:contentDescription="@string/action_menu_overflow_description"
              android:background="?android:attr/selectableItemBackground"/>
     </FrameLayout>
diff --git a/res/layout/phone_favorite_regular_row_view.xml b/res/layout/phone_favorite_regular_row_view.xml
index 30e109f..eda5a02 100644
--- a/res/layout/phone_favorite_regular_row_view.xml
+++ b/res/layout/phone_favorite_regular_row_view.xml
@@ -52,55 +52,6 @@
             android:fadingEdgeLength="3dip"
             android:ellipsize="marquee"
             android:textAlignment="viewStart" />
-
-        <LinearLayout
-            android:orientation="horizontal"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/contact_tile_name"
-            android:layout_toRightOf="@id/contact_tile_quick"
-            android:layout_toEndOf="@id/contact_tile_quick"
-            android:gravity="center_vertical">
-
-            <TextView
-                android:id="@+id/contact_tile_phone_number"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_weight="?attr/list_item_data_width_weight"
-                android:textSize="14sp"
-                android:ellipsize="marquee"
-                android:textColor="@color/dialtacts_secondary_text_color"
-                android:layout_marginLeft="8dip"
-                android:layout_marginStart="8dip"
-                android:singleLine="true"
-                android:layout_gravity="bottom"
-                android:textDirection="ltr"
-                android:textAlignment="viewStart" />
-
-            <TextView
-                android:id="@+id/contact_tile_phone_type"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_weight="?attr/list_item_label_width_weight"
-                android:textSize="12sp"
-                android:ellipsize="marquee"
-                android:singleLine="true"
-                android:textAllCaps="true"
-                android:textColor="@color/dialtacts_secondary_text_color"
-                android:layout_marginLeft="8dip"
-                android:layout_marginStart="8dip"
-                android:gravity="end"
-                android:layout_gravity="bottom" />
-
-        </LinearLayout>
-
-        <View
-            android:id="@+id/contact_tile_horizontal_divider"
-            android:layout_width="match_parent"
-            android:layout_height="1px"
-            android:background="?android:attr/listDivider"
-            android:layout_below="@id/contact_tile_quick" />
-
     </RelativeLayout>
 
 </view>
diff --git a/res/layout/phone_favorite_tile_view.xml b/res/layout/phone_favorite_tile_view.xml
index f6e44d8..bf90205 100644
--- a/res/layout/phone_favorite_tile_view.xml
+++ b/res/layout/phone_favorite_tile_view.xml
@@ -60,14 +60,16 @@
 
         <ImageButton
             android:id="@id/contact_tile_secondary_button"
-            android:src="@drawable/ic_contacts_holo_dark"
+            android:src="@drawable/ic_contact_info"
             android:background="?android:attr/selectableItemBackground"
             android:layout_height="@dimen/contact_tile_shadowbox_height"
             android:layout_width="48dip"
-            android:paddingLeft="8dip"
-            android:paddingRight="8dip"
-            android:paddingStart="8dip"
-            android:paddingEnd="8dip"
+            android:paddingLeft="12dip"
+            android:paddingRight="12dip"
+            android:paddingStart="12dip"
+            android:paddingEnd="12dip"
+            android:paddingTop="12dip"
+            android:paddingBottom="12dip"
             android:layout_alignParentBottom="true"
             android:layout_alignParentRight="true"
             android:layout_alignParentEnd="true"
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 672c970..2534cb5 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -44,7 +44,7 @@
     <color name="item_selected">#660099cc</color>
 
     <!-- Background color of new dialer activity -->
-    <color name="background_dial_holo_light">#ffffff</color>
+    <color name="background_dial_holo_light">#f5f5f5</color>
 
     <!-- Background color of new dialpad -->
     <color name="background_dialpad">#ee020709</color>
@@ -55,4 +55,15 @@
         -->
     <color name="dialpad_secondary_text_color">#888888</color>
 
+    <!-- Background color of fake action bar in the favorites fragment -->
+    <color name="actionbar_background_color">#e6e6e6</color>
+
+    <!-- Color of the 1dp divider that separates favorites -->
+    <color name="favorite_contacts_separator_color">#d0d0d0</color>
+
+    <!-- Background color of the search box -->
+    <color name="searchbox_background_color">#ffffff</color>
+    <!-- Text color of the search box -->
+    <color name="searchbox_text_color">#d3d3d3</color>
+
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 474f572..0c5d22e 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -57,4 +57,10 @@
     <dimen name="smartdial_suggestions_extra_padding">2dp</dimen>
     <dimen name="smartdial_confidence_hint_text_size">27dp</dimen>
 
+    <!--  Favorites tile padding -->
+    <dimen name="phone_contact_tile_divider_padding">3dp</dimen>
+    <dimen name="favorites_row_top_padding">8dp</dimen>
+    <dimen name="favorites_row_bottom_padding">8dp</dimen>
+    <dimen name="favorites_row_start_padding">8dp</dimen>
+    <dimen name="favorites_row_end_padding">8dp</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0915fa1..8b7d61a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -534,4 +534,7 @@
 
     <!--  Menu option to show favorite contacts only -->
     <string name="show_favorites_only">Show favorites only</string>
+
+    <!--  Title of activity that displays a list of all calls -->
+    <string name="call_log_activity_title">History</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index cb36090..5932294 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -73,6 +73,8 @@
         <item name="android:actionBarStyle">@style/DialtactsActionBarStyleNew</item>
         <item name="android:windowContentOverlay">@null</item>
         <item name="android:windowBackground">@color/background_dial_holo_light</item>
+        <!--  Searchbox Style -->
+        <item name="android:editTextStyle">@style/DialtactsSearchboxStyle</item>
         <item name="android:listViewStyle">@style/ListViewStyle</item>
         <item name="activated_background">@drawable/list_item_activated_background</item>
         <item name="section_header_background">@drawable/list_title_holo</item>
@@ -167,6 +169,9 @@
 
     <style name="DialtactsActionBarStyleNew" parent="android:Widget.Holo.ActionBar">
         <item name="android:backgroundSplit">@null</item>
+        <item name="android:background">@color/actionbar_background_color</item>
+        <!-- Empty icon -->
+        <item name="android:icon">@android:color/transparent</item>
         <item name="android:displayOptions"></item>
     </style>
 
@@ -183,4 +188,9 @@
     <style name="FragmentActionBarPadding">
         <item name="android:paddingBottom">?android:attr/actionBarSize</item>
     </style>
+
+    <style name="DialtactsSearchboxStyle" parent="@android:style/Widget.EditText">
+        <item name="android:background">@null</item>
+        <item name="android:textColorHint">@color/searchbox_text_color</item>
+    </style>
 </resources>
diff --git a/src/com/android/dialer/NewDialtactsActivity.java b/src/com/android/dialer/NewDialtactsActivity.java
index 66cbe85..54e7df2 100644
--- a/src/com/android/dialer/NewDialtactsActivity.java
+++ b/src/com/android/dialer/NewDialtactsActivity.java
@@ -28,6 +28,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
@@ -37,7 +38,9 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Intents.UI;
 import android.provider.Settings;
+import android.text.Editable;
 import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -46,6 +49,8 @@
 import android.view.ViewConfiguration;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AbsListView.OnScrollListener;
+import android.widget.EditText;
+import android.widget.ImageView;
 import android.widget.PopupMenu;
 import android.widget.SearchView;
 import android.widget.SearchView.OnCloseListener;
@@ -145,7 +150,9 @@
      * {@link PhoneNumberPickerFragment}).
      */
     private boolean mInSearchUi;
-    private SearchView mSearchView;
+    private View mSearchViewContainer;
+    private View mSearchViewCloseButton;
+    private EditText mSearchView;
 
     /**
      * The index of the Fragment (or, the tab) that has last been manually selected.
@@ -181,61 +188,42 @@
     /**
      * Listener used to send search queries to the phone search fragment.
      */
-    private final OnQueryTextListener mPhoneSearchQueryTextListener =
-            new OnQueryTextListener() {
-                @Override
-                public boolean onQueryTextSubmit(String query) {
-                    View view = getCurrentFocus();
-                    if (view != null) {
-                        hideInputMethod(view);
-                        view.clearFocus();
-                    }
-                    return true;
+    private final TextWatcher mPhoneSearchQueryTextListener = 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 boolean smartDialSearch = isDialpadShowing();
+                final String newText = s.toString();
+                // Show search result with non-empty text. Show a bare list otherwise.
+                if (TextUtils.isEmpty(newText) && mInSearchUi) {
+                    exitSearchUi();
+                    mSearchViewCloseButton.setVisibility(View.GONE);
+                    return;
+                } else if (!TextUtils.isEmpty(newText) && !mInSearchUi) {
+                    enterSearchUi(smartDialSearch);
                 }
 
-                @Override
-                public boolean onQueryTextChange(String newText) {
-                    final boolean smartDialSearch = isDialpadShowing();
-
-                    // Show search result with non-empty text. Show a bare list otherwise.
-                    if (TextUtils.isEmpty(newText) && mInSearchUi) {
-                        exitSearchUi();
-                        return true;
-                    } else if (!TextUtils.isEmpty(newText) && !mInSearchUi) {
-                        enterSearchUi(smartDialSearch);
-                    }
-
-                    if (isDialpadShowing()) {
-                        mSmartDialSearchFragment.setQueryString(newText, false);
-                    } else {
-                        mRegularSearchFragment.setQueryString(newText, false);
-                    }
-                    return true;
+                if (isDialpadShowing()) {
+                    mSmartDialSearchFragment.setQueryString(newText, false);
+                } else {
+                    mRegularSearchFragment.setQueryString(newText, false);
                 }
+                mSearchViewCloseButton.setVisibility(View.VISIBLE);
+                return;
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+            }
     };
 
     private boolean isDialpadShowing() {
         return mDialpadFragment.isVisible();
     }
 
-    /**
-     * Listener used to handle the "close" button on the right side of {@link SearchView}.
-     * If some text is in the search view, this will clean it up. Otherwise this will exit
-     * the search UI and let users go back to usual Phone UI.
-     *
-     * This does _not_ handle back button.
-     */
-    private final OnCloseListener mPhoneSearchCloseListener =
-            new OnCloseListener() {
-                @Override
-                public boolean onClose() {
-                    if (!TextUtils.isEmpty(mSearchView.getQuery())) {
-                        mSearchView.setQuery(null, true);
-                    }
-                    return true;
-                }
-    };
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -362,6 +350,12 @@
                 final Intent intent = new Intent(this, NewCallLogActivity.class);
                 startActivity(intent);
                 break;
+            case R.id.search_close_button:
+                // Clear the search field
+                if (!TextUtils.isEmpty(mSearchView.getText())) {
+                    mSearchView.setText("");
+                }
+                break;
             default: {
                 Log.wtf(TAG, "Unexpected onClick event from " + view);
                 break;
@@ -384,20 +378,14 @@
     }
 
     private void prepareSearchView() {
-        mSearchView = (SearchView) findViewById(R.id.search_view);
-        mSearchView.setOnQueryTextListener(mPhoneSearchQueryTextListener);
-        mSearchView.setOnCloseListener(mPhoneSearchCloseListener);
-        // Since we're using a custom layout for showing SearchView instead of letting the
-        // search menu icon do that job, we need to manually configure the View so it looks
-        // "shown via search menu".
-        // - it should be iconified by default
-        // - it should not be iconified at this time
-        // See also comments for onActionViewExpanded()/onActionViewCollapsed()
-        mSearchView.setIconifiedByDefault(true);
-        mSearchView.setQueryHint(getString(R.string.dialer_hint_find_contact));
-        mSearchView.setIconified(false);
-        mSearchView.clearFocus();
-        mSearchView.setOnQueryTextFocusChangeListener(new OnFocusChangeListener() {
+        mSearchViewContainer = findViewById(R.id.search_view_container);
+        mSearchViewCloseButton = findViewById(R.id.search_close_button);
+        mSearchViewCloseButton.setClickable(true);
+        mSearchViewCloseButton.setOnClickListener(this);
+        mSearchView = (EditText) findViewById(R.id.search_view);
+        mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
+        mSearchView.setHint(getString(R.string.dialer_hint_find_contact));
+        mSearchView.setOnFocusChangeListener(new OnFocusChangeListener() {
             @Override
             public void onFocusChange(View view, boolean hasFocus) {
                 if (hasFocus) {
@@ -416,19 +404,19 @@
     final AnimatorListener mHideListener = new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
-            mSearchView.setVisibility(View.GONE);
+            mSearchViewContainer.setVisibility(View.GONE);
         }
     };
 
     public void hideSearchBar() {
-        mSearchView.animate().cancel();
-        mSearchView.setAlpha(1);
-        mSearchView.setTranslationY(0);
-        mSearchView.animate().withLayer().alpha(0).translationY(-mSearchView.getHeight()).
-                setDuration(200).setListener(mHideListener);
+        mSearchViewContainer.animate().cancel();
+        mSearchViewContainer.setAlpha(1);
+        mSearchViewContainer.setTranslationY(0);
+        mSearchViewContainer.animate().withLayer().alpha(0).translationY(-mSearchView.getHeight())
+                .setDuration(200).setListener(mHideListener);
 
         mPhoneFavoriteFragment.getView().animate().withLayer()
-                .translationY(-mSearchView.getHeight()).setDuration(200).setListener(
+                .translationY(-mSearchViewContainer.getHeight()).setDuration(200).setListener(
                     new AnimatorListenerAdapter() {
                     @Override
                         public void onAnimationEnd(Animator animation) {
@@ -439,18 +427,18 @@
     }
 
     public void showSearchBar() {
-        mSearchView.animate().cancel();
-        mSearchView.setAlpha(0);
-        mSearchView.setTranslationY(-mSearchView.getHeight());
-        mSearchView.animate().withLayer().alpha(1).translationY(0).setDuration(200)
+        mSearchViewContainer.animate().cancel();
+        mSearchViewContainer.setAlpha(0);
+        mSearchViewContainer.setTranslationY(-mSearchViewContainer.getHeight());
+        mSearchViewContainer.animate().withLayer().alpha(1).translationY(0).setDuration(200)
                 .setListener(new AnimatorListenerAdapter() {
                         @Override
                         public void onAnimationStart(Animator animation) {
-                            mSearchView.setVisibility(View.VISIBLE);
+                        mSearchViewContainer.setVisibility(View.VISIBLE);
                         }
                 });
 
-        mPhoneFavoriteFragment.getView().setTranslationY(-mSearchView.getHeight());
+        mPhoneFavoriteFragment.getView().setTranslationY(-mSearchViewContainer.getHeight());
         mPhoneFavoriteFragment.getView().animate().withLayer().translationY(0).setDuration(200)
                 .setListener(
                         new AnimatorListenerAdapter() {
@@ -728,7 +716,7 @@
         if (mDialpadFragment.isVisible()) {
             hideDialpadFragment();
         } else if (mInSearchUi) {
-            mSearchView.setQuery(null, false);
+            mSearchView.setText(null);
         } else if (isTaskRoot()) {
             // Instead of stopping, simply push this to the back of the stack.
             // This is only done when running at the top of the stack;
@@ -744,8 +732,8 @@
     public void onDialpadQueryChanged(String query) {
         final String normalizedQuery = SmartDialNameMatcher.normalizeNumber(query,
                 SmartDialNameMatcher.LATIN_SMART_DIAL_MAP);
-        if (!TextUtils.equals(mSearchView.getQuery(), normalizedQuery)) {
-            mSearchView.setQuery(normalizedQuery, false);
+        if (!TextUtils.equals(mSearchView.getText(), normalizedQuery)) {
+            mSearchView.setText(normalizedQuery);
         }
     }
 
diff --git a/src/com/android/dialer/calllog/NewCallLogListItemHelper.java b/src/com/android/dialer/calllog/NewCallLogListItemHelper.java
index 6cb80a0..6b4f101 100644
--- a/src/com/android/dialer/calllog/NewCallLogListItemHelper.java
+++ b/src/com/android/dialer/calllog/NewCallLogListItemHelper.java
@@ -84,7 +84,7 @@
     private void configureCallSecondaryAction(CallLogListItemViews views,
             PhoneCallDetails details) {
         views.secondaryActionView.setVisibility(View.VISIBLE);
-        views.secondaryActionView.setImageResource(R.drawable.ic_ab_dialer_holo_dark);
+        views.secondaryActionView.setImageResource(R.drawable.ic_ab_dialer_holo_light);
         views.secondaryActionView.setContentDescription(getCallActionDescription(details));
     }
 
@@ -104,7 +104,7 @@
     private void configurePlaySecondaryAction(CallLogListItemViews views, boolean isHighlighted) {
         views.secondaryActionView.setVisibility(View.VISIBLE);
         views.secondaryActionView.setImageResource(
-                isHighlighted ? R.drawable.ic_play_active_holo_dark : R.drawable.ic_play_holo_dark);
+                isHighlighted ? R.drawable.ic_play_active_holo_dark : R.drawable.ic_play_holo_light);
         views.secondaryActionView.setContentDescription(
                 mResources.getString(R.string.description_call_log_play_button));
     }
diff --git a/src/com/android/dialer/list/NewPhoneFavoriteMergedAdapter.java b/src/com/android/dialer/list/NewPhoneFavoriteMergedAdapter.java
index 49d46a8..fff5c9f 100644
--- a/src/com/android/dialer/list/NewPhoneFavoriteMergedAdapter.java
+++ b/src/com/android/dialer/list/NewPhoneFavoriteMergedAdapter.java
@@ -250,13 +250,11 @@
             final int frequentHeaderPosition = mContactTileAdapter.getFrequentHeaderPosition();
             // TODO krelease: Get rid of frequent header position, we don't need it anymore
             if (position >= frequentHeaderPosition) {
-                // Views for "frequent" contacts use FrameLayout's margins instead of padding.
                 final FrameLayout frameLayout = (FrameLayout) view;
                 final View child = frameLayout.getChildAt(0);
                 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                         FrameLayout.LayoutParams.WRAP_CONTENT,
                         FrameLayout.LayoutParams.WRAP_CONTENT);
-                params.setMargins(mItemPaddingLeft, 0, mItemPaddingRight, 0);
                 child.setLayoutParams(params);
             }
             return view;
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 36fc346..48660ff 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -43,7 +43,6 @@
  *
  * This adapter has been rewritten to only support a maximum of one row for favorites.
  *
- * TODO Krelease: Move to PhoneContactTileAdapter in Dialer package.
  */
 public class PhoneFavoritesTileAdapter extends BaseAdapter {
     private static final String TAG = ContactTileAdapter.class.getSimpleName();
@@ -98,7 +97,7 @@
 
         // Converting padding in dips to padding in pixels
         mPaddingInPixels = mContext.getResources()
-                .getDimensionPixelSize(R.dimen.contact_tile_divider_padding);
+                .getDimensionPixelSize(R.dimen.phone_contact_tile_divider_padding);
         bindColumnIndices();
     }
 
@@ -322,7 +321,7 @@
         switch (viewType) {
             case ViewTypes.FREQUENT:
                 return R.layout.phone_favorite_regular_row_view;
-            case ViewTypes.STARRED_PHONE:
+            case ViewTypes.TOP:
                 return R.layout.phone_favorite_tile_view;
             default:
                 throw new IllegalArgumentException("Unrecognized viewType " + viewType);
@@ -336,7 +335,7 @@
     @Override
     public int getItemViewType(int position) {
         if (position < getRowCount(mDividerPosition)) {
-            return ViewTypes.STARRED_PHONE;
+            return ViewTypes.TOP;
         } else {
             return ViewTypes.FREQUENT;
         }
@@ -358,12 +357,31 @@
     private class ContactTileRow extends FrameLayout {
         private int mItemViewType;
         private int mLayoutResId;
+        private final int mRowPaddingStart;
+        private final int mRowPaddingEnd;
+        private final int mRowPaddingTop;
+        private final int mRowPaddingBottom;
 
         public ContactTileRow(Context context, int itemViewType) {
             super(context);
             mItemViewType = itemViewType;
             mLayoutResId = getLayoutResourceId(mItemViewType);
 
+            final Resources resources = mContext.getResources();
+            mRowPaddingStart = resources.getDimensionPixelSize(
+                    R.dimen.favorites_row_start_padding);
+            mRowPaddingEnd = resources.getDimensionPixelSize(
+                    R.dimen.favorites_row_end_padding);
+            mRowPaddingTop = resources.getDimensionPixelSize(
+                    R.dimen.favorites_row_top_padding);
+            mRowPaddingBottom = resources.getDimensionPixelSize(
+                    R.dimen.favorites_row_bottom_padding);
+
+            setBackgroundResource(R.drawable.bottom_border_background);
+
+            setPaddingRelative(mRowPaddingStart, mRowPaddingTop, mRowPaddingEnd,
+                    mRowPaddingBottom);
+
             // Remove row (but not children) from accessibility node tree.
             setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
         }
@@ -390,7 +408,7 @@
                 contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
                 // Note: the layoutparam set here is only actually used for FREQUENT.
                 // We override onMeasure() for STARRED and we don't care the layout param there.
-                Resources resources = mContext.getResources();
+                final Resources resources = mContext.getResources();
                 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                         ViewGroup.LayoutParams.WRAP_CONTENT,
                         ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -409,11 +427,10 @@
             }
             contactTile.loadFromContact(entry);
             switch (mItemViewType) {
-                case ViewTypes.STARRED_PHONE:
+                case ViewTypes.TOP:
                     // Setting divider visibilities
                     contactTile.setPaddingRelative(0, 0,
-                            childIndex >= mColumnCount - 1 ? 0 : mPaddingInPixels,
-                            isLastRow ? 0 : mPaddingInPixels);
+                            childIndex >= mColumnCount - 1 ? 0 : mPaddingInPixels, 0);
                     break;
                 case ViewTypes.FREQUENT:
                     contactTile.setHorizontalDividerVisibility(
@@ -427,7 +444,7 @@
         @Override
         protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
             switch (mItemViewType) {
-                case ViewTypes.STARRED_PHONE:
+                case ViewTypes.TOP:
                     onLayoutForTiles();
                     return;
                 default:
@@ -440,7 +457,7 @@
             final int count = getChildCount();
 
             // Just line up children horizontally.
-            int childLeft = 0;
+            int childLeft = getPaddingStart();
             for (int i = 0; i < count; i++) {
                 final View child = getChildAt(i);
 
@@ -454,8 +471,7 @@
         @Override
         protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
             switch (mItemViewType) {
-                case ViewTypes.STARRED_PHONE:
-                case ViewTypes.STARRED:
+                case ViewTypes.TOP:
                     onMeasureForTiles(widthMeasureSpec);
                     return;
                 default:
@@ -484,7 +500,8 @@
             //    Let width = given width.
             //    Let height = image size + bottom paddding.
 
-            final int totalPaddingsInPixels = (mColumnCount - 1) * mPaddingInPixels;
+            final int totalPaddingsInPixels = (mColumnCount - 1) * mPaddingInPixels
+                    + mRowPaddingStart + mRowPaddingEnd;
 
             // Preferred width / height for images (excluding the padding).
             // The actual width may be 1 pixel larger than this if we have a remainder.
@@ -496,20 +513,19 @@
                 final int childWidth = imageSize + child.getPaddingRight()
                         // Compensate for the remainder
                         + (i < remainder ? 1 : 0);
-                final int childHeight = imageSize + child.getPaddingBottom();
+                final int childHeight = imageSize;
                 child.measure(
                         MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY),
                         MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.EXACTLY)
                         );
             }
-            setMeasuredDimension(width, imageSize + getChildAt(0).getPaddingBottom());
+            setMeasuredDimension(width, imageSize + getPaddingTop() + getPaddingBottom());
         }
     }
 
     protected static class ViewTypes {
-        public static final int COUNT = 3;
-        public static final int STARRED = 0;
-        public static final int FREQUENT = 1;
-        public static final int STARRED_PHONE = 2;
+        public static final int COUNT = 2;
+        public static final int FREQUENT = 0;
+        public static final int TOP = 1;
     }
 }