Update permissions UI to match new watch UI.

Bug: 29250733
Bug: 31779188
Change-Id: I814db5f94bdb840b04c5e8d9e12b565cfcd5fbc1
diff --git a/res/layout-watch/settings.xml b/res/color/btn_colored_background_material.xml
similarity index 64%
copy from res/layout-watch/settings.xml
copy to res/color/btn_colored_background_material.xml
index 46249d5..a6cd089 100644
--- a/res/layout-watch/settings.xml
+++ b/res/color/btn_colored_background_material.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false"
+            android:alpha="?android:disabledAlpha"
+            android:color="?android:colorButtonNormal" />
+    <item android:color="?android:colorAccent" />
+</selector>
diff --git a/res/drawable-watch-280dpi/ic_cc_cancel.png b/res/drawable-watch-280dpi/ic_cc_cancel.png
deleted file mode 100644
index 249b869..0000000
--- a/res/drawable-watch-280dpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_cc_checkmark.png b/res/drawable-watch-280dpi/ic_cc_checkmark.png
deleted file mode 100644
index 94db9ab..0000000
--- a/res/drawable-watch-280dpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_cc_deny.png b/res/drawable-watch-280dpi/ic_cc_deny.png
deleted file mode 100644
index 1733669..0000000
--- a/res/drawable-watch-280dpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_calendar.png b/res/drawable-watch-280dpi/ic_permission_calendar.png
deleted file mode 100644
index 602bddf..0000000
--- a/res/drawable-watch-280dpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_calendardisable.png b/res/drawable-watch-280dpi/ic_permission_calendardisable.png
deleted file mode 100644
index b855932..0000000
--- a/res/drawable-watch-280dpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_call.png b/res/drawable-watch-280dpi/ic_permission_call.png
deleted file mode 100644
index bcf4f86..0000000
--- a/res/drawable-watch-280dpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_calldisable.png b/res/drawable-watch-280dpi/ic_permission_calldisable.png
deleted file mode 100644
index 4781e1f..0000000
--- a/res/drawable-watch-280dpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_camera.png b/res/drawable-watch-280dpi/ic_permission_camera.png
deleted file mode 100644
index 3d27269..0000000
--- a/res/drawable-watch-280dpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_cameradisable.png b/res/drawable-watch-280dpi/ic_permission_cameradisable.png
deleted file mode 100644
index 51fa2c3..0000000
--- a/res/drawable-watch-280dpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_contact.png b/res/drawable-watch-280dpi/ic_permission_contact.png
deleted file mode 100644
index 3e26bfb..0000000
--- a/res/drawable-watch-280dpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_contactdisable.png b/res/drawable-watch-280dpi/ic_permission_contactdisable.png
deleted file mode 100644
index 059b147..0000000
--- a/res/drawable-watch-280dpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_location.png b/res/drawable-watch-280dpi/ic_permission_location.png
deleted file mode 100644
index f002a9c..0000000
--- a/res/drawable-watch-280dpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_locationdisable.png b/res/drawable-watch-280dpi/ic_permission_locationdisable.png
deleted file mode 100644
index 98bbb86..0000000
--- a/res/drawable-watch-280dpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_mic.png b/res/drawable-watch-280dpi/ic_permission_mic.png
deleted file mode 100644
index 1ed9c94..0000000
--- a/res/drawable-watch-280dpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_micdisable.png b/res/drawable-watch-280dpi/ic_permission_micdisable.png
deleted file mode 100644
index d74f59b..0000000
--- a/res/drawable-watch-280dpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_more.png b/res/drawable-watch-280dpi/ic_permission_more.png
deleted file mode 100644
index f33e02b..0000000
--- a/res/drawable-watch-280dpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_sensor.png b/res/drawable-watch-280dpi/ic_permission_sensor.png
deleted file mode 100644
index 712c5d4..0000000
--- a/res/drawable-watch-280dpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_sensordisable.png b/res/drawable-watch-280dpi/ic_permission_sensordisable.png
deleted file mode 100644
index 8faa436..0000000
--- a/res/drawable-watch-280dpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_shield.png b/res/drawable-watch-280dpi/ic_permission_shield.png
deleted file mode 100644
index 78d6742..0000000
--- a/res/drawable-watch-280dpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_shielddisable.png b/res/drawable-watch-280dpi/ic_permission_shielddisable.png
deleted file mode 100644
index f0ef413..0000000
--- a/res/drawable-watch-280dpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_sms.png b/res/drawable-watch-280dpi/ic_permission_sms.png
deleted file mode 100644
index 39bb4b3..0000000
--- a/res/drawable-watch-280dpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_smsdisable.png b/res/drawable-watch-280dpi/ic_permission_smsdisable.png
deleted file mode 100644
index e9375b1..0000000
--- a/res/drawable-watch-280dpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_storage.png b/res/drawable-watch-280dpi/ic_permission_storage.png
deleted file mode 100644
index 60ec50c..0000000
--- a/res/drawable-watch-280dpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-280dpi/ic_permission_storagedisable.png b/res/drawable-watch-280dpi/ic_permission_storagedisable.png
deleted file mode 100644
index 987b824..0000000
--- a/res/drawable-watch-280dpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_cc_cancel.png b/res/drawable-watch-hdpi/ic_cc_cancel.png
deleted file mode 100644
index a57893e..0000000
--- a/res/drawable-watch-hdpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_cc_checkmark.png b/res/drawable-watch-hdpi/ic_cc_checkmark.png
deleted file mode 100644
index a18fe7a..0000000
--- a/res/drawable-watch-hdpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_cc_deny.png b/res/drawable-watch-hdpi/ic_cc_deny.png
deleted file mode 100644
index bab22a3..0000000
--- a/res/drawable-watch-hdpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_calendar.png b/res/drawable-watch-hdpi/ic_permission_calendar.png
deleted file mode 100644
index b742469..0000000
--- a/res/drawable-watch-hdpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_calendardisable.png b/res/drawable-watch-hdpi/ic_permission_calendardisable.png
deleted file mode 100644
index def76b0..0000000
--- a/res/drawable-watch-hdpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_call.png b/res/drawable-watch-hdpi/ic_permission_call.png
deleted file mode 100644
index e14a6bd..0000000
--- a/res/drawable-watch-hdpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_calldisable.png b/res/drawable-watch-hdpi/ic_permission_calldisable.png
deleted file mode 100644
index e0f535f..0000000
--- a/res/drawable-watch-hdpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_camera.png b/res/drawable-watch-hdpi/ic_permission_camera.png
deleted file mode 100644
index 7c1df6b..0000000
--- a/res/drawable-watch-hdpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_cameradisable.png b/res/drawable-watch-hdpi/ic_permission_cameradisable.png
deleted file mode 100644
index 9637808..0000000
--- a/res/drawable-watch-hdpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_contact.png b/res/drawable-watch-hdpi/ic_permission_contact.png
deleted file mode 100644
index 532e3a2..0000000
--- a/res/drawable-watch-hdpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_contactdisable.png b/res/drawable-watch-hdpi/ic_permission_contactdisable.png
deleted file mode 100644
index 32b45c5..0000000
--- a/res/drawable-watch-hdpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_location.png b/res/drawable-watch-hdpi/ic_permission_location.png
deleted file mode 100644
index 3d6c0b9..0000000
--- a/res/drawable-watch-hdpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_locationdisable.png b/res/drawable-watch-hdpi/ic_permission_locationdisable.png
deleted file mode 100644
index c2475e2..0000000
--- a/res/drawable-watch-hdpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_mic.png b/res/drawable-watch-hdpi/ic_permission_mic.png
deleted file mode 100644
index 8acb4c5..0000000
--- a/res/drawable-watch-hdpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_micdisable.png b/res/drawable-watch-hdpi/ic_permission_micdisable.png
deleted file mode 100644
index a37a4e2..0000000
--- a/res/drawable-watch-hdpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_more.png b/res/drawable-watch-hdpi/ic_permission_more.png
deleted file mode 100644
index 08808bc..0000000
--- a/res/drawable-watch-hdpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_sensor.png b/res/drawable-watch-hdpi/ic_permission_sensor.png
deleted file mode 100644
index fd2939a..0000000
--- a/res/drawable-watch-hdpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_sensordisable.png b/res/drawable-watch-hdpi/ic_permission_sensordisable.png
deleted file mode 100644
index 487a486..0000000
--- a/res/drawable-watch-hdpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_shield.png b/res/drawable-watch-hdpi/ic_permission_shield.png
deleted file mode 100644
index cab08e4..0000000
--- a/res/drawable-watch-hdpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_shielddisable.png b/res/drawable-watch-hdpi/ic_permission_shielddisable.png
deleted file mode 100644
index 548ac56..0000000
--- a/res/drawable-watch-hdpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_sms.png b/res/drawable-watch-hdpi/ic_permission_sms.png
deleted file mode 100644
index dc3db2f..0000000
--- a/res/drawable-watch-hdpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_smsdisable.png b/res/drawable-watch-hdpi/ic_permission_smsdisable.png
deleted file mode 100644
index 608c4d0..0000000
--- a/res/drawable-watch-hdpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_storage.png b/res/drawable-watch-hdpi/ic_permission_storage.png
deleted file mode 100644
index 031d989..0000000
--- a/res/drawable-watch-hdpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-hdpi/ic_permission_storagedisable.png b/res/drawable-watch-hdpi/ic_permission_storagedisable.png
deleted file mode 100644
index 08dc662..0000000
--- a/res/drawable-watch-hdpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_cc_cancel.png b/res/drawable-watch-mdpi/ic_cc_cancel.png
deleted file mode 100644
index 87fc65a..0000000
--- a/res/drawable-watch-mdpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_cc_checkmark.png b/res/drawable-watch-mdpi/ic_cc_checkmark.png
deleted file mode 100644
index 02c22b1..0000000
--- a/res/drawable-watch-mdpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_cc_deny.png b/res/drawable-watch-mdpi/ic_cc_deny.png
deleted file mode 100644
index f3b29f7..0000000
--- a/res/drawable-watch-mdpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_calendar.png b/res/drawable-watch-mdpi/ic_permission_calendar.png
deleted file mode 100644
index 6ae2442..0000000
--- a/res/drawable-watch-mdpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_calendardisable.png b/res/drawable-watch-mdpi/ic_permission_calendardisable.png
deleted file mode 100644
index 639109f..0000000
--- a/res/drawable-watch-mdpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_call.png b/res/drawable-watch-mdpi/ic_permission_call.png
deleted file mode 100644
index d67a03a..0000000
--- a/res/drawable-watch-mdpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_calldisable.png b/res/drawable-watch-mdpi/ic_permission_calldisable.png
deleted file mode 100644
index 39760b7..0000000
--- a/res/drawable-watch-mdpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_camera.png b/res/drawable-watch-mdpi/ic_permission_camera.png
deleted file mode 100644
index 807a66f..0000000
--- a/res/drawable-watch-mdpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_cameradisable.png b/res/drawable-watch-mdpi/ic_permission_cameradisable.png
deleted file mode 100644
index edf4f7a..0000000
--- a/res/drawable-watch-mdpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_contact.png b/res/drawable-watch-mdpi/ic_permission_contact.png
deleted file mode 100644
index 2e146e2..0000000
--- a/res/drawable-watch-mdpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_contactdisable.png b/res/drawable-watch-mdpi/ic_permission_contactdisable.png
deleted file mode 100644
index e390351..0000000
--- a/res/drawable-watch-mdpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_location.png b/res/drawable-watch-mdpi/ic_permission_location.png
deleted file mode 100644
index 3862b24..0000000
--- a/res/drawable-watch-mdpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_locationdisable.png b/res/drawable-watch-mdpi/ic_permission_locationdisable.png
deleted file mode 100644
index 1f875bd..0000000
--- a/res/drawable-watch-mdpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_mic.png b/res/drawable-watch-mdpi/ic_permission_mic.png
deleted file mode 100644
index 33327f0..0000000
--- a/res/drawable-watch-mdpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_micdisable.png b/res/drawable-watch-mdpi/ic_permission_micdisable.png
deleted file mode 100644
index 7a1b39c..0000000
--- a/res/drawable-watch-mdpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_more.png b/res/drawable-watch-mdpi/ic_permission_more.png
deleted file mode 100644
index a563f1a..0000000
--- a/res/drawable-watch-mdpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_sensor.png b/res/drawable-watch-mdpi/ic_permission_sensor.png
deleted file mode 100644
index 59e1c01..0000000
--- a/res/drawable-watch-mdpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_sensordisable.png b/res/drawable-watch-mdpi/ic_permission_sensordisable.png
deleted file mode 100644
index d8d55c6..0000000
--- a/res/drawable-watch-mdpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_shield.png b/res/drawable-watch-mdpi/ic_permission_shield.png
deleted file mode 100644
index 7773fa4..0000000
--- a/res/drawable-watch-mdpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_shielddisable.png b/res/drawable-watch-mdpi/ic_permission_shielddisable.png
deleted file mode 100644
index 42f452b..0000000
--- a/res/drawable-watch-mdpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_sms.png b/res/drawable-watch-mdpi/ic_permission_sms.png
deleted file mode 100644
index 11333dd..0000000
--- a/res/drawable-watch-mdpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_smsdisable.png b/res/drawable-watch-mdpi/ic_permission_smsdisable.png
deleted file mode 100644
index b4416f4..0000000
--- a/res/drawable-watch-mdpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_storage.png b/res/drawable-watch-mdpi/ic_permission_storage.png
deleted file mode 100644
index 07bd8f9..0000000
--- a/res/drawable-watch-mdpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-mdpi/ic_permission_storagedisable.png b/res/drawable-watch-mdpi/ic_permission_storagedisable.png
deleted file mode 100644
index ed8af41..0000000
--- a/res/drawable-watch-mdpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_cc_cancel.png b/res/drawable-watch-xhdpi/ic_cc_cancel.png
deleted file mode 100644
index fec6ecb..0000000
--- a/res/drawable-watch-xhdpi/ic_cc_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_cc_checkmark.png b/res/drawable-watch-xhdpi/ic_cc_checkmark.png
deleted file mode 100644
index 1302723..0000000
--- a/res/drawable-watch-xhdpi/ic_cc_checkmark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_cc_deny.png b/res/drawable-watch-xhdpi/ic_cc_deny.png
deleted file mode 100644
index a5f8dc1..0000000
--- a/res/drawable-watch-xhdpi/ic_cc_deny.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_calendar.png b/res/drawable-watch-xhdpi/ic_permission_calendar.png
deleted file mode 100644
index 806438c..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_calendar.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_calendardisable.png b/res/drawable-watch-xhdpi/ic_permission_calendardisable.png
deleted file mode 100644
index 821462e..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_calendardisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_call.png b/res/drawable-watch-xhdpi/ic_permission_call.png
deleted file mode 100644
index 079942b..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_calldisable.png b/res/drawable-watch-xhdpi/ic_permission_calldisable.png
deleted file mode 100644
index 13cd805..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_calldisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_camera.png b/res/drawable-watch-xhdpi/ic_permission_camera.png
deleted file mode 100644
index 03b0d8d..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_camera.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_cameradisable.png b/res/drawable-watch-xhdpi/ic_permission_cameradisable.png
deleted file mode 100644
index bcb2a35..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_cameradisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_contact.png b/res/drawable-watch-xhdpi/ic_permission_contact.png
deleted file mode 100644
index 996fe39..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_contactdisable.png b/res/drawable-watch-xhdpi/ic_permission_contactdisable.png
deleted file mode 100644
index 1063f17..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_contactdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_location.png b/res/drawable-watch-xhdpi/ic_permission_location.png
deleted file mode 100644
index d9dc1fc..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_location.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_locationdisable.png b/res/drawable-watch-xhdpi/ic_permission_locationdisable.png
deleted file mode 100644
index c3e7ae9..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_locationdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_mic.png b/res/drawable-watch-xhdpi/ic_permission_mic.png
deleted file mode 100644
index 3a951ea..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_mic.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_micdisable.png b/res/drawable-watch-xhdpi/ic_permission_micdisable.png
deleted file mode 100644
index a9c7c81..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_micdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_more.png b/res/drawable-watch-xhdpi/ic_permission_more.png
deleted file mode 100644
index a3f7ee5..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_sensor.png b/res/drawable-watch-xhdpi/ic_permission_sensor.png
deleted file mode 100644
index 7356401..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_sensor.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_sensordisable.png b/res/drawable-watch-xhdpi/ic_permission_sensordisable.png
deleted file mode 100644
index ef135a7..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_sensordisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_shield.png b/res/drawable-watch-xhdpi/ic_permission_shield.png
deleted file mode 100644
index 2fc8fd0..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_shield.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_shielddisable.png b/res/drawable-watch-xhdpi/ic_permission_shielddisable.png
deleted file mode 100644
index 08a862e..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_shielddisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_sms.png b/res/drawable-watch-xhdpi/ic_permission_sms.png
deleted file mode 100644
index c74ce08..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_smsdisable.png b/res/drawable-watch-xhdpi/ic_permission_smsdisable.png
deleted file mode 100644
index b725677..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_smsdisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_storage.png b/res/drawable-watch-xhdpi/ic_permission_storage.png
deleted file mode 100644
index 1f16bdb..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_storage.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch-xhdpi/ic_permission_storagedisable.png b/res/drawable-watch-xhdpi/ic_permission_storagedisable.png
deleted file mode 100644
index 41d42d5..0000000
--- a/res/drawable-watch-xhdpi/ic_permission_storagedisable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-watch/accept_deny_dialog_negative_bg.xml b/res/drawable-watch/accept_deny_dialog_negative_bg.xml
new file mode 100644
index 0000000..1ccc40a
--- /dev/null
+++ b/res/drawable-watch/accept_deny_dialog_negative_bg.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <ripple android:color="?android:colorControlHighlight" />
+    </item>
+    <item>
+        <ripple android:color="?android:colorControlHighlight">
+            <item>
+                <shape android:shape="oval"
+                        android:tint="?android:colorButtonNormal">
+                    <solid android:color="@android:color/white" />
+                    <size android:width="@dimen/diag_button_size"
+                            android:height="@dimen/diag_button_size" />
+                </shape>
+            </item>
+        </ripple>
+    </item>
+</layer-list>
diff --git a/res/drawable-watch/accept_deny_dialog_positive_bg.xml b/res/drawable-watch/accept_deny_dialog_positive_bg.xml
new file mode 100644
index 0000000..786a35b
--- /dev/null
+++ b/res/drawable-watch/accept_deny_dialog_positive_bg.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <ripple android:color="?android:colorAccent" />
+    </item>
+    <item>
+        <ripple android:color="?android:colorControlHighlight">
+            <item>
+                <shape android:shape="oval"
+                        android:tint="@color/btn_colored_background_material">
+                    <solid android:color="@android:color/white" />
+                    <size android:width="@dimen/diag_button_size"
+                            android:height="@dimen/diag_button_size" />
+                </shape>
+            </item>
+        </ripple>
+    </item>
+</layer-list>
diff --git a/res/drawable-watch/action_negative_bg.xml b/res/drawable-watch/action_negative_bg.xml
index 7b21ba6..994ae8e 100644
--- a/res/drawable-watch/action_negative_bg.xml
+++ b/res/drawable-watch/action_negative_bg.xml
@@ -13,23 +13,12 @@
      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">
