Merge "Cache repeated Telecom requests from call log." into mnc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 86bf4ff..cf69358 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -18,6 +18,11 @@
     package="com.android.dialer"
     coreApp="true">
 
+    <uses-sdk
+        android:minSdkVersion="MNC"
+        android:targetSdkVersion="MNC" />
+
+
     <uses-permission android:name="android.permission.CALL_PHONE" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
diff --git a/res/drawable-hdpi/ic_pause_24dp.png b/res/drawable-hdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..4d2ea05
--- /dev/null
+++ b/res/drawable-hdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_active_holo_dark.png b/res/drawable-hdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index 179b5a1..0000000
--- a/res/drawable-hdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_holo_dark.png b/res/drawable-hdpi/ic_play_holo_dark.png
deleted file mode 100644
index d5fd235..0000000
--- a/res/drawable-hdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_holo_light.png b/res/drawable-hdpi/ic_play_holo_light.png
deleted file mode 100644
index 684df00..0000000
--- a/res/drawable-hdpi/ic_play_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_minus_dis.png b/res/drawable-hdpi/ic_vm_minus_dis.png
deleted file mode 100644
index 5ff08b2..0000000
--- a/res/drawable-hdpi/ic_vm_minus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_minus_dk.png b/res/drawable-hdpi/ic_vm_minus_dk.png
deleted file mode 100644
index a2073af..0000000
--- a/res/drawable-hdpi/ic_vm_minus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_pause_dis.png b/res/drawable-hdpi/ic_vm_pause_dis.png
deleted file mode 100644
index 9054515..0000000
--- a/res/drawable-hdpi/ic_vm_pause_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_pause_dk.png b/res/drawable-hdpi/ic_vm_pause_dk.png
deleted file mode 100644
index beab6fd..0000000
--- a/res/drawable-hdpi/ic_vm_pause_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_play_dis.png b/res/drawable-hdpi/ic_vm_play_dis.png
deleted file mode 100644
index 5ba4847..0000000
--- a/res/drawable-hdpi/ic_vm_play_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_play_dk.png b/res/drawable-hdpi/ic_vm_play_dk.png
deleted file mode 100644
index 920174c..0000000
--- a/res/drawable-hdpi/ic_vm_play_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_plus_dis.png b/res/drawable-hdpi/ic_vm_plus_dis.png
deleted file mode 100644
index d39c45e..0000000
--- a/res/drawable-hdpi/ic_vm_plus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_plus_dk.png b/res/drawable-hdpi/ic_vm_plus_dk.png
deleted file mode 100644
index 7f2656f..0000000
--- a/res/drawable-hdpi/ic_vm_plus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_volume_down_24dp.png b/res/drawable-hdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..e22e92c
--- /dev/null
+++ b/res/drawable-hdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_volume_up_24dp.png b/res/drawable-hdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..57d7871
--- /dev/null
+++ b/res/drawable-hdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_pause_24dp.png b/res/drawable-mdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..2272d47
--- /dev/null
+++ b/res/drawable-mdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_active_holo_dark.png b/res/drawable-mdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index 042d8c1..0000000
--- a/res/drawable-mdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_holo_dark.png b/res/drawable-mdpi/ic_play_holo_dark.png
deleted file mode 100644
index a31671d..0000000
--- a/res/drawable-mdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_holo_light.png b/res/drawable-mdpi/ic_play_holo_light.png
deleted file mode 100644
index f36edf9..0000000
--- a/res/drawable-mdpi/ic_play_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_minus_dis.png b/res/drawable-mdpi/ic_vm_minus_dis.png
deleted file mode 100644
index b7928a1..0000000
--- a/res/drawable-mdpi/ic_vm_minus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_minus_dk.png b/res/drawable-mdpi/ic_vm_minus_dk.png
deleted file mode 100644
index 250f6e2..0000000
--- a/res/drawable-mdpi/ic_vm_minus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_pause_dis.png b/res/drawable-mdpi/ic_vm_pause_dis.png
deleted file mode 100644
index 4c4d0e2..0000000
--- a/res/drawable-mdpi/ic_vm_pause_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_pause_dk.png b/res/drawable-mdpi/ic_vm_pause_dk.png
deleted file mode 100644
index f7aeaaf..0000000
--- a/res/drawable-mdpi/ic_vm_pause_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_play_dis.png b/res/drawable-mdpi/ic_vm_play_dis.png
deleted file mode 100644
index 74e5470..0000000
--- a/res/drawable-mdpi/ic_vm_play_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_play_dk.png b/res/drawable-mdpi/ic_vm_play_dk.png
deleted file mode 100644
index 7606af9..0000000
--- a/res/drawable-mdpi/ic_vm_play_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_plus_dis.png b/res/drawable-mdpi/ic_vm_plus_dis.png
deleted file mode 100644
index 3f85309..0000000
--- a/res/drawable-mdpi/ic_vm_plus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_plus_dk.png b/res/drawable-mdpi/ic_vm_plus_dk.png
deleted file mode 100644
index 74622f0..0000000
--- a/res/drawable-mdpi/ic_vm_plus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_volume_down_24dp.png b/res/drawable-mdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..10992ed
--- /dev/null
+++ b/res/drawable-mdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_volume_up_24dp.png b/res/drawable-mdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..7cfd4c7
--- /dev/null
+++ b/res/drawable-mdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_pause_24dp.png b/res/drawable-xhdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..f49aed7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_active_holo_dark.png b/res/drawable-xhdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index 20d0583..0000000
--- a/res/drawable-xhdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_holo_dark.png b/res/drawable-xhdpi/ic_play_holo_dark.png
deleted file mode 100644
index afa6bb0..0000000
--- a/res/drawable-xhdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_holo_light.png b/res/drawable-xhdpi/ic_play_holo_light.png
deleted file mode 100644
index f797576..0000000
--- a/res/drawable-xhdpi/ic_play_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_minus_dis.png b/res/drawable-xhdpi/ic_vm_minus_dis.png
deleted file mode 100644
index acee602..0000000
--- a/res/drawable-xhdpi/ic_vm_minus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_minus_dk.png b/res/drawable-xhdpi/ic_vm_minus_dk.png
deleted file mode 100644
index 450041b..0000000
--- a/res/drawable-xhdpi/ic_vm_minus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_pause_dis.png b/res/drawable-xhdpi/ic_vm_pause_dis.png
deleted file mode 100644
index 41cffcf..0000000
--- a/res/drawable-xhdpi/ic_vm_pause_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_pause_dk.png b/res/drawable-xhdpi/ic_vm_pause_dk.png
deleted file mode 100644
index a4e1dbb..0000000
--- a/res/drawable-xhdpi/ic_vm_pause_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_play_dis.png b/res/drawable-xhdpi/ic_vm_play_dis.png
deleted file mode 100644
index 31d3348..0000000
--- a/res/drawable-xhdpi/ic_vm_play_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_play_dk.png b/res/drawable-xhdpi/ic_vm_play_dk.png
deleted file mode 100644
index 07f0c19..0000000
--- a/res/drawable-xhdpi/ic_vm_play_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_plus_dis.png b/res/drawable-xhdpi/ic_vm_plus_dis.png
deleted file mode 100644
index 1760061..0000000
--- a/res/drawable-xhdpi/ic_vm_plus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_plus_dk.png b/res/drawable-xhdpi/ic_vm_plus_dk.png
deleted file mode 100644
index 2f5e005..0000000
--- a/res/drawable-xhdpi/ic_vm_plus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_volume_down_24dp.png b/res/drawable-xhdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..2621bc1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_volume_up_24dp.png b/res/drawable-xhdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..2ed0034
--- /dev/null
+++ b/res/drawable-xhdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_pause_24dp.png b/res/drawable-xxhdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..7192ad4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_active_holo_dark.png b/res/drawable-xxhdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index fc34243..0000000
--- a/res/drawable-xxhdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_holo_dark.png b/res/drawable-xxhdpi/ic_play_holo_dark.png
deleted file mode 100644
index 3037027..0000000
--- a/res/drawable-xxhdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_holo_light.png b/res/drawable-xxhdpi/ic_play_holo_light.png
deleted file mode 100644
index b7b425c..0000000
--- a/res/drawable-xxhdpi/ic_play_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_minus_dis.png b/res/drawable-xxhdpi/ic_vm_minus_dis.png
deleted file mode 100644
index 578d409..0000000
--- a/res/drawable-xxhdpi/ic_vm_minus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_minus_dk.png b/res/drawable-xxhdpi/ic_vm_minus_dk.png
deleted file mode 100644
index 80bc75a..0000000
--- a/res/drawable-xxhdpi/ic_vm_minus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_pause_dis.png b/res/drawable-xxhdpi/ic_vm_pause_dis.png
deleted file mode 100644
index 44adfde..0000000
--- a/res/drawable-xxhdpi/ic_vm_pause_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_pause_dk.png b/res/drawable-xxhdpi/ic_vm_pause_dk.png
deleted file mode 100644
index 47fb136..0000000
--- a/res/drawable-xxhdpi/ic_vm_pause_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_play_dis.png b/res/drawable-xxhdpi/ic_vm_play_dis.png
deleted file mode 100644
index 9ad3d68..0000000
--- a/res/drawable-xxhdpi/ic_vm_play_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_play_dk.png b/res/drawable-xxhdpi/ic_vm_play_dk.png
deleted file mode 100644
index c47b7e0..0000000
--- a/res/drawable-xxhdpi/ic_vm_play_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_plus_dis.png b/res/drawable-xxhdpi/ic_vm_plus_dis.png
deleted file mode 100644
index aad67ca..0000000
--- a/res/drawable-xxhdpi/ic_vm_plus_dis.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_plus_dk.png b/res/drawable-xxhdpi/ic_vm_plus_dk.png
deleted file mode 100644
index b23dfab..0000000
--- a/res/drawable-xxhdpi/ic_vm_plus_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_volume_down_24dp.png b/res/drawable-xxhdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..5eb8b67
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_volume_up_24dp.png b/res/drawable-xxhdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..2e751a4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_pause_24dp.png b/res/drawable-xxxhdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..660ac65
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_volume_down_24dp.png b/res/drawable-xxxhdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..4ab55ab
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_volume_up_24dp.png b/res/drawable-xxxhdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..82972b4
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable/ic_minus.xml b/res/drawable/ic_minus.xml
deleted file mode 100644
index 2bd0699..0000000
--- a/res/drawable/ic_minus.xml
+++ /dev/null
@@ -1,20 +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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false" android:drawable="@drawable/ic_vm_minus_dis" />
-    <item android:drawable="@drawable/ic_vm_minus_dk" />
-</selector>
diff --git a/res/drawable/ic_hold_pause.xml b/res/drawable/ic_pause.xml
similarity index 68%
rename from res/drawable/ic_hold_pause.xml
rename to res/drawable/ic_pause.xml
index ec94120..7015a66 100644
--- a/res/drawable/ic_hold_pause.xml
+++ b/res/drawable/ic_pause.xml
@@ -15,7 +15,17 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false"
-            android:drawable="@drawable/ic_vm_pause_dis" />
-    <item android:drawable="@drawable/ic_vm_pause_dk" />
+
+    <item android:state_enabled="false">
+        <bitmap
+            android:src="@drawable/ic_pause_24dp"
+            android:tint="@color/voicemail_icon_disabled_tint" />
+    </item>
+
+    <item>
+        <bitmap
+            android:src="@drawable/ic_pause_24dp"
+            android:tint="@color/voicemail_playpause_icon_tint" />
+    </item>
+
 </selector>
