Roll Android Support Library to 22.0.0

My last CL missed to update Android Support Libarary.
This rolls Android Support Library from 21.0.3 to 22.0.0

BUG=440601

Change-Id: I9ef7e79a8643801f6e3a71eb0845b26234aa5c37
Reviewed-on: https://chromium-review.googlesource.com/261413
Reviewed-by: Armand Navabi <navabi@chromium.org>
Tested-by: Armand Navabi <navabi@chromium.org>
diff --git a/README.chromium b/README.chromium
index da89d1f..2205650 100644
--- a/README.chromium
+++ b/README.chromium
@@ -7,7 +7,7 @@
   Android SDK Platform-tools 22
   Android SDK Build-tools 22
   Android SDK Sources 22
-  Android Support Library 21.0.3
+  Android Support Library 22.0.0
   Google Cloud Messaging 3
 Security Critical: no
 License: Apache Version 2.0
@@ -57,5 +57,7 @@
     cd chromium-trace
     ./update.py
     cp script.js style.css $ANDROID_SDK_ROOT/tools/systrace
+ - Modified sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view.xml
+   by replacing accidental use of layout_marginEnd with layout_marginBottom.
 
 No other modifications has been made to the public Android SDK/NDK.
diff --git a/sdk/extras/android/support/NOTICE.txt b/sdk/extras/android/support/NOTICE.txt
index bb72a34..2b3d8b5 100644
--- a/sdk/extras/android/support/NOTICE.txt
+++ b/sdk/extras/android/support/NOTICE.txt
@@ -9740,6 +9740,7 @@
 /bin/dexdump
 /bin/dx
 /bin/jasmin
+/bin/split-select
 /framework/android-mock-generatorlib.jar
 /framework/jasmin.jar
 /lib/lib64cutils.a
diff --git a/sdk/extras/android/support/annotations/android-support-annotations.jar b/sdk/extras/android/support/annotations/android-support-annotations.jar
index 5bff095..89a36e7 100644
--- a/sdk/extras/android/support/annotations/android-support-annotations.jar
+++ b/sdk/extras/android/support/annotations/android-support-annotations.jar
Binary files differ
diff --git a/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex-instrumentation.jar b/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex-instrumentation.jar
index 60c5478..6264daa 100644
--- a/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex-instrumentation.jar
+++ b/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex-instrumentation.jar
Binary files differ
diff --git a/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex.jar b/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex.jar
index 4517ef8..57d2c76 100644
--- a/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex.jar
+++ b/sdk/extras/android/support/multidex/instrumentation/libs/android-support-multidex.jar
Binary files differ
diff --git a/sdk/extras/android/support/multidex/library/libs/android-support-multidex.jar b/sdk/extras/android/support/multidex/library/libs/android-support-multidex.jar
index 4517ef8..57d2c76 100644
--- a/sdk/extras/android/support/multidex/library/libs/android-support-multidex.jar
+++ b/sdk/extras/android/support/multidex/library/libs/android-support-multidex.jar
Binary files differ
diff --git a/sdk/extras/android/support/samples/Support7Demos/AndroidManifest.xml b/sdk/extras/android/support/samples/Support7Demos/AndroidManifest.xml
index 4077bb1..1d087a4 100644
--- a/sdk/extras/android/support/samples/Support7Demos/AndroidManifest.xml
+++ b/sdk/extras/android/support/samples/Support7Demos/AndroidManifest.xml
@@ -31,7 +31,7 @@
          reading images from the media store from API v19+. -->
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
-    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="21" />
 
     <!-- The smallest screen this app works on is a phone.  The app will
          scale its UI to larger screens but doesn't make good use of them
@@ -86,6 +86,14 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".media.SampleMediaRouteSettingsActivity"
+                android:label="@string/sample_media_route_settings_activity"
+                android:theme="@style/Theme.AppCompat.Light">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+            </intent-filter>
+        </activity>
+
         <service android:name=".media.SampleMediaRouteProviderService"
                 android:label="@string/sample_media_route_provider_service"
                 android:process=":mrp">
@@ -130,6 +138,16 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".app.SearchActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.SEARCH" />
+            </intent-filter>
+
+            <meta-data android:name="android.app.searchable"
+                       android:resource="@xml/searchable" />
+
+        </activity>
+
         <activity android:name=".app.ActionBarUsage"
                 android:label="@string/action_bar_usage"
                 android:theme="@style/Theme.AppCompat">
@@ -151,7 +169,7 @@
 
         <activity android:name=".app.ActionBarTabs"
                 android:label="@string/action_bar_tabs"
-                android:theme="@style/Theme.AppCompat">
+                android:theme="@style/Theme.Custom">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="com.example.android.supportv7.SAMPLE_CODE" />
@@ -160,7 +178,7 @@
 
         <activity android:name=".app.ActionBarSettingsActionProviderActivity"
                 android:label="@string/action_bar_settings_action_provider"
-                android:theme="@style/Theme.AppCompat">
+                android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="com.example.android.supportv7.SAMPLE_CODE" />
@@ -177,15 +195,49 @@
         </activity>
 
         <activity android:name=".app.ActionBarWithDrawerLayout"
-                  android:label="@string/action_bar_with_navigation_drawer"
-                  android:theme="@style/Theme.AppCompat"
-                  >
+                android:label="@string/action_bar_with_navigation_drawer"
+                android:theme="@style/Theme.AppCompat"
+                >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="com.example.android.supportv7.SAMPLE_CODE"/>
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.ToolbarUsage"
+                  android:label="@string/toolbar_usage"
+                  android:theme="@style/Theme.Custom.NoActionBar">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.example.android.supportv7.SAMPLE_CODE" />
+            </intent-filter>
+
+            <meta-data
+                    android:name="android.app.default_searchable"
+                    android:value=".app.SearchActivity" />
+        </activity>
+
+        <activity android:name=".app.ToolbarDisplayOptions"
+                  android:label="@string/toolbar_display_options"
+                  android:theme="@style/Theme.AppCompat.Light.NoActionBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="com.example.android.supportv7.SAMPLE_CODE" />
             </intent-filter>
         </activity>
 
+        <activity android:name=".app.ToolbarFragmentPagerMenu"
+                  android:label="@string/toolbar_fragment_pager"
+                  android:theme="@style/Theme.AppCompat.Light.NoActionBar">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.example.android.supportv7.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <provider android:name=".app.RecentSuggestionsProvider"
+                  android:authorities="com.example.android.supportv7.RecentSuggestionsProvider" />
+
         <!-- RecyclerView samples -->
         <activity android:name=".widget.RecyclerViewActivity"
                   android:label="@string/recycler_view"
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/layout/activity_card_view.xml b/sdk/extras/android/support/samples/Support7Demos/res/layout/activity_card_view.xml
index cfd3071..9b985f7 100644
--- a/sdk/extras/android/support/samples/Support7Demos/res/layout/activity_card_view.xml
+++ b/sdk/extras/android/support/samples/Support7Demos/res/layout/activity_card_view.xml
@@ -123,13 +123,61 @@
                 android:layout_height="wrap_content"
                 android:layout_toRightOf="@id/alpha_label"
                 android:layout_alignTop="@id/alpha_label"/>
-
+        <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="5dp"
+                android:id="@+id/color_label"
+                android:textColor="@android:color/black"
+                android:text="@string/card_view_bg_color"
+                android:layout_below="@id/alpha_label"
+                android:layout_alignRight="@id/alpha_label"/>
+        <RadioGroup
+                android:id="@+id/select_bg_color_radio"
+                android:layout_toRightOf="@id/color_label"
+                android:layout_alignTop="@id/color_label"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:layout_below="@id/alpha_seek_bar">
+            <RadioButton
+                    android:id="@+id/def"
+                    android:layout_width="40dp"
+                    android:layout_height="wrap_content"
+                    android:background="@color/cardview_light_background"
+                    android:checked="true"/>
+            <RadioButton
+                    android:id="@+id/yellow"
+                    android:layout_width="40dp"
+                    android:layout_height="wrap_content"
+                    android:background="@color/card_yellow"/>
+            <RadioButton
+                    android:id="@+id/aquatic"
+                    android:layout_width="40dp"
+                    android:layout_height="wrap_content"
+                    android:background="@color/card_aquatic"/>
+            <RadioButton
+                    android:id="@+id/classic"
+                    android:layout_width="40dp"
+                    android:layout_height="wrap_content"
+                    android:background="@color/card_classic"/>
+            <RadioButton
+                    android:id="@+id/sunbrite"
+                    android:layout_width="40dp"
+                    android:layout_height="wrap_content"
+                    android:background="@color/card_sunbrite"/>
+            <RadioButton
+                    android:id="@+id/tropical"
+                    android:layout_width="40dp"
+                    android:layout_height="wrap_content"
+                    android:background="@color/card_tropical"/>
+        </RadioGroup>
         <RadioGroup
                 android:id="@+id/select_target_radio"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
-                android:layout_below="@id/alpha_seek_bar">
+                android:layout_below="@id/color_label">
             <RadioButton
                     android:id="@+id/resize_card_view"
                     android:layout_width="wrap_content"
@@ -144,7 +192,6 @@
                     android:textColor="@android:color/black"
                     android:text="@string/card_view_resize_content"/>
         </RadioGroup>
-
     </RelativeLayout>
     <RelativeLayout android:layout_width="fill_parent"
                     android:layout_height="match_parent">
@@ -155,9 +202,10 @@
                 card_view:cardElevation="10dp">
             <TextView
                     android:id="@+id/info_text"
+                    android:text="@string/card_view"
                     android:textColor="@android:color/black"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent" />
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
         </android.support.v7.widget.CardView>
         <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                   android:text="@string/card_view_sample_text"
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_display_options.xml b/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_display_options.xml
new file mode 100644
index 0000000..cc3e66c
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_display_options.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<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="match_parent"
+              android:orientation="vertical">
+
+    <android.support.v7.widget.Toolbar
+            android:id="@+id/toolbar"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:minHeight="?attr/actionBarSize"
+            android:background="?attr/colorPrimary" />
+
+    <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+        <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+
+            <Button
+                    android:id="@+id/toggle_home_as_up"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/toggle_home_as_up"/>
+
+            <Button
+                    android:id="@+id/toggle_show_home"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/toggle_show_home"/>
+
+            <Button
+                    android:id="@+id/toggle_use_logo"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/toggle_use_logo"/>
+
+            <Button
+                    android:id="@+id/toggle_show_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/toggle_show_title"/>
+
+            <Button
+                    android:id="@+id/toggle_show_custom"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/toggle_show_custom"/>
+
+            <Button
+                    android:id="@+id/cycle_custom_gravity"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/cycle_custom_gravity"/>
+
+            <Button
+                    android:id="@+id/toggle_visibility"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/toggle_visibility"/>
+
+        </LinearLayout>
+
+    </ScrollView>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_fragment_pager.xml b/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_fragment_pager.xml
new file mode 100644
index 0000000..9f56f19
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_fragment_pager.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical">
+
+    <android.support.v7.widget.Toolbar
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:minHeight="?actionBarSize"
+            android:background="?attr/colorPrimaryDark" />
+
+    <android.support.v4.view.ViewPager
+            android:id="@+id/viewpager"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_usage.xml b/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_usage.xml
new file mode 100644
index 0000000..b202e1f
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/res/layout/toolbar_usage.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              xmlns:app="http://schemas.android.com/apk/res-auto"
+              android:orientation="vertical"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
+
+    <android.support.v7.widget.Toolbar
+            android:id="@+id/toolbar"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:minHeight="?attr/actionBarSize"
+            android:background="?attr/colorPrimaryDark"
+            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
+
+    <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:text="Your content"
+            android:gravity="center"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/menu/actions.xml b/sdk/extras/android/support/samples/Support7Demos/res/menu/actions.xml
index 38d291e..43605fd 100644
--- a/sdk/extras/android/support/samples/Support7Demos/res/menu/actions.xml
+++ b/sdk/extras/android/support/samples/Support7Demos/res/menu/actions.xml
@@ -16,9 +16,9 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto">
     <item android:id="@+id/action_search"
-          android:icon="@android:drawable/ic_menu_search"
           android:title="@string/action_bar_search"
-          app:showAsAction="ifRoom"
+          android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
+          app:showAsAction="ifRoom|collapseActionView"
           app:actionViewClass="android.support.v7.widget.SearchView" />
     <item android:id="@+id/action_add"
           android:icon="@android:drawable/ic_menu_add"
@@ -30,6 +30,7 @@
     <item android:id="@+id/action_share"
           android:icon="@android:drawable/ic_menu_share"
           android:title="@string/action_bar_share"
+          android:enabled="false"
           app:showAsAction="ifRoom" />
     <item android:id="@+id/action_sort"
           android:icon="@android:drawable/ic_menu_sort_by_size"
@@ -38,12 +39,10 @@
         <menu>
             <item android:id="@+id/action_sort_size"
                   android:icon="@android:drawable/ic_menu_sort_by_size"
-                  android:title="@string/action_bar_sort_size"
-                  android:onClick="onSort" />
+                  android:title="@string/action_bar_sort_size" />
             <item android:id="@+id/action_sort_alpha"
                   android:icon="@android:drawable/ic_menu_sort_alphabetically"
-                  android:title="@string/action_bar_sort_alpha"
-                  android:onClick="onSort" />
+                  android:title="@string/action_bar_sort_alpha" />
         </menu>
     </item>
 </menu>
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/values/colors.xml b/sdk/extras/android/support/samples/Support7Demos/res/values/colors.xml
index b129b8d..c8c67a0 100644
--- a/sdk/extras/android/support/samples/Support7Demos/res/values/colors.xml
+++ b/sdk/extras/android/support/samples/Support7Demos/res/values/colors.xml
@@ -16,4 +16,9 @@
 
 <resources>
     <drawable name="blue">#770000ff</drawable>
+    <color name="card_yellow">#FCF0AD</color>
+    <color name="card_aquatic">#FCF0AD</color>
+    <color name="card_classic">#BAB7A9</color>
+    <color name="card_sunbrite">#F9D6AC</color>
+    <color name="card_tropical">#56C4E8</color>
 </resources>
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/values/strings.xml b/sdk/extras/android/support/samples/Support7Demos/res/values/strings.xml
index 14569a5..4b3a28f 100644
--- a/sdk/extras/android/support/samples/Support7Demos/res/values/strings.xml
+++ b/sdk/extras/android/support/samples/Support7Demos/res/values/strings.xml
@@ -25,6 +25,7 @@
     <string name="sample_media_router_text">This activity demonstrates how to
             use MediaRouter from the support library.  Select a route from the action bar.</string>
     <string name="media_route_menu_title">Play on...</string>
+    <string name="sample_media_route_settings_activity">Sample route settings</string>
 
     <string name="library_tab_text">Library</string>
     <string name="playlist_tab_text">Playlist</string>
@@ -121,6 +122,9 @@
         necessary.
     </string>
 
+    <string name="toolbar_usage">AppCompat/Toolbar/Toolbar as Action Bar</string>
+    <string name="toolbar_display_options">AppCompat/Toolbar/Toolbar Display Options</string>
+    <string name="toolbar_fragment_pager">AppCompat/Toolbar/Toolbar Fragment ViewPager</string>
 
     <string name="sample_media_route_provider_remote">Remote Playback (Simulated)</string>
     <string name="sample_media_route_activity_local">Local Playback</string>
@@ -147,6 +151,7 @@
     <string name="card_view_radius">Radius</string>
     <string name="card_view_width">Width</string>
     <string name="card_view_height">Height</string>
+    <string name="card_view_bg_color">Background</string>
     <string name="card_view_elevation">Elevation</string>
     <string name="card_view_max_elevation">Max Elevation</string>
     <string name="card_view_alpha">Alpha</string>
@@ -156,5 +161,6 @@
 
     <string name="palette">Palette</string>
     <string name="palette_all_colors">Full color palette</string>
+    <string name="search_hint">Search...</string>
 
 </resources>
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/values/styles.xml b/sdk/extras/android/support/samples/Support7Demos/res/values/styles.xml
new file mode 100644
index 0000000..f085fa5
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/res/values/styles.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+
+    <style name="Theme.Custom" parent="Theme.AppCompat.Light.DarkActionBar">
+        <item name="colorPrimary">#ff00bcd4</item>
+        <item name="colorPrimaryDark">#00838f</item>
+        <item name="colorAccent">#ffff00</item>
+    </style>
+
+    <style name="Theme.Custom.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
+        <item name="colorPrimary">#ff00bcd4</item>
+        <item name="colorPrimaryDark">#00838f</item>
+        <item name="colorAccent">#ffff00</item>
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/samples/Support7Demos/res/xml/searchable.xml b/sdk/extras/android/support/samples/Support7Demos/res/xml/searchable.xml
new file mode 100644
index 0000000..7f0fa74
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/res/xml/searchable.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<searchable xmlns:android="http://schemas.android.com/apk/res/android"
+            android:label="@string/activity_sample_code"
+            android:hint="@string/search_hint"
+            android:searchSuggestAuthority="com.example.android.supportv7.RecentSuggestionsProvider"
+            android:searchSuggestSelection=" ?" />
\ No newline at end of file
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java
index b7b25e8..ebda999 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java
@@ -15,6 +15,8 @@
  */
 package com.example.android.supportv7.app;
 
+import com.example.android.supportv7.R;
+
 import android.os.Bundle;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v7.app.ActionBar;
@@ -24,8 +26,8 @@
 import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
-
-import com.example.android.supportv7.R;
+import android.widget.ArrayAdapter;
+import android.widget.Toast;
 
 /**
  * This demo shows how various action bar display option flags can be combined and their effects.
@@ -59,6 +61,21 @@
         bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this));
         bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this));
         bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this));
+
+        final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(bar.getThemedContext(),
+                R.layout.support_simple_spinner_dropdown_item,
+                new String[] { "Item 1", "Item 2", "Item 3" });
+        bar.setListNavigationCallbacks(listAdapter, new ActionBar.OnNavigationListener() {
+            @Override
+            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
+                Toast.makeText(ActionBarDisplayOptions.this,
+                        listAdapter.getItem(itemPosition),
+                        Toast.LENGTH_SHORT).show();
+                return true;
+            }
+        });
+
+        bar.setLogo(R.drawable.ic_media_play);
     }
 
     @Override
@@ -94,10 +111,17 @@
                 flags = ActionBar.DISPLAY_SHOW_CUSTOM;
                 break;
             case R.id.toggle_navigation:
-                bar.setNavigationMode(
-                        bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD
-                                ? ActionBar.NAVIGATION_MODE_TABS
-                                : ActionBar.NAVIGATION_MODE_STANDARD);
+                switch (bar.getNavigationMode()) {
+                    case ActionBar.NAVIGATION_MODE_STANDARD:
+                        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+                        break;
+                    case ActionBar.NAVIGATION_MODE_TABS:
+                        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
+                        break;
+                    case ActionBar.NAVIGATION_MODE_LIST:
+                        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+                        break;
+                }
                 return;
             case R.id.cycle_custom_gravity: {
                 ActionBar.LayoutParams lp = mCustomViewLayoutParams;
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java
index aaa916c..4bfea50 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java
@@ -36,7 +36,6 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
         setContentView(R.layout.action_bar_tabs);
     }
 
@@ -61,10 +60,8 @@
 
         if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) {
             bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
-            bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);
         } else {
             bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
-            bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
         }
     }
 
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java
index 6ed59fb..f8c29ca 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java
@@ -67,14 +67,19 @@
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_sort_alpha:
+            case R.id.action_sort_size:
+                onSort(item);
+                break;
+        }
+
         Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();
+
         return true;
     }
 
-    // This method is specified as an onClick handler in the menu xml and will
-    // take precedence over the Activity's onOptionsItemSelected method.
-    // See res/menu/actions.xml for more info.
-    public void onSort(MenuItem item) {
+    private void onSort(MenuItem item) {
         mSortMode = item.getItemId();
         // Request a call to onPrepareOptionsMenu so we can change the sort icon
         supportInvalidateOptionsMenu();
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/RecentSuggestionsProvider.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/RecentSuggestionsProvider.java
new file mode 100644
index 0000000..8d6666d
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/RecentSuggestionsProvider.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.supportv7.app;
+
+import android.content.SearchRecentSuggestionsProvider;
+
+public class RecentSuggestionsProvider extends SearchRecentSuggestionsProvider {
+    public final static String AUTHORITY = "com.example.android.supportv7.RecentSuggestionsProvider";
+    public final static int MODE = DATABASE_MODE_QUERIES;
+
+    public RecentSuggestionsProvider() {
+        setupSuggestions(AUTHORITY, MODE);
+    }
+}
\ No newline at end of file
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/SearchActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/SearchActivity.java
new file mode 100644
index 0000000..622516f
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/SearchActivity.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.supportv7.app;
+
+import android.app.Activity;
+import android.app.SearchManager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.SearchRecentSuggestions;
+
+/**
+ * An Activity which is only used for recieving ACTION_SEARCH intents, saving any queries
+ * to our SearchRecentSuggestions so that SearchView's can display suggestions.
+ */
+public class SearchActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Get the intent, verify the action and get the query
+        Intent intent = getIntent();
+        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
+            String query = intent.getStringExtra(SearchManager.QUERY);
+            SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,
+                    RecentSuggestionsProvider.AUTHORITY, RecentSuggestionsProvider.MODE);
+            suggestions.saveRecentQuery(query, null);
+            finish();
+        }
+    }
+}
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarDisplayOptions.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarDisplayOptions.java
new file mode 100644
index 0000000..f5c3d75
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarDisplayOptions.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.supportv7.app;
+
+import com.example.android.supportv7.R;
+
+import android.os.Bundle;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBar.Tab;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.Gravity;
+import android.view.Menu;
+import android.view.View;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.ArrayAdapter;
+import android.widget.Toast;
+
+/**
+ * This demo shows how various action bar display option flags can be combined and their effects
+ * when used on a Toolbar-provided Action Bar
+ */
+public class ToolbarDisplayOptions extends ActionBarActivity
+        implements View.OnClickListener {
+
+    private View mCustomView;
+    private ActionBar.LayoutParams mCustomViewLayoutParams;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.toolbar_display_options);
+
+        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+        setSupportActionBar(toolbar);
+
+        findViewById(R.id.toggle_home_as_up).setOnClickListener(this);
+        findViewById(R.id.toggle_show_home).setOnClickListener(this);
+        findViewById(R.id.toggle_use_logo).setOnClickListener(this);
+        findViewById(R.id.toggle_show_title).setOnClickListener(this);
+        findViewById(R.id.toggle_show_custom).setOnClickListener(this);
+        findViewById(R.id.cycle_custom_gravity).setOnClickListener(this);
+        findViewById(R.id.toggle_visibility).setOnClickListener(this);
+
+        // Configure several action bar elements that will be toggled by display options.
+        mCustomView = getLayoutInflater().inflate(R.layout.action_bar_display_options_custom, null);
+        mCustomViewLayoutParams = new ActionBar.LayoutParams(
+                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.display_options_actions, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onSupportNavigateUp() {
+        finish();
+        return true;
+    }
+
+    @Override
+    public void onClick(View v) {
+        final ActionBar bar = getSupportActionBar();
+        int flags = 0;
+        switch (v.getId()) {
+            case R.id.toggle_home_as_up:
+                flags = ActionBar.DISPLAY_HOME_AS_UP;
+                break;
+            case R.id.toggle_show_home:
+                flags = ActionBar.DISPLAY_SHOW_HOME;
+                break;
+            case R.id.toggle_use_logo:
+                flags = ActionBar.DISPLAY_USE_LOGO;
+                getSupportActionBar().setLogo(R.drawable.ic_media_play);
+                break;
+            case R.id.toggle_show_title:
+                flags = ActionBar.DISPLAY_SHOW_TITLE;
+                break;
+            case R.id.toggle_show_custom:
+                flags = ActionBar.DISPLAY_SHOW_CUSTOM;
+                break;
+            case R.id.cycle_custom_gravity: {
+                ActionBar.LayoutParams lp = mCustomViewLayoutParams;
+                int newGravity = 0;
+                switch (lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK) {
+                    case Gravity.LEFT:
+                        newGravity = Gravity.CENTER_HORIZONTAL;
+                        break;
+                    case Gravity.CENTER_HORIZONTAL:
+                        newGravity = Gravity.RIGHT;
+                        break;
+                    case Gravity.RIGHT:
+                        newGravity = Gravity.LEFT;
+                        break;
+                }
+                lp.gravity = lp.gravity & ~Gravity.HORIZONTAL_GRAVITY_MASK | newGravity;
+                bar.setCustomView(mCustomView, lp);
+                return;
+            }
+            case R.id.toggle_visibility:
+                if (bar.isShowing()) {
+                    bar.hide();
+                } else {
+                    bar.show();
+                }
+                return;
+        }
+
+        int change = bar.getDisplayOptions() ^ flags;
+        bar.setDisplayOptions(change, flags);
+    }
+}
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarFragmentPagerMenu.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarFragmentPagerMenu.java
new file mode 100644
index 0000000..9b57933
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarFragmentPagerMenu.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.supportv7.app;
+
+import com.example.android.supportv7.R;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Demonstrates how fragments can participate in the options menu from within a {@link ViewPager}.
+ */
+public class ToolbarFragmentPagerMenu extends ActionBarActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.toolbar_fragment_pager);
+
+        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+        setSupportActionBar(toolbar);
+
+        ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
+        PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(),
+                new MenuFragment(), new Menu2Fragment());
+        vp.setAdapter(adapter);
+    }
+
+    private static class PagerAdapter extends FragmentPagerAdapter {
+        private final List<Fragment> mFragments;
+
+        public PagerAdapter(FragmentManager fm, Fragment... fragments) {
+            super(fm);
+
+            mFragments = new ArrayList<Fragment>();
+            for (Fragment fragment : fragments) {
+                mFragments.add(fragment);
+            }
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            return mFragments.get(position);
+        }
+
+        @Override
+        public int getCount() {
+            return mFragments.size();
+        }
+    }
+
+    /**
+     * A fragment that displays a menu.  This fragment happens to not
+     * have a UI (it does not implement onCreateView), but it could also
+     * have one if it wanted.
+     */
+    public static class MenuFragment extends Fragment {
+        @Override
+        public void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            setHasOptionsMenu(true);
+        }
+
+        @Override
+        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+            MenuItemCompat.setShowAsAction(menu.add("Menu 1a"), MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
+            MenuItemCompat.setShowAsAction(menu.add("Menu 1b"), MenuItemCompat.SHOW_AS_ACTION_NEVER);
+            super.onCreateOptionsMenu(menu, inflater);
+        }
+
+        @Override
+        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+                @Nullable Bundle savedInstanceState) {
+            TextView textView = new TextView(container.getContext());
+
+            textView.setText(getClass().getSimpleName());
+            textView.setGravity(Gravity.CENTER);
+            textView.setLayoutParams(new ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+
+            return textView;
+        }
+
+        @Override
+        public boolean onOptionsItemSelected(MenuItem item) {
+            if (item.getTitle().equals("Menu 1a")) {
+                Toast.makeText(getActivity(), "Selected Menu 1a.", Toast.LENGTH_SHORT).show();
+                return true;
+            }
+            if (item.getTitle().equals("Menu 1b")) {
+                Toast.makeText(getActivity(), "Selected Menu 1b.", Toast.LENGTH_SHORT).show();
+                return true;
+            }
+            return super.onOptionsItemSelected(item);
+        }
+    }
+
+    /**
+     * Second fragment with a menu.
+     */
+    public static class Menu2Fragment extends Fragment {
+        @Override
+        public void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            setHasOptionsMenu(true);
+        }
+
+        @Override
+        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+            MenuItemCompat.setShowAsAction(menu.add("Menu 2"), MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
+        }
+
+        @Override
+        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+                @Nullable Bundle savedInstanceState) {
+            TextView textView = new TextView(container.getContext());
+
+            textView.setText(getClass().getSimpleName());
+            textView.setGravity(Gravity.CENTER);
+            textView.setLayoutParams(new ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+
+            return textView;
+        }
+
+        @Override
+        public boolean onOptionsItemSelected(MenuItem item) {
+            if (item.getTitle().equals("Menu 2")) {
+                Toast.makeText(getActivity(), "Selected Menu 2.", Toast.LENGTH_SHORT).show();
+                return true;
+            }
+            return false;
+        }
+    }
+}
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarUsage.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarUsage.java
new file mode 100644
index 0000000..f5ac03b
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarUsage.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.supportv7.app;
+
+import com.example.android.supportv7.R;
+
+import android.app.SearchManager;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.view.ActionMode;
+import android.support.v7.widget.PopupMenu;
+import android.support.v7.widget.SearchView;
+import android.support.v7.widget.Toolbar;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+/**
+ * This demonstrates idiomatic usage of the Toolbar as the action bar.
+ */
+public class ToolbarUsage extends ActionBarActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.toolbar_usage);
+
+        // Retrieve the Toolbar from our content view, and set it as the action bar
+        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+        setSupportActionBar(toolbar);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.actions, menu);
+
+        // Retrieve the SearchView and plug it into SearchManager
+        final SearchView searchView = (SearchView) MenuItemCompat
+                .getActionView(menu.findItem(R.id.action_search));
+
+        SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
+        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
+
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();
+        return true;
+    }
+
+}
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/LocalPlayer.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/LocalPlayer.java
index 806df25..b3c14c2 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/LocalPlayer.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/LocalPlayer.java
@@ -28,6 +28,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.SystemClock;
+import android.support.v4.media.session.MediaSessionCompat;
 import android.support.v7.media.MediaRouter.RouteInfo;
 import android.support.v7.media.MediaItemStatus;
 import android.util.Log;
@@ -56,12 +57,6 @@
     private static final String TAG = "LocalPlayer";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
-    private static final int STATE_IDLE = 0;
-    private static final int STATE_PLAY_PENDING = 1;
-    private static final int STATE_READY = 2;
-    private static final int STATE_PLAYING = 3;
-    private static final int STATE_PAUSED = 4;
-
     private final Context mContext;
     private final Handler mHandler = new Handler();
     private MediaPlayer mMediaPlayer;
@@ -109,6 +104,11 @@
         }
     }
 
+    @Override
+    public MediaSessionCompat getMediaSession() {
+        return mMediaSession;
+    }
+
     // Player
     @Override
     public void play(final PlaylistItem item) {
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/Player.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/Player.java
index 32b1285..fcab57d 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/Player.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/Player.java
@@ -16,11 +16,17 @@
 
 package com.example.android.supportv7.media;
 
-import android.net.Uri;
+import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
 import android.graphics.Bitmap;
+import android.support.v4.media.MediaMetadataCompat;
+import android.support.v4.media.session.MediaSessionCompat;
+import android.support.v4.media.session.PlaybackStateCompat;
 import android.support.v7.media.MediaControlIntent;
 import android.support.v7.media.MediaRouter.RouteInfo;
+import android.util.Log;
 
 /**
  * Abstraction of common playback operations of media items, such as play,
@@ -28,7 +34,18 @@
  * of media items.
  */
 public abstract class Player {
+    private static final String TAG = "SampleMediaRoutePlayer";
+    protected static final int STATE_IDLE = 0;
+    protected static final int STATE_PLAY_PENDING = 1;
+    protected static final int STATE_READY = 2;
+    protected static final int STATE_PLAYING = 3;
+    protected static final int STATE_PAUSED = 4;
+
+    private static final long PLAYBACK_ACTIONS = PlaybackStateCompat.ACTION_PAUSE
+            | PlaybackStateCompat.ACTION_PLAY;
+
     protected Callback mCallback;
+    protected MediaSessionCompat mMediaSession;
 
     public abstract boolean isRemotePlayback();
     public abstract boolean isQueuingSupported();
@@ -61,7 +78,7 @@
         mCallback = callback;
     }
 
-    public static Player create(Context context, RouteInfo route) {
+    public static Player create(Context context, RouteInfo route, MediaSessionCompat session) {
         Player player;
         if (route != null && route.supportsControlCategory(
                 MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)) {
@@ -71,10 +88,62 @@
         } else {
             player = new LocalPlayer.OverlayPlayer(context);
         }
+        player.initMediaSession(session);
         player.connect(route);
         return player;
     }
 
+    public MediaSessionCompat getMediaSession() {
+        return mMediaSession;
+    }
+
+    protected void updateMetadata() {
+        if (mMediaSession == null) {
+            return;
+        }
+        MediaMetadataCompat.Builder bob = new MediaMetadataCompat.Builder();
+        bob.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, getDescription());
+        bob.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, "Subtitle of the thing");
+        bob.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION,
+                "Description of the thing");
+        bob.putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, getSnapshot());
+        mMediaSession.setMetadata(bob.build());
+    }
+
+    protected void publishState(int state) {
+        if (mMediaSession == null) {
+            return;
+        }
+        PlaybackStateCompat.Builder bob = new PlaybackStateCompat.Builder();
+        bob.setActions(PLAYBACK_ACTIONS);
+        switch (state) {
+            case STATE_PLAYING:
+                bob.setState(PlaybackStateCompat.STATE_PLAYING, -1, 1);
+                break;
+            case STATE_READY:
+            case STATE_PAUSED:
+                bob.setState(PlaybackStateCompat.STATE_PAUSED, -1, 0);
+                break;
+            case STATE_IDLE:
+                bob.setState(PlaybackStateCompat.STATE_STOPPED, -1, 0);
+                break;
+        }
+        PlaybackStateCompat pbState = bob.build();
+        Log.d(TAG, "Setting state to " + pbState);
+        mMediaSession.setPlaybackState(pbState);
+        if (state != STATE_IDLE) {
+            mMediaSession.setActive(true);
+        } else {
+            mMediaSession.setActive(false);
+        }
+    }
+
+    private void initMediaSession(MediaSessionCompat session) {
+        mMediaSession = session;
+        updateMetadata();
+    }
+
+
     public interface Callback {
         void onError();
         void onCompletion();
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/RemotePlayer.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/RemotePlayer.java
index 5020c37..d47c260 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/RemotePlayer.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/RemotePlayer.java
@@ -140,6 +140,9 @@
                 }
                 if (item.getState() == MediaItemStatus.PLAYBACK_STATE_PAUSED) {
                     pause();
+                    publishState(STATE_PAUSED);
+                } else {
+                    publishState(STATE_PLAYING);
                 }
                 if (mCallback != null) {
                     mCallback.onPlaylistChanged();
@@ -214,6 +217,7 @@
                 if (mCallback != null) {
                     mCallback.onPlaylistChanged();
                 }
+                publishState(STATE_PAUSED);
             }
 
             @Override
@@ -239,6 +243,7 @@
                 if (mCallback != null) {
                     mCallback.onPlaylistChanged();
                 }
+                publishState(STATE_PLAYING);
             }
 
             @Override
@@ -254,6 +259,7 @@
             // ignore if no session
             return;
         }
+        publishState(STATE_IDLE);
         if (DEBUG) {
             Log.d(TAG, "stop");
         }
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteControllerDialog.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteControllerDialog.java
deleted file mode 100644
index a2cacc3..0000000
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteControllerDialog.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.supportv7.media;
-
-import com.example.android.supportv7.R;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.support.v7.app.MediaRouteControllerDialog;
-import android.support.v7.media.MediaRouteSelector;
-import android.support.v7.media.MediaRouter;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-/**
- * This class serves as an example on how to customize the media router control
- * dialog. It is derived from the standard MediaRouteControllerDialog with the
- * following overrides:
- *
- *   1. Shows thumbnail/snapshot of the current item
- *
- *   2. For variable volume routes, only allow volume control via Volume Up/Down
- *      keys (to prevent accidental tapping on the volume adjust seekbar that sets
- *      volume to maximum)
- *
- *   3. Provides transport control buttons (play/pause, stop)
- */
-public class SampleMediaRouteControllerDialog extends MediaRouteControllerDialog {
-    private static final String TAG = "SampleMediaRouteControllerDialog";
-    private final SampleMediaRouterActivity mActivity;
-    private final SessionManager mSessionManager;
-    private final Player mPlayer;
-    private ImageButton mPauseResumeButton;
-    private ImageButton mStopButton;
-    private ImageView mThumbnail;
-    private TextView mTextView;
-    private LinearLayout mInfoLayout;
-    private LinearLayout mVolumeLayout;
-
-    public SampleMediaRouteControllerDialog(Context context,
-            SessionManager manager, Player player) {
-        super(context);
-        mActivity = (SampleMediaRouterActivity) context;
-        mSessionManager = manager;
-        mPlayer = player;
-    }
-
-    @Override
-    public View onCreateMediaControlView(Bundle savedInstanceState) {
-        // Thumbnail and Track info
-        View v = getLayoutInflater().inflate(R.layout.sample_media_controller, null);
-        mInfoLayout = (LinearLayout)v.findViewById(R.id.media_route_info);
-        mTextView = (TextView)v.findViewById(R.id.track_info);
-        mThumbnail = (ImageView)v.findViewById(R.id.snapshot);
-
-        // Transport controls
-        mPauseResumeButton = (ImageButton)v.findViewById(R.id.pause_resume_button);
-        mPauseResumeButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (mActivity != null) {
-                    mActivity.handleMediaKey(new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
-                }
-            }
-        });
-
-        mStopButton = (ImageButton)v.findViewById(R.id.stop_button);
-        mStopButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (mActivity != null) {
-                    mActivity.handleMediaKey(new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_MEDIA_STOP));
-                }
-            }
-        });
-
-        // update session status (will callback to updateUi at the end)
-        mSessionManager.updateStatus();
-        return v;
-    }
-
-    public void updateUi() {
-        String trackInfo = mPlayer.getDescription();
-        Bitmap snapshot = mPlayer.getSnapshot();
-        if (mPlayer.isRemotePlayback() && !trackInfo.isEmpty() && snapshot != null) {
-            mInfoLayout.setVisibility(View.VISIBLE);
-            mThumbnail.setImageBitmap(snapshot);
-            mTextView.setText(trackInfo);
-        } else {
-            mInfoLayout.setVisibility(View.GONE);
-        }
-        // show pause or resume icon depending on current state
-        mPauseResumeButton.setImageResource(mSessionManager.isPaused() ?
-                R.drawable.ic_media_play : R.drawable.ic_media_pause);
-    }
-}
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteProvider.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteProvider.java
index 8a20564..15cf19b 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteProvider.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteProvider.java
@@ -22,6 +22,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.IntentFilter.MalformedMimeTypeException;
+import android.content.IntentSender;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.media.AudioManager;
@@ -173,6 +174,10 @@
 
     private void publishRoutes() {
         Resources r = getContext().getResources();
+        Intent settingsIntent = new Intent(Intent.ACTION_MAIN);
+        settingsIntent.setClass(getContext(), SampleMediaRouteSettingsActivity.class);
+        IntentSender is = PendingIntent.getActivity(getContext(), 99, settingsIntent,
+                Intent.FLAG_ACTIVITY_NEW_TASK).getIntentSender();
 
         MediaRouteDescriptor routeDescriptor1 = new MediaRouteDescriptor.Builder(
                 FIXED_VOLUME_ROUTE_ID,
@@ -183,6 +188,8 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED)
                 .setVolume(VOLUME_MAX)
+                .setCanDisconnect(true)
+                .setSettingsActivity(is)
                 .build();
 
         MediaRouteDescriptor routeDescriptor2 = new MediaRouteDescriptor.Builder(
@@ -195,6 +202,7 @@
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
                 .setVolume(mVolume)
+                .setSettingsActivity(is)
                 .build();
 
         MediaRouteDescriptor routeDescriptor3 = new MediaRouteDescriptor.Builder(
@@ -207,6 +215,7 @@
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
                 .setVolume(mVolume)
+                .setCanDisconnect(true)
                 .build();
 
         MediaRouteDescriptor routeDescriptor4 = new MediaRouteDescriptor.Builder(
@@ -239,7 +248,7 @@
 
         public SampleRouteController(String routeId) {
             mRouteId = routeId;
-            mPlayer = Player.create(getContext(), null);
+            mPlayer = Player.create(getContext(), null, null);
             mSessionManager.setPlayer(mPlayer);
             mSessionManager.setCallback(new SessionManager.Callback() {
                 @Override
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteSettingsActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteSettingsActivity.java
new file mode 100644
index 0000000..a1d07fb
--- /dev/null
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouteSettingsActivity.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.supportv7.media;
+
+import android.support.v7.app.ActionBarActivity;
+
+/**
+ * This activity is a dummy settings activity for the
+ * {@link SampleMediaRouteProvider}.
+ */
+public class SampleMediaRouteSettingsActivity extends ActionBarActivity {
+
+}
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouterActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouterActivity.java
index dfa1416..ba19499 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouterActivity.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/media/SampleMediaRouterActivity.java
@@ -20,6 +20,7 @@
 
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.app.PendingIntent;
@@ -34,9 +35,11 @@
 import android.os.Bundle;
 import android.os.SystemClock;
 import android.support.v4.app.FragmentManager;
+import android.support.v4.media.session.MediaSessionCompat;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBarActivity;
 import android.support.v7.app.MediaRouteActionProvider;
+import android.support.v7.app.MediaRouteButton;
 import android.support.v7.app.MediaRouteControllerDialog;
 import android.support.v7.app.MediaRouteControllerDialogFragment;
 import android.support.v7.app.MediaRouteDiscoveryFragment;
@@ -66,6 +69,7 @@
 import android.widget.TabHost.OnTabChangeListener;
 import android.widget.SeekBar;
 import android.widget.SeekBar.OnSeekBarChangeListener;
+
 import java.io.File;
 
 /**
@@ -93,7 +97,6 @@
     private SeekBar mSeekBar;
     private boolean mNeedResume;
     private boolean mSeeking;
-    private SampleMediaRouteControllerDialog mControllerDialog;
 
     private final Handler mHandler = new Handler();
     private final Runnable mUpdateSeekRunnable = new Runnable() {
@@ -130,19 +133,18 @@
         public void onRouteSelected(MediaRouter router, RouteInfo route) {
             Log.d(TAG, "onRouteSelected: route=" + route);
 
-            mPlayer = Player.create(SampleMediaRouterActivity.this, route);
+            mPlayer = Player.create(SampleMediaRouterActivity.this, route, mMediaSession);
             mPlayer.updatePresentation();
             mSessionManager.setPlayer(mPlayer);
             mSessionManager.unsuspend();
 
-            registerRCC();
             updateUi();
         }
 
         @Override
         public void onRouteUnselected(MediaRouter router, RouteInfo route) {
             Log.d(TAG, "onRouteUnselected: route=" + route);
-            unregisterRCC();
+            mMediaSession.setActive(false);
 
             PlaylistItem item = getCheckedPlaylistItem();
             if (item != null) {
@@ -152,7 +154,6 @@
             }
             mPlayer.updatePresentation();
             mPlayer.release();
-            mControllerDialog = null;
         }
 
         @Override
@@ -183,7 +184,7 @@
         }
     };
 
-    private RemoteControlClient mRemoteControlClient;
+    private MediaSessionCompat mMediaSession;
     private ComponentName mEventReceiver;
     private AudioManager mAudioManager;
     private PendingIntent mMediaPendingIntent;
@@ -367,11 +368,13 @@
         mMediaPendingIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, 0);
 
         // Create and register the remote control client
-        registerRCC();
+        createMediaSession();
+        mMediaRouter.setMediaSessionCompat(mMediaSession);
 
         // Set up playback manager and player
         mPlayer = Player.create(SampleMediaRouterActivity.this,
-                mMediaRouter.getSelectedRoute());
+                mMediaRouter.getSelectedRoute(), mMediaSession);
+
         mSessionManager.setPlayer(mPlayer);
         mSessionManager.setCallback(new SessionManager.Callback() {
             @Override
@@ -387,40 +390,42 @@
         updateUi();
     }
 
-    private void registerRCC() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-            // Create the RCC and register with AudioManager and MediaRouter
-            mAudioManager.requestAudioFocus(mAfChangeListener,
-                    AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
-            mAudioManager.registerMediaButtonEventReceiver(mEventReceiver);
-            mRemoteControlClient = new RemoteControlClient(mMediaPendingIntent);
-            mAudioManager.registerRemoteControlClient(mRemoteControlClient);
-            mMediaRouter.addRemoteControlClient(mRemoteControlClient);
-            SampleMediaButtonReceiver.setActivity(SampleMediaRouterActivity.this);
-            mRemoteControlClient.setTransportControlFlags(
-                    RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);
-            mRemoteControlClient.setPlaybackState(
-                    RemoteControlClient.PLAYSTATE_PLAYING);
-        }
-    }
+    private void createMediaSession() {
+        // Create the MediaSession
+        mMediaSession = new MediaSessionCompat(this, "SampleMediaRouter", mEventReceiver,
+                mMediaPendingIntent);
+        mMediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS
+                | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
+        mMediaSession.setCallback(new MediaSessionCompat.Callback() {
+            @Override
+            public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
+                if (mediaButtonEvent != null) {
+                    return handleMediaKey(
+                            (KeyEvent) mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT));
+                }
+                return super.onMediaButtonEvent(mediaButtonEvent);
+            }
 
-    private void unregisterRCC() {
-        // Unregister the RCC with AudioManager and MediaRouter
-        if (mRemoteControlClient != null) {
-            mRemoteControlClient.setTransportControlFlags(0);
-            mAudioManager.abandonAudioFocus(mAfChangeListener);
-            mAudioManager.unregisterMediaButtonEventReceiver(mEventReceiver);
-            mAudioManager.unregisterRemoteControlClient(mRemoteControlClient);
-            mMediaRouter.removeRemoteControlClient(mRemoteControlClient);
-            SampleMediaButtonReceiver.setActivity(null);
-            mRemoteControlClient = null;
-        }
+            @Override
+            public void onPlay() {
+                mSessionManager.resume();
+            }
+
+            @Override
+            public void onPause() {
+                mSessionManager.pause();
+            }
+        });
+
+        SampleMediaButtonReceiver.setActivity(SampleMediaRouterActivity.this);
     }
 
     public boolean handleMediaKey(KeyEvent event) {
-        if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
+        if (event != null && event.getAction() == KeyEvent.ACTION_DOWN
+                && event.getRepeatCount() == 0) {
             switch (event.getKeyCode()) {
                 case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+                case KeyEvent.KEYCODE_HEADSETHOOK:
                 {
                     Log.d(TAG, "Received Play/Pause event from RemoteControlClient");
                     if (mSessionManager.isPaused()) {
@@ -497,11 +502,9 @@
 
     @Override
     public void onDestroy() {
-        // Unregister the remote control client
-        unregisterRCC();
-
         mSessionManager.stop();
         mPlayer.release();
+        mMediaSession.release();
         super.onDestroy();
     }
 
@@ -520,15 +523,7 @@
         mediaRouteActionProvider.setDialogFactory(new MediaRouteDialogFactory() {
             @Override
             public MediaRouteControllerDialogFragment onCreateControllerDialogFragment() {
-                return new MediaRouteControllerDialogFragment() {
-                    @Override
-                    public MediaRouteControllerDialog onCreateControllerDialog(
-                            Context context, Bundle savedInstanceState) {
-                        mControllerDialog = new SampleMediaRouteControllerDialog(
-                                context, mSessionManager, mPlayer);
-                        return mControllerDialog;
-                    }
-                };
+                return new ControllerDialogFragment(mPlayer);
             }
         });
 
@@ -564,8 +559,8 @@
         updatePlaylist();
         updateRouteDescription();
         updateButtons();
-        if (mControllerDialog != null) {
-            mControllerDialog.updateUi();
+        if (mPlayer != null) {
+            mPlayer.updateMetadata();
         }
     }
 
@@ -593,11 +588,6 @@
         // only enable seek bar when duration is known
         PlaylistItem item = getCheckedPlaylistItem();
         mSeekBar.setEnabled(item != null && item.getDuration() > 0);
-        if (mRemoteControlClient != null) {
-            mRemoteControlClient.setPlaybackState(mSessionManager.isPaused() ?
-                    RemoteControlClient.PLAYSTATE_PAUSED :
-                        RemoteControlClient.PLAYSTATE_PLAYING);
-        }
     }
 
     private PlaylistItem getCheckedPlaylistItem() {
@@ -745,4 +735,35 @@
      */
     public static class LightWithDarkActionBar extends SampleMediaRouterActivity {
     }
+
+    public static class ControllerDialogFragment extends MediaRouteControllerDialogFragment {
+        private MediaRouteControllerDialog mControllerDialog;
+        private Player mPlayer;
+
+        public ControllerDialogFragment() {
+            super();
+        }
+
+        public ControllerDialogFragment(Player player) {
+            mPlayer = player;
+        }
+
+        @Override
+        public MediaRouteControllerDialog onCreateControllerDialog(
+                Context context, Bundle savedInstanceState) {
+            mControllerDialog = super.onCreateControllerDialog(context,
+                    savedInstanceState);
+            mControllerDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+                @Override
+                public void onDismiss(DialogInterface dialog) {
+                    mControllerDialog = null;
+                }
+            });
+            return mControllerDialog;
+        }
+
+        public void setPlayer(Player player) {
+            mPlayer = player;
+        }
+    }
 }
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/view/CardViewActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/view/CardViewActivity.java
index ba4f0cb..ca0c08a 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/view/CardViewActivity.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/view/CardViewActivity.java
@@ -16,6 +16,8 @@
 package com.example.android.supportv7.view;
 
 import android.app.Activity;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.v4.view.ViewCompat;
@@ -25,8 +27,11 @@
 import android.widget.RadioGroup;
 import android.widget.SeekBar;
 import android.widget.TextView;
+
 import com.example.android.supportv7.R;
 
+import java.lang.reflect.Field;
+
 public class CardViewActivity extends Activity {
 
     CardView mCardView;
@@ -84,7 +89,7 @@
             lp = setViewBounds(mInfoText);
         }
         mInfoText.setText("radius: " + mCornerRadiusSeekBar.getProgress()
-                +", alpha: " + mAlphaSeekBar.getProgress()
+                + ", alpha: " + mAlphaSeekBar.getProgress()
                 + "\n w: " + lp.width + "\nh: " + lp.height
                 + "\nelevation: " + mCardView.getCardElevation() + " of "
                 + mCardView.getMaxCardElevation());
@@ -143,15 +148,42 @@
             }
         });
 
-        update();
         new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
                 View content = findViewById(android.R.id.content);
+                mWidthSeekBar.setProgress(mCardView.getWidth());
+                mHeightSeekBar.setProgress(mCardView.getHeight());
                 mWidthSeekBar.setMax(content.getWidth());
                 mHeightSeekBar.setMax(content.getHeight());
+                update();
             }
         }, 100);
+
+        ((RadioGroup) findViewById(R.id.select_bg_color_radio))
+                .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
+                    @Override
+                    public void onCheckedChanged(RadioGroup group, int checkedId) {
+                        mCardView.setCardBackgroundColor(
+                                getResources().getColor(getColorId(checkedId)));
+                    }
+                });
     }
 
+    private int getColorId(int id) {
+        switch (id) {
+            case R.id.yellow:
+                return R.color.card_yellow;
+            case R.id.aquatic:
+                return R.color.card_aquatic;
+            case R.id.classic:
+                return R.color.card_classic;
+            case R.id.sunbrite:
+                return R.color.card_sunbrite;
+            case R.id.tropical:
+                return R.color.card_tropical;
+            default:
+                return R.color.cardview_light_background;
+        }
+    }
 }
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java
index 50fe1e1..4c56933 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java
@@ -124,8 +124,12 @@
     public void itemClicked(View view) {
         ViewGroup parent = (ViewGroup) view;
         MyViewHolder holder = (MyViewHolder) mRecyclerView.getChildViewHolder(parent);
+        final int position = holder.getAdapterPosition();
+        if (position == RecyclerView.NO_POSITION) {
+            return;
+        }
         mAdapter.toggleExpanded(holder);
-        mAdapter.notifyItemChanged(holder.getPosition());
+        mAdapter.notifyItemChanged(position);
     }
 
     public void deleteItem(View view) {
@@ -240,7 +244,7 @@
                 if (lastVisibleView != null) {
                     RecyclerView.LayoutParams lastParams =
                             (RecyclerView.LayoutParams) lastVisibleView.getLayoutParams();
-                    int lastPosition = lastParams.getViewPosition();
+                    int lastPosition = lastParams.getViewLayoutPosition();
                     final List<RecyclerView.ViewHolder> previousViews = recycler.getScrapList();
                     count = previousViews.size();
                     for (int i = 0; i < count; ++i) {
@@ -250,7 +254,7 @@
                         if (params.isItemRemoved()) {
                             continue;
                         }
-                        int position = params.getViewPosition();
+                        int position = params.getViewLayoutPosition();
                         int newTop;
                         if (position < mFirstPosition) {
                             newTop = view.getHeight() * (position - mFirstPosition);
@@ -480,7 +484,7 @@
         }
 
         public void selectItem(MyViewHolder holder, boolean selected) {
-            mSelected.put((String) holder.textView.getText(), selected);
+            mSelected.put((String) holder.textView.getText().toString(), selected);
         }
 
         public void toggleExpanded(MyViewHolder holder) {
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/BaseLayoutManagerActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/BaseLayoutManagerActivity.java
index 0a6ac6d..4bb64f4 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/BaseLayoutManagerActivity.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/BaseLayoutManagerActivity.java
@@ -84,11 +84,10 @@
                 vh.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
-                        final int pos = vh.getPosition();
-                        if (pos + 1 < getItemCount()) {
+                        final int pos = vh.getAdapterPosition();
+                        if (pos != RecyclerView.NO_POSITION && pos + 1 < getItemCount()) {
                             swap(pos, pos + 1);
                         }
-                        notifyItemChanged(pos);
                     }
                 });
                 return vh;
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/GridLayoutManagerActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/GridLayoutManagerActivity.java
index 00cfbf8..ef25c0b 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/GridLayoutManagerActivity.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/GridLayoutManagerActivity.java
@@ -119,11 +119,13 @@
                 vh.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
-                        final int pos = vh.getPosition();
+                        final int pos = vh.getAdapterPosition();
+                        if (pos == RecyclerView.NO_POSITION) {
+                            return;
+                        }
                         if (pos + 1 < getItemCount()) {
                             swap(pos, pos + 1);
                         }
-                        notifyItemChanged(pos);
                     }
                 });
                 return vh;
diff --git a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java
index 747992b..38b50bd 100644
--- a/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java
+++ b/sdk/extras/android/support/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java
@@ -56,7 +56,10 @@
                 vh.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
-                        final int pos = vh.getPosition();
+                        final int pos = vh.getAdapterPosition();
+                        if (pos == RecyclerView.NO_POSITION) {
+                            return;
+                        }
                         if (pos + 1 < getItemCount()) {
                             swap(pos, pos + 1);
                         }
diff --git a/sdk/extras/android/support/source.properties b/sdk/extras/android/support/source.properties
index 86d4070..808ae1d 100644
--- a/sdk/extras/android/support/source.properties
+++ b/sdk/extras/android/support/source.properties
@@ -1,5 +1,5 @@
 ### Android Tool: Source of this archive.
-#Tue Mar 10 13:28:52 PDT 2015
+#Thu Mar 19 19:14:25 PDT 2015
 Extra.NameDisplay=Android Support Library
 Extra.OldPaths=compatibility
 Extra.Path=support
@@ -7,5 +7,5 @@
 Extra.VendorId=android
 Pkg.License=To get started with the Android SDK, you must agree to the following terms and conditions.\n\nThis is the Android SDK License Agreement (the "License Agreement").\n\n1. Introduction\n\n1.1 The Android SDK (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and SDK library files and tools , if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.\n\n1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL\: http\://source.android.com/, as updated from time to time.\n\n1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.\n\n2. Accepting the License Agreement\n\n2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.\n\n2.2 By clicking to accept and/or using the SDK, you hereby agree to the terms of the License Agreement.\n\n2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.\n\n2.4 If you will use the SDK internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.\n\n3. SDK License from Google\n\n3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the SDK, personally or internally within your company or organization, solely to develop and distribute applications to run on the Android platform.\n\n3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.\n\n3.3 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not\: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.\n\n3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.\n\n3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.\n\n3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.\n\n3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.\n\n3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.\n\n4. Use of the SDK by You\n\n4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.\n\n4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).\n\n4.3 You agree that if you use the SDK to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.\n\n4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.\n\n4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.\n\n4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.\n\n5. Your Developer Credentials\n\n5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.\n\n6. Privacy and Information\n\n6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.\n\n6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy located at http\://www.google.com/policies/privacy/.\n\n7. Third Party Applications\n\n7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.\n\n7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.\n\n7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.\n\n8. Using Google APIs\n\n8.1 Google APIs\n\n8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.\n\n8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.\n\n9. Terminating the License Agreement\n\n9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.\n\n9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.\n\n9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.\n\n9.4 The License Agreement will automatically terminate without notice or other action when Google ceases to provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service.\n\n9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the SDK, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.\n\n10. DISCLAIMERS\n\n10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.\n\n10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE SDK MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.\n\n10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n\n11. LIMITATION OF LIABILITY\n\n11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.\n\n12. Indemnification\n\n12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys\u2019 fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.\n\n13. Changes to the License Agreement\n\n13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.\n\n14. General Legal Terms\n\n14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.\n\n14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.\n\n14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.\n\n14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.\n\n14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.\n\n14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.\n\n14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.\n\nJune 2014.\n    
 Pkg.LicenseRef=android-sdk-license
-Pkg.Revision=21.0.3
-Pkg.SourceUrl=https\://dl-ssl.google.com/android/repository/addon.xml
+Pkg.Revision=22.0.0
+Pkg.SourceUrl=https\://dl.google.com/android/repository/addon.xml
diff --git a/sdk/extras/android/support/v13/android-support-v13.jar b/sdk/extras/android/support/v13/android-support-v13.jar
index c9c1756..eb5eca3 100644
--- a/sdk/extras/android/support/v13/android-support-v13.jar
+++ b/sdk/extras/android/support/v13/android-support-v13.jar
Binary files differ
diff --git a/sdk/extras/android/support/v13/src/build.gradle b/sdk/extras/android/support/v13/src/build.gradle
index 851f6ca..d0eb43e 100644
--- a/sdk/extras/android/support/v13/src/build.gradle
+++ b/sdk/extras/android/support/v13/src/build.gradle
@@ -52,7 +52,6 @@
 
 android {
     compileSdkVersion 13
-    buildToolsVersion "19.0.1"
 
     defaultConfig {
         minSdkVersion 13
@@ -81,7 +80,7 @@
 
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -92,9 +91,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -104,12 +103,12 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     project.ext.allSS.each { ss ->
-        javadocTask.source ss.allJava
-        sourcesJarTask.from ss.allSource
+        javadocTask.source ss.java
+        sourcesJarTask.from ss.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/sdk/extras/android/support/v17/leanback/libs/android-support-v17-leanback.jar b/sdk/extras/android/support/v17/leanback/libs/android-support-v17-leanback.jar
index 20d6b19..67b5491 100644
--- a/sdk/extras/android/support/v17/leanback/libs/android-support-v17-leanback.jar
+++ b/sdk/extras/android/support/v17/leanback/libs/android-support-v17-leanback.jar
Binary files differ
diff --git a/sdk/extras/android/support/v17/leanback/res/animator/lb_decelerator_4.xml b/sdk/extras/android/support/v17/leanback/res/animator/lb_decelerator_4.xml
new file mode 100644
index 0000000..6273eef
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/animator/lb_decelerator_4.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<decelerateInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:factor="4.0"/>
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_browse_title.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_browse_title.xml
index 75068d8..e14350a 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_browse_title.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_browse_title.xml
@@ -19,8 +19,8 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:paddingTop="?attr/browsePaddingTop"
-    android:paddingRight="?attr/browsePaddingRight"
-    android:paddingLeft="?attr/browsePaddingLeft"
+    android:paddingEnd="?attr/browsePaddingEnd"
+    android:paddingStart="?attr/browsePaddingStart"
     android:paddingBottom="?attr/browsePaddingTop"
     style="?attr/browseTitleViewStyle" />
 
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_control_button_primary.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_control_button_primary.xml
index 86e3e0d..af94487 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_control_button_primary.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_control_button_primary.xml
@@ -33,4 +33,11 @@
         android:layout_height="@dimen/lb_control_icon_height"
         android:layout_gravity="center" />
 
+    <TextView
+        android:id="@+id/label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        style="?attr/playbackControlButtonLabelStyle" />
+
 </FrameLayout>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_details_description.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_details_description.xml
index 798504f..005cae4 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_details_description.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_details_description.xml
@@ -23,7 +23,7 @@
     >
 
     <!-- Top margins set programatically -->
-    <TextView
+    <android.support.v17.leanback.widget.ResizingTextView
         android:id="@+id/lb_details_description_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_details_overview.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_details_overview.xml
index 7b94d5d..dd73e76 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_details_overview.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_details_overview.xml
@@ -19,8 +19,8 @@
     xmlns:lb="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingLeft="@dimen/lb_details_overview_margin_left"
-    android:paddingRight="@dimen/lb_details_overview_margin_right"
+    android:paddingStart="@dimen/lb_details_overview_margin_start"
+    android:paddingEnd="@dimen/lb_details_overview_margin_end"
     android:paddingBottom="@dimen/lb_details_overview_margin_bottom"
     android:clipToPadding="false"
     >
@@ -63,8 +63,8 @@
             android:layout_height="0dp"
             android:layout_weight="1"
             android:gravity="top"
-            android:layout_marginLeft="@dimen/lb_details_overview_description_margin_left"
-            android:layout_marginRight="@dimen/lb_details_overview_description_margin_right"
+            android:layout_marginStart="@dimen/lb_details_overview_description_margin_start"
+            android:layout_marginEnd="@dimen/lb_details_overview_description_margin_end"
             android:paddingTop="@dimen/lb_details_overview_description_margin_top"
             android:clipToPadding="false"
             android:clipChildren="false"
@@ -79,8 +79,8 @@
             android:clipToPadding="false"
             android:focusable="true"
             android:focusableInTouchMode="true"
-            android:paddingLeft="@dimen/lb_details_overview_description_margin_left"
-            android:paddingRight="@dimen/lb_details_overview_description_margin_right"
+            android:paddingStart="@dimen/lb_details_overview_description_margin_start"
+            android:paddingEnd="@dimen/lb_details_overview_description_margin_end"
             lb:horizontalMargin="@dimen/lb_details_overview_action_items_margin"
             lb:rowHeight="@dimen/lb_details_overview_actions_height" />
 
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_headers_fragment.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_headers_fragment.xml
index a621c0b..035b116 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_headers_fragment.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_headers_fragment.xml
@@ -16,9 +16,11 @@
 -->
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/browse_headers_root"
+    android:transitionGroup="true"
     android:layout_width="@dimen/lb_browse_headers_width"
     android:layout_height="match_parent"
-    android:paddingRight="@dimen/lb_browse_header_padding_right"
+    android:paddingEnd="@dimen/lb_browse_header_padding_end"
     android:elevation="@dimen/lb_browse_headers_z"
     >
     <android.support.v17.leanback.widget.VerticalGridView
@@ -28,7 +30,7 @@
         style="?attr/headersVerticalGridStyle"/>
     <View
         android:id="@+id/fade_out_edge"
-        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true"
         android:layout_width="@dimen/lb_browse_header_fading_length"
         android:layout_height="match_parent"
         android:background="@drawable/lb_headers_right_fading" >
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_image_card_view.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_image_card_view.xml
index f74085c..38cfd4bd 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_image_card_view.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_image_card_view.xml
@@ -43,7 +43,7 @@
                 android:layout_height="wrap_content"
                 android:layout_alignParentStart="true"
                 android:layout_marginTop="@dimen/lb_basic_card_info_text_margin"
-                android:layout_marginLeft="@dimen/lb_basic_card_info_text_margin"
+                android:layout_marginStart="@dimen/lb_basic_card_info_text_margin"
                 android:maxLines="1"
                 android:fontFamily="sans-serif-condensed"
                 android:textColor="@color/lb_basic_card_title_text_color"
@@ -53,9 +53,9 @@
                 android:id="@+id/content_text"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
                 android:layout_alignParentBottom="true"
-                android:layout_marginLeft="@dimen/lb_basic_card_info_text_margin"
+                android:layout_marginStart="@dimen/lb_basic_card_info_text_margin"
                 android:layout_marginBottom="@dimen/lb_basic_card_info_text_margin"
                 android:maxLines="1"
                 android:fontFamily="sans-serif-condensed"
@@ -67,7 +67,7 @@
                 android:layout_width="@dimen/lb_basic_card_info_badge_size"
                 android:layout_height="@dimen/lb_basic_card_info_badge_size"
                 android:layout_alignParentBottom="true"
-                android:layout_alignParentRight="true"
+                android:layout_alignParentEnd="true"
                 android:scaleType="fitCenter"
                 android:visibility="gone"
                 android:contentDescription="@null" />
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls.xml
index e7ed643..b366215 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls.xml
@@ -27,6 +27,7 @@
         android:layout_height="4dp"
         android:maxHeight="4dp"
         android:minHeight="4dp"
+        android:layoutDirection="ltr"
         android:progressDrawable="@drawable/lb_playback_progress_bar" />
 
     <FrameLayout
@@ -39,19 +40,20 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal"
+            android:layoutDirection="ltr"
             android:orientation="horizontal" />
 
         <FrameLayout
             android:id="@+id/more_actions_dock"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="right" />
+            android:layout_gravity="end" />
 
         <TextView
             android:id="@+id/current_time"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="top|start"
+            android:layout_gravity="top|left"
             android:layout_marginStart="@dimen/lb_playback_current_time_margin_start"
             android:paddingTop="@dimen/lb_playback_time_padding_top"
             style="?attr/playbackControlsTimeStyle" />
@@ -60,7 +62,7 @@
             android:id="@+id/total_time"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="top|end"
+            android:layout_gravity="top|right"
             android:layout_marginEnd="@dimen/lb_playback_total_time_margin_end"
             android:paddingTop="@dimen/lb_playback_time_padding_top"
             style="?attr/playbackControlsTimeStyle" />
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls_row.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls_row.xml
index 2875b51..395dfd1 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls_row.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_playback_controls_row.xml
@@ -16,7 +16,7 @@
 -->
 
 <!-- Note: clipChildren/clipToPadding false are needed to apply shadows to child
-     views with no padding of their own. -->
+     views with no padding of their own. Also to allow for negative marge on description. -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
@@ -24,8 +24,8 @@
     android:orientation="vertical"
     android:clipChildren="false"
     android:clipToPadding="false"
-    android:paddingLeft="@dimen/lb_playback_controls_margin_left"
-    android:paddingRight="@dimen/lb_playback_controls_margin_right" >
+    android:paddingStart="@dimen/lb_playback_controls_margin_start"
+    android:paddingEnd="@dimen/lb_playback_controls_margin_end" >
 
     <LinearLayout
         android:id="@+id/controls_card"
@@ -56,7 +56,9 @@
                 android:layout_height="0dp"
                 android:layout_marginEnd="@dimen/lb_playback_description_margin_end"
                 android:layout_marginStart="@dimen/lb_playback_description_margin_start"
-                android:layout_marginTop="@dimen/lb_playback_description_margin_top"
+                android:paddingTop="@dimen/lb_playback_description_margin_top"
+                android:clipToPadding="false"
+                android:clipChildren="false"
                 android:layout_weight="1"
                 android:gravity="top" />
 
@@ -71,6 +73,7 @@
                 android:id="@+id/controls_dock"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:minHeight="@dimen/lb_control_button_height"
                 android:layout_marginEnd="@dimen/lb_playback_description_margin_end"
                 android:layout_marginStart="@dimen/lb_playback_description_margin_start" />
         </LinearLayout>
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_row_container.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_row_container.xml
index 1ed9f83..69fb0e1 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_row_container.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_row_container.xml
@@ -20,7 +20,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
-    android:paddingLeft="?attr/browsePaddingLeft"
+    android:paddingStart="?attr/browsePaddingStart"
     android:clipToPadding="false">
 </android.support.v17.leanback.widget.NonOverlappingLinearLayout>
 </merge>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_search_bar.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_search_bar.xml
index 4dff716..6123ea7 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_search_bar.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_search_bar.xml
@@ -20,7 +20,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"
-            android:layout_marginLeft="@dimen/lb_search_bar_speech_orb_margin_left"
+            android:layout_marginStart="@dimen/lb_search_bar_speech_orb_margin_start"
             android:focusable="true"
             android:focusableInTouchMode="true"
             >
@@ -31,9 +31,9 @@
             android:id="@+id/lb_search_bar_items"
             android:layout_width="@dimen/lb_search_bar_items_width"
             android:layout_height="@dimen/lb_search_bar_items_height"
-            android:layout_toRightOf="@+id/lb_search_bar_speech_orb"
+            android:layout_toEndOf="@+id/lb_search_bar_speech_orb"
             android:layout_centerVertical="true"
-            android:layout_marginLeft="@dimen/lb_search_bar_items_margin_left"
+            android:layout_marginStart="@dimen/lb_search_bar_items_margin_start"
             android:layout_marginTop="@dimen/lb_search_bar_inner_margin_top"
             android:layout_marginBottom="@dimen/lb_search_bar_inner_margin_bottom"
             android:background="@drawable/lb_in_app_search_bg"
@@ -43,9 +43,9 @@
                 android:id="@+id/lb_search_bar_badge"
                 android:layout_width="@dimen/lb_search_bar_icon_width"
                 android:layout_height="@dimen/lb_search_bar_icon_height"
-                android:layout_gravity="center_vertical|left"
+                android:layout_gravity="center_vertical|start"
                 android:layout_centerVertical="true"
-                android:layout_marginLeft="@dimen/lb_search_bar_icon_margin_left"
+                android:layout_marginStart="@dimen/lb_search_bar_icon_margin_start"
                 android:src="@null"
                 android:visibility="gone"
                 style="?attr/browseTitleIconStyle"/>
@@ -54,11 +54,11 @@
                     android:id="@+id/lb_search_text_editor"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical|right"
-                    android:layout_marginLeft="@dimen/lb_search_bar_edit_text_margin_left"
+                    android:layout_gravity="center_vertical|end"
+                    android:layout_marginStart="@dimen/lb_search_bar_edit_text_margin_start"
                     android:layout_centerVertical="true"
                     android:cursorVisible="true"
-                    android:layout_toRightOf="@+id/lb_search_bar_badge"
+                    android:layout_toEndOf="@+id/lb_search_bar_badge"
                     android:editable="true"
                     android:background="@null"
                     android:fontFamily="sans-serif"
diff --git a/sdk/extras/android/support/v17/leanback/res/layout/lb_title_view.xml b/sdk/extras/android/support/v17/leanback/res/layout/lb_title_view.xml
index 590a683..e82621e 100644
--- a/sdk/extras/android/support/v17/leanback/res/layout/lb_title_view.xml
+++ b/sdk/extras/android/support/v17/leanback/res/layout/lb_title_view.xml
@@ -18,9 +18,11 @@
 
     <ImageView
         android:id="@+id/browse_badge"
-        android:layout_width="@dimen/lb_browse_title_text_width"
-        android:layout_height="@dimen/lb_browse_title_height"
-        android:layout_gravity="center_vertical|right"
+        android:layout_width="wrap_content"
+        android:maxWidth="@dimen/lb_browse_title_icon_max_width"
+        android:adjustViewBounds="true"
+        android:layout_height="@dimen/lb_browse_title_icon_height"
+        android:layout_gravity="center_vertical|end"
         android:src="@null"
         android:visibility="gone"
         style="?attr/browseTitleIconStyle"/>
@@ -29,14 +31,15 @@
         android:id="@+id/browse_title"
         android:layout_width="@dimen/lb_browse_title_text_width"
         android:layout_height="@dimen/lb_browse_title_height"
-        android:layout_gravity="center_vertical|right"
+        android:layout_gravity="center_vertical|end"
         style="?attr/browseTitleTextStyle"/>
 
     <android.support.v17.leanback.widget.SearchOrbView
         android:id="@+id/browse_orb"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
-        android:layout_gravity="center_vertical|left"
+        android:transitionGroup="true"
+        android:layout_gravity="center_vertical|start"
         android:visibility="invisible" />
 
 </merge>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v19/lb_browse_headers_in.xml b/sdk/extras/android/support/v17/leanback/res/transition-v19/lb_browse_headers_in.xml
new file mode 100644
index 0000000..66e7750
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v19/lb_browse_headers_in.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="@integer/lb_browse_headers_transition_duration" >
+    <changeBounds android:startDelay="@integer/lb_browse_headers_transition_delay" />
+    <transition class="android.support.v17.leanback.Scale"
+        android:startDelay="@integer/lb_browse_headers_transition_delay" >
+        <targets>
+            <target android:targetId="@id/container_list" />
+        </targets>
+    </transition>
+    <fade android:fadingMode="fade_in"
+        android:startDelay="@integer/lb_browse_headers_transition_delay" />
+    <fade android:fadingMode="fade_out" />
+</transitionSet>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v19/lb_browse_headers_out.xml b/sdk/extras/android/support/v17/leanback/res/transition-v19/lb_browse_headers_out.xml
new file mode 100644
index 0000000..a12c9b7
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v19/lb_browse_headers_out.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="@integer/lb_browse_headers_transition_duration" >
+    <changeBounds />
+    <transition class="android.support.v17.leanback.Scale" >
+        <targets>
+            <target android:targetId="@id/container_list" />
+        </targets>
+    </transition>
+    <fade android:fadingMode="fade_in"
+        android:startDelay="@integer/lb_browse_headers_transition_delay" />
+    <fade android:fadingMode="fade_out" />
+</transitionSet>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_enter_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_enter_transition.xml
new file mode 100644
index 0000000..4ad9888
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_enter_transition.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <fade
+      android:interpolator="@android:interpolator/linear_out_slow_in"
+      android:duration="150"/>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_entrance_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_entrance_transition.xml
new file mode 100644
index 0000000..e26204b
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_entrance_transition.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <changeBounds
+      android:duration="350"
+      android:interpolator="@android:interpolator/linear_out_slow_in">
+  </changeBounds>
+  <slide
+      android:duration="350"
+      android:interpolator="@android:interpolator/linear_out_slow_in"
+      android:slideEdge="right">
+  </slide>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_headers_in.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_headers_in.xml
new file mode 100644
index 0000000..ee4eaeb
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_headers_in.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="@integer/lb_browse_headers_transition_duration" >
+    <changeBounds android:startDelay="@integer/lb_browse_headers_transition_delay"
+        android:interpolator="@android:interpolator/fast_out_linear_in" />
+    <changeTransform
+        android:startDelay="@integer/lb_browse_headers_transition_delay"
+        android:interpolator="@android:interpolator/fast_out_linear_in" >
+        <targets>
+            <target android:targetId="@id/container_list" />
+        </targets>
+    </changeTransform>
+    <fade android:transitionVisibilityMode="mode_in"
+        android:startDelay="@integer/lb_browse_headers_transition_delay"
+        android:interpolator="@android:interpolator/fast_out_linear_in" />
+    <fade android:transitionVisibilityMode="mode_out"
+        android:interpolator="@android:interpolator/fast_out_linear_in" />
+</transitionSet>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_headers_out.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_headers_out.xml
new file mode 100644
index 0000000..667b7ce
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_headers_out.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="@integer/lb_browse_headers_transition_duration" >
+    <changeBounds android:interpolator="@android:interpolator/fast_out_linear_in" />
+    <changeTransform android:interpolator="@android:interpolator/fast_out_linear_in" >
+        <targets>
+            <target android:targetId="@id/container_list" />
+        </targets>
+    </changeTransform>
+    <fade android:transitionVisibilityMode="mode_in"
+        android:startDelay="@integer/lb_browse_headers_transition_delay"
+        android:interpolator="@android:interpolator/fast_out_linear_in" />
+    <fade android:transitionVisibilityMode="mode_out"
+        android:interpolator="@android:interpolator/fast_out_linear_in"/>
+</transitionSet>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_return_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_return_transition.xml
new file mode 100644
index 0000000..ee88fff
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_browse_return_transition.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <slide
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350"
+      android:slideEdge="left">
+      <targets>
+          <target android:targetId="@id/browse_headers_root" />
+          <target android:targetId="@id/browse_orb" />
+      </targets>
+  </slide>
+  <slide
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350"
+      android:slideEdge="right">
+      <targets>
+          <target android:excludeId="@+id/browse_headers_root" />
+          <target android:excludeId="@+id/browse_orb" />
+      </targets>
+  </slide>
+  <fade
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350">
+      <targets>
+          <target android:excludeId="@+id/browse_headers_root" />
+      </targets>
+  </fade>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_details_enter_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_details_enter_transition.xml
new file mode 100644
index 0000000..240d4bc
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_details_enter_transition.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <transition class="android.support.v17.leanback.transition.SlideNoPropagation"
+      android:duration="500"
+      android:interpolator="@android:interpolator/linear_out_slow_in"
+      android:slideEdge="bottom">
+  </transition>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_details_return_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_details_return_transition.xml
new file mode 100644
index 0000000..f555533
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_details_return_transition.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <transition class="android.support.v17.leanback.transition.SlideNoPropagation"
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350"
+      android:slideEdge="bottom">
+  </transition>
+  <fade
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350">
+  </fade>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_shared_element_enter_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_shared_element_enter_transition.xml
index 0ba4125..82913d9 100644
--- a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_shared_element_enter_transition.xml
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_shared_element_enter_transition.xml
@@ -24,8 +24,6 @@
   <changeBounds
       android:interpolator="@android:interpolator/linear_out_slow_in">
   </changeBounds>
-  <changeTransform
-      android:interpolator="@android:interpolator/linear_out_slow_in" />
   <changeImageTransform
       android:interpolator="@android:interpolator/linear_out_slow_in"/>
 </transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_title_in.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_title_in.xml
new file mode 100644
index 0000000..7b38785
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_title_in.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transition
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:lb="http://schemas.android.com/apk/res-auto"
+    class="android.support.v17.leanback.transition.SlideKitkat"
+    android:interpolator="@android:anim/decelerate_interpolator"
+    lb:lb_slideEdge="top" >
+    <targets>
+        <target android:targetId="@id/browse_title_group" />
+    </targets>
+</transition>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_title_out.xml b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_title_out.xml
new file mode 100644
index 0000000..50fb67e
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v21/lb_title_out.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transition
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:lb="http://schemas.android.com/apk/res-auto"
+    class="android.support.v17.leanback.transition.SlideKitkat"
+    android:interpolator="@animator/lb_decelerator_4"
+    lb:lb_slideEdge="top" >
+    <targets>
+        <target android:targetId="@id/browse_title_group" />
+    </targets>
+</transition>
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v22/lb_browse_entrance_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v22/lb_browse_entrance_transition.xml
new file mode 100644
index 0000000..2068c64
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v22/lb_browse_entrance_transition.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <changeBounds
+      android:duration="350"
+      android:interpolator="@android:interpolator/linear_out_slow_in">
+  </changeBounds>
+  <slide
+      android:duration="350"
+      android:interpolator="@android:interpolator/linear_out_slow_in"
+      android:slideEdge="end">
+  </slide>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/transition-v22/lb_browse_return_transition.xml b/sdk/extras/android/support/v17/leanback/res/transition-v22/lb_browse_return_transition.xml
new file mode 100644
index 0000000..62a273e
--- /dev/null
+++ b/sdk/extras/android/support/v17/leanback/res/transition-v22/lb_browse_return_transition.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" >
+  <slide
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350"
+      android:slideEdge="start">
+      <targets>
+          <target android:targetId="@id/browse_headers_root" />
+          <target android:targetId="@id/browse_orb" />
+      </targets>
+  </slide>
+  <slide
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350"
+      android:slideEdge="end">
+      <targets>
+          <target android:excludeId="@+id/browse_headers_root" />
+          <target android:excludeId="@+id/browse_orb" />
+      </targets>
+  </slide>
+  <fade
+      android:interpolator="@android:interpolator/fast_out_linear_in"
+      android:duration="350">
+      <targets>
+          <target android:excludeId="@+id/browse_headers_root" />
+      </targets>
+  </fade>
+</transitionSet>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v17/leanback/res/values-af/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-af/strings.xml
index 2d570ba..c7109bb 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-af/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-af/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Praat om te soek"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Deursoek <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Praat om <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> te deursoek"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Speel"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Laat wag"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Vinnig vorentoe"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Spoel vorentoe %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Spoel terug"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Spoel terug %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Slaan volgende oor"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Slaan vorige oor"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Nog handelinge"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-am/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-am/strings.xml
index 03a88ce..d5bf0f5 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-am/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-am/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"ለመፈለግ ይናገሩ"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> ፈልግ"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>ን ለመፈለግ ይናገሩ"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"አጫውት"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"ለአፍታ አቁም"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"በፍጥነት አሳልፍ"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"በ%1$dX ወደፊት አፍጥን"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"ወደኋላ አጠንጥን"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"በ%1$dX አጠንጥን"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"የሚቀጥለውን ዝለል"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"የቀደመውን ዝለል"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"ተጨማሪ እርምጃዎች"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ar/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ar/strings.xml
index 65d854d..31f4d1a 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ar/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ar/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"التحدث  للبحث"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"بحث في <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"تحدّث للبحث في <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"تشغيل"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"إيقاف مؤقت"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"تقديم سريع"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"‏التقديم السريع %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"إرجاع"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"‏الترجيع %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"تخطي التالي"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"تخطي السابق"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"مزيد من الإجراءات"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-bg/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-bg/strings.xml
index a662ac0..de0b6f8 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-bg/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-bg/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Говорете, за да търсите"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Търсете в/ъв <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Говорете, за да търсите в/ъв <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Пускане"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Поставяне на пауза"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Превъртане напред"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Превъртане напред със скорост %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Превъртане назад"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Превъртане назад със скорост %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Напред към следващия елемент"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Назад към предишния елемент"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Още действия"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-bn-rBD/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-bn-rBD/strings.xml
index b5d9c2e..4f0526c 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-bn-rBD/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-bn-rBD/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"অনুসন্ধান করতে বলুন"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> অনুসন্ধান করুন"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> অনুসন্ধান করতে বলুন"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"চালান"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"বিরাম দিন"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"দ্রুত ফরওয়ার্ড"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"দ্রুত ফরওয়ার্ড %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"পেছনের দিকে যান"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"পেছনের দিকে যান %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"সরাসরি পরেরটিতে চলে যান"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"সরাসরি আগেরটিতে চলে যান"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"আরো অ্যাকশন"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ca/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ca/strings.xml
index 1847873..187f5af 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ca/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ca/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Parla per fer una cerca."</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Cerca a <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>."</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Parla per cercar a <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>."</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reprodueix"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Posa en pausa"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avança ràpidament"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avança ràpidament %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Rebobina"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Rebobina %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Passa al següent"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Passa a l\'anterior"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Més accions"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-cs/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-cs/strings.xml
index f02aad2..1a60828 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-cs/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-cs/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Vyhledávejte hlasem"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Hledat <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Vyhledávejte v kategorii „<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>“ hlasem"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$d×"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$d×"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Přehrát"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pozastavit"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Přetočit vpřed"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Přetočit vpřed %1$d×"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Přetočit zpět"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Přetočit zpět %1$d×"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Přeskočit na další"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Přeskočit na předchozí"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Další akce"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-da/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-da/strings.xml
index 05a8306..e3e0f9f 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-da/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-da/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Tal for at søge"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Søg efter <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Tal for at søge efter <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Afspil"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Sæt på pause"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Spol frem"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Spol frem %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Spol tilbage"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Spol tilbage %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Spring til næste"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Spring til forrige"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Flere handlinger"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-de/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-de/strings.xml
index 52488cf..d729f7c 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-de/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-de/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Zum Suchen sprechen"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"In <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> suchen"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Zum Suchen in der Kategorie \"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>\" sprechen"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dx"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dx"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Wiedergabe"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausieren"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Vorspulen"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Vorspulen %1$dx"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Zurückspulen"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Zurückspulen %1$dx"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Nächsten Titel überspringen"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Vorherigen Titel überspringen"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Weitere Aktionen"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-el/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-el/strings.xml
index fde314c..9b93dcf 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-el/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-el/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Μιλήστε για να κάνετε αναζήτηση"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Αναζήτηση <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Μιλήστε για αναζήτηση <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Αναπαραγωγή"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Παύση"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Γρήγορη προώθηση"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Γρήγορη προώθηση %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Επαναφορά"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Επαναφορά %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Παράβλεψη επόμενου"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Παράβλεψη προηγούμενου"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Περισσότερες ενέργειες"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-en-rGB/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-en-rGB/strings.xml
index 8e071b3..ed22ccd 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-en-rGB/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-en-rGB/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Speak to search"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Search <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Speak to search <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Play"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pause"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Fast-Forward"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Fast Forward %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Rewind"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Rewind %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Skip Next"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Skip Previous"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"More Actions"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-en-rIN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-en-rIN/strings.xml
index 8e071b3..ed22ccd 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-en-rIN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-en-rIN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Speak to search"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Search <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Speak to search <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Play"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pause"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Fast-Forward"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Fast Forward %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Rewind"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Rewind %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Skip Next"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Skip Previous"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"More Actions"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-es-rUS/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-es-rUS/strings.xml
index 315ffa0..ab05f83 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-es-rUS/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-es-rUS/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Habla para buscar"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Buscar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Habla para buscar en <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>."</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reproducir"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausar"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avanzar"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avanzar rápidamente %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Retroceder"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Rebobinar %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Ir al siguiente"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Ir al anterior"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Más acciones"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-es/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-es/strings.xml
index 4d86408..0cff1c9 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-es/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-es/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Habla para buscar"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Buscar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Habla para buscar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reproducir"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausar"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avance rápido"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avance rápido %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Rebobinar"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Rebobinar %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Saltar siguiente"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Saltar anterior"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Más acciones"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-et-rEE/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-et-rEE/strings.xml
index 44ecbf5..32fff96 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-et-rEE/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-et-rEE/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Öelge otsimiseks"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Otsige teenusest <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Kõnelge teenusest <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> otsimiseks"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Esita"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Peata"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Keri edasi"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Edasikerimine %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Keri tagasi"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Tagasikerimine %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Liigu järgmise üksuse juurde"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Liigu eelmise üksuse juurde"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Veel toiminguid"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-eu-rES/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-eu-rES/strings.xml
index 408823b..d9f9bf7 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-eu-rES/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-eu-rES/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Esan bilatu nahi duzuna"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Bilatu <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Esan bilatu nahi duzuna, bilaketa hemen egiteko: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Erreproduzitu"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausatu"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Aurreratu"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Aurreratu %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Atzeratu"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Atzeratu %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Saltatu hurrengora"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Saltatu aurrekora"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Ekintza gehiago"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-fa/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-fa/strings.xml
index 24299df..bb615fc 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-fa/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-fa/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"برای جستجو صحبت کنید"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"جستجوی <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"جستجو با گفتن <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"پخش"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"توقف موقت"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"جلو بردن سریع"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"‏بازارسال سریع %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"عقب بردن"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"‏عقب بردن %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"رد شدن از بعدی"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"رد شدن از قبلی"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"عملکردهای بیشتر"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-fi/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-fi/strings.xml
index 43f02bc..9d38d3c 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-fi/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-fi/strings.xml
@@ -22,44 +22,28 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Tee haku puhumalla"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Haku: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Puhehaku: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
-    <!-- no translation found for lb_playback_controls_play (731953341987346903) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_pause (6189521112079849518) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_fast_forward (8569951318244687220) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_rewind (2227196334132350684) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_next (2946499493161095772) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_previous (2326801832933178348) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_more_actions (2330770008796987655) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up (6530420347129222601) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up_outline (1577637924003500946) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down (4498041193172964797) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down_outline (2936020280629424365) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_none (87476947476529036) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_all (6730354406289599000) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_one (3285202316452203619) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_enable (1099874107835264529) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_disable (8388150597335115226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_enable (202415780019335254) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_disable (8637371582779057866) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_enable (2429655367176440226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_disable (6133362019475930048) -->
-    <skip />
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
+    <string name="lb_playback_controls_play" msgid="731953341987346903">"Toista"</string>
+    <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Keskeytä"</string>
+    <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Kelaa eteenpäin"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Kelaa eteenpäin %1$dX"</string>
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Kelaa taakse"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Kelaa taaksepäin %1$dX"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Siirry seuraavaan"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Siirry edelliseen"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Lisää toimintoja"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"Poista Tykkään-valinta"</string>
+    <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"Valitse Tykkään"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"Poista En tykkää -valinta"</string>
+    <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"Valitse En tykkää"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"Ei uudelleentoistoa"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"Toista kaikki uudelleen"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"Toista yksi uudelleen"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"Ota satunnaistoisto käyttöön"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"Poista satunnaistoisto käytöstä"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"Ota korkea laatu käyttöön"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"Poista korkea laatu käytöstä"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"Ota tekstitys käyttöön"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"Poista tekstitys käytöstä"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-fr-rCA/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-fr-rCA/strings.xml
index bdae40e..bbd3eea 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-fr-rCA/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-fr-rCA/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Énoncez votre recherche"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Rechercher dans <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Énoncez votre recherche dans <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Lecture"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pause"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avance rapide"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avance rapide à %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Reculer"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Retour rapide à %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Passer à l\'élément suivant"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Passer à l\'élément précédent"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Autres actions"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-fr/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-fr/strings.xml
index f3e196b..e9c051c 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-fr/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-fr/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Énoncer la recherche"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Rechercher \"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>\""</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Énoncer la recherche \"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>\""</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Lecture"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Interrompre"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avance rapide"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avance rapide de %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Retour arrière"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Retour arrière de %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Ignorer l\'élément suivant"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Ignorer l\'élément précédent"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Autres actions"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-gl-rES/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-gl-rES/strings.xml
index 4720e2d..a3884d8 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-gl-rES/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-gl-rES/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Fala para efectuar a busca"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Busca <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Fala para buscar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reproducir"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausar"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avance rápido"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avance rápido %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Rebobinar"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Rebobinado %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Saltar seguinte"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Saltar anterior"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Máis accións"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-hi/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-hi/strings.xml
index 2d40dad..a926396 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-hi/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-hi/strings.xml
@@ -22,22 +22,26 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"खोजने के लिए बोलें"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> खोजें"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> खोजने के लिए बोलें"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"चलाएं"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"रोकें"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"फ़ास्ट फ़ॉरवर्ड"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"फ़ास्‍ट फ़ॉरवर्ड %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"रिवाइंड करें"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"रिवाइंड %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"अगले पर जाएं"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"पिछले पर जाएं"</string>
-    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"अधिक कार्रवाइयां"</string>
-    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"पसंदीदा का चयन न करें"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"अधिक विकल्प"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"पसंदीदा को ना चुनें"</string>
     <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"पसंदीदा चुनें"</string>
-    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"नापसंद का चयन न करें"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"नापसंद को ना चुनें"</string>
     <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"नापसंद चुनें"</string>
     <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"कुछ भी न दोहराएं"</string>
     <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"सभी को दोहराएं"</string>
     <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"एक दोहराएं"</string>
-    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"शफ़ल सक्षम करें"</string>
-    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"शफ़ल अक्षम करें"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"फेर-बदल सक्षम करें"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"फेर-बदल अक्षम करें"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"उच्च गुणवत्ता सक्षम करें"</string>
     <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"उच्च गुणवत्ता अक्षम करें"</string>
     <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"उपशीर्षक सक्षम करें"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-hr/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-hr/strings.xml
index 196d9bf..166369f 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-hr/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-hr/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Izgovorite upit za pretraživanje"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Tražite <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Izgovorite upit za pretraživanje <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reproduciraj"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pauziraj"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Brzo naprijed"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Brzo unaprijed %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Unatrag"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Unatrag %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Preskoči na sljedeće"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Preskoči na prethodno"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Više radnji"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-hu/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-hu/strings.xml
index 5a26a28..427f1cd 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-hu/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-hu/strings.xml
@@ -22,12 +22,16 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Beszéljen a keresés indításához"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Keresés itt: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Mondj valamit a kereséshez: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Lejátszás"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Szünet"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Gyors előretekerés"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Előretekerés %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Visszatekerés"</string>
-    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"A következő átugrása"</string>
-    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Az előző átugrása"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Visszatekerés %1$dX"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Ugrás a következőre"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Ugrás az előzőre"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"További műveletek"</string>
     <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"„Tetszik” értékelés visszavonása"</string>
     <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"„Tetszik” értékelés kiválasztása"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-hy-rAM/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-hy-rAM/strings.xml
index 3d1ad21..7e8112e 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-hy-rAM/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-hy-rAM/strings.xml
@@ -22,44 +22,28 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Խոսեք՝ որոնելու համար"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Որոնեք <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Խոսեք՝ <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> որոնելու համար"</string>
-    <!-- no translation found for lb_playback_controls_play (731953341987346903) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_pause (6189521112079849518) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_fast_forward (8569951318244687220) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_rewind (2227196334132350684) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_next (2946499493161095772) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_previous (2326801832933178348) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_more_actions (2330770008796987655) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up (6530420347129222601) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up_outline (1577637924003500946) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down (4498041193172964797) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down_outline (2936020280629424365) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_none (87476947476529036) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_all (6730354406289599000) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_one (3285202316452203619) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_enable (1099874107835264529) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_disable (8388150597335115226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_enable (202415780019335254) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_disable (8637371582779057866) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_enable (2429655367176440226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_disable (6133362019475930048) -->
-    <skip />
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
+    <string name="lb_playback_controls_play" msgid="731953341987346903">"Նվագարկել"</string>
+    <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Դադարեցնել"</string>
+    <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Արագ առաջ անցնել"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Առագ առաջանցում %1$dX"</string>
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Հետ փաթաթել"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Հետանցում %1$dX"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Անցնել հաջորդին"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Անցնել նախորդին"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Այլ գործողություններ"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"Ապանշել Հավանելու կոճակը"</string>
+    <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"Նշել Հավանելու կոճակը"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"Ապանշել Չհավանելու կոճակը"</string>
+    <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"Նշել Չհավանելու կոճակը"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"Չկրկնել"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"Կրկնել բոլորը"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"Կրկնել մեկը"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"Միացնել խառը նվագարկումը"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"Անջատել խառը նվագարկումը"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"Միացնել բարձր որակը"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"Անջատել բարձր որակը"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"Միացնել խորագրերը"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"Անջատել խորագրերը"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-in/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-in/strings.xml
index 243e354..2dca7d3 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-in/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-in/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Ucapkan untuk menelusuri"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Telusuri <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Ucapkan untuk menelusuri <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Putar"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Jeda"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Maju Cepat"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Maju %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Putar Ulang"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Mundur %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Lewati ke Berikutnya"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Lewati ke Sebelumnya"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Tindakan Lainnya"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-is-rIS/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-is-rIS/strings.xml
index 51ba56e..c84a4c6 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-is-rIS/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-is-rIS/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Talaðu til að leita"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Leita í <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Talaðu til að leita í <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Spila"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Hlé"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Spóla áfram"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Spóla áfram %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Spóla til baka"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Spóla til baka %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Fara í næsta"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Fara í fyrra"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Fleiri aðgerðir"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-it/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-it/strings.xml
index 03933ac..1b58e0c 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-it/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-it/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Parla per cercare"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Cerca in <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Parla per cercare in <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Riproduci"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Metti in pausa"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avanza velocemente"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avanti veloce: %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Riavvolgi"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Indietro: %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Salta successivo"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Salta precedente"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Altre azioni"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-iw/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-iw/strings.xml
index ca8b42b..f102498 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-iw/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-iw/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"דבר כדי לחפש"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"חפש את <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"דבר כדי לחפש את <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"‎%1$dX‎‎"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"‎%1$dX‎‎"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"הפעל"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"השהה"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"הרץ קדימה"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"‏העברה קדימה של %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"הרץ אחורה"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"‏העברה לאחור של %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"דלג אל הפריט הבא"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"דלג אל הפריט הקודם"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"עוד פעולות"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ja/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ja/strings.xml
index 7e63434..802631c 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ja/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ja/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"音声検索"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>を検索"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>を音声検索"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"再生"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"一時停止"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"早送り"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"早送り%1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"巻き戻し"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"巻き戻し%1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"次の曲にスキップ"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"前の曲にスキップ"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"その他の操作"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ka-rGE/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ka-rGE/strings.xml
index 273bd88..70aeada 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ka-rGE/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ka-rGE/strings.xml
@@ -22,44 +22,32 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"თქვით საძიებო ფრაზა"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>-ის ძიება"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"თქვით <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>-ის საძიებლად"</string>
-    <!-- no translation found for lb_playback_controls_play (731953341987346903) -->
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
+    <string name="lb_playback_controls_play" msgid="731953341987346903">"დაკვრა"</string>
+    <string name="lb_playback_controls_pause" msgid="6189521112079849518">"პაუზა"</string>
+    <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"წინ გადახვევა"</string>
+    <!-- String.format failed for translation -->
+    <!-- no translation found for lb_playback_controls_fast_forward_multiplier (1058753672110224526) -->
     <skip />
-    <!-- no translation found for lb_playback_controls_pause (6189521112079849518) -->
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"უკან გადახვევა"</string>
+    <!-- String.format failed for translation -->
+    <!-- no translation found for lb_playback_controls_rewind_multiplier (1640629531440849942) -->
     <skip />
-    <!-- no translation found for lb_playback_controls_fast_forward (8569951318244687220) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_rewind (2227196334132350684) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_next (2946499493161095772) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_previous (2326801832933178348) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_more_actions (2330770008796987655) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up (6530420347129222601) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up_outline (1577637924003500946) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down (4498041193172964797) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down_outline (2936020280629424365) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_none (87476947476529036) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_all (6730354406289599000) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_one (3285202316452203619) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_enable (1099874107835264529) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_disable (8388150597335115226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_enable (202415780019335254) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_disable (8637371582779057866) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_enable (2429655367176440226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_disable (6133362019475930048) -->
-    <skip />
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"შემდეგის გამოტოვება"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"წინას გამოტოვება"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"დამატებითი ქმედებები"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"მაღალი შეფასების არჩევის გაუქმება"</string>
+    <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"მაღალი შეფასების არჩევა"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"დაბალი შეფასების არჩევის გაუქმება"</string>
+    <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"დაბალი შეფასების არჩევა"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"არცერთის გამეორება"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"ყველას გამეორება"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"ერთის გამეორება"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"არეულად დაკვრის ჩართვა"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"არეულად დაკვრის გამორთვა"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"მაღალი ხარისხის ჩართვა"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"მაღალი ხარისხის გამორთვა"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"დახურული წარწერების ჩართვა"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"დახურული წარწერების გაუქმება"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-kk-rKZ/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-kk-rKZ/strings.xml
index d683255..9ed6ce2 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-kk-rKZ/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-kk-rKZ/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Іздеу үшін сөйлеу"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> іздеу"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> іздеу үшін сөйлеңіз"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Ойнату"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Кідірту"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Алға айналдыру"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX алға айналдыру"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Кері айналдыру"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX кері айналдыру"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Келесіге өту"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Алдыңғыға өту"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Қосымша әрекеттер"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-km-rKH/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-km-rKH/strings.xml
index 6c10e6c..ea7d0f4 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-km-rKH/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-km-rKH/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"និយាយ​​ដើម្បី​ស្វែងរក"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"ស្វែងរក <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"និយាយ​ដើម្បី​ស្វែងរក <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"ចាក់"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"ផ្អាក"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"បញ្ជូន​បន្ត​រហ័ស"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"ខាទៅមុខ %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"ខា​ថយក្រោយ"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"ខាថយក្រោយ %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"រំលង​បន្ទាប់"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"រំលង​មុន"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"សកម្មភាព​ច្រើន​ទៀត"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-kn-rIN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-kn-rIN/strings.xml
index 34688ef..196b154 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-kn-rIN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-kn-rIN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"ಹುಡುಕಲು ಮಾತನಾಡಿ"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> ಹುಡುಕಿ"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> ಮಾತನಾಡಿ ಹುಡುಕಾಟ ನಡೆಸಿ"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"ಪ್ಲೇ ಮಾಡು"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"ವಿರಾಮಗೊಳಿಸು"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"ಫಾಸ್ಟ್ ಫಾರ್ವರ್ಡ್"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"ಫಾಸ್ಟ್ ಫಾರ್ವರ್ಡ್ %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"ರೀವೈಂಡ್"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"ರಿವೈಂಡ್ %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"ಮುಂದೆ ಸ್ಕಿಪ್ ಮಾಡಿ"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"ಹಿಂದೆ ಸ್ಕಿಪ್ ಮಾಡಿ"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"ಹೆಚ್ಚು ಕ್ರಿಯೆಗಳು"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ko/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ko/strings.xml
index f01f79e..c244dbf 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ko/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ko/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"음성 검색"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> 검색"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> 음성 검색"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$d배속"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$d배속"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"재생"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"일시중지"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"빨리 감기"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$d배속 빨리 감기"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"되감기"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$d배속 되감기"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"다음으로 건너뛰기"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"이전으로 건너뛰기"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"추가 작업"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ky-rKG/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ky-rKG/strings.xml
index dd84a54..4ddb284 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ky-rKG/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ky-rKG/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Издөө үчүн сүйлөңүз"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> издөө"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> издөө үчүн сүйлөңүз"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Ойнотуу"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Тындыруу"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Алдыга түрүү"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Алдыга түрүү %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Артка түрүү"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Артка түрүү %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Кийинкини өткөрүп жиберүү"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Мурункуну өткөрүп жиберүү"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Дагы көнүгүүлөр"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-lo-rLA/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-lo-rLA/strings.xml
index acda291..35f519b 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-lo-rLA/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-lo-rLA/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"ເວົ້າ​ເພື່ອ​ຊອກ​ຫາ"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"ຊອກ​ຫາ <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"ເວົ້າ​ເພື່ອ​ຊອກ​ຫາ <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"ຫຼິ້ນ"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"ຢຸດຊົ່ວຄາວ"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"ເລື່ອນ​ໄປ​ໜ້າ"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"ໄປ​ໜ້າແບບໄວ %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"​ຣີ​ວາຍກັບ"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"​ກັບ​ຄືນ %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"​ຂ້າມ​ໄປ​ຕໍ່"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"​ຂ້າມ​ໄປ​ກ່ອນ​ໜ້າ"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"ຄຳສັ່ງ​ເພີ່ມເຕີມ"</string>
@@ -40,6 +44,6 @@
     <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"​ປິດ​ນຳ​ໃຊ້​ການ​ສະຫຼັບ"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"​ເປີດນຳ​ໃຊ້​ການຫຼິ້ນ​ດ້ວຍຄຸນ​ນະ​ພາບ​ສູງ"</string>
     <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"​ປິດ​ນຳ​ໃຊ້​ການຫຼິ້ນ​ດ້ວຍຄຸນ​ນະ​ພາບ​ສູງ"</string>
-    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"​ເປີດ​ນຳ​ໃຊ້​ຄຳ​ອະ​ທິ​ບາຍ​ລະ​ອຽດ"</string>
-    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"​ປິດ​ນຳ​ໃຊ້​ຄຳ​ອະ​ທິ​ບາຍ​ລະ​ອຽດ"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"​ເປີດ​ນຳ​ໃຊ້​​ຄຳ​ບັນ​ຍາຍ​ແບບ​ປິດ"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"​ປິດ​ນຳ​ໃຊ້​ຄຳ​ບັນ​ຍາຍ​ແບບ​ປິດ"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-lt/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-lt/strings.xml
index 5efd468..6ca2bab 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-lt/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-lt/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Pasakykite, kad ieškotumėte"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Ieškoti „<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>“"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Kalbėkite, kad ieškotumėte „<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>“"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$d k."</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$d k."</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Leisti"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pristabdyti"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Sukti pirmyn"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Sukti pirmyn %1$d k. greičiau"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Sukti atgal"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Sukti atgal %1$d k. greičiau"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Praleisti kitą"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Praleisti ankstesnį"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Daugiau veiksmų"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-lv/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-lv/strings.xml
index 88a0633..7d3bc2b 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-lv/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-lv/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Runāt, lai meklētu"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Meklējiet <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Runājiet, lai meklētu: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Atskaņot"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pauzēt"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Pārtīt uz priekšu"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Pārtīt uz priekšu %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Attīt atpakaļ"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Attīt atpakaļ %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Izlaist nākamo"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Izlaist iepriekšējo"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Citas darbības"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-mk-rMK/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-mk-rMK/strings.xml
index a65caa1..75666e0 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-mk-rMK/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-mk-rMK/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Зборувајте за да пребарувате"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Пребарувај <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Кажете за да се пребарува <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Пушти"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Пауза"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Брзо премотај напред"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Премотај напред %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Премотај назад"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Премотај назад %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Прескокни на следна"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Прескокни на претходна"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Повеќе дејства"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ml-rIN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ml-rIN/strings.xml
index 1d2b8ac..b900f09 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ml-rIN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ml-rIN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"ശബ്‌ദം ഉപയോഗിച്ച് തിരയുക"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> തിരയുക"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> തിരയുന്നതിന് സംസാരിക്കുക"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"പ്ലേ ചെയ്യുക"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"താൽക്കാലികമായി നിർത്തുക"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"ഫാസ്റ്റ് ഫോർവേഡ് ചെയ്യുക"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX വേഗത്തിൽ ഫോർവേഡുചെയ്യുക"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"റിവൈൻഡുചെയ്യുക"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX റിവൈൻഡുചെയ്യുക"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"അടുത്തതിലേക്ക് പോകുക"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"മുമ്പത്തേതിലേക്ക് പോകുക"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"കൂടുതൽ പ്രവർത്തനങ്ങൾ"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-mn-rMN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-mn-rMN/strings.xml
index 6f7fccf..e4a8fcd 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-mn-rMN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-mn-rMN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Ярьж хайх"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> Хайх"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> хайхын тулд ярина уу"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Тоглуулах"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Түр зогсоох"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Хурдан урагшлуулах"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Түргэн Урагш Гүйлгэх %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Буцааж хураах"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Хойш Гүйлгэх %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Дараагийнхийг алгасах"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Өмнөхийг алгасах"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Өөр үйлдлүүд"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-mr-rIN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-mr-rIN/strings.xml
index 84207c3..11748ec 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-mr-rIN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-mr-rIN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"शोधण्यासाठी बोला"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> शोधा"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> शोधण्यासाठी बोला"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"प्ले करा"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"विराम द्या"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"फास्ट फॉरवर्ड करा"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"फास्ट फॉरवर्ड %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"रिवाईँड करा"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"रीवाईंड %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"पुढील वगळा"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"मागील वगळा"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"अधिक क्रिया"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ms-rMY/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ms-rMY/strings.xml
index 9893fda..c073e43 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ms-rMY/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ms-rMY/strings.xml
@@ -22,44 +22,28 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Tutur untuk membuat carian"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Cari <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Sebut untuk mencari <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
-    <!-- no translation found for lb_playback_controls_play (731953341987346903) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_pause (6189521112079849518) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_fast_forward (8569951318244687220) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_rewind (2227196334132350684) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_next (2946499493161095772) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_previous (2326801832933178348) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_more_actions (2330770008796987655) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up (6530420347129222601) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up_outline (1577637924003500946) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down (4498041193172964797) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down_outline (2936020280629424365) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_none (87476947476529036) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_all (6730354406289599000) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_one (3285202316452203619) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_enable (1099874107835264529) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_disable (8388150597335115226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_enable (202415780019335254) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_disable (8637371582779057866) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_enable (2429655367176440226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_disable (6133362019475930048) -->
-    <skip />
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
+    <string name="lb_playback_controls_play" msgid="731953341987346903">"Main"</string>
+    <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Jeda"</string>
+    <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Mara Laju"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Lajukan %1$dX"</string>
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Gulung semula"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Gulung semula %1$dX"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Langkau Seterusnya"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Langkau Sebelumnya"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Lagi Tindakan"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"Nyahpilih Bagus"</string>
+    <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"Pilih Bagus"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"Nyahpilih Tidak Bagus"</string>
+    <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"Pilih Tidak Bagus"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"Jangan Ulang"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"Ulang Semua"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"Ulang Satu"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"Dayakan Rombak"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"Lumpuhkan Rombak"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"Dayakan Kualiti Tinggi"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"Lumpuhkan Kualiti Tinggi"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"Dayakan Kapsyen Tertutup"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"Lumpuhkan Kapsyen Tertutup"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-my-rMM/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-my-rMM/strings.xml
index 884e026..77a2271 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-my-rMM/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-my-rMM/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"ရှာဖွေရန် ပြောပါ"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>ကို ရှာရန်"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> ကို ရှာရန် ပြောပါ"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"ဖွင့်ရန်"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"ခဏရပ်ရန်"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"ရှေ့သို့ သွားရန်"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"ရှေ့သို့ ရစ်ရန် %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"ပြန်ရစ်ရန်"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"နောက်သို့ ရစ်ရန် %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"န​ောက်တစ်ပုဒ်သို့ ကျော်ရန်"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"ယခင်တစ်ပုဒ်သို့ သွားရန်"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"နောက်ထပ် လုပ်ဆောင်ချက်များ"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-nb/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-nb/strings.xml
index bef4244..f5ab2e1 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-nb/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-nb/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Snakk for å søke"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Søk i <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Snakk for å søke i <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Spill av"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Sett på pause"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Fremoverspoling"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Fremoverspoling %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Tilbakespoling"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Tilbakespoling %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Hopp til neste"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Hopp til forrige"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Flere handlinger"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ne-rNP/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ne-rNP/strings.xml
index 55d4661..c399985 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ne-rNP/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ne-rNP/strings.xml
@@ -22,10 +22,16 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"खोजी गर्न बोल्नुहोस्"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> खोज्नुहोस्"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> खोजी गर्न बोल्नुहोस्"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"प्ले गर्नुहोस्"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"रोक्नुहोस्"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"फास्ट फर्वार्ड"</string>
+    <!-- String.format failed for translation -->
+    <!-- no translation found for lb_playback_controls_fast_forward_multiplier (1058753672110224526) -->
+    <skip />
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"दोहोर्याउनुहोस्"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"पुन: वाइन्ड गर्नुहोस् %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"अर्को छोड्नुहोस्"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"अघिल्लो छोड्नुहोस्"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"थप कार्यहरू"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-nl/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-nl/strings.xml
index 057638f..fe73141 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-nl/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-nl/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Spreek om te zoeken"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> zoeken"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Spreek om <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> te zoeken"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Afspelen"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Onderbreken"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Vooruitspoelen"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Vooruitspoelen %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Terugspoelen"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Terugspoelen %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Naar volgende"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Naar vorige"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Meer acties"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-pl/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-pl/strings.xml
index cb7f377..f6280a3 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-pl/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-pl/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Powiedz, aby wyszukać"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Szukaj <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Powiedz, by wyszukać w aplikacji <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Odtwórz"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Wstrzymaj"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Przewiń do przodu"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Przewiń do przodu %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Przewiń do tyłu"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Przewiń do tyłu %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Pomiń następny"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Pomiń poprzedni"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Więcej czynności"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-pt-rPT/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-pt-rPT/strings.xml
index 0c3fc3a..f3bf4aa 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-pt-rPT/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-pt-rPT/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Fale para pesquisar"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Pesquisar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Fale para pesquisar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reproduzir"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Interromper"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avançar"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avançar %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Recuar"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Recuar %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Avançar para o seguinte"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Avançar para o anterior"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Mais ações"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-pt/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-pt/strings.xml
index 3116f83..13d01a5 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-pt/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-pt/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Fale para pesquisar"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Pesquisar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Fale para pesquisar <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Reproduzir"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausar"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Avançar"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Avançar %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Retroceder"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Retroceder %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Pular próxima"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Pular anterior"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Mais ações"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ro/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ro/strings.xml
index 7d6efa5..cb6aa4a 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ro/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ro/strings.xml
@@ -22,44 +22,28 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Rostiți pentru a căuta"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Căutați <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Vorbiți pentru a căuta în <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
-    <!-- no translation found for lb_playback_controls_play (731953341987346903) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_pause (6189521112079849518) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_fast_forward (8569951318244687220) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_rewind (2227196334132350684) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_next (2946499493161095772) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_previous (2326801832933178348) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_more_actions (2330770008796987655) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up (6530420347129222601) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up_outline (1577637924003500946) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down (4498041193172964797) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down_outline (2936020280629424365) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_none (87476947476529036) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_all (6730354406289599000) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_one (3285202316452203619) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_enable (1099874107835264529) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_disable (8388150597335115226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_enable (202415780019335254) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_disable (8637371582779057866) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_enable (2429655367176440226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_disable (6133362019475930048) -->
-    <skip />
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
+    <string name="lb_playback_controls_play" msgid="731953341987346903">"Redă"</string>
+    <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Întrerupe"</string>
+    <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Derulează rapid înainte"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Derulați rapid înainte cu %1$dX"</string>
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Derulează"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Derulați înapoi cu %1$dX"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Ignoră articolul următor"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Ignoră articolul anterior"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Mai multe acţiuni"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"Deselectează „Îmi place”"</string>
+    <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"Selectează „Îmi place”"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"Deselectează „Nu-mi place”"</string>
+    <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"Selectează „Nu-mi place”"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"Nu repetă"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"Repetă toate"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"Repetă unul"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"Activează redarea în mod aleatoriu"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"Dezactivează redarea în mod aleatoriu"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"Activează calitatea înaltă"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"Dezactivează calitatea înaltă"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"Activează subtitrările"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"Dezactivează subtitrările"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ru/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ru/strings.xml
index a1b2cfb..fb03f9d 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ru/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ru/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Произнесите запрос"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Поиск здесь: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Произнесите запрос, чтобы найти <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Воспроизвести."</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Приостановить."</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Перемотка вперед."</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Перемотка вперед %1$dX."</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Перемотать назад."</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Перемотка назад %1$dX."</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Перейти к следующему элементу."</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Перейти к предыдущему элементу."</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Другие действия."</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-si-rLK/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-si-rLK/strings.xml
index 3566f0e..e5c0cf4 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-si-rLK/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-si-rLK/strings.xml
@@ -22,44 +22,28 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"සෙවීමට කථා කරන්න"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> සොයන්න"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> සොයන්න කථා කරන්න"</string>
-    <!-- no translation found for lb_playback_controls_play (731953341987346903) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_pause (6189521112079849518) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_fast_forward (8569951318244687220) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_rewind (2227196334132350684) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_next (2946499493161095772) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_skip_previous (2326801832933178348) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_more_actions (2330770008796987655) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up (6530420347129222601) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_up_outline (1577637924003500946) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down (4498041193172964797) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_thumb_down_outline (2936020280629424365) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_none (87476947476529036) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_all (6730354406289599000) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_repeat_one (3285202316452203619) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_enable (1099874107835264529) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_shuffle_disable (8388150597335115226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_enable (202415780019335254) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_high_quality_disable (8637371582779057866) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_enable (2429655367176440226) -->
-    <skip />
-    <!-- no translation found for lb_playback_controls_closed_captioning_disable (6133362019475930048) -->
-    <skip />
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
+    <string name="lb_playback_controls_play" msgid="731953341987346903">"ධාවනය කරන්න"</string>
+    <string name="lb_playback_controls_pause" msgid="6189521112079849518">"විරාමය"</string>
+    <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"වේගයෙන් ඉදිරියට යන"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX වේගයෙන් ඉදිරියට යවන්න"</string>
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"නැවත ඔතන්න"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX ආපස්සට යවන්න"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"ඊළඟ එක මග අරින්න"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"කළින් එක මග අරින්න"</string>
+    <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"තව ක්‍රියාකාරකම්"</string>
+    <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"මහපටැඟිල්ල ඉහළට තිබීම තේරීම නොකරන්න"</string>
+    <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"මහපටැඟිල්ල ඉහළට තිබීම තේරීම කරන්න"</string>
+    <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"මහපටැඟිල්ල පහළට තිබීම තේරීම නොකරන්න"</string>
+    <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"මහපටැඟිල්ල පහළට තිබීම තේරීම කරන්න"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"නැවත කරන්න කිසිවක් නැත"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"සියල්ල නැවත කරන්න"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"එකක් නැවත කරන්න"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"ඇනීම සබල කරන්න"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"ඇනීම අබල කරන්න"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"උපරිම ගුණත්වය සබල කරන ලදි"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"උපරිම ගුණත්වය අබල කරන ලදි"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"වැසුණු ශිර්ෂ කිරීම සබල කරන ලදි"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"වැසුණු ශිර්ෂ කිරීම අබල කරන ලදි"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-sk/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-sk/strings.xml
index 0bfe3c5..74a9044 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-sk/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-sk/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Hovorením spustíte vyhľadávanie"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Vyhľadať výraz <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Hovorte na vyhľadávanie v kontexte <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Prehrať"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pozastaviť"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Pretočiť dopredu"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Pretočiť dopredu %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Pretočiť späť"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Pretočiť späť %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Prejsť na ďalšiu položku"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Prejsť na predchádzajúcu položku"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Viac akcií"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-sl/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-sl/strings.xml
index 9bf2760..1af639b 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-sl/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-sl/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Izgovorite, če želite iskati"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Iskanje: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Govorite, če želite iskati: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$d-kratno"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$d-kratno"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Predvajaj"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Zaustavi"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Previj naprej"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Hitro previjanje naprej – %1$d-kratno"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Previj nazaj"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Previjanje nazaj – %1$d-kratno"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Preskoči naslednje"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Preskoči prejšnje"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Več dejanj"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-sr/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-sr/strings.xml
index 8f37cab..bb5c32d 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-sr/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-sr/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Говорите да бисте претраживали"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Претражите <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Изговорите да бисте претражили <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Пусти"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Паузирај"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Премотај унапред"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Премотај унапред %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Премотај уназад"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Премотај уназад %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Прескочи следећу"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Прескочи претходну"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Још радњи"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-sv/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-sv/strings.xml
index 6fc1224..1a8e757 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-sv/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-sv/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Säg det du söker efter"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Sök i <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Tala för att söka i <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Spela upp"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Pausa"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Snabbspola framåt"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Spola framåt %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Spola tillbaka"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Spola tillbaka %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Hoppa till nästa"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Hoppa till föregående"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Fler åtgärder"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-sw/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-sw/strings.xml
index b6d44cf..17c7480 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-sw/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-sw/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Tamka ili utafute"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Tafuta <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Tamka ili utafute <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Google Play"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Sitisha"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Peleka mbele Haraka"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Peleka Mbele %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Rudisha nyuma"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Peleka nyuma %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Ruka Inayofuata"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Ruka Iliyotangulia"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Vitendo zaidi"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ta-rIN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ta-rIN/strings.xml
index e60092c..9472522 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ta-rIN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ta-rIN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"தேட, பேசவும்"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> ஐத் தேடுக"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> ஐத் தேட, பேசவும்"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"இயக்கு"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"இடைநிறுத்து"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"வேகமாக முன் நகர்த்து"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX வேகத்தில் முன்செல்"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"வேகமாக பின் நகர்த்து"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX வேகத்தில் பின்செல்"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"அடுத்ததைத் தவிர்"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"முந்தையதைத் தவிர்"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"மேலும் செயல்கள்"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-te-rIN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-te-rIN/strings.xml
index 762d13a..f71e8cb 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-te-rIN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-te-rIN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"శోధించడానికి చదివి వినిపించండి"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>ని శోధించండి"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>ని శోధించడానికి చదివి వినిపించండి"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"ప్లే చేయి"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"పాజ్ చేయి"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"వేగంగా ఫార్వార్డ్ చేయి"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX ఫాస్ట్ ఫార్వార్డ్ చేయి"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"రివైండ్ చేయి"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX రివైండ్ చేయి"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"తదుపరి దానికి దాటవేయి"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"మునుపటి దానికి దాటవేయి"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"మరిన్ని చర్యలు"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-th/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-th/strings.xml
index 5ba438d..581bac0 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-th/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-th/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"พูดเพื่อค้นหา"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"ค้นหา <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"พูดเพื่อค้นหา <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"เล่น"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"หยุดชั่วคราว"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"กรอไปข้างหน้า"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"กรอไปข้างหน้า %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"กรอกลับ"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"กรอกลับ %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"ข้ามไปรายการถัดไป"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"ข้ามไปรายการก่อนหน้า"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"การทำงานเพิ่มเติม"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-tl/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-tl/strings.xml
index b90a544..c4e15ec 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-tl/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-tl/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Magsalita upang maghanap"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Hanapin ang <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Magsalita upang hanapin ang <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"I-play"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"I-pause"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"I-fast Forward"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"I-fast Forward %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"I-rewind"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"I-rewind %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Laktawan ang Susunod"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Laktawan ang Nakaraan"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Higit Pang Mga Pagkilos"</string>
@@ -40,6 +44,6 @@
     <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"I-disable ang Shuffle"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"I-enable ang Mataas na Kalidad"</string>
     <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"I-disable ang Mataas na Kalidad"</string>
-    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"I-enable ang Paglalagay ng Nakasarang Caption"</string>
-    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"I-disable ang Paglalagay ng Nakasarang Caption"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"I-enable ang Paglalagay ng Subtitle"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"I-disable ang Paglalagay ng Subtitle"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-tr/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-tr/strings.xml
index 77c846b..4671058 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-tr/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-tr/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Arama yapmak için konuşun"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Ara: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Aramak için konuşun: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Oynat"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Duraklat"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"İleri Sar"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX İleri Sar"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Geri Sar"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX Geri Sar"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Sonrakine Atla"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Öncekine Atla"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Diğer İşlemler"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-uk/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-uk/strings.xml
index 127c005..79b2782 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-uk/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-uk/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Продиктуйте пошуковий запит"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Шукати: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Продиктуйте запит для пошуку: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Відтворити"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Призупинити"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Перемотати вперед"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Перемотати вперед %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Перемотати назад"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Перемотати назад %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Пропустити наступний елемент"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Пропустити попередній елемент"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Інші дії"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-ur-rPK/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-ur-rPK/strings.xml
index d13641d..b670251 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-ur-rPK/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-ur-rPK/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"تلاش کرنے کیلئے بولیں"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> تلاش کریں"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g> تلاش کرنے کیلئے بولیں"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"چلائیں"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"موقوف کریں"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"تیزی سے فارورڈ کریں"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"‏تیزی سے فارورڈ کریں ‎%1$dX‎"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"ریوائینڈ کریں"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"‏ریوائنڈ کریں ‎%1$dX‎"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"اگلے پر جائیں"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"پچھلے پر جائیں"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"مزید کارروائیاں"</string>
@@ -40,6 +44,6 @@
     <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"شفل کو غیر فعال کریں"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"اعلی معیار کو فعال کریں"</string>
     <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"اعلی معیار کو غیر فعال کریں"</string>
-    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"ذیلی سرخیاں لگانے کو فعال کریں"</string>
-    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"ذیلی سرخیاں لگانے کو غیر فعال کریں"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"سب ٹائٹلز کو فعال کریں"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"سب ٹائٹلز کو غیر فعال کریں"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-uz-rUZ/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-uz-rUZ/strings.xml
index cf16b8d..235d88f 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-uz-rUZ/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-uz-rUZ/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Qidirish uchun gapiring"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Qidirish: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Qidirish uchun ayting: <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Ijro qilish"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"To‘xtatib turish"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Oldinga o‘tkazish"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$dX tezlikda oldinga o‘tkazish"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Orqaga qaytarish"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$dX tezlikda orqaga qaytarish"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Keyingisiga o‘tish"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Avvalgisiga qaytish"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Boshqa amallar"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-vi/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-vi/strings.xml
index b265491..201d137 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-vi/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-vi/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Nói để tìm kiếm"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Tìm kiếm <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Nói để tìm kiếm <xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Phát"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Tạm dừng"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Tua nhanh"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Tua đi %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Tua lại"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Tua lại %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Chuyển đến mục tiếp theo"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Chuyển về mục trước"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Tác vụ khác"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-zh-rCN/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-zh-rCN/strings.xml
index 3c57156..276e7bb 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-zh-rCN/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-zh-rCN/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"说话即可开始搜索"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"搜索<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"说话即可在<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>中搜索"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$d 倍速"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$d 倍速"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"播放"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"暂停"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"快进"</string>
-    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"回放"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"%1$d 倍速快进"</string>
+    <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"快退"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"%1$d 倍速快退"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"跳至下一个"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"跳至上一个"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"更多操作"</string>
@@ -35,11 +39,11 @@
     <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"选择踩操作"</string>
     <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"不重复播放"</string>
     <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"重复播放全部"</string>
-    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"重复播放单个视频"</string>
-    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"启用随机播放"</string>
-    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"停用随机播放"</string>
-    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"启用高画质模式"</string>
-    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"停用高画质模式"</string>
-    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"启用特制字幕"</string>
-    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"关闭特制字幕"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"重复播放一项"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"开启随机播放"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"关闭随机播放"</string>
+    <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"开启高画质模式"</string>
+    <string name="lb_playback_controls_high_quality_disable" msgid="8637371582779057866">"关闭高画质模式"</string>
+    <string name="lb_playback_controls_closed_captioning_enable" msgid="2429655367176440226">"开启字幕"</string>
+    <string name="lb_playback_controls_closed_captioning_disable" msgid="6133362019475930048">"关闭字幕"</string>
 </resources>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-zh-rHK/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-zh-rHK/strings.xml
index 88776c5..5e87989 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-zh-rHK/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-zh-rHK/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"使用語音搜尋"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"搜尋「<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>」"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"使用語音搜尋「<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>」"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"播放"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"暫停"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"向前快轉"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"快轉 %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"向後倒轉"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"倒帶 %1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"移至下一個媒體項目"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"移至上一個媒體項目"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"更多動作"</string>
@@ -33,7 +37,7 @@
     <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"選取喜歡"</string>
     <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"取消選取不喜歡"</string>
     <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"選取不喜歡"</string>
-    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"不重複播放任何媒體項目"</string>
+    <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"不重複播放"</string>
     <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"重複播放所有媒體項目"</string>
     <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"重複播放一個媒體項目"</string>
     <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"啟用隨機播放"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-zh-rTW/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-zh-rTW/strings.xml
index c1378a2..67efc40 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-zh-rTW/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-zh-rTW/strings.xml
@@ -22,20 +22,24 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"使用語音搜尋"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"搜尋「<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>」"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"使用語音搜尋「<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>」"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"播放"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"暫停"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"向前快轉"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"快轉 %1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"倒轉"</string>
-    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"跳至下一個媒體項目"</string>
-    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"跳至上一個媒體項目"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"倒轉 %1$dX"</string>
+    <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"跳至下一個項目"</string>
+    <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"跳至上一個項目"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"更多動作"</string>
     <string name="lb_playback_controls_thumb_up" msgid="6530420347129222601">"取消選取喜歡"</string>
     <string name="lb_playback_controls_thumb_up_outline" msgid="1577637924003500946">"選取喜歡"</string>
     <string name="lb_playback_controls_thumb_down" msgid="4498041193172964797">"取消選取不喜歡"</string>
     <string name="lb_playback_controls_thumb_down_outline" msgid="2936020280629424365">"選取不喜歡"</string>
     <string name="lb_playback_controls_repeat_none" msgid="87476947476529036">"不重複播放"</string>
-    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"重複播放所有媒體項目"</string>
-    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"重複播放單一媒體項目"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="6730354406289599000">"重複播放所有項目"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="3285202316452203619">"重複播放單一項目"</string>
     <string name="lb_playback_controls_shuffle_enable" msgid="1099874107835264529">"啟用隨機播放"</string>
     <string name="lb_playback_controls_shuffle_disable" msgid="8388150597335115226">"停用隨機播放"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="202415780019335254">"啟用高品質播放"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values-zu/strings.xml b/sdk/extras/android/support/v17/leanback/res/values-zu/strings.xml
index e4b7a8e..f17455d 100644
--- a/sdk/extras/android/support/v17/leanback/res/values-zu/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values-zu/strings.xml
@@ -22,10 +22,14 @@
     <string name="lb_search_bar_hint_speech" msgid="5511270823320183816">"Khuluma ukuze useshe"</string>
     <string name="lb_search_bar_hint_with_title" msgid="1627103380996590035">"Sesha i-<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
     <string name="lb_search_bar_hint_with_title_speech" msgid="2712734639766312034">"Khuluma ukuze useshe i-<xliff:g id="SEARCH_CONTEXT">%1$s</xliff:g>"</string>
+    <string name="lb_control_display_fast_forward_multiplier" msgid="4541442045214207774">"%1$dX"</string>
+    <string name="lb_control_display_rewind_multiplier" msgid="3097220783222910245">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="731953341987346903">"Dlala"</string>
     <string name="lb_playback_controls_pause" msgid="6189521112079849518">"Misa isikhashana"</string>
     <string name="lb_playback_controls_fast_forward" msgid="8569951318244687220">"Iya phambili ngokushesha"</string>
+    <string name="lb_playback_controls_fast_forward_multiplier" msgid="1058753672110224526">"Mikisa phambili ngokushesha i-%1$dX"</string>
     <string name="lb_playback_controls_rewind" msgid="2227196334132350684">"Buyisela emuva"</string>
+    <string name="lb_playback_controls_rewind_multiplier" msgid="1640629531440849942">"Mikisa emuva i-%1$dX"</string>
     <string name="lb_playback_controls_skip_next" msgid="2946499493161095772">"Yeqa okulandelayo"</string>
     <string name="lb_playback_controls_skip_previous" msgid="2326801832933178348">"Yeqa kwangaphambilini"</string>
     <string name="lb_playback_controls_more_actions" msgid="2330770008796987655">"Izenzo eziningi"</string>
diff --git a/sdk/extras/android/support/v17/leanback/res/values/attrs.xml b/sdk/extras/android/support/v17/leanback/res/values/attrs.xml
index 47211ea..7038fff 100644
--- a/sdk/extras/android/support/v17/leanback/res/values/attrs.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values/attrs.xml
@@ -148,12 +148,49 @@
         <attr name="closed_captioning" format="reference"/>
     </declare-styleable>
 
+    <declare-styleable name="lbSlide">
+        <!-- A duplication of Slide attribute slideEdge for KitKat -->
+        <attr name="lb_slideEdge">
+            <!-- Slide to and from the left edge of the Scene. -->
+            <enum name="left" value="0x03" />
+            <!-- Slide to and from the top edge of the Scene. -->
+            <enum name="top" value="0x30" />
+            <!-- Slide to and from the right edge of the Scene. -->
+            <enum name="right" value="0x05" />
+            <!-- Slide to and from the bottom edge of the Scene. -->
+            <enum name="bottom" value="0x50" />
+            <!-- Slide to and from the x-axis position at the start of the Scene root. -->
+            <enum name="start" value="0x00800003"/>
+            <!-- Slide to and from the x-axis position at the end of the Scene root. -->
+            <enum name="end" value="0x00800005"/>
+        </attr>
+        <attr name="android:duration" />
+        <attr name="android:startDelay" />
+        <attr name="android:interpolator" />
+    </declare-styleable>
+
+    <declare-styleable name="lbResizingTextView">
+        <!-- Conditions used to trigger text resizing -->
+        <attr name="resizeTrigger">
+            <!-- Resize text whenever it lays out into the maximum number of lines -->
+            <flag name="maxLines" value="0x01" />
+        </attr>
+        <!-- Text size for resized text -->
+        <attr name="resizedTextSize" format="dimension" />
+        <!-- Whether to maintain the same line spacing when text is resized, default is false -->
+        <attr name="maintainLineSpacing" format="boolean" />
+        <!-- Adjustment to top padding for resized text -->
+        <attr name="resizedPaddingAdjustmentTop" format="dimension" />
+        <!-- Adjustment to bottom padding for resized text -->
+        <attr name="resizedPaddingAdjustmentBottom" format="dimension" />
+    </declare-styleable>
+
     <declare-styleable name="LeanbackTheme">
 
-        <!-- left padding of BrowseFragment, RowsFragment, DetailsFragment -->
-        <attr name="browsePaddingLeft" format="dimension" />
-        <!-- right padding of BrowseFragment, RowsFragment, DetailsFragment -->
-        <attr name="browsePaddingRight" format="dimension" />
+        <!-- start padding of BrowseFragment, RowsFragment, DetailsFragment -->
+        <attr name="browsePaddingStart" format="dimension" />
+        <!-- end padding of BrowseFragment, RowsFragment, DetailsFragment -->
+        <attr name="browsePaddingEnd" format="dimension" />
         <!-- top padding of BrowseFragment -->
         <attr name="browsePaddingTop" format="dimension" />
         <!-- bottom padding of BrowseFragment -->
@@ -204,6 +241,7 @@
 
         <!-- for playback controls -->
         <attr name="playbackControlsButtonStyle" format="reference" />
+        <attr name="playbackControlButtonLabelStyle" format="reference" />
         <attr name="playbackControlsTimeStyle" format="reference" />
 
         <!-- style for a vertical grid of items -->
diff --git a/sdk/extras/android/support/v17/leanback/res/values/colors.xml b/sdk/extras/android/support/v17/leanback/res/values/colors.xml
index 0987ae6..ba65d2f 100644
--- a/sdk/extras/android/support/v17/leanback/res/values/colors.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values/colors.xml
@@ -32,12 +32,11 @@
 
     <color name="lb_error_background_color_opaque">#262626</color>
     <color name="lb_error_background_color_translucent">#E6000000</color>
-    <color name="lb_error_message_color_on_opaque">#80EEEEEE</color>
-    <color name="lb_error_message_color_on_translucent">#80555555</color>
+    <color name="lb_error_message">#80EEEEEE</color>
 
     <color name="lb_action_text_color">#EEEEEE</color>
 
-    <color name="lb_search_bar_text">#FFEEEEEE</color>
+    <color name="lb_search_bar_text">#80EEEEEE</color>
     <color name="lb_search_bar_text_speech_mode">#FF444444</color>
     <color name="lb_search_bar_hint">#FF888888</color>
     <color name="lb_search_bar_hint_speech_mode">#66222222</color>
@@ -56,6 +55,7 @@
     <color name="lb_default_search_color">#FFFFAA3F</color>
 
     <color name="lb_control_button_color">#66EEEEEE</color>
+    <color name="lb_control_button_text">#EEEEEE</color>
     <color name="lb_playback_progress_color_no_theme">#ff40c4ff</color>
     <color name="lb_playback_icon_highlight_no_theme">#ff40c4ff</color>
     <color name="lb_playback_secondary_progress_color">#33FFFFFF</color>
diff --git a/sdk/extras/android/support/v17/leanback/res/values/dimens.xml b/sdk/extras/android/support/v17/leanback/res/values/dimens.xml
index 5e0b4ee..3fef5ee 100644
--- a/sdk/extras/android/support/v17/leanback/res/values/dimens.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values/dimens.xml
@@ -17,9 +17,9 @@
 <resources>
     <dimen name="lb_list_row_height">224dp</dimen>
 
-    <dimen name="lb_browse_padding_left">56dp</dimen>
+    <dimen name="lb_browse_padding_start">56dp</dimen>
     <dimen name="lb_browse_padding_top">27dp</dimen>
-    <dimen name="lb_browse_padding_right">56dp</dimen>
+    <dimen name="lb_browse_padding_end">56dp</dimen>
     <dimen name="lb_browse_padding_bottom">48dp</dimen>
     <dimen name="lb_browse_rows_margin_start">238dp</dimen>
     <dimen name="lb_browse_rows_margin_top">167dp</dimen>
@@ -27,9 +27,8 @@
     <dimen name="lb_vertical_grid_padding_bottom">87dp</dimen>
 
     <dimen name="lb_browse_title_height">60dp</dimen>
-    <dimen name="lb_browse_title_icon_height">52dp</dimen>
-    <dimen name="lb_browse_title_icon_width">52dp</dimen>
-    <dimen name="lb_browse_title_icon_margin_right">52dp</dimen>
+    <dimen name="lb_browse_title_icon_max_width">584dp</dimen>
+    <dimen name="lb_browse_title_icon_height">60dp</dimen>
     <dimen name="lb_browse_title_text_size">44sp</dimen>
     <dimen name="lb_browse_title_text_width">584dp</dimen>
 
@@ -44,7 +43,7 @@
     <dimen name="lb_browse_header_text_size">20sp</dimen>
     <dimen name="lb_browse_header_height">24dp</dimen>
     <dimen name="lb_browse_header_fading_length">12dp</dimen>
-    <dimen name="lb_browse_header_padding_right">8dp</dimen>
+    <dimen name="lb_browse_header_padding_end">8dp</dimen>
 
     <item name="lb_browse_header_select_duration" format="integer" type="dimen">150</item>
     <item name="lb_browse_header_unselect_alpha" type="fraction">50%</item>
@@ -65,25 +64,28 @@
 
     <dimen name="lb_details_overview_height_large">274dp</dimen>
     <dimen name="lb_details_overview_height_small">159dp</dimen>
-    <dimen name="lb_details_overview_margin_left">132dp</dimen>
-    <dimen name="lb_details_overview_margin_right">132dp</dimen>
+    <dimen name="lb_details_overview_margin_start">132dp</dimen>
+    <dimen name="lb_details_overview_margin_end">132dp</dimen>
     <dimen name="lb_details_overview_margin_bottom">40dp</dimen>
 
     <dimen name="lb_details_overview_description_margin_top">24dp</dimen>
-    <dimen name="lb_details_overview_description_margin_left">24dp</dimen>
-    <dimen name="lb_details_overview_description_margin_right">24dp</dimen>
+    <dimen name="lb_details_overview_description_margin_start">24dp</dimen>
+    <dimen name="lb_details_overview_description_margin_end">24dp</dimen>
     <dimen name="lb_details_overview_description_margin_bottom">12dp</dimen>
     <dimen name="lb_details_overview_image_margin_horizontal">24dp</dimen>
     <dimen name="lb_details_overview_image_margin_vertical">24dp</dimen>
     <dimen name="lb_details_overview_action_items_margin">16dp</dimen>
     <item name="lb_details_overview_action_select_duration" format="integer" type="dimen">150</item>
-    <dimen name="lb_details_overview_actions_padding_left">294dp</dimen>
-    <dimen name="lb_details_overview_actions_padding_right">132dp</dimen>
+    <dimen name="lb_details_overview_actions_padding_start">294dp</dimen>
+    <dimen name="lb_details_overview_actions_padding_end">132dp</dimen>
     <dimen name="lb_details_overview_actions_height">56dp</dimen>
     <dimen name="lb_details_overview_actions_fade_size">16dp</dimen>
     <dimen name="lb_details_rows_align_top">167dp</dimen>
 
     <dimen name="lb_details_description_title_text_size">34sp</dimen>
+    <dimen name="lb_details_description_title_resized_text_size">28sp</dimen>
+    <dimen name="lb_details_description_title_padding_adjust_top">-1dp</dimen>
+    <dimen name="lb_details_description_title_padding_adjust_bottom">2dp</dimen>
     <dimen name="lb_details_description_subtitle_text_size">16sp</dimen>
     <dimen name="lb_details_description_body_text_size">14sp</dimen>
     <dimen name="lb_details_description_title_line_spacing">40dp</dimen>
@@ -100,8 +102,8 @@
     <dimen name="lb_action_1_line_height">36dp</dimen>
     <dimen name="lb_action_2_lines_height">56dp</dimen>
     <dimen name="lb_action_padding_horizontal">24dp</dimen>
-    <dimen name="lb_action_with_icon_padding_left">14dp</dimen>
-    <dimen name="lb_action_with_icon_padding_right">20dp</dimen>
+    <dimen name="lb_action_with_icon_padding_start">14dp</dimen>
+    <dimen name="lb_action_with_icon_padding_end">20dp</dimen>
     <dimen name="lb_action_icon_margin">12dp</dimen>
     <dimen name="lb_action_text_size">16sp</dimen>
     <dimen name="lb_action_button_corner_radius">2dp</dimen>
@@ -111,8 +113,8 @@
     <dimen name="lb_playback_major_fade_translate_y">200dp</dimen>
     <dimen name="lb_playback_minor_fade_translate_y">16dp</dimen>
     <dimen name="lb_playback_controls_card_height">176dp</dimen>
-    <dimen name="lb_playback_controls_margin_left">132dp</dimen>
-    <dimen name="lb_playback_controls_margin_right">132dp</dimen>
+    <dimen name="lb_playback_controls_margin_start">132dp</dimen>
+    <dimen name="lb_playback_controls_margin_end">132dp</dimen>
     <dimen name="lb_playback_controls_margin_bottom">20dp</dimen>
     <dimen name="lb_playback_description_margin_top">24dp</dimen>
     <dimen name="lb_playback_description_margin_start">24dp</dimen>
@@ -131,6 +133,7 @@
     <dimen name="lb_control_button_secondary_height">48dp</dimen>
     <dimen name="lb_control_icon_width">32dp</dimen>
     <dimen name="lb_control_icon_height">32dp</dimen>
+    <dimen name="lb_control_button_text_size">22sp</dimen>
 
     <dimen name="lb_error_image_max_height">120dp</dimen>
     <integer name="lb_error_message_max_lines">1</integer>
@@ -144,27 +147,27 @@
 
     <!-- Search bar -->
     <dimen name="lb_search_bar_height">60dp</dimen>
-    <dimen name="lb_search_bar_padding_left">56dp</dimen>
+    <dimen name="lb_search_bar_padding_start">56dp</dimen>
     <dimen name="lb_search_bar_padding_top">27dp</dimen>
 
-    <dimen name="lb_search_bar_text_size">22sp</dimen>
+    <dimen name="lb_search_bar_text_size">18sp</dimen>
     <dimen name="lb_search_bar_unfocused_text_size">18sp</dimen>
     <dimen name="lb_search_bar_items_layout_margin_top">27dp</dimen>
     <dimen name="lb_search_bar_items_width">600dp</dimen>
     <dimen name="lb_search_bar_items_height">56dp</dimen>
-    <dimen name="lb_search_bar_items_margin_left">70dp</dimen>
+    <dimen name="lb_search_bar_items_margin_start">70dp</dimen>
     <dimen name="lb_search_bar_inner_margin_top">2dp</dimen>
     <dimen name="lb_search_bar_inner_margin_bottom">2dp</dimen>
     <dimen name="lb_search_bar_icon_height">32dp</dimen>
     <dimen name="lb_search_bar_icon_width">32dp</dimen>
-    <dimen name="lb_search_bar_icon_margin_left">16dp</dimen>
-    <dimen name="lb_search_bar_edit_text_margin_left">24dp</dimen>
-    <dimen name="lb_search_bar_hint_margin_left">52dp</dimen>
+    <dimen name="lb_search_bar_icon_margin_start">16dp</dimen>
+    <dimen name="lb_search_bar_edit_text_margin_start">24dp</dimen>
+    <dimen name="lb_search_bar_hint_margin_start">52dp</dimen>
 
 
     <!-- Search Fragment -->
     <dimen name="lb_search_browse_rows_align_top">120dp</dimen>
-    <dimen name="lb_search_browse_row_padding_left">56dp</dimen>
+    <dimen name="lb_search_browse_row_padding_start">56dp</dimen>
 
     <dimen name="lb_search_orb_size">52dp</dimen>
     <item name="lb_search_orb_focused_zoom" type="fraction">120%</item>
@@ -173,12 +176,12 @@
 
     <dimen name="lb_search_orb_margin_top">4dp</dimen>
     <dimen name="lb_search_orb_margin_bottom">4dp</dimen>
-    <dimen name="lb_search_orb_margin_left">4dp</dimen>
-    <dimen name="lb_search_orb_margin_right">4dp</dimen>
+    <dimen name="lb_search_orb_margin_start">4dp</dimen>
+    <dimen name="lb_search_orb_margin_end">4dp</dimen>
 
     <dimen name="lb_search_bar_speech_orb_size">52dp</dimen>
     <item name="lb_search_bar_speech_orb_max_level_zoom" type="fraction">144%</item>
-    <dimen name="lb_search_bar_speech_orb_margin_left">56dp</dimen>
+    <dimen name="lb_search_bar_speech_orb_margin_start">56dp</dimen>
 
     <!-- BasicCardView -->
     <dimen name="lb_basic_card_main_width">140dp</dimen>
diff --git a/sdk/extras/android/support/v17/leanback/res/values/strings.xml b/sdk/extras/android/support/v17/leanback/res/values/strings.xml
index 289927f..2cd0ff1 100644
--- a/sdk/extras/android/support/v17/leanback/res/values/strings.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values/strings.xml
@@ -25,6 +25,10 @@
     <string name="lb_search_bar_hint_with_title">Search <xliff:g id="search context">%1$s</xliff:g></string>
     <!-- Hint showing in the empty search bar using a provided context (usually the application name) while in voice input mode [CHAR LIMIT=40] -->
     <string name="lb_search_bar_hint_with_title_speech">Speak to search <xliff:g id="search context">%1$s</xliff:g></string>
+    <!-- Onscreen label for the control button to fast forward media playback at a given speed multiplier -->
+    <string name="lb_control_display_fast_forward_multiplier">%1$dX</string>
+    <!-- Onscreen label for the control button to rewind media playback at a given speed multiplier -->
+    <string name="lb_control_display_rewind_multiplier">%1$dX</string>
 
     <!-- Talkback label for the control button to start media playback -->
     <string name="lb_playback_controls_play">Play</string>
@@ -32,8 +36,12 @@
     <string name="lb_playback_controls_pause">Pause</string>
     <!-- Talkback label for the control button to fast forward media playback -->
     <string name="lb_playback_controls_fast_forward">Fast Forward</string>
+    <!-- Talkback label for the control button to fast forward media playback at a given speed multiplier -->
+    <string name="lb_playback_controls_fast_forward_multiplier">Fast Forward %1$dX</string>
     <!-- Talkback label for the control button to start rewind playback -->
     <string name="lb_playback_controls_rewind">Rewind</string>
+    <!-- Talkback label for the control button to rewind media playback at a given speed multiplier -->
+    <string name="lb_playback_controls_rewind_multiplier">Rewind %1$dX</string>
     <!-- Talkback label for the control button to skip to the next media item -->
     <string name="lb_playback_controls_skip_next">Skip Next</string>
     <!-- Talkback label for the control button to skip to the previous media item -->
diff --git a/sdk/extras/android/support/v17/leanback/res/values/styles.xml b/sdk/extras/android/support/v17/leanback/res/values/styles.xml
index f1e883e..03be3ac 100644
--- a/sdk/extras/android/support/v17/leanback/res/values/styles.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values/styles.xml
@@ -71,9 +71,15 @@
         <item name="android:fontFamily">sans-serif</item>
     </style>
 
+    <style name="TextAppearance.Leanback.PlaybackControlLabel">
+        <item name="android:textSize">@dimen/lb_control_button_text_size</item>
+        <item name="android:textColor">@color/lb_control_button_text</item>
+        <item name="android:fontFamily">sans-serif</item>
+    </style>
+
     <style name="TextAppearance.Leanback.ErrorMessage">
         <item name="android:textSize">@dimen/lb_error_message_text_size</item>
-        <item name="android:textColor">@color/lb_error_message_color_on_opaque</item>
+        <item name="android:textColor">@color/lb_error_message</item>
         <item name="android:fontFamily">sans-serif</item>
     </style>
 
@@ -98,13 +104,12 @@
 
     <style name="Widget.Leanback.Title.Text">
         <item name="android:singleLine">true</item>
-        <item name="android:gravity">right</item>
+        <item name="android:gravity">end</item>
         <item name="android:ellipsize">end</item>
         <item name="android:textAppearance">@style/TextAppearance.Leanback.Title</item>
     </style>
 
     <style name="Widget.Leanback.Title.Icon">
-        <item name="android:scaleType">fitEnd</item>
     </style>
 
     <!-- HeadersFragment -->
@@ -121,7 +126,7 @@
     <style name="Widget.Leanback.GridItems" />
 
     <style name="Widget.Leanback.Headers.VerticalGridView" >
-        <item name="android:paddingLeft">?attr/browsePaddingLeft</item>
+        <item name="android:paddingStart">?attr/browsePaddingStart</item>
         <item name="android:clipToPadding">false</item>
         <item name="focusOutFront">true</item>
         <item name="focusOutEnd">true</item>
@@ -150,8 +155,8 @@
         <item name="android:clipToPadding">false</item>
         <item name="android:focusable">true</item>
         <item name="android:focusableInTouchMode">true</item>
-        <item name="android:paddingLeft">?attr/browsePaddingLeft</item>
-        <item name="android:paddingRight">?attr/browsePaddingRight</item>
+        <item name="android:paddingStart">?attr/browsePaddingStart</item>
+        <item name="android:paddingEnd">?attr/browsePaddingEnd</item>
         <item name="android:paddingBottom">@dimen/lb_browse_item_vertical_margin</item>
         <item name="android:paddingTop">@dimen/lb_browse_item_vertical_margin</item>
         <item name="horizontalMargin">@dimen/lb_browse_item_horizontal_margin</item>
@@ -164,8 +169,8 @@
         <item name="android:clipToPadding">false</item>
         <item name="android:focusable">true</item>
         <item name="android:focusableInTouchMode">true</item>
-        <item name="android:paddingLeft">?attr/browsePaddingLeft</item>
-        <item name="android:paddingRight">?attr/browsePaddingRight</item>
+        <item name="android:paddingStart">?attr/browsePaddingStart</item>
+        <item name="android:paddingEnd">?attr/browsePaddingEnd</item>
         <item name="android:paddingBottom">@dimen/lb_vertical_grid_padding_bottom</item>
         <item name="android:paddingTop">?attr/browseRowsMarginTop</item>
         <item name="android:gravity">center_horizontal</item>
@@ -206,6 +211,10 @@
         <item name="android:maxLines">@integer/lb_details_description_title_max_lines</item>
         <item name="android:includeFontPadding">false</item>
         <item name="android:ellipsize">end</item>
+        <item name="resizeTrigger">maxLines</item>
+        <item name="resizedTextSize">@dimen/lb_details_description_title_resized_text_size</item>
+        <item name="resizedPaddingAdjustmentTop">@dimen/lb_details_description_title_padding_adjust_top</item>
+        <item name="resizedPaddingAdjustmentBottom">@dimen/lb_details_description_title_padding_adjust_bottom</item>
     </style>
 
     <style name="Widget.Leanback.DetailsDescriptionSubtitleStyle">
@@ -230,8 +239,8 @@
         <item name="android:drawablePadding">@dimen/lb_action_icon_margin</item>
         <item name="android:focusable">true</item>
         <item name="android:focusableInTouchMode">true</item>
-        <item name="android:paddingLeft">@dimen/lb_action_padding_horizontal</item>
-        <item name="android:paddingRight">@dimen/lb_action_padding_horizontal</item>
+        <item name="android:paddingStart">@dimen/lb_action_padding_horizontal</item>
+        <item name="android:paddingEnd">@dimen/lb_action_padding_horizontal</item>
     </style>
 
     <style name="Widget.Leanback.PlaybackControlsButtonStyle" >
@@ -239,6 +248,10 @@
         <item name="android:focusableInTouchMode">true</item>
     </style>
 
+    <style name="Widget.Leanback.PlaybackControlLabelStyle">
+        <item name="android:textAppearance">@style/TextAppearance.Leanback.PlaybackControlLabel</item>
+    </style>
+
     <style name="Widget.Leanback.PlaybackControlsTimeStyle">
         <item name="android:textAppearance">@style/TextAppearance.Leanback.PlaybackControlsTime</item>
     </style>
diff --git a/sdk/extras/android/support/v17/leanback/res/values/themes.xml b/sdk/extras/android/support/v17/leanback/res/values/themes.xml
index 8b66edf..0503e17 100644
--- a/sdk/extras/android/support/v17/leanback/res/values/themes.xml
+++ b/sdk/extras/android/support/v17/leanback/res/values/themes.xml
@@ -31,8 +31,8 @@
         <item name="baseCardViewStyle">@style/Widget.Leanback.BaseCardViewStyle</item>
         <item name="imageCardViewStyle">@style/Widget.Leanback.ImageCardViewStyle</item>
 
-        <item name="browsePaddingLeft">@dimen/lb_browse_padding_left</item>
-        <item name="browsePaddingRight">@dimen/lb_browse_padding_right</item>
+        <item name="browsePaddingStart">@dimen/lb_browse_padding_start</item>
+        <item name="browsePaddingEnd">@dimen/lb_browse_padding_end</item>
         <item name="browsePaddingTop">@dimen/lb_browse_padding_top</item>
         <item name="browsePaddingBottom">@dimen/lb_browse_padding_bottom</item>
         <item name="browseRowsMarginStart">@dimen/lb_browse_rows_margin_start</item>
@@ -61,6 +61,7 @@
         <item name="detailsDescriptionBodyStyle">@style/Widget.Leanback.DetailsDescriptionBodyStyle</item>
         <item name="detailsActionButtonStyle">@style/Widget.Leanback.DetailsActionButtonStyle</item>
         <item name="playbackControlsButtonStyle">@style/Widget.Leanback.PlaybackControlsButtonStyle</item>
+        <item name="playbackControlButtonLabelStyle">@style/Widget.Leanback.PlaybackControlLabelStyle</item>
         <item name="playbackControlsTimeStyle">@style/Widget.Leanback.PlaybackControlsTimeStyle</item>
         <item name="playbackControlsActionIcons">@style/Widget.Leanback.PlaybackControlsActionIconsStyle</item>
 
@@ -71,14 +72,31 @@
         <item name="defaultSearchBrightColor">@null</item>
         <item name="defaultSearchIcon">@null</item>
 
+        <!-- android:windowSharedElementEnterTransition is kept for backward compatibility for apps still refer
+        to Theme.Leanback, app should use Theme.Leanback.Details instead -->
         <item name="android:windowSharedElementEnterTransition">@transition/lb_shared_element_enter_transition</item>
-        <item name="android:windowEnterTransition">@transition/lb_enter_transition</item>
+        <!-- android:windowSharedElementReturnTransition is kept for backward compatibility for apps still refer
+        to Theme.Leanback, app should use Theme.Leanback.Details instead -->
         <item name="android:windowSharedElementReturnTransition">@transition/lb_shared_element_return_transition</item>
+        <item name="android:windowEnterTransition">@transition/lb_enter_transition</item>
         <item name="android:windowReturnTransition">@transition/lb_return_transition</item>
+        <item name="android:windowTransitionBackgroundFadeDuration">350</item>
 
         <item name="overlayDimMaskColor">@color/lb_view_dim_mask_color</item>
         <item name="overlayDimActiveLevel">@fraction/lb_view_active_level</item>
         <item name="overlayDimDimmedLevel">@fraction/lb_view_dimmed_level</item>
     </style>
 
+    <style name="Theme.Leanback.Browse" parent="Theme.Leanback">
+        <item name="android:windowEnterTransition">@transition/lb_browse_enter_transition</item>
+        <item name="android:windowReturnTransition">@transition/lb_browse_return_transition</item>
+    </style>
+
+    <style name="Theme.Leanback.Details" parent="Theme.Leanback">
+        <item name="android:windowEnterTransition">@transition/lb_details_enter_transition</item>
+        <item name="android:windowReturnTransition">@transition/lb_details_return_transition</item>
+        <item name="android:windowSharedElementEnterTransition">@transition/lb_shared_element_enter_transition</item>
+        <item name="android:windowSharedElementReturnTransition">@transition/lb_shared_element_return_transition</item>
+    </style>
+
 </resources>
diff --git a/sdk/extras/android/support/v4/android-support-v4.jar b/sdk/extras/android/support/v4/android-support-v4.jar
index 4ebdaa9..1437d24 100644
--- a/sdk/extras/android/support/v4/android-support-v4.jar
+++ b/sdk/extras/android/support/v4/android-support-v4.jar
Binary files differ
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/app/FragmentTransitionCompat21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/app/FragmentTransitionCompat21.java
index e6025e1..ef41045 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/app/FragmentTransitionCompat21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/app/FragmentTransitionCompat21.java
@@ -29,6 +29,7 @@
 import android.view.ViewTreeObserver;
 
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 class FragmentTransitionCompat21 {
@@ -44,7 +45,7 @@
     }
 
     public static Object captureExitingViews(Object exitTransition, View root,
-            ArrayList<View> viewList, Map<String, View> namedViews) {
+            ArrayList<View> viewList, Map<String, View> namedViews, View nonExistentView) {
         if (exitTransition != null) {
             captureTransitioningViews(viewList, root);
             if (namedViews != null) {
@@ -53,6 +54,7 @@
             if (viewList.isEmpty()) {
                 exitTransition = null;
             } else {
+                viewList.add(nonExistentView);
                 addTargets((Transition) exitTransition, viewList);
             }
         }
@@ -130,6 +132,8 @@
                                     if (enterTransition != null) {
                                         captureTransitioningViews(enteringViews, fragmentView);
                                         enteringViews.removeAll(renamedViews.values());
+                                        enteringViews.add(nonExistentView);
+                                        enterTransition.removeTarget(nonExistentView);
                                         addTargets(enterTransition, enteringViews);
                                     }
                                 }
@@ -304,22 +308,71 @@
         }
     }
 
+    /**
+     * This method removes the views from transitions that target ONLY those views.
+     * The views list should match those added in addTargets and should contain
+     * one view that is not in the view hierarchy (state.nonExistentView).
+     */
     public static void removeTargets(Object transitionObject, ArrayList<View> views) {
         Transition transition = (Transition) transitionObject;
-        int numViews = views.size();
-        for (int i = 0; i < numViews; i++) {
-            transition.removeTarget(views.get(i));
+        if (transition instanceof TransitionSet) {
+            TransitionSet set = (TransitionSet) transition;
+            int numTransitions = set.getTransitionCount();
+            for (int i = 0; i < numTransitions; i++) {
+                Transition child = set.getTransitionAt(i);
+                removeTargets(child, views);
+            }
+        } else if (!hasSimpleTarget(transition)) {
+            List<View> targets = transition.getTargets();
+            if (targets != null && targets.size() == views.size() &&
+                    targets.containsAll(views)) {
+                // We have an exact match. We must have added these earlier in addTargets
+                for (int i = views.size() - 1; i >= 0; i--) {
+                    transition.removeTarget(views.get(i));
+                }
+            }
         }
     }
 
+    /**
+     * This method adds views as targets to the transition, but only if the transition
+     * doesn't already have a target. It is best for views to contain one View object
+     * that does not exist in the view hierarchy (state.nonExistentView) so that
+     * when they are removed later, a list match will suffice to remove the targets.
+     * Otherwise, if you happened to have targeted the exact views for the transition,
+     * the removeTargets call will remove them unexpectedly.
+     */
     public static void addTargets(Object transitionObject, ArrayList<View> views) {
         Transition transition = (Transition) transitionObject;
-        int numViews = views.size();
-        for (int i = 0; i < numViews; i++) {
-            transition.addTarget(views.get(i));
+        if (transition instanceof TransitionSet) {
+            TransitionSet set = (TransitionSet) transition;
+            int numTransitions = set.getTransitionCount();
+            for (int i = 0; i < numTransitions; i++) {
+                Transition child = set.getTransitionAt(i);
+                addTargets(child, views);
+            }
+        } else if (!hasSimpleTarget(transition)) {
+            List<View> targets = transition.getTargets();
+            if (isNullOrEmpty(targets)) {
+                // We can just add the target views
+                int numViews = views.size();
+                for (int i = 0; i < numViews; i++) {
+                    transition.addTarget(views.get(i));
+                }
+            }
         }
     }
 
+    private static boolean hasSimpleTarget(Transition transition) {
+        return !isNullOrEmpty(transition.getTargetIds()) ||
+                !isNullOrEmpty(transition.getTargetNames()) ||
+                !isNullOrEmpty(transition.getTargetTypes());
+    }
+
+    private static boolean isNullOrEmpty(List list) {
+        return list == null || list.isEmpty();
+    }
+
     public interface ViewRetriever {
         View getView();
     }
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/content/res/ResourcesCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/content/res/ResourcesCompatApi21.java
index 645b633..2272c02 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/content/res/ResourcesCompatApi21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/content/res/ResourcesCompatApi21.java
@@ -17,11 +17,18 @@
 package android.support.v4.content.res;
 
 import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
 import android.content.res.Resources.Theme;
 import android.graphics.drawable.Drawable;
 
 class ResourcesCompatApi21 {
-    public static Drawable getDrawable(Resources res, int id, Theme theme) {
+    public static Drawable getDrawable(Resources res, int id, Theme theme)
+            throws NotFoundException {
         return res.getDrawable(id, theme);
     }
+
+    public static Drawable getDrawableForDensity(Resources res, int id, int density, Theme theme)
+            throws NotFoundException {
+        return res.getDrawableForDensity(id, density, theme);
+    }
 }
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/media/MediaDescriptionCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/media/MediaDescriptionCompatApi21.java
new file mode 100644
index 0000000..991515a
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/media/MediaDescriptionCompatApi21.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media;
+
+import android.graphics.Bitmap;
+import android.media.MediaDescription;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Parcel;
+
+public class MediaDescriptionCompatApi21 {
+
+    public static String getMediaId(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getMediaId();
+    }
+
+    public static CharSequence getTitle(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getTitle();
+    }
+
+    public static CharSequence getSubtitle(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getSubtitle();
+    }
+
+    public static CharSequence getDescription(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getDescription();
+    }
+
+    public static Bitmap getIconBitmap(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getIconBitmap();
+    }
+
+    public static Uri getIconUri(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getIconUri();
+    }
+
+    public static Bundle getExtras(Object descriptionObj) {
+        return ((MediaDescription) descriptionObj).getExtras();
+    }
+
+    public static void writeToParcel(Object descriptionObj, Parcel dest, int flags) {
+        ((MediaDescription) descriptionObj).writeToParcel(dest, flags);
+    }
+
+    public static Object fromParcel(Parcel in) {
+        return MediaDescription.CREATOR.createFromParcel(in);
+    }
+
+    public static class Builder {
+        public static Object newInstance() {
+            return new MediaDescription.Builder();
+        }
+
+
+        public static void setMediaId(Object builderObj, String mediaId) {
+            ((MediaDescription.Builder)builderObj).setMediaId(mediaId);
+        }
+
+        public static void setTitle(Object builderObj, CharSequence title) {
+            ((MediaDescription.Builder)builderObj).setTitle(title);
+        }
+
+        public static void setSubtitle(Object builderObj, CharSequence subtitle) {
+            ((MediaDescription.Builder)builderObj).setSubtitle(subtitle);
+        }
+
+        public static void setDescription(Object builderObj, CharSequence description) {
+            ((MediaDescription.Builder)builderObj).setDescription(description);
+        }
+
+        public static void setIconBitmap(Object builderObj, Bitmap iconBitmap) {
+            ((MediaDescription.Builder)builderObj).setIconBitmap(iconBitmap);
+        }
+
+        public static void setIconUri(Object builderObj, Uri iconUri) {
+            ((MediaDescription.Builder)builderObj).setIconUri(iconUri);
+        }
+
+        public static void setExtras(Object builderObj, Bundle extras) {
+            ((MediaDescription.Builder)builderObj).setExtras(extras);
+        }
+
+        public static Object build(Object builderObj) {
+            return ((MediaDescription.Builder) builderObj).build();
+        }
+    }
+}
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaControllerCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaControllerCompatApi21.java
index cf7dde5..6acf425 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaControllerCompatApi21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaControllerCompatApi21.java
@@ -16,6 +16,7 @@
 
 package android.support.v4.media.session;
 
+import android.app.PendingIntent;
 import android.content.Context;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
@@ -29,6 +30,9 @@
 import android.os.ResultReceiver;
 import android.view.KeyEvent;
 
+import java.util.ArrayList;
+import java.util.List;
+
 class MediaControllerCompatApi21 {
     public static Object fromToken(Context context, Object sessionToken) {
         return new MediaController(context, (MediaSession.Token) sessionToken);
@@ -60,21 +64,58 @@
         return ((MediaController)controllerObj).getMetadata();
     }
 
+    public static List<Object> getQueue(Object controllerObj) {
+        List<MediaSession.QueueItem> queue = ((MediaController) controllerObj).getQueue();
+        if (queue == null) {
+            return null;
+        }
+        List<Object> queueObjs = new ArrayList<Object>(queue);
+        return queueObjs;
+    }
+
+    public static CharSequence getQueueTitle(Object controllerObj) {
+        return ((MediaController) controllerObj).getQueueTitle();
+    }
+
+    public static Bundle getExtras(Object controllerObj) {
+        return ((MediaController) controllerObj).getExtras();
+    }
+
     public static int getRatingType(Object controllerObj) {
-        return ((MediaController)controllerObj).getRatingType();
+        return ((MediaController) controllerObj).getRatingType();
+    }
+
+    public static long getFlags(Object controllerObj) {
+        return ((MediaController) controllerObj).getFlags();
     }
 
     public static Object getPlaybackInfo(Object controllerObj) {
-        return ((MediaController)controllerObj).getPlaybackInfo();
+        return ((MediaController) controllerObj).getPlaybackInfo();
+    }
+
+    public static PendingIntent getSessionActivity(Object controllerObj) {
+        return ((MediaController) controllerObj).getSessionActivity();
     }
 
     public static boolean dispatchMediaButtonEvent(Object controllerObj, KeyEvent event) {
-        return ((MediaController)controllerObj).dispatchMediaButtonEvent(event);
+        return ((MediaController) controllerObj).dispatchMediaButtonEvent(event);
+    }
+
+    public static void setVolumeTo(Object controllerObj, int value, int flags) {
+        ((MediaController) controllerObj).setVolumeTo(value, flags);
+    }
+
+    public static void adjustVolume(Object controllerObj, int direction, int flags) {
+        ((MediaController) controllerObj).adjustVolume(direction, flags);
     }
 
     public static void sendCommand(Object controllerObj,
             String command, Bundle params, ResultReceiver cb) {
-        ((MediaController)controllerObj).sendCommand(command, params, cb);
+        ((MediaController) controllerObj).sendCommand(command, params, cb);
+    }
+
+    public static String getPackageName(Object controllerObj) {
+        return ((MediaController) controllerObj).getPackageName();
     }
 
     public static class TransportControls {
@@ -113,6 +154,22 @@
         public static void setRating(Object controlsObj, Object ratingObj) {
             ((MediaController.TransportControls)controlsObj).setRating((Rating)ratingObj);
         }
+
+        public static void playFromMediaId(Object controlsObj, String mediaId, Bundle extras) {
+            ((MediaController.TransportControls) controlsObj).playFromMediaId(mediaId, extras);
+        }
+
+        public static void playFromSearch(Object controlsObj, String query, Bundle extras) {
+            ((MediaController.TransportControls) controlsObj).playFromSearch(query, extras);
+        }
+
+        public static void skipToQueueItem(Object controlsObj, long id) {
+            ((MediaController.TransportControls) controlsObj).skipToQueueItem(id);
+        }
+
+        public static void sendCustomAction(Object controlsObj, String action, Bundle args) {
+            ((MediaController.TransportControls) controlsObj).sendCustomAction(action, args);
+        }
     }
 
     public static class PlaybackInfo {
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaSessionCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaSessionCompatApi21.java
index 4977cba..9b07ea0 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaSessionCompatApi21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/media/session/MediaSessionCompatApi21.java
@@ -16,9 +16,11 @@
 
 package android.support.v4.media.session;
 
+import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.media.AudioAttributes;
+import android.media.MediaDescription;
 import android.media.MediaMetadata;
 import android.media.Rating;
 import android.media.VolumeProvider;
@@ -29,6 +31,9 @@
 import android.os.Parcelable;
 import android.os.ResultReceiver;
 
+import java.util.ArrayList;
+import java.util.List;
+
 class MediaSessionCompatApi21 {
     public static Object createSession(Context context, String tag) {
         return new MediaSession(context, tag);
@@ -41,6 +46,13 @@
         throw new IllegalArgumentException("mediaSession is not a valid MediaSession object");
     }
 
+    public static Object verifyToken(Object token) {
+        if (token instanceof MediaSession.Token) {
+            return token;
+        }
+        throw new IllegalArgumentException("token is not a valid MediaSession.Token object");
+    }
+
     public static Object createCallback(Callback callback) {
         return new CallbackProxy<Callback>(callback);
     }
@@ -92,10 +104,41 @@
         ((MediaSession)sessionObj).setMetadata((MediaMetadata)metadataObj);
     }
 
+    public static void setSessionActivity(Object sessionObj, PendingIntent pi) {
+        ((MediaSession) sessionObj).setSessionActivity(pi);
+    }
+
+    public static void setMediaButtonReceiver(Object sessionObj, PendingIntent pi) {
+        ((MediaSession) sessionObj).setMediaButtonReceiver(pi);
+    }
+
+    public static void setQueue(Object sessionObj, List<Object> queueObjs) {
+        if (queueObjs == null) {
+            ((MediaSession) sessionObj).setQueue(null);
+            return;
+        }
+        ArrayList<MediaSession.QueueItem> queue = new ArrayList<MediaSession.QueueItem>();
+        for (Object itemObj : queueObjs) {
+            queue.add((MediaSession.QueueItem) itemObj);
+        }
+        ((MediaSession) sessionObj).setQueue(queue);
+    }
+
+    public static void setQueueTitle(Object sessionObj, CharSequence title) {
+        ((MediaSession) sessionObj).setQueueTitle(title);
+    }
+
+    public static void setExtras(Object sessionObj, Bundle extras) {
+        ((MediaSession) sessionObj).setExtras(extras);
+    }
+
     public static interface Callback {
         public void onCommand(String command, Bundle extras, ResultReceiver cb);
         public boolean onMediaButtonEvent(Intent mediaButtonIntent);
         public void onPlay();
+        public void onPlayFromMediaId(String mediaId, Bundle extras);
+        public void onPlayFromSearch(String search, Bundle extras);
+        public void onSkipToQueueItem(long id);
         public void onPause();
         public void onSkipToNext();
         public void onSkipToPrevious();
@@ -104,6 +147,7 @@
         public void onStop();
         public void onSeekTo(long pos);
         public void onSetRating(Object ratingObj);
+        public void onCustomAction(String action, Bundle extras);
     }
 
     static class CallbackProxy<T extends Callback> extends MediaSession.Callback {
@@ -168,4 +212,19 @@
             mCallback.onSetRating(rating);
         }
     }
+
+    static class QueueItem {
+
+        public static Object createItem(Object mediaDescription, long id) {
+            return new MediaSession.QueueItem((MediaDescription) mediaDescription, id);
+        }
+
+        public static Object getDescription(Object queueItem) {
+            return ((MediaSession.QueueItem) queueItem).getDescription();
+        }
+
+        public static long getQueueId(Object queueItem) {
+            return ((MediaSession.QueueItem) queueItem).getQueueId();
+        }
+    }
 }
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/view/ViewCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/view/ViewCompatApi21.java
index ad343b7..6d00e0a 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/view/ViewCompatApi21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/view/ViewCompatApi21.java
@@ -63,4 +63,8 @@
             }
         });
     }
+
+    public static boolean isImportantForAccessibility(View view) {
+        return view.isImportantForAccessibility();
+    }
 }
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi21.java
index df4d299..0ae3a5c 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi21.java
@@ -30,10 +30,8 @@
         return (List<Object>) result;
     }
 
-    static void addAction(Object info, int id, CharSequence label) {
-        AccessibilityNodeInfo.AccessibilityAction aa =
-                new AccessibilityNodeInfo.AccessibilityAction(id, label);
-        ((AccessibilityNodeInfo) info).addAction(aa);
+    static void addAction(Object info, Object action) {
+        ((AccessibilityNodeInfo) info).addAction((AccessibilityAction) action);
     }
 
     public static Object obtainCollectionInfo(int rowCount, int columnCount,
@@ -54,13 +52,15 @@
         }
     }
 
-    static class AccessibilityAction {
-        static int getId(Object action) {
-            return ((AccessibilityNodeInfo.AccessibilityAction) action).getId();
-        }
+    static Object newAccessibilityAction(int actionId, CharSequence label) {
+        return new AccessibilityAction(actionId, label);
+    }
 
-        static CharSequence getLabel(Object action) {
-            return ((AccessibilityNodeInfo.AccessibilityAction) action).getLabel();
-        }
+    static int getAccessibilityActionId(Object action) {
+        return ((AccessibilityNodeInfo.AccessibilityAction) action).getId();
+    }
+
+    static CharSequence getAccessibilityActionLabel(Object action) {
+        return ((AccessibilityNodeInfo.AccessibilityAction) action).getLabel();
     }
 }
diff --git a/sdk/extras/android/support/v4/src/api21/android/support/v4/widget/DrawerLayoutCompatApi21.java b/sdk/extras/android/support/v4/src/api21/android/support/v4/widget/DrawerLayoutCompatApi21.java
index 12e9555..07cc3fa 100644
--- a/sdk/extras/android/support/v4/src/api21/android/support/v4/widget/DrawerLayoutCompatApi21.java
+++ b/sdk/extras/android/support/v4/src/api21/android/support/v4/widget/DrawerLayoutCompatApi21.java
@@ -17,6 +17,9 @@
 
 package android.support.v4.widget;
 
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
 import android.view.Gravity;
 import android.view.View;
 import android.view.ViewGroup;
@@ -26,6 +29,11 @@
  * Provides functionality for DrawerLayout unique to API 21
  */
 class DrawerLayoutCompatApi21 {
+
+    private static final int[] THEME_ATTRS = {
+            android.R.attr.colorPrimaryDark
+    };
+
     public static void configureApplyInsets(View drawerLayout) {
         if (drawerLayout instanceof DrawerLayoutImpl) {
             drawerLayout.setOnApplyWindowInsetsListener(new InsetsListener());
@@ -66,6 +74,15 @@
         return insets != null ? ((WindowInsets) insets).getSystemWindowInsetTop() : 0;
     }
 
+    public static Drawable getDefaultStatusBarBackground(Context context) {
+        final TypedArray a = context.obtainStyledAttributes(THEME_ATTRS);
+        try {
+            return a.getDrawable(0);
+        } finally {
+            a.recycle();
+        }
+    }
+
     static class InsetsListener implements View.OnApplyWindowInsetsListener {
         @Override
         public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
diff --git a/sdk/extras/android/support/v4/src/api22/android/support/v4/media/session/MediaSessionCompatApi22.java b/sdk/extras/android/support/v4/src/api22/android/support/v4/media/session/MediaSessionCompatApi22.java
new file mode 100644
index 0000000..b847778
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/api22/android/support/v4/media/session/MediaSessionCompatApi22.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media.session;
+
+import android.media.session.MediaSession;
+
+class MediaSessionCompatApi22 {
+
+    public static void setRatingType(Object sessionObj, int type) {
+        ((MediaSession) sessionObj).setRatingType(type);
+    }
+}
diff --git a/sdk/extras/android/support/v4/src/api22/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi22.java b/sdk/extras/android/support/v4/src/api22/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi22.java
new file mode 100644
index 0000000..786318d
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/api22/android/support/v4/view/accessibility/AccessibilityNodeInfoCompatApi22.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.support.v4.view.accessibility;
+
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.View;
+
+/**
+ * Api22-specific AccessibilityNodeInfo API implementation.
+ */
+class AccessibilityNodeInfoCompatApi22 {
+
+    public static Object getTraversalBefore(Object info) {
+        return ((AccessibilityNodeInfo) info).getTraversalBefore();
+    }
+
+    public static void setTraversalBefore(Object info, View view) {
+        ((AccessibilityNodeInfo) info).setTraversalBefore(view);
+    }
+
+    public static void setTraversalBefore(Object info, View root, int virtualDescendantId) {
+        ((AccessibilityNodeInfo) info).setTraversalBefore(root, virtualDescendantId);
+    }
+
+    public static Object getTraversalAfter(Object info) {
+        return ((AccessibilityNodeInfo) info).getTraversalAfter();
+    }
+
+    public static void setTraversalAfter(Object info, View view) {
+        ((AccessibilityNodeInfo) info).setTraversalAfter(view);
+    }
+
+    public static void setTraversalAfter(Object info, View root, int virtualDescendantId) {
+        ((AccessibilityNodeInfo) info).setTraversalAfter(root, virtualDescendantId);
+    }
+}
diff --git a/sdk/extras/android/support/v4/src/build.gradle b/sdk/extras/android/support/v4/src/build.gradle
index fed5c24..026819e 100644
--- a/sdk/extras/android/support/v4/src/build.gradle
+++ b/sdk/extras/android/support/v4/src/build.gradle
@@ -27,8 +27,9 @@
 def jbMr1SS        = createApiSourceset('jellybeanmr1', 'jellybean-mr1', '17',      jbSS)
 def jbMr2SS        = createApiSourceset('jellybeanmr2', 'jellybean-mr2', '18',      jbMr1SS)
 def kitkatSS       = createApiSourceset('kitkat',       'kitkat',        '19',      jbMr2SS)
-def api20SS        = createApiSourceset('api20',        'api20',         'current', kitkatSS)
-def api21SS        = createApiSourceset('api21',        'api21',         'current', api20SS)
+def api20SS        = createApiSourceset('api20',        'api20',         '20', kitkatSS)
+def api21SS        = createApiSourceset('api21',        'api21',         '21', api20SS)
+def api22SS        = createApiSourceset('api22',        'api22',         'current', api21SS)
 
 
 def createApiSourceset(String name, String folder, String apiLevel, SourceSet previousSource) {
@@ -55,6 +56,7 @@
 
 dependencies {
     compile project(':support-annotations')
+    donutCompile project(':support-annotations')
 
     // add the internal implementation as a dependency.
     // this is not enough to make the regular compileJava task
@@ -65,7 +67,6 @@
 
 android {
     compileSdkVersion 4
-    buildToolsVersion "19.0.1"
 
     defaultConfig {
         minSdkVersion 4
@@ -93,7 +94,7 @@
 
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -104,9 +105,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -116,12 +117,12 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     project.ext.allSS.each { ss ->
-        javadocTask.source ss.allJava
-        sourcesJarTask.from ss.allSource
+        javadocTask.source ss.java
+        sourcesJarTask.from ss.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/sdk/extras/android/support/v4/src/froyo/android/support/v4/media/session/MediaSessionCompatApi8.java b/sdk/extras/android/support/v4/src/froyo/android/support/v4/media/session/MediaSessionCompatApi8.java
new file mode 100644
index 0000000..f49eb2b
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/froyo/android/support/v4/media/session/MediaSessionCompatApi8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media.session;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.media.AudioManager;
+
+public class MediaSessionCompatApi8 {
+    public static void registerMediaButtonEventReceiver(Context context, ComponentName mbr) {
+        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        am.registerMediaButtonEventReceiver(mbr);
+    }
+
+    public static void unregisterMediaButtonEventReceiver(Context context, ComponentName mbr) {
+        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        am.unregisterMediaButtonEventReceiver(mbr);
+    }
+}
\ No newline at end of file
diff --git a/sdk/extras/android/support/v4/src/honeycomb/android/support/v4/view/ViewCompatHC.java b/sdk/extras/android/support/v4/src/honeycomb/android/support/v4/view/ViewCompatHC.java
index 1c35bd3..fbcc31e 100644
--- a/sdk/extras/android/support/v4/src/honeycomb/android/support/v4/view/ViewCompatHC.java
+++ b/sdk/extras/android/support/v4/src/honeycomb/android/support/v4/view/ViewCompatHC.java
@@ -148,4 +148,12 @@
     public static void jumpDrawablesToCurrentState(View view) {
         view.jumpDrawablesToCurrentState();
     }
+
+    public static void setSaveFromParentEnabled(View view, boolean enabled) {
+        view.setSaveFromParentEnabled(enabled);
+    }
+
+    public static void setActivated(View view, boolean activated) {
+        view.setActivated(activated);
+    }
 }
diff --git a/sdk/extras/android/support/v4/src/ics-mr1/android/support/v4/content/res/ResourcesCompatIcsMr1.java b/sdk/extras/android/support/v4/src/ics-mr1/android/support/v4/content/res/ResourcesCompatIcsMr1.java
new file mode 100644
index 0000000..8e14256
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/ics-mr1/android/support/v4/content/res/ResourcesCompatIcsMr1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.support.v4.content.res;
+
+import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
+import android.content.res.Resources.Theme;
+import android.graphics.drawable.Drawable;
+
+class ResourcesCompatIcsMr1 {
+    public static Drawable getDrawableForDensity(Resources res, int id, int density)
+            throws NotFoundException {
+        return res.getDrawableForDensity(id, density);
+    }
+}
diff --git a/sdk/extras/android/support/v4/src/ics/android/support/v4/media/session/MediaSessionCompatApi14.java b/sdk/extras/android/support/v4/src/ics/android/support/v4/media/session/MediaSessionCompatApi14.java
new file mode 100644
index 0000000..ff4660e
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/ics/android/support/v4/media/session/MediaSessionCompatApi14.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media.session;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.media.AudioManager;
+import android.media.MediaMetadataRetriever;
+import android.media.RemoteControlClient;
+import android.os.Bundle;
+import android.os.ResultReceiver;
+
+public class MediaSessionCompatApi14 {
+    /***** RemoteControlClient States, we only need none as the others were public *******/
+    final static int RCC_PLAYSTATE_NONE = 0;
+
+    /***** MediaSession States *******/
+    final static int STATE_NONE = 0;
+    final static int STATE_STOPPED = 1;
+    final static int STATE_PAUSED = 2;
+    final static int STATE_PLAYING = 3;
+    final static int STATE_FAST_FORWARDING = 4;
+    final static int STATE_REWINDING = 5;
+    final static int STATE_BUFFERING = 6;
+    final static int STATE_ERROR = 7;
+    final static int STATE_CONNECTING = 8;
+    final static int STATE_SKIPPING_TO_PREVIOUS = 9;
+    final static int STATE_SKIPPING_TO_NEXT = 10;
+
+    /***** MediaMetadata keys ********/
+    private static final String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
+    private static final String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
+    private static final String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
+    private static final String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
+    private static final String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
+    private static final String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
+    private static final String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
+    private static final String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
+    private static final String METADATA_KEY_DATE = "android.media.metadata.DATE";
+    private static final String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
+    private static final String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
+    private static final String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
+    private static final String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
+    private static final String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
+    private static final String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
+
+    public static Object createRemoteControlClient(PendingIntent mbIntent) {
+        return new RemoteControlClient(mbIntent);
+    }
+
+    public static void setState(Object rccObj, int state) {
+        ((RemoteControlClient) rccObj).setPlaybackState(getRccStateFromState(state));
+    }
+
+    public static void setMetadata(Object rccObj, Bundle metadata) {
+        RemoteControlClient.MetadataEditor editor = ((RemoteControlClient) rccObj).editMetadata(
+                true);
+        buildOldMetadata(metadata, editor);
+        editor.apply();
+    }
+
+    public static void registerRemoteControlClient(Context context, Object rccObj) {
+        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        am.registerRemoteControlClient((RemoteControlClient) rccObj);
+    }
+
+    public static void unregisterRemoteControlClient(Context context, Object rccObj) {
+        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        am.unregisterRemoteControlClient((RemoteControlClient) rccObj);
+    }
+
+    static int getRccStateFromState(int state) {
+        switch (state) {
+            case STATE_CONNECTING:
+            case STATE_BUFFERING:
+                return RemoteControlClient.PLAYSTATE_BUFFERING;
+            case STATE_ERROR:
+                return RemoteControlClient.PLAYSTATE_ERROR;
+            case STATE_FAST_FORWARDING:
+                return RemoteControlClient.PLAYSTATE_FAST_FORWARDING;
+            case STATE_NONE:
+                return RCC_PLAYSTATE_NONE;
+            case STATE_PAUSED:
+                return RemoteControlClient.PLAYSTATE_PAUSED;
+            case STATE_PLAYING:
+                return RemoteControlClient.PLAYSTATE_PLAYING;
+            case STATE_REWINDING:
+                return RemoteControlClient.PLAYSTATE_REWINDING;
+            case STATE_SKIPPING_TO_PREVIOUS:
+                return RemoteControlClient.PLAYSTATE_SKIPPING_BACKWARDS;
+            case STATE_SKIPPING_TO_NEXT:
+                return RemoteControlClient.PLAYSTATE_SKIPPING_FORWARDS;
+            case STATE_STOPPED:
+                return RemoteControlClient.PLAYSTATE_STOPPED;
+            default:
+                return -1;
+        }
+    }
+
+    static void buildOldMetadata(Bundle metadata, RemoteControlClient.MetadataEditor editor) {
+        if (metadata.containsKey(METADATA_KEY_ALBUM)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM,
+                    metadata.getString(METADATA_KEY_ALBUM));
+        }
+        if (metadata.containsKey(METADATA_KEY_ALBUM_ARTIST)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST,
+                    metadata.getString(METADATA_KEY_ALBUM_ARTIST));
+        }
+        if (metadata.containsKey(METADATA_KEY_ARTIST)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST,
+                    metadata.getString(METADATA_KEY_ARTIST));
+        }
+        if (metadata.containsKey(METADATA_KEY_AUTHOR)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_AUTHOR,
+                    metadata.getString(METADATA_KEY_AUTHOR));
+        }
+        if (metadata.containsKey(METADATA_KEY_COMPILATION)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_COMPILATION,
+                    metadata.getString(METADATA_KEY_COMPILATION));
+        }
+        if (metadata.containsKey(METADATA_KEY_COMPOSER)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_COMPOSER,
+                    metadata.getString(METADATA_KEY_COMPOSER));
+        }
+        if (metadata.containsKey(METADATA_KEY_DATE)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_DATE,
+                    metadata.getString(METADATA_KEY_DATE));
+        }
+        if (metadata.containsKey(METADATA_KEY_DISC_NUMBER)) {
+            editor.putLong(MediaMetadataRetriever.METADATA_KEY_DISC_NUMBER,
+                    metadata.getLong(METADATA_KEY_DISC_NUMBER));
+        }
+        if (metadata.containsKey(METADATA_KEY_DURATION)) {
+            editor.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION,
+                    metadata.getLong(METADATA_KEY_DURATION));
+        }
+        if (metadata.containsKey(METADATA_KEY_GENRE)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_GENRE,
+                    metadata.getString(METADATA_KEY_GENRE));
+        }
+        if (metadata.containsKey(METADATA_KEY_NUM_TRACKS)) {
+            editor.putLong(MediaMetadataRetriever.METADATA_KEY_NUM_TRACKS,
+                    metadata.getLong(METADATA_KEY_NUM_TRACKS));
+        }
+        if (metadata.containsKey(METADATA_KEY_TITLE)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE,
+                    metadata.getString(METADATA_KEY_TITLE));
+        }
+        if (metadata.containsKey(METADATA_KEY_TRACK_NUMBER)) {
+            editor.putLong(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER,
+                    metadata.getLong(METADATA_KEY_TRACK_NUMBER));
+        }
+        if (metadata.containsKey(METADATA_KEY_WRITER)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_WRITER,
+                    metadata.getString(METADATA_KEY_WRITER));
+        }
+        if (metadata.containsKey(METADATA_KEY_YEAR)) {
+            editor.putString(MediaMetadataRetriever.METADATA_KEY_YEAR,
+                    metadata.getString(METADATA_KEY_YEAR));
+        }
+    }
+
+    public static interface Callback {
+        public void onCommand(String command, Bundle extras, ResultReceiver cb);
+
+        public boolean onMediaButtonEvent(Intent mediaButtonIntent);
+
+        public void onPlay();
+
+        public void onPause();
+
+        public void onSkipToNext();
+
+        public void onSkipToPrevious();
+
+        public void onFastForward();
+
+        public void onRewind();
+
+        public void onStop();
+
+        public void onSeekTo(long pos);
+
+        public void onSetRating(Object ratingObj);
+    }
+}
\ No newline at end of file
diff --git a/sdk/extras/android/support/v4/src/ics/android/support/v4/view/ViewCompatICS.java b/sdk/extras/android/support/v4/src/ics/android/support/v4/view/ViewCompatICS.java
index 82aeaf3..742c47c 100644
--- a/sdk/extras/android/support/v4/src/ics/android/support/v4/view/ViewCompatICS.java
+++ b/sdk/extras/android/support/v4/src/ics/android/support/v4/view/ViewCompatICS.java
@@ -16,6 +16,7 @@
 
 package android.support.v4.view;
 
+import android.support.annotation.Nullable;
 import android.view.View;
 import android.view.View.AccessibilityDelegate;
 import android.view.accessibility.AccessibilityEvent;
@@ -34,7 +35,7 @@
         return v.canScrollVertically(direction);
     }
 
-    public static void setAccessibilityDelegate(View v, Object delegate) {
+    public static void setAccessibilityDelegate(View v, @Nullable Object delegate) {
         v.setAccessibilityDelegate((AccessibilityDelegate) delegate);
     }
 
@@ -49,4 +50,8 @@
     public static void onInitializeAccessibilityNodeInfo(View v, Object info) {
         v.onInitializeAccessibilityNodeInfo((AccessibilityNodeInfo) info);
     }
+
+    public static void setFitsSystemWindows(View view, boolean fitSystemWindows) {
+        view.setFitsSystemWindows(fitSystemWindows);
+    }
 }
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/app/BackStackRecord.java b/sdk/extras/android/support/v4/src/java/android/support/v4/app/BackStackRecord.java
index ab23a6f..da9354e 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/app/BackStackRecord.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/app/BackStackRecord.java
@@ -1076,10 +1076,10 @@
     }
 
     private static Object captureExitingViews(Object exitTransition, Fragment outFragment,
-            ArrayList<View> exitingViews, ArrayMap<String, View> namedViews) {
+            ArrayList<View> exitingViews, ArrayMap<String, View> namedViews, View nonExistentView) {
         if (exitTransition != null) {
             exitTransition = FragmentTransitionCompat21.captureExitingViews(exitTransition,
-                    outFragment.getView(), exitingViews, namedViews);
+                    outFragment.getView(), exitingViews, namedViews, nonExistentView);
         }
         return exitTransition;
     }
@@ -1147,11 +1147,8 @@
         ArrayList<View> sharedElementTargets = new ArrayList<View>();
         if (sharedElementTransition != null) {
             namedViews = remapSharedElements(state, outFragment, isBack);
-            if (namedViews.isEmpty()) {
-                sharedElementTargets.add(state.nonExistentView);
-            } else {
-                sharedElementTargets.addAll(namedViews.values());
-            }
+            sharedElementTargets.add(state.nonExistentView);
+            sharedElementTargets.addAll(namedViews.values());
 
             // Notify the start of the transition.
             SharedElementCallback callback = isBack ?
@@ -1166,7 +1163,7 @@
 
         ArrayList<View> exitingViews = new ArrayList<View>();
         exitTransition = captureExitingViews(exitTransition, outFragment, exitingViews,
-                namedViews);
+                namedViews, state.nonExistentView);
 
         // Set the epicenter of the exit transition
         if (mSharedElementTargetNames != null && namedViews != null) {
@@ -1243,11 +1240,8 @@
 
                     ArrayMap<String, View> namedViews = mapSharedElementsIn(
                             state, isBack, inFragment);
-                    if (namedViews.isEmpty()) {
-                        sharedElementTargets.add(state.nonExistentView);
-                    } else {
-                        sharedElementTargets.addAll(namedViews.values());
-                    }
+                    sharedElementTargets.add(state.nonExistentView);
+                    sharedElementTargets.addAll(namedViews.values());
                     FragmentTransitionCompat21.addTargets(sharedElementTransition,
                             sharedElementTargets);
 
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/app/FragmentManager.java b/sdk/extras/android/support/v4/src/java/android/support/v4/app/FragmentManager.java
index 7116ee3..ee596f9 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/app/FragmentManager.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/app/FragmentManager.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -28,6 +29,7 @@
 import android.support.annotation.StringRes;
 import android.support.v4.util.DebugUtils;
 import android.support.v4.util.LogWriter;
+import android.support.v4.view.ViewCompat;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.SparseArray;
@@ -921,7 +923,11 @@
                                 f.mSavedFragmentState), null, f.mSavedFragmentState);
                         if (f.mView != null) {
                             f.mInnerView = f.mView;
-                            f.mView = NoSaveStateFrameLayout.wrap(f.mView);
+                            if (Build.VERSION.SDK_INT >= 11) {
+                                ViewCompat.setSaveFromParentEnabled(f.mView, false);
+                            } else {
+                                f.mView = NoSaveStateFrameLayout.wrap(f.mView);
+                            }
                             if (f.mHidden) f.mView.setVisibility(View.GONE);
                             f.onViewCreated(f.mView, f.mSavedFragmentState);
                         } else {
@@ -948,7 +954,11 @@
                                     f.mSavedFragmentState), container, f.mSavedFragmentState);
                             if (f.mView != null) {
                                 f.mInnerView = f.mView;
-                                f.mView = NoSaveStateFrameLayout.wrap(f.mView);
+                                if (Build.VERSION.SDK_INT >= 11) {
+                                    ViewCompat.setSaveFromParentEnabled(f.mView, false);
+                                } else {
+                                    f.mView = NoSaveStateFrameLayout.wrap(f.mView);
+                                }
                                 if (container != null) {
                                     Animation anim = loadAnimation(f, transit, true,
                                             transitionStyle);
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/app/NotificationCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/app/NotificationCompat.java
index a92c934..e007bcd 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/app/NotificationCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/app/NotificationCompat.java
@@ -3061,7 +3061,7 @@
              * Gets the list of messages conveyed by this notification.
              */
             @Override
-            String[] getMessages() {
+            public String[] getMessages() {
                 return mMessages;
             }
 
@@ -3070,7 +3070,7 @@
              * null if no such remote input exists.
              */
             @Override
-            RemoteInput getRemoteInput() {
+            public RemoteInput getRemoteInput() {
                 return mRemoteInput;
             }
 
@@ -3079,7 +3079,7 @@
              * notification.
              */
             @Override
-            PendingIntent getReplyPendingIntent() {
+            public PendingIntent getReplyPendingIntent() {
                 return mReplyPendingIntent;
             }
 
@@ -3088,7 +3088,7 @@
              * in this object's message list.
              */
             @Override
-            PendingIntent getReadPendingIntent() {
+            public PendingIntent getReadPendingIntent() {
                 return mReadPendingIntent;
             }
 
@@ -3096,7 +3096,7 @@
              * Gets the participants in the conversation.
              */
             @Override
-            String[] getParticipants() {
+            public String[] getParticipants() {
                 return mParticipants;
             }
 
@@ -3104,7 +3104,7 @@
              * Gets the firs participant in the conversation.
              */
             @Override
-            String getParticipant() {
+            public String getParticipant() {
                 return mParticipants.length > 0 ? mParticipants[0] : null;
             }
 
@@ -3112,7 +3112,7 @@
              * Gets the timestamp of the conversation.
              */
             @Override
-            long getLatestTimestamp() {
+            public long getLatestTimestamp() {
                 return mLatestTimestamp;
             }
 
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/app/SharedElementCallback.java b/sdk/extras/android/support/v4/src/java/android/support/v4/app/SharedElementCallback.java
index 545edd0..7c0de86 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/app/SharedElementCallback.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/app/SharedElementCallback.java
@@ -20,11 +20,15 @@
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
+import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
 import android.os.Parcelable;
 import android.view.View;
 import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
 
 import java.util.List;
 import java.util.Map;
@@ -38,6 +42,10 @@
  */
 public abstract class SharedElementCallback {
     private Matrix mTempMatrix;
+    private static int MAX_IMAGE_SIZE = (1024 * 1024);
+    private static final String BUNDLE_SNAPSHOT_BITMAP = "sharedElement:snapshot:bitmap";
+    private static final String BUNDLE_SNAPSHOT_IMAGE_SCALETYPE = "sharedElement:snapshot:imageScaleType";
+    private static final String BUNDLE_SNAPSHOT_IMAGE_MATRIX = "sharedElement:snapshot:imageMatrix";
 
     /**
      * Called immediately after the start state is set for the shared element.
@@ -138,15 +146,40 @@
      */
     public Parcelable onCaptureSharedElementSnapshot(View sharedElement, Matrix viewToGlobalMatrix,
             RectF screenBounds) {
+        if (sharedElement instanceof ImageView) {
+            ImageView imageView = ((ImageView) sharedElement);
+            Drawable d = imageView.getDrawable();
+            Drawable bg = imageView.getBackground();
+            if (d != null && bg == null) {
+                Bitmap bitmap = createDrawableBitmap(d);
+                if (bitmap != null) {
+                    Bundle bundle = new Bundle();
+                    bundle.putParcelable(BUNDLE_SNAPSHOT_BITMAP, bitmap);
+                    bundle.putString(BUNDLE_SNAPSHOT_IMAGE_SCALETYPE,
+                            imageView.getScaleType().toString());
+                    if (imageView.getScaleType() == ScaleType.MATRIX) {
+                        Matrix matrix = imageView.getImageMatrix();
+                        float[] values = new float[9];
+                        matrix.getValues(values);
+                        bundle.putFloatArray(BUNDLE_SNAPSHOT_IMAGE_MATRIX, values);
+                    }
+                    return bundle;
+                }
+            }
+        }
         int bitmapWidth = Math.round(screenBounds.width());
         int bitmapHeight = Math.round(screenBounds.height());
         Bitmap bitmap = null;
         if (bitmapWidth > 0 && bitmapHeight > 0) {
+            float scale = Math.min(1f, ((float)MAX_IMAGE_SIZE) / (bitmapWidth * bitmapHeight));
+            bitmapWidth *= scale;
+            bitmapHeight *= scale;
             if (mTempMatrix == null) {
                 mTempMatrix = new Matrix();
             }
             mTempMatrix.set(viewToGlobalMatrix);
             mTempMatrix.postTranslate(-screenBounds.left, -screenBounds.top);
+            mTempMatrix.postScale(scale, scale);
             bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
             Canvas canvas = new Canvas(bitmap);
             canvas.concat(mTempMatrix);
@@ -156,6 +189,35 @@
     }
 
     /**
+     * Get a copy of bitmap of given drawable.
+     */
+    private static Bitmap createDrawableBitmap(Drawable drawable) {
+        int width = drawable.getIntrinsicWidth();
+        int height = drawable.getIntrinsicHeight();
+        if (width <= 0 || height <= 0) {
+            return null;
+        }
+        float scale = Math.min(1f, ((float)MAX_IMAGE_SIZE) / (width * height));
+        if (drawable instanceof BitmapDrawable && scale == 1f) {
+            // return same bitmap if scale down not needed
+            return ((BitmapDrawable) drawable).getBitmap();
+        }
+        int bitmapWidth = (int) (width * scale);
+        int bitmapHeight = (int) (height * scale);
+        Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(bitmap);
+        Rect existingBounds = drawable.getBounds();
+        int left = existingBounds.left;
+        int top = existingBounds.top;
+        int right = existingBounds.right;
+        int bottom = existingBounds.bottom;
+        drawable.setBounds(0, 0, bitmapWidth, bitmapHeight);
+        drawable.draw(canvas);
+        drawable.setBounds(left, top, right, bottom);
+        return bitmap;
+    }
+
+    /**
      * Reconstitutes a snapshot View from a Parcelable returned in
      * {@link #onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix,
      * android.graphics.RectF)} to be used in {@link #onSharedElementStart(java.util.List,
@@ -174,7 +236,24 @@
      */
     public View onCreateSnapshotView(Context context, Parcelable snapshot) {
         ImageView view = null;
-        if (snapshot instanceof Bitmap) {
+        if (snapshot instanceof Bundle) {
+            Bundle bundle = (Bundle) snapshot;
+            Bitmap bitmap = (Bitmap) bundle.getParcelable(BUNDLE_SNAPSHOT_BITMAP);
+            if (bitmap == null) {
+                return null;
+            }
+            ImageView imageView = new ImageView(context);
+            view = imageView;
+            imageView.setImageBitmap(bitmap);
+            imageView.setScaleType(
+                    ScaleType.valueOf(bundle.getString(BUNDLE_SNAPSHOT_IMAGE_SCALETYPE)));
+            if (imageView.getScaleType() == ScaleType.MATRIX) {
+                float[] values = bundle.getFloatArray(BUNDLE_SNAPSHOT_IMAGE_MATRIX);
+                Matrix matrix = new Matrix();
+                matrix.setValues(values);
+                imageView.setImageMatrix(matrix);
+            }
+        } else if (snapshot instanceof Bitmap) {
             Bitmap bitmap = (Bitmap) snapshot;
             view = new ImageView(context);
             view.setImageBitmap(bitmap);
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/content/res/ResourcesCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/content/res/ResourcesCompat.java
index 85a05c3..252977b 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/content/res/ResourcesCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/content/res/ResourcesCompat.java
@@ -39,11 +39,13 @@
      * @param id The desired resource identifier, as generated by the aapt
      *           tool. This integer encodes the package, type, and resource
      *           entry. The value 0 is an invalid identifier.
-     * @param theme The theme used to style the drawable attributes, may be {@code null}.
+     * @param theme The theme used to style the drawable attributes, may be
+     *              {@code null}.
      * @return Drawable An object that can be used to draw this resource.
      * @throws NotFoundException Throws NotFoundException if the given ID does
      *         not exist.
      */
+    @SuppressWarnings("deprecation")
     public static Drawable getDrawable(Resources res, int id, Theme theme)
             throws NotFoundException {
         final int version = Build.VERSION.SDK_INT;
@@ -53,4 +55,39 @@
             return res.getDrawable(id);
         }
     }
+
+
+    /**
+     * Return a drawable object associated with a particular resource ID for
+     * the given screen density in DPI and styled for the specified theme.
+     * <p>
+     * Prior to API level 15, the theme and density will not be applied and
+     * this method simply calls through to {@link Resources#getDrawable(int)}.
+     * <p>
+     * Prior to API level 21, the theme will not be applied and this method
+     * calls through to Resources.getDrawableForDensity(int, int).
+     *
+     * @param id The desired resource identifier, as generated by the aapt
+     *           tool. This integer encodes the package, type, and resource
+     *           entry. The value 0 is an invalid identifier.
+     * @param density The desired screen density indicated by the resource as
+     *                found in {@link android.util.DisplayMetrics}.
+     * @param theme The theme used to style the drawable attributes, may be
+     *              {@code null}.
+     * @return Drawable An object that can be used to draw this resource.
+     * @throws NotFoundException Throws NotFoundException if the given ID does
+     *             not exist.
+     */
+    @SuppressWarnings("deprecation")
+    public static Drawable getDrawableForDensity(Resources res, int id, int density, Theme theme)
+            throws NotFoundException {
+        final int version = Build.VERSION.SDK_INT;
+        if (version >= 21) {
+            return ResourcesCompatApi21.getDrawableForDensity(res, id, density, theme);
+        } else if (version >= 15) {
+            return ResourcesCompatIcsMr1.getDrawableForDensity(res, id, density);
+        } else {
+            return res.getDrawable(id);
+        }
+    }
 }
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaDescriptionCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaDescriptionCompat.java
new file mode 100644
index 0000000..39e3a24
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaDescriptionCompat.java
@@ -0,0 +1,359 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media;
+
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+
+/**
+ * A simple set of metadata for a media item suitable for display. This can be
+ * created using the Builder or retrieved from existing metadata using
+ * {@link MediaMetadataCompat#getDescription()}.
+ */
+public final class MediaDescriptionCompat implements Parcelable {
+    /**
+     * A unique persistent id for the content or null.
+     */
+    private final String mMediaId;
+    /**
+     * A primary title suitable for display or null.
+     */
+    private final CharSequence mTitle;
+    /**
+     * A subtitle suitable for display or null.
+     */
+    private final CharSequence mSubtitle;
+    /**
+     * A description suitable for display or null.
+     */
+    private final CharSequence mDescription;
+    /**
+     * A bitmap icon suitable for display or null.
+     */
+    private final Bitmap mIcon;
+    /**
+     * A Uri for an icon suitable for display or null.
+     */
+    private final Uri mIconUri;
+    /**
+     * Extras for opaque use by apps/system.
+     */
+    private final Bundle mExtras;
+
+    /**
+     * A cached copy of the equivalent framework object.
+     */
+    private Object mDescriptionObj;
+
+    private MediaDescriptionCompat(String mediaId, CharSequence title, CharSequence subtitle,
+            CharSequence description, Bitmap icon, Uri iconUri, Bundle extras) {
+        mMediaId = mediaId;
+        mTitle = title;
+        mSubtitle = subtitle;
+        mDescription = description;
+        mIcon = icon;
+        mIconUri = iconUri;
+        mExtras = extras;
+    }
+
+    private MediaDescriptionCompat(Parcel in) {
+        mMediaId = in.readString();
+        mTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
+        mSubtitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
+        mDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
+        mIcon = in.readParcelable(null);
+        mIconUri = in.readParcelable(null);
+        mExtras = in.readBundle();
+    }
+
+    /**
+     * Returns the media id or null. See
+     * {@link MediaMetadataCompat#METADATA_KEY_MEDIA_ID}.
+     */
+    public String getMediaId() {
+        return mMediaId;
+    }
+
+    /**
+     * Returns a title suitable for display or null.
+     *
+     * @return A title or null.
+     */
+    public CharSequence getTitle() {
+        return mTitle;
+    }
+
+    /**
+     * Returns a subtitle suitable for display or null.
+     *
+     * @return A subtitle or null.
+     */
+    public CharSequence getSubtitle() {
+        return mSubtitle;
+    }
+
+    /**
+     * Returns a description suitable for display or null.
+     *
+     * @return A description or null.
+     */
+    public CharSequence getDescription() {
+        return mDescription;
+    }
+
+    /**
+     * Returns a bitmap icon suitable for display or null.
+     *
+     * @return An icon or null.
+     */
+    public Bitmap getIconBitmap() {
+        return mIcon;
+    }
+
+    /**
+     * Returns a Uri for an icon suitable for display or null.
+     *
+     * @return An icon uri or null.
+     */
+    public Uri getIconUri() {
+        return mIconUri;
+    }
+
+    /**
+     * Returns any extras that were added to the description.
+     *
+     * @return A bundle of extras or null.
+     */
+    public Bundle getExtras() {
+        return mExtras;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        if (Build.VERSION.SDK_INT < 21) {
+            dest.writeString(mMediaId);
+            TextUtils.writeToParcel(mTitle, dest, flags);
+            TextUtils.writeToParcel(mSubtitle, dest, flags);
+            TextUtils.writeToParcel(mDescription, dest, flags);
+            dest.writeParcelable(mIcon, flags);
+            dest.writeParcelable(mIconUri, flags);
+            dest.writeBundle(mExtras);
+        } else {
+            MediaDescriptionCompatApi21.writeToParcel(getMediaDescription(), dest, flags);
+        }
+    }
+
+    @Override
+    public String toString() {
+        return mTitle + ", " + mSubtitle + ", " + mDescription;
+    }
+
+    /**
+     * Gets the underlying framework {@link android.media.MediaDescription}
+     * object.
+     * <p>
+     * This method is only supported on
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP} and later.
+     * </p>
+     *
+     * @return An equivalent {@link android.media.MediaDescription} object, or
+     *         null if none.
+     */
+    public Object getMediaDescription() {
+        if (mDescriptionObj != null || Build.VERSION.SDK_INT < 21) {
+            return mDescriptionObj;
+        }
+        Object bob = MediaDescriptionCompatApi21.Builder.newInstance();
+        MediaDescriptionCompatApi21.Builder.setMediaId(bob, mMediaId);
+        MediaDescriptionCompatApi21.Builder.setTitle(bob, mTitle);
+        MediaDescriptionCompatApi21.Builder.setSubtitle(bob, mSubtitle);
+        MediaDescriptionCompatApi21.Builder.setDescription(bob, mDescription);
+        MediaDescriptionCompatApi21.Builder.setIconBitmap(bob, mIcon);
+        MediaDescriptionCompatApi21.Builder.setIconUri(bob, mIconUri);
+        MediaDescriptionCompatApi21.Builder.setExtras(bob, mExtras);
+        mDescriptionObj = MediaDescriptionCompatApi21.Builder.build(bob);
+
+        return mDescriptionObj;
+    }
+
+    /**
+     * Creates an instance from a framework
+     * {@link android.media.MediaDescription} object.
+     * <p>
+     * This method is only supported on API 21+.
+     * </p>
+     *
+     * @param descriptionObj A {@link android.media.MediaDescription} object, or
+     *            null if none.
+     * @return An equivalent {@link MediaMetadataCompat} object, or null if
+     *         none.
+     */
+    public static MediaDescriptionCompat fromMediaDescription(Object descriptionObj) {
+        if (descriptionObj == null || Build.VERSION.SDK_INT < 21) {
+            return null;
+        }
+
+        Builder bob = new Builder();
+        bob.setMediaId(MediaDescriptionCompatApi21.getMediaId(descriptionObj));
+        bob.setTitle(MediaDescriptionCompatApi21.getTitle(descriptionObj));
+        bob.setSubtitle(MediaDescriptionCompatApi21.getSubtitle(descriptionObj));
+        bob.setDescription(MediaDescriptionCompatApi21.getDescription(descriptionObj));
+        bob.setIconBitmap(MediaDescriptionCompatApi21.getIconBitmap(descriptionObj));
+        bob.setIconUri(MediaDescriptionCompatApi21.getIconUri(descriptionObj));
+        bob.setExtras(MediaDescriptionCompatApi21.getExtras(descriptionObj));
+        MediaDescriptionCompat descriptionCompat = bob.build();
+        descriptionCompat.mDescriptionObj = descriptionObj;
+
+        return descriptionCompat;
+    }
+
+    public static final Parcelable.Creator<MediaDescriptionCompat> CREATOR =
+            new Parcelable.Creator<MediaDescriptionCompat>() {
+            @Override
+                public MediaDescriptionCompat createFromParcel(Parcel in) {
+                    if (Build.VERSION.SDK_INT < 21) {
+                        return new MediaDescriptionCompat(in);
+                    } else {
+                        return fromMediaDescription(MediaDescriptionCompatApi21.fromParcel(in));
+                    }
+                }
+
+            @Override
+                public MediaDescriptionCompat[] newArray(int size) {
+                    return new MediaDescriptionCompat[size];
+                }
+            };
+
+    /**
+     * Builder for {@link MediaDescriptionCompat} objects.
+     */
+    public static final class Builder {
+        private String mMediaId;
+        private CharSequence mTitle;
+        private CharSequence mSubtitle;
+        private CharSequence mDescription;
+        private Bitmap mIcon;
+        private Uri mIconUri;
+        private Bundle mExtras;
+
+        /**
+         * Creates an initially empty builder.
+         */
+        public Builder() {
+        }
+
+        /**
+         * Sets the media id.
+         *
+         * @param mediaId The unique id for the item or null.
+         * @return this
+         */
+        public Builder setMediaId(String mediaId) {
+            mMediaId = mediaId;
+            return this;
+        }
+
+        /**
+         * Sets the title.
+         *
+         * @param title A title suitable for display to the user or null.
+         * @return this
+         */
+        public Builder setTitle(CharSequence title) {
+            mTitle = title;
+            return this;
+        }
+
+        /**
+         * Sets the subtitle.
+         *
+         * @param subtitle A subtitle suitable for display to the user or null.
+         * @return this
+         */
+        public Builder setSubtitle(CharSequence subtitle) {
+            mSubtitle = subtitle;
+            return this;
+        }
+
+        /**
+         * Sets the description.
+         *
+         * @param description A description suitable for display to the user or
+         *            null.
+         * @return this
+         */
+        public Builder setDescription(CharSequence description) {
+            mDescription = description;
+            return this;
+        }
+
+        /**
+         * Sets the icon.
+         *
+         * @param icon A {@link Bitmap} icon suitable for display to the user or
+         *            null.
+         * @return this
+         */
+        public Builder setIconBitmap(Bitmap icon) {
+            mIcon = icon;
+            return this;
+        }
+
+        /**
+         * Sets the icon uri.
+         *
+         * @param iconUri A {@link Uri} for an icon suitable for display to the
+         *            user or null.
+         * @return this
+         */
+        public Builder setIconUri(Uri iconUri) {
+            mIconUri = iconUri;
+            return this;
+        }
+
+        /**
+         * Sets a bundle of extras.
+         *
+         * @param extras The extras to include with this description or null.
+         * @return this
+         */
+        public Builder setExtras(Bundle extras) {
+            mExtras = extras;
+            return this;
+        }
+
+        /**
+         * Creates a {@link MediaDescriptionCompat} instance with the specified
+         * fields.
+         *
+         * @return A MediaDescriptionCompat instance.
+         */
+        public MediaDescriptionCompat build() {
+            return new MediaDescriptionCompat(mMediaId, mTitle, mSubtitle, mDescription, mIcon,
+                    mIconUri, mExtras);
+        }
+    }
+}
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.aidl
new file mode 100644
index 0000000..6d36b97
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.aidl
@@ -0,0 +1,18 @@
+/* Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.support.v4.media;
+
+parcelable MediaMetadataCompat;
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.java
index d289cad..3807480 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/MediaMetadataCompat.java
@@ -16,11 +16,13 @@
 package android.support.v4.media;
 
 import android.graphics.Bitmap;
+import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.support.v4.util.ArrayMap;
+import android.text.TextUtils;
 import android.util.Log;
 
 import java.util.Set;
@@ -184,6 +186,13 @@
     public static final String METADATA_KEY_DISPLAY_ICON_URI
             = "android.media.metadata.DISPLAY_ICON_URI";
 
+    /**
+     * A String key for identifying the content. This value is specific to the
+     * service providing the content. If used, this should be a persistent
+     * unique key for the underlying content.
+     */
+    public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
+
     private static final int METADATA_TYPE_LONG = 0;
     private static final int METADATA_TYPE_TEXT = 1;
     private static final int METADATA_TYPE_BITMAP = 2;
@@ -218,10 +227,34 @@
         METADATA_KEYS_TYPE.put(METADATA_KEY_DISPLAY_DESCRIPTION, METADATA_TYPE_TEXT);
         METADATA_KEYS_TYPE.put(METADATA_KEY_DISPLAY_ICON, METADATA_TYPE_BITMAP);
         METADATA_KEYS_TYPE.put(METADATA_KEY_DISPLAY_ICON_URI, METADATA_TYPE_TEXT);
+        METADATA_KEYS_TYPE.put(METADATA_KEY_MEDIA_ID, METADATA_TYPE_TEXT);
     }
 
+    private static final String[] PREFERRED_DESCRIPTION_ORDER = {
+            METADATA_KEY_TITLE,
+            METADATA_KEY_ARTIST,
+            METADATA_KEY_ALBUM,
+            METADATA_KEY_ALBUM_ARTIST,
+            METADATA_KEY_WRITER,
+            METADATA_KEY_AUTHOR,
+            METADATA_KEY_COMPOSER
+    };
+
+    private static final String[] PREFERRED_BITMAP_ORDER = {
+            METADATA_KEY_DISPLAY_ICON,
+            METADATA_KEY_ART,
+            METADATA_KEY_ALBUM_ART
+    };
+
+    private static final String[] PREFERRED_URI_ORDER = {
+            METADATA_KEY_DISPLAY_ICON_URI,
+            METADATA_KEY_ART_URI,
+            METADATA_KEY_ALBUM_ART_URI
+    };
+
     private final Bundle mBundle;
     private Object mMetadataObj;
+    private MediaDescriptionCompat mDescription;
 
     private MediaMetadataCompat(Bundle bundle) {
         mBundle = new Bundle(bundle);
@@ -316,6 +349,73 @@
         return bmp;
     }
 
+    /**
+     * Returns a simple description of this metadata for display purposes.
+     *
+     * @return A simple description of this metadata.
+     */
+    public MediaDescriptionCompat getDescription() {
+        if (mDescription != null) {
+            return mDescription;
+        }
+
+        String mediaId = getString(METADATA_KEY_MEDIA_ID);
+
+        CharSequence[] text = new CharSequence[3];
+        Bitmap icon = null;
+        Uri iconUri = null;
+
+        // First handle the case where display data is set already
+        CharSequence displayText = getText(METADATA_KEY_DISPLAY_TITLE);
+        if (!TextUtils.isEmpty(displayText)) {
+            // If they have a display title use only display data, otherwise use
+            // our best bets
+            text[0] = displayText;
+            text[1] = getText(METADATA_KEY_DISPLAY_SUBTITLE);
+            text[2] = getText(METADATA_KEY_DISPLAY_DESCRIPTION);
+        } else {
+            // Use whatever fields we can
+            int textIndex = 0;
+            int keyIndex = 0;
+            while (textIndex < text.length && keyIndex < PREFERRED_DESCRIPTION_ORDER.length) {
+                CharSequence next = getText(PREFERRED_DESCRIPTION_ORDER[keyIndex++]);
+                if (!TextUtils.isEmpty(next)) {
+                    // Fill in the next empty bit of text
+                    text[textIndex++] = next;
+                }
+            }
+        }
+
+        // Get the best art bitmap we can find
+        for (int i = 0; i < PREFERRED_BITMAP_ORDER.length; i++) {
+            Bitmap next = getBitmap(PREFERRED_BITMAP_ORDER[i]);
+            if (next != null) {
+                icon = next;
+                break;
+            }
+        }
+
+        // Get the best Uri we can find
+        for (int i = 0; i < PREFERRED_URI_ORDER.length; i++) {
+            String next = getString(PREFERRED_URI_ORDER[i]);
+            if (!TextUtils.isEmpty(next)) {
+                iconUri = Uri.parse(next);
+                break;
+            }
+        }
+
+        MediaDescriptionCompat.Builder bob = new MediaDescriptionCompat.Builder();
+        bob.setMediaId(mediaId);
+        bob.setTitle(text[0]);
+        bob.setSubtitle(text[1]);
+        bob.setDescription(text[2]);
+        bob.setIconBitmap(icon);
+        bob.setIconUri(iconUri);
+        mDescription = bob.build();
+
+        return mDescription;
+    }
+
     @Override
     public int describeContents() {
         return 0;
@@ -345,13 +445,27 @@
     }
 
     /**
-     * Creates an instance from a framework {@link android.media.MediaMetadata} object.
+     * Gets the bundle backing the metadata object. This is available to support
+     * backwards compatibility. Apps should not modify the bundle directly.
+     *
+     * @return The Bundle backing this metadata.
+     */
+    public Bundle getBundle() {
+        return mBundle;
+    }
+
+    /**
+     * Creates an instance from a framework {@link android.media.MediaMetadata}
+     * object.
      * <p>
-     * This method is only supported on API 21+.
+     * This method is only supported on
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP} and later.
      * </p>
      *
-     * @param metadataObj A {@link android.media.MediaMetadata} object, or null if none.
-     * @return An equivalent {@link MediaMetadataCompat} object, or null if none.
+     * @param metadataObj A {@link android.media.MediaMetadata} object, or null
+     *            if none.
+     * @return An equivalent {@link MediaMetadataCompat} object, or null if
+     *         none.
      */
     public static MediaMetadataCompat fromMediaMetadata(Object metadataObj) {
         if (metadataObj == null || Build.VERSION.SDK_INT < 21) {
@@ -390,10 +504,12 @@
     /**
      * Gets the underlying framework {@link android.media.MediaMetadata} object.
      * <p>
-     * This method is only supported on API 21+.
+     * This method is only supported on
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP} and later.
      * </p>
      *
-     * @return An equivalent {@link android.media.MediaMetadata} object, or null if none.
+     * @return An equivalent {@link android.media.MediaMetadata} object, or null
+     *         if none.
      */
     public Object getMediaMetadata() {
         if (mMetadataObj != null || Build.VERSION.SDK_INT < 21) {
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/RatingCompat.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/RatingCompat.aidl
new file mode 100644
index 0000000..223fd5c
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/RatingCompat.aidl
@@ -0,0 +1,18 @@
+/* Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.support.v4.media;
+
+parcelable RatingCompat;
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/IMediaControllerCallback.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/IMediaControllerCallback.aidl
new file mode 100644
index 0000000..d905350
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/IMediaControllerCallback.aidl
@@ -0,0 +1,40 @@
+/* Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.support.v4.media.session;
+
+import android.os.Bundle;
+import android.support.v4.media.MediaMetadataCompat;
+import android.support.v4.media.session.ParcelableVolumeInfo;
+import android.support.v4.media.session.PlaybackStateCompat;
+import android.support.v4.media.session.MediaSessionCompat;
+
+/**
+ * Callback interface for a MediaSessionCompat to send updates to a
+ * MediaControllerCompat. This is only used on pre-Lollipop systems.
+ * @hide
+ */
+oneway interface IMediaControllerCallback {
+    void onEvent(String event, in Bundle extras);
+    void onSessionDestroyed();
+
+    // These callbacks are for the TransportController
+    void onPlaybackStateChanged(in PlaybackStateCompat state);
+    void onMetadataChanged(in MediaMetadataCompat metadata);
+    void onQueueChanged(in List<MediaSessionCompat.QueueItem> queue);
+    void onQueueTitleChanged(CharSequence title);
+    void onExtrasChanged(in Bundle extras);
+    void onVolumeInfoChanged(in ParcelableVolumeInfo info);
+}
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/IMediaSession.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/IMediaSession.aidl
new file mode 100644
index 0000000..1ce425d
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/IMediaSession.aidl
@@ -0,0 +1,69 @@
+/* Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.support.v4.media.session;
+
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.support.v4.media.MediaMetadataCompat;
+import android.support.v4.media.RatingCompat;
+import android.support.v4.media.session.IMediaControllerCallback;
+import android.support.v4.media.session.ParcelableVolumeInfo;
+import android.support.v4.media.session.PlaybackStateCompat;
+import android.support.v4.media.session.MediaSessionCompat;
+import android.os.Bundle;
+import android.view.KeyEvent;
+
+import java.util.List;
+
+/**
+ * Interface to a MediaSessionCompat. This is only used on pre-Lollipop systems.
+ * @hide
+ */
+interface IMediaSession {
+    void sendCommand(String command, in Bundle args, in MediaSessionCompat.ResultReceiverWrapper cb);
+    boolean sendMediaButton(in KeyEvent mediaButton);
+    void registerCallbackListener(in IMediaControllerCallback cb);
+    void unregisterCallbackListener(in IMediaControllerCallback cb);
+    boolean isTransportControlEnabled();
+    String getPackageName();
+    String getTag();
+    PendingIntent getLaunchPendingIntent();
+    long getFlags();
+    ParcelableVolumeInfo getVolumeAttributes();
+    void adjustVolume(int direction, int flags, String packageName);
+    void setVolumeTo(int value, int flags, String packageName);
+
+    // These commands are for the TransportControls
+    void play();
+    void playFromMediaId(String uri, in Bundle extras);
+    void playFromSearch(String string, in Bundle extras);
+    void skipToQueueItem(long id);
+    void pause();
+    void stop();
+    void next();
+    void previous();
+    void fastForward();
+    void rewind();
+    void seekTo(long pos);
+    void rate(in RatingCompat rating);
+    void sendCustomAction(String action, in Bundle args);
+    MediaMetadataCompat getMetadata();
+    PlaybackStateCompat getPlaybackState();
+    List<MediaSessionCompat.QueueItem> getQueue();
+    CharSequence getQueueTitle();
+    Bundle getExtras();
+    int getRatingType();
+}
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaControllerCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaControllerCompat.java
index 9b07694..ef99f43 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaControllerCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaControllerCompat.java
@@ -16,17 +16,29 @@
 
 package android.support.v4.media.session;
 
+import android.app.PendingIntent;
 import android.content.Context;
+import android.media.AudioManager;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.support.v4.media.MediaMetadataCompat;
 import android.support.v4.media.RatingCompat;
 import android.support.v4.media.VolumeProviderCompat;
+import android.support.v4.media.session.MediaSessionCompat.QueueItem;
+import android.support.v4.media.session.PlaybackStateCompat.CustomAction;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.KeyEvent;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Allows an app to interact with an ongoing media session. Media buttons and
  * other commands can be sent to the session. A callback may be registered to
@@ -41,7 +53,10 @@
  * introduced after API level 4 in a backwards compatible fashion.
  */
 public final class MediaControllerCompat {
+    private static final String TAG = "MediaControllerCompat";
+
     private final MediaControllerImpl mImpl;
+    private final MediaSessionCompat.Token mToken;
 
     /**
      * Creates a media controller from a session.
@@ -52,11 +67,12 @@
         if (session == null) {
             throw new IllegalArgumentException("session must not be null");
         }
+        mToken = session.getSessionToken();
 
         if (android.os.Build.VERSION.SDK_INT >= 21) {
             mImpl = new MediaControllerImplApi21(context, session);
         } else {
-            mImpl = new MediaControllerImplBase();
+            mImpl = new MediaControllerImplBase(mToken);
         }
     }
 
@@ -72,11 +88,12 @@
         if (sessionToken == null) {
             throw new IllegalArgumentException("sessionToken must not be null");
         }
+        mToken = sessionToken;
 
         if (android.os.Build.VERSION.SDK_INT >= 21) {
             mImpl = new MediaControllerImplApi21(context, sessionToken);
         } else {
-            mImpl = new MediaControllerImplBase();
+            mImpl = new MediaControllerImplBase(mToken);
         }
     }
 
@@ -122,6 +139,30 @@
     }
 
     /**
+     * Get the current play queue for this session if one is set. If you only
+     * care about the current item {@link #getMetadata()} should be used.
+     *
+     * @return The current play queue or null.
+     */
+    public List<MediaSessionCompat.QueueItem> getQueue() {
+        return mImpl.getQueue();
+    }
+
+    /**
+     * Get the queue title for this session.
+     */
+    public CharSequence getQueueTitle() {
+        return mImpl.getQueueTitle();
+    }
+
+    /**
+     * Get the extras for this session.
+     */
+    public Bundle getExtras() {
+        return mImpl.getExtras();
+    }
+
+    /**
      * Get the rating type supported by the session. One of:
      * <ul>
      * <li>{@link RatingCompat#RATING_NONE}</li>
@@ -140,6 +181,16 @@
     }
 
     /**
+     * Get the flags for this session. Flags are defined in
+     * {@link MediaSessionCompat}.
+     *
+     * @return The current set of flags for the session.
+     */
+    public long getFlags() {
+        return mImpl.getFlags();
+    }
+
+    /**
      * Get the current playback info for this session.
      *
      * @return The current playback info or null.
@@ -149,6 +200,57 @@
     }
 
     /**
+     * Get an intent for launching UI associated with this session if one
+     * exists.
+     *
+     * @return A {@link PendingIntent} to launch UI or null.
+     */
+    public PendingIntent getSessionActivity() {
+        return mImpl.getSessionActivity();
+    }
+
+    /**
+     * Get the token for the session this controller is connected to.
+     *
+     * @return The session's token.
+     */
+    public MediaSessionCompat.Token getSessionToken() {
+        return mToken;
+    }
+
+    /**
+     * Set the volume of the output this session is playing on. The command will
+     * be ignored if it does not support
+     * {@link VolumeProviderCompat#VOLUME_CONTROL_ABSOLUTE}. The flags in
+     * {@link AudioManager} may be used to affect the handling.
+     *
+     * @see #getPlaybackInfo()
+     * @param value The value to set it to, between 0 and the reported max.
+     * @param flags Flags from {@link AudioManager} to include with the volume
+     *            request.
+     */
+    public void setVolumeTo(int value, int flags) {
+        mImpl.setVolumeTo(value, flags);
+    }
+
+    /**
+     * Adjust the volume of the output this session is playing on. The direction
+     * must be one of {@link AudioManager#ADJUST_LOWER},
+     * {@link AudioManager#ADJUST_RAISE}, or {@link AudioManager#ADJUST_SAME}.
+     * The command will be ignored if the session does not support
+     * {@link VolumeProviderCompat#VOLUME_CONTROL_RELATIVE} or
+     * {@link VolumeProviderCompat#VOLUME_CONTROL_ABSOLUTE}. The flags in
+     * {@link AudioManager} may be used to affect the handling.
+     *
+     * @see #getPlaybackInfo()
+     * @param direction The direction to adjust the volume in.
+     * @param flags Any flags to pass with the command.
+     */
+    public void adjustVolume(int direction, int flags) {
+        mImpl.adjustVolume(direction, flags);
+    }
+
+    /**
      * Adds a callback to receive updates from the Session. Updates will be
      * posted on the caller's thread.
      *
@@ -206,13 +308,23 @@
     }
 
     /**
-     * Gets the underlying framework {@link android.media.session.MediaController} object.
+     * Get the session owner's package name.
+     *
+     * @return The package name of of the session owner.
+     */
+    public String getPackageName() {
+        return mImpl.getPackageName();
+    }
+
+    /**
+     * Gets the underlying framework
+     * {@link android.media.session.MediaController} object.
      * <p>
      * This method is only supported on API 21+.
      * </p>
      *
-     * @return The underlying {@link android.media.session.MediaController} object,
-     * or null if none.
+     * @return The underlying {@link android.media.session.MediaController}
+     *         object, or null if none.
      */
     public Object getMediaController() {
         return mImpl.getMediaController();
@@ -222,14 +334,17 @@
      * Callback for receiving updates on from the session. A Callback can be
      * registered using {@link #registerCallback}
      */
-    public static abstract class Callback {
-        final Object mCallbackObj;
+    public static abstract class Callback implements IBinder.DeathRecipient {
+        private final Object mCallbackObj;
+        private MessageHandler mHandler;
+
+        private boolean mRegistered = false;
 
         public Callback() {
             if (android.os.Build.VERSION.SDK_INT >= 21) {
                 mCallbackObj = MediaControllerCompatApi21.createCallback(new StubApi21());
             } else {
-                mCallbackObj = null;
+                mCallbackObj = new StubCompat();
             }
         }
 
@@ -268,6 +383,56 @@
         public void onMetadataChanged(MediaMetadataCompat metadata) {
         }
 
+        /**
+         * Override to handle changes to items in the queue.
+         *
+         * @see MediaSessionCompat.QueueItem
+         * @param queue A list of items in the current play queue. It should
+         *            include the currently playing item as well as previous and
+         *            upcoming items if applicable.
+         */
+        public void onQueueChanged(List<MediaSessionCompat.QueueItem> queue) {
+        }
+
+        /**
+         * Override to handle changes to the queue title.
+         *
+         * @param title The title that should be displayed along with the play
+         *            queue such as "Now Playing". May be null if there is no
+         *            such title.
+         */
+        public void onQueueTitleChanged(CharSequence title) {
+        }
+
+        /**
+         * Override to handle chagnes to the {@link MediaSessionCompat} extras.
+         *
+         * @param extras The extras that can include other information
+         *            associated with the {@link MediaSessionCompat}.
+         */
+        public void onExtrasChanged(Bundle extras) {
+        }
+
+        /**
+         * Override to handle changes to the audio info.
+         *
+         * @param info The current audio info for this session.
+         */
+        public void onAudioInfoChanged(PlaybackInfo info) {
+        }
+
+        @Override
+        public void binderDied() {
+            onSessionDestroyed();
+        }
+
+        /**
+         * Set the handler to use for pre 21 callbacks.
+         */
+        private void setHandler(Handler handler) {
+            mHandler = new MessageHandler(handler.getLooper());
+        }
+
         private class StubApi21 implements MediaControllerCompatApi21.Callback {
             @Override
             public void onSessionDestroyed() {
@@ -291,6 +456,106 @@
                         MediaMetadataCompat.fromMediaMetadata(metadataObj));
             }
         }
+
+        private class StubCompat extends IMediaControllerCallback.Stub {
+
+            @Override
+            public void onEvent(String event, Bundle extras) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_EVENT, event, extras);
+            }
+
+            @Override
+            public void onSessionDestroyed() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_DESTROYED, null, null);
+            }
+
+            @Override
+            public void onPlaybackStateChanged(PlaybackStateCompat state) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_UPDATE_PLAYBACK_STATE, state, null);
+            }
+
+            @Override
+            public void onMetadataChanged(MediaMetadataCompat metadata) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_UPDATE_METADATA, metadata, null);
+            }
+
+            @Override
+            public void onQueueChanged(List<QueueItem> queue) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_UPDATE_QUEUE, queue, null);
+            }
+
+            @Override
+            public void onQueueTitleChanged(CharSequence title) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_UPDATE_QUEUE_TITLE, title, null);
+            }
+
+            @Override
+            public void onExtrasChanged(Bundle extras) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_UPDATE_EXTRAS, extras, null);
+            }
+
+            @Override
+            public void onVolumeInfoChanged(ParcelableVolumeInfo info) throws RemoteException {
+                PlaybackInfo pi = null;
+                if (info != null) {
+                    pi = new PlaybackInfo(info.volumeType, info.audioStream, info.controlType,
+                            info.maxVolume, info.currentVolume);
+                }
+                mHandler.post(MessageHandler.MSG_UPDATE_VOLUME, pi, null);
+            }
+        }
+
+        private class MessageHandler extends Handler {
+            private static final int MSG_EVENT = 1;
+            private static final int MSG_UPDATE_PLAYBACK_STATE = 2;
+            private static final int MSG_UPDATE_METADATA = 3;
+            private static final int MSG_UPDATE_VOLUME = 4;
+            private static final int MSG_UPDATE_QUEUE = 5;
+            private static final int MSG_UPDATE_QUEUE_TITLE = 6;
+            private static final int MSG_UPDATE_EXTRAS = 7;
+            private static final int MSG_DESTROYED = 8;
+
+            public MessageHandler(Looper looper) {
+                super(looper);
+            }
+
+            @Override
+            public void handleMessage(Message msg) {
+                if (!mRegistered) {
+                    return;
+                }
+                switch (msg.what) {
+                    case MSG_EVENT:
+                        onSessionEvent((String) msg.obj, msg.getData());
+                        break;
+                    case MSG_UPDATE_PLAYBACK_STATE:
+                        onPlaybackStateChanged((PlaybackStateCompat) msg.obj);
+                        break;
+                    case MSG_UPDATE_METADATA:
+                        onMetadataChanged((MediaMetadataCompat) msg.obj);
+                        break;
+                    case MSG_UPDATE_QUEUE:
+                        onQueueChanged((List<MediaSessionCompat.QueueItem>) msg.obj);
+                        break;
+                    case MSG_UPDATE_QUEUE_TITLE:
+                        onQueueTitleChanged((CharSequence) msg.obj);
+                        break;
+                    case MSG_UPDATE_EXTRAS:
+                        onExtrasChanged((Bundle) msg.obj);
+                        break;
+                    case MSG_UPDATE_VOLUME:
+                        onAudioInfoChanged((PlaybackInfo) msg.obj);
+                        break;
+                    case MSG_DESTROYED:
+                        onSessionDestroyed();
+                        break;
+                }
+            }
+
+            public void post(int what, Object obj, Bundle data) {
+                obtainMessage(what, obj).sendToTarget();
+            }
+        }
     }
 
     /**
@@ -307,6 +572,32 @@
         public abstract void play();
 
         /**
+         * Request that the player start playback for a specific {@link Uri}.
+         *
+         * @param mediaId The uri of the requested media.
+         * @param extras Optional extras that can include extra information
+         *            about the media item to be played.
+         */
+        public abstract void playFromMediaId(String mediaId, Bundle extras);
+
+        /**
+         * Request that the player start playback for a specific search query.
+         * An empty or null query should be treated as a request to play any
+         * music.
+         *
+         * @param query The search query.
+         * @param extras Optional extras that can include extra information
+         *            about the query.
+         */
+        public abstract void playFromSearch(String query, Bundle extras);
+
+        /**
+         * Play an item with a specific id in the play queue. If you specify an
+         * id that is not in the play queue, the behavior is undefined.
+         */
+        public abstract void skipToQueueItem(long id);
+
+        /**
          * Request that the player pause its playback and stay at its current
          * position.
          */
@@ -355,6 +646,30 @@
          * @param rating The rating to set for the current content
          */
         public abstract void setRating(RatingCompat rating);
+
+        /**
+         * Send a custom action for the {@link MediaSessionCompat} to perform.
+         *
+         * @param customAction The action to perform.
+         * @param args Optional arguments to supply to the
+         *            {@link MediaSessionCompat} for this custom action.
+         */
+        public abstract void sendCustomAction(PlaybackStateCompat.CustomAction customAction,
+                Bundle args);
+
+        /**
+         * Send the id and args from a custom action for the
+         * {@link MediaSessionCompat} to perform.
+         *
+         * @see #sendCustomAction(PlaybackStateCompat.CustomAction action,
+         *      Bundle args)
+         * @param action The action identifier of the
+         *            {@link PlaybackStateCompat.CustomAction} as specified by
+         *            the {@link MediaSessionCompat}.
+         * @param args Optional arguments to supply to the
+         *            {@link MediaSessionCompat} for this custom action.
+         */
+        public abstract void sendCustomAction(String action, Bundle args);
     }
 
     /**
@@ -406,6 +721,7 @@
          * @return The stream this session is playing on.
          */
         public int getAudioStream() {
+            // TODO switch to AudioAttributesCompat when it is added.
             return mAudioStream;
         }
 
@@ -451,54 +767,215 @@
         TransportControls getTransportControls();
         PlaybackStateCompat getPlaybackState();
         MediaMetadataCompat getMetadata();
+
+        List<MediaSessionCompat.QueueItem> getQueue();
+        CharSequence getQueueTitle();
+        Bundle getExtras();
         int getRatingType();
+        long getFlags();
         PlaybackInfo getPlaybackInfo();
+        PendingIntent getSessionActivity();
+
+        void setVolumeTo(int value, int flags);
+        void adjustVolume(int direction, int flags);
         void sendCommand(String command, Bundle params, ResultReceiver cb);
+
+        String getPackageName();
         Object getMediaController();
     }
 
-    // TODO: compatibility implementation
     static class MediaControllerImplBase implements MediaControllerImpl {
+        private MediaSessionCompat.Token mToken;
+        private IMediaSession mBinder;
+        private TransportControls mTransportControls;
+
+        public MediaControllerImplBase(MediaSessionCompat.Token token) {
+            mToken = token;
+            mBinder = IMediaSession.Stub.asInterface((IBinder) token.getToken());
+        }
+
         @Override
         public void registerCallback(Callback callback, Handler handler) {
+            if (callback == null) {
+                throw new IllegalArgumentException("callback may not be null.");
+            }
+            try {
+                mBinder.asBinder().linkToDeath(callback, 0);
+                mBinder.registerCallbackListener((IMediaControllerCallback) callback.mCallbackObj);
+                callback.setHandler(handler);
+                callback.mRegistered = true;
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in registerCallback. " + e);
+                callback.onSessionDestroyed();
+            }
         }
 
         @Override
         public void unregisterCallback(Callback callback) {
+            if (callback == null) {
+                throw new IllegalArgumentException("callback may not be null.");
+            }
+            try {
+                mBinder.unregisterCallbackListener(
+                        (IMediaControllerCallback) callback.mCallbackObj);
+                mBinder.asBinder().unlinkToDeath(callback, 0);
+                callback.mRegistered = false;
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in unregisterCallback. " + e);
+            }
         }
 
         @Override
         public boolean dispatchMediaButtonEvent(KeyEvent event) {
+            if (event == null) {
+                throw new IllegalArgumentException("event may not be null.");
+            }
+            try {
+                mBinder.sendMediaButton(event);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in dispatchMediaButtonEvent. " + e);
+            }
             return false;
         }
 
         @Override
         public TransportControls getTransportControls() {
-            return null;
+            if (mTransportControls == null) {
+                mTransportControls = new TransportControlsBase(mBinder);
+            }
+
+            return mTransportControls;
         }
 
         @Override
         public PlaybackStateCompat getPlaybackState() {
+            try {
+                return mBinder.getPlaybackState();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getPlaybackState. " + e);
+            }
             return null;
         }
 
         @Override
         public MediaMetadataCompat getMetadata() {
+            try {
+                return mBinder.getMetadata();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getMetadata. " + e);
+            }
+            return null;
+        }
+
+        @Override
+        public List<MediaSessionCompat.QueueItem> getQueue() {
+            try {
+                return mBinder.getQueue();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getQueue. " + e);
+            }
+            return null;
+        }
+
+        @Override
+        public CharSequence getQueueTitle() {
+            try {
+                return mBinder.getQueueTitle();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getQueueTitle. " + e);
+            }
+            return null;
+        }
+
+        @Override
+        public Bundle getExtras() {
+            try {
+                return mBinder.getExtras();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getExtras. " + e);
+            }
             return null;
         }
 
         @Override
         public int getRatingType() {
+            try {
+                return mBinder.getRatingType();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getRatingType. " + e);
+            }
+            return 0;
+        }
+
+        @Override
+        public long getFlags() {
+            try {
+                return mBinder.getFlags();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getFlags. " + e);
+            }
             return 0;
         }
 
         @Override
         public PlaybackInfo getPlaybackInfo() {
+            try {
+                ParcelableVolumeInfo info = mBinder.getVolumeAttributes();
+                PlaybackInfo pi = new PlaybackInfo(info.volumeType, info.audioStream,
+                        info.controlType, info.maxVolume, info.currentVolume);
+                return pi;
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getPlaybackInfo. " + e);
+            }
             return null;
         }
 
         @Override
+        public PendingIntent getSessionActivity() {
+            try {
+                return mBinder.getLaunchPendingIntent();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getSessionActivity. " + e);
+            }
+            return null;
+        }
+
+        @Override
+        public void setVolumeTo(int value, int flags) {
+            try {
+                mBinder.setVolumeTo(value, flags, null);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in setVolumeTo. " + e);
+            }
+        }
+
+        @Override
+        public void adjustVolume(int direction, int flags) {
+            try {
+                mBinder.adjustVolume(direction, flags, null);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in adjustVolume. " + e);
+            }
+        }
+
+        @Override
         public void sendCommand(String command, Bundle params, ResultReceiver cb) {
+            try {
+                mBinder.sendCommand(command, params,
+                        new MediaSessionCompat.ResultReceiverWrapper(cb));
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in sendCommand. " + e);
+            }
+        }
+
+        @Override
+        public String getPackageName() {
+            try {
+                return mBinder.getPackageName();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in getPackageName. " + e);
+            }
+            return null;
         }
 
         @Override
@@ -507,6 +984,136 @@
         }
     }
 
+    static class TransportControlsBase extends TransportControls {
+        private IMediaSession mBinder;
+
+        public TransportControlsBase(IMediaSession binder) {
+            mBinder = binder;
+        }
+
+        @Override
+        public void play() {
+            try {
+                mBinder.play();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in play. " + e);
+            }
+        }
+
+        @Override
+        public void playFromMediaId(String mediaId, Bundle extras) {
+            try {
+                mBinder.playFromMediaId(mediaId, extras);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in playFromMediaId. " + e);
+            }
+        }
+
+        @Override
+        public void playFromSearch(String query, Bundle extras) {
+            try {
+                mBinder.playFromSearch(query, extras);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in playFromSearch. " + e);
+            }
+        }
+
+        @Override
+        public void skipToQueueItem(long id) {
+            try {
+                mBinder.skipToQueueItem(id);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in skipToQueueItem. " + e);
+            }
+        }
+
+        @Override
+        public void pause() {
+            try {
+                mBinder.pause();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in pause. " + e);
+            }
+        }
+
+        @Override
+        public void stop() {
+            try {
+                mBinder.stop();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in stop. " + e);
+            }
+        }
+
+        @Override
+        public void seekTo(long pos) {
+            try {
+                mBinder.seekTo(pos);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in seekTo. " + e);
+            }
+        }
+
+        @Override
+        public void fastForward() {
+            try {
+                mBinder.fastForward();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in fastForward. " + e);
+            }
+        }
+
+        @Override
+        public void skipToNext() {
+            try {
+                mBinder.next();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in skipToNext. " + e);
+            }
+        }
+
+        @Override
+        public void rewind() {
+            try {
+                mBinder.rewind();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in rewind. " + e);
+            }
+        }
+
+        @Override
+        public void skipToPrevious() {
+            try {
+                mBinder.previous();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in skipToPrevious. " + e);
+            }
+        }
+
+        @Override
+        public void setRating(RatingCompat rating) {
+            try {
+                mBinder.rate(rating);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in setRating. " + e);
+            }
+        }
+
+        @Override
+        public void sendCustomAction(CustomAction customAction, Bundle args) {
+            sendCustomAction(customAction.getAction(), args);
+        }
+
+        @Override
+        public void sendCustomAction(String action, Bundle args) {
+            try {
+                mBinder.sendCustomAction(action, args);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Dead object in sendCustomAction. " + e);
+            }
+        }
+    }
+
     static class MediaControllerImplApi21 implements MediaControllerImpl {
         private final Object mControllerObj;
 
@@ -517,7 +1124,6 @@
 
         public MediaControllerImplApi21(Context context, MediaSessionCompat.Token sessionToken)
                 throws RemoteException {
-            // TODO: refactor framework implementation
             mControllerObj = MediaControllerCompatApi21.fromToken(context,
                     sessionToken.getToken());
             if (mControllerObj == null) throw new RemoteException();
@@ -557,11 +1163,40 @@
         }
 
         @Override
+        public List<MediaSessionCompat.QueueItem> getQueue() {
+            List<Object> queueObjs = MediaControllerCompatApi21.getQueue(mControllerObj);
+            if (queueObjs == null) {
+                return null;
+            }
+            List<MediaSessionCompat.QueueItem> queue =
+                    new ArrayList<MediaSessionCompat.QueueItem>();
+            for (Object item : queueObjs) {
+                queue.add(MediaSessionCompat.QueueItem.obtain(item));
+            }
+            return queue;
+        }
+
+        @Override
+        public CharSequence getQueueTitle() {
+            return MediaControllerCompatApi21.getQueueTitle(mControllerObj);
+        }
+
+        @Override
+        public Bundle getExtras() {
+            return MediaControllerCompatApi21.getExtras(mControllerObj);
+        }
+
+        @Override
         public int getRatingType() {
             return MediaControllerCompatApi21.getRatingType(mControllerObj);
         }
 
         @Override
+        public long getFlags() {
+            return MediaControllerCompatApi21.getFlags(mControllerObj);
+        }
+
+        @Override
         public PlaybackInfo getPlaybackInfo() {
             Object volumeInfoObj = MediaControllerCompatApi21.getPlaybackInfo(mControllerObj);
             return volumeInfoObj != null ? new PlaybackInfo(
@@ -573,11 +1208,31 @@
         }
 
         @Override
+        public PendingIntent getSessionActivity() {
+            return MediaControllerCompatApi21.getSessionActivity(mControllerObj);
+        }
+
+        @Override
+        public void setVolumeTo(int value, int flags) {
+            MediaControllerCompatApi21.setVolumeTo(mControllerObj, value, flags);
+        }
+
+        @Override
+        public void adjustVolume(int direction, int flags) {
+            MediaControllerCompatApi21.adjustVolume(mControllerObj, direction, flags);
+        }
+
+        @Override
         public void sendCommand(String command, Bundle params, ResultReceiver cb) {
             MediaControllerCompatApi21.sendCommand(mControllerObj, command, params, cb);
         }
 
         @Override
+        public String getPackageName() {
+            return MediaControllerCompatApi21.getPackageName(mControllerObj);
+        }
+
+        @Override
         public Object getMediaController() {
             return mControllerObj;
         }
@@ -635,5 +1290,34 @@
             MediaControllerCompatApi21.TransportControls.setRating(mControlsObj,
                     rating != null ? rating.getRating() : null);
         }
+
+        @Override
+        public void playFromMediaId(String mediaId, Bundle extras) {
+            MediaControllerCompatApi21.TransportControls.playFromMediaId(mControlsObj, mediaId,
+                    extras);
+        }
+
+        @Override
+        public void playFromSearch(String query, Bundle extras) {
+            MediaControllerCompatApi21.TransportControls.playFromSearch(mControlsObj, query,
+                    extras);
+        }
+
+        @Override
+        public void skipToQueueItem(long id) {
+            MediaControllerCompatApi21.TransportControls.skipToQueueItem(mControlsObj, id);
+        }
+
+        @Override
+        public void sendCustomAction(CustomAction customAction, Bundle args) {
+            MediaControllerCompatApi21.TransportControls.sendCustomAction(mControlsObj,
+                    customAction.getAction(), args);
+        }
+
+        @Override
+        public void sendCustomAction(String action, Bundle args) {
+            MediaControllerCompatApi21.TransportControls.sendCustomAction(mControlsObj, action,
+                    args);
+        }
     }
 }
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.aidl
new file mode 100644
index 0000000..d0c2f6f
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.aidl
@@ -0,0 +1,20 @@
+/* Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.support.v4.media.session;
+
+parcelable MediaSessionCompat.Token;
+parcelable MediaSessionCompat.QueueItem;
+parcelable MediaSessionCompat.ResultReceiverWrapper;
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.java
index e92b09a..eb30dc7 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/MediaSessionCompat.java
@@ -17,18 +17,34 @@
 
 package android.support.v4.media.session;
 
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.media.AudioManager;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
 import android.os.ResultReceiver;
+import android.os.SystemClock;
+import android.support.v4.media.MediaDescriptionCompat;
 import android.support.v4.media.MediaMetadataCompat;
 import android.support.v4.media.RatingCompat;
 import android.support.v4.media.VolumeProviderCompat;
 import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Allows interaction with media controllers, volume keys, media buttons, and
@@ -49,7 +65,8 @@
  * When an app is finished performing playback it must call {@link #release()}
  * to clean up the session and notify any controllers.
  * <p>
- * MediaSession objects are thread safe.
+ * MediaSessionCompat objects are not thread safe and all calls should be made
+ * from the same thread.
  * <p>
  * This is a helper for accessing features in
  * {@link android.media.session.MediaSession} introduced after API level 4 in a
@@ -57,6 +74,9 @@
  */
 public class MediaSessionCompat {
     private final MediaSessionImpl mImpl;
+    private final MediaControllerCompat mController;
+    private final ArrayList<OnActiveChangeListener>
+            mActiveListeners = new ArrayList<OnActiveChangeListener>();
 
     /**
      * Set this flag on the session to indicate that it can handle media button
@@ -75,8 +95,16 @@
      *
      * @param context The context.
      * @param tag A short name for debugging purposes.
+     * @param mediaButtonEventReceiver The component name for your receiver.
+     *            This must be non-null to support platform versions earlier
+     *            than {@link android.os.Build.VERSION_CODES#LOLLIPOP}.
+     * @param mbrIntent The PendingIntent for your receiver component that
+     *            handles media button events. This is optional and will be used
+     *            on {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2} and
+     *            later instead of the component name.
      */
-    public MediaSessionCompat(Context context, String tag) {
+    public MediaSessionCompat(Context context, String tag, ComponentName mediaButtonEventReceiver,
+            PendingIntent mbrIntent) {
         if (context == null) {
             throw new IllegalArgumentException("context must not be null");
         }
@@ -86,13 +114,16 @@
 
         if (android.os.Build.VERSION.SDK_INT >= 21) {
             mImpl = new MediaSessionImplApi21(context, tag);
+            mImpl.setMediaButtonReceiver(mbrIntent);
         } else {
-            mImpl = new MediaSessionImplBase();
+            mImpl = new MediaSessionImplBase(context, tag, mediaButtonEventReceiver, mbrIntent);
         }
+        mController = new MediaControllerCompat(context, this);
     }
 
-    private MediaSessionCompat(MediaSessionImpl impl) {
+    private MediaSessionCompat(Context context, MediaSessionImpl impl) {
         mImpl = impl;
+        mController = new MediaControllerCompat(context, this);
     }
 
     /**
@@ -119,6 +150,35 @@
     }
 
     /**
+     * Set an intent for launching UI for this Session. This can be used as a
+     * quick link to an ongoing media screen. The intent should be for an
+     * activity that may be started using
+     * {@link Activity#startActivity(Intent)}.
+     *
+     * @param pi The intent to launch to show UI for this Session.
+     */
+    public void setSessionActivity(PendingIntent pi) {
+        mImpl.setSessionActivity(pi);
+    }
+
+    /**
+     * Set a pending intent for your media button receiver to allow restarting
+     * playback after the session has been stopped. If your app is started in
+     * this way an {@link Intent#ACTION_MEDIA_BUTTON} intent will be sent via
+     * the pending intent.
+     * <p>
+     * This method will only work on
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP} and later. Earlier
+     * platform versions must include the media button receiver in the
+     * constructor.
+     *
+     * @param mbr The {@link PendingIntent} to send the media button event to.
+     */
+    public void setMediaButtonReceiver(PendingIntent mbr) {
+        mImpl.setMediaButtonReceiver(mbr);
+    }
+
+    /**
      * Set any flags for the session.
      *
      * @param flags The flags to set for this session.
@@ -147,6 +207,11 @@
      * current stream volume for this session. If {@link #setPlaybackToLocal}
      * was previously called that stream will stop receiving volume changes for
      * this session.
+     * <p>
+     * On platforms earlier than {@link android.os.Build.VERSION_CODES#LOLLIPOP}
+     * this will only allow an app to handle volume commands sent directly to
+     * the session by a {@link MediaControllerCompat}. System routing of volume
+     * keys will not use the volume provider.
      *
      * @param volumeProvider The provider that will handle volume changes. May
      *            not be null.
@@ -163,11 +228,19 @@
      * set to false your session's controller may not be discoverable. You must
      * set the session to active before it can start receiving media button
      * events or transport commands.
+     * <p>
+     * On platforms earlier than
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP},
+     * {@link #setMediaButtonReceiver(PendingIntent)} must be called before
+     * setting this to true.
      *
      * @param active Whether this session is active or not.
      */
     public void setActive(boolean active) {
         mImpl.setActive(active);
+        for (OnActiveChangeListener listener : mActiveListeners) {
+            listener.onActiveChanged();
+        }
     }
 
     /**
@@ -205,10 +278,16 @@
 
     /**
      * Retrieve a token object that can be used by apps to create a
-     * {@link MediaControllerCompat} for interacting with this session. The owner of
-     * the session is responsible for deciding how to distribute these tokens.
+     * {@link MediaControllerCompat} for interacting with this session. The
+     * owner of the session is responsible for deciding how to distribute these
+     * tokens.
+     * <p>
+     * On platform versions before
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP} this token may only be
+     * used within your app as there is no way to guarantee other apps are using
+     * the same version of the support library.
      *
-     * @return A token that can be used to create a MediaController for this
+     * @return A token that can be used to create a media controller for this
      *         session.
      */
     public Token getSessionToken() {
@@ -216,6 +295,16 @@
     }
 
     /**
+     * Get a controller for this session. This is a convenience method to avoid
+     * having to cache your own controller in process.
+     *
+     * @return A controller for this session.
+     */
+    public MediaControllerCompat getController() {
+        return mController;
+    }
+
+    /**
      * Update the current playback state.
      *
      * @param state The current state of playback
@@ -235,27 +324,124 @@
     }
 
     /**
-     * Gets the underlying framework {@link android.media.session.MediaSession} object.
+     * Update the list of items in the play queue. It is an ordered list and
+     * should contain the current item, and previous or upcoming items if they
+     * exist. Specify null if there is no current play queue.
+     * <p>
+     * The queue should be of reasonable size. If the play queue is unbounded
+     * within your app, it is better to send a reasonable amount in a sliding
+     * window instead.
+     *
+     * @param queue A list of items in the play queue.
+     */
+    public void setQueue(List<QueueItem> queue) {
+        mImpl.setQueue(queue);
+    }
+
+    /**
+     * Set the title of the play queue. The UI should display this title along
+     * with the play queue itself. e.g. "Play Queue", "Now Playing", or an album
+     * name.
+     *
+     * @param title The title of the play queue.
+     */
+    public void setQueueTitle(CharSequence title) {
+        mImpl.setQueueTitle(title);
+    }
+
+    /**
+     * Set the style of rating used by this session. Apps trying to set the
+     * rating should use this style. Must be one of the following:
+     * <ul>
+     * <li>{@link RatingCompat#RATING_NONE}</li>
+     * <li>{@link RatingCompat#RATING_3_STARS}</li>
+     * <li>{@link RatingCompat#RATING_4_STARS}</li>
+     * <li>{@link RatingCompat#RATING_5_STARS}</li>
+     * <li>{@link RatingCompat#RATING_HEART}</li>
+     * <li>{@link RatingCompat#RATING_PERCENTAGE}</li>
+     * <li>{@link RatingCompat#RATING_THUMB_UP_DOWN}</li>
+     * </ul>
+     */
+    public void setRatingType(int type) {
+        mImpl.setRatingType(type);
+    }
+
+    /**
+     * Set some extras that can be associated with the
+     * {@link MediaSessionCompat}. No assumptions should be made as to how a
+     * {@link MediaControllerCompat} will handle these extras. Keys should be
+     * fully qualified (e.g. com.example.MY_EXTRA) to avoid conflicts.
+     *
+     * @param extras The extras associated with the session.
+     */
+    public void setExtras(Bundle extras) {
+        mImpl.setExtras(extras);
+    }
+
+    /**
+     * Gets the underlying framework {@link android.media.session.MediaSession}
+     * object.
      * <p>
      * This method is only supported on API 21+.
      * </p>
      *
      * @return The underlying {@link android.media.session.MediaSession} object,
-     * or null if none.
+     *         or null if none.
      */
     public Object getMediaSession() {
         return mImpl.getMediaSession();
     }
 
     /**
+     * Gets the underlying framework {@link android.media.RemoteControlClient}
+     * object.
+     * <p>
+     * This method is only supported on APIs 14-20. On API 21+
+     * {@link #getMediaSession()} should be used instead.
+     *
+     * @return The underlying {@link android.media.RemoteControlClient} object,
+     *         or null if none.
+     */
+    public Object getRemoteControlClient() {
+        return mImpl.getRemoteControlClient();
+    }
+
+    /**
+     * Adds a listener to be notified when the active status of this session
+     * changes. This is primarily used by the support library and should not be
+     * needed by apps.
+     *
+     * @param listener The listener to add.
+     */
+    public void addOnActiveChangeListener(OnActiveChangeListener listener) {
+        if (listener == null) {
+            throw new IllegalArgumentException("Listener may not be null");
+        }
+        mActiveListeners.add(listener);
+    }
+
+    /**
+     * Stops the listener from being notified when the active status of this
+     * session changes.
+     *
+     * @param listener The listener to remove.
+     */
+    public void removeOnActiveChangeListener(OnActiveChangeListener listener) {
+        if (listener == null) {
+            throw new IllegalArgumentException("Listener may not be null");
+        }
+        mActiveListeners.remove(listener);
+    }
+
+    /**
      * Obtain a compat wrapper for an existing MediaSession.
      *
      * @param mediaSession The {@link android.media.session.MediaSession} to
      *            wrap.
      * @return A compat wrapper for the provided session.
      */
-    public static MediaSessionCompat obtain(Object mediaSession) {
-        return new MediaSessionCompat(new MediaSessionImplApi21(mediaSession));
+    public static MediaSessionCompat obtain(Context context, Object mediaSession) {
+        return new MediaSessionCompat(context, new MediaSessionImplApi21(mediaSession));
     }
 
     /**
@@ -302,6 +488,29 @@
         }
 
         /**
+         * Override to handle requests to play a specific mediaId that was
+         * provided by your app.
+         */
+        public void onPlayFromMediaId(String mediaId, Bundle extras) {
+        }
+
+        /**
+         * Override to handle requests to begin playback from a search query. An
+         * empty query indicates that the app may play any music. The
+         * implementation should attempt to make a smart choice about what to
+         * play.
+         */
+        public void onPlayFromSearch(String query, Bundle extras) {
+        }
+
+        /**
+         * Override to handle requests to play an item with a given id from the
+         * play queue.
+         */
+        public void onSkipToQueueItem(long id) {
+        }
+
+        /**
          * Override to handle requests to pause playback.
          */
         public void onPause() {
@@ -353,6 +562,18 @@
         public void onSetRating(RatingCompat rating) {
         }
 
+        /**
+         * Called when a {@link MediaControllerCompat} wants a
+         * {@link PlaybackStateCompat.CustomAction} to be performed.
+         *
+         * @param action The action that was originally sent in the
+         *            {@link PlaybackStateCompat.CustomAction}.
+         * @param extras Optional extras specified by the
+         *            {@link MediaControllerCompat}.
+         */
+        public void onCustomAction(String action, Bundle extras) {
+        }
+
         private class StubApi21 implements MediaSessionCompatApi21.Callback {
 
             @Override
@@ -371,6 +592,21 @@
             }
 
             @Override
+            public void onPlayFromMediaId(String mediaId, Bundle extras) {
+                Callback.this.onPlayFromMediaId(mediaId, extras);
+            }
+
+            @Override
+            public void onPlayFromSearch(String search, Bundle extras) {
+                Callback.this.onPlayFromSearch(search, extras);
+            }
+
+            @Override
+            public void onSkipToQueueItem(long id) {
+                Callback.this.onSkipToQueueItem(id);
+            }
+
+            @Override
             public void onPause() {
                 Callback.this.onPause();
             }
@@ -409,6 +645,11 @@
             public void onSetRating(Object ratingObj) {
                 Callback.this.onSetRating(RatingCompat.fromRating(ratingObj));
             }
+
+            @Override
+            public void onCustomAction(String action, Bundle extras) {
+                Callback.this.onCustomAction(action, extras);
+            }
         }
     }
 
@@ -418,20 +659,42 @@
      * the session.
      */
     public static final class Token implements Parcelable {
-        private final Parcelable mInner;
+        private final Object mInner;
 
-        Token(Parcelable inner) {
+        Token(Object inner) {
             mInner = inner;
         }
 
+        /**
+         * Creates a compat Token from a framework
+         * {@link android.media.session.MediaSession.Token} object.
+         * <p>
+         * This method is only supported on
+         * {@link android.os.Build.VERSION_CODES#LOLLIPOP} and later.
+         * </p>
+         *
+         * @param token The framework token object.
+         * @return A compat Token for use with {@link MediaControllerCompat}.
+         */
+        public static Token fromToken(Object token) {
+            if (token == null || android.os.Build.VERSION.SDK_INT < 21) {
+                return null;
+            }
+            return new Token(MediaSessionCompatApi21.verifyToken(token));
+        }
+
         @Override
         public int describeContents() {
-            return mInner.describeContents();
+            return 0;
         }
 
         @Override
         public void writeToParcel(Parcel dest, int flags) {
-            dest.writeParcelable(mInner, flags);
+            if (android.os.Build.VERSION.SDK_INT >= 21) {
+                dest.writeParcelable((Parcelable) mInner, flags);
+            } else {
+                dest.writeStrongBinder((IBinder) mInner);
+            }
         }
 
         /**
@@ -451,7 +714,13 @@
                 = new Parcelable.Creator<Token>() {
             @Override
             public Token createFromParcel(Parcel in) {
-                return new Token(in.readParcelable(null));
+                Object inner;
+                if (android.os.Build.VERSION.SDK_INT >= 21) {
+                    inner = in.readParcelable(null);
+                } else {
+                    inner = in.readStrongBinder();
+                }
+                return new Token(inner);
             }
 
             @Override
@@ -461,6 +730,174 @@
         };
     }
 
+    /**
+     * A single item that is part of the play queue. It contains a description
+     * of the item and its id in the queue.
+     */
+    public static final class QueueItem implements Parcelable {
+        /**
+         * This id is reserved. No items can be explicitly asigned this id.
+         */
+        public static final int UNKNOWN_ID = -1;
+
+        private final MediaDescriptionCompat mDescription;
+        private final long mId;
+
+        private Object mItem;
+
+        /**
+         * Create a new {@link MediaSessionCompat.QueueItem}.
+         *
+         * @param description The {@link MediaDescriptionCompat} for this item.
+         * @param id An identifier for this item. It must be unique within the
+         *            play queue and cannot be {@link #UNKNOWN_ID}.
+         */
+        public QueueItem(MediaDescriptionCompat description, long id) {
+            this(null, description, id);
+        }
+
+        private QueueItem(Object queueItem, MediaDescriptionCompat description, long id) {
+            if (description == null) {
+                throw new IllegalArgumentException("Description cannot be null.");
+            }
+            if (id == UNKNOWN_ID) {
+                throw new IllegalArgumentException("Id cannot be QueueItem.UNKNOWN_ID");
+            }
+            mDescription = description;
+            mId = id;
+            mItem = queueItem;
+        }
+
+        private QueueItem(Parcel in) {
+            mDescription = MediaDescriptionCompat.CREATOR.createFromParcel(in);
+            mId = in.readLong();
+        }
+
+        /**
+         * Get the description for this item.
+         */
+        public MediaDescriptionCompat getDescription() {
+            return mDescription;
+        }
+
+        /**
+         * Get the queue id for this item.
+         */
+        public long getQueueId() {
+            return mId;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            mDescription.writeToParcel(dest, flags);
+            dest.writeLong(mId);
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        /**
+         * Get the underlying
+         * {@link android.media.session.MediaSession.QueueItem}.
+         * <p>
+         * On builds before {@link android.os.Build.VERSION_CODES#LOLLIPOP} null
+         * is returned.
+         *
+         * @return The underlying
+         *         {@link android.media.session.MediaSession.QueueItem} or null.
+         */
+        public Object getQueueItem() {
+            if (mItem != null || android.os.Build.VERSION.SDK_INT < 21) {
+                return mItem;
+            }
+            mItem = MediaSessionCompatApi21.QueueItem.createItem(mDescription.getMediaDescription(),
+                    mId);
+            return mItem;
+        }
+
+        /**
+         * Obtain a compat wrapper for an existing QueueItem.
+         *
+         * @param queueItem The {@link android.media.session.MediaSession.QueueItem} to
+         *            wrap.
+         * @return A compat wrapper for the provided item.
+         */
+        public static QueueItem obtain(Object queueItem) {
+            Object descriptionObj = MediaSessionCompatApi21.QueueItem.getDescription(queueItem);
+            MediaDescriptionCompat description = MediaDescriptionCompat.fromMediaDescription(
+                    descriptionObj);
+            long id = MediaSessionCompatApi21.QueueItem.getQueueId(queueItem);
+            return new QueueItem(queueItem, description, id);
+        }
+
+        public static final Creator<MediaSessionCompat.QueueItem>
+                CREATOR = new Creator<MediaSessionCompat.QueueItem>() {
+
+                        @Override
+                    public MediaSessionCompat.QueueItem createFromParcel(Parcel p) {
+                        return new MediaSessionCompat.QueueItem(p);
+                    }
+
+                        @Override
+                    public MediaSessionCompat.QueueItem[] newArray(int size) {
+                        return new MediaSessionCompat.QueueItem[size];
+                    }
+                };
+
+        @Override
+        public String toString() {
+            return "MediaSession.QueueItem {" +
+                    "Description=" + mDescription +
+                    ", Id=" + mId + " }";
+        }
+    }
+
+    /**
+     * This is a wrapper for {@link ResultReceiver} for sending over aidl
+     * interfaces. The framework version was not exposed to aidls until
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP}.
+     */
+    static final class ResultReceiverWrapper implements Parcelable {
+        private ResultReceiver mResultReceiver;
+
+        public ResultReceiverWrapper(ResultReceiver resultReceiver) {
+            mResultReceiver = resultReceiver;
+        }
+
+        ResultReceiverWrapper(Parcel in) {
+            mResultReceiver = ResultReceiver.CREATOR.createFromParcel(in);
+        }
+
+        public static final Creator<ResultReceiverWrapper>
+                CREATOR = new Creator<ResultReceiverWrapper>() {
+            @Override
+            public ResultReceiverWrapper createFromParcel(Parcel p) {
+                return new ResultReceiverWrapper(p);
+            }
+
+            @Override
+            public ResultReceiverWrapper[] newArray(int size) {
+                return new ResultReceiverWrapper[size];
+            }
+        };
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            mResultReceiver.writeToParcel(dest, flags);
+        }
+    }
+
+    public interface OnActiveChangeListener {
+        void onActiveChanged();
+    }
+
     interface MediaSessionImpl {
         void setCallback(Callback callback, Handler handler);
         void setFlags(int flags);
@@ -473,67 +910,888 @@
         Token getSessionToken();
         void setPlaybackState(PlaybackStateCompat state);
         void setMetadata(MediaMetadataCompat metadata);
+
+        void setSessionActivity(PendingIntent pi);
+
+        void setMediaButtonReceiver(PendingIntent mbr);
+        void setQueue(List<QueueItem> queue);
+        void setQueueTitle(CharSequence title);
+
+        void setRatingType(int type);
+        void setExtras(Bundle extras);
+
         Object getMediaSession();
+
+        Object getRemoteControlClient();
     }
 
     // TODO: compatibility implementation
     static class MediaSessionImplBase implements MediaSessionImpl {
+        private final Context mContext;
+        private final ComponentName mComponentName;
+        private final PendingIntent mMediaButtonEventReceiver;
+        private final Object mRccObj;
+        private final MediaSessionStub mStub;
+        private final Token mToken;
+        private final MessageHandler mHandler;
+        private final String mPackageName;
+        private final String mTag;
+        private final AudioManager mAudioManager;
+
+        private final Object mLock = new Object();
+        private final RemoteCallbackList<IMediaControllerCallback> mControllerCallbacks
+                = new RemoteCallbackList<IMediaControllerCallback>();
+
+        private boolean mDestroyed = false;
+        private boolean mIsActive = false;
+        private boolean mIsRccRegistered = false;
+        private boolean mIsMbrRegistered = false;
+        private Callback mCallback;
+
+        private int mFlags;
+
+        private MediaMetadataCompat mMetadata;
+        private PlaybackStateCompat mState;
+        private PendingIntent mSessionActivity;
+        private List<QueueItem> mQueue;
+        private CharSequence mQueueTitle;
+        private int mRatingType;
+        private Bundle mExtras;
+
+        private int mVolumeType;
+        private int mLocalStream;
+        private VolumeProviderCompat mVolumeProvider;
+
+        private VolumeProviderCompat.Callback mVolumeCallback
+                = new VolumeProviderCompat.Callback() {
+            @Override
+            public void onVolumeChanged(VolumeProviderCompat volumeProvider) {
+                if (mVolumeProvider != volumeProvider) {
+                    return;
+                }
+                ParcelableVolumeInfo info = new ParcelableVolumeInfo(mVolumeType, mLocalStream,
+                        volumeProvider.getVolumeControl(), volumeProvider.getMaxVolume(),
+                        volumeProvider.getCurrentVolume());
+                sendVolumeInfoChanged(info);
+            }
+        };
+
+        public MediaSessionImplBase(Context context, String tag, ComponentName mbrComponent,
+                PendingIntent mbr) {
+            if (mbrComponent == null) {
+                throw new IllegalArgumentException(
+                        "MediaButtonReceiver component may not be null.");
+            }
+            if (mbr == null) {
+                // construct a PendingIntent for the media button
+                Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
+                // the associated intent will be handled by the component being
+                // registered
+                mediaButtonIntent.setComponent(mbrComponent);
+                mbr = PendingIntent.getBroadcast(context,
+                        0/* requestCode, ignored */, mediaButtonIntent, 0/* flags */);
+            }
+            mContext = context;
+            mPackageName = context.getPackageName();
+            mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+            mTag = tag;
+            mComponentName = mbrComponent;
+            mMediaButtonEventReceiver = mbr;
+            mStub = new MediaSessionStub();
+            mToken = new Token(mStub);
+            mHandler = new MessageHandler(Looper.myLooper());
+
+            mRatingType = RatingCompat.RATING_NONE;
+            mVolumeType = MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL;
+            mLocalStream = AudioManager.STREAM_MUSIC;
+            if (android.os.Build.VERSION.SDK_INT >= 14) {
+                mRccObj = MediaSessionCompatApi14.createRemoteControlClient(mbr);
+            } else {
+                mRccObj = null;
+            }
+        }
+
         @Override
-        public void setCallback(Callback callback, Handler handler) {
+        public void setCallback(final Callback callback, Handler handler) {
+            if (callback == mCallback) {
+                return;
+            }
+            if (callback == null || android.os.Build.VERSION.SDK_INT < 18) {
+                // There's nothing to register on API < 18 since media buttons
+                // all go through the media button receiver
+                if (android.os.Build.VERSION.SDK_INT >= 18) {
+                    MediaSessionCompatApi18.setOnPlaybackPositionUpdateListener(mRccObj, null);
+                }
+                if (android.os.Build.VERSION.SDK_INT >= 19) {
+                    MediaSessionCompatApi19.setOnMetadataUpdateListener(mRccObj, null);
+                }
+            } else {
+                if (handler == null) {
+                    handler = new Handler();
+                }
+                MediaSessionCompatApi14.Callback cb14 = new MediaSessionCompatApi14.Callback() {
+                    @Override
+                    public void onStop() {
+                        callback.onStop();
+                    }
+
+                    @Override
+                    public void onSkipToPrevious() {
+                        callback.onSkipToPrevious();
+                    }
+
+                    @Override
+                    public void onSkipToNext() {
+                        callback.onSkipToNext();
+                    }
+
+                    @Override
+                    public void onSetRating(Object ratingObj) {
+                        callback.onSetRating(RatingCompat.fromRating(ratingObj));
+                    }
+
+                    @Override
+                    public void onSeekTo(long pos) {
+                        callback.onSeekTo(pos);
+                    }
+
+                    @Override
+                    public void onRewind() {
+                        callback.onRewind();
+                    }
+
+                    @Override
+                    public void onPlay() {
+                        callback.onPlay();
+                    }
+
+                    @Override
+                    public void onPause() {
+                        callback.onPause();
+                    }
+
+                    @Override
+                    public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
+                        return callback.onMediaButtonEvent(mediaButtonIntent);
+                    }
+
+                    @Override
+                    public void onFastForward() {
+                        callback.onFastForward();
+                    }
+
+                    @Override
+                    public void onCommand(String command, Bundle extras, ResultReceiver cb) {
+                        callback.onCommand(command, extras, cb);
+                    }
+                };
+                if (android.os.Build.VERSION.SDK_INT >= 18) {
+                    Object onPositionUpdateObj = MediaSessionCompatApi18
+                            .createPlaybackPositionUpdateListener(cb14);
+                    MediaSessionCompatApi18.setOnPlaybackPositionUpdateListener(mRccObj,
+                            onPositionUpdateObj);
+                }
+                if (android.os.Build.VERSION.SDK_INT >= 19) {
+                    Object onMetadataUpdateObj = MediaSessionCompatApi19
+                            .createMetadataUpdateListener(cb14);
+                    MediaSessionCompatApi19.setOnMetadataUpdateListener(mRccObj,
+                            onMetadataUpdateObj);
+                }
+            }
+            mCallback = callback;
         }
 
         @Override
         public void setFlags(int flags) {
+            synchronized (mLock) {
+                mFlags = flags;
+            }
+            update();
         }
 
         @Override
         public void setPlaybackToLocal(int stream) {
+            if (mVolumeProvider != null) {
+                mVolumeProvider.setCallback(null);
+            }
+            mVolumeType = MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL;
+            ParcelableVolumeInfo info = new ParcelableVolumeInfo(mVolumeType, mLocalStream,
+                    VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE,
+                    mAudioManager.getStreamMaxVolume(mLocalStream),
+                    mAudioManager.getStreamVolume(mLocalStream));
+            sendVolumeInfoChanged(info);
         }
 
         @Override
         public void setPlaybackToRemote(VolumeProviderCompat volumeProvider) {
+            if (volumeProvider == null) {
+                throw new IllegalArgumentException("volumeProvider may not be null");
+            }
+            if (mVolumeProvider != null) {
+                mVolumeProvider.setCallback(null);
+            }
+            mVolumeType = MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE;
+            mVolumeProvider = volumeProvider;
+            ParcelableVolumeInfo info = new ParcelableVolumeInfo(mVolumeType, mLocalStream,
+                    mVolumeProvider.getVolumeControl(), mVolumeProvider.getMaxVolume(),
+                    mVolumeProvider.getCurrentVolume());
+            sendVolumeInfoChanged(info);
+
+            volumeProvider.setCallback(mVolumeCallback);
         }
 
         @Override
         public void setActive(boolean active) {
+            if (active == mIsActive) {
+                return;
+            }
+            mIsActive = active;
+            if (update()) {
+                setMetadata(mMetadata);
+                setPlaybackState(mState);
+            }
         }
 
         @Override
         public boolean isActive() {
-            return false;
+            return mIsActive;
         }
 
         @Override
         public void sendSessionEvent(String event, Bundle extras) {
+            sendEvent(event, extras);
         }
 
         @Override
         public void release() {
+            mIsActive = false;
+            mDestroyed = true;
+            update();
+            sendSessionDestroyed();
         }
 
         @Override
         public Token getSessionToken() {
-            return null;
+            return mToken;
         }
 
         @Override
         public void setPlaybackState(PlaybackStateCompat state) {
+            synchronized (mLock) {
+                mState = state;
+            }
+            sendState(state);
+            if (!mIsActive) {
+                // Don't set the state until after the RCC is registered
+                return;
+            }
+            if (state == null) {
+                if (android.os.Build.VERSION.SDK_INT >= 14) {
+                    MediaSessionCompatApi14.setState(mRccObj, PlaybackStateCompat.STATE_NONE);
+                }
+            } else {
+                if (android.os.Build.VERSION.SDK_INT >= 18) {
+                    MediaSessionCompatApi18.setState(mRccObj, state.getState(), state.getPosition(),
+                            state.getPlaybackSpeed(), state.getLastPositionUpdateTime());
+                } else if (android.os.Build.VERSION.SDK_INT >= 14) {
+                    MediaSessionCompatApi14.setState(mRccObj, state.getState());
+                }
+            }
         }
 
         @Override
         public void setMetadata(MediaMetadataCompat metadata) {
+            synchronized (mLock) {
+                mMetadata = metadata;
+            }
+            sendMetadata(metadata);
+            if (!mIsActive) {
+                // Don't set metadata until after the rcc has been registered
+                return;
+            }
+            if (android.os.Build.VERSION.SDK_INT >= 19) {
+                boolean canRate = mState != null
+                        && (mState.getActions() & PlaybackStateCompat.ACTION_SET_RATING) != 0;
+                MediaSessionCompatApi19.setMetadata(mRccObj,
+                        metadata == null ? null : metadata.getBundle(), canRate);
+            } else if (android.os.Build.VERSION.SDK_INT >= 14) {
+                MediaSessionCompatApi14.setMetadata(mRccObj,
+                        metadata == null ? null : metadata.getBundle());
+            }
+        }
+
+        @Override
+        public void setSessionActivity(PendingIntent pi) {
+            synchronized (mLock) {
+                mSessionActivity = pi;
+            }
+        }
+
+        @Override
+        public void setMediaButtonReceiver(PendingIntent mbr) {
+            // Do nothing, changing this is not supported before API 21.
+        }
+
+        @Override
+        public void setQueue(List<QueueItem> queue) {
+            mQueue = queue;
+            sendQueue(queue);
+        }
+
+        @Override
+        public void setQueueTitle(CharSequence title) {
+            mQueueTitle = title;
+            sendQueueTitle(title);
         }
 
         @Override
         public Object getMediaSession() {
             return null;
         }
+
+        @Override
+        public Object getRemoteControlClient() {
+            return mRccObj;
+        }
+
+        @Override
+        public void setRatingType(int type) {
+            mRatingType = type;
+        }
+
+        @Override
+        public void setExtras(Bundle extras) {
+            mExtras = extras;
+        }
+
+        // Registers/unregisters the RCC and MediaButtonEventReceiver as needed.
+        private boolean update() {
+            boolean registeredRcc = false;
+            if (mIsActive) {
+                // On API 8+ register a MBR if it's supported, unregister it
+                // if support was removed.
+                if (android.os.Build.VERSION.SDK_INT >= 8) {
+                    if (!mIsMbrRegistered && (mFlags & FLAG_HANDLES_MEDIA_BUTTONS) != 0) {
+                        if (android.os.Build.VERSION.SDK_INT >= 18) {
+                            MediaSessionCompatApi18.registerMediaButtonEventReceiver(mContext,
+                                    mMediaButtonEventReceiver);
+                        } else {
+                            MediaSessionCompatApi8.registerMediaButtonEventReceiver(mContext,
+                                    mComponentName);
+                        }
+                        mIsMbrRegistered = true;
+                    } else if (mIsMbrRegistered && (mFlags & FLAG_HANDLES_MEDIA_BUTTONS) == 0) {
+                        if (android.os.Build.VERSION.SDK_INT >= 18) {
+                            MediaSessionCompatApi18.unregisterMediaButtonEventReceiver(mContext,
+                                    mMediaButtonEventReceiver);
+                        } else {
+                            MediaSessionCompatApi8.unregisterMediaButtonEventReceiver(mContext,
+                                    mComponentName);
+                        }
+                        mIsMbrRegistered = false;
+                    }
+                }
+                // On API 14+ register a RCC if it's supported, unregister it if
+                // not.
+                if (android.os.Build.VERSION.SDK_INT >= 14) {
+                    if (!mIsRccRegistered && (mFlags & FLAG_HANDLES_TRANSPORT_CONTROLS) != 0) {
+                        MediaSessionCompatApi14.registerRemoteControlClient(mContext, mRccObj);
+                        mIsRccRegistered = true;
+                        registeredRcc = true;
+                    } else if (mIsRccRegistered
+                            && (mFlags & FLAG_HANDLES_TRANSPORT_CONTROLS) == 0) {
+                        MediaSessionCompatApi14.unregisterRemoteControlClient(mContext, mRccObj);
+                        mIsRccRegistered = false;
+                    }
+                }
+            } else {
+                // When inactive remove any registered components.
+                if (mIsMbrRegistered) {
+                    if (android.os.Build.VERSION.SDK_INT >= 18) {
+                        MediaSessionCompatApi18.unregisterMediaButtonEventReceiver(mContext,
+                                mMediaButtonEventReceiver);
+                    } else {
+                        MediaSessionCompatApi8.unregisterMediaButtonEventReceiver(mContext,
+                                mComponentName);
+                    }
+                    mIsMbrRegistered = false;
+                }
+                if (mIsRccRegistered) {
+                    MediaSessionCompatApi14.unregisterRemoteControlClient(mContext, mRccObj);
+                    mIsRccRegistered = false;
+                }
+            }
+            return registeredRcc;
+        }
+
+        private void adjustVolume(int direction, int flags) {
+            if (mVolumeType == MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE) {
+                if (mVolumeProvider != null) {
+                    mVolumeProvider.onAdjustVolume(direction);
+                }
+            } else {
+                mAudioManager.adjustStreamVolume(direction, mLocalStream, flags);
+            }
+        }
+
+        private void setVolumeTo(int value, int flags) {
+            if (mVolumeType == MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE) {
+                if (mVolumeProvider != null) {
+                    mVolumeProvider.onSetVolumeTo(value);
+                }
+            } else {
+                mAudioManager.setStreamVolume(mLocalStream, value, flags);
+            }
+        }
+
+        private PlaybackStateCompat getStateWithUpdatedPosition() {
+            PlaybackStateCompat state;
+            long duration = -1;
+            synchronized (mLock) {
+                state = mState;
+                if (mMetadata != null
+                        && mMetadata.containsKey(MediaMetadataCompat.METADATA_KEY_DURATION)) {
+                    duration = mMetadata.getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
+                }
+            }
+
+            PlaybackStateCompat result = null;
+            if (state != null) {
+                if (state.getState() == PlaybackStateCompat.STATE_PLAYING
+                        || state.getState() == PlaybackStateCompat.STATE_FAST_FORWARDING
+                        || state.getState() == PlaybackStateCompat.STATE_REWINDING) {
+                    long updateTime = state.getLastPositionUpdateTime();
+                    long currentTime = SystemClock.elapsedRealtime();
+                    if (updateTime > 0) {
+                        long position = (long) (state.getPlaybackSpeed()
+                                * (currentTime - updateTime)) + state.getPosition();
+                        if (duration >= 0 && position > duration) {
+                            position = duration;
+                        } else if (position < 0) {
+                            position = 0;
+                        }
+                        PlaybackStateCompat.Builder builder = new PlaybackStateCompat.Builder(
+                                state);
+                        builder.setState(state.getState(), position, state.getPlaybackSpeed(),
+                                currentTime);
+                        result = builder.build();
+                    }
+                }
+            }
+            return result == null ? state : result;
+        }
+
+        private void sendVolumeInfoChanged(ParcelableVolumeInfo info) {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onVolumeInfoChanged(info);
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+        }
+
+        private void sendSessionDestroyed() {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onSessionDestroyed();;
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+            mControllerCallbacks.kill();
+        }
+
+        private void sendEvent(String event, Bundle extras) {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onEvent(event, extras);
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+        }
+
+        private void sendState(PlaybackStateCompat state) {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onPlaybackStateChanged(state);
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+        }
+
+        private void sendMetadata(MediaMetadataCompat metadata) {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onMetadataChanged(metadata);
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+        }
+
+        private void sendQueue(List<QueueItem> queue) {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onQueueChanged(queue);
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+        }
+
+        private void sendQueueTitle(CharSequence queueTitle) {
+            int size = mControllerCallbacks.beginBroadcast();
+            for (int i = size - 1; i >= 0; i--) {
+                IMediaControllerCallback cb = mControllerCallbacks.getBroadcastItem(i);
+                try {
+                    cb.onQueueTitleChanged(queueTitle);
+                } catch (RemoteException e) {
+                }
+            }
+            mControllerCallbacks.finishBroadcast();
+        }
+
+        class MediaSessionStub extends IMediaSession.Stub {
+            @Override
+            public void sendCommand(String command, Bundle args, ResultReceiverWrapper cb) {
+                mHandler.post(MessageHandler.MSG_COMMAND,
+                        new Command(command, args, cb.mResultReceiver));
+            }
+
+            @Override
+            public boolean sendMediaButton(KeyEvent mediaButton) {
+                boolean handlesMediaButtons =
+                        (mFlags & MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS) != 0;
+                if (handlesMediaButtons) {
+                    mHandler.post(MessageHandler.MSG_MEDIA_BUTTON, mediaButton);
+                }
+                return handlesMediaButtons;
+            }
+
+            @Override
+            public void registerCallbackListener(IMediaControllerCallback cb) {
+                // If this session is already destroyed tell the caller and
+                // don't add them.
+                if (mDestroyed) {
+                    try {
+                        cb.onSessionDestroyed();
+                    } catch (Exception e) {
+                        // ignored
+                    }
+                    return;
+                }
+                mControllerCallbacks.register(cb);
+            }
+
+            @Override
+            public void unregisterCallbackListener(IMediaControllerCallback cb) {
+                mControllerCallbacks.unregister(cb);
+            }
+
+            @Override
+            public String getPackageName() {
+                // mPackageName is final so doesn't need synchronize block
+                return mPackageName;
+            }
+
+            @Override
+            public String getTag() {
+                // mTag is final so doesn't need synchronize block
+                return mTag;
+            }
+
+            @Override
+            public PendingIntent getLaunchPendingIntent() {
+                synchronized (mLock) {
+                    return mSessionActivity;
+                }
+            }
+
+            @Override
+            public long getFlags() {
+                synchronized (mLock) {
+                    return mFlags;
+                }
+            }
+
+            @Override
+            public ParcelableVolumeInfo getVolumeAttributes() {
+                int controlType;
+                int max;
+                int current;
+                int stream;
+                int volumeType;
+                synchronized (mLock) {
+                    volumeType = mVolumeType;
+                    stream = mLocalStream;
+                    VolumeProviderCompat vp = mVolumeProvider;
+                    if (volumeType == MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE) {
+                        controlType = vp.getVolumeControl();
+                        max = vp.getMaxVolume();
+                        current = vp.getCurrentVolume();
+                    } else {
+                        controlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
+                        max = mAudioManager.getStreamMaxVolume(stream);
+                        current = mAudioManager.getStreamVolume(stream);
+                    }
+                }
+                return new ParcelableVolumeInfo(volumeType, stream, controlType, max, current);
+            }
+
+            @Override
+            public void adjustVolume(int direction, int flags, String packageName) {
+                MediaSessionImplBase.this.adjustVolume(direction, flags);
+            }
+
+            @Override
+            public void setVolumeTo(int value, int flags, String packageName) {
+                MediaSessionImplBase.this.setVolumeTo(value, flags);
+            }
+
+            @Override
+            public void play() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_PLAY);
+            }
+
+            @Override
+            public void playFromMediaId(String mediaId, Bundle extras) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_PLAY_MEDIA_ID, mediaId, extras);
+            }
+
+            @Override
+            public void playFromSearch(String query, Bundle extras) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_PLAY_SEARCH, query, extras);
+            }
+
+            @Override
+            public void skipToQueueItem(long id) {
+                mHandler.post(MessageHandler.MSG_SKIP_TO_ITEM, id);
+            }
+
+            @Override
+            public void pause() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_PAUSE);
+            }
+
+            @Override
+            public void stop() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_STOP);
+            }
+
+            @Override
+            public void next() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_NEXT);
+            }
+
+            @Override
+            public void previous() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_PREVIOUS);
+            }
+
+            @Override
+            public void fastForward() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_FAST_FORWARD);
+            }
+
+            @Override
+            public void rewind() throws RemoteException {
+                mHandler.post(MessageHandler.MSG_REWIND);
+            }
+
+            @Override
+            public void seekTo(long pos) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_SEEK_TO, pos);
+            }
+
+            @Override
+            public void rate(RatingCompat rating) throws RemoteException {
+                mHandler.post(MessageHandler.MSG_RATE, rating);
+            }
+
+            @Override
+            public void sendCustomAction(String action, Bundle args)
+                    throws RemoteException {
+                mHandler.post(MessageHandler.MSG_CUSTOM_ACTION, action, args);
+            }
+
+            @Override
+            public MediaMetadataCompat getMetadata() {
+                return mMetadata;
+            }
+
+            @Override
+            public PlaybackStateCompat getPlaybackState() {
+                return getStateWithUpdatedPosition();
+            }
+
+            @Override
+            public List<QueueItem> getQueue() {
+                synchronized (mLock) {
+                    return mQueue;
+                }
+            }
+
+            @Override
+            public CharSequence getQueueTitle() {
+                return mQueueTitle;
+            }
+
+            @Override
+            public Bundle getExtras() {
+                synchronized (mLock) {
+                    return mExtras;
+                }
+            }
+
+            @Override
+            public int getRatingType() {
+                return mRatingType;
+            }
+
+            @Override
+            public boolean isTransportControlEnabled() {
+                return (mFlags & FLAG_HANDLES_TRANSPORT_CONTROLS) != 0;
+            }
+        }
+
+        private static final class Command {
+            public final String command;
+            public final Bundle extras;
+            public final ResultReceiver stub;
+
+            public Command(String command, Bundle extras, ResultReceiver stub) {
+                this.command = command;
+                this.extras = extras;
+                this.stub = stub;
+            }
+        }
+
+        private class MessageHandler extends Handler {
+
+            private static final int MSG_PLAY = 1;
+            private static final int MSG_PLAY_MEDIA_ID = 2;
+            private static final int MSG_PLAY_SEARCH = 3;
+            private static final int MSG_SKIP_TO_ITEM = 4;
+            private static final int MSG_PAUSE = 5;
+            private static final int MSG_STOP = 6;
+            private static final int MSG_NEXT = 7;
+            private static final int MSG_PREVIOUS = 8;
+            private static final int MSG_FAST_FORWARD = 9;
+            private static final int MSG_REWIND = 10;
+            private static final int MSG_SEEK_TO = 11;
+            private static final int MSG_RATE = 12;
+            private static final int MSG_CUSTOM_ACTION = 13;
+            private static final int MSG_MEDIA_BUTTON = 14;
+            private static final int MSG_COMMAND = 15;
+            private static final int MSG_ADJUST_VOLUME = 16;
+            private static final int MSG_SET_VOLUME = 17;
+
+            public MessageHandler(Looper looper) {
+                super(looper);
+            }
+
+            public void post(int what, Object obj, Bundle bundle) {
+                Message msg = obtainMessage(what, obj);
+                msg.setData(bundle);
+                msg.sendToTarget();
+            }
+
+            public void post(int what, Object obj) {
+                obtainMessage(what, obj).sendToTarget();
+            }
+
+            public void post(int what) {
+                post(what, null);
+            }
+
+            public void post(int what, Object obj, int arg1) {
+                obtainMessage(what, arg1, 0, obj).sendToTarget();
+            }
+
+            @Override
+            public void handleMessage(Message msg) {
+                if (mCallback == null) {
+                    return;
+                }
+                switch (msg.what) {
+                    case MSG_PLAY:
+                        mCallback.onPlay();
+                        break;
+                    case MSG_PLAY_MEDIA_ID:
+                        mCallback.onPlayFromMediaId((String) msg.obj, msg.getData());
+                        break;
+                    case MSG_PLAY_SEARCH:
+                        mCallback.onPlayFromSearch((String) msg.obj, msg.getData());
+                        break;
+                    case MSG_SKIP_TO_ITEM:
+                        mCallback.onSkipToQueueItem((Long) msg.obj);
+                        break;
+                    case MSG_PAUSE:
+                        mCallback.onPause();
+                        break;
+                    case MSG_STOP:
+                        mCallback.onStop();
+                        break;
+                    case MSG_NEXT:
+                        mCallback.onSkipToNext();
+                        break;
+                    case MSG_PREVIOUS:
+                        mCallback.onSkipToPrevious();
+                        break;
+                    case MSG_FAST_FORWARD:
+                        mCallback.onFastForward();
+                        break;
+                    case MSG_REWIND:
+                        mCallback.onRewind();
+                        break;
+                    case MSG_SEEK_TO:
+                        mCallback.onSeekTo((Long) msg.obj);
+                        break;
+                    case MSG_RATE:
+                        mCallback.onSetRating((RatingCompat) msg.obj);
+                        break;
+                    case MSG_CUSTOM_ACTION:
+                        mCallback.onCustomAction((String) msg.obj, msg.getData());
+                        break;
+                    case MSG_MEDIA_BUTTON:
+                        mCallback.onMediaButtonEvent((Intent) msg.obj);
+                        break;
+                    case MSG_COMMAND:
+                        Command cmd = (Command) msg.obj;
+                        mCallback.onCommand(cmd.command, cmd.extras, cmd.stub);
+                        break;
+                    case MSG_ADJUST_VOLUME:
+                        adjustVolume((Integer) msg.obj, 0);
+                        break;
+                    case MSG_SET_VOLUME:
+                        setVolumeTo((Integer) msg.obj, 0);
+                        break;
+                }
+            }
+        }
     }
 
     static class MediaSessionImplApi21 implements MediaSessionImpl {
         private final Object mSessionObj;
         private final Token mToken;
 
+        private PendingIntent mMediaButtonIntent;
+
         public MediaSessionImplApi21(Context context, String tag) {
             mSessionObj = MediaSessionCompatApi21.createSession(context, tag);
             mToken = new Token(MediaSessionCompatApi21.getSessionToken(mSessionObj));
@@ -601,8 +1859,55 @@
         }
 
         @Override
+        public void setSessionActivity(PendingIntent pi) {
+            MediaSessionCompatApi21.setSessionActivity(mSessionObj, pi);
+        }
+
+        @Override
+        public void setMediaButtonReceiver(PendingIntent mbr) {
+            mMediaButtonIntent = mbr;
+            MediaSessionCompatApi21.setMediaButtonReceiver(mSessionObj, mbr);
+        }
+
+        @Override
+        public void setQueue(List<QueueItem> queue) {
+            List<Object> queueObjs = null;
+            if (queue != null) {
+                queueObjs = new ArrayList<Object>();
+                for (QueueItem item : queue) {
+                    queueObjs.add(item.getQueueItem());
+                }
+            }
+            MediaSessionCompatApi21.setQueue(mSessionObj, queueObjs);
+        }
+
+        @Override
+        public void setQueueTitle(CharSequence title) {
+            MediaSessionCompatApi21.setQueueTitle(mSessionObj, title);
+        }
+
+        @Override
+        public void setRatingType(int type) {
+            if (android.os.Build.VERSION.SDK_INT < 22) {
+                // TODO figure out 21 implementation
+            } else {
+                MediaSessionCompatApi22.setRatingType(mSessionObj, type);
+            }
+        }
+
+        @Override
+        public void setExtras(Bundle extras) {
+            MediaSessionCompatApi21.setExtras(mSessionObj, extras);
+        }
+
+        @Override
         public Object getMediaSession() {
             return mSessionObj;
         }
+
+        @Override
+        public Object getRemoteControlClient() {
+            return null;
+        }
     }
 }
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/ParcelableVolumeInfo.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/ParcelableVolumeInfo.aidl
new file mode 100644
index 0000000..2e77c4f
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/ParcelableVolumeInfo.aidl
@@ -0,0 +1,18 @@
+/* Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.support.v4.media.session;
+
+parcelable ParcelableVolumeInfo;
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/ParcelableVolumeInfo.java b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/ParcelableVolumeInfo.java
new file mode 100644
index 0000000..678b33e
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/ParcelableVolumeInfo.java
@@ -0,0 +1,77 @@
+/* Copyright 2014, The Android Open Source Project
+ **
+ ** Licensed under the Apache License, Version 2.0 (the "License");
+ ** you may not use this file except in compliance with the License.
+ ** You may obtain a copy of the License at
+ **
+ **     http://www.apache.org/licenses/LICENSE-2.0
+ **
+ ** Unless required by applicable law or agreed to in writing, software
+ ** distributed under the License is distributed on an "AS IS" BASIS,
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ** See the License for the specific language governing permissions and
+ ** limitations under the License.
+ */
+
+package android.support.v4.media.session;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Convenience class for passing information about the audio configuration of a
+ * {@link MediaSessionCompat}.
+ */
+public class ParcelableVolumeInfo implements Parcelable {
+    public int volumeType;
+    public int audioStream;
+    public int controlType;
+    public int maxVolume;
+    public int currentVolume;
+
+    public ParcelableVolumeInfo(int volumeType, int audioStream, int controlType,
+            int maxVolume,
+            int currentVolume) {
+        this.volumeType = volumeType;
+        this.audioStream = audioStream;
+        this.controlType = controlType;
+        this.maxVolume = maxVolume;
+        this.currentVolume = currentVolume;
+    }
+
+    public ParcelableVolumeInfo(Parcel from) {
+        volumeType = from.readInt();
+        controlType = from.readInt();
+        maxVolume = from.readInt();
+        currentVolume = from.readInt();
+        audioStream = from.readInt();
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(volumeType);
+        dest.writeInt(controlType);
+        dest.writeInt(maxVolume);
+        dest.writeInt(currentVolume);
+        dest.writeInt(audioStream);
+    }
+
+
+    public static final Parcelable.Creator<ParcelableVolumeInfo> CREATOR
+            = new Parcelable.Creator<ParcelableVolumeInfo>() {
+        @Override
+        public ParcelableVolumeInfo createFromParcel(Parcel in) {
+            return new ParcelableVolumeInfo(in);
+        }
+
+        @Override
+        public ParcelableVolumeInfo[] newArray(int size) {
+            return new ParcelableVolumeInfo[size];
+        }
+    };
+}
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.aidl b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.aidl
new file mode 100644
index 0000000..3d4ef59
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.aidl
@@ -0,0 +1,18 @@
+/* Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.support.v4.media.session;
+
+parcelable PlaybackStateCompat;
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.java
index 9152ab7..cb5fdb8 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/media/session/PlaybackStateCompat.java
@@ -16,6 +16,7 @@
 package android.support.v4.media.session;
 
 import android.os.Build;
+import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
@@ -405,6 +406,176 @@
     };
 
     /**
+     * {@link PlaybackStateCompat.CustomAction CustomActions} can be used to
+     * extend the capabilities of the standard transport controls by exposing
+     * app specific actions to {@link MediaControllerCompat Controllers}.
+     */
+    public static final class CustomAction implements Parcelable {
+        private final String mAction;
+        private final CharSequence mName;
+        private final int mIcon;
+        private final Bundle mExtras;
+
+        /**
+         * Use {@link PlaybackStateCompat.CustomAction.Builder#build()}.
+         */
+        private CustomAction(String action, CharSequence name, int icon, Bundle extras) {
+            mAction = action;
+            mName = name;
+            mIcon = icon;
+            mExtras = extras;
+        }
+
+        private CustomAction(Parcel in) {
+            mAction = in.readString();
+            mName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
+            mIcon = in.readInt();
+            mExtras = in.readBundle();
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeString(mAction);
+            TextUtils.writeToParcel(mName, dest, flags);
+            dest.writeInt(mIcon);
+            dest.writeBundle(mExtras);
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        public static final Parcelable.Creator<PlaybackStateCompat.CustomAction> CREATOR
+                = new Parcelable.Creator<PlaybackStateCompat.CustomAction>() {
+
+                    @Override
+                    public PlaybackStateCompat.CustomAction createFromParcel(Parcel p) {
+                        return new PlaybackStateCompat.CustomAction(p);
+                    }
+
+                    @Override
+                    public PlaybackStateCompat.CustomAction[] newArray(int size) {
+                        return new PlaybackStateCompat.CustomAction[size];
+                    }
+                };
+
+        /**
+         * Returns the action of the {@link CustomAction}.
+         *
+         * @return The action of the {@link CustomAction}.
+         */
+        public String getAction() {
+            return mAction;
+        }
+
+        /**
+         * Returns the display name of this action. e.g. "Favorite"
+         *
+         * @return The display name of this {@link CustomAction}.
+         */
+        public CharSequence getName() {
+            return mName;
+        }
+
+        /**
+         * Returns the resource id of the icon in the {@link MediaSessionCompat
+         * Session's} package.
+         *
+         * @return The resource id of the icon in the {@link MediaSessionCompat
+         *         Session's} package.
+         */
+        public int getIcon() {
+            return mIcon;
+        }
+
+        /**
+         * Returns extras which provide additional application-specific
+         * information about the action, or null if none. These arguments are
+         * meant to be consumed by a {@link MediaControllerCompat} if it knows
+         * how to handle them.
+         *
+         * @return Optional arguments for the {@link CustomAction}.
+         */
+        public Bundle getExtras() {
+            return mExtras;
+        }
+
+        @Override
+        public String toString() {
+            return "Action:" +
+                    "mName='" + mName +
+                    ", mIcon=" + mIcon +
+                    ", mExtras=" + mExtras;
+        }
+
+        /**
+         * Builder for {@link CustomAction} objects.
+         */
+        public static final class Builder {
+            private final String mAction;
+            private final CharSequence mName;
+            private final int mIcon;
+            private Bundle mExtras;
+
+            /**
+             * Creates a {@link CustomAction} builder with the id, name, and
+             * icon set.
+             *
+             * @param action The action of the {@link CustomAction}.
+             * @param name The display name of the {@link CustomAction}. This
+             *            name will be displayed along side the action if the UI
+             *            supports it.
+             * @param icon The icon resource id of the {@link CustomAction}.
+             *            This resource id must be in the same package as the
+             *            {@link MediaSessionCompat}. It will be displayed with
+             *            the custom action if the UI supports it.
+             */
+            public Builder(String action, CharSequence name, int icon) {
+                if (TextUtils.isEmpty(action)) {
+                    throw new IllegalArgumentException(
+                            "You must specify an action to build a CustomAction.");
+                }
+                if (TextUtils.isEmpty(name)) {
+                    throw new IllegalArgumentException(
+                            "You must specify a name to build a CustomAction.");
+                }
+                if (icon == 0) {
+                    throw new IllegalArgumentException(
+                            "You must specify an icon resource id to build a CustomAction.");
+                }
+                mAction = action;
+                mName = name;
+                mIcon = icon;
+            }
+
+            /**
+             * Set optional extras for the {@link CustomAction}. These extras
+             * are meant to be consumed by a {@link MediaControllerCompat} if it
+             * knows how to handle them. Keys should be fully qualified (e.g.
+             * "com.example.MY_ARG") to avoid collisions.
+             *
+             * @param extras Optional extras for the {@link CustomAction}.
+             * @return this.
+             */
+            public Builder setExtras(Bundle extras) {
+                mExtras = extras;
+                return this;
+            }
+
+            /**
+             * Build and return the {@link CustomAction} instance with the
+             * specified values.
+             *
+             * @return A new {@link CustomAction} instance.
+             */
+            public CustomAction build() {
+                return new CustomAction(mAction, mName, mIcon, mExtras);
+            }
+        }
+    }
+
+    /**
      * Builder for {@link PlaybackStateCompat} objects.
      */
     public static final class Builder {
@@ -441,12 +612,12 @@
         /**
          * Set the current state of playback.
          * <p>
-         * The position must be in ms and indicates the current playback position
-         * within the track. If the position is unknown use
+         * The position must be in ms and indicates the current playback
+         * position within the track. If the position is unknown use
          * {@link #PLAYBACK_POSITION_UNKNOWN}.
          * <p>
-         * The rate is a multiple of normal playback and should be 0 when paused and
-         * negative when rewinding. Normal playback rate is 1.0.
+         * The rate is a multiple of normal playback and should be 0 when paused
+         * and negative when rewinding. Normal playback rate is 1.0.
          * <p>
          * The state must be one of the following:
          * <ul>
@@ -462,28 +633,66 @@
          *
          * @param state The current state of playback.
          * @param position The position in the current track in ms.
-         * @param playbackRate The current rate of playback as a multiple of normal
-         *            playback.
+         * @param playbackSpeed The current rate of playback as a multiple of
+         *            normal playback.
          */
-        public void setState(int state, long position, float playbackRate) {
-            this.mState = state;
-            this.mPosition = position;
-            this.mRate = playbackRate;
-            mUpdateTime = SystemClock.elapsedRealtime();
+        public Builder setState(int state, long position, float playbackSpeed) {
+            return setState(state, position, playbackSpeed, SystemClock.elapsedRealtime());
+        }
+
+        /**
+         * Set the current state of playback.
+         * <p>
+         * The position must be in ms and indicates the current playback
+         * position within the track. If the position is unknown use
+         * {@link #PLAYBACK_POSITION_UNKNOWN}.
+         * <p>
+         * The rate is a multiple of normal playback and should be 0 when paused
+         * and negative when rewinding. Normal playback rate is 1.0.
+         * <p>
+         * The state must be one of the following:
+         * <ul>
+         * <li> {@link PlaybackStateCompat#STATE_NONE}</li>
+         * <li> {@link PlaybackStateCompat#STATE_STOPPED}</li>
+         * <li> {@link PlaybackStateCompat#STATE_PLAYING}</li>
+         * <li> {@link PlaybackStateCompat#STATE_PAUSED}</li>
+         * <li> {@link PlaybackStateCompat#STATE_FAST_FORWARDING}</li>
+         * <li> {@link PlaybackStateCompat#STATE_REWINDING}</li>
+         * <li> {@link PlaybackStateCompat#STATE_BUFFERING}</li>
+         * <li> {@link PlaybackStateCompat#STATE_ERROR}</li>
+         * </ul>
+         *
+         * @param state The current state of playback.
+         * @param position The position in the current item in ms.
+         * @param playbackSpeed The current speed of playback as a multiple of
+         *            normal playback.
+         * @param updateTime The time in the {@link SystemClock#elapsedRealtime}
+         *            timebase that the position was updated at.
+         * @return this
+         */
+        public Builder setState(int state, long position, float playbackSpeed, long updateTime) {
+            mState = state;
+            mPosition = position;
+            mUpdateTime = updateTime;
+            mRate = playbackSpeed;
+            return this;
         }
 
         /**
          * Set the current buffered position in ms. This is the farthest
          * playback point that can be reached from the current position using
          * only buffered content.
+         *
+         * @return this
          */
-        public void setBufferedPosition(long bufferPosition) {
+        public Builder setBufferedPosition(long bufferPosition) {
             mBufferedPosition = bufferPosition;
+            return this;
         }
 
         /**
-         * Set the current capabilities available on this session. This should use a
-         * bitmask of the available capabilities.
+         * Set the current capabilities available on this session. This should
+         * use a bitmask of the available capabilities.
          * <ul>
          * <li> {@link PlaybackStateCompat#ACTION_SKIP_TO_PREVIOUS}</li>
          * <li> {@link PlaybackStateCompat#ACTION_REWIND}</li>
@@ -495,17 +704,23 @@
          * <li> {@link PlaybackStateCompat#ACTION_SEEK_TO}</li>
          * <li> {@link PlaybackStateCompat#ACTION_SET_RATING}</li>
          * </ul>
+         *
+         * @return this
          */
-        public void setActions(long capabilities) {
+        public Builder setActions(long capabilities) {
             mActions = capabilities;
+            return this;
         }
 
         /**
-         * Set a user readable error message. This should be set when the state is
-         * {@link PlaybackStateCompat#STATE_ERROR}.
+         * Set a user readable error message. This should be set when the state
+         * is {@link PlaybackStateCompat#STATE_ERROR}.
+         *
+         * @return this
          */
-        public void setErrorMessage(CharSequence errorMessage) {
+        public Builder setErrorMessage(CharSequence errorMessage) {
             mErrorMessage = errorMessage;
+            return this;
         }
 
         /**
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewCompat.java
index d883e00..aaabf04 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewCompat.java
@@ -23,6 +23,7 @@
 import android.os.Bundle;
 import android.support.annotation.IdRes;
 import android.support.annotation.IntDef;
+import android.support.annotation.Nullable;
 import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
 import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
 import android.util.Log;
@@ -261,7 +262,7 @@
         public void onInitializeAccessibilityEvent(View v, AccessibilityEvent event);
         public void onPopulateAccessibilityEvent(View v, AccessibilityEvent event);
         public void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info);
-        public void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate);
+        public void setAccessibilityDelegate(View v, @Nullable AccessibilityDelegateCompat delegate);
         public boolean hasAccessibilityDelegate(View v);
         public boolean hasTransientState(View view);
         public void setHasTransientState(View view, boolean hasTransientState);
@@ -271,6 +272,7 @@
         public void postOnAnimationDelayed(View view, Runnable action, long delayMillis);
         public int getImportantForAccessibility(View view);
         public void setImportantForAccessibility(View view, int mode);
+        public boolean isImportantForAccessibility(View view);
         public boolean performAccessibilityAction(View view, int action, Bundle arguments);
         public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view);
         public float getAlpha(View view);
@@ -330,8 +332,11 @@
         public void requestApplyInsets(View view);
         public void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean enabled);
         public boolean getFitsSystemWindows(View view);
+        void setFitsSystemWindows(View view, boolean fitSystemWindows);
         void jumpDrawablesToCurrentState(View v);
         void setOnApplyWindowInsetsListener(View view, OnApplyWindowInsetsListener listener);
+        void setSaveFromParentEnabled(View view, boolean enabled);
+        void setActivated(View view, boolean activated);
     }
 
     static class BaseViewCompatImpl implements ViewCompatImpl {
@@ -399,6 +404,9 @@
         public void setImportantForAccessibility(View view, int mode) {
 
         }
+        public boolean isImportantForAccessibility(View view) {
+            return true;
+        }
         public boolean performAccessibilityAction(View view, int action, Bundle arguments) {
             return false;
         }
@@ -715,6 +723,11 @@
         }
 
         @Override
+        public void setFitsSystemWindows(View view, boolean fitSystemWindows) {
+            // noop
+        }
+
+        @Override
         public void jumpDrawablesToCurrentState(View view) {
             // Do nothing; API didn't exist.
         }
@@ -724,6 +737,16 @@
                 OnApplyWindowInsetsListener listener) {
             // noop
         }
+
+        @Override
+        public void setSaveFromParentEnabled(View v, boolean enabled) {
+            // noop
+        }
+
+        @Override
+        public void setActivated(View view, boolean activated) {
+            // noop
+        }
     }
 
     static class EclairMr1ViewCompatImpl extends BaseViewCompatImpl {
@@ -893,6 +916,16 @@
         public void jumpDrawablesToCurrentState(View view) {
             ViewCompatHC.jumpDrawablesToCurrentState(view);
         }
+
+        @Override
+        public void setSaveFromParentEnabled(View view, boolean enabled) {
+            ViewCompatHC.setSaveFromParentEnabled(view, enabled);
+        }
+
+        @Override
+        public void setActivated(View view, boolean activated) {
+            ViewCompatHC.setActivated(view, activated);
+        }
     }
 
     static class ICSViewCompatImpl extends HCViewCompatImpl {
@@ -919,8 +952,10 @@
             ViewCompatICS.onInitializeAccessibilityNodeInfo(v, info.getInfo());
         }
         @Override
-        public void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate) {
-            ViewCompatICS.setAccessibilityDelegate(v, delegate.getBridge());
+        public void setAccessibilityDelegate(View v,
+                @Nullable AccessibilityDelegateCompat delegate) {
+            ViewCompatICS.setAccessibilityDelegate(v,
+                    delegate == null ? null : delegate.getBridge());
         }
 
         @Override
@@ -959,6 +994,11 @@
             }
             return vpa;
         }
+
+        @Override
+        public void setFitsSystemWindows(View view, boolean fitSystemWindows) {
+            ViewCompatICS.setFitsSystemWindows(view, fitSystemWindows);
+        }
     }
 
     static class JBViewCompatImpl extends ICSViewCompatImpl {
@@ -1144,6 +1184,11 @@
         public void setOnApplyWindowInsetsListener(View view, OnApplyWindowInsetsListener listener) {
             ViewCompatApi21.setOnApplyWindowInsetsListener(view, listener);
         }
+
+        @Override
+        public boolean isImportantForAccessibility(View view) {
+            return ViewCompatApi21.isImportantForAccessibility(view);
+        }
     }
 
     static final ViewCompatImpl IMPL;
@@ -2243,6 +2288,16 @@
     }
 
     /**
+     * Sets whether or not this view should account for system screen decorations
+     * such as the status bar and inset its content; that is, controlling whether
+     * the default implementation of {@link View#fitSystemWindows(Rect)} will be
+     * executed. See that method for more details.
+     */
+    public static void setFitsSystemWindows(View view, boolean fitSystemWindows) {
+        IMPL.setFitsSystemWindows(view, fitSystemWindows);
+    }
+
+    /**
      * On API 11 devices and above, call <code>Drawable.jumpToCurrentState()</code>
      * on all Drawable objects associated with this view.
      * <p>
@@ -2262,5 +2317,29 @@
         IMPL.setOnApplyWindowInsetsListener(v, listener);
     }
 
+    /**
+     * Controls whether the entire hierarchy under this view will save its
+     * state when a state saving traversal occurs from its parent.
+     *
+     * @param enabled Set to false to <em>disable</em> state saving, or true
+     * (the default) to allow it.
+     */
+    public static void setSaveFromParentEnabled(View v, boolean enabled) {
+        IMPL.setSaveFromParentEnabled(v, enabled);
+    }
+
+    /**
+     * Changes the activated state of this view. A view can be activated or not.
+     * Note that activation is not the same as selection.  Selection is
+     * a transient property, representing the view (hierarchy) the user is
+     * currently interacting with.  Activation is a longer-term state that the
+     * user can move views in and out of.
+     *
+     * @param activated true if the view must be activated, false otherwise
+     */
+    public static void setActivated(View view, boolean activated) {
+        IMPL.setActivated(view, activated);
+    }
+
     // TODO: getters for various view properties (rotation, etc)
 }
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewPropertyAnimatorCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewPropertyAnimatorCompat.java
index 0acc4b9..8813929 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewPropertyAnimatorCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/view/ViewPropertyAnimatorCompat.java
@@ -300,7 +300,10 @@
 
             @Override
             public void run() {
-                startAnimation(mVpa, mViewRef.get());
+                final View view = mViewRef.get();
+                if (view != null) {
+                    startAnimation(mVpa, view);
+                }
             }
         };
 
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.java b/sdk/extras/android/support/v4/src/java/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.java
index 88bd985..055598f 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.java
@@ -36,6 +36,16 @@
     public static class AccessibilityActionCompat {
         private final Object mAction;
 
+        /**
+         * Creates a new instance.
+         *
+         * @param actionId The action id.
+         * @param label The action label.
+         */
+        public AccessibilityActionCompat(int actionId, CharSequence label) {
+            this(IMPL.newAccessibilityAction(actionId, label));
+        }
+
         private AccessibilityActionCompat(Object action) {
             mAction = action;
         }
@@ -46,7 +56,7 @@
          * @return The action id.
          */
         public int getId() {
-            return AccessibilityNodeInfoCompatApi21.AccessibilityAction.getId(mAction);
+            return IMPL.getAccessibilityActionId(mAction);
         }
 
         /**
@@ -56,7 +66,7 @@
          * @return The label.
          */
         public CharSequence getLabel() {
-            return AccessibilityNodeInfoCompatApi21.AccessibilityAction.getLabel(mAction);
+            return IMPL.getAccessibilityActionLabel(mAction);
         }
     }
 
@@ -176,6 +186,7 @@
     }
 
     static interface AccessibilityNodeInfoImpl {
+        public Object newAccessibilityAction(int actionId, CharSequence label);
         public Object obtain();
         public Object obtain(View source);
         public Object obtain(Object info);
@@ -191,6 +202,9 @@
         public void addChild(Object info, View child, int virtualDescendantId);
         public int getActions(Object info);
         public void addAction(Object info, int action);
+        public void addAction(Object info, Object action);
+        public int getAccessibilityActionId(Object action);
+        public CharSequence getAccessibilityActionLabel(Object action);
         public boolean performAction(Object info, int action);
         public boolean performAction(Object info, int action, Bundle arguments);
         public void setMovementGranularities(Object info, int granularities);
@@ -246,7 +260,6 @@
         public void setCollectionItemInfo(Object info, Object collectionItemInfo);
         public Object getRangeInfo(Object info);
         public List<Object> getActionList(Object info);
-        public void addAction(Object info, int id, CharSequence label);
         public Object obtainCollectionInfo(int rowCount, int columnCount, boolean hierarchical,
                 int selectionMode);
         public int getCollectionInfoColumnCount(Object info);
@@ -260,10 +273,21 @@
         public int getCollectionItemRowSpan(Object info);
         public boolean isCollectionItemHeading(Object info);
         public boolean isCollectionItemSelected(Object info);
+        public AccessibilityNodeInfoCompat getTraversalBefore(Object info);
+        public void setTraversalBefore(Object info, View view);
+        public void setTraversalBefore(Object info, View root, int virtualDescendantId);
+        public AccessibilityNodeInfoCompat getTraversalAfter(Object info);
+        public void setTraversalAfter(Object info, View view);
+        public void setTraversalAfter(Object info, View root, int virtualDescendantId);
     }
 
     static class AccessibilityNodeInfoStubImpl implements AccessibilityNodeInfoImpl {
         @Override
+        public Object newAccessibilityAction(int actionId, CharSequence label) {
+            return null;
+        }
+
+        @Override
         public Object obtain() {
             return null;
         }
@@ -289,6 +313,21 @@
         }
 
         @Override
+        public void addAction(Object info, Object action) {
+
+        }
+
+        @Override
+        public int getAccessibilityActionId(Object action) {
+            return 0;
+        }
+
+        @Override
+        public CharSequence getAccessibilityActionLabel(Object action) {
+            return null;
+        }
+
+        @Override
         public void addChild(Object info, View child) {
 
         }
@@ -612,10 +651,6 @@
         }
 
         @Override
-        public void addAction(Object info, int id, CharSequence label) {
-        }
-
-        @Override
         public Object obtainCollectionInfo(int rowCount, int columnCount, boolean hierarchical,
                 int selectionMode) {
             return null;
@@ -671,6 +706,32 @@
         public boolean isCollectionItemSelected(Object info) {
             return false;
         }
+
+        @Override
+        public AccessibilityNodeInfoCompat getTraversalBefore(Object info) {
+            return null;
+        }
+
+        @Override
+        public void setTraversalBefore(Object info, View view) {
+        }
+
+        @Override
+        public void setTraversalBefore(Object info, View root, int virtualDescendantId) {
+        }
+
+        @Override
+        public AccessibilityNodeInfoCompat getTraversalAfter(Object info) {
+            return null;
+        }
+
+        @Override
+        public void setTraversalAfter(Object info, View view) {
+        }
+
+        @Override
+        public void setTraversalAfter(Object info, View root, int virtualDescendantId) {
+        }
     }
 
     static class AccessibilityNodeInfoIcsImpl extends AccessibilityNodeInfoStubImpl {
@@ -908,13 +969,6 @@
         public void recycle(Object info) {
             AccessibilityNodeInfoCompatIcs.recycle(info);
         }
-
-        @Override
-        public void addAction(Object info, int id, CharSequence label) {
-            if (Integer.bitCount(id) == 1) {
-                addAction(info, id);
-            }
-        }
     }
 
     static class AccessibilityNodeInfoJellybeanImpl extends AccessibilityNodeInfoIcsImpl {
@@ -1090,6 +1144,11 @@
 
     static class AccessibilityNodeInfoApi21Impl extends AccessibilityNodeInfoKitKatImpl {
         @Override
+        public Object newAccessibilityAction(int actionId, CharSequence label) {
+            return AccessibilityNodeInfoCompatApi21.newAccessibilityAction(actionId, label);
+        }
+
+        @Override
         public List<Object> getActionList(Object info) {
             return AccessibilityNodeInfoCompatApi21.getActionList(info);
         }
@@ -1102,8 +1161,18 @@
         }
 
         @Override
-        public void addAction(Object info, int id, CharSequence label) {
-            AccessibilityNodeInfoCompatApi21.addAction(info, id, label);
+        public void addAction(Object info, Object action) {
+            AccessibilityNodeInfoCompatApi21.addAction(info, action);
+        }
+
+        @Override
+        public int getAccessibilityActionId(Object action) {
+            return AccessibilityNodeInfoCompatApi21.getAccessibilityActionId(action);
+        }
+
+        @Override
+        public CharSequence getAccessibilityActionLabel(Object action) {
+            return AccessibilityNodeInfoCompatApi21.getAccessibilityActionLabel(action);
         }
 
         @Override
@@ -1119,8 +1188,52 @@
         }
     }
 
+    static class AccessibilityNodeInfoApi22Impl extends AccessibilityNodeInfoApi21Impl {
+        @Override
+        public AccessibilityNodeInfoCompat getTraversalBefore(Object info) {
+            Object nodeInfo = AccessibilityNodeInfoCompatApi22.getTraversalBefore(info);
+            if (nodeInfo == null) {
+                return null;
+            }
+
+            return new AccessibilityNodeInfoCompat(nodeInfo);
+        }
+
+        @Override
+        public void setTraversalBefore(Object info, View view) {
+            AccessibilityNodeInfoCompatApi22.setTraversalBefore(info, view);
+        }
+
+        @Override
+        public void setTraversalBefore(Object info, View root, int virtualDescendantId) {
+            AccessibilityNodeInfoCompatApi22.setTraversalBefore(info, root, virtualDescendantId);
+        }
+
+        @Override
+        public AccessibilityNodeInfoCompat getTraversalAfter(Object info) {
+            Object nodeInfo = AccessibilityNodeInfoCompatApi22.getTraversalAfter(info);
+            if (nodeInfo == null) {
+                return null;
+            }
+
+            return new AccessibilityNodeInfoCompat(nodeInfo);
+        }
+
+        @Override
+        public void setTraversalAfter(Object info, View view) {
+            AccessibilityNodeInfoCompatApi22.setTraversalAfter(info, view);
+        }
+
+        @Override
+        public void setTraversalAfter(Object info, View root, int virtualDescendantId) {
+            AccessibilityNodeInfoCompatApi22.setTraversalAfter(info, root, virtualDescendantId);
+        }
+    }
+
     static {
-        if (Build.VERSION.SDK_INT >= 21) {
+        if (Build.VERSION.SDK_INT >= 22) {
+            IMPL = new AccessibilityNodeInfoApi22Impl();
+        } else if (Build.VERSION.SDK_INT >= 21) {
             IMPL = new AccessibilityNodeInfoApi21Impl();
         } else if (Build.VERSION.SDK_INT >= 19) { // KitKat
             IMPL = new AccessibilityNodeInfoKitKatImpl();
@@ -1693,6 +1806,21 @@
     }
 
     /**
+     * Adds an action that can be performed on the node.
+     * <p>
+     * <strong>Note:</strong> Cannot be called from an
+     * {@link android.accessibilityservice.AccessibilityService}. This class is
+     * made immutable before being delivered to an AccessibilityService.
+     * </p>
+     *
+     * @param action The action.
+     * @throws IllegalStateException If called from an AccessibilityService.
+     */
+    public void addAction(AccessibilityActionCompat action) {
+        IMPL.addAction(mInfo, action.mAction);
+    }
+
+    /**
      * Performs an action on the node.
      * <p>
      * <strong>Note:</strong> An action can be performed only if the request is
@@ -2389,14 +2517,18 @@
      * @return A list of AccessibilityActions.
      */
     public List<AccessibilityActionCompat> getActionList() {
-        List<AccessibilityActionCompat> result = new ArrayList<AccessibilityActionCompat>();
         List<Object> actions = IMPL.getActionList(mInfo);
-        final int actionCount = actions.size();
-        for (int i = 0; i < actionCount; i++) {
-            Object action = actions.get(i);
-            result.add(new AccessibilityActionCompat(action));
+        if (actions != null) {
+            List<AccessibilityActionCompat> result = new ArrayList<AccessibilityActionCompat>();
+            final int actionCount = actions.size();
+            for (int i = 0; i < actionCount; i++) {
+                Object action = actions.get(i);
+                result.add(new AccessibilityActionCompat(action));
+            }
+            return result;
+        } else {
+            return Collections.<AccessibilityActionCompat>emptyList();
         }
-        return result;
     }
 
 
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/CircleImageView.java b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/CircleImageView.java
index 5010680..246ffa7 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/CircleImageView.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/CircleImageView.java
@@ -17,7 +17,6 @@
 package android.support.v4.widget;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
@@ -68,7 +67,7 @@
             ViewCompat.setLayerType(this, ViewCompat.LAYER_TYPE_SOFTWARE, circle.getPaint());
             circle.getPaint().setShadowLayer(mShadowRadius, shadowXOffset, shadowYOffset,
                     KEY_SHADOW_COLOR);
-            final int padding = (int) mShadowRadius;
+            final int padding = mShadowRadius;
             // set padding so the inner image sits correctly within the shadow.
             setPadding(padding, padding, padding, padding);
         }
@@ -111,17 +110,22 @@
 
     /**
      * Update the background color of the circle image view.
+     *
+     * @param colorRes Id of a color resource.
      */
-    public void setBackgroundColor(int colorRes) {
+    public void setBackgroundColorRes(int colorRes) {
+        setBackgroundColor(getContext().getResources().getColor(colorRes));
+    }
+
+    @Override
+    public void setBackgroundColor(int color) {
         if (getBackground() instanceof ShapeDrawable) {
-            final Resources res = getResources();
-            ((ShapeDrawable) getBackground()).getPaint().setColor(res.getColor(colorRes));
+            ((ShapeDrawable) getBackground()).getPaint().setColor(color);
         }
     }
 
     private class OvalShadow extends OvalShape {
         private RadialGradient mRadialGradient;
-        private int mShadowRadius;
         private Paint mShadowPaint;
         private int mCircleDiameter;
 
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/DrawerLayout.java b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/DrawerLayout.java
index 0083008..8204ec7 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/DrawerLayout.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/DrawerLayout.java
@@ -261,6 +261,7 @@
         void dispatchChildInsets(View child, Object insets, int drawerGravity);
         void applyMarginInsets(MarginLayoutParams lp, Object insets, int drawerGravity);
         int getTopInset(Object lastInsets);
+        Drawable getDefaultStatusBarBackground(Context context);
     }
 
     static class DrawerLayoutCompatImplBase implements DrawerLayoutCompatImpl {
@@ -279,6 +280,11 @@
         public int getTopInset(Object insets) {
             return 0;
         }
+
+        @Override
+        public Drawable getDefaultStatusBarBackground(Context context) {
+            return null;
+        }
     }
 
     static class DrawerLayoutCompatImplApi21 implements DrawerLayoutCompatImpl {
@@ -297,6 +303,11 @@
         public int getTopInset(Object insets) {
             return DrawerLayoutCompatApi21.getTopInset(insets);
         }
+
+        @Override
+        public Drawable getDefaultStatusBarBackground(Context context) {
+            return DrawerLayoutCompatApi21.getDefaultStatusBarBackground(context);
+        }
     }
 
     static {
@@ -348,6 +359,7 @@
         ViewGroupCompat.setMotionEventSplittingEnabled(this, false);
         if (ViewCompat.getFitsSystemWindows(this)) {
             IMPL.configureApplyInsets(this);
+            mStatusBarBackground = IMPL.getDefaultStatusBarBackground(context);
         }
     }
 
@@ -658,6 +670,11 @@
 
             updateChildrenImportantForAccessibility(drawerView, true);
 
+            // Only send WINDOW_STATE_CHANGE if the host has window focus.
+            if (hasWindowFocus()) {
+                sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+            }
+
             drawerView.requestFocus();
         }
     }
@@ -998,6 +1015,15 @@
     }
 
     /**
+     * Gets the drawable used to draw in the insets area for the status bar.
+     *
+     * @return The status bar background drawable, or null if none set
+     */
+    public Drawable getStatusBarBackgroundDrawable() {
+        return mStatusBarBackground;
+    }
+
+    /**
      * Set a drawable to draw in the insets area for the status bar.
      * Note that this will only be activated if this DrawerLayout fitsSystemWindows.
      *
@@ -1822,6 +1848,12 @@
             }
 
             info.setClassName(DrawerLayout.class.getName());
+
+            // This view reports itself as focusable so that it can intercept
+            // the back button, but we should prevent this view from reporting
+            // itself as focusable to accessibility services.
+            info.setFocusable(false);
+            info.setFocused(false);
         }
 
         @Override
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/MaterialProgressDrawable.java b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/MaterialProgressDrawable.java
index 3c44b71..fc7eb26 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/MaterialProgressDrawable.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/MaterialProgressDrawable.java
@@ -26,7 +26,6 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.ColorFilter;
-import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Paint.Style;
 import android.graphics.Path;
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/SwipeRefreshLayout.java b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/SwipeRefreshLayout.java
index 2496ef9..2e056e6 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/SwipeRefreshLayout.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/SwipeRefreshLayout.java
@@ -101,6 +101,7 @@
     private boolean mOriginalOffsetCalculated = false;
 
     private float mInitialMotionY;
+    private float mInitialDownY;
     private boolean mIsBeingDragged;
     private int mActivePointerId = INVALID_POINTER;
     // Whether this item is scaled up rather than clipped
@@ -446,13 +447,30 @@
     }
 
     /**
+     * @deprecated Use {@link #setProgressBackgroundColorSchemeResource(int)}
+     */
+    @Deprecated
+    public void setProgressBackgroundColor(int colorRes) {
+        setProgressBackgroundColorSchemeResource(colorRes);
+    }
+
+    /**
      * Set the background color of the progress spinner disc.
      *
      * @param colorRes Resource id of the color.
      */
-    public void setProgressBackgroundColor(int colorRes) {
-        mCircleView.setBackgroundColor(colorRes);
-        mProgress.setBackgroundColor(getResources().getColor(colorRes));
+    public void setProgressBackgroundColorSchemeResource(int colorRes) {
+        setProgressBackgroundColorSchemeColor(getResources().getColor(colorRes));
+    }
+
+    /**
+     * Set the background color of the progress spinner disc.
+     *
+     * @param color
+     */
+    public void setProgressBackgroundColorSchemeColor(int color) {
+        mCircleView.setBackgroundColor(color);
+        mProgress.setBackgroundColor(color);
     }
 
     /**
@@ -577,6 +595,17 @@
     }
 
     /**
+     * Get the diameter of the progress circle that is displayed as part of the
+     * swipe to refresh layout. This is not valid until a measure pass has
+     * completed.
+     *
+     * @return Diameter in pixels of the progress circle view.
+     */
+    public int getProgressCircleDiameter() {
+        return mCircleView != null ?mCircleView.getMeasuredHeight() : 0;
+    }
+
+    /**
      * @return Whether it is possible for the child view of this layout to
      *         scroll up. Override this if the child view is a custom view.
      */
@@ -615,11 +644,12 @@
                 setTargetOffsetTopAndBottom(mOriginalOffsetTop - mCircleView.getTop(), true);
                 mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
                 mIsBeingDragged = false;
-                final float initialMotionY = getMotionEventY(ev, mActivePointerId);
-                if (initialMotionY == -1) {
+                final float initialDownY = getMotionEventY(ev, mActivePointerId);
+                if (initialDownY == -1) {
                     return false;
                 }
-                mInitialMotionY = initialMotionY;
+                mInitialDownY = initialDownY;
+                break;
 
             case MotionEvent.ACTION_MOVE:
                 if (mActivePointerId == INVALID_POINTER) {
@@ -631,8 +661,9 @@
                 if (y == -1) {
                     return false;
                 }
-                final float yDiff = y - mInitialMotionY;
+                final float yDiff = y - mInitialDownY;
                 if (yDiff > mTouchSlop && !mIsBeingDragged) {
+                    mInitialMotionY = mInitialDownY + mTouchSlop;
                     mIsBeingDragged = true;
                     mProgress.setAlpha(STARTING_PROGRESS_ALPHA);
                 }
@@ -733,7 +764,7 @@
                             // Animate the alpha
                             startProgressAlphaStartAnimation();
                         }
-                        float strokeStart = (float) (adjustedPercent * .8f);
+                        float strokeStart = adjustedPercent * .8f;
                         mProgress.setStartEndTrim(0f, Math.min(MAX_PROGRESS_ANGLE, strokeStart));
                         mProgress.setArrowScale(Math.min(1f, adjustedPercent));
                     } else {
@@ -852,6 +883,7 @@
             targetTop = (mFrom + (int) ((endTarget - mFrom) * interpolatedTime));
             int offset = targetTop - mCircleView.getTop();
             setTargetOffsetTopAndBottom(offset, false /* requires update */);
+            mProgress.setArrowScale(1 - interpolatedTime);
         }
     };
 
@@ -920,4 +952,4 @@
     public interface OnRefreshListener {
         public void onRefresh();
     }
-}
\ No newline at end of file
+}
diff --git a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/ViewDragHelper.java b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/ViewDragHelper.java
index 2112b23..c6bebd3 100644
--- a/sdk/extras/android/support/v4/src/java/android/support/v4/widget/ViewDragHelper.java
+++ b/sdk/extras/android/support/v4/src/java/android/support/v4/widget/ViewDragHelper.java
@@ -868,6 +868,7 @@
     }
 
     void setDragState(int state) {
+        mParentView.removeCallbacks(mSetIdleRunnable);
         if (mDragState != state) {
             mDragState = state;
             mCallback.onViewDragStateChanged(state);
diff --git a/sdk/extras/android/support/v4/src/jellybean-mr2/android/support/v4/media/session/MediaSessionCompatApi18.java b/sdk/extras/android/support/v4/src/jellybean-mr2/android/support/v4/media/session/MediaSessionCompatApi18.java
new file mode 100644
index 0000000..48e2c48
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/jellybean-mr2/android/support/v4/media/session/MediaSessionCompatApi18.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media.session;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.RemoteControlClient;
+import android.os.SystemClock;
+
+public class MediaSessionCompatApi18 {
+
+    public static Object createPlaybackPositionUpdateListener(
+            MediaSessionCompatApi14.Callback callback) {
+        return new OnPlaybackPositionUpdateListener<MediaSessionCompatApi14.Callback>(callback);
+    }
+
+    public static void registerMediaButtonEventReceiver(Context context, PendingIntent pi) {
+        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        am.registerMediaButtonEventReceiver(pi);
+    }
+
+    public static void unregisterMediaButtonEventReceiver(Context context, PendingIntent pi) {
+        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        am.unregisterMediaButtonEventReceiver(pi);
+    }
+
+    public static void setState(Object rccObj, int state, long position, float speed,
+            long updateTime) {
+        long currTime = SystemClock.elapsedRealtime();
+        if (state == MediaSessionCompatApi14.STATE_PLAYING && position > 0) {
+            long diff = 0;
+            if (updateTime > 0) {
+                diff = currTime - updateTime;
+                if (speed > 0 && speed != 1f) {
+                    diff *= speed;
+                }
+            }
+            position += diff;
+        }
+        state = MediaSessionCompatApi14.getRccStateFromState(state);
+        ((RemoteControlClient) rccObj).setPlaybackState(state, position, speed);
+    }
+
+    public static void setOnPlaybackPositionUpdateListener(Object rccObj,
+            Object onPositionUpdateObj) {
+        ((RemoteControlClient) rccObj).setPlaybackPositionUpdateListener(
+                (RemoteControlClient.OnPlaybackPositionUpdateListener) onPositionUpdateObj);
+    }
+
+    static class OnPlaybackPositionUpdateListener<T extends MediaSessionCompatApi14.Callback>
+            implements RemoteControlClient.OnPlaybackPositionUpdateListener {
+        protected final T mCallback;
+
+        public OnPlaybackPositionUpdateListener(T callback) {
+            mCallback = callback;
+        }
+
+        @Override
+        public void onPlaybackPositionUpdate(long newPositionMs) {
+            mCallback.onSeekTo(newPositionMs);
+        }
+    }
+}
\ No newline at end of file
diff --git a/sdk/extras/android/support/v4/src/kitkat/android/support/v4/media/session/MediaSessionCompatApi19.java b/sdk/extras/android/support/v4/src/kitkat/android/support/v4/media/session/MediaSessionCompatApi19.java
new file mode 100644
index 0000000..261f4ca
--- /dev/null
+++ b/sdk/extras/android/support/v4/src/kitkat/android/support/v4/media/session/MediaSessionCompatApi19.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.support.v4.media.session;
+
+import android.graphics.Bitmap;
+import android.media.MediaMetadataEditor;
+import android.media.Rating;
+import android.media.RemoteControlClient;
+import android.os.Bundle;
+
+public class MediaSessionCompatApi19 {
+    /***** MediaMetadata keys ********/
+    private static final String METADATA_KEY_ART = "android.media.metadata.ART";
+    private static final String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
+    private static final String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
+    private static final String METADATA_KEY_RATING = "android.media.metadata.RATING";
+
+    public static Object createMetadataUpdateListener(MediaSessionCompatApi14.Callback callback) {
+        return new OnMetadataUpdateListener<MediaSessionCompatApi14.Callback>(callback);
+    }
+
+    public static void setMetadata(Object rccObj, Bundle metadata, boolean supportRating) {
+        RemoteControlClient.MetadataEditor editor = ((RemoteControlClient) rccObj).editMetadata(
+                true);
+        MediaSessionCompatApi14.buildOldMetadata(metadata, editor);
+        addNewMetadata(metadata, editor);
+        if (supportRating && android.os.Build.VERSION.SDK_INT > 19) {
+            editor.addEditableKey(RemoteControlClient.MetadataEditor.RATING_KEY_BY_USER);
+        }
+        editor.apply();
+    }
+
+    public static void setOnMetadataUpdateListener(Object rccObj, Object onMetadataUpdateObj) {
+        ((RemoteControlClient) rccObj).setMetadataUpdateListener(
+                (RemoteControlClient.OnMetadataUpdateListener) onMetadataUpdateObj);
+    }
+
+    static void addNewMetadata(Bundle metadata, RemoteControlClient.MetadataEditor editor) {
+        if (metadata.containsKey(METADATA_KEY_RATING)) {
+            editor.putObject(MediaMetadataEditor.RATING_KEY_BY_OTHERS,
+                    metadata.getParcelable(METADATA_KEY_RATING));
+        }
+        if (metadata.containsKey(METADATA_KEY_USER_RATING)) {
+            editor.putObject(MediaMetadataEditor.RATING_KEY_BY_USER,
+                    metadata.getParcelable(METADATA_KEY_USER_RATING));
+        }
+        if (metadata.containsKey(METADATA_KEY_ART)) {
+            Bitmap art = metadata.getParcelable(METADATA_KEY_ART);
+            editor.putBitmap(MediaMetadataEditor.BITMAP_KEY_ARTWORK, art);
+        } else if (metadata.containsKey(METADATA_KEY_ALBUM_ART)) {
+            // Fall back to album art if the track art wasn't available
+            Bitmap art = metadata.getParcelable(METADATA_KEY_ALBUM_ART);
+            editor.putBitmap(MediaMetadataEditor.BITMAP_KEY_ARTWORK, art);
+        }
+    }
+
+    static class OnMetadataUpdateListener<T extends MediaSessionCompatApi14.Callback> implements
+            RemoteControlClient.OnMetadataUpdateListener {
+        protected final T mCallback;
+
+        public OnMetadataUpdateListener(T callback) {
+            mCallback = callback;
+        }
+
+        @Override
+        public void onMetadataUpdate(int key, Object newValue) {
+            if (key == MediaMetadataEditor.RATING_KEY_BY_USER && newValue instanceof Rating) {
+                mCallback.onSetRating(newValue);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/sdk/extras/android/support/v4/src/kitkat/android/support/v4/print/PrintHelperKitkat.java b/sdk/extras/android/support/v4/src/kitkat/android/support/v4/print/PrintHelperKitkat.java
index cbc4d2b..b827b1f 100644
--- a/sdk/extras/android/support/v4/src/kitkat/android/support/v4/print/PrintHelperKitkat.java
+++ b/sdk/extras/android/support/v4/src/kitkat/android/support/v4/print/PrintHelperKitkat.java
@@ -302,7 +302,7 @@
 
         PrintDocumentAdapter printDocumentAdapter = new PrintDocumentAdapter() {
             private PrintAttributes mAttributes;
-            AsyncTask<Uri, Boolean, Bitmap> loadBitmap;
+            AsyncTask<Uri, Boolean, Bitmap> mLoadBitmap;
             Bitmap mBitmap = null;
 
             @Override
@@ -311,9 +311,11 @@
                                  final CancellationSignal cancellationSignal,
                                  final LayoutResultCallback layoutResultCallback,
                                  Bundle bundle) {
+
+                mAttributes = newPrintAttributes;
+
                 if (cancellationSignal.isCanceled()) {
                     layoutResultCallback.onLayoutCancelled();
-                    mAttributes = newPrintAttributes;
                     return;
                 }
                 // we finished the load
@@ -327,7 +329,7 @@
                     return;
                 }
 
-                loadBitmap = new AsyncTask<Uri, Boolean, Bitmap>() {
+                mLoadBitmap = new AsyncTask<Uri, Boolean, Bitmap>() {
 
                     @Override
                     protected void onPreExecute() {
@@ -368,17 +370,16 @@
                         } else {
                             layoutResultCallback.onLayoutFailed(null);
                         }
+                        mLoadBitmap = null;
                     }
 
                     @Override
                     protected void onCancelled(Bitmap result) {
                         // Task was cancelled, report that.
                         layoutResultCallback.onLayoutCancelled();
+                        mLoadBitmap = null;
                     }
-                };
-                loadBitmap.execute();
-
-                mAttributes = newPrintAttributes;
+                }.execute();
             }
 
             private void cancelLoad() {
@@ -394,7 +395,9 @@
             public void onFinish() {
                 super.onFinish();
                 cancelLoad();
-                loadBitmap.cancel(true);
+                if (mLoadBitmap != null) {
+                    mLoadBitmap.cancel(true);
+                }
                 if (callback != null) {
                     callback.onFinish();
                 }
diff --git a/sdk/extras/android/support/v7/appcompat/libs/android-support-v4.jar b/sdk/extras/android/support/v7/appcompat/libs/android-support-v4.jar
index 4ebdaa9..1437d24 100644
--- a/sdk/extras/android/support/v7/appcompat/libs/android-support-v4.jar
+++ b/sdk/extras/android/support/v7/appcompat/libs/android-support-v4.jar
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar b/sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar
index fdd6c5b..a5268c2 100644
--- a/sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar
+++ b/sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/anim/abc_grow_fade_in_from_bottom.xml b/sdk/extras/android/support/v7/appcompat/res/anim/abc_grow_fade_in_from_bottom.xml
new file mode 100644
index 0000000..79d02d4
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/anim/abc_grow_fade_in_from_bottom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/res/anim/fade_in.xml
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
+    <scale 	android:interpolator="@android:anim/decelerate_interpolator"
+              android:fromXScale="0.9" android:toXScale="1.0"
+              android:fromYScale="0.9" android:toYScale="1.0"
+              android:pivotX="50%" android:pivotY="100%"
+              android:duration="@integer/abc_config_activityDefaultDur" />
+    <alpha 	android:interpolator="@android:anim/decelerate_interpolator"
+              android:fromAlpha="0.0" android:toAlpha="1.0"
+              android:duration="@integer/abc_config_activityShortDur" />
+</set>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/anim/abc_shrink_fade_out_from_bottom.xml b/sdk/extras/android/support/v7/appcompat/res/anim/abc_shrink_fade_out_from_bottom.xml
new file mode 100644
index 0000000..9a23cd2
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/anim/abc_shrink_fade_out_from_bottom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
+    <scale 	android:interpolator="@android:anim/decelerate_interpolator"
+              android:fromXScale="1.0" android:toXScale="0.9"
+              android:fromYScale="1.0" android:toYScale="0.9"
+              android:pivotX="50%" android:pivotY="100%"
+              android:duration="@integer/abc_config_activityDefaultDur" />
+    <alpha 	android:interpolator="@android:anim/decelerate_interpolator"
+              android:fromAlpha="1.0" android:toAlpha="0.0"
+              android:duration="@integer/abc_config_activityShortDur" />
+</set>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png
deleted file mode 100644
index 6c14157..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png
deleted file mode 100644
index f4ff16b..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_mtrl_alpha.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_mtrl_alpha.9.png
new file mode 100644
index 0000000..b07da0c
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ab_share_pack_mtrl_alpha.9.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_btn_rating_star_off_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_btn_rating_star_off_mtrl_alpha.png
new file mode 100644
index 0000000..51a895d
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_btn_rating_star_off_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_btn_rating_star_on_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_btn_rating_star_on_mtrl_alpha.png
new file mode 100644
index 0000000..2f59488
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_btn_rating_star_on_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ic_menu_share_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ic_menu_share_mtrl_alpha.png
index 0eacedd..06e7a17 100644
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ic_menu_share_mtrl_alpha.png
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/abc_ic_menu_share_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png
deleted file mode 100644
index ed4ba34..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png
deleted file mode 100644
index 8f10bd5..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_mtrl_alpha.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_mtrl_alpha.9.png
new file mode 100644
index 0000000..f31730d
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ab_share_pack_mtrl_alpha.9.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_btn_rating_star_off_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_btn_rating_star_off_mtrl_alpha.png
new file mode 100644
index 0000000..d38aed2
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_btn_rating_star_off_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_btn_rating_star_on_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_btn_rating_star_on_mtrl_alpha.png
new file mode 100644
index 0000000..87dade3
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_btn_rating_star_on_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ic_menu_share_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ic_menu_share_mtrl_alpha.png
index e0d5ac4..2cabe7b 100644
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ic_menu_share_mtrl_alpha.png
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-mdpi/abc_ic_menu_share_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-tvdpi/abc_btn_switch_to_on_mtrl_00001.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-tvdpi/abc_btn_switch_to_on_mtrl_00001.9.png
new file mode 100644
index 0000000..d675993
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-tvdpi/abc_btn_switch_to_on_mtrl_00001.9.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-tvdpi/abc_btn_switch_to_on_mtrl_00012.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-tvdpi/abc_btn_switch_to_on_mtrl_00012.9.png
new file mode 100644
index 0000000..8da42fe
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-tvdpi/abc_btn_switch_to_on_mtrl_00012.9.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png
deleted file mode 100644
index 55099d4..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png
deleted file mode 100644
index 3c4701f..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_mtrl_alpha.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_mtrl_alpha.9.png
new file mode 100644
index 0000000..8337ffe
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ab_share_pack_mtrl_alpha.9.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_btn_rating_star_off_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_btn_rating_star_off_mtrl_alpha.png
new file mode 100644
index 0000000..33ec44c
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_btn_rating_star_off_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_btn_rating_star_on_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_btn_rating_star_on_mtrl_alpha.png
new file mode 100644
index 0000000..0166d70
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_btn_rating_star_on_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ic_menu_share_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ic_menu_share_mtrl_alpha.png
index 7accf52..0750fcc 100644
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ic_menu_share_mtrl_alpha.png
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xhdpi/abc_ic_menu_share_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png
deleted file mode 100644
index d8cdf1a..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png
deleted file mode 100644
index a49a207..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_mtrl_alpha.9.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_mtrl_alpha.9.png
new file mode 100644
index 0000000..469f736
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ab_share_pack_mtrl_alpha.9.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_btn_rating_star_off_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_btn_rating_star_off_mtrl_alpha.png
new file mode 100644
index 0000000..4b49faf
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_btn_rating_star_off_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_btn_rating_star_on_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_btn_rating_star_on_mtrl_alpha.png
new file mode 100644
index 0000000..561d9ef
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_btn_rating_star_on_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ic_menu_share_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ic_menu_share_mtrl_alpha.png
index 66f7d16..7e181d1 100644
--- a/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ic_menu_share_mtrl_alpha.png
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xxhdpi/abc_ic_menu_share_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable-xxxhdpi/abc_ic_menu_share_mtrl_alpha.png b/sdk/extras/android/support/v7/appcompat/res/drawable-xxxhdpi/abc_ic_menu_share_mtrl_alpha.png
new file mode 100644
index 0000000..279afe3
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable-xxxhdpi/abc_ic_menu_share_mtrl_alpha.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable/abc_btn_default_mtrl_shape.xml b/sdk/extras/android/support/v7/appcompat/res/drawable/abc_btn_default_mtrl_shape.xml
new file mode 100644
index 0000000..c50d4b1
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable/abc_btn_default_mtrl_shape.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Used as the canonical button shape. -->
+
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+       android:insetLeft="@dimen/abc_button_inset_horizontal_material"
+       android:insetTop="@dimen/abc_button_inset_vertical_material"
+       android:insetRight="@dimen/abc_button_inset_horizontal_material"
+       android:insetBottom="@dimen/abc_button_inset_vertical_material">
+    <shape android:shape="rectangle">
+        <corners android:radius="@dimen/abc_control_corner_material" />
+        <solid android:color="@android:color/white" />
+        <padding android:left="@dimen/abc_button_padding_horizontal_material"
+                 android:top="@dimen/abc_button_padding_vertical_material"
+                 android:right="@dimen/abc_button_padding_horizontal_material"
+                 android:bottom="@dimen/abc_button_padding_vertical_material" />
+    </shape>
+</inset>
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable/abc_ratingbar_full_material.xml b/sdk/extras/android/support/v7/appcompat/res/drawable/abc_ratingbar_full_material.xml
new file mode 100644
index 0000000..535e2da
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable/abc_ratingbar_full_material.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+        android:drawable="@drawable/abc_btn_rating_star_off_mtrl_alpha" />
+    <item android:id="@android:id/secondaryProgress"
+        android:drawable="@drawable/abc_btn_rating_star_off_mtrl_alpha" />
+    <item android:id="@android:id/progress"
+        android:drawable="@drawable/abc_btn_rating_star_on_mtrl_alpha" />
+</layer-list>
diff --git a/sdk/extras/android/support/v7/appcompat/res/drawable/abc_spinner_textfield_background_material.xml b/sdk/extras/android/support/v7/appcompat/res/drawable/abc_spinner_textfield_background_material.xml
new file mode 100644
index 0000000..d0f46a8
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/drawable/abc_spinner_textfield_background_material.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+       android:insetLeft="@dimen/abc_control_inset_material"
+       android:insetTop="@dimen/abc_control_inset_material"
+       android:insetBottom="@dimen/abc_control_inset_material"
+       android:insetRight="@dimen/abc_control_inset_material">
+    <selector>
+        <item android:state_checked="false" android:state_pressed="false">
+            <layer-list>
+                <item android:drawable="@drawable/abc_textfield_default_mtrl_alpha" />
+                <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" />
+            </layer-list>
+        </item>
+        <item>
+            <layer-list>
+                <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha" />
+                <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" />
+            </layer-list>
+        </item>
+    </selector>
+</inset>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view.xml b/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view.xml
index 99c2395..85fd94e 100644
--- a/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view.xml
@@ -16,14 +16,56 @@
 ** limitations under the License.
 */
 -->
-<android.support.v7.widget.LinearLayoutCompat
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<view xmlns:android="http://schemas.android.com/apk/res/android"
+    class="android.support.v7.internal.widget.ActivityChooserView$InnerLayout"
     android:id="@+id/activity_chooser_view_content"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
     android:layout_gravity="center"
     style="?attr/activityChooserViewStyle">
 
-    <include layout="@layout/abc_activity_chooser_view_include" />
+    <FrameLayout
+        android:id="@+id/expand_activities_button"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_gravity="center"
+        android:focusable="true"
+        android:addStatesFromChildren="true"
+        android:background="?attr/actionBarItemBackground">
 
-</android.support.v7.widget.LinearLayoutCompat>
\ No newline at end of file
+        <ImageView android:id="@+id/image"
+            android:layout_width="32dip"
+            android:layout_height="32dip"
+            android:layout_gravity="center"
+            android:layout_marginTop="2dip"
+            android:layout_marginBottom="2dip"
+            android:layout_marginLeft="12dip"
+            android:layout_marginRight="12dip"
+            android:scaleType="fitCenter"
+            android:adjustViewBounds="true" />
+
+    </FrameLayout>
+
+    <FrameLayout
+        android:id="@+id/default_activity_button"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_gravity="center"
+        android:focusable="true"
+        android:addStatesFromChildren="true"
+        android:background="?attr/actionBarItemBackground">
+
+        <ImageView android:id="@+id/image"
+            android:layout_width="32dip"
+            android:layout_height="32dip"
+            android:layout_gravity="center"
+            android:layout_marginTop="2dip"
+            android:layout_marginBottom="2dip"
+            android:layout_marginLeft="12dip"
+            android:layout_marginRight="12dip"
+            android:scaleType="fitCenter"
+            android:adjustViewBounds="true" />
+
+    </FrameLayout>
+
+</view>
diff --git a/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view_include.xml b/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view_include.xml
deleted file mode 100644
index 975b13e..0000000
--- a/sdk/extras/android/support/v7/appcompat/res/layout/abc_activity_chooser_view_include.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<merge
-    xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <FrameLayout
-        android:id="@+id/expand_activities_button"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_gravity="center"
-        android:focusable="true"
-        android:addStatesFromChildren="true"
-        android:background="?attr/actionBarItemBackground">
-
-        <ImageView
-            android:id="@+id/image"
-            android:layout_width="56dip"
-            android:layout_height="36dip"
-            android:layout_gravity="center"
-            android:paddingTop="2dip"
-            android:paddingBottom="2dip"
-            android:paddingLeft="12dip"
-            android:paddingRight="12dip"
-            android:scaleType="fitCenter"
-            android:adjustViewBounds="true" />
-
-    </FrameLayout>
-
-    <FrameLayout
-        android:id="@+id/default_activity_button"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_gravity="center"
-        android:focusable="true"
-        android:addStatesFromChildren="true"
-        android:background="?attr/actionBarItemBackground">
-
-        <ImageView
-            android:id="@+id/image"
-            android:layout_width="56dip"
-            android:layout_height="36dip"
-            android:layout_gravity="center"
-            android:paddingTop="2dip"
-            android:paddingBottom="2dip"
-            android:paddingLeft="12dip"
-            android:paddingRight="12dip"
-            android:scaleType="fitCenter"
-            android:adjustViewBounds="true" />
-
-    </FrameLayout>
-
-</merge>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/layout/abc_expanded_menu_layout.xml b/sdk/extras/android/support/v7/appcompat/res/layout/abc_expanded_menu_layout.xml
index 20e8b19..371151f 100644
--- a/sdk/extras/android/support/v7/appcompat/res/layout/abc_expanded_menu_layout.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/layout/abc_expanded_menu_layout.xml
@@ -18,5 +18,4 @@
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/expanded_menu"
         android:layout_width="?attr/panelMenuListWidth"
-        android:layout_height="wrap_content"
-        android:background="?attr/panelBackground"/>
+        android:layout_height="wrap_content" />
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-af/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-af/strings.xml
index 474f3aa..563258e 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-af/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-af/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navigeer tuis"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navigeer op"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Nog opsies"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Vou in"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Soek"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-am/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-am/strings.xml
index dbd53d6..8621f43 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-am/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-am/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"ወደ መነሻ ይዳስሱ"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"ወደ ላይ ይዳስሱ"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"ተጨማሪ አማራጮች"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"ሰብስብ"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s፣ %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s፣ %2$s፣ %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"ፍለጋ"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-ar/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-ar/strings.xml
index 84d6fba..1f9167c 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-ar/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-ar/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"التنقل إلى الشاشة الرئيسية"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"التنقل إلى أعلى"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"خيارات إضافية"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"تصغير"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s، %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s، %2$s، %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"بحث"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-bg/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-bg/strings.xml
index 9d87ef7..e35b172 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-bg/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-bg/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Придвижване към „Начало“"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Придвижване нагоре"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Още опции"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Свиване"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"„%1$s“ – %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"„%1$s“, „%2$s“ – %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Търсене"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-ca/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-ca/strings.xml
index 5fe4b0d..d989428 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-ca/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-ca/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navega a la pàgina d\'inici"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navega cap a dalt"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Més opcions"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Replega"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Cerca"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-cs/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-cs/strings.xml
index 13c9ba8..aff38a1 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-cs/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-cs/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Přejít na plochu"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Přejít nahoru"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Více možností"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Sbalit"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s – %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s – %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Hledat"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-da/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-da/strings.xml
index 03fec32..c06c2e9 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-da/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-da/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Naviger hjem"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Naviger op"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Flere muligheder"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Skjul"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Søg"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-de/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-de/strings.xml
index 8a0224c..3ac2579 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-de/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-de/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Zur Startseite"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Nach oben"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Weitere Optionen"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Minimieren"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s: %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s: %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Suchen"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-el/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-el/strings.xml
index 52d1b81..f0acb4d 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-el/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-el/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Πλοήγηση στην αρχική σελίδα"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Πλοήγηση προς τα επάνω"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Περισσότερες επιλογές"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Σύμπτυξη"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Αναζήτηση"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-en-rGB/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-en-rGB/strings.xml
index 8a8a111..f0f3beb 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-en-rGB/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-en-rGB/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navigate home"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navigate up"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"More options"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Collapse"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Search"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-es-rUS/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-es-rUS/strings.xml
index ea5004c..3be6353 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-es-rUS/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-es-rUS/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navegar a la página principal"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navegar hacia arriba"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Más opciones"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Contraer"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Búsqueda"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-es/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-es/strings.xml
index c50796e..fc51934 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-es/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-es/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Ir a la pantalla de inicio"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Desplazarse hacia arriba"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Más opciones"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Contraer"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Buscar"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-et-rEE/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-et-rEE/strings.xml
index 139fcf9..79b7036 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-et-rEE/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-et-rEE/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navigeerimine avaekraanile"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navigeerimine üles"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Rohkem valikuid"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Ahendamine"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Otsing"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-fa/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-fa/strings.xml
index c317bda..a813372 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-fa/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-fa/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"پیمایش به صفحه اصلی"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"پیمایش به بالا"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"گزینه‌های بیشتر"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"کوچک کردن"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"‏%1$s‏، %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"‏%1$s‏، %2$s‏، %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"جستجو"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-fi/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-fi/strings.xml
index 218229b..dc56b79 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-fi/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-fi/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Siirry etusivulle"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Siirry ylös"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Lisää"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Kutista"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Haku"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-fr/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-fr/strings.xml
index 353665a..5cb6f18 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-fr/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-fr/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Revenir à l\'accueil"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Revenir en haut de la page"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Plus d\'options"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Réduire"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Rechercher"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-hdpi/styles_base.xml b/sdk/extras/android/support/v7/appcompat/res/values-hdpi/styles_base.xml
new file mode 100644
index 0000000..442ea29
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/values-hdpi/styles_base.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+     <style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="Base.Widget.AppCompat.DrawerArrowToggle.Common">
+          <item name="barSize">18.66dp</item>
+          <item name="gapBetweenBars">3.33dp</item>
+          <item name="drawableSize">24dp</item>
+     </style>
+</resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-hi/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-hi/strings.xml
index 23cfaca..7287d1a 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-hi/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-hi/strings.xml
@@ -17,9 +17,10 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="abc_action_mode_done" msgid="4076576682505996667">"पूर्ण"</string>
-    <string name="abc_action_bar_home_description" msgid="4600421777120114993">"मुखपृष्ठ पर नेविगेट करें"</string>
+    <string name="abc_action_bar_home_description" msgid="4600421777120114993">"मुख्यपृष्ठ पर नेविगेट करें"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"ऊपर नेविगेट करें"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"अधिक विकल्प"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"संक्षिप्त करें"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"खोजें"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-hr/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-hr/strings.xml
index 0348596..7ee2a03 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-hr/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-hr/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Idi na početnu"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Idi gore"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Dodatne opcije"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Sažmi"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Pretraživanje"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-hu/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-hu/strings.xml
index fc67f00..4f9294a 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-hu/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-hu/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Ugrás a főoldalra"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Felfelé mozgatás"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"További lehetőségek"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Összecsukás"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Keresés"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-in/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-in/strings.xml
index 3c31755..b25f01f 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-in/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-in/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navigasi ke beranda"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navigasi naik"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Opsi lain"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Ciutkan"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Telusuri"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-it/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-it/strings.xml
index 6ed52be..21802b3 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-it/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-it/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Vai alla home page"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Vai in alto"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Altre opzioni"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Comprimi"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Cerca"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-iw/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-iw/strings.xml
index fec0e62..08c814e 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-iw/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-iw/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"נווט לדף הבית"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"נווט למעלה"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"עוד אפשרויות"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"כווץ"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"‏%1$s‏, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"‏%1$s‏, %2$s‏, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"חפש"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-ja/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-ja/strings.xml
index 181dd5e..d74c342 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-ja/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-ja/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"ホームへ移動"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"上へ移動"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"その他のオプション"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"折りたたむ"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s、%2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s、%2$s、%3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"検索"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-ko/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-ko/strings.xml
index 0a92a83..9955a58 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-ko/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-ko/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"홈 탐색"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"위로 탐색"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"옵션 더보기"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"접기"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"검색"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-lt/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-lt/strings.xml
index 3c992a7..e5d8975 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-lt/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-lt/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Eiti į pagrindinį puslapį"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Eiti į viršų"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Daugiau parinkčių"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Sutraukti"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Paieška"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-lv/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-lv/strings.xml
index 3bd7259..9f1a0f0 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-lv/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-lv/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Pārvietoties uz sākuma ekrānu"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Pārvietoties augšup"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Vairāk opciju"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Sakļaut"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s: %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s: %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Meklēt"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-nb/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-nb/strings.xml
index 3dbd071..0cf77a1 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-nb/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-nb/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Gå til startsiden"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Gå opp"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Flere alternativer"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Skjul"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s – %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s – %2$s – %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Søk"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-nl/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-nl/strings.xml
index 330de8d..cd67586 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-nl/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-nl/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navigeren naar startpositie"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Omhoog navigeren"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Meer opties"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Samenvouwen"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Zoeken"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-pl/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-pl/strings.xml
index 8e32155..7245cad 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-pl/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-pl/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Przejdź do strony głównej"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Przejdź wyżej"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Więcej opcji"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Zwiń"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Szukaj"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-pt-rPT/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-pt-rPT/strings.xml
index e1c622e..8d05c98 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-pt-rPT/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-pt-rPT/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navegar para a página inicial"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navegar para cima"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Mais opções"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Reduzir"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Pesquisar"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-pt/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-pt/strings.xml
index abdd650..4fecc5c 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-pt/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-pt/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navegar para a página inicial"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navegar para cima"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Mais opções"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Recolher"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Pesquisar"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-ro/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-ro/strings.xml
index 6dd2b67..ea1ecbd 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-ro/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-ro/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Navigați la ecranul de pornire"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navigați în sus"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Mai multe opțiuni"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Restrângeți"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Căutați"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-ru/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-ru/strings.xml
index 9c5ed89..3042ce6 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-ru/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-ru/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Перейти на главный экран"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Перейти вверх"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Другие параметры"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Свернуть"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Поиск"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-sk/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-sk/strings.xml
index 2b09cce..f48351f 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-sk/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-sk/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Prejsť na plochu"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Prejsť hore"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Ďalšie možnosti"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Zbaliť"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Hľadať"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-sl/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-sl/strings.xml
index a522de2..3e8c881 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-sl/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-sl/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Krmarjenje domov"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Krmarjenje navzgor"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Več možnosti"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Strni"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Iskanje"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-sr/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-sr/strings.xml
index c26945b..cb85060 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-sr/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-sr/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Одлазак на Почетну"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Кретање нагоре"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Још опција"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Скупи"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Претрага"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-sv/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-sv/strings.xml
index 3120ad8..be6827e 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-sv/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-sv/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Visa startsidan"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Navigera uppåt"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Fler alternativ"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Komprimera"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Sök"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-sw/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-sw/strings.xml
index afe54f6..7f07a2a 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-sw/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-sw/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Nenda mwanzo"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Nenda juu"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Chaguo zaidi"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Kunja"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Tafuta"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-th/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-th/strings.xml
index d8c04c4..38b5c90 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-th/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-th/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"นำทางไปหน้าแรก"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"นำทางขึ้น"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"ตัวเลือกอื่น"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"ยุบ"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"ค้นหา"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-tl/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-tl/strings.xml
index 0384435..079990f 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-tl/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-tl/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Mag-navigate patungo sa home"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Mag-navigate pataas"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Higit pang mga opsyon"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"I-collapse"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Maghanap"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-tr/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-tr/strings.xml
index c06069c..51ee6ec 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-tr/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-tr/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Ana ekrana git"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Yukarı git"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Diğer seçenekler"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Daralt"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Ara"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-uk/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-uk/strings.xml
index d07404b..28f6b8e 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-uk/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-uk/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Перейти на головний"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Перейти вгору"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Інші опції"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Згорнути"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Пошук"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-v11/themes_base.xml b/sdk/extras/android/support/v7/appcompat/res/values-v11/themes_base.xml
index ca583fa..6880321 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-v11/themes_base.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-v11/themes_base.xml
@@ -66,6 +66,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -117,6 +118,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -167,6 +169,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -218,6 +221,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -308,7 +312,7 @@
         <item name="textAppearanceSearchResultSubtitle">@style/TextAppearance.AppCompat.SearchResult.Subtitle</item>
 
         <!-- ShareActionProvider attributes -->
-        <item name="activityChooserViewStyle">@style/Widget.AppCompat.Light.ActivityChooserView</item>
+        <item name="activityChooserViewStyle">@style/Widget.AppCompat.ActivityChooserView</item>
 
         <!-- Toolbar styles -->
         <item name="toolbarStyle">@style/Widget.AppCompat.Toolbar</item>
@@ -317,6 +321,7 @@
         <item name="android:editTextStyle">@style/Widget.AppCompat.EditText</item>
         <item name="editTextBackground">@drawable/abc_edit_text_material</item>
         <item name="editTextColor">?android:attr/textColorPrimary</item>
+        <item name="android:autoCompleteTextViewStyle">@style/Widget.AppCompat.AutoCompleteTextView</item>
 
         <!-- Color palette -->
         <item name="colorPrimaryDark">@color/primary_dark_material_light</item>
@@ -326,9 +331,17 @@
         <item name="colorControlNormal">?android:attr/textColorSecondary</item>
         <item name="colorControlActivated">?attr/colorAccent</item>
         <item name="colorControlHighlight">@color/ripple_material_light</item>
+        <item name="colorButtonNormal">@color/button_material_light</item>
         <item name="colorSwitchThumbNormal">@color/switch_thumb_normal_material_light</item>
 
         <item name="switchStyle">@style/Widget.AppCompat.CompoundButton.Switch</item>
+
+        <item name="android:ratingBarStyle">@style/Widget.AppCompat.RatingBar</item>
+
+        <!-- Button styles -->
+        <item name="android:buttonStyle">@style/Widget.AppCompat.Button</item>
+        <item name="android:buttonStyleSmall">@style/Widget.AppCompat.Button.Small</item>
+        <item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Button</item>
     </style>
 
     <style name="Base.Theme.AppCompat" parent="Base.V11.Theme.AppCompat">
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-v14/styles_base_text.xml b/sdk/extras/android/support/v7/appcompat/res/values-v14/styles_base_text.xml
new file mode 100644
index 0000000..54c8de2
--- /dev/null
+++ b/sdk/extras/android/support/v7/appcompat/res/values-v14/styles_base_text.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<resources>
+
+    <style name="Base.TextAppearance.AppCompat.Button">
+        <item name="android:textSize">@dimen/abc_text_size_button_material</item>
+        <item name="android:textAllCaps">true</item>
+        <item name="android:textColor">?android:textColorPrimary</item>
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-v21/styles_base.xml b/sdk/extras/android/support/v7/appcompat/res/values-v21/styles_base.xml
index 648dfd2..6a352ef 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-v21/styles_base.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-v21/styles_base.xml
@@ -112,6 +112,8 @@
 
     <style name="Base.Widget.AppCompat.Spinner" parent="android:Widget.Material.Spinner" />
 
+    <style name="Base.Widget.AppCompat.Spinner.Underlined" parent="android:Widget.Material.Spinner.Underlined" />
+
     <style name="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" parent="android:Widget.Material.Spinner">
         <item name="spinnerMode">dropdown</item>
         <item name="disableChildrenWhenDisabled">true</item>
@@ -162,16 +164,20 @@
     <!-- Search View result styles -->
 
     <style name="Base.TextAppearance.AppCompat.SearchResult.Title"
-           parent="@android:TextAppearance.Material.SearchResult.Title">
+           parent="android:TextAppearance.Material.SearchResult.Title">
     </style>
 
     <style name="Base.TextAppearance.AppCompat.SearchResult.Subtitle"
-           parent="@android:TextAppearance.Material.SearchResult.Subtitle">
+           parent="android:TextAppearance.Material.SearchResult.Subtitle">
     </style>
 
     <style name="Base.Widget.AppCompat.AutoCompleteTextView" parent="android:Widget.Material.AutoCompleteTextView" />
 
-    <style name="Base.Widget.AppCompat.Light.AutoCompleteTextView" parent="android:Widget.Material.AutoCompleteTextView" />
+    <style name="Base.Widget.AppCompat.RatingBar" parent="android:Widget.Material.RatingBar" />
+
+    <style name="Base.Widget.AppCompat.Button" parent="android:Widget.Material.Button" />
+
+    <style name="Base.Widget.AppCompat.Button.Small" parent="android:Widget.Material.Button.Small" />
 
     <!-- Progress Bar -->
 
@@ -183,13 +189,8 @@
            parent="android:Widget.Material.ProgressBar">
     </style>
 
-    <!-- TODO. Needs updating for Material -->
-    <style name="Base.Widget.AppCompat.ActivityChooserView" parent="">
-        <item name="android:gravity">center</item>
-        <item name="android:background">@drawable/abc_ab_share_pack_holo_dark</item>
-        <item name="android:divider">?attr/dividerVertical</item>
-        <item name="android:showDividers">middle</item>
-        <item name="android:dividerPadding">6dip</item>
-    </style>
+    <style name="Base.Widget.AppCompat.TextView.SpinnerItem" parent="android:Widget.Material.TextView.SpinnerItem" />
+
+    <style name="Base.TextAppearance.AppCompat.Widget.TextView.SpinnerItem" parent="android:TextAppearance.Material.Widget.TextView.SpinnerItem" />
 
 </resources>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-v21/themes_base.xml b/sdk/extras/android/support/v7/appcompat/res/values-v21/themes_base.xml
index 7392b30..c586030 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-v21/themes_base.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-v21/themes_base.xml
@@ -200,11 +200,16 @@
     <style name="Base.Theme.AppCompat.Light.Dialog" parent="Base.V21.Theme.AppCompat.Light.Dialog" />
 
     <style name="Base.ThemeOverlay.AppCompat" parent="android:ThemeOverlay.Material">
+        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
+        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
     </style>
 
     <style name="Base.ThemeOverlay.AppCompat.Dark" parent="android:ThemeOverlay.Material.Dark">
         <item name="colorControlHighlight">@color/ripple_material_dark</item>
 
+        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
+        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
+
         <!-- Used by MediaRouter -->
         <item name="isLightTheme">false</item>
     </style>
@@ -212,18 +217,27 @@
     <style name="Base.ThemeOverlay.AppCompat.Light" parent="android:ThemeOverlay.Material.Light">
         <item name="colorControlHighlight">@color/ripple_material_light</item>
 
+        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
+        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
+
         <!-- Used by MediaRouter -->
         <item name="isLightTheme">true</item>
     </style>
 
     <style name="Base.ThemeOverlay.AppCompat.ActionBar" parent="android:ThemeOverlay.Material.ActionBar">
         <item name="colorControlNormal">?android:attr/textColorPrimary</item>
+
+        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
+        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
     </style>
 
     <style name="Base.ThemeOverlay.AppCompat.Dark.ActionBar" parent="android:ThemeOverlay.Material.Dark.ActionBar">
         <item name="colorControlNormal">?android:attr/textColorPrimary</item>
         <item name="colorControlHighlight">@color/ripple_material_dark</item>
 
+        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
+        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
+
         <!-- Used by MediaRouter -->
         <item name="isLightTheme">false</item>
     </style>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-vi/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-vi/strings.xml
index 21dd883..28b93ab 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-vi/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-vi/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Điều hướng về trang chủ"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Điều hướng lên trên"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Thêm tùy chọn"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Thu gọn"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Tìm kiếm"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-zh-rCN/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-zh-rCN/strings.xml
index 54e2c86..519abd2 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-zh-rCN/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-zh-rCN/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"转到主屏幕"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"转到上一层级"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"更多选项"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"收起"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s:%2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s - %2$s:%3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"搜索"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-zh-rHK/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-zh-rHK/strings.xml
index e35d465..4974223 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-zh-rHK/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-zh-rHK/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"瀏覽主頁"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"向上瀏覽"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"更多選項"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"收合"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s:%2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s (%2$s):%3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"搜尋"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-zh-rTW/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-zh-rTW/strings.xml
index 24d530c..97f2589 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-zh-rTW/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-zh-rTW/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"瀏覽首頁"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"向上瀏覽"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"更多選項"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"收合"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s:%2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s - %2$s:%3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"搜尋"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values-zu/strings.xml b/sdk/extras/android/support/v7/appcompat/res/values-zu/strings.xml
index a6a06ab..21ee299 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values-zu/strings.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values-zu/strings.xml
@@ -20,6 +20,7 @@
     <string name="abc_action_bar_home_description" msgid="4600421777120114993">"Zulazulela ekhaya"</string>
     <string name="abc_action_bar_up_description" msgid="1594238315039666878">"Zulazulela phezulu"</string>
     <string name="abc_action_menu_overflow_description" msgid="3588849162933574182">"Izinketho eziningi"</string>
+    <string name="abc_toolbar_collapse_description" msgid="1603543279005712093">"Goqa"</string>
     <string name="abc_action_bar_home_description_format" msgid="1397052879051804371">"%1$s, %2$s"</string>
     <string name="abc_action_bar_home_subtitle_description_format" msgid="6623331958280229229">"%1$s, %2$s, %3$s"</string>
     <string name="abc_searchview_description_search" msgid="8264924765203268293">"Sesha"</string>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/attrs.xml b/sdk/extras/android/support/v7/appcompat/res/values/attrs.xml
index e2dbdea8..3fd90b2 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/attrs.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/attrs.xml
@@ -70,6 +70,7 @@
         <attr name="windowFixedHeightMajor" format="dimension|fraction" />
 
         <attr name="android:windowIsFloating" />
+        <attr name="android:windowAnimationStyle" />
 
         <!-- =================== -->
         <!-- Action bar styles   -->
@@ -723,7 +724,6 @@
              the specified resource. During XML inflation, any child views under the
              view with a theme override will inherit the themed context. -->
         <attr name="theme" format="reference" />
-
         <!-- Icon drawable to use for the collapse button. -->
         <attr name="collapseIcon" format="reference" />
         <!-- Text to set as the content description for the collapse button. -->
@@ -814,4 +814,10 @@
         <attr name="showText" format="boolean" />
     </declare-styleable>
 
+    <declare-styleable name="SwitchCompatTextAppearance">
+        <attr name="android:textSize" />
+        <attr name="android:textColor" />
+        <attr name="textAllCaps" />
+    </declare-styleable>
+
 </resources>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/config.xml b/sdk/extras/android/support/v7/appcompat/res/values/config.xml
index a57f2e4..0f8b7dc 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/config.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/config.xml
@@ -32,4 +32,8 @@
          it should be disabled in that locale's resources. -->
     <bool name="abc_config_actionMenuItemAllCaps">true</bool>
 
+    <!-- The duration (in milliseconds) of the activity open/close and fragment open/close animations. -->
+    <integer name="abc_config_activityShortDur">150</integer>
+    <integer name="abc_config_activityDefaultDur">220</integer>
+
 </resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/dimens.xml b/sdk/extras/android/support/v7/appcompat/res/values/dimens.xml
index 54baac3..34a81a6 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/dimens.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/dimens.xml
@@ -58,9 +58,17 @@
          (the screen is in landscape). This may be either a fraction or a dimension.-->
     <item type="dimen" name="dialog_fixed_height_minor">100%</item>
 
+    <dimen name="abc_button_inset_vertical_material">6dp</dimen>
+    <dimen name="abc_button_inset_horizontal_material">@dimen/abc_control_inset_material</dimen>
+    <!-- Default inner padding within buttons -->
+    <dimen name="abc_button_padding_vertical_material">@dimen/abc_control_padding_material</dimen>
+    <dimen name="abc_button_padding_horizontal_material">8dp</dimen>
+
     <!-- Default insets (outer padding) around controls -->
     <dimen name="abc_control_inset_material">4dp</dimen>
     <!-- Default inner padding within controls -->
     <dimen name="abc_control_padding_material">4dp</dimen>
+    <!-- Default rounded corner for controls -->
+    <dimen name="abc_control_corner_material">2dp</dimen>
 
 </resources>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/styles.xml b/sdk/extras/android/support/v7/appcompat/res/values/styles.xml
index 1b8b53b..f80aae5 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/styles.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/styles.xml
@@ -120,6 +120,8 @@
 
     <style name="Widget.AppCompat.Spinner" parent="Base.Widget.AppCompat.Spinner" />
 
+    <style name="Widget.AppCompat.Spinner.Underlined" parent="Base.Widget.AppCompat.Spinner.Underlined" />
+
     <style name="Widget.AppCompat.Spinner.DropDown" />
 
     <style name="Widget.AppCompat.Spinner.DropDown.ActionBar" parent="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" />
@@ -187,18 +189,10 @@
            parent="Base.Widget.AppCompat.AutoCompleteTextView">
     </style>
 
-    <style name="Widget.AppCompat.Light.AutoCompleteTextView"
-           parent="Base.Widget.AppCompat.Light.AutoCompleteTextView">
-    </style>
-
     <style name="Widget.AppCompat.ActivityChooserView"
            parent="Base.Widget.AppCompat.ActivityChooserView">
     </style>
 
-    <style name="Widget.AppCompat.Light.ActivityChooserView"
-           parent="Base.Widget.AppCompat.Light.ActivityChooserView">
-    </style>
-
     <style name="Widget.AppCompat.SearchView" parent="Base.Widget.AppCompat.SearchView" />
 
     <style name="Widget.AppCompat.EditText"
@@ -207,6 +201,14 @@
 
     <style name="Widget.AppCompat.CompoundButton.Switch" parent="Base.Widget.AppCompat.CompoundButton.Switch" />
 
+    <style name="Widget.AppCompat.RatingBar" parent="Base.Widget.AppCompat.RatingBar" />
+
+    <style name="Widget.AppCompat.Button" parent="Base.Widget.AppCompat.Button" />
+
+    <style name="Widget.AppCompat.Button.Small" parent="Base.Widget.AppCompat.Button.Small" />
+
+    <style name="Widget.AppCompat.TextView.SpinnerItem" parent="Base.Widget.AppCompat.TextView.SpinnerItem" />
+
     <!-- Toolbar -->
 
     <style name="Widget.AppCompat.Toolbar" parent="Base.Widget.AppCompat.Toolbar" />
@@ -272,6 +274,8 @@
 
     <style name="TextAppearance.AppCompat.Widget.Switch" parent="Base.TextAppearance.AppCompat.Widget.Switch" />
 
+    <style name="TextAppearance.AppCompat.Widget.TextView.SpinnerItem" parent="Base.TextAppearance.AppCompat.Widget.TextView.SpinnerItem" />
+
     <!--
          The following themes are deprecated.
     -->
@@ -291,5 +295,7 @@
     <style name="Widget.AppCompat.Light.Spinner.DropDown.ActionBar" parent="Widget.AppCompat.Spinner.DropDown.ActionBar" />
     <style name="Widget.AppCompat.Light.ListView.DropDown" parent="Widget.AppCompat.ListView.DropDown" />
     <style name="Widget.AppCompat.Light.ListPopupWindow" parent="Widget.AppCompat.ListPopupWindow" />
+    <style name="Widget.AppCompat.Light.AutoCompleteTextView" parent="Widget.AppCompat.AutoCompleteTextView" />
+    <style name="Widget.AppCompat.Light.ActivityChooserView" parent="Widget.AppCompat.ActivityChooserView" />
 
 </resources>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/styles_base.xml b/sdk/extras/android/support/v7/appcompat/res/values/styles_base.xml
index 664581e..fb28f4e 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/styles_base.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/styles_base.xml
@@ -183,6 +183,10 @@
         <item name="android:dropDownVerticalOffset">0dip</item>
     </style>
 
+    <style name="Base.Widget.AppCompat.Spinner.Underlined">
+        <item name="android:background">@drawable/abc_spinner_textfield_background_material</item>
+    </style>
+
     <style name="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" parent="android:Widget">
         <item name="spinnerMode">dropdown</item>
 
@@ -278,28 +282,21 @@
     </style>
 
     <style name="Base.Widget.AppCompat.AutoCompleteTextView" parent="android:Widget.AutoCompleteTextView">
-        <item name="android:dropDownSelector">@drawable/abc_list_selector_holo_dark</item>
+        <item name="android:dropDownSelector">?attr/listChoiceBackgroundIndicator</item>
         <item name="android:popupBackground">@drawable/abc_popup_background_mtrl_mult</item>
+        <item name="android:background">?attr/editTextBackground</item>
         <item name="android:textColor">?attr/editTextColor</item>
-    </style>
-
-    <style name="Base.Widget.AppCompat.Light.AutoCompleteTextView" parent="android:Widget.AutoCompleteTextView">
-        <item name="android:dropDownSelector">@drawable/abc_list_selector_holo_light</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
     </style>
 
     <style name="Base.Widget.AppCompat.ActivityChooserView" parent="">
         <item name="android:gravity">center</item>
-        <item name="android:background">@drawable/abc_ab_share_pack_holo_dark</item>
+        <item name="android:background">@drawable/abc_ab_share_pack_mtrl_alpha</item>
         <item name="divider">?attr/dividerVertical</item>
         <item name="showDividers">middle</item>
         <item name="dividerPadding">6dip</item>
     </style>
 
-    <style name="Base.Widget.AppCompat.Light.ActivityChooserView"
-           parent="Base.Widget.AppCompat.ActivityChooserView">
-        <item name="android:background">@drawable/abc_ab_share_pack_holo_light</item>
-    </style>
-
     <style name="Base.Widget.AppCompat.PopupWindow" parent="android:Widget.PopupWindow">
     </style>
 
@@ -345,16 +342,20 @@
         <item name="android:textColor">?attr/editTextColor</item>
         <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
     </style>
-
-    <style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
+    <!-- contains values used in all dpis -->
+    <style name="Base.Widget.AppCompat.DrawerArrowToggle.Common" parent="">
         <item name="color">?android:attr/textColorSecondary</item>
+        <item name="middleBarArrowSize">16dp</item>
+        <item name="spinBars">true</item>
         <item name="thickness">2dp</item>
+        <item name="topBottomBarArrowSize">11.31dp</item>
+    </style>
+
+    <!-- contains values used in all dpis except hdpi and xxhdpi -->
+    <style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="Base.Widget.AppCompat.DrawerArrowToggle.Common">
         <item name="barSize">18dp</item>
         <item name="gapBetweenBars">3dp</item>
-        <item name="topBottomBarArrowSize">11.31dp</item>
-        <item name="middleBarArrowSize">16dp</item>
         <item name="drawableSize">24dp</item>
-        <item name="spinBars">true</item>
     </style>
 
     <style name="Base.Widget.AppCompat.CompoundButton.Switch" parent="android:Widget.CompoundButton">
@@ -367,4 +368,34 @@
 
     <style name="Base.TextAppearance.AppCompat.Widget.Switch" parent="TextAppearance.AppCompat.Button" />
 
+    <style name="Base.Widget.AppCompat.RatingBar" parent="android:Widget.RatingBar">
+        <item name="android:progressDrawable">@drawable/abc_ratingbar_full_material</item>
+        <item name="android:indeterminateDrawable">@drawable/abc_ratingbar_full_material</item>
+    </style>
+
+    <!-- Bordered ink button -->
+    <style name="Base.Widget.AppCompat.Button" parent="android:Widget">
+        <item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceButton</item>
+        <item name="android:minHeight">48dip</item>
+        <item name="android:minWidth">88dip</item>
+        <item name="android:focusable">true</item>
+        <item name="android:clickable">true</item>
+        <item name="android:gravity">center_vertical|center_horizontal</item>
+    </style>
+
+    <!-- Small bordered ink button -->
+    <style name="Base.Widget.AppCompat.Button.Small">
+        <item name="android:minHeight">48dip</item>
+        <item name="android:minWidth">48dip</item>
+    </style>
+
+    <style name="Base.Widget.AppCompat.TextView.SpinnerItem" parent="android:Widget.TextView.SpinnerItem">
+        <item name="android:textAppearance">@style/TextAppearance.AppCompat.Widget.TextView.SpinnerItem</item>
+        <item name="android:paddingLeft">8dp</item>
+        <item name="android:paddingRight">8dp</item>
+    </style>
+
+    <style name="Base.TextAppearance.AppCompat.Widget.TextView.SpinnerItem" parent="TextAppearance.AppCompat.Menu" />
+
 </resources>
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/themes.xml b/sdk/extras/android/support/v7/appcompat/res/values/themes.xml
index 05b8657..3409c68 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/themes.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/themes.xml
@@ -57,9 +57,8 @@
     <style name="Theme.AppCompat.Light.Dialog" parent="Base.Theme.AppCompat.Light.Dialog" />
 
     <!-- Menu/item attributes -->
-    <style name="Theme.AppCompat.CompactMenu"
-           parent="Base.Theme.AppCompat.CompactMenu">
-    </style>
+    <style name="Theme.AppCompat.CompactMenu" parent="Base.Theme.AppCompat.CompactMenu" />
+    <style name="Animation.AppCompat.DropDownUp" parent="Base.Animation.AppCompat.DropDownUp" />
 
     <style name="ThemeOverlay.AppCompat" parent="Base.ThemeOverlay.AppCompat" />
 
diff --git a/sdk/extras/android/support/v7/appcompat/res/values/themes_base.xml b/sdk/extras/android/support/v7/appcompat/res/values/themes_base.xml
index a2f0f25..c151d3b 100644
--- a/sdk/extras/android/support/v7/appcompat/res/values/themes_base.xml
+++ b/sdk/extras/android/support/v7/appcompat/res/values/themes_base.xml
@@ -61,6 +61,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -107,6 +108,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -152,6 +154,7 @@
         <item name="android:textAppearanceSmallInverse">@style/TextAppearance.AppCompat.Small.Inverse</item>
 
         <item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
+        <item name="android:spinnerItemStyle">@style/Widget.AppCompat.TextView.SpinnerItem</item>
         <item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
 
         <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
@@ -260,6 +263,7 @@
         <item name="android:editTextStyle">@style/Widget.AppCompat.EditText</item>
         <item name="editTextBackground">@drawable/abc_edit_text_material</item>
         <item name="editTextColor">?android:attr/textColorPrimary</item>
+        <item name="android:autoCompleteTextViewStyle">@style/Widget.AppCompat.AutoCompleteTextView</item>
 
         <!-- Color palette -->
         <item name="colorPrimaryDark">@color/primary_dark_material_dark</item>
@@ -269,11 +273,19 @@
         <item name="colorControlNormal">?android:attr/textColorSecondary</item>
         <item name="colorControlActivated">?attr/colorAccent</item>
         <item name="colorControlHighlight">@color/ripple_material_dark</item>
+        <item name="colorButtonNormal">@color/button_material_dark</item>
         <item name="colorSwitchThumbNormal">@color/switch_thumb_normal_material_dark</item>
 
         <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>
 
         <item name="switchStyle">@style/Widget.AppCompat.CompoundButton.Switch</item>
+
+        <item name="android:ratingBarStyle">@style/Widget.AppCompat.RatingBar</item>
+
+        <!-- Button styles -->
+        <item name="android:buttonStyle">@style/Widget.AppCompat.Button</item>
+        <item name="android:buttonStyleSmall">@style/Widget.AppCompat.Button.Small</item>
+        <item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Button</item>
     </style>
 
     <!-- Base platform-dependent theme providing an action bar in a light-themed activity. -->
@@ -359,7 +371,7 @@
         <item name="textAppearanceSearchResultSubtitle">@style/TextAppearance.AppCompat.SearchResult.Subtitle</item>
 
         <!-- ShareActionProvider attributes -->
-        <item name="activityChooserViewStyle">@style/Widget.AppCompat.Light.ActivityChooserView</item>
+        <item name="activityChooserViewStyle">@style/Widget.AppCompat.ActivityChooserView</item>
 
         <!-- Toolbar styles -->
         <item name="toolbarStyle">@style/Widget.AppCompat.Toolbar</item>
@@ -368,6 +380,7 @@
         <item name="android:editTextStyle">@style/Widget.AppCompat.EditText</item>
         <item name="editTextBackground">@drawable/abc_edit_text_material</item>
         <item name="editTextColor">?android:attr/textColorPrimary</item>
+        <item name="android:autoCompleteTextViewStyle">@style/Widget.AppCompat.AutoCompleteTextView</item>
 
         <!-- Color palette -->
         <item name="colorPrimaryDark">@color/primary_dark_material_light</item>
@@ -377,11 +390,19 @@
         <item name="colorControlNormal">?android:attr/textColorSecondary</item>
         <item name="colorControlActivated">?attr/colorAccent</item>
         <item name="colorControlHighlight">@color/ripple_material_light</item>
+        <item name="colorButtonNormal">@color/button_material_light</item>
         <item name="colorSwitchThumbNormal">@color/switch_thumb_normal_material_light</item>
 
         <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>
 
         <item name="switchStyle">@style/Widget.AppCompat.CompoundButton.Switch</item>
+
+        <item name="android:ratingBarStyle">@style/Widget.AppCompat.RatingBar</item>
+
+        <!-- Button styles -->
+        <item name="android:buttonStyle">@style/Widget.AppCompat.Button</item>
+        <item name="android:buttonStyleSmall">@style/Widget.AppCompat.Button.Small</item>
+        <item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Button</item>
     </style>
 
     <style name="Base.Theme.AppCompat" parent="Base.V7.Theme.AppCompat">
@@ -406,6 +427,12 @@
     <style name="Base.Theme.AppCompat.CompactMenu" parent="">
         <item name="android:itemTextAppearance">?android:attr/textAppearanceMedium</item>
         <item name="android:listViewStyle">@style/Widget.AppCompat.ListView.Menu</item>
+        <item name="android:windowAnimationStyle">@style/Animation.AppCompat.DropDownUp</item>
+    </style>
+
+    <style name="Base.Animation.AppCompat.DropDownUp" parent="android:Animation">
+        <item name="android:windowEnterAnimation">@anim/abc_grow_fade_in_from_bottom</item>
+        <item name="android:windowExitAnimation">@anim/abc_shrink_fade_out_from_bottom</item>
     </style>
 
     <style name="Base.V7.Theme.AppCompat.Dialog" parent="Platform.AppCompat.Dialog">
@@ -497,6 +524,7 @@
         <item name="android:editTextStyle">@style/Widget.AppCompat.EditText</item>
         <item name="editTextBackground">@drawable/abc_edit_text_material</item>
         <item name="editTextColor">?android:attr/textColorPrimary</item>
+        <item name="android:autoCompleteTextViewStyle">@style/Widget.AppCompat.AutoCompleteTextView</item>
 
         <!-- Color palette -->
         <item name="colorPrimaryDark">@color/primary_dark_material_dark</item>
@@ -506,9 +534,17 @@
         <item name="colorControlNormal">?android:attr/textColorSecondary</item>
         <item name="colorControlActivated">?attr/colorAccent</item>
         <item name="colorControlHighlight">@color/ripple_material_dark</item>
+        <item name="colorButtonNormal">@color/button_material_dark</item>
         <item name="colorSwitchThumbNormal">@color/switch_thumb_normal_material_dark</item>
 
         <item name="switchStyle">@style/Widget.AppCompat.CompoundButton.Switch</item>
+
+        <item name="android:ratingBarStyle">@style/Widget.AppCompat.RatingBar</item>
+
+        <!-- Button styles -->
+        <item name="android:buttonStyle">@style/Widget.AppCompat.Button</item>
+        <item name="android:buttonStyleSmall">@style/Widget.AppCompat.Button.Small</item>
+        <item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Button</item>
     </style>
 
     <style name="Base.Theme.AppCompat.Dialog" parent="Base.V7.Theme.AppCompat.Dialog" />
diff --git a/sdk/extras/android/support/v7/cardview/libs/android-support-v7-cardview.jar b/sdk/extras/android/support/v7/cardview/libs/android-support-v7-cardview.jar
index 8f8b7bd..3a3e5e5 100644
--- a/sdk/extras/android/support/v7/cardview/libs/android-support-v7-cardview.jar
+++ b/sdk/extras/android/support/v7/cardview/libs/android-support-v7-cardview.jar
Binary files differ
diff --git a/sdk/extras/android/support/v7/gridlayout/libs/android-support-v7-gridlayout.jar b/sdk/extras/android/support/v7/gridlayout/libs/android-support-v7-gridlayout.jar
index 887a8c5..ab98a9a 100644
--- a/sdk/extras/android/support/v7/gridlayout/libs/android-support-v7-gridlayout.jar
+++ b/sdk/extras/android/support/v7/gridlayout/libs/android-support-v7-gridlayout.jar
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar b/sdk/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar
index 6282f86..194687d 100644
--- a/sdk/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar
+++ b/sdk/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_dark.png
new file mode 100644
index 0000000..4a3396a
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_disabled_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_disabled_light.png
new file mode 100644
index 0000000..440751e
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_disabled_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_light.png
new file mode 100644
index 0000000..20740bc
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_off_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_off_light.png
new file mode 100644
index 0000000..c6f9002
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_off_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_0_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_0_light.png
new file mode 100644
index 0000000..9d7a4e4
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_0_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_1_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_1_light.png
new file mode 100644
index 0000000..679bb98
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_1_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_2_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_2_light.png
new file mode 100644
index 0000000..2910903
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_2_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_light.png
new file mode 100644
index 0000000..b7e6db8
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_cast_on_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_pause.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_pause.png
new file mode 100644
index 0000000..1d465a4
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_pause.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_play.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_play.png
new file mode 100644
index 0000000..2746d17
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_play.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_disabled_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_disabled_mono_dark.png
new file mode 100644
index 0000000..07603b5
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_disabled_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_off_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_off_mono_dark.png
new file mode 100644
index 0000000..27e2d4a
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_off_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_0_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_0_mono_dark.png
new file mode 100644
index 0000000..3afde73
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_0_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_1_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_1_mono_dark.png
new file mode 100644
index 0000000..f4ce1d5
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_1_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_2_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_2_mono_dark.png
new file mode 100644
index 0000000..8dcb6e9
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_2_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_mono_dark.png
new file mode 100644
index 0000000..5584a13
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_media_route_on_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_pause_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_pause_dark.png
new file mode 100644
index 0000000..337cf0f
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_pause_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_pause_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_pause_light.png
new file mode 100644
index 0000000..ec70ee1
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_pause_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_play_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_play_dark.png
new file mode 100644
index 0000000..b36cf49
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_play_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_play_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_play_light.png
new file mode 100644
index 0000000..2046149
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_play_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_setting_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_setting_dark.png
new file mode 100644
index 0000000..66efe42
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_setting_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_setting_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_setting_light.png
new file mode 100644
index 0000000..a1f4101
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/ic_setting_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_disabled_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_disabled_holo_dark.png
deleted file mode 100644
index e215b96..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_disabled_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_disabled_holo_light.png
deleted file mode 100644
index a014e91..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_disabled_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_off_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_off_holo_dark.png
deleted file mode 100644
index bb8bec1..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_off_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_off_holo_light.png
deleted file mode 100644
index aa1737e..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_0_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_0_holo_dark.png
deleted file mode 100644
index 2c1434b..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_0_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_0_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_0_holo_light.png
deleted file mode 100644
index dbdce3e..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_0_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_1_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_1_holo_dark.png
deleted file mode 100644
index 1101864..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_1_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_1_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_1_holo_light.png
deleted file mode 100644
index e8e9069..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_1_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_2_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_2_holo_dark.png
deleted file mode 100644
index 8595158..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_2_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_2_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_2_holo_light.png
deleted file mode 100644
index 14844d4..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_2_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_holo_dark.png
deleted file mode 100644
index 1565a29..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_holo_light.png
deleted file mode 100644
index 9b8fe87..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-hdpi/mr_ic_media_route_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_dark.png
new file mode 100644
index 0000000..9bee201
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_disabled_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_disabled_light.png
new file mode 100644
index 0000000..b60a666
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_disabled_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_light.png
new file mode 100644
index 0000000..6b7885c
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_off_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_off_light.png
new file mode 100644
index 0000000..0de509a
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_off_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_0_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_0_light.png
new file mode 100644
index 0000000..6d94fee
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_0_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_1_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_1_light.png
new file mode 100644
index 0000000..af23356
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_1_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_2_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_2_light.png
new file mode 100644
index 0000000..8b238d4
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_2_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_light.png
new file mode 100644
index 0000000..13c53e7
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_cast_on_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_pause.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_pause.png
new file mode 100644
index 0000000..3e6b2a1
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_pause.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_play.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_play.png
new file mode 100644
index 0000000..7966bbc
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_play.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_disabled_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_disabled_mono_dark.png
new file mode 100644
index 0000000..a2c68c5
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_disabled_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_off_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_off_mono_dark.png
new file mode 100644
index 0000000..69287b8
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_off_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_0_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_0_mono_dark.png
new file mode 100644
index 0000000..cf035c0
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_0_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_1_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_1_mono_dark.png
new file mode 100644
index 0000000..247b72f
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_1_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_2_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_2_mono_dark.png
new file mode 100644
index 0000000..eaed2f7
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_2_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_mono_dark.png
new file mode 100644
index 0000000..77bd8f5
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_media_route_on_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_pause_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_pause_dark.png
new file mode 100644
index 0000000..0842337
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_pause_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_pause_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_pause_light.png
new file mode 100644
index 0000000..affca8b
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_pause_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_play_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_play_dark.png
new file mode 100644
index 0000000..33f08ae
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_play_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_play_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_play_light.png
new file mode 100644
index 0000000..4360c45
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_play_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_setting_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_setting_dark.png
new file mode 100644
index 0000000..28fbc90
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_setting_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_setting_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_setting_light.png
new file mode 100644
index 0000000..5625eed
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/ic_setting_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_disabled_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_disabled_holo_dark.png
deleted file mode 100644
index 52e3a5a..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_disabled_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_disabled_holo_light.png
deleted file mode 100644
index 319c57e..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_disabled_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_off_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_off_holo_dark.png
deleted file mode 100644
index f98c0a8..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_off_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_off_holo_light.png
deleted file mode 100644
index b74cdb5..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_0_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_0_holo_dark.png
deleted file mode 100644
index a6a4bd0..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_0_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_0_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_0_holo_light.png
deleted file mode 100644
index 106fd3a..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_0_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_1_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_1_holo_dark.png
deleted file mode 100644
index 2c141ab..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_1_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_1_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_1_holo_light.png
deleted file mode 100644
index 0b62d0b..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_1_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_2_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_2_holo_dark.png
deleted file mode 100644
index 23442b0..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_2_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_2_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_2_holo_light.png
deleted file mode 100644
index 42b329f..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_2_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_holo_dark.png
deleted file mode 100644
index 58ff506..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_holo_light.png
deleted file mode 100644
index 25257f8..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-mdpi/mr_ic_media_route_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_dark.png
new file mode 100644
index 0000000..c3649df
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_disabled_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_disabled_light.png
new file mode 100644
index 0000000..fcb2139
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_disabled_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_light.png
new file mode 100644
index 0000000..ed30868
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_off_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_off_light.png
new file mode 100644
index 0000000..29f3779
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_off_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_0_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_0_light.png
new file mode 100644
index 0000000..e6c15a8
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_0_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_1_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_1_light.png
new file mode 100644
index 0000000..b46e60e
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_1_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_2_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_2_light.png
new file mode 100644
index 0000000..820f3a8
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_2_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_light.png
new file mode 100644
index 0000000..aff2845
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_cast_on_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_pause.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_pause.png
new file mode 100644
index 0000000..6bd3d48
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_pause.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_play.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_play.png
new file mode 100644
index 0000000..ccfef18
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_play.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_disabled_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_disabled_mono_dark.png
new file mode 100644
index 0000000..14652ef
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_disabled_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_off_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_off_mono_dark.png
new file mode 100644
index 0000000..842dfd3
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_off_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_0_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_0_mono_dark.png
new file mode 100644
index 0000000..036cb13
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_0_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_1_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_1_mono_dark.png
new file mode 100644
index 0000000..dcf61af
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_1_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_2_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_2_mono_dark.png
new file mode 100644
index 0000000..16ce334
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_2_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_mono_dark.png
new file mode 100644
index 0000000..0b83548
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_media_route_on_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_pause_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_pause_dark.png
new file mode 100644
index 0000000..67abd61
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_pause_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_pause_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_pause_light.png
new file mode 100644
index 0000000..007b3ce
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_pause_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_play_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_play_dark.png
new file mode 100644
index 0000000..6584e28
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_play_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_play_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_play_light.png
new file mode 100644
index 0000000..0975acf
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_play_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_setting_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_setting_dark.png
new file mode 100644
index 0000000..8622345
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_setting_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_setting_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_setting_light.png
new file mode 100644
index 0000000..b142237
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/ic_setting_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_disabled_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_disabled_holo_dark.png
deleted file mode 100644
index 4119cff..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_disabled_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_disabled_holo_light.png
deleted file mode 100644
index b629a57..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_disabled_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_off_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_off_holo_dark.png
deleted file mode 100644
index fe81128..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_off_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_off_holo_light.png
deleted file mode 100644
index 9b59eaf..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_0_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_0_holo_dark.png
deleted file mode 100644
index 1a513c1..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_0_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_0_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_0_holo_light.png
deleted file mode 100644
index ff78803..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_0_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_1_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_1_holo_dark.png
deleted file mode 100644
index 4c4b624..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_1_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_1_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_1_holo_light.png
deleted file mode 100644
index 60f8c4d..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_1_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_2_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_2_holo_dark.png
deleted file mode 100644
index cdb2f30..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_2_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_2_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_2_holo_light.png
deleted file mode 100644
index 97a10a3..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_2_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_holo_dark.png
deleted file mode 100644
index a19a083..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_holo_light.png
deleted file mode 100644
index db30613..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xhdpi/mr_ic_media_route_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_dark.png
new file mode 100644
index 0000000..4f2e24c
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_disabled_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_disabled_light.png
new file mode 100644
index 0000000..6b74a0f
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_disabled_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_light.png
new file mode 100644
index 0000000..444078d
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_off_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_off_light.png
new file mode 100644
index 0000000..e6099b5
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_off_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_0_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_0_light.png
new file mode 100644
index 0000000..bd7bf92
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_0_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_1_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_1_light.png
new file mode 100644
index 0000000..63e108f
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_1_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_2_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_2_light.png
new file mode 100644
index 0000000..f578d88
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_2_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_light.png
new file mode 100644
index 0000000..904c2b6
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_cast_on_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_pause.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_pause.png
new file mode 100644
index 0000000..9a36b17
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_pause.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_play.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_play.png
new file mode 100644
index 0000000..41f76bb
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_play.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_disabled_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_disabled_mono_dark.png
new file mode 100644
index 0000000..95f639a
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_disabled_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_off_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_off_mono_dark.png
new file mode 100644
index 0000000..8164bde
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_off_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_0_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_0_mono_dark.png
new file mode 100644
index 0000000..0663290
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_0_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_1_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_1_mono_dark.png
new file mode 100644
index 0000000..c9efc4b
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_1_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_2_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_2_mono_dark.png
new file mode 100644
index 0000000..398eb39
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_2_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_mono_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_mono_dark.png
new file mode 100644
index 0000000..18d9150
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_media_route_on_mono_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_pause_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_pause_dark.png
new file mode 100644
index 0000000..7077089
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_pause_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_pause_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_pause_light.png
new file mode 100644
index 0000000..24305f1
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_pause_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_play_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_play_dark.png
new file mode 100644
index 0000000..f65aa13
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_play_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_play_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_play_light.png
new file mode 100644
index 0000000..00af328
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_play_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_setting_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_setting_dark.png
new file mode 100644
index 0000000..7fef5f5
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_setting_dark.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_setting_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_setting_light.png
new file mode 100644
index 0000000..b5085b1
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/ic_setting_light.png
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_disabled_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_disabled_holo_dark.png
deleted file mode 100644
index 6fad4a6..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_disabled_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_disabled_holo_light.png
deleted file mode 100644
index 865617c..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_disabled_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_off_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_off_holo_dark.png
deleted file mode 100644
index 44d98d5..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_off_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_off_holo_light.png
deleted file mode 100644
index b5b29b0..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_0_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_0_holo_dark.png
deleted file mode 100644
index c807b50..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_0_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_0_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_0_holo_light.png
deleted file mode 100644
index 3fc7188..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_0_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_1_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_1_holo_dark.png
deleted file mode 100644
index d54f44a..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_1_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_1_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_1_holo_light.png
deleted file mode 100644
index 092fe8c..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_1_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_2_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_2_holo_dark.png
deleted file mode 100644
index 17c1d99..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_2_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_2_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_2_holo_light.png
deleted file mode 100644
index 4fd5808..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_2_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_holo_dark.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_holo_dark.png
deleted file mode 100644
index 906401e..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_holo_light.png b/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_holo_light.png
deleted file mode 100644
index d29e563..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable-xxhdpi/mr_ic_media_route_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_light.xml
deleted file mode 100644
index aaa6473..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_light.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<animation-list
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:oneshot="false">
-    <item android:drawable="@drawable/mr_ic_media_route_on_0_holo_light" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_1_holo_light" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_2_holo_light" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_1_holo_light" android:duration="500" />
-</animation-list>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_dark.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_mono_dark.xml
similarity index 67%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_dark.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_mono_dark.xml
index 6b27536..2d593c3 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_dark.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_mono_dark.xml
@@ -17,8 +17,8 @@
 <animation-list
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:oneshot="false">
-    <item android:drawable="@drawable/mr_ic_media_route_on_0_holo_dark" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_1_holo_dark" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_2_holo_dark" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_1_holo_dark" android:duration="500" />
+    <item android:drawable="@drawable/ic_media_route_on_0_mono_dark" android:duration="500" />
+    <item android:drawable="@drawable/ic_media_route_on_1_mono_dark" android:duration="500" />
+    <item android:drawable="@drawable/ic_media_route_on_2_mono_dark" android:duration="500" />
+    <item android:drawable="@drawable/ic_media_route_on_1_mono_dark" android:duration="500" />
 </animation-list>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_dark.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_mono_light.xml
similarity index 67%
rename from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_dark.xml
rename to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_mono_light.xml
index 6b27536..d495d99 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_holo_dark.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_connecting_mono_light.xml
@@ -17,8 +17,8 @@
 <animation-list
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:oneshot="false">
-    <item android:drawable="@drawable/mr_ic_media_route_on_0_holo_dark" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_1_holo_dark" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_2_holo_dark" android:duration="500" />
-    <item android:drawable="@drawable/mr_ic_media_route_on_1_holo_dark" android:duration="500" />
+    <item android:drawable="@drawable/ic_cast_on_0_light" android:duration="500" />
+    <item android:drawable="@drawable/ic_cast_on_1_light" android:duration="500" />
+    <item android:drawable="@drawable/ic_cast_on_2_light" android:duration="500" />
+    <item android:drawable="@drawable/ic_cast_on_1_light" android:duration="500" />
 </animation-list>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_dark.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_dark.xml
deleted file mode 100644
index 6870591..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_dark.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_dark" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_dark" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_dark" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_dark" />
-</selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_mono_dark.xml
similarity index 79%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_mono_dark.xml
index 0e4a065..6ae3b0b 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_mono_dark.xml
@@ -16,10 +16,10 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
+            android:drawable="@drawable/ic_media_route_on_mono_dark" />
     <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
+            android:drawable="@drawable/mr_ic_media_route_connecting_mono_dark" />
     <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+            android:drawable="@drawable/ic_media_route_off_mono_dark" />
+    <item android:drawable="@drawable/ic_media_route_disabled_mono_dark" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_mono_light.xml
similarity index 79%
rename from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
rename to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_mono_light.xml
index 0e4a065..a8cf6c8 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_mono_light.xml
@@ -16,10 +16,10 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
+            android:drawable="@drawable/ic_cast_on_light" />
     <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
+            android:drawable="@drawable/mr_ic_media_route_connecting_mono_light" />
     <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+            android:drawable="@drawable/ic_cast_off_light" />
+    <item android:drawable="@drawable/ic_cast_disabled_light" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_pause_dark.xml
similarity index 60%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_pause_dark.xml
index 0e4a065..f3dc712 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_pause_dark.xml
@@ -15,11 +15,5 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+    <item android:drawable="@drawable/ic_pause_dark" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_pause_light.xml
similarity index 60%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_pause_light.xml
index 0e4a065..9702be8 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_pause_light.xml
@@ -15,11 +15,5 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+    <item android:drawable="@drawable/ic_pause_light" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_play_dark.xml
similarity index 60%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_play_dark.xml
index 0e4a065..99e743c 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_play_dark.xml
@@ -15,11 +15,5 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+    <item android:drawable="@drawable/ic_play_dark" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_play_light.xml
similarity index 60%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_play_light.xml
index 0e4a065..d18cc12 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_play_light.xml
@@ -15,11 +15,5 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+    <item android:drawable="@drawable/ic_play_light" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_settings_dark.xml
similarity index 60%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_settings_dark.xml
index 0e4a065..0fe662e 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_settings_dark.xml
@@ -15,11 +15,5 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+    <item android:drawable="@drawable/ic_setting_dark" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_settings_light.xml
similarity index 60%
copy from sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
copy to sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_settings_light.xml
index 0e4a065..a4614f6 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/drawable/mr_ic_settings_light.xml
@@ -15,11 +15,5 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_on_holo_light" />
-    <item android:state_checkable="true" android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_connecting_holo_light" />
-    <item android:state_enabled="true"
-            android:drawable="@drawable/mr_ic_media_route_off_holo_light" />
-    <item android:drawable="@drawable/mr_ic_media_route_disabled_holo_light" />
+    <item android:drawable="@drawable/ic_setting_light" />
 </selector>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/layout-v11/mr_media_route_controller_dialog.xml b/sdk/extras/android/support/v7/mediarouter/res/layout-v11/mr_media_route_controller_dialog.xml
deleted file mode 100644
index b45fd15..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/layout-v11/mr_media_route_controller_dialog.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="fill_parent"
-              android:layout_height="wrap_content"
-              android:orientation="vertical"
-              android:divider="?android:attr/dividerHorizontal"
-              android:showDividers="middle">
-    <!-- Optional volume slider section. -->
-    <LinearLayout android:id="@+id/media_route_volume_layout"
-                  android:layout_width="fill_parent"
-                  android:layout_height="64dp"
-                  android:gravity="center_vertical"
-                  android:padding="8dp"
-                  android:visibility="gone">
-        <ImageView android:layout_width="48dp"
-                   android:layout_height="48dp"
-                   android:src="@drawable/mr_ic_audio_vol"
-                   android:gravity="center"
-                   android:scaleType="center" />
-        <SeekBar android:id="@+id/media_route_volume_slider"
-                 android:layout_width="0dp"
-                 android:layout_height="wrap_content"
-                 android:layout_weight="1"
-                 android:layout_marginLeft="8dp"
-                 android:layout_marginRight="8dp" />
-    </LinearLayout>
-
-    <!-- Optional content view section. -->
-    <FrameLayout android:id="@+id/media_route_control_frame"
-                 android:layout_width="fill_parent"
-                 android:layout_height="wrap_content"
-                 android:visibility="gone" />
-
-    <!-- Disconnect button. -->
-    <LinearLayout android:layout_width="fill_parent"
-                  android:layout_height="wrap_content"
-                  style="?attr/buttonBarStyle">
-        <Button android:id="@+id/media_route_disconnect_button"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
-                style="?attr/buttonBarButtonStyle"
-                android:gravity="center"
-                android:text="@string/mr_media_route_controller_disconnect" />
-    </LinearLayout>
-</LinearLayout>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/layout/mr_media_route_controller_dialog.xml b/sdk/extras/android/support/v7/mediarouter/res/layout/mr_media_route_controller_dialog.xml
deleted file mode 100644
index a1b24bd..0000000
--- a/sdk/extras/android/support/v7/mediarouter/res/layout/mr_media_route_controller_dialog.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="fill_parent"
-              android:layout_height="wrap_content"
-              android:orientation="vertical"
-              android:divider="?android:attr/dividerHorizontal"
-              android:showDividers="middle">
-    <!-- Optional volume slider section. -->
-    <LinearLayout android:id="@+id/media_route_volume_layout"
-                  android:layout_width="fill_parent"
-                  android:layout_height="64dp"
-                  android:gravity="center_vertical"
-                  android:padding="8dp"
-                  android:visibility="gone">
-        <ImageView android:layout_width="48dp"
-                   android:layout_height="48dp"
-                   android:src="@drawable/mr_ic_audio_vol"
-                   android:gravity="center"
-                   android:scaleType="center" />
-        <SeekBar android:id="@+id/media_route_volume_slider"
-                 android:layout_width="0dp"
-                 android:layout_height="wrap_content"
-                 android:layout_weight="1"
-                 android:layout_marginLeft="8dp"
-                 android:layout_marginRight="8dp" />
-    </LinearLayout>
-
-    <!-- Optional content view section. -->
-    <FrameLayout android:id="@+id/media_route_control_frame"
-                 android:layout_width="fill_parent"
-                 android:layout_height="wrap_content"
-                 android:visibility="gone" />
-
-    <!-- Disconnect button. -->
-    <LinearLayout android:layout_width="fill_parent"
-                  android:layout_height="wrap_content"
-                  style="?attr/buttonBarStyle">
-        <View android:layout_width="0dp"
-              android:layout_height="0dp"
-              android:layout_weight="0.25" />
-        <Button android:id="@+id/media_route_disconnect_button"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:layout_height="fill_parent"
-                style="?attr/buttonBarButtonStyle"
-                android:gravity="center"
-                android:text="@string/mr_media_route_controller_disconnect" />
-        <View android:layout_width="0dp"
-              android:layout_height="0dp"
-              android:layout_weight="0.25" />
-    </LinearLayout>
-</LinearLayout>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/layout/mr_media_route_controller_material_dialog_b.xml b/sdk/extras/android/support/v7/mediarouter/res/layout/mr_media_route_controller_material_dialog_b.xml
new file mode 100644
index 0000000..3b12b24
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/layout/mr_media_route_controller_material_dialog_b.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+    <LinearLayout android:id="@+id/title_bar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal" >
+        <TextView android:id="@+id/route_name"
+                android:layout_width="0dp"
+                android:layout_height="72dp"
+                android:layout_weight="1"
+                android:layout_marginLeft="24dip"
+                android:layout_marginRight="24dip"
+                android:gravity="center_vertical"
+                android:singleLine="true"
+                android:ellipsize="end"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textColor="?android:attr/textColorPrimary" />
+        <ImageButton android:id="@+id/settings"
+                android:layout_width="48dip"
+                android:layout_height="48dip"
+                android:padding="12dip"
+                android:layout_marginTop="12dip"
+                android:layout_marginBottom="12dip"
+                android:layout_marginRight="12dip"
+                android:contentDescription="@string/mr_media_route_controller_settings_description"
+                android:src="?attr/mediaRouteSettingsDrawable"
+                android:background="?attr/selectableItemBackgroundBorderless"
+                android:visibility="gone" />
+    </LinearLayout>
+    <FrameLayout android:id="@+id/media_route_control_frame"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" >
+        <RelativeLayout android:id="@+id/default_control_frame"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="?attr/colorPrimary" >
+            <ImageView android:id="@+id/art"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:maxHeight="@dimen/mr_media_route_controller_art_max_height"
+                    android:adjustViewBounds="true"
+                    android:scaleType="centerCrop"/>
+            <ImageButton android:id="@+id/play_pause"
+                    android:layout_width="48dip"
+                    android:layout_height="48dip"
+                    android:padding="12dip"
+                    android:layout_marginTop="8dip"
+                    android:layout_marginBottom="8dip"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@id/art"
+                    android:contentDescription="@string/mr_media_route_controller_play"
+                    android:background="?attr/selectableItemBackgroundBorderless"/>
+            <LinearLayout android:id="@+id/text_wrapper"
+                    android:orientation="vertical"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:minHeight="64dip"
+                    android:layout_marginLeft="24dip"
+                    android:gravity="center_vertical"
+                    android:layout_toLeftOf="@id/play_pause"
+                    android:layout_below="@id/art"
+                    android:layout_alignParentLeft="true" >
+                <TextView android:id="@+id/title"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textAppearance="?android:attr/textAppearanceSmall"
+                        android:textColor="?android:attr/textColorPrimary"
+                        android:textSize="16sp"
+                        android:textStyle="bold"
+                        android:singleLine="true" />
+                <TextView android:id="@+id/subtitle"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textAppearance="?android:attr/textAppearanceSmall"
+                        android:textColor="?android:attr/textColorPrimary"
+                        android:textSize="14sp"
+                        android:singleLine="true" />
+            </LinearLayout>
+        </RelativeLayout>
+    </FrameLayout>
+    <LinearLayout android:id="@+id/buttons"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal" >
+        <Button android:id="@+id/disconnect"
+            android:layout_width="0dp"
+            android:layout_height="48dp"
+            android:gravity="center"
+            android:layout_weight="1"
+            android:background="?attr/selectableItemBackgroundBorderless"
+            android:text="@string/mr_media_route_controller_disconnect"
+            android:visibility="gone" />
+        <Button android:id="@+id/stop"
+            android:layout_width="0dp"
+            android:layout_height="48dp"
+            android:gravity="center"
+            android:layout_weight="1"
+            android:textColor="?attr/colorAccent"
+            android:background="?attr/selectableItemBackgroundBorderless"
+            android:text="@string/mr_media_route_controller_stop" />
+    </LinearLayout>
+</LinearLayout>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-am/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-am/strings.xml
index 5bbcea8..5d061c9 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-am/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-am/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"ከመሳሪያ ጋር ያገናኙ"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"መሳሪያዎችን በመፈለግ ላይ…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"ግንኙነት አቋርጥ"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"መውሰድ አቁም"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"የመንገድ ቅንብሮች"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"አጫውት"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"ለአፍታ አቁም"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-ar/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-ar/strings.xml
index dd04c47..ac0fb5d 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-ar/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-ar/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"الاتصال بجهاز"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"جارٍ البحث عن الأجهزة…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"قطع الاتصال"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"إيقاف الإرسال"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"إعدادات المسار"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"تشغيل"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"إيقاف مؤقت"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-bg/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-bg/strings.xml
index d478516..0918332 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-bg/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-bg/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Свързване с устройство"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Търсят се устройства…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Прекратяване на връзката"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Спиране на предаването"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Настройки за маршрута"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Пускане"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Поставяне на пауза"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-ca/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-ca/strings.xml
index 5c956a3..eac6632 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-ca/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-ca/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Connecta al dispositiu"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"S\'estan cercant dispositius…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Desconnecta"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Atura l\'emissió"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Configuració de la ruta"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Reprodueix"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Posa en pausa"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-cs/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-cs/strings.xml
index 014ac3c..111c02a 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-cs/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-cs/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Připojení k zařízení"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Vyhledávání zařízení…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Odpojit"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Ukončit odesílání"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Nastavení trasy"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Přehrát"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pozastavit"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-da/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-da/strings.xml
index ca47a62..3b4fbf6 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-da/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-da/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Opret forbindelse til enheden"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Søger efter enheder..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Afbryd forbindelsen"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Stop med at caste"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Ruteindstillinger"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Afspil"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Sæt på pause"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-de/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-de/strings.xml
index 098d4c0..5b8e494 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-de/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-de/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Mit Gerät verbinden"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Geräte werden gesucht…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Verbindung aufheben"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Übertragung stoppen"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Routingeinstellungen"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Wiedergabe"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pause"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-el/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-el/strings.xml
index f844adb..3640111 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-el/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-el/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Σύνδεση με τη συσκευή"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Αναζήτηση συσκευών…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Αποσύνδεση"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Διακοπή μετάδοσης"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Ρυθμίσεις διαδρομής"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Αναπαραγωγή"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Παύση"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-en-rGB/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-en-rGB/strings.xml
index c16c294..f5a8531 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-en-rGB/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-en-rGB/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Connect to device"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Searching for devices…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Disconnect"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Stop casting"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Route settings"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Play"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pause"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-es-rUS/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-es-rUS/strings.xml
index 008c966..e1cf915 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-es-rUS/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-es-rUS/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Conectar al dispositivo"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Buscando dispositivos…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Desconectar"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Detener transmisión"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Configuración de ruta"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Reproducir"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pausar"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-es/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-es/strings.xml
index d413fe1..0f2a8ea 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-es/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-es/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Conectar a dispositivo"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Buscando dispositivos…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Desconectar"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Dejar de enviar contenido"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Ajustes de ruta"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Reproducir"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pausa"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-et-rEE/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-et-rEE/strings.xml
index 6870211..ebc63fd 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-et-rEE/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-et-rEE/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Seadmega ühendamine"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Seadmete otsimine …"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Katkesta ühendus"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Lõpeta ülekanne"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Marsruudi seaded"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Esitamine"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Peatamine"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-fa/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-fa/strings.xml
index cb713a8..e094982 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-fa/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-fa/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"برقراری ارتباط با دستگاه"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"در حال جستجو برای دستگاه‌ها..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"قطع ارتباط"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"توقف فرستادن"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"تنظیمات مسیر"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"پخش"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"توقف موقت"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-fi/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-fi/strings.xml
index 86a79b1..a21dc91 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-fi/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-fi/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Yhdistä laitteeseen"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Etsitään laitteita…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Katkaise yhteys"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Lopeta suoratoisto"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Reitin asetukset"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Toista"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Keskeytä"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-fr/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-fr/strings.xml
index 59bfe66..9fce08a 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-fr/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-fr/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Connecter à l\'appareil"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Recherche d\'appareils en cours…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Déconnecter"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Arrêter la diffusion"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Paramètres de l\'itinéraire"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Lecture"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pause"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-hi/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-hi/strings.xml
index cce275e..6d100ea 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-hi/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-hi/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"डिवाइस से कनेक्ट करें"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"डिवाइस की खोज हो रही है…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"डिस्कनेक्ट करें"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"कास्ट करना बंद करें"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"मार्ग सेटिंग"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"चलाएं"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"रोकें"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-hr/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-hr/strings.xml
index 91f8cd7..74e9270 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-hr/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-hr/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Povezivanje s uređajem"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Traženje uređaja…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Prekini vezu"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Zaustavi emitiranje"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Postavke rute"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Reprodukcija"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pauziraj"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-hu/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-hu/strings.xml
index bca65f4..efbc193 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-hu/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-hu/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Csatlakozás adott eszközhöz"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Eszközkeresés…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Leválasztás"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Átküldés leállítása"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Útvonal-beállítások"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Indítás"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Szüneteltetés"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-in/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-in/strings.xml
index 578f696..e3123c1 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-in/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-in/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Sambungkan ke perangkat"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Menelusuri perangkat…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Putuskan sambungan"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Hentikan transmisi"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Setelan rute"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Putar"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Jeda"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-it/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-it/strings.xml
index 973627e..bedd617 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-it/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-it/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Connetti al dispositivo"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Ricerca di dispositivi…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Disconnetti"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Interrompi trasmissione"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Impostazioni percorso"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Riproduci"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pausa"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-iw/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-iw/strings.xml
index 233acbc..12d17b9 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-iw/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-iw/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"התחבר למכשיר"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"מחפש מכשירים…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"התנתק"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"עצור העברה"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"הגדרות נתיב"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"הפעל"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"השהה"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-ja/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-ja/strings.xml
index a89c22d..e97a65a 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-ja/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-ja/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"端末に接続"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"端末を検索しています…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"接続を解除"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"キャストを停止"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"ルーティング設定"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"再生"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"一時停止"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-ko/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-ko/strings.xml
index 8f1faa6..d165e52 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-ko/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-ko/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"기기에 연결"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"기기 검색 중…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"연결 해제"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"전송 중지"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"경로 설정"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"재생"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"일시중지"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-lt/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-lt/strings.xml
index 6bc430b..2315618 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-lt/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-lt/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Prijungimas prie įrenginio"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Ieškoma įrenginių…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Atjungti"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Sustabdyti perdavimą"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Maršruto nustatymai"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Leisti"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pristabdyti"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-lv/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-lv/strings.xml
index a32e383..93e45de 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-lv/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-lv/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Savienojuma izveide ar ierīci"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Notiek ierīču meklēšana..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Atvienot"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Pārtraukt apraidi"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Maršruta iestatījumi"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Atskaņot"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Apturēt"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-nb/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-nb/strings.xml
index f7955a5..5ee8ec8 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-nb/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-nb/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Koble til enheten"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Søker etter enheter …"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Koble fra"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Stopp castingen"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Ruteinnstillinger"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Spill av"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Sett på pause"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-nl/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-nl/strings.xml
index 934ff3b..fcfac4d 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-nl/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-nl/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Verbinding maken met apparaat"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Zoeken naar apparaten…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Verbinding verbreken"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Casten stoppen"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Route-instellingen"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Afspelen"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Onderbreken"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-pl/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-pl/strings.xml
index 21dc070..34fea86 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-pl/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-pl/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Połącz z urządzeniem"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Szukam urządzeń…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Rozłącz"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Zakończ przesyłanie"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Ustawienia trasy"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Odtwórz"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Wstrzymaj"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-pt-rPT/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-pt-rPT/strings.xml
index c591eb3..1e1dbbb 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-pt-rPT/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-pt-rPT/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Ligar ao dispositivo"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"A pesquisar dispositivos…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Desassociar"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Parar a transmissão"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Definições de trajeto"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Reproduzir"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Colocar em pausa"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-pt/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-pt/strings.xml
index 31f2f27..67648a7 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-pt/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-pt/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Conectar ao dispositivo"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Procurando dispositivos…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Desconectar"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Interromper transmissão"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Configurações de rota"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Reproduzir"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pausar"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-ro/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-ro/strings.xml
index e34f7ec..d738bab 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-ro/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-ro/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Conectați-vă la dispozitiv"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Se caută dispozitive..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Deconectați-vă"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Nu mai proiectați"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Setări pentru traseu"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Redați"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Întrerupeți"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-ru/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-ru/strings.xml
index 2d4fae4..dfa836c 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-ru/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-ru/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Подключение к устройству"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Поиск устройств…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Отключить"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Остановить трансляцию"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Настройки передачи файлов"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Воспроизвести."</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Приостановить."</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-sk/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-sk/strings.xml
index 76078f7..3156edf 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-sk/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-sk/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Pripojenie k zariadeniu"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Prebieha vyhľadávanie zariadení…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Odpojiť"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Zastaviť prenášanie"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Nastavenia trasy"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Prehrať"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pozastaviť"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-sl/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-sl/strings.xml
index d642459..3de14aa 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-sl/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-sl/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Povezovanje z napravo"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Iskanje naprav …"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Prekini povezavo"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Ustavi predvajanje"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Nastavitve poti"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Predvajaj"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Zaustavi"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-sr/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-sr/strings.xml
index 6f26da9..de10685 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-sr/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-sr/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Повежите са уређајем"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Претраживање уређаја…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Прекини везу"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Заустави пребацивање"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Подешавања путање"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Пусти"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Паузирај"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-sv/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-sv/strings.xml
index 750e68a..3ac428a 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-sv/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-sv/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Anslut till enhet"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Söker efter enheter ..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Koppla från"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Sluta casta"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Inställningar för omdirigering"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Spela upp"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Pausa"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-sw/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-sw/strings.xml
index 73df654..00ce337 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-sw/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-sw/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Unganisha kwenye kifaa"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Inatafuta vifaa..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Tenganisha"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Acha kutuma"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Mipangilio ya njia"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Google Play"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Sitisha"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-sw600dp/dimens.xml b/sdk/extras/android/support/v7/mediarouter/res/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..5b29058
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-sw600dp/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <dimen name="mr_media_route_controller_art_max_height">480dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-th/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-th/strings.xml
index 236f4e9..31fc9c7 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-th/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-th/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"เชื่อมต่อกับอุปกรณ์"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"กำลังค้นหาอุปกรณ์…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"ยกเลิกการเชื่อมต่อ"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"หยุดการส่ง"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"การตั้งค่าเส้นทาง"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"เล่น"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"หยุดชั่วคราว"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-tl/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-tl/strings.xml
index edc1236..d4896b5 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-tl/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-tl/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Kumonekta sa device"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Naghahanap ng mga device…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Idiskonekta"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Itigil ang pagca-cast"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Mga setting ng ruta"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"I-play"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"I-pause"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-tr/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-tr/strings.xml
index 3106251..05344ff 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-tr/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-tr/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Cihaza bağlanın"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Cihaz arayın…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Bağlantıyı kes"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Yayını durdur"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Rota ayarları"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Oynat"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Duraklat"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-uk/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-uk/strings.xml
index 110e445..b445b9c 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-uk/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-uk/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Під’єднатися до пристрою"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Пошук пристроїв…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Від’єднатися"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Зупинити трансляцію"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Налаштування маршруту"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Відтворити"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Призупинити"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-vi/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-vi/strings.xml
index c6e107e..01ec106 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-vi/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-vi/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"Kết nối với thiết bị"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"Đang tìm kiếm thiết bị…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"Ngắt kết nối"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"Ngừng truyền"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"Cài đặt tuyến đường"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"Phát"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"Tạm dừng"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-zh-rCN/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-zh-rCN/strings.xml
index 9750e6c..070f1de 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-zh-rCN/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-zh-rCN/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"连接到设备"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"正在搜索设备…"</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"断开连接"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"停止投射"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"路由设置"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"播放"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"暂停"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values-zh-rTW/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values-zh-rTW/strings.xml
index 935f877..cb07c25 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values-zh-rTW/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values-zh-rTW/strings.xml
@@ -22,4 +22,8 @@
     <string name="mr_media_route_chooser_title" msgid="7106830097177242655">"連線至裝置"</string>
     <string name="mr_media_route_chooser_searching" msgid="7553005460920830010">"正在搜尋裝置..."</string>
     <string name="mr_media_route_controller_disconnect" msgid="109793632378378069">"中斷連線"</string>
+    <string name="mr_media_route_controller_stop" msgid="5398645111664294430">"停止投放"</string>
+    <string name="mr_media_route_controller_settings_description" msgid="379358765881274425">"路由設定"</string>
+    <string name="mr_media_route_controller_play" msgid="5214423499524760404">"播放"</string>
+    <string name="mr_media_route_controller_pause" msgid="8315773974194466049">"暫停"</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values/attrs.xml b/sdk/extras/android/support/v7/mediarouter/res/values/attrs.xml
index 2272e7a..5cd5606 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values/attrs.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values/attrs.xml
@@ -30,4 +30,7 @@
     <attr name="mediaRouteOffDrawable" format="reference" />
     <attr name="mediaRouteConnectingDrawable" format="reference" />
     <attr name="mediaRouteOnDrawable" format="reference" />
+    <attr name="mediaRouteSettingsDrawable" format="reference" />
+    <attr name="mediaRoutePlayDrawable" format="reference" />
+    <attr name="mediaRoutePauseDrawable" format="reference" />
 </resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values/dimens.xml b/sdk/extras/android/support/v7/mediarouter/res/values/dimens.xml
new file mode 100644
index 0000000..e687c82
--- /dev/null
+++ b/sdk/extras/android/support/v7/mediarouter/res/values/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <dimen name="mr_media_route_controller_art_max_height">320dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values/strings.xml b/sdk/extras/android/support/v7/mediarouter/res/values/strings.xml
index b8944b6..c6eb0fb 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values/strings.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values/strings.xml
@@ -34,4 +34,15 @@
     <!-- Button to disconnect from a media route.  [CHAR LIMIT=30] -->
     <string name="mr_media_route_controller_disconnect">Disconnect</string>
 
+    <!-- Button to stop playback and disconnect from a media route.  [CHAR LIMIT=30] -->
+    <string name="mr_media_route_controller_stop">Stop casting</string>
+
+    <!-- Description for a button that takes you to settings for the active route -->
+    <string name="mr_media_route_controller_settings_description">Route settings</string>
+
+    <!-- Accessibility description for the play button -->
+    <string name="mr_media_route_controller_play">Play</string>
+
+    <!-- Accessibility description for the pause button -->
+    <string name="mr_media_route_controller_pause">Pause</string>
 </resources>
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values/styles.xml b/sdk/extras/android/support/v7/mediarouter/res/values/styles.xml
index fc6b411..9be8545 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values/styles.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values/styles.xml
@@ -22,7 +22,7 @@
         <item name="android:padding">0dp</item>
         <item name="android:focusable">true</item>
         <item name="android:contentDescription">@string/mr_media_route_button_content_description</item>
-        <item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_holo_dark</item>
+        <item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_mono_dark</item>
     </style>
 
     <style name="Widget.MediaRouter.Light.MediaRouteButton"
@@ -32,6 +32,6 @@
         <item name="android:padding">0dp</item>
         <item name="android:focusable">true</item>
         <item name="android:contentDescription">@string/mr_media_route_button_content_description</item>
-        <item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_holo_light</item>
+        <item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_mono_light</item>
     </style>
 </resources>
\ No newline at end of file
diff --git a/sdk/extras/android/support/v7/mediarouter/res/values/themes.xml b/sdk/extras/android/support/v7/mediarouter/res/values/themes.xml
index 879188d..8350e04 100644
--- a/sdk/extras/android/support/v7/mediarouter/res/values/themes.xml
+++ b/sdk/extras/android/support/v7/mediarouter/res/values/themes.xml
@@ -19,17 +19,23 @@
     <style name="Theme.MediaRouter" parent="">
         <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.MediaRouteButton</item>
 
-        <item name="mediaRouteOffDrawable">@drawable/mr_ic_media_route_off_holo_dark</item>
-        <item name="mediaRouteConnectingDrawable">@drawable/mr_ic_media_route_connecting_holo_dark</item>
-        <item name="mediaRouteOnDrawable">@drawable/mr_ic_media_route_on_holo_dark</item>
+        <item name="mediaRouteOffDrawable">@drawable/ic_media_route_off_mono_dark</item>
+        <item name="mediaRouteConnectingDrawable">@drawable/mr_ic_media_route_connecting_mono_dark</item>
+        <item name="mediaRouteOnDrawable">@drawable/ic_media_route_on_mono_dark</item>
+        <item name="mediaRouteSettingsDrawable">@drawable/mr_ic_settings_dark</item>
+        <item name="mediaRoutePlayDrawable">@drawable/mr_ic_play_dark</item>
+        <item name="mediaRoutePauseDrawable">@drawable/mr_ic_pause_dark</item>
     </style>
 
     <style name="Theme.MediaRouter.Light" parent="">
         <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.Light.MediaRouteButton</item>
 
-        <item name="mediaRouteOffDrawable">@drawable/mr_ic_media_route_off_holo_light</item>
-        <item name="mediaRouteConnectingDrawable">@drawable/mr_ic_media_route_connecting_holo_light</item>
-        <item name="mediaRouteOnDrawable">@drawable/mr_ic_media_route_on_holo_light</item>
+        <item name="mediaRouteOffDrawable">@drawable/ic_cast_off_light</item>
+        <item name="mediaRouteConnectingDrawable">@drawable/mr_ic_media_route_connecting_mono_light</item>
+        <item name="mediaRouteOnDrawable">@drawable/ic_cast_on_light</item>
+        <item name="mediaRouteSettingsDrawable">@drawable/mr_ic_settings_light</item>
+        <item name="mediaRoutePlayDrawable">@drawable/mr_ic_play_light</item>
+        <item name="mediaRoutePauseDrawable">@drawable/mr_ic_pause_light</item>
     </style>
 
 </resources>
diff --git a/sdk/extras/android/support/v7/palette/libs/android-support-v7-palette.jar b/sdk/extras/android/support/v7/palette/libs/android-support-v7-palette.jar
index 5e24e68..8369069 100644
--- a/sdk/extras/android/support/v7/palette/libs/android-support-v7-palette.jar
+++ b/sdk/extras/android/support/v7/palette/libs/android-support-v7-palette.jar
Binary files differ
diff --git a/sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar b/sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar
index 9b4fdbe..a19bff6 100644
--- a/sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar
+++ b/sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar
Binary files differ