-        <shape android:shape="oval">
-            <solid android:color="@color/circular_button_disabled"/>
-            <size android:width="40dp" android:height="40dp" />
-        </shape>
-    </item>
-    <item android:state_pressed="true">
-        <shape android:shape="oval">
-            <solid android:color="#757575"/>
-            <size android:width="40dp" android:height="40dp" />
-        </shape>
-    </item>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="?android:colorControlHighlight">
     <item>
-        <shape android:shape="oval">
-            <solid android:color="#BDBDBD"/>
+        <shape android:shape="oval" android:tint="?android:colorButtonNormal">
+            <solid android:color="@android:color/white" />
             <size android:width="40dp" android:height="40dp" />
         </shape>
     </item>
-</selector>
+</ripple>
diff --git a/res/drawable-watch/action_positive_bg.xml b/res/drawable-watch/action_positive_bg.xml
index f3457c1..3e8590f 100644
--- a/res/drawable-watch/action_positive_bg.xml
+++ b/res/drawable-watch/action_positive_bg.xml
@@ -13,23 +13,12 @@
      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">
-        <shape android:shape="oval">
-            <solid android:color="@color/circular_button_disabled"/>
-            <size android:width="40dp" android:height="40dp" />
-        </shape>
-    </item>
-    <item android:state_pressed="true">
-        <shape android:shape="oval">
-            <solid android:color="#009688"/>
-            <size android:width="40dp" android:height="40dp" />
-        </shape>
-    </item>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="?android:colorControlHighlight">
     <item>
-        <shape android:shape="oval">
-            <solid android:color="#00BFA5"/>
+        <shape android:shape="oval" android:tint="@color/btn_colored_background_material">
+            <solid android:color="@android:color/white" />
             <size android:width="40dp" android:height="40dp" />
         </shape>
     </item>
-</selector>
+</ripple>
diff --git a/res/drawable-watch/cancel_button.xml b/res/drawable-watch/cancel_button.xml
index 641526a..8e4d2d4 100644
--- a/res/drawable-watch/cancel_button.xml
+++ b/res/drawable-watch/cancel_button.xml
@@ -15,7 +15,5 @@
 -->
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/action_negative_bg" />
-    <item>
-        <bitmap android:src="@drawable/ic_cc_cancel" android:gravity="center" />
-    </item>
+    <item android:drawable="@drawable/ic_cc_clear" android:gravity="center" />
 </layer-list>
diff --git a/res/drawable-watch/confirm_button.xml b/res/drawable-watch/confirm_button.xml
index 2b53e42..d1bfae3 100644
--- a/res/drawable-watch/confirm_button.xml
+++ b/res/drawable-watch/confirm_button.xml
@@ -15,7 +15,5 @@
 -->
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/action_positive_bg" />
-    <item>
-        <bitmap android:src="@drawable/ic_cc_checkmark" android:gravity="center" />
-    </item>
+    <item android:drawable="@drawable/ic_cc_checkmark" android:gravity="center" />
 </layer-list>
diff --git a/res/drawable-watch/deny_button.xml b/res/drawable-watch/deny_button.xml
index 1e7582b..0a2e1ae 100644
--- a/res/drawable-watch/deny_button.xml
+++ b/res/drawable-watch/deny_button.xml
@@ -15,7 +15,5 @@
 -->
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/action_negative_bg" />
-    <item>
-        <bitmap android:src="@drawable/ic_cc_deny" android:gravity="center" />
-    </item>
+    <item android:drawable="@drawable/ic_cc_deny" android:gravity="center" />
 </layer-list>