diff --git a/res/drawable/ic_play.xml b/res/drawable/ic_play.xml
deleted file mode 100644
index 6a09c89..0000000
--- a/res/drawable/ic_play.xml
+++ /dev/null
@@ -1,21 +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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false"
-        android:drawable="@drawable/ic_vm_play_dis" />
-    <item android:drawable="@drawable/ic_vm_play_dk" />
-</selector>
diff --git a/res/drawable/ic_hold_pause.xml b/res/drawable/ic_play_arrow.xml
similarity index 65%
copy from res/drawable/ic_hold_pause.xml
copy to res/drawable/ic_play_arrow.xml
index ec94120..1a9ee97 100644
--- a/res/drawable/ic_hold_pause.xml
+++ b/res/drawable/ic_play_arrow.xml
@@ -14,8 +14,19 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false"
-            android:drawable="@drawable/ic_vm_pause_dis" />
-    <item android:drawable="@drawable/ic_vm_pause_dk" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:autoMirrored="true">
+
+    <item android:state_enabled="false">
+        <bitmap
+            android:src="@drawable/ic_play_arrow_24dp"
+            android:tint="@color/voicemail_icon_disabled_tint" />
+    </item>
+
+    <item>
+        <bitmap
+            android:src="@drawable/ic_play_arrow_24dp"
+            android:tint="@color/voicemail_playpause_icon_tint" />
+    </item>
+
 </selector>