diff --git a/res/layout-watch/settings.xml b/res/drawable-watch/ic_cc_checkmark.xml
similarity index 60%
copy from res/layout-watch/settings.xml
copy to res/drawable-watch/ic_cc_checkmark.xml
index 46249d5..832e090 100644
--- a/res/layout-watch/settings.xml
+++ b/res/drawable-watch/ic_cc_checkmark.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,12 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+            android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"
+            android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/drawable-watch/ic_cc_clear.xml b/res/drawable-watch/ic_cc_clear.xml
new file mode 100644
index 0000000..06bb30b
--- /dev/null
+++ b/res/drawable-watch/ic_cc_clear.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+            android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"
+            android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/drawable-watch/ic_cc_deny.xml b/res/drawable-watch/ic_cc_deny.xml
new file mode 100644
index 0000000..971dfcc
--- /dev/null
+++ b/res/drawable-watch/ic_cc_deny.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+            android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"
+            android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/layout-watch/accept_deny_dialog.xml b/res/layout-watch/accept_deny_dialog.xml
new file mode 100644
index 0000000..89167cb
--- /dev/null
+++ b/res/layout-watch/accept_deny_dialog.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<ScrollView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:fillViewport="true"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+    <LinearLayout
+            android:id="@android:id/content"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+        <FrameLayout
+                android:minHeight="@dimen/diag_preferred_padding"
+                android:gravity="top|center_horizontal"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent">
+            <ImageView
+                    android:id="@android:id/icon"
+                    android:layout_marginTop="8dp"
+                    android:layout_marginBottom="8dp"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_height="20dp"
+                    android:layout_width="20dp"
+                    android:scaleType="centerInside"
+                    android:visibility="gone" />
+        </FrameLayout>
+
+        <TextView
+                android:id="@android:id/title"
+                android:gravity="center"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:paddingLeft="@dimen/diag_preferred_padding"
+                android:paddingRight="@dimen/diag_preferred_padding"
+                android:textAppearance="@android:style/TextAppearance.Material.Title" />
+
+        <TextView
+                android:id="@android:id/message"
+                android:gravity="center"
+                android:layout_marginBottom="8dp"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:paddingLeft="@dimen/diag_preferred_padding"
+                android:paddingRight="@dimen/diag_preferred_padding"
+                android:textAppearance="@android:style/TextAppearance.Material.Subhead"
+                android:visibility="gone" />
+
+        <FrameLayout
+                android:id="@+id/buttonPanel"
+                android:layout_weight="1"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+            <LinearLayout
+                    android:id="@+id/buttonContainer"
+                    android:orientation="horizontal"
+                    android:gravity="center_horizontal|top"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="bottom"
+                    android:paddingTop="8dp"
+                    android:paddingBottom="@dimen/diag_button_padding_bottom"
+                    android:paddingLeft="@dimen/diag_button_padding_horizontal"
+                    android:paddingRight="@dimen/diag_button_padding_horizontal"
+                    style="?android:attr/buttonBarStyle">
+
+                <ImageButton
+                        android:id="@android:id/button2"
+                        android:src="@drawable/ic_cc_clear"
+                        android:background="@drawable/accept_deny_dialog_negative_bg"
+                        android:contentDescription="@string/generic_cancel"
+                        android:layout_width="@dimen/diag_button_size"
+                        android:layout_height="@dimen/diag_button_size"
+                        android:visibility="gone" />
+
+                <Space
+                        android:id="@+id/spacer"
+                        android:layout_width="0dp"
+                        android:layout_height="0dp"
+                        android:visibility="gone"
+                        android:layout_weight="1" />
+
+                <ImageButton
+                        android:id="@android:id/button1"
+                        android:src="@drawable/ic_cc_checkmark"
+                        android:background="@drawable/accept_deny_dialog_positive_bg"
+                        android:contentDescription="@string/generic_yes"
+                        android:layout_width="@dimen/diag_button_size"
+                        android:layout_height="@dimen/diag_button_size"
+                        android:visibility="gone" />
+            </LinearLayout>
+        </FrameLayout>
+    </LinearLayout>
+</ScrollView>
diff --git a/res/layout-watch/confirmation_dialog.xml b/res/layout-watch/confirmation_dialog.xml
deleted file mode 100644
index b780e77..0000000
--- a/res/layout-watch/confirmation_dialog.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<FrameLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/confirmation"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-    <ScrollView
-            android:id="@+id/scrolling_container"
-            android:overScrollMode="never"
-            android:scrollbars="none"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-
-        <LinearLayout
-                android:id="@+id/content"
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:paddingTop="@dimen/conf_diag_content_padding_top">
-
-            <LinearLayout
-                    android:orientation="vertical"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:minHeight="@dimen/conf_diag_min_space_above_message"
-                    android:gravity="bottom">
-                <TextView
-                        android:id="@+id/current_page_text"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_gravity="center_horizontal"
-                        android:layout_marginTop="@dimen/grant_permissions_app_breadcrumb_margin_top"
-                        android:textAppearance="@style/GrantPermissions.BreadcrumbText" />
-
-                <ImageView
-                        android:id="@+id/icon"
-                        android:layout_width="@dimen/grant_permissions_app_icon_size"
-                        android:layout_height="@dimen/grant_permissions_app_icon_size"
-                        android:tint="@color/grant_permissions_app_color"
-                        android:layout_gravity="center_horizontal"
-                        android:layout_marginTop="@dimen/grant_permissions_app_icon_margin_top"/>
-            </LinearLayout>
-
-            <TextView
-                    android:id="@+id/message"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/grant_permissions_title_margin_top"
-                    android:paddingLeft="@dimen/grant_permissions_message_side_padding"
-                    android:paddingRight="@dimen/grant_permissions_message_side_padding"
-                    android:gravity="center"
-                    android:textAppearance="@style/GrantPermissions.TitleText"/>
-        </LinearLayout>
-    </ScrollView>
-
-    <!-- TODO: Change this to use a ViewStub instead of show/hiding the two layouts -->
-    <FrameLayout android:id="@+id/button_bar_container"
-                 android:layout_width="match_parent"
-                 android:layout_height="wrap_content"
-                 android:layout_gravity="bottom"
-                 android:background="#FF606060">
-        <FrameLayout
-            android:id="@+id/horizontal_button_bar"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/conf_diag_button_container_height">
-            <Button
-                android:id="@+id/permission_deny_button"
-                android:layout_width="54dp"
-                android:layout_height="54dp"
-                android:layout_gravity="top|left"
-                android:layout_marginLeft="@dimen/conf_diag_2button_margin_side"
-                android:layout_marginTop="@dimen/conf_diag_2button_margin_top"
-                android:background="@drawable/cancel_button"
-                android:contentDescription="@string/grant_dialog_button_deny"/>
-
-            <Button
-                android:id="@+id/permission_allow_button"
-                android:layout_width="54dp"
-                android:layout_height="54dp"
-                android:layout_gravity="top|right"
-                android:layout_marginRight="@dimen/conf_diag_2button_margin_side"
-                android:layout_marginTop="@dimen/conf_diag_2button_margin_top"
-                android:background="@drawable/confirm_button"
-                android:contentDescription="@string/grant_dialog_button_allow"/>
-        </FrameLayout>
-
-        <FrameLayout
-            android:id="@+id/vertical_button_bar"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingLeft="@dimen/conf_diag_3button_padding_side"
-            android:paddingRight="@dimen/conf_diag_3button_padding_side"
-            android:visibility="gone">
-            <LinearLayout
-                android:id="@+id/buttonPanel"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-                <Button
-                    android:id="@+id/vertical_button1"
-                    style="@style/Widget.WearDiag.Button"/>
-
-                <Button
-                    android:id="@+id/vertical_button2"
-                    style="@style/Widget.WearDiag.Button"/>
-
-                <Button
-                    android:id="@+id/vertical_button3"
-                    style="@style/Widget.WearDiag.Button"/>
-
-                <!-- Adding padding to the bottom button causes rendering issues, so add
-                     an empty view here instead -->
-                <Space android:layout_width="match_parent"
-                       android:layout_height="@dimen/conf_diag_3button_padding_bottom"/>
-            </LinearLayout>
-        </FrameLayout>
-    </FrameLayout>
-</FrameLayout>
diff --git a/res/layout-watch/permissions_settings_item.xml b/res/layout-watch/permissions_settings_item.xml
deleted file mode 100644
index b370f1a..0000000
--- a/res/layout-watch/permissions_settings_item.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content" >
-    <android.support.wearable.view.CircledImageView
-        android:id="@+id/image"
-        android:alpha="0.5"
-        android:layout_height="52dp"
-        android:layout_width="52dp"
-        android:layout_gravity="center_vertical"
-        app:circle_border_color="#FFFFFFFF"
-        app:circle_border_width="1dp"
-        app:circle_color="#00000000"
-        app:image_tint="#FFFFFFFF"/>
-
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="@dimen/settings_text_margin_left"
-        android:layout_gravity="center_vertical"
-        android:orientation="vertical" >
-
-        <TextView
-            android:id="@+id/text"
-            android:alpha="0.5"
-            android:fontFamily="sans-serif-condensed-light"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textColor="@color/permissions_settings_item_color"
-            android:textSize="14sp"
-            android:maxLines="2"
-            android:ellipsize="end"/>
-        <TextView
-            android:id="@+id/state"
-            android:alpha="0.5"
-            android:fontFamily="sans-serif-condensed-light"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textColor="@color/permissions_settings_item_color"
-            android:textSize="14sp"
-            android:maxLines="1"
-            android:ellipsize="end"/>
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout-watch/settings_internal.xml b/res/layout-watch/settings_internal.xml
deleted file mode 100644
index e1947aa..0000000
--- a/res/layout-watch/settings_internal.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-        <TextView
-            android:id="@+id/header"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:minHeight="@dimen/settings_header_base_height"
-            android:layout_marginLeft="16dp"
-            android:layout_marginTop="@dimen/settings_header_top_margin"
-            android:textSize="@dimen/setting_short_header_text_size"
-            android:maxLines="2"
-            android:ellipsize="end"
-            android:textColor="#9E9E9E"
-            android:fontFamily="sans-serif-condensed-light"
-        />
-
-        <TextView
-            android:id="@+id/details"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:minHeight="@dimen/settings_header_base_height"
-            android:layout_marginLeft="16dp"
-            android:layout_marginTop="@dimen/settings_header_top_margin"
-            android:maxLines="2"
-            android:ellipsize="end"
-            android:textColor="@color/permissions_settings_item_color"
-            android:textSize="14sp"
-            android:visibility="gone"
-        />
-    </LinearLayout>
-
-    <android.support.wearable.view.WearableListView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/wheel"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        />
-</merge>
diff --git a/res/layout-watch/settings.xml b/res/values-notround-watch/dimens.xml
similarity index 64%
copy from res/layout-watch/settings.xml
copy to res/values-notround-watch/dimens.xml
index 46249d5..8001a8b 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-notround-watch/dimens.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,10 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <!-- Dimens for dialog layouts -->
+    <dimen name="diag_button_size">44dp</dimen>
+    <dimen name="diag_preferred_padding">8dp</dimen>
+    <dimen name="diag_button_padding_horizontal">16dp</dimen>
+    <dimen name="diag_button_padding_bottom">8dp</dimen>
+</resources>
diff --git a/res/values-round-watch/dimens.xml b/res/values-round-watch/dimens.xml
new file mode 100644
index 0000000..b7fe283
--- /dev/null
+++ b/res/values-round-watch/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<resources>
+    <!-- Dimens for dialog layouts -->
+    <dimen name="diag_button_size">48dp</dimen>
+    <dimen name="diag_preferred_padding">@dimen/screen_percentage_15</dimen>
+    <dimen name="diag_button_padding_horizontal">@dimen/screen_percentage_15</dimen>
+    <dimen name="diag_button_padding_bottom">@dimen/screen_percentage_12</dimen>
+</resources>
diff --git a/res/values-round/dimens.xml b/res/values-round/dimens.xml
deleted file mode 100644
index bed41ce..0000000
--- a/res/values-round/dimens.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <!-- Dimensions for the Grant permissions Confirmation Dialog -->
-    <dimen name="conf_diag_button_container_height">96dp</dimen>
-    <dimen name="conf_diag_2button_margin_side">32dp</dimen>
-    <dimen name="conf_diag_2button_margin_top">10dp</dimen>
-    <!-- On round screens, the message can't be too close to the top or the corners will be
-         clipped. -->
-    <dimen name="conf_diag_min_space_above_message">26dp</dimen>
-
-</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw180dp-notround-watch/dimens.xml
similarity index 65%
copy from res/layout-watch/settings.xml
copy to res/values-sw180dp-notround-watch/dimens.xml
index 46249d5..84072a2 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw180dp-notround-watch/dimens.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <!-- Dimens for dialog layouts -->
+    <dimen name="diag_button_size">48dp</dimen>
+</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw192dp-watch/dimens_percent.xml
similarity index 65%
copy from res/layout-watch/settings.xml
copy to res/values-sw192dp-watch/dimens_percent.xml
index 46249d5..b5beca3 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw192dp-watch/dimens_percent.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <dimen name="screen_percentage_05">9.6dp</dimen>
+    <dimen name="screen_percentage_10">19.2dp</dimen>
+    <dimen name="screen_percentage_12">23.04dp</dimen>
+    <dimen name="screen_percentage_15">28.8dp</dimen>
+</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw205dp-watch/dimens_percent.xml
similarity index 65%
rename from res/layout-watch/settings.xml
rename to res/values-sw205dp-watch/dimens_percent.xml
index 46249d5..302d23e 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw205dp-watch/dimens_percent.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <dimen name="screen_percentage_05">10.25dp</dimen>
+    <dimen name="screen_percentage_10">20.5dp</dimen>
+    <dimen name="screen_percentage_12">24.6dp</dimen>
+    <dimen name="screen_percentage_15">30.75dp</dimen>
+</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw210dp-round-watch/dimens.xml
similarity index 65%
copy from res/layout-watch/settings.xml
copy to res/values-sw210dp-round-watch/dimens.xml
index 46249d5..d896138 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw210dp-round-watch/dimens.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <!-- Dimens for dialog layouts -->
+    <dimen name="diag_button_size">54dp</dimen>
+</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw225dp-watch/dimens_percent.xml
similarity index 65%
copy from res/layout-watch/settings.xml
copy to res/values-sw225dp-watch/dimens_percent.xml
index 46249d5..937c5d0 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw225dp-watch/dimens_percent.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <dimen name="screen_percentage_05">11.25dp</dimen>
+    <dimen name="screen_percentage_10">22.5dp</dimen>
+    <dimen name="screen_percentage_12">27dp</dimen>
+    <dimen name="screen_percentage_15">33.75dp</dimen>
+</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw228dp-watch/dimens_percent.xml
similarity index 65%
copy from res/layout-watch/settings.xml
copy to res/values-sw228dp-watch/dimens_percent.xml
index 46249d5..b2ad334 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw228dp-watch/dimens_percent.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <dimen name="screen_percentage_05">11.4dp</dimen>
+    <dimen name="screen_percentage_10">22.8dp</dimen>
+    <dimen name="screen_percentage_12">27.36dp</dimen>
+    <dimen name="screen_percentage_15">34.2dp</dimen>
+</resources>
diff --git a/res/layout-watch/settings.xml b/res/values-sw240dp-watch/dimens_percent.xml
similarity index 65%
copy from res/layout-watch/settings.xml
copy to res/values-sw240dp-watch/dimens_percent.xml
index 46249d5..ebc8c75 100644
--- a/res/layout-watch/settings.xml
+++ b/res/values-sw240dp-watch/dimens_percent.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<resources>
+    <dimen name="screen_percentage_05">12dp</dimen>
+    <dimen name="screen_percentage_10">24dp</dimen>
+    <dimen name="screen_percentage_12">28.8dp</dimen>
+    <dimen name="screen_percentage_15">36dp</dimen>
+</resources>
diff --git a/res/values-watch/colors.xml b/res/values-watch/colors.xml
index b81d6e3..81d0459 100644
--- a/res/values-watch/colors.xml
+++ b/res/values-watch/colors.xml
@@ -15,22 +15,6 @@
 -->
 
 <resources>
-    <color name="grant_permissions_app_color">@color/grant_permissions_white_text_alpha_100</color>
-    <color name="grant_permissions_progress_color">@color/grant_permissions_white_text_alpha_100</color>
-    <color name="grant_permissions_title_color">@color/grant_permissions_white_text_alpha_70</color>
-
-    <color name="grant_permissions_white_text_alpha_100">@color/off_white</color>
-    <color name="grant_permissions_white_text_alpha_70">#b2eeeeee</color>
-
-    <color name="permissions_settings_item_color">#FFFFFFFF</color>
-
-    <color name="off_white">#ffeeeeee</color>
-
-    <color name="primary_text_light">#424242</color>
-
     <!-- Copied from wearable support -->
     <color name="circular_button_disabled">#757575</color>
-
-    <!-- Copied from wearable Clockwork Settings -->
-    <color name="cw_dark_gray">#424242</color>
 </resources>
diff --git a/res/values-watch/dimens.xml b/res/values-watch/dimens.xml
deleted file mode 100644
index 96f3214..0000000
--- a/res/values-watch/dimens.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <dimen name="grant_permissions_app_icon_size">20dp</dimen>
-    <dimen name="grant_permissions_app_icon_margin_top">6dp</dimen>
-
-    <dimen name="grant_permissions_app_breadcrumb_margin_top">6dp</dimen>
-    <dimen name="grant_permissions_title_margin_top">6dp</dimen>
-    <dimen name="grant_permissions_message_side_padding">32dp</dimen>
-
-    <dimen name="action_dialog_z">16dp</dimen>
-
-    <!-- Dimensions for the Grant permissions Confirmation Dialog -->
-    <dimen name="conf_diag_floating_height">16dp</dimen>
-    <dimen name="conf_diag_button_container_top_margin">6dp</dimen>
-    <dimen name="conf_diag_button_container_height">72dp</dimen>
-    <dimen name="conf_diag_2button_margin_side">16dp</dimen>
-    <dimen name="conf_diag_2button_margin_top">9dp</dimen>
-    <dimen name="conf_diag_3button_padding_side">32dp</dimen>
-    <dimen name="conf_diag_3button_padding_bottom">22dp</dimen>
-    <dimen name="conf_diag_content_padding_top">6dp</dimen>
-    <!-- On square screens, the message can be at the top of the screen. -->
-    <dimen name="conf_diag_min_space_above_message">0dp</dimen>
-
-
-    <!-- START: Ported values -->
-    <item name="default_settings_circle_radius_percent" format="fraction" type="dimen">40%</item>
-    <item name="selected_settings_circle_radius_percent" format="fraction" type="dimen">50%</item>
-    <dimen name="round_content_padding_left">40dp</dimen>
-    <dimen name="round_content_padding_right">24dp</dimen>
-    <dimen name="content_padding_left">12dp</dimen>
-    <dimen name="settings_wearable_list_view_vertical_padding_round">14dp</dimen>
-    <dimen name="setting_header_extra_line_height">16dp</dimen>
-    <dimen name="setting_long_header_text_size">20dp</dimen>
-    <dimen name="settings_header_base_height">50dp</dimen>
-    <dimen name="settings_header_top_margin">14dp</dimen>
-    <dimen name="settings_header_top_margin_circular">18dp</dimen>
-    <dimen name="settings_header_top_margin_multiline">6dp</dimen>
-    <dimen name="settings_header_top_margin_circular_multiline">16dp</dimen>
-    <dimen name="setting_short_header_text_size">24dp</dimen>
-    <dimen name="settings_text_margin_left">10dp</dimen>
-    <!-- END: Ported values -->
-</resources>
diff --git a/res/values-watch/strings.xml b/res/values-watch/strings.xml
index 82fe4ae..f940eae 100644
--- a/res/values-watch/strings.xml
+++ b/res/values-watch/strings.xml
@@ -30,8 +30,9 @@
     <!-- Summary of a permission switch when it's enforced by policy [CHAR LIMIT=17] -->
     <string name="permission_summary_enforced_by_policy">Can\'t be changed</string>
 
-    <!-- Generic text to indicate that a setting is enabled. Should be in all caps. [CHAR LIMIT=40] -->
-    <string name="generic_enabled">ENABLED</string>
-    <!-- Generic text to indicate that a setting is disabled. Should be in all caps. [CHAR LIMIT=40] -->
-    <string name="generic_disabled">DISABLED</string>
+    <!-- Generic text to indicate a yes. [CHAR LIMIT=10] -->
+    <string name="generic_yes">Yes</string>
+
+    <!-- Generic text to indicate Cancel. [CHAR LIMIT=10] -->
+    <string name="generic_cancel">Cancel</string>
 </resources>
diff --git a/res/values-watch/styles.xml b/res/values-watch/styles.xml
index 01ab90e..18fce93 100644
--- a/res/values-watch/styles.xml
+++ b/res/values-watch/styles.xml
@@ -17,33 +17,6 @@
 <resources>
     <style name="Theme.DialogWhenLarge" parent="@android:style/Theme.DeviceDefault.NoActionBar"/>
 
-    <!-- START: Ported values -->
-    <style name="TextAppearance.Wearable.Small" parent="android:TextAppearance.Medium">
-        <item name="android:textSize">16sp</item>
-        <item name="android:textColor">@color/primary_text_light</item>
-    </style>
-
-    <style name="TextView.Small" parent="@android:style/Widget.Holo.Light">
-        <item name="android:fontFamily">sans-serif-condensed</item>
-        <item name="android:textAppearance">@style/TextAppearance.Wearable.Small</item>
-    </style>
-
-    <style name="TextView.Small.Light">
-        <item name="android:fontFamily">sans-serif-condensed-light</item>
-        <item name="android:textAppearance">@style/TextAppearance.Wearable.Small</item>
-    </style>
-
-    <style name="TextAppearance.Settings.Label" parent="android:TextAppearance.Medium">
-        <item name="android:textSize">14sp</item>
-        <item name="android:textColor">#FFFFFFFF</item>
-    </style>
-
-    <style name="TextAppearance.Settings.Label.Large">
-        <item name="android:textSize">16sp</item>
-    </style>
-
-    <style name="TextView.Settings.Label" parent="TextView.Small.Light">
-        <item name="android:textAppearance">@style/TextAppearance.Settings.Label</item>
-    </style>
-    <!-- END: Ported values -->
+    <style name="BreadcrumbText" parent="@android:style/TextAppearance.Material.Body2"/>
+    <style name="TitleText" parent="@android:style/TextAppearance.Material.Subhead"/>
 </resources>
diff --git a/res/values-watch/themes.xml b/res/values-watch/themes.xml
index dea4290..a8186dd 100644
--- a/res/values-watch/themes.xml
+++ b/res/values-watch/themes.xml
@@ -16,49 +16,9 @@
   -->
 
 <resources>
-    <style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar">
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Permissions</item>
-        <item name="android:windowBackground">@color/cw_dark_gray</item>
-        <item name="android:colorBackground">@color/cw_dark_gray</item>
-    </style>
+    <style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar" />
 