diff --git a/res/drawable/ic_plus.xml b/res/drawable/ic_plus.xml
deleted file mode 100644
index c606674..0000000
--- a/res/drawable/ic_plus.xml
+++ /dev/null
@@ -1,20 +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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false" android:drawable="@drawable/ic_vm_plus_dis" />
-    <item android:drawable="@drawable/ic_vm_plus_dk" />
-</selector>
diff --git a/res/drawable/call_log_action_border.xml b/res/drawable/oval_ripple.xml
similarity index 65%
rename from res/drawable/call_log_action_border.xml
rename to res/drawable/oval_ripple.xml
index fbb3559..0022d26 100644
--- a/res/drawable/call_log_action_border.xml
+++ b/res/drawable/oval_ripple.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
+
 <!--
-  ~ Copyright (C) 2015 The Android Open Source Project
+  ~ 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.
@@ -15,10 +16,11 @@
   ~ limitations under the License
   -->
 
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:left="-1dp" android:right="-1dp" android:bottom="-1dp">
-        <shape android:shape="rectangle">
-            <stroke android:width="1dp" android:color="@color/call_log_action_divider" />
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="?android:attr/colorControlHighlight" >
+    <item>
+        <shape android:shape="oval">
+            <solid android:color="#fff" />
         </shape>
     </item>
-</layer-list>
+</ripple>
diff --git a/res/layout/call_log_list_item_actions.xml b/res/layout/call_log_list_item_actions.xml
index 4d3fb75..b427206 100644
--- a/res/layout/call_log_list_item_actions.xml
+++ b/res/layout/call_log_list_item_actions.xml
@@ -28,6 +28,11 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/call_log_action_divider" />
+
     <LinearLayout
         android:id="@+id/call_action"
         style="@style/CallLogActionStyle">
@@ -91,7 +96,7 @@
 
         <ImageView
             style="@style/CallLogActionIconStyle"
-            android:src="@drawable/ic_textsms_24dp" />
+            android:src="@drawable/ic_message_24dp" />
 
         <TextView
             style="@style/CallLogActionTextStyle"
@@ -105,7 +110,7 @@
 
         <ImageView
             style="@style/CallLogActionIconStyle"
-            android:src="@drawable/ic_more_horiz_24dp" />
+            android:src="@drawable/ic_info_outline_24dp" />
 
         <TextView
             style="@style/CallLogActionTextStyle"
diff --git a/res/layout/voicemail_playback_layout.xml b/res/layout/voicemail_playback_layout.xml
index 97bb5f8..56865fc 100644
--- a/res/layout/voicemail_playback_layout.xml
+++ b/res/layout/voicemail_playback_layout.xml
@@ -18,74 +18,94 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layout_marginStart="64dp"
+    android:layout_marginEnd="24dp"
     android:orientation="vertical"
     android:background="@color/background_dialer_call_log_list_item">
 
-    <RelativeLayout
-        android:id="@+id/seek_container"
+    <TextView
+        android:id="@+id/playback_state_text"
+        android:layout_height="wrap_content"
         android:layout_width="match_parent"
-        android:layout_height="80dp"
-        android:layout_marginTop="@dimen/call_detail_button_spacing">
+        android:gravity="center"
+        android:textSize="14sp" />
 
-        <SeekBar
-            android:id="@+id/playback_seek"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:progressDrawable="@drawable/seekbar_drawable"
-            android:thumb="@drawable/ic_voicemail_seek_handle"
-            android:thumbOffset="8dp"
-            android:progress="0"
-            android:paddingStart="8dp"
-            android:paddingEnd="8dp"
-            android:paddingTop="30dp"
-            android:paddingBottom="20dp"
-            android:layout_marginEnd="64dp"
-            android:layout_marginStart="64dp"
-            android:max="0"
-            android:layout_centerVertical="true"
-            android:contentDescription="@string/description_playback_seek" />
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:gravity="top">
 
         <TextView
             android:id="@+id/playback_position_text"
             android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:textSize="14sp"