-    <style name="GrantPermissions" parent="Settings">
-        <item name="android:windowIsFloating">true</item>
-        <item name="android:windowElevation">@dimen/action_dialog_z</item>
-        <item name="android:windowSwipeToDismiss">false</item>
-    </style>
-
-    <style name="GrantPermissions.BreadcrumbText">
-        <item name="android:fontFamily">sans-serif-condensed</item>
-        <item name="android:textSize">16sp</item>
-        <item name="android:textColor">@color/grant_permissions_progress_color</item>
-    </style>
-
-    <style name="GrantPermissions.TitleText">
-        <item name="android:fontFamily">sans-serif-condensed-light</item>
-        <item name="android:textSize">18sp</item>
-        <item name="android:textColor">@color/grant_permissions_title_color</item>
-        <item name="android:lineSpacingMultiplier">1.221</item>
-    </style>
-
-    <!-- Copied from WearableSupport lib -->
-    <style name="TextAppearance.WearDiag" parent="android:TextAppearance.Medium">
-        <item name="android:textColor">#FFFFFF</item>
-        <item name="android:textSize">16sp</item>
-    </style>
-    <style name="TextAppearance.WearDiag.Button">
-        <item name="android:textSize">16sp</item>
-    </style>
-    <style name="Widget.WearDiag.Button" parent="@android:style/Widget.DeviceDefault.Button">
-        <item name="android:fontFamily">sans-serif-condensed-light</item>
-        <item name="android:gravity">center_vertical|left</item>
-        <item name="android:textAppearance">@style/TextAppearance.WearDiag.Button</item>
-        <item name="android:background">@android:color/transparent</item>
-        <item name="android:minLines">1</item>
-        <item name="android:maxLines">3</item>
-        <item name="android:ellipsize">marquee</item>
-        <item name="android:layout_height">60dp</item>
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:drawablePadding">12dp</item>
+    <style name="GrantPermissions" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+        <item name="android:windowBackground">@android:color/transparent</item>
     </style>
 </resources>
diff --git a/res/layout-watch/settings.xml b/res/xml-watch/watch_permissions.xml
similarity index 63%
copy from res/layout-watch/settings.xml
copy to res/xml-watch/watch_permissions.xml
index 46249d5..8ec8d19 100644
--- a/res/layout-watch/settings.xml
+++ b/res/xml-watch/watch_permissions.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,10 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <include layout="@layout/settings_internal" />
-</FrameLayout>
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/app_permissions"
+        android:orderingFromXml="true">
+    <Preference
+            android:key="no_permissions"
+            android:title="@string/no_permissions" />
+</PreferenceScreen>
diff --git a/src/android/support/wearable/view/AcceptDenyDialog.java b/src/android/support/wearable/view/AcceptDenyDialog.java
new file mode 100644
index 0000000..8ccccd5
--- /dev/null
+++ b/src/android/support/wearable/view/AcceptDenyDialog.java
@@ -0,0 +1,190 @@
+/*
+ * 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 android.support.wearable.view;
+
+import android.annotation.TargetApi;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.annotation.StyleRes;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.Space;
+import android.widget.TextView;
+
+import com.android.packageinstaller.R;
+
+/**
+ * A dialog to display a title, a message, and/or an icon with a positive and a negative button.
+ *
+ * <p>The buttons are hidden away unless there is a listener attached to the button. Since there's
+ * no click listener attached by default, the buttons are hidden be default.
+ */
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+public class AcceptDenyDialog extends Dialog implements View.OnClickListener {
+    /** Icon at the top of the dialog. */
+    protected ImageView mIcon;
+    /** Title at the top of the dialog. */
+    protected TextView mTitle;
+    /** Message content of the dialog. */
+    protected TextView mMessage;
+    /** Panel containing the buttons. */
+    protected View mButtonPanel;
+    /** Positive button in the button panel. */
+    protected ImageButton mPositiveButton;
+    /** Negative button in the button panel. */
+    protected ImageButton mNegativeButton;
+    /**
+     * Click listener for the positive button. Positive button should hide if this is <code>null
+     * </code>.
+     */
+    protected DialogInterface.OnClickListener mPositiveButtonListener;
+    /**
+     * Click listener for the negative button. Negative button should hide if this is <code>null
+     * </code>.
+     */
+    protected DialogInterface.OnClickListener mNegativeButtonListener;
+    /** Spacer between the positive and negative button. Hidden if one button is hidden. */
+    protected View mSpacer;
+
+    public AcceptDenyDialog(Context context) {
+        this(context, 0 /* use default context theme */);
+    }
+
+    public AcceptDenyDialog(Context context, @StyleRes int themeResId) {
+        super(context, themeResId);
+
+        setContentView(R.layout.accept_deny_dialog);
+
+        mTitle = (TextView) findViewById(android.R.id.title);
+        mMessage = (TextView) findViewById(android.R.id.message);
+        mIcon = (ImageView) findViewById(android.R.id.icon);
+        mPositiveButton = (ImageButton) findViewById(android.R.id.button1);
+        mPositiveButton.setOnClickListener(this);
+        mNegativeButton = (ImageButton) findViewById(android.R.id.button2);
+        mNegativeButton.setOnClickListener(this);
+        mSpacer = (Space) findViewById(R.id.spacer);
+        mButtonPanel = findViewById(R.id.buttonPanel);
+    }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case android.R.id.button1:
+                if (mPositiveButtonListener != null) {
+                    mPositiveButtonListener.onClick(this, DialogInterface.BUTTON_POSITIVE);
+                }
+                dismiss();
+                break;
+            case android.R.id.button2:
+                if (mNegativeButtonListener != null) {
+                    mNegativeButtonListener.onClick(this, DialogInterface.BUTTON_NEGATIVE);
+                }
+                dismiss();
+                break;
+        }
+    }
+
+    public ImageButton getButton(int whichButton) {
+        switch (whichButton) {
+            case DialogInterface.BUTTON_POSITIVE:
+                return mPositiveButton;
+            case DialogInterface.BUTTON_NEGATIVE:
+                return mNegativeButton;
+            default:
+                return null;
+        }
+    }
+
+    public void setIcon(Drawable icon) {
+        mIcon.setVisibility(icon == null ? View.GONE : View.VISIBLE);
+        mIcon.setImageDrawable(icon);
+    }
+
+    /**
+     * @param resId the resourceId of the drawable to use as the icon or 0 if you don't want an icon.
+     */
+    public void setIcon(int resId) {
+        mIcon.setVisibility(resId == 0 ? View.GONE : View.VISIBLE);
+        mIcon.setImageResource(resId);
+    }
+
+    /** @param message the content message text of the dialog. */
+    public void setMessage(CharSequence message) {
+        mMessage.setText(message);
+        mMessage.setVisibility(message == null ? View.GONE : View.VISIBLE);
+    }
+
+    /** @param title the title text of the dialog. */
+    @Override
+    public void setTitle(CharSequence title) {
+        mTitle.setText(title);
+    }
+
+    /**
+     * Sets a click listener for a button.
+     *
+     * <p>Will hide button bar if all buttons are hidden (i.e. their click listeners are <code>null
+     * </code>).
+     *
+     * @param whichButton {@link DialogInterface.BUTTON_POSITIVE} or {@link
+     *     DialogInterface.BUTTON_NEGATIVE}
+     * @param listener the listener to set for the button. Hide button if <code>null</code>.
+     */
+    public void setButton(int whichButton, DialogInterface.OnClickListener listener) {
+        switch (whichButton) {
+            case DialogInterface.BUTTON_POSITIVE:
+                mPositiveButtonListener = listener;
+                break;
+            case DialogInterface.BUTTON_NEGATIVE:
+                mNegativeButtonListener = listener;
+                break;
+            default:
+                return;
+        }
+
+        mSpacer.setVisibility(mPositiveButtonListener == null || mNegativeButtonListener == null
+                ? View.GONE : View.INVISIBLE);
+        mPositiveButton.setVisibility(
+                mPositiveButtonListener == null ? View.GONE : View.VISIBLE);
+        mNegativeButton.setVisibility(
+                mNegativeButtonListener == null ? View.GONE : View.VISIBLE);
+        mButtonPanel.setVisibility(
+                mPositiveButtonListener == null && mNegativeButtonListener == null
+                ? View.GONE : View.VISIBLE);
+    }
+
+    /**
+     * Convenience method for <code>setButton(DialogInterface.BUTTON_POSITIVE, listener)</code>.
+     *
+     * @param listener the listener for the positive button.
+     */
+    public void setPositiveButton(DialogInterface.OnClickListener listener) {
+        setButton(DialogInterface.BUTTON_POSITIVE, listener);
+    }
+
+    /**
+     * Convenience method for <code>setButton(DialogInterface.BUTTON_NEGATIVE, listener)</code>.
+     *
+     * @param listener the listener for the positive button.
+     */
+    public void setNegativeButton(DialogInterface.OnClickListener listener) {
+        setButton(DialogInterface.BUTTON_NEGATIVE, listener);
+    }
+}
diff --git a/src/android/support/wearable/view/WearableDialogHelper.java b/src/android/support/wearable/view/WearableDialogHelper.java
new file mode 100644
index 0000000..0bdc1cc
--- /dev/null
+++ b/src/android/support/wearable/view/WearableDialogHelper.java
@@ -0,0 +1,217 @@
+/*
+ * 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 android.support.wearable.view;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+import android.widget.Button;
+
+/**
+ * Helper to add icons to AlertDialog buttons.AlertDialog buttons.
+ */
+public class WearableDialogHelper {
+    private static final String TAG = "WearableDialogHelper";
+
+    private int mPositiveIconId;
+    private Drawable mPositiveIcon;
+
+    private int mNeutralIconId;
+    private Drawable mNeutralIcon;
+
+    private int mNegativeIconId;
+    private Drawable mNegativeIcon;
+
+    @VisibleForTesting /* package */ Resources mResources;
+    @VisibleForTesting /* package */ Resources.Theme mTheme;
+
+    /**
+     * Convenience constructor, equivalent to {@code new WearableDialogHelper(context.getResources(),
+     * context.getTheme())}.
+     */
+    public WearableDialogHelper(@NonNull Context context) {
+        this(context.getResources(), context.getTheme());
+    }
+
+    /**
+     * @param resources the Resources used to obtain Drawables from resource IDs.
+     * @param theme the Theme used to properly obtain Drawables from resource IDs.
+     */
+    public WearableDialogHelper(@NonNull Resources resources, @NonNull Resources.Theme theme) {
+        mResources = resources;
+        mTheme = theme;
+    }
+
+    @Nullable
+    public Drawable getPositiveIcon() {
+        return resolveDrawable(mPositiveIcon, mPositiveIconId);
+    }
+
+    @Nullable
+    public Drawable getNegativeIcon() {
+        return resolveDrawable(mNegativeIcon, mNegativeIconId);
+    }
+
+    @Nullable
+    public Drawable getNeutralIcon() {
+        return resolveDrawable(mNeutralIcon, mNeutralIconId);
+    }
+
+    @NonNull
+    public WearableDialogHelper setPositiveIcon(@DrawableRes int resId) {
+        mPositiveIconId = resId;
+        mPositiveIcon = null;
+        return this;
+    }
+
+    @NonNull
+    public WearableDialogHelper setPositiveIcon(@Nullable Drawable icon) {
+        mPositiveIcon = icon;
+        mPositiveIconId = 0;
+        return this;
+    }
+
+    @NonNull
+    public WearableDialogHelper setNegativeIcon(@DrawableRes int resId) {
+        mNegativeIconId = resId;
+        mNegativeIcon = null;
+        return this;
+    }
+
+    @NonNull
+    public WearableDialogHelper setNegativeIcon(@Nullable Drawable icon) {
+        mNegativeIcon = icon;
+        mNegativeIconId = 0;
+        return this;
+    }
+
+    @NonNull
+    public WearableDialogHelper setNeutralIcon(@DrawableRes int resId) {
+        mNeutralIconId = resId;
+        mNeutralIcon = null;
+        return this;
+    }
+
+    @NonNull
+    public WearableDialogHelper setNeutralIcon(@Nullable Drawable icon) {
+        mNeutralIcon = icon;
+        mNeutralIconId = 0;
+        return this;
+    }
+
+    /**
+     * Applies the button icons setup in the helper to the buttons in the dialog.
+     *
+     * <p>Note that this should be called after {@code AlertDialog.create()}, NOT {@code
+     * AlertDialog.Builder.create()}. Calling {@code AlertDialog.Builder.show()} would also accomplish
+     * the same thing.
+     *
+     * @param dialog the AlertDialog to style with the helper.
+     */
+    public void apply(@NonNull AlertDialog dialog) {
+        applyButton(dialog.getButton(DialogInterface.BUTTON_POSITIVE), getPositiveIcon());
+        applyButton(dialog.getButton(DialogInterface.BUTTON_NEGATIVE), getNegativeIcon());
+        applyButton(dialog.getButton(DialogInterface.BUTTON_NEUTRAL), getNeutralIcon());
+    }
+
+    /** Applies the specified drawable to the button. */
+    @VisibleForTesting
+    /* package */ void applyButton(@Nullable Button button, @Nullable Drawable drawable) {
+        if (button != null) {
+            button.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null);
+            button.setAllCaps(false);
+        } else if (drawable != null) {
+            Log.w(TAG, "non-null drawable used with missing button, did you call AlertDialog.create()?");
+        }
+    }
+
+    /** Obtain a drawable between a drawable and a resource ID. */
+    @VisibleForTesting
+    /* package */ Drawable resolveDrawable(@Nullable Drawable drawable, @DrawableRes int resId) {
+        return drawable == null && resId != 0 ? mResources.getDrawable(resId, mTheme) : drawable;
+    }
+
+    /** Convenience builder to generate an AlertDialog with icons in buttons. */
+    public static class DialogBuilder extends AlertDialog.Builder {
+        private final WearableDialogHelper mHelper;
+
+        public DialogBuilder(Context context) {
+            super(context);
+            mHelper = new WearableDialogHelper(context.getResources(), context.getTheme());
+        }
+
+        public DialogBuilder(Context context, int themeResId) {
+            super(context, themeResId);
+            mHelper = new WearableDialogHelper(context.getResources(), context.getTheme());
+        }
+
+        public WearableDialogHelper getHelper() {
+            return mHelper;
+        }
+
+        public DialogBuilder setPositiveIcon(@DrawableRes int iconId) {
+            mHelper.setPositiveIcon(iconId);
+            return this;
+        }
+
+        public DialogBuilder setPositiveIcon(@Nullable Drawable icon) {
+            mHelper.setPositiveIcon(icon);
+            return this;
+        }
+
+        public DialogBuilder setNegativeIcon(@DrawableRes int iconId) {
+            mHelper.setNegativeIcon(iconId);
+            return this;
+        }
+
+        public DialogBuilder setNegativeIcon(@Nullable Drawable icon) {
+            mHelper.setNegativeIcon(icon);
+            return this;
+        }
+
+        public DialogBuilder setNeutralIcon(@DrawableRes int iconId) {
+            mHelper.setNeutralIcon(iconId);
+            return this;
+        }
+
+        public DialogBuilder setNeutralIcon(@Nullable Drawable icon) {
+            mHelper.setNeutralIcon(icon);
+            return this;
+        }
+
+        @Override
+        public AlertDialog create() {
+            final AlertDialog dialog = super.create();
+            dialog.create();
+            mHelper.apply(dialog);
+            return dialog;
+        }
+
+        @Override
+        public AlertDialog show() {
+            final AlertDialog dialog = this.create();
+            dialog.show();
+            return dialog;
+        }
+    }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
index 21042f0..b50b5d8 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
@@ -1,30 +1,51 @@
 package com.android.packageinstaller.permission.ui;
 