-            android:layout_alignParentTop="true"
-            android:layout_centerHorizontal="true"
-            android:layout_marginTop="10dp" />
+            android:paddingTop="@dimen/voicemail_playback_top_padding" />
 
-    </RelativeLayout>
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:layout_marginTop="4dp">
 
-    <LinearLayout android:id="@+id/buttons_linear_layout"
-        android:layout_width="match_parent"
+            <SeekBar
+                android:id="@+id/playback_seek"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingBottom="8dp"
+                android:paddingTop="@dimen/voicemail_playback_top_padding"
+                android:progressDrawable="@drawable/seekbar_drawable"
+                android:thumb="@drawable/ic_voicemail_seek_handle"
+                android:progress="0"
+                android:max="0"
+                android:contentDescription="@string/description_playback_seek" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:gravity="center"
+                android:padding="8dp">
+
+                <ImageButton android:id="@+id/playback_speakerphone"
+                    style="@style/VoicemailPlaybackLayoutButtonStyle"
+                    android:src="@drawable/ic_speakerphone_on"
+                    android:tint="@color/voicemail_icon_tint"
+                    android:contentDescription="@string/description_playback_speakerphone" />
+
+                <Space
+                    android:layout_width="0dp"
+                    android:layout_height="0dp"
+                    android:layout_weight="1" />
+
+                <ImageButton android:id="@+id/playback_start_stop"
+                    style="@style/VoicemailPlaybackLayoutButtonStyle"
+                    android:src="@drawable/ic_play_arrow"
+                    android:contentDescription="@string/voicemail_play_start_pause" />
+
+                <Space
+                    android:layout_width="0dp"
+                    android:layout_height="0dp"
+                    android:layout_weight="1" />
+
+                <ImageButton android:id="@+id/delete_voicemail"
+                    style="@style/VoicemailPlaybackLayoutButtonStyle"
+                    android:src="@drawable/ic_delete_24dp"
+                    android:tint="@color/voicemail_icon_tint"
+                    android:contentDescription="@string/recentCalls_trashVoicemail" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    <TextView
+        android:id="@+id/total_duration_text"
         android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-        <ImageButton android:id="@+id/playback_start_stop"
-            android:layout_width="match_parent"
-            android:layout_height="58dp"
-            android:layout_marginEnd="@dimen/call_detail_button_spacing"
-            android:layout_weight="1"
-            android:background="?android:attr/selectableItemBackground"
-            android:src="@drawable/ic_hold_pause"
-            android:contentDescription="@string/voicemail_play_start_pause" />
-
-        <ImageButton android:id="@+id/playback_speakerphone"
-            android:layout_width="match_parent"
-            android:layout_height="58dp"
-            android:layout_weight="1"
-            android:background="?android:attr/selectableItemBackground"
-            android:src="@drawable/ic_speakerphone_on"
-            android:contentDescription="@string/description_playback_speakerphone" />
-
-        <ImageButton android:id="@+id/delete_voicemail"
-            android:layout_width="match_parent"
-            android:layout_height="58dp"
-            android:layout_weight="1"
-            android:background="?android:attr/selectableItemBackground"
-            android:src="@drawable/ic_delete_24dp"
-            android:tint="@color/voicemail_playback_icon_tint"
-            android:contentDescription="@string/recentCalls_trashVoicemail" />
+        android:layout_width="wrap_content"
+        android:textSize="14sp"
+        android:paddingTop="@dimen/voicemail_playback_top_padding" />
 
     </LinearLayout>
 
diff --git a/res/values/colors.xml b/res/values/colors.xml
index c3b0fb5..8ce3c17 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -30,9 +30,11 @@
     <color name="setting_background_color">#ffffff</color>
     <color name="setting_button_color">#eee</color>
 
+    <!-- 70% black -->
+    <color name="call_log_icon_tint">#b3000000</color>
+    <color name="call_log_list_item_primary_action_icon_tint">@color/call_log_icon_tint</color>
     <!-- Color of the text describing an unconsumed missed call. -->
     <color name="call_log_missed_call_highlight_color">@color/dialer_red_highlight_color</color>
-
     <!-- Color of the text describing an unconsumed voicemail. -->
     <color name="call_log_voicemail_highlight_color">#33b5e5</color>
 
@@ -41,19 +43,13 @@
     <color name="visual_voicemail_promo_card_divider">#7d57c1</color>
     <color name="promo_card_text">#ffffff</color>
 
-    <!-- Tint of the recent card phone icon; 30% black -->
-    <color name="call_log_list_item_primary_action_icon_tint">#4d000000</color>
-
-    <color name="voicemail_playback_icon_tint">#8e8e8e</color>
-
-    <!--
-         Colour of voicemail progress bar to the right of position indicator.
-         Same as the background color of the dialer
-    -->
+    <color name="voicemail_icon_tint">@color/call_log_icon_tint</color>
+    <color name="voicemail_icon_disabled_tint">#80000000</color>
+    <color name="voicemail_playpause_icon_tint">@color/dialer_theme_color</color>
+    <!-- Colour of voicemail progress bar to the right of position indicator. -->
     <color name="voicemail_playback_seek_bar_yet_to_play">#cecece</color>
-
     <!-- Colour of voicemail progress bar to the left of position indicator. -->
-    <color name="voicemail_playback_seek_bar_already_played">#39c9ff</color>
+    <color name="voicemail_playback_seek_bar_already_played">@color/dialer_theme_color</color>
 
     <!-- Standard color for selected items. -->
     <color name="item_selected">#660099cc</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 206b447..776cd11 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -145,4 +145,6 @@
     <dimen name="promo_card_action_end_padding">4dp</dimen>
     <dimen name="promo_card_action_between_padding">11dp</dimen>
     <dimen name="promo_card_line_spacing">4dp</dimen>
+
+    <dimen name="voicemail_playback_top_padding">12dp</dimen>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 7d5d42f..957fabf 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -161,8 +161,7 @@
     <style name="CallLogActionStyle">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">@dimen/call_log_action_height</item>
-        <item name="android:background">@drawable/call_log_action_border</item>
-        <item name="android:foreground">?android:attr/selectableItemBackground</item>
+        <item name="android:background">?android:attr/selectableItemBackground</item>
         <item name="android:orientation">horizontal</item>
         <item name="android:gravity">center_vertical</item>
     </style>
@@ -232,4 +231,15 @@
         <item name="android:singleLine">true</item>
         <item name="android:textAllCaps">true</item>
     </style>
+
+    <style name="VoicemailPlaybackLayoutTextStyle">
+        <item name="android:textSize">14sp</item>
+    </style>
+
+    <style name="VoicemailPlaybackLayoutButtonStyle">
+        <item name="android:layout_width">56dp</item>
+        <item name="android:layout_height">56dp</item>
+        <item name="android:background">@drawable/oval_ripple</item>
+        <item name="android:padding">8dp</item>
+    </style>
 </resources>
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index b77e910..653ed8b 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -402,6 +402,7 @@
                 .setOnClickListener(mSearchViewOnClickListener);
         searchEditTextLayout.findViewById(R.id.search_box_start_search)
                 .setOnClickListener(mSearchViewOnClickListener);