+import android.app.AlertDialog;
+import android.app.Dialog;
 import android.content.Context;
-import android.graphics.PixelFormat;
+import android.content.DialogInterface;
+import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
+import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
 import android.os.Bundle;
+import android.support.wearable.view.AcceptDenyDialog;
+import android.support.wearable.view.WearableDialogHelper;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.style.ImageSpan;
+import android.text.style.TextAppearanceSpan;
+import android.text.TextUtils;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.WindowManager;
+import android.widget.Space;
 
 import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.ui.wear.ConfirmationViewHandler;
 
 /**
  * Watch-specific view handler for the grant permissions activity.
  */
-final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler
-        implements GrantPermissionsViewHandler {
+final class GrantPermissionsWatchViewHandler implements GrantPermissionsViewHandler,
+        DialogInterface.OnClickListener {
     private static final String TAG = "GrantPermsWatchViewH";
 
-    private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME";
+    private static final String WATCH_HANDLER_BUNDLE = "watch_handler_bundle";
+    private static final String DIALOG_BUNDLE = "dialog_bundle";
+    private static final String GROUP_NAME = "group_name";
+    private static final String SHOW_DO_NOT_ASK = "show_do_not_ask";
+    private static final String ICON = "icon";
+    private static final String MESSAGE = "message";
+    private static final String CURRENT_PAGE_TEXT = "current_page_text";
 
     private final Context mContext;
-    
+
     private ResultListener mResultListener;
-    
+
+    private Dialog mDialog;
+
     private String mGroupName;
     private boolean mShowDoNotAsk;
 
@@ -33,7 +54,6 @@
     private Icon mIcon;
 
     GrantPermissionsWatchViewHandler(Context context) {
-        super(context);
         mContext = context;
     }
 
@@ -45,13 +65,8 @@
 
     @Override
     public View createView() {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "createView()");
-        }
-
-        mShowDoNotAsk = false;
-
-        return super.createView();
+        showDialog(null);
+        return new Space(mContext);
     }
 
     @Override
@@ -79,96 +94,121 @@
         mShowDoNotAsk = showDoNotAsk;
         mMessage = message;
         mIcon = icon;
-        mCurrentPageText = (groupCount > 1 ?
-                mContext.getString(R.string.current_permission_template, groupIndex + 1, groupCount)
-                : null);
+        mCurrentPageText = groupCount > 1
+                ? mContext.getString(R.string.current_permission_template,
+                        groupIndex + 1, groupCount)
+                : null;
+        showDialog(null);
+    }
 
-        invalidate();
+    private void showDialog(Bundle savedInstanceState) {
+        TypedArray a = mContext.obtainStyledAttributes(
+                new int[] { android.R.attr.textColorPrimary });
+        int color = a.getColor(0, mContext.getColor(android.R.color.white));
+        a.recycle();
+        Drawable drawable = mIcon == null ? null : mIcon.setTint(color).loadDrawable(mContext);
+
+        SpannableStringBuilder ssb = new SpannableStringBuilder();
+        if (!TextUtils.isEmpty(mCurrentPageText)) {
+            ssb.append(mCurrentPageText, new TextAppearanceSpan(mContext, R.style.BreadcrumbText),
+                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+            ssb.append('\n');
+        }
+        if (!TextUtils.isEmpty(mMessage)) {
+            ssb.append(mMessage, new TextAppearanceSpan(mContext, R.style.TitleText),
+                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        if (mShowDoNotAsk) {
+            if (mDialog instanceof AlertDialog) {
+                AlertDialog alertDialog = (AlertDialog) mDialog;
+                alertDialog.setTitle(ssb);
+                alertDialog.setIcon(drawable);
+            } else {
+                if (mDialog != null) {
+                    mDialog.dismiss();
+                    mDialog = null;
+                }
+                mDialog = new WearableDialogHelper.DialogBuilder(mContext)
+                        .setPositiveIcon(R.drawable.confirm_button)
+                        .setNeutralIcon(R.drawable.cancel_button)
+                        .setNegativeIcon(R.drawable.deny_button)
+                        .setTitle(ssb)
+                        .setIcon(drawable)
+                        .setPositiveButton(R.string.grant_dialog_button_allow, this)
+                        .setNeutralButton(R.string.grant_dialog_button_deny, this)
+                        .setNegativeButton(R.string.grant_dialog_button_deny_dont_ask_again, this)
+                        .show();
+                mDialog.setCancelable(false);
+            }
+        } else {
+            if (mDialog instanceof AcceptDenyDialog) {
+                AcceptDenyDialog acceptDenyDialog = (AcceptDenyDialog) mDialog;
+                acceptDenyDialog.setTitle(ssb);
+                acceptDenyDialog.setIcon(drawable);
+            } else {
+                if (mDialog != null) {
+                    mDialog.dismiss();
+                    mDialog = null;
+                }
+
+                AcceptDenyDialog acceptDenyDialog = new AcceptDenyDialog(mContext);
+                acceptDenyDialog.setTitle(ssb);
+                acceptDenyDialog.setIcon(drawable);
+                acceptDenyDialog.setPositiveButton(this);
+                acceptDenyDialog.setNegativeButton(this);
+                acceptDenyDialog.show();
+                mDialog = acceptDenyDialog;
+                mDialog.setCancelable(false);
+            }
+        }
+
+        if (savedInstanceState != null) {
+            mDialog.onRestoreInstanceState(savedInstanceState);
+        }
     }
 
     @Override
     public void saveInstanceState(Bundle outState) {
-        outState.putString(ARG_GROUP_NAME, mGroupName);
+        Bundle b = new Bundle();
+        b.putByte(SHOW_DO_NOT_ASK, (byte) (mShowDoNotAsk ? 1 : 0));
+        b.putString(GROUP_NAME, mGroupName);
+        b.putBundle(DIALOG_BUNDLE, mDialog.onSaveInstanceState());
+
+        outState.putBundle(WATCH_HANDLER_BUNDLE, b);
     }
 
     @Override
     public void loadInstanceState(Bundle savedInstanceState) {
-        mGroupName = savedInstanceState.getString(ARG_GROUP_NAME);
+        Bundle b = savedInstanceState.getBundle(WATCH_HANDLER_BUNDLE);
+        mShowDoNotAsk = b.getByte(SHOW_DO_NOT_ASK) == 1;
+        mGroupName = b.getString(GROUP_NAME);
+        showDialog(b.getBundle(DIALOG_BUNDLE));
     }
 
     @Override
     public void onBackPressed() {
-        if (mResultListener != null) {
-            mResultListener.onPermissionGrantResult(mGroupName, false, false);
+        notifyListener(false, false);
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        switch (which) {
+            case DialogInterface.BUTTON_POSITIVE:
+                notifyListener(true, false);
+                break;
+            case DialogInterface.BUTTON_NEUTRAL:
+                notifyListener(false, false);
+                break;
+            case DialogInterface.BUTTON_NEGATIVE:
+                notifyListener(false,
+                        /* In AlertDialog, the negative button is also a don't ask again button. */
+                        dialog instanceof AlertDialog);
+                break;
         }
     }
 
-    @Override // ConfirmationViewHandler
-    public void onButton1() {
-        onClick(true /* granted */, false /* doNotAskAgain */);
-    }
-
-    @Override // ConfirmationViewHandler
-    public void onButton2() {
-        onClick(false /* granted */, false /* doNotAskAgain */);
-    }
-
-    @Override // ConfirmationViewHandler
-    public void onButton3() {
-        onClick(false /* granted */, true /* doNotAskAgain */);
-    }
-
-    @Override // ConfirmationViewHandler
-    public CharSequence getCurrentPageText() {
-        return mCurrentPageText;
-    }
-
-    @Override // ConfirmationViewHandler
-    public Icon getPermissionIcon() {
-        return mIcon;
-    }
-
-    @Override // ConfirmationViewHandler
-    public CharSequence getMessage() {
-        return mMessage;
-    }
-
-    @Override // ConfirmationViewHandler
-    public int getButtonBarMode() {
-        return mShowDoNotAsk ? MODE_VERTICAL_BUTTONS : MODE_HORIZONTAL_BUTTONS;
-    }
-
-    @Override // ConfirmationViewHandler
-    public CharSequence getVerticalButton1Text() {
-        return mContext.getString(R.string.grant_dialog_button_allow);
-    }
-
-    @Override // ConfirmationViewHandler
-    public CharSequence getVerticalButton2Text() {
-        return mContext.getString(R.string.grant_dialog_button_deny);
-    }
-
-    @Override // ConfirmationViewHandler
-    public CharSequence getVerticalButton3Text() {
-        return mContext.getString(R.string.grant_dialog_button_deny_dont_ask_again);
-    }
-
-    @Override // ConfirmationViewHandler
-    public Drawable getVerticalButton1Icon(){
-        return mContext.getDrawable(R.drawable.confirm_button);
-    }
-
-    @Override // ConfirmationViewHandler
-    public Drawable getVerticalButton2Icon(){
-        return mContext.getDrawable(R.drawable.cancel_button);
-    }
-
-    @Override // ConfirmationViewHandler
-    public Drawable getVerticalButton3Icon(){
-        return mContext.getDrawable(R.drawable.deny_button);
-    }
-
-    private void onClick(boolean granted, boolean doNotAskAgain) {
+    private void notifyListener(boolean granted, boolean doNotAskAgain) {
         if (mResultListener != null) {
             mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain);
         }
diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
index db1c94d..9e82106 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
@@ -23,7 +23,10 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.wearable.view.WearableListView;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.SwitchPreference;
+import android.support.wearable.view.WearableDialogHelper;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -33,8 +36,6 @@
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.permission.model.AppPermissionGroup;
 import com.android.packageinstaller.permission.model.AppPermissions;
-import com.android.packageinstaller.permission.ui.wear.settings.PermissionsSettingsAdapter;
-import com.android.packageinstaller.permission.ui.wear.settings.SettingsAdapter;
 import com.android.packageinstaller.permission.utils.LocationUtils;
 import com.android.packageinstaller.permission.utils.SafetyNetLogger;
 import com.android.packageinstaller.permission.utils.Utils;
@@ -42,16 +43,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
+public final class AppPermissionsFragmentWear extends PreferenceFragment {
+    private static final String LOG_TAG = "AppPermFragWear";
 
-    private static final String LOG_TAG = "ManagePermsFragment";
-
-    private static final int WARNING_CONFIRMATION_REQUEST = 252;
-    private List<AppPermissionGroup> mToggledGroups;
-    private AppPermissions mAppPermissions;
-    private PermissionsSettingsAdapter mAdapter;
-
-    private boolean mHasConfirmedRevoke;
+    private static final String KEY_NO_PERMISSIONS = "no_permissions";
 
     public static AppPermissionsFragmentWear newInstance(String packageName) {
         return setPackageName(new AppPermissionsFragmentWear(), packageName);
@@ -64,6 +59,11 @@
         return fragment;
     }
 
+    private List<AppPermissionGroup> mToggledGroups;
+    private AppPermissions mAppPermissions;
+
+    private boolean mHasConfirmedRevoke;
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -86,172 +86,117 @@
             return;
         }
 
-        mAppPermissions = new AppPermissions(activity, packageInfo, null, true, new Runnable() {
-            @Override
-            public void run() {
-                getActivity().finish();
-            }
-        });
+        mAppPermissions = new AppPermissions(
+                activity, packageInfo, null, true, () -> getActivity().finish());
 
-        mAdapter = new PermissionsSettingsAdapter(getContext());
-
+        addPreferencesFromResource(R.xml.watch_permissions);
         initializePermissionGroupList();
     }
 
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        return inflater.inflate(R.layout.settings, container, false);
-    }
-
-    @Override
     public void onResume() {
         super.onResume();
         mAppPermissions.refresh();
 
         // Also refresh the UI
-        final int count = mAdapter.getItemCount();
-        for (int i = 0; i < count; ++i) {
-            updatePermissionGroupSetting(i);
-        }
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-        if (mAppPermissions != null) {
-            initializeLayout(mAdapter);
-            mHeader.setText(R.string.app_permissions);
-            mDetails.setText(R.string.no_permissions);
-            if (mAdapter.getItemCount() == 0) {
-                mDetails.setVisibility(View.VISIBLE);
-                mWheel.setVisibility(View.GONE);
-            } else {
-                mDetails.setVisibility(View.GONE);
-                mWheel.setVisibility(View.VISIBLE);
+        for (final AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
+            Preference pref = findPreference(group.getName());
+            if (pref instanceof SwitchPreference) {
+                ((SwitchPreference) pref).setChecked(group.areRuntimePermissionsGranted());
             }
         }
     }
 
-    private void initializePermissionGroupList() {
-        final String packageName = mAppPermissions.getPackageInfo().packageName;
-        List<AppPermissionGroup> groups = mAppPermissions.getPermissionGroups();
-        List<SettingsAdapter.Setting<AppPermissionGroup>> nonSystemGroups = new ArrayList<>();
-
-        final int count = groups.size();
-        for (int i = 0; i < count; ++i) {
-            final AppPermissionGroup group = groups.get(i);
-            if (!Utils.shouldShowPermission(group, packageName)) {
-                continue;
-            }
-
-            boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);
-
-            SettingsAdapter.Setting<AppPermissionGroup> setting =
-                    new SettingsAdapter.Setting<AppPermissionGroup>(
-                            group.getLabel(),
-                            getPermissionGroupIcon(group),
-                            i);
-            setting.data = group;
-
-            // The UI shows System settings first, then non-system settings
-            if (isPlatform) {
-                mAdapter.addSetting(setting);
-            } else {
-                nonSystemGroups.add(setting);
-            }
-        }
-
-        // Now add the non-system settings to the end of the list
-        final int nonSystemCount = nonSystemGroups.size();
-        for (int i = 0; i < nonSystemCount; ++i) {
-            final SettingsAdapter.Setting<AppPermissionGroup> setting = nonSystemGroups.get(i);
-            mAdapter.addSetting(setting);
-        }
-    }
-
     @Override
     public void onPause() {
         super.onPause();
         logAndClearToggledGroups();
     }
 
-    @Override
-    public void onClick(WearableListView.ViewHolder view) {
-        final int index = view.getPosition();
-        SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
-        final AppPermissionGroup group = setting.data;
+    private void initializePermissionGroupList() {
+        final String packageName = mAppPermissions.getPackageInfo().packageName;
+        List<AppPermissionGroup> groups = mAppPermissions.getPermissionGroups();
+        List<SwitchPreference> nonSystemGroups = new ArrayList<>();
 
-        if (group == null) {
-            Log.e(LOG_TAG, "Error: AppPermissionGroup is null");
-            return;
+        if (!groups.isEmpty()) {
+            getPreferenceScreen().removePreference(findPreference(KEY_NO_PERMISSIONS));
         }
 
-        // The way WearableListView is designed, there is no way to avoid this click handler
-        // Since the policy is fixed, ignore the click as the user is not able to change the state
-        // of this permission group
-        if (group.isPolicyFixed()) {
-            return;
+        for (final AppPermissionGroup group : groups) {
+            if (!Utils.shouldShowPermission(group, packageName)) {
+                continue;
+            }
+
+            boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);
+
+            final SwitchPreference pref = new SwitchPreference(getContext());
+            pref.setKey(group.getName());
+            pref.setTitle(group.getLabel());
+            pref.setChecked(group.areRuntimePermissionsGranted());
+
+            if (group.isPolicyFixed()) {
+                pref.setEnabled(false);
+            } else {
+                pref.setOnPreferenceChangeListener((p, newVal) -> {
+                    if (LocationUtils.isLocationGroupAndProvider(
+                            group.getName(), group.getApp().packageName)) {
+                        LocationUtils.showLocationDialog(
+                                getContext(), mAppPermissions.getAppLabel());
+                        return false;
+                    }
+
+                    if ((Boolean) newVal) {
+                        setPermission(group, pref, true);
+                    } else {
+                        final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
+                        if (grantedByDefault
+                                || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) {
+                            new WearableDialogHelper.DialogBuilder(getContext())
+                                    .setNegativeIcon(R.drawable.confirm_button)
+                                    .setPositiveIcon(R.drawable.cancel_button)
+                                    .setNegativeButton(R.string.grant_dialog_button_deny_anyway,
+                                            (dialog, which) -> {
+                                                setPermission(group, pref, false);
+                                                if (!group.hasGrantedByDefaultPermission()) {
+                                                    mHasConfirmedRevoke = true;
+                                                }
+                                            })
+                                    .setPositiveButton(R.string.cancel, (dialog, which) -> {})
+                                    .setMessage(grantedByDefault ?
+                                            R.string.system_warning : R.string.old_sdk_deny_warning)
+                                    .show();
+                            return false;
+                        } else {
+                            setPermission(group, pref, false);
+                        }
+                    }
+
+                    return true;
+                });
+            }
+
+            // The UI shows System settings first, then non-system settings
+            if (isPlatform) {
+                getPreferenceScreen().addPreference(pref);
+            } else {
+                nonSystemGroups.add(pref);
+            }
         }
 
-        addToggledGroup(group);
-
-        if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) {
-            LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel());
-            return;
+        // Now add the non-system settings to the end of the list
+        for (SwitchPreference nonSystemGroup : nonSystemGroups) {
+            getPreferenceScreen().addPreference(nonSystemGroup);
         }
+    }
 
-        if (!group.areRuntimePermissionsGranted()) {
+    private void setPermission(AppPermissionGroup group, SwitchPreference pref, boolean grant) {
+        if (grant) {
             group.grantRuntimePermissions(false);
         } else {
-            final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
-            if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) {
-                Intent intent = new Intent(getActivity(), WarningConfirmationActivity.class);
-                intent.putExtra(WarningConfirmationActivity.EXTRA_WARNING_MESSAGE,
-                        getString(grantedByDefault ?
-                                R.string.system_warning : R.string.old_sdk_deny_warning));
-                intent.putExtra(WarningConfirmationActivity.EXTRA_INDEX, index);
-                startActivityForResult(intent, WARNING_CONFIRMATION_REQUEST);
-            } else {
-                group.revokeRuntimePermissions(false);
-            }
+            group.revokeRuntimePermissions(false);
         }
-
-        updatePermissionGroupSetting(index);
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == WARNING_CONFIRMATION_REQUEST) {
-            if (resultCode == Activity.RESULT_OK) {
-                int index = data.getIntExtra(WarningConfirmationActivity.EXTRA_INDEX, -1);
-                if (index == -1) {
-                    Log.e(LOG_TAG, "Warning confirmation request came back with no index.");
-                    return;
-                }
-
-                SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
-                final AppPermissionGroup group = setting.data;
-                group.revokeRuntimePermissions(false);
-                if (!group.hasGrantedByDefaultPermission()) {
-                    mHasConfirmedRevoke = true;
-                }
-
-                updatePermissionGroupSetting(index);
-            }
-        } else {
-            super.onActivityResult(requestCode, resultCode, data);
-        }
-    }
-
-    private void updatePermissionGroupSetting(int index) {
-        SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
-        AppPermissionGroup group = setting.data;
-        mAdapter.updateSetting(
-                index,
-                group.getLabel(),
-                getPermissionGroupIcon(group),
-                group);
+        addToggledGroup(group);
+        pref.setChecked(grant);
     }
 
     private void addToggledGroup(AppPermissionGroup group) {
@@ -273,54 +218,4 @@
             mToggledGroups = null;
         }
     }
-
-    private int getPermissionGroupIcon(AppPermissionGroup group) {
-        String groupName = group.getName();
-        boolean isEnabled = group.areRuntimePermissionsGranted();
-        int resId;
-
-        switch (groupName) {
-            case Manifest.permission_group.CALENDAR:
-                resId = isEnabled ? R.drawable.ic_permission_calendar
-                        : R.drawable.ic_permission_calendardisable;
-                break;
-            case Manifest.permission_group.CAMERA:
-                resId = isEnabled ? R.drawable.ic_permission_camera
-                        : R.drawable.ic_permission_cameradisable;
-                break;
-            case Manifest.permission_group.CONTACTS:
-                resId = isEnabled ? R.drawable.ic_permission_contact
-                        : R.drawable.ic_permission_contactdisable;
-                break;
-            case Manifest.permission_group.LOCATION:
-                resId = isEnabled ? R.drawable.ic_permission_location
-                        : R.drawable.ic_permission_locationdisable;
-                break;
-            case Manifest.permission_group.MICROPHONE:
-                resId = isEnabled ? R.drawable.ic_permission_mic
-                        : R.drawable.ic_permission_micdisable;
-                break;
-            case Manifest.permission_group.PHONE:
-                resId = isEnabled ? R.drawable.ic_permission_call
-                        : R.drawable.ic_permission_calldisable;
-                break;
-            case Manifest.permission_group.SENSORS:
-                resId = isEnabled ? R.drawable.ic_permission_sensor
-                        : R.drawable.ic_permission_sensordisable;
-                break;
-            case Manifest.permission_group.SMS:
-                resId = isEnabled ? R.drawable.ic_permission_sms
-                        : R.drawable.ic_permission_smsdisable;
-                break;
-            case Manifest.permission_group.STORAGE:
-                resId = isEnabled ? R.drawable.ic_permission_storage
-                        : R.drawable.ic_permission_storagedisable;
-                break;
-            default:
-                resId = isEnabled ? R.drawable.ic_permission_shield
-                        : R.drawable.ic_permission_shielddisable;
-        }
-
-        return resId;
-    }
 }
diff --git a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
deleted file mode 100644
index b063ad5..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
+++ /dev/null
@@ -1,384 +0,0 @@
-package com.android.packageinstaller.permission.ui.wear;
-
-import android.animation.ObjectAnimator;
-import android.animation.PropertyValuesHolder;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
-import android.view.animation.AnimationUtils;
-import android.view.animation.Interpolator;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-
-public abstract class ConfirmationViewHandler implements
-        Handler.Callback,
-        View.OnClickListener,
-        ViewTreeObserver.OnScrollChangedListener,
-        ViewTreeObserver.OnGlobalLayoutListener {
-    private static final String TAG = "ConfirmationViewHandler";
-    
-    public static final int MODE_HORIZONTAL_BUTTONS = 0;
-    public static final int MODE_VERTICAL_BUTTONS = 1;
-
-    private static final int MSG_SHOW_BUTTON_BAR = 1001;
-    private static final int MSG_HIDE_BUTTON_BAR = 1002;
-    private static final long HIDE_ANIM_DURATION = 500;
-
-    private View mRoot;
-    private TextView mCurrentPageText;
-    private ImageView mIcon;
-    private TextView mMessage;
-    private ScrollView mScrollingContainer;
-    private ViewGroup mContent;
-    private ViewGroup mHorizontalButtonBar;
-    private ViewGroup mVerticalButtonBar;
-    private Button mVerticalButton1;
-    private Button mVerticalButton2;
-    private Button mVerticalButton3;
-    private View mButtonBarContainer;
-
-    private Context mContext;
-
-    private Handler mHideHandler;
-    private Interpolator mInterpolator;
-    private float mButtonBarFloatingHeight;
-    private ObjectAnimator mButtonBarAnimator;
-    private float mCurrentTranslation;
-    private boolean mHiddenBefore;
-
-    // TODO: Move these into a builder
-    /** In the 2 button layout, this is allow button */
-    public abstract void onButton1();
-    /** In the 2 button layout, this is deny button */
-    public abstract void onButton2();
-    public abstract void onButton3();
-    public abstract CharSequence getVerticalButton1Text();
-    public abstract CharSequence getVerticalButton2Text();
-    public abstract CharSequence getVerticalButton3Text();
-    public abstract Drawable getVerticalButton1Icon();
-    public abstract Drawable getVerticalButton2Icon();
-    public abstract Drawable getVerticalButton3Icon();
-    public abstract CharSequence getCurrentPageText();
-    public abstract Icon getPermissionIcon();
-    public abstract CharSequence getMessage();
-
-    public ConfirmationViewHandler(Context context) {
-        mContext = context;
-    }
-
-    public View createView() {
-        mRoot = LayoutInflater.from(mContext).inflate(R.layout.confirmation_dialog, null);
-
-        mMessage = (TextView) mRoot.findViewById(R.id.message);
-        mCurrentPageText = (TextView) mRoot.findViewById(R.id.current_page_text);
-        mIcon = (ImageView) mRoot.findViewById(R.id.icon);
-        mButtonBarContainer = mRoot.findViewById(R.id.button_bar_container);
-        mContent = (ViewGroup) mRoot.findViewById(R.id.content);
-        mScrollingContainer = (ScrollView) mRoot.findViewById(R.id.scrolling_container);
-        mHorizontalButtonBar = (ViewGroup) mRoot.findViewById(R.id.horizontal_button_bar);
-        mVerticalButtonBar = (ViewGroup) mRoot.findViewById(R.id.vertical_button_bar);
-
-        Button horizontalAllow = (Button) mRoot.findViewById(R.id.permission_allow_button);
-        Button horizontalDeny = (Button) mRoot.findViewById(R.id.permission_deny_button);
-        horizontalAllow.setOnClickListener(this);
-        horizontalDeny.setOnClickListener(this);
-
-        mVerticalButton1 = (Button) mRoot.findViewById(R.id.vertical_button1);
-        mVerticalButton2 = (Button) mRoot.findViewById(R.id.vertical_button2);
-        mVerticalButton3 = (Button) mRoot.findViewById(R.id.vertical_button3);
-        mVerticalButton1.setOnClickListener(this);
-        mVerticalButton2.setOnClickListener(this);
-        mVerticalButton3.setOnClickListener(this);
-
-        mInterpolator = AnimationUtils.loadInterpolator(mContext,
-                android.R.interpolator.fast_out_slow_in);
-        mButtonBarFloatingHeight = mContext.getResources().getDimension(
-                R.dimen.conf_diag_floating_height);
-        mHideHandler = new Handler(Looper.getMainLooper(), this);
-
-        mScrollingContainer.getViewTreeObserver().addOnScrollChangedListener(this);
-        mRoot.getViewTreeObserver().addOnGlobalLayoutListener(this);
-
-        return mRoot;
-    }
-
-    /**
-     * Child class should override this for other modes.  Call invalidate() to update the UI to the
-     * new button mode.
-     * @return The current mode the layout should use for the buttons
-     */
-    public int getButtonBarMode() {
-        return MODE_HORIZONTAL_BUTTONS;
-    }
-
-    public void invalidate() {
-        CharSequence currentPageText = getCurrentPageText();
-        if (!TextUtils.isEmpty(currentPageText)) {
-            mCurrentPageText.setText(currentPageText);
-            mCurrentPageText.setVisibility(View.VISIBLE);
-        } else {
-            mCurrentPageText.setVisibility(View.GONE);
-        }
-
-        Icon icon = getPermissionIcon();
-        if (icon != null) {
-            mIcon.setImageIcon(icon);
-            mIcon.setVisibility(View.VISIBLE);
-        } else {
-            mIcon.setVisibility(View.GONE);
-        }
-
-        CharSequence messageString = getMessage();
-        mMessage.setText(messageString);
-        mRoot.announceForAccessibility(messageString);
-
-        switch (getButtonBarMode()) {
-            case MODE_HORIZONTAL_BUTTONS:
-                mHorizontalButtonBar.setVisibility(View.VISIBLE);
-                mVerticalButtonBar.setVisibility(View.GONE);
-                break;
-            case MODE_VERTICAL_BUTTONS:
-                mHorizontalButtonBar.setVisibility(View.GONE);
-                mVerticalButtonBar.setVisibility(View.VISIBLE);
-
-                mVerticalButton1.setText(getVerticalButton1Text());
-                mVerticalButton2.setText(getVerticalButton2Text());
-
-                mVerticalButton1.setCompoundDrawablesWithIntrinsicBounds(
-                        getVerticalButton1Icon(), null, null, null);
-                mVerticalButton2.setCompoundDrawablesWithIntrinsicBounds(
-                        getVerticalButton2Icon(), null, null, null);
-
-                CharSequence verticalButton3Text = getVerticalButton3Text();
-                if (TextUtils.isEmpty(verticalButton3Text)) {
-                    mVerticalButton3.setVisibility(View.GONE);
-                } else {
-                    mVerticalButton3.setText(getVerticalButton3Text());
-                    mVerticalButton3.setCompoundDrawablesWithIntrinsicBounds(
-                            getVerticalButton3Icon(), null, null, null);
-                }
-                break;
-        }
-
-        mScrollingContainer.scrollTo(0, 0);
-
-        mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
-        mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
-    }
-
-    @Override
-    public void onGlobalLayout() {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "onGlobalLayout");
-            Log.d(TAG, "    contentHeight: " + mContent.getHeight());
-        }
-
-        if (mButtonBarAnimator != null) {
-            mButtonBarAnimator.cancel();
-        }
-
-        // In order to fake the buttons peeking at the bottom, need to do set the
-        // padding properly.
-        if (mContent.getPaddingBottom() != mButtonBarContainer.getHeight()) {
-            mContent.setPadding(mContent.getPaddingLeft(), mContent.getPaddingTop(),
-                    mContent.getPaddingRight(), mButtonBarContainer.getHeight());
-            if (Log.isLoggable(TAG, Log.DEBUG)) {
-                Log.d(TAG, "    set mContent.PaddingBottom: " + mButtonBarContainer.getHeight());
-            }
-        }
-
-        mButtonBarContainer.setTranslationY(mButtonBarContainer.getHeight());
-
-        // Give everything a chance to render
-        mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
-        mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
-        mHideHandler.sendEmptyMessageDelayed(MSG_SHOW_BUTTON_BAR, 50);
-    }
-
-    @Override
-    public void onClick(View v) {
-        int id = v.getId();
-        switch (id) {
-            case R.id.permission_allow_button:
-            case R.id.vertical_button1:
-                onButton1();
-                break;
-            case R.id.permission_deny_button:
-            case R.id.vertical_button2:
-                onButton2();
-                break;
-            case R.id.vertical_button3:
-                onButton3();
-                break;
-        }
-    }
-
-    @Override
-    public boolean handleMessage (Message msg) {
-        switch (msg.what) {
-            case MSG_SHOW_BUTTON_BAR:
-                showButtonBar();
-                return true;
-            case MSG_HIDE_BUTTON_BAR:
-                hideButtonBar();
-                return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void onScrollChanged () {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "onScrollChanged");
-        }
-        mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
-        hideButtonBar();
-    }
-
-    private void showButtonBar() {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "showButtonBar");
-        }
-
-        // Setup Button animation.
-        // pop the button bar back to full height, stop all animation
-        if (mButtonBarAnimator != null) {
-            mButtonBarAnimator.cancel();
-        }
-
-        // stop any calls to hide the button bar in the future
-        mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
-        mHiddenBefore = false;
-
-        // Evaluate the max height the button bar can go
-        final int screenHeight = mRoot.getHeight();
-        final int halfScreenHeight = screenHeight / 2;
-        final int buttonBarHeight = mButtonBarContainer.getHeight();
-        final int contentHeight = mContent.getHeight() - buttonBarHeight;
-        final int buttonBarMaxHeight =
-                Math.min(buttonBarHeight, halfScreenHeight);
-
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "    screenHeight: " + screenHeight);
-            Log.d(TAG, "    contentHeight: " + contentHeight);
-            Log.d(TAG, "    buttonBarHeight: " + buttonBarHeight);
-            Log.d(TAG, "    buttonBarMaxHeight: " + buttonBarMaxHeight);
-        }
-
-        mButtonBarContainer.setTranslationZ(mButtonBarFloatingHeight);
-
-        // Only hide the button bar if it is occluding the content or the button bar is bigger than
-        // half the screen
-        if (contentHeight > (screenHeight - buttonBarHeight)
-                || buttonBarHeight > halfScreenHeight) {
-            mHideHandler.sendEmptyMessageDelayed(MSG_HIDE_BUTTON_BAR, 3000);
-        }
-
-        generateButtonBarAnimator(buttonBarHeight,
-                buttonBarHeight - buttonBarMaxHeight, 0, mButtonBarFloatingHeight, 1000);
-    }
-
-    private void hideButtonBar() {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "hideButtonBar");
-        }
-
-        // The desired margin space between the button bar and the bottom of the dialog text
-        final int topMargin = mContext.getResources().getDimensionPixelSize(
-                R.dimen.conf_diag_button_container_top_margin);
-        final int contentHeight = mContent.getHeight() + topMargin;
-        final int screenHeight = mRoot.getHeight();
-        final int buttonBarHeight = mButtonBarContainer.getHeight();
-
-        final int offset = screenHeight + buttonBarHeight
-                - contentHeight + Math.max(mScrollingContainer.getScrollY(), 0);
-        final int translationY = (offset > 0 ?
-                mButtonBarContainer.getHeight() - offset : mButtonBarContainer.getHeight());
-
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "    topMargin: " + topMargin);
-            Log.d(TAG, "    contentHeight: " + contentHeight);
-            Log.d(TAG, "    screenHeight: " + screenHeight);
-            Log.d(TAG, "    offset: " + offset);
-            Log.d(TAG, "    buttonBarHeight: " + buttonBarHeight);
-            Log.d(TAG, "    mContent.getPaddingBottom(): " + mContent.getPaddingBottom());
-            Log.d(TAG, "    mScrollingContainer.getScrollY(): " + mScrollingContainer.getScrollY());
-            Log.d(TAG, "    translationY: " + translationY);
-        }
-
-        if (!mHiddenBefore || mButtonBarAnimator == null) {
-            // Remove previous call to MSG_SHOW_BUTTON_BAR if the user scrolled or something before
-            // the animation got a chance to play
-            mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
-
-            if(mButtonBarAnimator != null) {
-                mButtonBarAnimator.cancel(); // stop current animation if there is one playing
-            }
-
-            // hasn't hidden the bar yet, just hide now to the right height
-            generateButtonBarAnimator(
-                    mButtonBarContainer.getTranslationY(), translationY,
-                    mButtonBarFloatingHeight, 0, HIDE_ANIM_DURATION);
-        } else if (mButtonBarAnimator.isRunning()) {
-            // we are animating the button bar closing, change to animate to the right place
-            if (Math.abs(mCurrentTranslation - translationY) > 1e-2f) {
-                mButtonBarAnimator.cancel(); // stop current animation
-
-                if (Math.abs(mButtonBarContainer.getTranslationY() - translationY) > 1e-2f) {
-                    long duration = Math.max((long) (
-                            (float) HIDE_ANIM_DURATION
-                                    * (translationY - mButtonBarContainer.getTranslationY())
-                                    / mButtonBarContainer.getHeight()), 0);
-
-                    generateButtonBarAnimator(
-                            mButtonBarContainer.getTranslationY(), translationY,
-                            mButtonBarFloatingHeight, 0, duration);
-                } else {
-                    mButtonBarContainer.setTranslationY(translationY);
-                    mButtonBarContainer.setTranslationZ(0);
-                }
-            }
-        } else {
-            // not currently animating, have already hidden, snap to the right offset
-            mButtonBarContainer.setTranslationY(translationY);
-            mButtonBarContainer.setTranslationZ(0);
-        }
-
-        mHiddenBefore = true;
-    }
-
-    private void generateButtonBarAnimator(
-            float startY, float endY, float startZ, float endZ, long duration) {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "generateButtonBarAnimator");
-            Log.d(TAG, "    startY: " + startY);
-            Log.d(TAG, "    endY: " + endY);
-            Log.d(TAG, "    startZ: " + startZ);
-            Log.d(TAG, "    endZ: " + endZ);
-            Log.d(TAG, "    duration: " + duration);
-        }
-
-        mButtonBarAnimator =
-                ObjectAnimator.ofPropertyValuesHolder(
-                        mButtonBarContainer,
-                        PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, startY, endY),
-                        PropertyValuesHolder.ofFloat(View.TRANSLATION_Z, startZ, endZ));
-        mCurrentTranslation = endY;
-        mButtonBarAnimator.setDuration(duration);
-        mButtonBarAnimator.setInterpolator(mInterpolator);
-        mButtonBarAnimator.start();
-    }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java b/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java
deleted file mode 100644
index b673a49..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear;
-
-import android.app.Fragment;
-import android.content.Context;
-import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
-import android.support.wearable.view.WearableListView;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowInsets;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.packageinstaller.permission.ui.wear.settings.ViewUtils;
-import com.android.packageinstaller.R;
-
-/**
- * Base settings Fragment that shows a title at the top of the page.
- */
-public abstract class TitledSettingsFragment extends Fragment implements
-        View.OnLayoutChangeListener, WearableListView.ClickListener {
-
-    private static final int ITEM_CHANGE_DURATION_MS = 120;
-
-    private static final String TAG = "TitledSettingsFragment";
-    private int mInitialHeaderHeight;
-
-    protected TextView mHeader;
-    protected TextView mDetails;
-    protected WearableListView mWheel;
-
-    private int mCharLimitShortTitle;
-    private int mCharLimitLine;
-    private int mChinOffset;
-
-    private TextWatcher mHeaderTextWatcher = 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) {}
-
-        @Override
-        public void afterTextChanged(Editable editable) {
-            adjustHeaderSize();
-        }
-    };
-
-    private void adjustHeaderTranslation() {
-        int translation = 0;
-        if (mWheel.getChildCount() > 0) {
-            translation = mWheel.getCentralViewTop() - mWheel.getChildAt(0).getTop();
-        }
-
-        float newTranslation = Math.min(Math.max(-mInitialHeaderHeight, -translation), 0);
-
-        int position = mWheel.getChildAdapterPosition(mWheel.getChildAt(0));
-        if (position == 0 || newTranslation < 0) {
-            mHeader.setTranslationY(newTranslation);
-        }
-    }
-
-    @Override
-    public void onTopEmptyRegionClick() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mCharLimitShortTitle = getResources().getInteger(R.integer.short_title_length);
-        mCharLimitLine = getResources().getInteger(R.integer.char_limit_per_line);
-    }
-
-    @Override
-    public void onLayoutChange(View view, int left, int top, int right, int bottom, int oldLeft,
-                               int oldTop, int oldRight, int oldBottom) {
-        if (view == mHeader) {
-            mInitialHeaderHeight = bottom - top;
-            if (ViewUtils.getIsCircular(getContext())) {
-                // We are adding more margin on circular screens, so we need to account for it and use
-                // it for hiding the header.
-                mInitialHeaderHeight +=
-                        ((ViewGroup.MarginLayoutParams) view.getLayoutParams()).topMargin;
-            }
-        } else if (view == mWheel) {
-            adjustHeaderTranslation();
-        }
-    }
-
-    protected void initializeLayout(RecyclerView.Adapter adapter) {
-        View v = getView();
-        mWheel = (WearableListView) v.findViewById(R.id.wheel);
-
-        mHeader = (TextView) v.findViewById(R.id.header);
-        mHeader.addOnLayoutChangeListener(this);
-        mHeader.addTextChangedListener(mHeaderTextWatcher);
-
-        mDetails = (TextView) v.findViewById(R.id.details);
-        mDetails.addOnLayoutChangeListener(this);
-
-        mWheel.setAdapter(adapter);
-        mWheel.addOnScrollListener(new RecyclerView.OnScrollListener() {
-            @Override
-            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-            }
-
-            @Override
-            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-                adjustHeaderTranslation();
-            }
-        });
-        mWheel.setClickListener(this);
-        mWheel.addOnLayoutChangeListener(this);
-
-        // Decrease item change animation duration to approximately half of the default duration.
-        RecyclerView.ItemAnimator itemAnimator = mWheel.getItemAnimator();
-        itemAnimator.setChangeDuration(ITEM_CHANGE_DURATION_MS);
-
-        adjustHeaderSize();
-
-        positionOnCircular(getContext(), mHeader, mDetails, mWheel);
-    }
-
-    public void positionOnCircular(Context context, View header, View details,
-            final ViewGroup wheel) {
-        if (ViewUtils.getIsCircular(context)) {
-            LinearLayout.LayoutParams params =
-                    (LinearLayout.LayoutParams) header.getLayoutParams();
-            params.topMargin = (int) context.getResources().getDimension(
-                    R.dimen.settings_header_top_margin_circular);
-            // Note that the margins are made symmetrical here. Since they're symmetrical we choose
-            // the smaller value to maximize usable width.
-            final int margin = (int) Math.min(context.getResources().getDimension(
-                    R.dimen.round_content_padding_left), context.getResources().getDimension(
-                    R.dimen.round_content_padding_right));
-            params.leftMargin = margin;
-            params.rightMargin = margin;
-            params.gravity = Gravity.CENTER_HORIZONTAL;
-            header.setLayoutParams(params);
-            details.setLayoutParams(params);
-
-            if (header instanceof TextView) {
-                ((TextView) header).setGravity(Gravity.CENTER);
-            }
-            if (details instanceof TextView) {
-                ((TextView) details).setGravity(Gravity.CENTER);
-            }
-
-            final int leftPadding = (int) context.getResources().getDimension(
-                    R.dimen.round_content_padding_left);
-            final int rightPadding = (int) context.getResources().getDimension(
-                    R.dimen.round_content_padding_right);
-            final int topPadding = (int) context.getResources().getDimension(
-                    R.dimen.settings_wearable_list_view_vertical_padding_round);
-            final int bottomPadding = (int) context.getResources().getDimension(
-                    R.dimen.settings_wearable_list_view_vertical_padding_round);
-            wheel.setPadding(leftPadding, topPadding, rightPadding, mChinOffset + bottomPadding);
-            wheel.setClipToPadding(false);
-
-            wheel.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
-                @Override
-                public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
-                    mChinOffset = insets.getSystemWindowInsetBottom();
-                    wheel.setPadding(leftPadding, topPadding, rightPadding,
-                            mChinOffset + bottomPadding);
-                    // This listener is invoked after each time we navigate to SettingsActivity and
-                    // it keeps adding padding. We need to disable it after the first update.
-                    v.setOnApplyWindowInsetsListener(null);
-                    return insets.consumeSystemWindowInsets();
-                }
-            });
-        } else {
-            int leftPadding = (int) context.getResources().getDimension(
-                    R.dimen.content_padding_left);
-            wheel.setPadding(leftPadding, wheel.getPaddingTop(), wheel.getPaddingRight(),
-                    wheel.getPaddingBottom());
-        }
-    }
-
-    private void adjustHeaderSize() {
-        int length = mHeader.length();
-
-        if (length <= mCharLimitShortTitle) {
-            mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX,
-                    getResources().getDimensionPixelSize(
-                            R.dimen.setting_short_header_text_size));
-        } else {
-            mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX,
-                    getResources().getDimensionPixelSize(
-                            R.dimen.setting_long_header_text_size));
-        }
-
-        boolean singleLine = length <= mCharLimitLine;
-
-        float height = getResources().getDimension(R.dimen.settings_header_base_height);
-        if (!singleLine) {
-            height += getResources().getDimension(R.dimen.setting_header_extra_line_height);
-        }
-        mHeader.setMinHeight((int) height);
-
-        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mHeader.getLayoutParams();
-        final Context context = getContext();
-        if (!singleLine) {
-            // Make the top margin a little bit smaller so there is more space for the title.
-            if (ViewUtils.getIsCircular(context)) {
-                params.topMargin = getResources().getDimensionPixelSize(
-                        R.dimen.settings_header_top_margin_circular_multiline);
-            } else {
-                params.topMargin = getResources().getDimensionPixelSize(
-                        R.dimen.settings_header_top_margin_multiline);
-            }
-        } else {
-            if (ViewUtils.getIsCircular(context)) {
-                params.topMargin = getResources().getDimensionPixelSize(
-                        R.dimen.settings_header_top_margin_circular);
-            } else {
-                params.topMargin = getResources().getDimensionPixelSize(
-                        R.dimen.settings_header_top_margin);
-            }
-        }
-        mHeader.setLayoutParams(params);
-    }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java b/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java
deleted file mode 100644
index 0800c14..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-* Copyright (C) 2015 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package com.android.packageinstaller.permission.ui.wear;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.os.Bundle;
-
-import com.android.packageinstaller.R;
-
-public final class WarningConfirmationActivity extends Activity {
-    public final static String EXTRA_WARNING_MESSAGE = "EXTRA_WARNING_MESSAGE";
-    // Saved index that will be returned in the onActivityResult() callback
-    public final static String EXTRA_INDEX = "EXTRA_INDEX";
-
-    private ConfirmationViewHandler mViewHandler;
-    private String mMessage;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mMessage = getIntent().getStringExtra(EXTRA_WARNING_MESSAGE);
-
-        mViewHandler = new ConfirmationViewHandler(this) {
-            @Override // ConfirmationViewHandler
-            public int getButtonBarMode() {
-                return MODE_VERTICAL_BUTTONS;
-            }
-
-            @Override
-            public void onButton1() {
-                setResultAndFinish(Activity.RESULT_CANCELED);
-            }
-
-            @Override
-            public void onButton2() {
-                setResultAndFinish(Activity.RESULT_OK);
-            }
-
-            @Override
-            public void onButton3() {
-                // no-op
-            }
-
-            @Override
-            public CharSequence getVerticalButton1Text() {
-                return getString(R.string.cancel);
-            }
-
-            @Override
-            public CharSequence getVerticalButton2Text() {
-                return getString(R.string.grant_dialog_button_deny_anyway);
-            }
-
-            @Override
-            public CharSequence getVerticalButton3Text() {
-                return null;
-            }
-
-            @Override
-            public Drawable getVerticalButton1Icon() {
-                return getDrawable(R.drawable.cancel_button);
-            }
-
-            @Override
-            public Drawable getVerticalButton2Icon() {
-                return getDrawable(R.drawable.confirm_button);
-            }
-
-            @Override
-            public Drawable getVerticalButton3Icon() {
-                return null;
-            }
-
-            @Override
-            public CharSequence getCurrentPageText() {
-                return null;
-            }
-
-            @Override
-            public Icon getPermissionIcon() {
-                return null;
-            }
-
-            @Override
-            public CharSequence getMessage() {
-                return mMessage;
-            }
-        };
-
-        setContentView(mViewHandler.createView());
-        mViewHandler.invalidate();
-    }
-
-    private void setResultAndFinish(int result) {
-        Intent intent = new Intent();
-        intent.putExtra(EXTRA_INDEX, getIntent().getIntExtra(EXTRA_INDEX, -1));
-        setResult(result, intent);
-        finish();
-    }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java
deleted file mode 100644
index 02c203b..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.support.wearable.view.WearableListView;
-
-public interface ExtendedOnCenterProximityListener
-        extends WearableListView.OnCenterProximityListener {
-    float getProximityMinValue();
-
-    float getProximityMaxValue();
-
-    float getCurrentProximityValue();
-
-    void setScalingAnimatorValue(float value);
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java
deleted file mode 100644
index 6b72541..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.animation.ObjectAnimator;
-import android.support.wearable.view.WearableListView;
-import android.view.View;
-
-
-public class ExtendedViewHolder extends WearableListView.ViewHolder {
-    public static final long DEFAULT_ANIMATION_DURATION = 150;
-
-    private ObjectAnimator mScalingUpAnimator;
-
-    private ObjectAnimator mScalingDownAnimator;
-
-    private float mMinValue;
-
-    private float mMaxValue;
-
-    public ExtendedViewHolder(View itemView) {
-        super(itemView);
-        if (itemView instanceof ExtendedOnCenterProximityListener) {
-            ExtendedOnCenterProximityListener item =
-                    (ExtendedOnCenterProximityListener) itemView;
-            mMinValue = item.getProximityMinValue();
-            item.setScalingAnimatorValue(mMinValue);
-            mMaxValue = item.getProximityMaxValue();
-            mScalingUpAnimator = ObjectAnimator.ofFloat(item, "scalingAnimatorValue", mMinValue,
-                    mMaxValue);
-            mScalingUpAnimator.setDuration(DEFAULT_ANIMATION_DURATION);
-            mScalingDownAnimator = ObjectAnimator.ofFloat(item, "scalingAnimatorValue",
-                    mMaxValue, mMinValue);
-            mScalingDownAnimator.setDuration(DEFAULT_ANIMATION_DURATION);
-        }
-    }
-
-    public void onCenterProximity(boolean isCentralItem, boolean animate) {
-        if (!(itemView instanceof ExtendedOnCenterProximityListener)) {
-            return;
-        }
-        ExtendedOnCenterProximityListener item = (ExtendedOnCenterProximityListener) itemView;
-        if (isCentralItem) {
-            if (animate) {
-                mScalingDownAnimator.cancel();
-                if (!mScalingUpAnimator.isRunning()) {
-                    mScalingUpAnimator.setFloatValues(item.getCurrentProximityValue(),
-                            mMaxValue);
-                    mScalingUpAnimator.start();
-                }
-            } else {
-                mScalingUpAnimator.cancel();
-                item.setScalingAnimatorValue(item.getProximityMaxValue());
-            }
-        } else {
-            mScalingUpAnimator.cancel();
-            if (animate) {
-                if (!mScalingDownAnimator.isRunning()) {
-                    mScalingDownAnimator.setFloatValues(item.getCurrentProximityValue(),
-                            mMinValue);
-                    mScalingDownAnimator.start();
-                }
-            } else {
-                mScalingDownAnimator.cancel();
-                item.setScalingAnimatorValue(item.getProximityMinValue());
-            }
-        }
-        super.onCenterProximity(isCentralItem, animate);
-    }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java
deleted file mode 100644
index 0e0adcb..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.support.wearable.view.WearableListView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-import com.android.packageinstaller.permission.model.AppPermissionGroup;
-
-public final class PermissionsSettingsAdapter extends SettingsAdapter<AppPermissionGroup> {
-    private Resources mRes;
-
-    public PermissionsSettingsAdapter(Context context) {
-        super(context, R.layout.permissions_settings_item);
-        mRes = context.getResources();
-    }
-
-    @Override
-    public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        return new PermissionsViewHolder(new PermissionsSettingsItem(parent.getContext()));
-    }
-
-    @Override
-    public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
-        super.onBindViewHolder(holder, position);
-        PermissionsViewHolder viewHolder = (PermissionsViewHolder) holder;
-        AppPermissionGroup group = get(position).data;
-
-        if (group.isPolicyFixed()) {
-            viewHolder.imageView.setEnabled(false);
-            viewHolder.textView.setEnabled(false);
-            viewHolder.state.setEnabled(false);
-            viewHolder.state.setText(
-                    mRes.getString(R.string.permission_summary_enforced_by_policy));
-        } else {
-            viewHolder.imageView.setEnabled(true);
-            viewHolder.textView.setEnabled(true);
-            viewHolder.state.setEnabled(true);
-
-            if (group.areRuntimePermissionsGranted()) {
-                viewHolder.state.setText(R.string.generic_enabled);
-            } else {
-                viewHolder.state.setText(R.string.generic_disabled);
-            }
-        }
-    }
-
-    private static final class PermissionsViewHolder extends SettingsAdapter.SettingsItemHolder {
-        public final TextView state;
-
-        public PermissionsViewHolder(View view) {
-            super(view);
-            state = (TextView) view.findViewById(R.id.state);
-        }
-    }
-
-    private class PermissionsSettingsItem extends SettingsItem {
-        private final TextView mState;
-        private final float mCenteredAlpha = 1.0f;
-        private final float mNonCenteredAlpha = 0.5f;
-
-        public PermissionsSettingsItem (Context context) {
-            super(context);
-            mState = (TextView) findViewById(R.id.state);
-        }
-
-        @Override
-        public void onCenterPosition(boolean animate) {
-            mImage.setAlpha(mImage.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
-            mText.setAlpha(mText.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
-            mState.setAlpha(mState.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha);
-        }
-
-        @Override
-        public void onNonCenterPosition(boolean animate) {
-            mImage.setAlpha(mNonCenteredAlpha);
-            mText.setAlpha(mNonCenteredAlpha);
-            mState.setAlpha(mNonCenteredAlpha);
-        }
-    }
-}
-
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java
deleted file mode 100644
index baf1a2b..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.content.Context;
-import android.support.wearable.view.CircledImageView;
-import android.support.wearable.view.WearableListView;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import com.android.packageinstaller.R;
-
-import java.util.ArrayList;
-
-/**
- * Common adapter for settings views. Maintains a list of 'Settings', consisting of a name,
- * icon and optional activity-specific data.
- */
-public class SettingsAdapter<T> extends WearableListView.Adapter {
-    private static final String TAG = "SettingsAdapter";
-    private final Context mContext;
-
-    public static final class Setting<S> {
-        public static final int ID_INVALID = -1;
-
-        public final int id;
-        public int nameResourceId;
-        public CharSequence name;
-        public int iconResource;
-        public boolean inProgress;
-        public S data;
-
-        public Setting(CharSequence name, int iconResource, S data) {
-            this(name, iconResource, data, ID_INVALID);
-        }
-
-        public Setting(CharSequence name, int iconResource, S data, int id) {
-            this.name = name;
-            this.iconResource = iconResource;
-            this.data = data;
-            this.inProgress = false;
-            this.id = id;
-        }
-
-        public Setting(int nameResource, int iconResource, S data, int id) {
-            this.nameResourceId = nameResource;
-            this.iconResource = iconResource;
-            this.data = data;
-            this.inProgress = false;
-            this.id = id;
-        }
-
-        public Setting(int nameResource, int iconResource, int id) {
-            this.nameResourceId = nameResource;
-            this.iconResource = iconResource;
-            this.data = null;
-            this.inProgress = false;
-            this.id = id;
-        }
-
-        public Setting(CharSequence name, int iconResource, int id) {
-            this(name, iconResource, null, id);
-        }
-
-    }
-
-    private final int mItemLayoutId;
-    private final float mDefaultCircleRadiusPercent;
-    private final float mSelectedCircleRadiusPercent;
-
-    protected ArrayList<Setting<T>> mSettings = new ArrayList<Setting<T>>();
-
-    public SettingsAdapter(Context context, int itemLayoutId) {
-        mContext = context;
-        mItemLayoutId = itemLayoutId;
-        mDefaultCircleRadiusPercent = context.getResources().getFraction(
-                R.dimen.default_settings_circle_radius_percent, 1, 1);
-        mSelectedCircleRadiusPercent = context.getResources().getFraction(
-                R.dimen.selected_settings_circle_radius_percent, 1, 1);
-    }
-
-    @Override
-    public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        return new SettingsItemHolder(new SettingsItem(parent.getContext()));
-    }
-
-    @Override
-    public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
-        Setting<T> setting = mSettings.get(position);
-        if (setting.iconResource == -1) {
-            ((SettingsItemHolder) holder).imageView.setVisibility(View.GONE);
-        } else {
-            ((SettingsItemHolder) holder).imageView.setVisibility(View.VISIBLE);
-            ((SettingsItemHolder) holder).imageView.setImageResource(
-                    mSettings.get(position).iconResource);
-        }
-        Log.d(TAG, "onBindViewHolder " + setting.name + " " + setting.id + " " + setting
-                .nameResourceId);
-        if (setting.name == null && setting.nameResourceId != 0) {
-            setting.name = mContext.getString(setting.nameResourceId);
-        }
-        ((SettingsItemHolder) holder).textView.setText(setting.name);
-    }
-
-    @Override
-    public int getItemCount() {
-        return mSettings.size();
-    }
-
-    public void addSetting(CharSequence name, int iconResource) {
-        addSetting(name, iconResource, null);
-    }
-
-    public void addSetting(CharSequence name, int iconResource, T intent) {
-        addSetting(mSettings.size(), name, iconResource, intent);
-    }
-
-    public void addSetting(int index, CharSequence name, int iconResource, T intent) {
-        addSetting(Setting.ID_INVALID, index, name, iconResource, intent);
-    }
-
-    public void addSetting(int id, int index, CharSequence name, int iconResource, T intent) {
-        mSettings.add(index, new Setting<T>(name, iconResource, intent, id));
-        notifyItemInserted(index);
-    }
-
-    public void addSettingDontNotify(Setting<T> setting) {
-        mSettings.add(setting);
-    }
-
-    public void addSetting(Setting<T> setting) {
-        mSettings.add(setting);
-        notifyItemInserted(mSettings.size() - 1);
-    }
-
-    public void addSetting(int index, Setting<T> setting) {
-        mSettings.add(index, setting);
-        notifyItemInserted(index);
-    }
-
-    /**
-     * Returns the index of the setting in the adapter based on the ID supplied when it was
-     * originally added.
-     * @param id the setting's id
-     * @return index in the adapter of the setting. -1 if not found.
-     */
-    public int findSetting(int id) {
-        for (int i = mSettings.size() - 1; i >= 0; --i) {
-            Setting setting = mSettings.get(i);
-
-            if (setting.id == id) {
-                return i;
-            }
-        }
-
-        return -1;
-    }
-
-    /**
-     * Removes a setting at the given index.
-     * @param index the index of the setting to be removed
-     */
-    public void removeSetting(int index) {
-        mSettings.remove(index);
-        notifyDataSetChanged();
-    }
-
-    public void clearSettings() {
-        mSettings.clear();
-        notifyDataSetChanged();
-    }
-
-    /**
-     * Updates a setting in place.
-     * @param index the index of the setting
-     * @param name the updated setting name
-     * @param iconResource the update setting icon
-     * @param intent the updated intent for the setting
-     */
-    public void updateSetting(int index, CharSequence name, int iconResource, T intent) {
-        Setting<T> setting = mSettings.get(index);
-        setting.iconResource = iconResource;
-        setting.name = name;
-        setting.data = intent;
-        notifyItemChanged(index);
-    }
-
-    public Setting<T> get(int position) {
-        return mSettings.get(position);
-    }
-
-    protected static class SettingsItemHolder extends ExtendedViewHolder {
-        public final CircledImageView imageView;
-        public final TextView textView;
-
-        public SettingsItemHolder(View itemView) {
-            super(itemView);
-
-            imageView = ((CircledImageView) itemView.findViewById(R.id.image));
-            textView = ((TextView) itemView.findViewById(R.id.text));
-        }
-    }
-
-    protected class SettingsItem extends FrameLayout implements ExtendedOnCenterProximityListener {
-
-        protected final CircledImageView mImage;
-        protected final TextView mText;
-
-        public SettingsItem(Context context) {
-            super(context);
-            View view = View.inflate(context, mItemLayoutId, null);
-            FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
-                    FrameLayout.LayoutParams.MATCH_PARENT,
-                    FrameLayout.LayoutParams.MATCH_PARENT);
-            params.gravity = Gravity.CENTER_VERTICAL;
-            addView(view, params);
-            mImage = (CircledImageView) findViewById(R.id.image);
-            mText = (TextView) findViewById(R.id.text);
-        }
-
-        @Override
-        public float getProximityMinValue() {
-            return mDefaultCircleRadiusPercent;
-        }
-
-        @Override
-        public float getProximityMaxValue() {
-            return mSelectedCircleRadiusPercent;
-        }
-
-        @Override
-        public float getCurrentProximityValue() {
-            return mImage.getCircleRadiusPressedPercent();
-        }
-
-        @Override
-        public void setScalingAnimatorValue(float value) {
-            mImage.setCircleRadiusPercent(value);
-            mImage.setCircleRadiusPressedPercent(value);
-        }
-
-        @Override
-        public void onCenterPosition(boolean animate) {
-            mImage.setAlpha(1f);
-            mText.setAlpha(1f);
-        }
-
-        @Override
-        public void onNonCenterPosition(boolean animate) {
-            mImage.setAlpha(0.5f);
-            mText.setAlpha(0.5f);
-        }
-
-        TextView getTextView() {
-            return mText;
-        }
-    }
-}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java
deleted file mode 100644
index cf1c0fd..0000000
--- a/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.packageinstaller.permission.ui.wear.settings;
-
-import android.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * Utility to determine screen shape
- */
-public class ViewUtils {
-
-    public static boolean getIsCircular(Context context) {
-        return context.getResources().getConfiguration().isScreenRound();
-    }
-
-    /**
-     * Set the given {@code view} and all descendants to the given {@code enabled} state.
-     *
-     * @param view the parent view of a subtree of components whose enabled state must be set
-     * @param enabled the new enabled state of the subtree of components
-     */
-    public static void setEnabled(View view, boolean enabled) {
-        view.setEnabled(enabled);
-
-        if (view instanceof ViewGroup) {
-            final ViewGroup viewGroup = (ViewGroup) view;
-            for (int i = 0; i < viewGroup.getChildCount(); i++) {
-                setEnabled(viewGroup.getChildAt(i), enabled);
-            }
-        }
-    }
-}