+        searchEditTextLayout.setOnClickListener(mSearchViewOnClickListener);
         searchEditTextLayout.setCallback(new SearchEditTextLayout.Callback() {
             @Override
             public void onBackButtonClicked() {
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
index 17c573f..6c0ecf7 100644
--- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -160,7 +160,7 @@
                 break;
             case SHORTCUT_SEND_SMS_MESSAGE:
                 text = resources.getString(R.string.search_shortcut_send_sms_message);
-                drawableId = R.drawable.ic_textsms_24dp;
+                drawableId = R.drawable.ic_message_24dp;
                 break;
             case SHORTCUT_MAKE_VIDEO_CALL:
                 text = resources.getString(R.string.search_shortcut_make_video_call);
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
index ca487db..2d65504 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -70,13 +70,13 @@
         /** Update rate for the slider, 30fps. */
         private static final int SLIDER_UPDATE_PERIOD_MILLIS = 1000 / 30;
 
-        private int mDuration;
+        private int mDurationMs;
         private final ScheduledExecutorService mExecutorService;
         private final Object mLock = new Object();
         @GuardedBy("mLock") private ScheduledFuture<?> mScheduledFuture;
 
-        public PositionUpdater(int duration, ScheduledExecutorService executorService) {
-            mDuration = duration;
+        public PositionUpdater(int durationMs, ScheduledExecutorService executorService) {
+            mDurationMs = durationMs;
             mExecutorService = executorService;
         }
 
@@ -85,15 +85,15 @@
             post(new Runnable() {
                 @Override
                 public void run() {
-                    int currentPosition = 0;
+                    int currentPositionMs = 0;
                     synchronized (mLock) {
                         if (mScheduledFuture == null || mPresenter == null) {
                             // This task has been canceled. Just stop now.
                             return;
                         }
-                        currentPosition = mPresenter.getMediaPlayerPosition();
+                        currentPositionMs = mPresenter.getMediaPlayerPosition();
                     }
-                    setClipPosition(currentPosition, mDuration);
+                    setClipPosition(currentPositionMs, mDurationMs);
                 }
             });
         }
@@ -193,7 +193,9 @@
     private ImageButton mStartStopButton;
     private ImageButton mPlaybackSpeakerphone;
     private ImageButton mDeleteButton;
-    private TextView mPlaybackPosition;
+    private TextView mStateText;
+    private TextView mPositionText;
+    private TextView mTotalDurationText;
 
     private PositionUpdater mPositionUpdater;
 
@@ -224,7 +226,9 @@
         mStartStopButton = (ImageButton) findViewById(R.id.playback_start_stop);
         mPlaybackSpeakerphone = (ImageButton) findViewById(R.id.playback_speakerphone);
         mDeleteButton = (ImageButton) findViewById(R.id.delete_voicemail);
-        mPlaybackPosition = (TextView) findViewById(R.id.playback_position_text);
+        mStateText = (TextView) findViewById(R.id.playback_state_text);
+        mPositionText = (TextView) findViewById(R.id.playback_position_text);
+        mTotalDurationText = (TextView) findViewById(R.id.total_duration_text);
 
         mPlaybackSeek.setOnSeekBarChangeListener(mSeekBarChangeListener);
         mStartStopButton.setOnClickListener(mStartStopButtonListener);
@@ -236,7 +240,7 @@
     public void onPlaybackStarted(int duration, ScheduledExecutorService executorService) {
         mIsPlaying = true;
 
-        mStartStopButton.setImageResource(R.drawable.ic_hold_pause);
+        mStartStopButton.setImageResource(R.drawable.ic_pause);
 
         if (mPresenter != null) {
             onSpeakerphoneOn(mPresenter.isSpeakerphoneOn());
@@ -250,7 +254,7 @@
     public void onPlaybackStopped() {
         mIsPlaying = false;
 
-        mStartStopButton.setImageResource(R.drawable.ic_play);
+        mStartStopButton.setImageResource(R.drawable.ic_play_arrow);
 
         if (mPositionUpdater != null) {
             mPositionUpdater.stopUpdating();
@@ -265,7 +269,7 @@
         }
 
         disableUiElements();
-        mPlaybackPosition.setText(getString(R.string.voicemail_playback_error));
+        mPositionText.setText(getString(R.string.voicemail_playback_error));
     }
 
 
@@ -275,12 +279,12 @@
         }
 
         if (on) {
-            mPlaybackSpeakerphone.setImageResource(R.drawable.ic_speakerphone_on);
+            mPlaybackSpeakerphone.setImageResource(R.drawable.ic_volume_up_24dp);
             // Speaker is now on, tapping button will turn it off.
             mPlaybackSpeakerphone.setContentDescription(
                     mContext.getString(R.string.voicemail_speaker_off));
         } else {
-            mPlaybackSpeakerphone.setImageResource(R.drawable.ic_speakerphone_off);
+            mPlaybackSpeakerphone.setImageResource(R.drawable.ic_volume_down_24dp);
             // Speaker is now off, tapping button will turn it on.
             mPlaybackSpeakerphone.setContentDescription(
                     mContext.getString(R.string.voicemail_speaker_on));
@@ -288,33 +292,36 @@
     }
 
     @Override
-    public void setClipPosition(int clipPositionInMillis, int clipLengthInMillis) {
-        int seekBarPosition = Math.max(0, clipPositionInMillis);
-        int seekBarMax = Math.max(seekBarPosition, clipLengthInMillis);
+    public void setClipPosition(int positionMs, int durationMs) {
+        int seekBarPositionMs = Math.max(0, positionMs);
+        int seekBarMax = Math.max(seekBarPositionMs, durationMs);
         if (mPlaybackSeek.getMax() != seekBarMax) {
             mPlaybackSeek.setMax(seekBarMax);
         }
 
-        mPlaybackSeek.setProgress(seekBarPosition);
-        mPlaybackPosition.setText(formatAsMinutesAndSeconds(seekBarMax - seekBarPosition));
+        mPlaybackSeek.setProgress(seekBarPositionMs);
+
+        mPositionText.setText(formatAsMinutesAndSeconds(seekBarPositionMs));
+        mTotalDurationText.setText(formatAsMinutesAndSeconds(durationMs));
+        mStateText.setText(null);
     }
 
     @Override
     public void setIsBuffering() {
         disableUiElements();
-        mPlaybackPosition.setText(getString(R.string.voicemail_buffering));
+        mStateText.setText(getString(R.string.voicemail_buffering));
     }
 
     @Override
     public void setIsFetchingContent() {
         disableUiElements();
-        mPlaybackPosition.setText(getString(R.string.voicemail_fetching_content));
+        mStateText.setText(getString(R.string.voicemail_fetching_content));
     }
 
     @Override
     public void setFetchContentTimeout() {
         disableUiElements();
-        mPlaybackPosition.setText(getString(R.string.voicemail_fetching_timout));
+        mStateText.setText(getString(R.string.voicemail_fetching_timout));
     }
 
     @Override
@@ -328,6 +335,9 @@
         mPlaybackSpeakerphone.setEnabled(false);
         mPlaybackSeek.setProgress(0);
         mPlaybackSeek.setEnabled(false);
+
+        mPositionText.setText(formatAsMinutesAndSeconds(0));
+        mTotalDurationText.setText(formatAsMinutesAndSeconds(0));
     }
 
     @Override
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 4cd8c4d..92bc089 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -33,6 +33,7 @@
 import android.provider.VoicemailContract;
 import android.util.Log;
 import android.view.View;
+import android.view.WindowManager.LayoutParams;
 import android.widget.SeekBar;
 
 import com.android.dialer.R;
@@ -285,6 +286,7 @@
             mMediaPlayer = null;
         }
 
+        mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
         disableProximitySensor(false /* waitForFarState */);
     }
 
@@ -337,6 +339,10 @@
     }
 
     private boolean queryHasContent(Uri voicemailUri) {
+        if (voicemailUri == null || mContext == null) {
+            return false;
+        }
+
         ContentResolver contentResolver = mContext.getContentResolver();
         Cursor cursor = contentResolver.query(
                 voicemailUri, HAS_CONTENT_PROJECTION, null, null, null);
@@ -578,7 +584,11 @@
 
         Log.d(TAG, "Resumed playback at " + mPosition + ".");
         mView.onPlaybackStarted(mDuration.get(), getScheduledExecutorServiceInstance());
-        enableProximitySensor();
+        if (isSpeakerphoneOn()) {
+            mActivity.getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+        } else {
+            enableProximitySensor();
+        }
     }
 
     /**
@@ -600,6 +610,8 @@
 
         mView.onPlaybackStopped();
         mAudioManager.abandonAudioFocus(this);
+
+        mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
         disableProximitySensor(true /* waitForFarState */);
     }
 
@@ -621,11 +633,8 @@
     }
 
     private void enableProximitySensor() {
-        // Disable until proximity sensor behavior in onPause is fixed: b/21932251.
-
-        /*
         if (mProximityWakeLock == null || isSpeakerphoneOn() || !mIsPrepared
-                || !mMediaPlayer.isPlaying()) {
+                || mMediaPlayer == null || !mMediaPlayer.isPlaying()) {
             return;
         }
 
@@ -635,7 +644,6 @@
         } else {
             Log.i(TAG, "Proximity wake lock already acquired");
         }
-        */
     }
 
     private void disableProximitySensor(boolean waitForFarState) {
@@ -653,10 +661,15 @@
 
     public void setSpeakerphoneOn(boolean on) {
         mAudioManager.setSpeakerphoneOn(on);
+
         if (on) {
             disableProximitySensor(false /* waitForFarState */);
+            if (mIsPrepared && mMediaPlayer != null && mMediaPlayer.isPlaying()) {
+                mActivity.getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+            }
         } else {
             enableProximitySensor();
+            mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
         }
     }