Merge "Import translations. DO NOT MERGE" into androidx-master-dev
diff --git a/activity/src/androidTest/java/androidx/activity/ComponentActivityLifecycleTest.kt b/activity/src/androidTest/java/androidx/activity/ComponentActivityLifecycleTest.kt
index c0769bb..d8972b9 100644
--- a/activity/src/androidTest/java/androidx/activity/ComponentActivityLifecycleTest.kt
+++ b/activity/src/androidTest/java/androidx/activity/ComponentActivityLifecycleTest.kt
@@ -17,8 +17,8 @@
 package androidx.activity
 
 import android.os.Bundle
-import androidx.lifecycle.GenericLifecycleObserver
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
@@ -83,7 +83,7 @@
 
 class LifecycleComponentActivity : ComponentActivity() {
     val activityCallbackLifecycleOwner: LifecycleOwner = mock(LifecycleOwner::class.java)
-    val lifecycleObserver: GenericLifecycleObserver = mock(GenericLifecycleObserver::class.java)
+    val lifecycleObserver: LifecycleEventObserver = mock(LifecycleEventObserver::class.java)
     val destroyCountDownLatch = CountDownLatch(1)
 
     init {
diff --git a/activity/src/androidTest/java/androidx/activity/ComponentActivityRunOnNextRecreateTest.kt b/activity/src/androidTest/java/androidx/activity/ComponentActivityRunOnNextRecreateTest.kt
index 59ace66..7920292e 100644
--- a/activity/src/androidTest/java/androidx/activity/ComponentActivityRunOnNextRecreateTest.kt
+++ b/activity/src/androidTest/java/androidx/activity/ComponentActivityRunOnNextRecreateTest.kt
@@ -17,7 +17,7 @@
 package androidx.activity
 
 import android.os.Bundle
-import androidx.lifecycle.GenericLifecycleObserver
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.savedstate.SavedStateRegistry
 import androidx.savedstate.SavedStateRegistryOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -61,7 +61,7 @@
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         if (savedInstanceState != null) {
-            lifecycle.addObserver(GenericLifecycleObserver { _, _ ->
+            lifecycle.addObserver(LifecycleEventObserver { _, _ ->
                 Truth.assertThat(restartedValue).isEqualTo("restarted")
                 observerExecuted = true
             })
diff --git a/activity/src/androidTest/java/androidx/activity/ComponentActivityViewModelTest.kt b/activity/src/androidTest/java/androidx/activity/ComponentActivityViewModelTest.kt
index 95bc7d4..51d2983 100644
--- a/activity/src/androidTest/java/androidx/activity/ComponentActivityViewModelTest.kt
+++ b/activity/src/androidTest/java/androidx/activity/ComponentActivityViewModelTest.kt
@@ -17,8 +17,8 @@
 package androidx.activity
 
 import android.os.Bundle
-import androidx.lifecycle.GenericLifecycleObserver
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.ViewModelStore
@@ -85,7 +85,7 @@
     fun testActivityOnCleared() {
         val activity = activityRule.activity
         val latch = CountDownLatch(1)
-        val observer = GenericLifecycleObserver { _, event ->
+        val observer = LifecycleEventObserver { _, event ->
             if (event == Lifecycle.Event.ON_DESTROY) {
                 activity.window.decorView.post {
                     try {
diff --git a/activity/src/main/java/androidx/activity/ComponentActivity.java b/activity/src/main/java/androidx/activity/ComponentActivity.java
index a7571d7..1d85dcc 100644
--- a/activity/src/main/java/androidx/activity/ComponentActivity.java
+++ b/activity/src/main/java/androidx/activity/ComponentActivity.java
@@ -93,7 +93,8 @@
         if (Build.VERSION.SDK_INT >= 19) {
             getLifecycle().addObserver(new GenericLifecycleObserver() {
                 @Override
-                public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+                public void onStateChanged(@NonNull LifecycleOwner source,
+                        @NonNull Lifecycle.Event event) {
                     if (event == Lifecycle.Event.ON_STOP) {
                         Window window = getWindow();
                         final View decor = window != null ? window.peekDecorView() : null;
@@ -106,7 +107,8 @@
         }
         getLifecycle().addObserver(new GenericLifecycleObserver() {
             @Override
-            public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+            public void onStateChanged(@NonNull LifecycleOwner source,
+                    @NonNull Lifecycle.Event event) {
                 if (event == Lifecycle.Event.ON_DESTROY) {
                     if (!isChangingConfigurations()) {
                         getViewModelStore().clear();
diff --git a/activity/src/main/java/androidx/activity/ImmLeaksCleaner.java b/activity/src/main/java/androidx/activity/ImmLeaksCleaner.java
index 3b6feb5..d226038 100644
--- a/activity/src/main/java/androidx/activity/ImmLeaksCleaner.java
+++ b/activity/src/main/java/androidx/activity/ImmLeaksCleaner.java
@@ -22,6 +22,7 @@
 import android.view.inputmethod.InputMethodManager;
 
 import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.lifecycle.GenericLifecycleObserver;
 import androidx.lifecycle.Lifecycle;
@@ -46,7 +47,7 @@
     }
 
     @Override
-    public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+    public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
         if (event != Lifecycle.Event.ON_DESTROY) {
             return;
         }
diff --git a/appcompat/res/values-as/strings.xml b/appcompat/res/values-as/strings.xml
new file mode 100644
index 0000000..700c8fb
--- /dev/null
+++ b/appcompat/res/values-as/strings.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2012 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 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="2571498368472823490">"সম্পন্ন হ’ল"</string>
+    <string name="abc_action_bar_home_description" msgid="7903180715631665059">"গৃহ পৃষ্ঠালৈ যাওক"</string>
+    <string name="abc_action_bar_up_description" msgid="6794660482873516081">"ওপৰলৈ যাওক"</string>
+    <string name="abc_action_menu_overflow_description" msgid="1155814932213556626">"অধিক বিকল্প"</string>
+    <string name="abc_toolbar_collapse_description" msgid="6389460216547290468">"সংকোচন কৰক"</string>
+    <string name="abc_searchview_description_search" msgid="5466662225065974044">"সন্ধান"</string>
+    <string name="abc_search_hint" msgid="940844115270746197">"সন্ধান কৰক…"</string>
+    <string name="abc_searchview_description_query" msgid="908784302972860853">"সন্ধান কৰা প্ৰশ্ন"</string>
+    <string name="abc_searchview_description_clear" msgid="1769270744562318534">"সন্ধান কৰা প্ৰশ্ন মচক"</string>
+    <string name="abc_searchview_description_submit" msgid="8203855622131699655">"প্ৰশ্ন দাখিল কৰক"</string>
+    <string name="abc_searchview_description_voice" msgid="3478748990613108725">"কণ্ঠধ্বনিৰ দ্বাৰা সন্ধান"</string>
+    <string name="abc_activitychooserview_choose_application" msgid="1798588241954930982">"কোনো এপ্ বাছনি কৰক"</string>
+    <string name="abc_activity_chooser_view_see_all" msgid="3732416590524162402">"সকলো চাওক"</string>
+    <string name="abc_shareactionprovider_share_with_application" msgid="9009661856846212431">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ৰ জৰিয়তে শ্বেয়াৰ কৰক"</string>
+    <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"ইয়াৰ জৰিয়তে শ্বেয়াৰ কৰক"</string>
+    <string name="abc_capital_on" msgid="7831734969929204599">"অন"</string>
+    <string name="abc_capital_off" msgid="3403923230105792483">"অফ"</string>
+    <string name="search_menu_title" msgid="730395136688082741">"সন্ধান"</string>
+    <string name="abc_prepend_shortcut_label" msgid="3570106412128999382">"Menu+"</string>
+    <string name="abc_menu_meta_shortcut_label" msgid="8046416353848716905">"Meta+"</string>
+    <string name="abc_menu_ctrl_shortcut_label" msgid="944415252197684443">"Ctrl+"</string>
+    <string name="abc_menu_alt_shortcut_label" msgid="5725160506500770567">"Alt+"</string>
+    <string name="abc_menu_shift_shortcut_label" msgid="3271697756921353410">"Shift+"</string>
+    <string name="abc_menu_sym_shortcut_label" msgid="8327365089695024394">"Sym+"</string>
+    <string name="abc_menu_function_shortcut_label" msgid="4974283687810130415">"Function+"</string>
+    <string name="abc_menu_space_shortcut_label" msgid="2304645930658438191">"space"</string>
+    <string name="abc_menu_enter_shortcut_label" msgid="6840127756824236027">"enter"</string>
+    <string name="abc_menu_delete_shortcut_label" msgid="129742188101734366">"delete"</string>
+</resources>
diff --git a/appcompat/res/values-bn/strings.xml b/appcompat/res/values-bn/strings.xml
index f3e1a79..684a956 100644
--- a/appcompat/res/values-bn/strings.xml
+++ b/appcompat/res/values-bn/strings.xml
@@ -32,7 +32,7 @@
     <string name="abc_shareactionprovider_share_with_application" msgid="9009661856846212431">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>-এর সাথে শেয়ার করুন"</string>
     <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"শেয়ার করুন"</string>
     <string name="abc_capital_on" msgid="7831734969929204599">"চালু করুন"</string>
-    <string name="abc_capital_off" msgid="3403923230105792483">"বন্ধ করুন"</string>
+    <string name="abc_capital_off" msgid="3403923230105792483">"বন্ধ আছে"</string>
     <string name="search_menu_title" msgid="730395136688082741">"সার্চ করুন"</string>
     <string name="abc_prepend_shortcut_label" msgid="3570106412128999382">"Menu+"</string>
     <string name="abc_menu_meta_shortcut_label" msgid="8046416353848716905">"Meta+"</string>
diff --git a/appcompat/res/values-bs/strings.xml b/appcompat/res/values-bs/strings.xml
index c1aba29..4198b75 100644
--- a/appcompat/res/values-bs/strings.xml
+++ b/appcompat/res/values-bs/strings.xml
@@ -33,7 +33,7 @@
     <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"Dijeli sa"</string>
     <string name="abc_capital_on" msgid="7831734969929204599">"UKLJUČENO"</string>
     <string name="abc_capital_off" msgid="3403923230105792483">"ISKLJUČENO"</string>
-    <string name="search_menu_title" msgid="730395136688082741">"Traži"</string>
+    <string name="search_menu_title" msgid="730395136688082741">"Pretražite"</string>
     <string name="abc_prepend_shortcut_label" msgid="3570106412128999382">"Menu+"</string>
     <string name="abc_menu_meta_shortcut_label" msgid="8046416353848716905">"Meta+"</string>
     <string name="abc_menu_ctrl_shortcut_label" msgid="944415252197684443">"Ctrl+"</string>
diff --git a/appcompat/res/values-ca/strings.xml b/appcompat/res/values-ca/strings.xml
index 705de23..b558afa2 100644
--- a/appcompat/res/values-ca/strings.xml
+++ b/appcompat/res/values-ca/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="abc_action_mode_done" msgid="2571498368472823490">"Fet"</string>
     <string name="abc_action_bar_home_description" msgid="7903180715631665059">"Navega a la pàgina d\'inici"</string>
-    <string name="abc_action_bar_up_description" msgid="6794660482873516081">"Navega cap a dalt"</string>
+    <string name="abc_action_bar_up_description" msgid="6794660482873516081">"Navega cap amunt"</string>
     <string name="abc_action_menu_overflow_description" msgid="1155814932213556626">"Més opcions"</string>
     <string name="abc_toolbar_collapse_description" msgid="6389460216547290468">"Replega"</string>
     <string name="abc_searchview_description_search" msgid="5466662225065974044">"Cerca"</string>
diff --git a/appcompat/res/values-de/strings.xml b/appcompat/res/values-de/strings.xml
index f1c33bf..c06df8e 100644
--- a/appcompat/res/values-de/strings.xml
+++ b/appcompat/res/values-de/strings.xml
@@ -28,7 +28,7 @@
     <string name="abc_searchview_description_submit" msgid="8203855622131699655">"Anfrage senden"</string>
     <string name="abc_searchview_description_voice" msgid="3478748990613108725">"Sprachsuche"</string>
     <string name="abc_activitychooserview_choose_application" msgid="1798588241954930982">"App auswählen"</string>
-    <string name="abc_activity_chooser_view_see_all" msgid="3732416590524162402">"Alle ansehen"</string>
+    <string name="abc_activity_chooser_view_see_all" msgid="3732416590524162402">"Alle anzeigen"</string>
     <string name="abc_shareactionprovider_share_with_application" msgid="9009661856846212431">"Mit <xliff:g id="APPLICATION_NAME">%s</xliff:g> teilen"</string>
     <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"Teilen mit"</string>
     <string name="abc_capital_on" msgid="7831734969929204599">"AN"</string>
diff --git a/appcompat/res/values-es/strings.xml b/appcompat/res/values-es/strings.xml
index 49c8e3c..c100f70 100644
--- a/appcompat/res/values-es/strings.xml
+++ b/appcompat/res/values-es/strings.xml
@@ -31,8 +31,8 @@
     <string name="abc_activity_chooser_view_see_all" msgid="3732416590524162402">"Ver todo"</string>
     <string name="abc_shareactionprovider_share_with_application" msgid="9009661856846212431">"Compartir con <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"Compartir con"</string>
-    <string name="abc_capital_on" msgid="7831734969929204599">"SÍ"</string>
-    <string name="abc_capital_off" msgid="3403923230105792483">"NO"</string>
+    <string name="abc_capital_on" msgid="7831734969929204599">"ACTIVADO"</string>
+    <string name="abc_capital_off" msgid="3403923230105792483">"DESACTIVADO"</string>
     <string name="search_menu_title" msgid="730395136688082741">"Buscar"</string>
     <string name="abc_prepend_shortcut_label" msgid="3570106412128999382">"Menú +"</string>
     <string name="abc_menu_meta_shortcut_label" msgid="8046416353848716905">"Meta +"</string>
diff --git a/appcompat/res/values-or/strings.xml b/appcompat/res/values-or/strings.xml
index b7d691d..bb7c8ca 100644
--- a/appcompat/res/values-or/strings.xml
+++ b/appcompat/res/values-or/strings.xml
@@ -29,8 +29,8 @@
     <string name="abc_searchview_description_voice" msgid="3478748990613108725">"ଭଏସ୍‌ ସର୍ଚ୍ଚ"</string>
     <string name="abc_activitychooserview_choose_application" msgid="1798588241954930982">"ଗୋଟିଏ ଆପ୍‍ ବାଛନ୍ତୁ"</string>
     <string name="abc_activity_chooser_view_see_all" msgid="3732416590524162402">"ସବୁ ଦେଖନ୍ତୁ"</string>
-    <string name="abc_shareactionprovider_share_with_application" msgid="9009661856846212431">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ସହ ଶେୟାର୍‍ କରନ୍ତୁ"</string>
-    <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"ଏହାଙ୍କ ସହ ଶେୟାର୍‌ କରନ୍ତୁ"</string>
+    <string name="abc_shareactionprovider_share_with_application" msgid="9009661856846212431">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ସହ ସେୟାର୍‍ କରନ୍ତୁ"</string>
+    <string name="abc_shareactionprovider_share_with" msgid="2650565705514630347">"ଏହାଙ୍କ ସହ ସେୟାର୍‌ କରନ୍ତୁ"</string>
     <string name="abc_capital_on" msgid="7831734969929204599">"ଅନ୍"</string>
     <string name="abc_capital_off" msgid="3403923230105792483">"ଅଫ୍"</string>
     <string name="search_menu_title" msgid="730395136688082741">"ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
diff --git a/appcompat/res/values-vi/strings.xml b/appcompat/res/values-vi/strings.xml
index 73374e1..e3bb407 100644
--- a/appcompat/res/values-vi/strings.xml
+++ b/appcompat/res/values-vi/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="abc_action_mode_done" msgid="2571498368472823490">"Xong"</string>
     <string name="abc_action_bar_home_description" msgid="7903180715631665059">"Chỉ đường về nhà"</string>
-    <string name="abc_action_bar_up_description" msgid="6794660482873516081">"Điều hướng lên trên"</string>
+    <string name="abc_action_bar_up_description" msgid="6794660482873516081">"Di chuyển lên"</string>
     <string name="abc_action_menu_overflow_description" msgid="1155814932213556626">"Tùy chọn khác"</string>
     <string name="abc_toolbar_collapse_description" msgid="6389460216547290468">"Thu gọn"</string>
     <string name="abc_searchview_description_search" msgid="5466662225065974044">"Tìm kiếm"</string>
diff --git a/benchmark/api/1.0.0-alpha02.txt b/benchmark/api/1.0.0-alpha02.txt
index d53eea6..a1eb721 100644
--- a/benchmark/api/1.0.0-alpha02.txt
+++ b/benchmark/api/1.0.0-alpha02.txt
@@ -23,7 +23,7 @@
   public final class BenchmarkState {
     method public boolean keepRunning();
     method public void pauseTiming();
-    method public static void reportData(String className, String testName, long nanos, java.util.List<java.lang.Long> data, @IntRange(from=0) int warmupIterations, @IntRange(from=1) int repeatIterations);
+    method public static void reportData(String className, String testName, java.util.List<java.lang.Long> dataNs, @IntRange(from=0) int warmupIterations, @IntRange(from=1) int repeatIterations);
     method public void resumeTiming();
   }
 
diff --git a/benchmark/api/current.txt b/benchmark/api/current.txt
index d53eea6..a1eb721 100644
--- a/benchmark/api/current.txt
+++ b/benchmark/api/current.txt
@@ -23,7 +23,7 @@
   public final class BenchmarkState {
     method public boolean keepRunning();
     method public void pauseTiming();
-    method public static void reportData(String className, String testName, long nanos, java.util.List<java.lang.Long> data, @IntRange(from=0) int warmupIterations, @IntRange(from=1) int repeatIterations);
+    method public static void reportData(String className, String testName, java.util.List<java.lang.Long> dataNs, @IntRange(from=0) int warmupIterations, @IntRange(from=1) int repeatIterations);
     method public void resumeTiming();
   }
 
diff --git a/benchmark/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt b/benchmark/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt
index fbaac83..fe7b13e 100644
--- a/benchmark/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt
+++ b/benchmark/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt
@@ -125,11 +125,10 @@
 
     @Test
     fun reportResult() {
-        BenchmarkState.reportData("className", "testName", 100, listOf(100), 1, 1)
+        BenchmarkState.reportData("className", "testName", listOf(100), 1, 1)
         val expectedReport = BenchmarkState.Report(
             className = "className",
             testName = "testName",
-            nanos = 100,
             data = listOf(100),
             repeatIterations = 1,
             warmupIterations = 1
diff --git a/benchmark/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt b/benchmark/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
index 5574c1a..d2f8c97 100644
--- a/benchmark/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
+++ b/benchmark/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.benchmark
 
+import android.os.Build
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Rule
@@ -34,7 +35,6 @@
     private val reportA = BenchmarkState.Report(
         testName = "MethodA",
         className = "package.Class1",
-        nanos = 100,
         data = listOf(100, 101, 102),
         repeatIterations = 100000,
         warmupIterations = 8000
@@ -42,7 +42,6 @@
     private val reportB = BenchmarkState.Report(
         testName = "MethodB",
         className = "package.Class2",
-        nanos = 100,
         data = listOf(100, 101, 102),
         repeatIterations = 100000,
         warmupIterations = 8000
@@ -63,35 +62,63 @@
     fun validateJson() {
         val tempFile = tempFolder.newFile()
 
+        val sustainedPerformanceModeInUse = AndroidBenchmarkRunner.sustainedPerformanceModeInUse
+
         ResultWriter.writeReport(tempFile, listOf(reportA, reportB))
         assertEquals(
             """
-            [
-                {
-                    "name": "MethodA",
-                    "className": "package.Class1",
-                    "nanos": 100,
-                    "warmupIterations": 8000,
-                    "repeatIterations": 100000,
-                    "runs": [
-                        100,
-                        101,
-                        102
-                    ]
+            {
+                "context": {
+                    "build": {
+                        "device": "${Build.DEVICE}",
+                        "fingerprint": "${Build.FINGERPRINT}",
+                        "model": "${Build.MODEL}",
+                        "version": {
+                            "sdk": ${Build.VERSION.SDK_INT}
+                        }
+                    },
+                    "cpuLocked": ${Clocks.areLocked},
+                    "sustainedPerformanceModeEnabled": $sustainedPerformanceModeInUse
                 },
-                {
-                    "name": "MethodB",
-                    "className": "package.Class2",
-                    "nanos": 100,
-                    "warmupIterations": 8000,
-                    "repeatIterations": 100000,
-                    "runs": [
-                        100,
-                        101,
-                        102
-                    ]
-                }
-            ]
+                "benchmarks": [
+                    {
+                        "name": "MethodA",
+                        "className": "package.Class1",
+                        "metrics": {
+                            "timeNs": {
+                                "minimum": 100,
+                                "maximum": 102,
+                                "median": 101,
+                                "runs": [
+                                    100,
+                                    101,
+                                    102
+                                ]
+                            }
+                        },
+                        "warmupIterations": 8000,
+                        "repeatIterations": 100000
+                    },
+                    {
+                        "name": "MethodB",
+                        "className": "package.Class2",
+                        "metrics": {
+                            "timeNs": {
+                                "minimum": 100,
+                                "maximum": 102,
+                                "median": 101,
+                                "runs": [
+                                    100,
+                                    101,
+                                    102
+                                ]
+                            }
+                        },
+                        "warmupIterations": 8000,
+                        "repeatIterations": 100000
+                    }
+                ]
+            }
             """.trimIndent(),
             tempFile.readText()
         )
diff --git a/benchmark/src/androidTest/java/androidx/benchmark/StatsTest.kt b/benchmark/src/androidTest/java/androidx/benchmark/StatsTest.kt
index 296fdc7..92d638b 100644
--- a/benchmark/src/androidTest/java/androidx/benchmark/StatsTest.kt
+++ b/benchmark/src/androidTest/java/androidx/benchmark/StatsTest.kt
@@ -39,6 +39,18 @@
     }
 
     @Test
+    fun one() {
+        val stats = Stats(listOf(10))
+        assertEquals(10.0, stats.mean, 0.0)
+        assertEquals(10, stats.median)
+        assertEquals(10, stats.max)
+        assertEquals(10, stats.min)
+        assertEquals(Double.NaN, stats.standardDeviation, 0.0)
+        assertEquals(10, stats.percentile90)
+        assertEquals(10, stats.percentile95)
+    }
+
+    @Test
     fun percentile() {
         val stats = Stats((1L..100L).toList())
         assertEquals(50.5, stats.mean, 0.0)
diff --git a/benchmark/src/main/java/androidx/benchmark/BenchmarkState.kt b/benchmark/src/main/java/androidx/benchmark/BenchmarkState.kt
index 52f1b740..0540cb8 100644
--- a/benchmark/src/main/java/androidx/benchmark/BenchmarkState.kt
+++ b/benchmark/src/main/java/androidx/benchmark/BenchmarkState.kt
@@ -326,42 +326,30 @@
         }
     }
 
-    private fun mean(): Long = stats.mean.toLong()
-
-    private fun median(): Long = stats.median
-
-    private fun min(): Long = stats.min
-
-    private fun standardDeviation(): Long = stats.standardDeviation.toLong()
-
-    private fun count(): Long = maxIterations.toLong()
-
     internal data class Report(
         val className: String,
         val testName: String,
-        val nanos: Long,
         val data: List<Long>,
         val repeatIterations: Int,
         val warmupIterations: Int
-    )
-
-    internal fun getReport(testName: String, className: String): Report {
-        return Report(
-            className = className,
-            testName = testName,
-            nanos = min(),
-            data = results,
-            repeatIterations = maxIterations,
-            warmupIterations = warmupIteration
-        )
+    ) {
+        val stats = Stats(data)
     }
 
+    internal fun getReport(testName: String, className: String) = Report(
+        className = className,
+        testName = testName,
+        data = results,
+        repeatIterations = maxIterations,
+        warmupIterations = warmupIteration
+    )
+
     private fun summaryLine() = "Summary: " +
-            "median=${median()}ns, " +
-            "mean=${mean()}ns, " +
-            "min=${min()}ns, " +
-            "stddev=${standardDeviation()}ns, " +
-            "count=${count()}"
+            "median=${stats.median}ns, " +
+            "mean=${stats.mean.toLong()}ns, " +
+            "min=${stats.min}ns, " +
+            "stddev=${stats.standardDeviation.toLong()}ns, " +
+            "count=$maxIterations"
 
     /**
      * Acquires a status report bundle
@@ -373,12 +361,12 @@
         val status = Bundle()
 
         val prefix = WarningState.WARNING_PREFIX
-        status.putLong("${prefix}median", median())
-        status.putLong("${prefix}mean", mean())
-        status.putLong("${prefix}min", min())
-        status.putLong("${prefix}standardDeviation", standardDeviation())
-        status.putLong("${prefix}count", count())
-        status.putIdeSummaryLine(key, min())
+        status.putLong("${prefix}median", stats.median)
+        status.putLong("${prefix}mean", stats.mean.toLong())
+        status.putLong("${prefix}min", stats.min)
+        status.putLong("${prefix}standardDeviation", stats.standardDeviation.toLong())
+        status.putLong("${prefix}count", maxIterations.toLong())
+        status.putIdeSummaryLine(key, stats.min)
         return status
     }
 
@@ -416,11 +404,7 @@
          *
          * @param className Name of class the benchmark runs in
          * @param testName Name of the benchmark
-         * @param nanos Summary number for benchmark result, in nanoseconds. Generally this is the
-         *              minimum value observed. If your existing external benchmark infrastructure
-         *              has a standard way of summarizing results, such as average or median, you
-         *              can use that instead.
-         * @param data List of all measured results, in nanoseconds
+         * @param dataNs List of all measured results, in nanoseconds
          * @param warmupIterations Number of iterations of warmup before measurements started.
          *                         Should be no less than 0.
          * @param repeatIterations Number of iterations in between each measurement. Should be no
@@ -431,29 +415,27 @@
         fun reportData(
             className: String,
             testName: String,
-            nanos: Long,
-            data: List<Long>,
+            dataNs: List<Long>,
             @androidx.annotation.IntRange(from = 0) warmupIterations: Int,
             @androidx.annotation.IntRange(from = 1) repeatIterations: Int
         ) {
+            val report = Report(
+                className = className,
+                testName = testName,
+                data = dataNs,
+                repeatIterations = repeatIterations,
+                warmupIterations = warmupIterations
+            )
+
             // Report value to Studio console
             val bundle = Bundle()
             val fullTestName = WarningState.WARNING_PREFIX +
                     if (className.isNotEmpty()) "$className.$testName" else testName
-            bundle.putIdeSummaryLine(fullTestName, nanos)
+            bundle.putIdeSummaryLine(fullTestName, report.stats.min)
             InstrumentationRegistry.getInstrumentation().sendStatus(Activity.RESULT_OK, bundle)
 
             // Report values to file output
-            ResultWriter.appendReport(
-                BenchmarkState.Report(
-                    className = className,
-                    testName = testName,
-                    nanos = nanos,
-                    data = data,
-                    repeatIterations = repeatIterations,
-                    warmupIterations = warmupIterations
-                )
-            )
+            ResultWriter.appendReport(report)
         }
 
         internal fun sleepIfThermalThrottled(): Boolean {
diff --git a/benchmark/src/main/java/androidx/benchmark/ResultWriter.kt b/benchmark/src/main/java/androidx/benchmark/ResultWriter.kt
index 5da82c0..3ec390a 100644
--- a/benchmark/src/main/java/androidx/benchmark/ResultWriter.kt
+++ b/benchmark/src/main/java/androidx/benchmark/ResultWriter.kt
@@ -16,6 +16,7 @@
 
 package androidx.benchmark
 
+import android.os.Build
 import android.os.Environment.DIRECTORY_DOWNLOADS
 import android.os.Environment.getExternalStoragePublicDirectory
 import android.util.JsonWriter
@@ -53,27 +54,60 @@
             val writer = JsonWriter(bufferedWriter())
             writer.setIndent("    ")
 
-            writer.beginArray()
+            writer.beginObject()
+
+            writer.name("context").beginObject()
+                .name("build").buildInfoObject()
+                .name("cpuLocked").value(Clocks.areLocked)
+                .name("sustainedPerformanceModeEnabled")
+                .value(AndroidBenchmarkRunner.sustainedPerformanceModeInUse)
+            writer.endObject()
+
+            writer.name("benchmarks").beginArray()
             reports.forEach { writer.reportObject(it) }
             writer.endArray()
 
+            writer.endObject()
+
             writer.flush()
             writer.close()
         }
     }
 
+    private fun JsonWriter.buildInfoObject(): JsonWriter {
+        beginObject()
+            .name("device").value(Build.DEVICE)
+            .name("fingerprint").value(Build.FINGERPRINT)
+            .name("model").value(Build.MODEL)
+            .name("version").beginObject().name("sdk").value(Build.VERSION.SDK_INT).endObject()
+        return endObject()
+    }
+
     private fun JsonWriter.reportObject(report: BenchmarkState.Report): JsonWriter {
         beginObject()
             .name("name").value(report.testName)
             .name("className").value(report.className)
-            .name("nanos").value(report.nanos)
+            .name("metrics").metricsObject(report)
             .name("warmupIterations").value(report.warmupIterations)
             .name("repeatIterations").value(report.repeatIterations)
 
+        return endObject()
+    }
+
+    private fun JsonWriter.metricsObject(report: BenchmarkState.Report): JsonWriter {
+        beginObject()
+
+        name("timeNs").beginObject()
+            .name("minimum").value(report.stats.min)
+            .name("maximum").value(report.stats.max)
+            .name("median").value(report.stats.median)
+
         name("runs").beginArray()
         report.data.forEach { value(it) }
         endArray()
 
+        endObject() // timeNs
+
         return endObject()
     }
 }
diff --git a/benchmark/src/main/java/androidx/benchmark/Stats.java b/benchmark/src/main/java/androidx/benchmark/Stats.java
index c853df9..a94c0e0 100644
--- a/benchmark/src/main/java/androidx/benchmark/Stats.java
+++ b/benchmark/src/main/java/androidx/benchmark/Stats.java
@@ -35,10 +35,11 @@
         // make a copy since we're modifying it
         values = new ArrayList<>(values);
         final int size = values.size();
-        if (size < 2) {
-            throw new IllegalArgumentException("At least two results are necessary.");
+        if (size < 1) {
+            throw new IllegalArgumentException("At least one result is necessary.");
         }
 
+
         Collections.sort(values);
 
         mMin = values.get(0);
@@ -60,7 +61,8 @@
             final double tmp = values.get(i) - mMean;
             mStandardDeviation += tmp * tmp;
         }
-        mStandardDeviation = Math.sqrt(mStandardDeviation / (double) (size - 1));
+        mStandardDeviation = size == 1 ? Double.NaN :
+                Math.sqrt(mStandardDeviation / (double) (size - 1));
     }
 
     public double getMean() {
diff --git a/biometric/res/values-ar/strings.xml b/biometric/res/values-ar/strings.xml
index 902ba58..e66363c 100644
--- a/biometric/res/values-ar/strings.xml
+++ b/biometric/res/values-ar/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="fingerprint_dialog_touch_sensor" msgid="5354590751262189738">"المس زر استشعار بصمات الإصبع"</string>
+    <string name="fingerprint_dialog_touch_sensor" msgid="5354590751262189738">"المس زر استشعار بصمة الإصبع"</string>
     <string name="fingerprint_not_recognized" msgid="5491287833813257925">"لم يتم التعرف عليها."</string>
     <string name="accessibility_fingerprint_dialog_help_area" msgid="6241458715391513061">"منطقة رسالة المساعدة"</string>
     <string name="fingerprint_error_hw_not_available" msgid="3976825677335166260">"جهاز بصمة الإصبع غير متاح."</string>
diff --git a/biometric/res/values-my/strings.xml b/biometric/res/values-my/strings.xml
index ac23e9d..5c6e6c5 100644
--- a/biometric/res/values-my/strings.xml
+++ b/biometric/res/values-my/strings.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="fingerprint_dialog_touch_sensor" msgid="5354590751262189738">"လက်ဗွေအာရုံခံကိရိယာကို တို့ပါ"</string>
-    <string name="fingerprint_not_recognized" msgid="5491287833813257925">"မသိပါ"</string>
+    <string name="fingerprint_not_recognized" msgid="5491287833813257925">"မသိ"</string>
     <string name="accessibility_fingerprint_dialog_help_area" msgid="6241458715391513061">"အကူအညီမက်ဆေ့ဂျ် နေရာ"</string>
     <string name="fingerprint_error_hw_not_available" msgid="3976825677335166260">"လက်ဗွေစက်ပစ္စည်း မရနိုင်ပါ။"</string>
     <string name="fingerprint_error_no_fingerprints" msgid="3350805046152877040">"မည်သည့် လက်ဗွေကိုမျှ ထည့်သွင်းမထားပါ။"</string>
diff --git a/biometric/res/values-tl/strings.xml b/biometric/res/values-tl/strings.xml
index 3efe18f..c6f5aab 100644
--- a/biometric/res/values-tl/strings.xml
+++ b/biometric/res/values-tl/strings.xml
@@ -24,6 +24,6 @@
     <string name="fingerprint_error_no_fingerprints" msgid="3350805046152877040">"Walang naka-enroll na fingerprint."</string>
     <string name="fingerprint_error_hw_not_present" msgid="1176237289575184578">"Walang sensor para sa fingerprint ang device na ito"</string>
     <string name="fingerprint_error_user_canceled" msgid="3421037373085129417">"Kinansela ng user ang operasyon sa fingerprint."</string>
-    <string name="fingerprint_error_lockout" msgid="1651062876313169162">"Masyadong maraming pagsubok. Pakisubukang muli sa ibang pagkakataon."</string>
+    <string name="fingerprint_error_lockout" msgid="1651062876313169162">"Masyadong maraming pagsubok. Pakisubukan ulit sa ibang pagkakataon."</string>
     <string name="default_error_msg" msgid="7497355367608150274">"Hindi alam na error"</string>
 </resources>
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
index 8ef41cc..90a470b 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
@@ -95,10 +95,9 @@
 // Arch libraries
 const val ARCH_LIFECYCLE_RUNTIME = "androidx.lifecycle:lifecycle-runtime:2.0.0"
 const val ARCH_LIFECYCLE_COMMON = "androidx.lifecycle:lifecycle-common:2.0.0@jar"
-const val ARCH_LIFECYCLE_LIVEDATA_CORE =
-        "androidx.lifecycle:lifecycle-livedata-core:2.0.0"
-const val ARCH_LIFECYCLE_LIVEDATA =
-        "androidx.lifecycle:lifecycle-livedata:2.0.0"
+const val ARCH_LIFECYCLE_LIVEDATA_CORE = "androidx.lifecycle:lifecycle-livedata-core:2.0.0"
+const val ARCH_LIFECYCLE_LIVEDATA = "androidx.lifecycle:lifecycle-livedata:2.0.0"
+const val ARCH_LIFECYCLE_SERVICE = "androidx.lifecycle:lifecycle-service:2.0.0"
 const val ARCH_LIFECYCLE_VIEWMODEL = "androidx.lifecycle:lifecycle-viewmodel:2.0.0"
 const val ARCH_LIFECYCLE_EXTENSIONS = "androidx.lifecycle:lifecycle-extensions:2.0.0"
 const val ARCH_CORE_COMMON = "androidx.arch.core:core-common:2.0.1@jar"
diff --git a/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
new file mode 100755
index 0000000..cec7fd7
--- /dev/null
+++ b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+
+import java.util.List;
+
+/**
+ * Stub implementation for beauty image capture use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices.
+ */
+public final class BeautyImageCaptureExtenderImpl implements ImageCaptureExtenderImpl {
+    public BeautyImageCaptureExtenderImpl() {}
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureProcessorImpl getCaptureProcessor() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public List<CaptureStageImpl> getCaptureStages() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public int getMaxCaptureStage() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onDeInit() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+}
diff --git a/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java
new file mode 100755
index 0000000..fcecc7c
--- /dev/null
+++ b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+
+/**
+ * Stub implementation for beauty view finder use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices.
+ */
+public final class BeautyPreviewExtenderImpl implements PreviewExtenderImpl {
+    public BeautyPreviewExtenderImpl() {
+    }
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl getCaptureStage() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public ProcessorType getProcessorType() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public RequestUpdateProcessorImpl getRequestUpdatePreviewProcessor() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onDeInit() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+}
diff --git a/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
new file mode 100755
index 0000000..199a519
--- /dev/null
+++ b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+
+import java.util.List;
+
+/**
+ * Stub implementation for night image capture use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices.
+ */
+public final class NightImageCaptureExtenderImpl implements ImageCaptureExtenderImpl {
+    public NightImageCaptureExtenderImpl() {}
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureProcessorImpl getCaptureProcessor() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public List<CaptureStageImpl> getCaptureStages() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public int getMaxCaptureStage() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onDeInit() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+}
diff --git a/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java
new file mode 100755
index 0000000..2ec2392
--- /dev/null
+++ b/camera/extensions-stub/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+
+/**
+ * Stub implementation for night view finder use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices.
+ */
+public final class NightPreviewExtenderImpl implements PreviewExtenderImpl {
+    public NightPreviewExtenderImpl() {
+    }
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl getCaptureStage() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public ProcessorType getProcessorType() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public RequestUpdateProcessorImpl getRequestUpdatePreviewProcessor() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public void onDeInit() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        throw new RuntimeException("Stub, replace with implementation.");
+    }
+}
diff --git a/camera/extensions/src/main/java/androidx/camera/extensions/BeautyImageCaptureExtender.java b/camera/extensions/src/main/java/androidx/camera/extensions/BeautyImageCaptureExtender.java
new file mode 100644
index 0000000..e7dd18e
--- /dev/null
+++ b/camera/extensions/src/main/java/androidx/camera/extensions/BeautyImageCaptureExtender.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions;
+
+import android.util.Log;
+
+import androidx.camera.core.ImageCaptureConfig;
+import androidx.camera.extensions.impl.BeautyImageCaptureExtenderImpl;
+
+/**
+ * Load the OEM extension implementation for beauty effect type.
+ */
+public class BeautyImageCaptureExtender extends ImageCaptureExtender {
+    private static final String TAG = "BeautyICExtender";
+
+    /**
+     * Create a new instance of the beauty extender.
+     *
+     * @param builder Builder that will be used to create the configurations for the
+     * {@link androidx.camera.core.ImageCapture}.
+     */
+    public static BeautyImageCaptureExtender create(ImageCaptureConfig.Builder builder) {
+        try {
+            return new VendorBeautyImageCaptureExtender(builder);
+        } catch (NoClassDefFoundError e) {
+            Log.d(TAG, "No beauty image capture extender found. Falling back to default.");
+            return new DefaultBeautyImageCaptureExtender();
+        }
+    }
+
+    /** Empty implementation of beauty extender which does nothing. */
+    static class DefaultBeautyImageCaptureExtender extends BeautyImageCaptureExtender {
+        DefaultBeautyImageCaptureExtender() {
+        }
+
+        @Override
+        public boolean isExtensionAvailable() {
+            return false;
+        }
+
+        @Override
+        public void enableExtension() {
+        }
+    }
+
+    /** Beauty extender that calls into the vendor provided implementation. */
+    static class VendorBeautyImageCaptureExtender extends BeautyImageCaptureExtender {
+        private final BeautyImageCaptureExtenderImpl mImpl;
+
+        VendorBeautyImageCaptureExtender(ImageCaptureConfig.Builder builder) {
+            mImpl = new BeautyImageCaptureExtenderImpl();
+            init(builder, mImpl);
+        }
+    }
+
+    private BeautyImageCaptureExtender() {}
+}
diff --git a/camera/extensions/src/main/java/androidx/camera/extensions/BeautyPreviewExtender.java b/camera/extensions/src/main/java/androidx/camera/extensions/BeautyPreviewExtender.java
new file mode 100644
index 0000000..5f37e7d
--- /dev/null
+++ b/camera/extensions/src/main/java/androidx/camera/extensions/BeautyPreviewExtender.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions;
+
+import android.util.Log;
+
+import androidx.camera.core.PreviewConfig;
+import androidx.camera.extensions.impl.BeautyPreviewExtenderImpl;
+
+/**
+ * Load the OEM extension Preview implementation for beauty effect type.
+ */
+public class BeautyPreviewExtender extends PreviewExtender {
+    private static final String TAG = "BeautyPreviewExtender";
+
+    /**
+     * Create a new instance of the beauty extender.
+     *
+     * @param builder Builder that will be used to create the configurations for the
+     * {@link androidx.camera.core.Preview}.
+     */
+    public static BeautyPreviewExtender create(PreviewConfig.Builder builder) {
+        try {
+            return new VendorBeautyPreviewExtender(builder);
+        } catch (NoClassDefFoundError e) {
+            Log.d(TAG, "No beauty view finder extender found. Falling back to default.");
+            return new DefaultBeautyPreviewExtender();
+        }
+    }
+
+    /** Empty implementation of beauty extender which does nothing. */
+    static class DefaultBeautyPreviewExtender extends BeautyPreviewExtender {
+        DefaultBeautyPreviewExtender() {
+        }
+
+        @Override
+        public boolean isExtensionAvailable() {
+            return false;
+        }
+
+        @Override
+        public void enableExtension() {
+        }
+    }
+
+    /** Beauty extender that calls into the vendor provided implementation. */
+    static class VendorBeautyPreviewExtender extends BeautyPreviewExtender {
+        private final BeautyPreviewExtenderImpl mImpl;
+
+        VendorBeautyPreviewExtender(PreviewConfig.Builder builder) {
+            mImpl = new BeautyPreviewExtenderImpl();
+            init(builder, mImpl);
+        }
+    }
+
+    private BeautyPreviewExtender() {}
+}
diff --git a/camera/extensions/src/main/java/androidx/camera/extensions/ExtensionsManager.java b/camera/extensions/src/main/java/androidx/camera/extensions/ExtensionsManager.java
index 022b451..7e7e1c3 100644
--- a/camera/extensions/src/main/java/androidx/camera/extensions/ExtensionsManager.java
+++ b/camera/extensions/src/main/java/androidx/camera/extensions/ExtensionsManager.java
@@ -36,7 +36,17 @@
          * HDR mode that may get source pictures with different AE settings to generate a best
          * result.
          */
-        HDR
+        HDR,
+        /**
+         * Night mode is used for taking better still capture images under low-light situations,
+         * typically at night time.
+         */
+        NIGHT,
+        /**
+         * Beauty mode is used for taking still capture images that incorporate facial changes
+         * like skin tone, geometry, or retouching.
+         */
+        BEAUTY
     }
 
     /**
@@ -87,6 +97,12 @@
             case HDR:
                 extender = HdrImageCaptureExtender.create(builder);
                 break;
+            case NIGHT:
+                extender = NightImageCaptureExtender.create(builder);
+                break;
+            case BEAUTY:
+                extender = BeautyImageCaptureExtender.create(builder);
+                break;
             case NORMAL:
                 return true;
             default:
@@ -109,6 +125,12 @@
             case HDR:
                 extender = HdrPreviewExtender.create(builder);
                 break;
+            case NIGHT:
+                extender = NightPreviewExtender.create(builder);
+                break;
+            case BEAUTY:
+                extender = BeautyPreviewExtender.create(builder);
+                break;
             case NORMAL:
                 return true;
             default:
diff --git a/camera/extensions/src/main/java/androidx/camera/extensions/NightImageCaptureExtender.java b/camera/extensions/src/main/java/androidx/camera/extensions/NightImageCaptureExtender.java
new file mode 100644
index 0000000..96ce123
--- /dev/null
+++ b/camera/extensions/src/main/java/androidx/camera/extensions/NightImageCaptureExtender.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions;
+
+import android.util.Log;
+
+import androidx.camera.core.ImageCaptureConfig;
+import androidx.camera.extensions.impl.NightImageCaptureExtenderImpl;
+
+/**
+ * Load the OEM extension implementation for night effect type.
+ */
+public class NightImageCaptureExtender extends ImageCaptureExtender {
+    private static final String TAG = "NightICExtender";
+
+    /**
+     * Create a new instance of the night extender.
+     *
+     * @param builder Builder that will be used to create the configurations for the
+     * {@link androidx.camera.core.ImageCapture}.
+     */
+    public static NightImageCaptureExtender create(ImageCaptureConfig.Builder builder) {
+        try {
+            return new VendorNightImageCaptureExtender(builder);
+        } catch (NoClassDefFoundError e) {
+            Log.d(TAG, "No night image capture extender found. Falling back to default.");
+            return new DefaultNightImageCaptureExtender();
+        }
+    }
+
+    /** Empty implementation of night extender which does nothing. */
+    static class DefaultNightImageCaptureExtender extends NightImageCaptureExtender {
+        DefaultNightImageCaptureExtender() {
+        }
+
+        @Override
+        public boolean isExtensionAvailable() {
+            return false;
+        }
+
+        @Override
+        public void enableExtension() {
+        }
+    }
+
+    /** Night extender that calls into the vendor provided implementation. */
+    static class VendorNightImageCaptureExtender extends NightImageCaptureExtender {
+        private final NightImageCaptureExtenderImpl mImpl;
+
+        VendorNightImageCaptureExtender(ImageCaptureConfig.Builder builder) {
+            mImpl = new NightImageCaptureExtenderImpl();
+            init(builder, mImpl);
+        }
+    }
+
+    private NightImageCaptureExtender() {}
+}
diff --git a/camera/extensions/src/main/java/androidx/camera/extensions/NightPreviewExtender.java b/camera/extensions/src/main/java/androidx/camera/extensions/NightPreviewExtender.java
new file mode 100644
index 0000000..5d5d40e
--- /dev/null
+++ b/camera/extensions/src/main/java/androidx/camera/extensions/NightPreviewExtender.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions;
+
+import android.util.Log;
+
+import androidx.camera.core.PreviewConfig;
+import androidx.camera.extensions.impl.NightPreviewExtenderImpl;
+
+/**
+ * Load the OEM extension Preview implementation for night effect type.
+ */
+public class NightPreviewExtender extends PreviewExtender {
+    private static final String TAG = "NightPreviewExtender";
+
+    /**
+     * Create a new instance of the night extender.
+     *
+     * @param builder Builder that will be used to create the configurations for the
+     * {@link androidx.camera.core.Preview}.
+     */
+    public static NightPreviewExtender create(PreviewConfig.Builder builder) {
+        try {
+            return new VendorNightPreviewExtender(builder);
+        } catch (NoClassDefFoundError e) {
+            Log.d(TAG, "No night view finder extender found. Falling back to default.");
+            return new DefaultNightPreviewExtender();
+        }
+    }
+
+    /** Empty implementation of night extender which does nothing. */
+    static class DefaultNightPreviewExtender extends NightPreviewExtender {
+        DefaultNightPreviewExtender() {
+        }
+
+        @Override
+        public boolean isExtensionAvailable() {
+            return false;
+        }
+
+        @Override
+        public void enableExtension() {
+        }
+    }
+
+    /** Night extender that calls into the vendor provided implementation. */
+    static class VendorNightPreviewExtender extends NightPreviewExtender {
+        private final NightPreviewExtenderImpl mImpl;
+
+        VendorNightPreviewExtender(PreviewConfig.Builder builder) {
+            mImpl = new NightPreviewExtenderImpl();
+            init(builder, mImpl);
+        }
+    }
+
+    private NightPreviewExtender() {}
+}
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java
index ae0424d..5921cde 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java
@@ -39,10 +39,14 @@
 import androidx.camera.core.Preview;
 import androidx.camera.core.PreviewConfig;
 import androidx.camera.core.UseCase;
+import androidx.camera.extensions.BeautyImageCaptureExtender;
+import androidx.camera.extensions.BeautyPreviewExtender;
 import androidx.camera.extensions.BokehImageCaptureExtender;
 import androidx.camera.extensions.BokehPreviewExtender;
 import androidx.camera.extensions.HdrImageCaptureExtender;
 import androidx.camera.extensions.HdrPreviewExtender;
+import androidx.camera.extensions.NightImageCaptureExtender;
+import androidx.camera.extensions.NightPreviewExtender;
 import androidx.core.app.ActivityCompat;
 import androidx.core.content.ContextCompat;
 
@@ -111,6 +115,20 @@
             if (extender.isExtensionAvailable()) {
                 extender.enableExtension();
             }
+        } else if (mCurrentImageCaptureType == ImageCaptureType.IMAGE_CAPTURE_TYPE_NIGHT) {
+            Log.d(TAG, "Enabling the extended view finder in night mode.");
+
+            NightPreviewExtender extender = NightPreviewExtender.create(builder);
+            if (extender.isExtensionAvailable()) {
+                extender.enableExtension();
+            }
+        } else if (mCurrentImageCaptureType == ImageCaptureType.IMAGE_CAPTURE_TYPE_BEAUTY) {
+            Log.d(TAG, "Enabling the extended view finder in beauty mode.");
+
+            BeautyPreviewExtender extender = BeautyPreviewExtender.create(builder);
+            if (extender.isExtensionAvailable()) {
+                extender.enableExtension();
+            }
         }
 
         mPreview = new Preview(builder.build());
@@ -134,6 +152,8 @@
     enum ImageCaptureType {
         IMAGE_CAPTURE_TYPE_HDR,
         IMAGE_CAPTURE_TYPE_BOKEH,
+        IMAGE_CAPTURE_TYPE_NIGHT,
+        IMAGE_CAPTURE_TYPE_BEAUTY,
         IMAGE_CAPTURE_TYPE_DEFAULT,
         IMAGE_CAPTURE_TYPE_NONE,
     }
@@ -158,6 +178,14 @@
                                 enablePreview();
                                 break;
                             case IMAGE_CAPTURE_TYPE_BOKEH:
+                                enableImageCapture(ImageCaptureType.IMAGE_CAPTURE_TYPE_NIGHT);
+                                enablePreview();
+                                break;
+                            case IMAGE_CAPTURE_TYPE_NIGHT:
+                                enableImageCapture(ImageCaptureType.IMAGE_CAPTURE_TYPE_BEAUTY);
+                                enablePreview();
+                                break;
+                            case IMAGE_CAPTURE_TYPE_BEAUTY:
                                 enableImageCapture(ImageCaptureType.IMAGE_CAPTURE_TYPE_DEFAULT);
                                 enablePreview();
                                 break;
@@ -201,6 +229,20 @@
                     bokehImageCapture.enableExtension();
                 }
                 break;
+            case IMAGE_CAPTURE_TYPE_NIGHT:
+                NightImageCaptureExtender nightImageCapture = NightImageCaptureExtender.create(
+                        builder);
+                if (nightImageCapture.isExtensionAvailable()) {
+                    nightImageCapture.enableExtension();
+                }
+                break;
+            case IMAGE_CAPTURE_TYPE_BEAUTY:
+                BeautyImageCaptureExtender beautyImageCapture = BeautyImageCaptureExtender.create(
+                        builder);
+                if (beautyImageCapture.isExtensionAvailable()) {
+                    beautyImageCapture.enableExtension();
+                }
+                break;
             case IMAGE_CAPTURE_TYPE_DEFAULT:
                 break;
             case IMAGE_CAPTURE_TYPE_NONE:
diff --git a/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
new file mode 100755
index 0000000..dacb2aa
--- /dev/null
+++ b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.TotalCaptureResult;
+import android.media.Image;
+import android.media.ImageWriter;
+import android.os.Build;
+import android.util.Log;
+import android.util.Pair;
+import android.util.Size;
+import android.view.Surface;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Implementation for beauty image capture use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers
+ * don't need to implement this, unless this is used for related testing usage.
+ */
+public final class BeautyImageCaptureExtenderImpl implements ImageCaptureExtenderImpl {
+    private static final String TAG = "BeautyICExtender";
+    private static final int DEFAULT_STAGE_ID = 0;
+    private static final int SESSION_STAGE_ID = 101;
+
+    public BeautyImageCaptureExtenderImpl() {
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+    }
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        // Requires API 23 for ImageWriter
+        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
+    }
+
+    @Override
+    public List<CaptureStageImpl> getCaptureStages() {
+        // Placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+        List<CaptureStageImpl> captureStages = new ArrayList<>();
+        captureStages.add(captureStage);
+        return captureStages;
+    }
+
+    @Override
+    public CaptureProcessorImpl getCaptureProcessor() {
+        CaptureProcessorImpl captureProcessor =
+                new CaptureProcessorImpl() {
+                    private ImageWriter mImageWriter;
+
+                    @Override
+                    public void onOutputSurface(Surface surface, int imageFormat) {
+                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                            mImageWriter = ImageWriter.newInstance(surface, 1);
+                        }
+                    }
+
+                    @Override
+                    public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) {
+                        Log.d(TAG, "Started beauty CaptureProcessor");
+
+                        Pair<Image, TotalCaptureResult> result = results.get(DEFAULT_STAGE_ID);
+
+                        if (result == null) {
+                            Log.w(TAG,
+                                    "Unable to process since images does not contain all stages.");
+                            return;
+                        } else {
+                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                                Image image = mImageWriter.dequeueInputImage();
+
+                                // Do processing here
+                                ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer();
+                                ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer();
+                                ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer();
+
+                                // Sample here just simply copy/paste the capture image result
+                                yByteBuffer.put(result.first.getPlanes()[0].getBuffer());
+                                uByteBuffer.put(result.first.getPlanes()[2].getBuffer());
+                                vByteBuffer.put(result.first.getPlanes()[1].getBuffer());
+
+                                mImageWriter.queueInputImage(image);
+                            }
+                        }
+
+                        Log.d(TAG, "Completed beauty CaptureProcessor");
+                    }
+
+                    @Override
+                    public void onResolutionUpdate(Size size) {
+
+                    }
+
+                    @Override
+                    public void onImageFormatUpdate(int imageFormat) {
+
+                    }
+                };
+        return captureProcessor;
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+
+    }
+
+    @Override
+    public void onDeInit() {
+
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+
+    @Override
+    public int getMaxCaptureStage() {
+        return 3;
+    }
+}
diff --git a/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java
new file mode 100755
index 0000000..f3d553e
--- /dev/null
+++ b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+
+/**
+ * Implementation for beauty view finder use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers
+ * don't need to implement this, unless this is used for related testing usage.
+ */
+public final class BeautyPreviewExtenderImpl implements PreviewExtenderImpl {
+    private static final int DEFAULT_STAGE_ID = 0;
+    private static final int SESSION_STAGE_ID = 101;
+
+    public BeautyPreviewExtenderImpl() {
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+    }
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        // Implement the logic to check whether the extension function is supported or not.
+        return true;
+    }
+
+    @Override
+    public CaptureStageImpl getCaptureStage() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+
+    @Override
+    public ProcessorType getProcessorType() {
+        return ProcessorType.PROCESSOR_TYPE_REQUEST_UPDATE_ONLY;
+    }
+
+    @Override
+    public RequestUpdateProcessorImpl getRequestUpdatePreviewProcessor() {
+        return RequestUpdateProcessorImpls.noUpdateProcessor();
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+
+    }
+
+    @Override
+    public void onDeInit() {
+
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_NEGATIVE);
+
+        return captureStage;
+    }
+}
diff --git a/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
new file mode 100755
index 0000000..85c91e7
--- /dev/null
+++ b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.TotalCaptureResult;
+import android.media.Image;
+import android.media.ImageWriter;
+import android.os.Build;
+import android.util.Log;
+import android.util.Pair;
+import android.util.Size;
+import android.view.Surface;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Implementation for night image capture use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers
+ * don't need to implement this, unless this is used for related testing usage.
+ */
+public final class NightImageCaptureExtenderImpl implements ImageCaptureExtenderImpl {
+    private static final String TAG = "NightICExtender";
+    private static final int DEFAULT_STAGE_ID = 0;
+    private static final int SESSION_STAGE_ID = 101;
+
+    public NightImageCaptureExtenderImpl() {
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+    }
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        // Requires API 23 for ImageWriter
+        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
+    }
+
+    @Override
+    public List<CaptureStageImpl> getCaptureStages() {
+        // Placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+        List<CaptureStageImpl> captureStages = new ArrayList<>();
+        captureStages.add(captureStage);
+        return captureStages;
+    }
+
+    @Override
+    public CaptureProcessorImpl getCaptureProcessor() {
+        CaptureProcessorImpl captureProcessor =
+                new CaptureProcessorImpl() {
+                    private ImageWriter mImageWriter;
+
+                    @Override
+                    public void onOutputSurface(Surface surface, int imageFormat) {
+                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                            mImageWriter = ImageWriter.newInstance(surface, 1);
+                        }
+                    }
+
+                    @Override
+                    public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) {
+                        Log.d(TAG, "Started night CaptureProcessor");
+
+                        Pair<Image, TotalCaptureResult> result = results.get(DEFAULT_STAGE_ID);
+
+                        if (result == null) {
+                            Log.w(TAG,
+                                    "Unable to process since images does not contain all stages.");
+                            return;
+                        } else {
+                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                                Image image = mImageWriter.dequeueInputImage();
+
+                                // Do processing here
+                                ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer();
+                                ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer();
+                                ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer();
+
+                                // Sample here just simply copy/paste the capture image result
+                                yByteBuffer.put(result.first.getPlanes()[0].getBuffer());
+                                uByteBuffer.put(result.first.getPlanes()[2].getBuffer());
+                                vByteBuffer.put(result.first.getPlanes()[1].getBuffer());
+
+                                mImageWriter.queueInputImage(image);
+                            }
+                        }
+
+                        Log.d(TAG, "Completed night CaptureProcessor");
+                    }
+
+                    @Override
+                    public void onResolutionUpdate(Size size) {
+
+                    }
+
+                    @Override
+                    public void onImageFormatUpdate(int imageFormat) {
+
+                    }
+                };
+        return captureProcessor;
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+
+    }
+
+    @Override
+    public void onDeInit() {
+
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+
+    @Override
+    public int getMaxCaptureStage() {
+        return 3;
+    }
+}
diff --git a/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java
new file mode 100755
index 0000000..f9925c8
--- /dev/null
+++ b/camera/integration-tests/extensionstestlib/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2019 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 androidx.camera.extensions.impl;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+
+/**
+ * Implementation for night view finder use case.
+ *
+ * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers
+ * don't need to implement this, unless this is used for related testing usage.
+ */
+public final class NightPreviewExtenderImpl implements PreviewExtenderImpl {
+    private static final int DEFAULT_STAGE_ID = 0;
+    private static final int SESSION_STAGE_ID = 101;
+
+    public NightPreviewExtenderImpl() {
+    }
+
+    @Override
+    public void enableExtension(String cameraId, CameraCharacteristics cameraCharacteristics) {
+    }
+
+    @Override
+    public boolean isExtensionAvailable(String cameraId,
+            CameraCharacteristics cameraCharacteristics) {
+        // Implement the logic to check whether the extension function is supported or not.
+        return true;
+    }
+
+    @Override
+    public CaptureStageImpl getCaptureStage() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+
+    @Override
+    public ProcessorType getProcessorType() {
+        return ProcessorType.PROCESSOR_TYPE_REQUEST_UPDATE_ONLY;
+    }
+
+    @Override
+    public RequestUpdateProcessorImpl getRequestUpdatePreviewProcessor() {
+        return RequestUpdateProcessorImpls.noUpdateProcessor();
+    }
+
+    @Override
+    public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics,
+            Context context) {
+
+    }
+
+    @Override
+    public void onDeInit() {
+
+    }
+
+    @Override
+    public CaptureStageImpl onPresetSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onEnableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+
+    @Override
+    public CaptureStageImpl onDisableSession() {
+        // Set the necessary CaptureRequest parameters via CaptureStage, here we use some
+        // placeholder set of CaptureRequest.Key values
+        SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID);
+        captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_EFFECT_MODE,
+                CaptureRequest.CONTROL_EFFECT_MODE_MONO);
+
+        return captureStage;
+    }
+}
diff --git a/car/core/api/1.0.0-alpha8.txt b/car/core/api/1.0.0-alpha8.txt
index 4bac96d..173332a 100644
--- a/car/core/api/1.0.0-alpha8.txt
+++ b/car/core/api/1.0.0-alpha8.txt
@@ -5,22 +5,22 @@
   }
 
   public static final class CarAlertDialog.Builder {
-    ctor public CarAlertDialog.Builder(android.content.Context!);
+    ctor public CarAlertDialog.Builder(android.content.Context);
     method public androidx.car.app.CarAlertDialog create();
     method public androidx.car.app.CarAlertDialog.Builder setBody(@StringRes int);
-    method public androidx.car.app.CarAlertDialog.Builder setBody(CharSequence!);
+    method public androidx.car.app.CarAlertDialog.Builder setBody(CharSequence?);
     method public androidx.car.app.CarAlertDialog.Builder setBodyMovementMethod(android.text.method.MovementMethod?);
     method public androidx.car.app.CarAlertDialog.Builder setCancelable(boolean);
     method public androidx.car.app.CarAlertDialog.Builder setHeaderIcon(@DrawableRes int);
     method public androidx.car.app.CarAlertDialog.Builder setHeaderIcon(android.graphics.drawable.Icon?);
     method public androidx.car.app.CarAlertDialog.Builder setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener?);
-    method public androidx.car.app.CarAlertDialog.Builder setNegativeButton(CharSequence!, android.content.DialogInterface.OnClickListener?);
-    method public androidx.car.app.CarAlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener!);
-    method public androidx.car.app.CarAlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener!);
+    method public androidx.car.app.CarAlertDialog.Builder setNegativeButton(CharSequence, android.content.DialogInterface.OnClickListener?);
+    method public androidx.car.app.CarAlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener?);
+    method public androidx.car.app.CarAlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener?);
     method public androidx.car.app.CarAlertDialog.Builder setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener?);
-    method public androidx.car.app.CarAlertDialog.Builder setPositiveButton(CharSequence!, android.content.DialogInterface.OnClickListener?);
+    method public androidx.car.app.CarAlertDialog.Builder setPositiveButton(CharSequence, android.content.DialogInterface.OnClickListener?);
     method public androidx.car.app.CarAlertDialog.Builder setTitle(@StringRes int);
-    method public androidx.car.app.CarAlertDialog.Builder setTitle(CharSequence!);
+    method public androidx.car.app.CarAlertDialog.Builder setTitle(CharSequence?);
   }
 
   public class CarListDialog extends android.app.Dialog {
@@ -68,7 +68,7 @@
 
   public static class CarSingleChoiceDialog.Item {
     ctor public CarSingleChoiceDialog.Item(CharSequence);
-    ctor public CarSingleChoiceDialog.Item(CharSequence, CharSequence?);
+    ctor public CarSingleChoiceDialog.Item(CharSequence, CharSequence);
   }
 
 }
@@ -119,7 +119,7 @@
 package androidx.car.util {
 
   public class CarUxRestrictionsHelper {
-    ctor public CarUxRestrictionsHelper(android.content.Context!, androidx.car.uxrestrictions.OnUxRestrictionsChangedListener);
+    ctor public CarUxRestrictionsHelper(android.content.Context, androidx.car.uxrestrictions.OnUxRestrictionsChangedListener);
     method public androidx.car.uxrestrictions.CarUxRestrictions getCurrentCarUxRestrictions();
     method public void start();
     method public void stop();
diff --git a/car/core/api/current.txt b/car/core/api/current.txt
index 4bac96d..173332a 100644
--- a/car/core/api/current.txt
+++ b/car/core/api/current.txt
@@ -5,22 +5,22 @@
   }
 
   public static final class CarAlertDialog.Builder {
-    ctor public CarAlertDialog.Builder(android.content.Context!);
+    ctor public CarAlertDialog.Builder(android.content.Context);
     method public androidx.car.app.CarAlertDialog create();
     method public androidx.car.app.CarAlertDialog.Builder setBody(@StringRes int);
-    method public androidx.car.app.CarAlertDialog.Builder setBody(CharSequence!);
+    method public androidx.car.app.CarAlertDialog.Builder setBody(CharSequence?);
     method public androidx.car.app.CarAlertDialog.Builder setBodyMovementMethod(android.text.method.MovementMethod?);
     method public androidx.car.app.CarAlertDialog.Builder setCancelable(boolean);
     method public androidx.car.app.CarAlertDialog.Builder setHeaderIcon(@DrawableRes int);
     method public androidx.car.app.CarAlertDialog.Builder setHeaderIcon(android.graphics.drawable.Icon?);
     method public androidx.car.app.CarAlertDialog.Builder setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener?);
-    method public androidx.car.app.CarAlertDialog.Builder setNegativeButton(CharSequence!, android.content.DialogInterface.OnClickListener?);
-    method public androidx.car.app.CarAlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener!);
-    method public androidx.car.app.CarAlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener!);
+    method public androidx.car.app.CarAlertDialog.Builder setNegativeButton(CharSequence, android.content.DialogInterface.OnClickListener?);
+    method public androidx.car.app.CarAlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener?);
+    method public androidx.car.app.CarAlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener?);
     method public androidx.car.app.CarAlertDialog.Builder setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener?);
-    method public androidx.car.app.CarAlertDialog.Builder setPositiveButton(CharSequence!, android.content.DialogInterface.OnClickListener?);
+    method public androidx.car.app.CarAlertDialog.Builder setPositiveButton(CharSequence, android.content.DialogInterface.OnClickListener?);
     method public androidx.car.app.CarAlertDialog.Builder setTitle(@StringRes int);
-    method public androidx.car.app.CarAlertDialog.Builder setTitle(CharSequence!);
+    method public androidx.car.app.CarAlertDialog.Builder setTitle(CharSequence?);
   }
 
   public class CarListDialog extends android.app.Dialog {
@@ -68,7 +68,7 @@
 
   public static class CarSingleChoiceDialog.Item {
     ctor public CarSingleChoiceDialog.Item(CharSequence);
-    ctor public CarSingleChoiceDialog.Item(CharSequence, CharSequence?);
+    ctor public CarSingleChoiceDialog.Item(CharSequence, CharSequence);
   }
 
 }
@@ -119,7 +119,7 @@
 package androidx.car.util {
 
   public class CarUxRestrictionsHelper {
-    ctor public CarUxRestrictionsHelper(android.content.Context!, androidx.car.uxrestrictions.OnUxRestrictionsChangedListener);
+    ctor public CarUxRestrictionsHelper(android.content.Context, androidx.car.uxrestrictions.OnUxRestrictionsChangedListener);
     method public androidx.car.uxrestrictions.CarUxRestrictions getCurrentCarUxRestrictions();
     method public void start();
     method public void stop();
diff --git a/car/core/src/main/java/androidx/car/app/CarAlertDialog.java b/car/core/src/main/java/androidx/car/app/CarAlertDialog.java
index 7e44e16..52e027c 100644
--- a/car/core/src/main/java/androidx/car/app/CarAlertDialog.java
+++ b/car/core/src/main/java/androidx/car/app/CarAlertDialog.java
@@ -369,8 +369,10 @@
      * multiple {@code TouchDelegate}s and will delegate out touch events to each.
      */
     private static final class ButtonPanelTouchDelegate extends TouchDelegate {
-        @Nullable private TouchDelegate mPositiveButtonDelegate;
-        @Nullable private TouchDelegate mNegativeButtonDelegate;
+        @Nullable
+        private TouchDelegate mPositiveButtonDelegate;
+        @Nullable
+        private TouchDelegate mNegativeButtonDelegate;
 
         ButtonPanelTouchDelegate(View view) {
             super(new Rect(), view);
@@ -442,7 +444,7 @@
          *
          * @param context The {@code Context} that the dialog is to be created in.
          */
-        public Builder(Context context) {
+        public Builder(@NonNull Context context) {
             mContext = context;
         }
 
@@ -491,7 +493,7 @@
          * @return This {@code Builder} object to allow for chaining of calls.
          */
         @NonNull
-        public Builder setTitle(CharSequence title) {
+        public Builder setTitle(@Nullable CharSequence title) {
             mTitle = title;
             return this;
         }
@@ -515,7 +517,7 @@
          * @return This {@code Builder} object to allow for chaining of calls.
          */
         @NonNull
-        public Builder setBody(CharSequence body) {
+        public Builder setBody(@Nullable CharSequence body) {
             mBody = body;
             return this;
         }
@@ -523,7 +525,7 @@
         /**
          * Sets the {@link MovementMethod} to be applied on the body text of this alert dialog.
          *
-         * @param  movementMethod The {@code MovementMethod} to apply or {@code null}.
+         * @param movementMethod The {@code MovementMethod} to apply or {@code null}.
          * @return This {@code Builder} object to allow for chaining of calls.
          * @see TextView#setMovementMethod(MovementMethod)
          */
@@ -541,7 +543,7 @@
          * <p>The positive button should be used to accept and continue with the action (e.g.
          * an "OK" action).
          *
-         * @param textId The resource id of the string to be used for the positive button text.
+         * @param textId   The resource id of the string to be used for the positive button text.
          * @param listener A {@link android.content.DialogInterface.OnClickListener} to be invoked
          *                 when the button is clicked. Can be {@code null} to represent no listener.
          * @return This {@code Builder} object to allow for chaining of calls.
@@ -562,13 +564,14 @@
          * <p>The positive button should be used to accept and continue with the action (e.g.
          * an "OK" action).
          *
-         * @param text The string to be used for the positive button text.
+         * @param text     The string to be used for the positive button text.
          * @param listener A {@link android.content.DialogInterface.OnClickListener} to be invoked
          *                 when the button is clicked. Can be {@code null} to represent no listener.
          * @return This {@code Builder} object to allow for chaining of calls.
          */
         @NonNull
-        public Builder setPositiveButton(CharSequence text, @Nullable OnClickListener listener) {
+        public Builder setPositiveButton(@NonNull CharSequence text,
+                @Nullable OnClickListener listener) {
             mPositiveButtonText = text;
             mPositiveButtonListener = listener;
             return this;
@@ -581,7 +584,7 @@
          *
          * <p>The negative button should be used to cancel any actions the dialog represents.
          *
-         * @param textId The resource id of the string to be used for the negative button text.
+         * @param textId   The resource id of the string to be used for the negative button text.
          * @param listener A {@link android.content.DialogInterface.OnClickListener} to be invoked
          *                 when the button is clicked. Can be {@code null} to represent no listener.
          * @return This {@code Builder} object to allow for chaining of calls.
@@ -601,13 +604,14 @@
          *
          * <p>The negative button should be used to cancel any actions the dialog represents.
          *
-         * @param text The string to be used for the negative button text.
+         * @param text     The string to be used for the negative button text.
          * @param listener A {@link android.content.DialogInterface.OnClickListener} to be invoked
          *                 when the button is clicked. Can be {@code null} to represent no listener.
          * @return This {@code Builder} object to allow for chaining of calls.
          */
         @NonNull
-        public Builder setNegativeButton(CharSequence text, @Nullable OnClickListener listener) {
+        public Builder setNegativeButton(@NonNull CharSequence text,
+                @Nullable OnClickListener listener) {
             mNegativeButtonText = text;
             mNegativeButtonListener = listener;
             return this;
@@ -634,12 +638,11 @@
          *
          * @param onCancelListener The listener to be invoked when this dialog is canceled.
          * @return This {@code Builder} object to allow for chaining of calls.
-         *
          * @see #setCancelable(boolean)
          * @see #setOnDismissListener(OnDismissListener)
          */
         @NonNull
-        public Builder setOnCancelListener(OnCancelListener onCancelListener) {
+        public Builder setOnCancelListener(@Nullable OnCancelListener onCancelListener) {
             mOnCancelListener = onCancelListener;
             return this;
         }
@@ -650,7 +653,7 @@
          * @return This {@code Builder} object to allow for chaining of calls.
          */
         @NonNull
-        public Builder setOnDismissListener(OnDismissListener onDismissListener) {
+        public Builder setOnDismissListener(@Nullable OnDismissListener onDismissListener) {
             mOnDismissListener = onDismissListener;
             return this;
         }
diff --git a/car/core/src/main/java/androidx/car/app/CarSingleChoiceDialog.java b/car/core/src/main/java/androidx/car/app/CarSingleChoiceDialog.java
index 23bef3c..ea91bd1 100644
--- a/car/core/src/main/java/androidx/car/app/CarSingleChoiceDialog.java
+++ b/car/core/src/main/java/androidx/car/app/CarSingleChoiceDialog.java
@@ -256,7 +256,7 @@
          * @param title The title of the item. This value must be non-empty.
          */
         public Item(@NonNull CharSequence title) {
-            this(title,  /* body= */ null);
+            this(title,  /* body= */ "");
         }
 
 
@@ -266,7 +266,7 @@
          * @param title The title of the item. This value must be non-empty.
          * @param body  The secondary body text of the item.
          */
-        public Item(@NonNull CharSequence title, @Nullable CharSequence body) {
+        public Item(@NonNull CharSequence title, @NonNull CharSequence body) {
             if (TextUtils.isEmpty(title)) {
                 throw new IllegalArgumentException("Title cannot be empty.");
             }
diff --git a/car/core/src/main/java/androidx/car/util/CarUxRestrictionsHelper.java b/car/core/src/main/java/androidx/car/util/CarUxRestrictionsHelper.java
index 65ad2f8..e4bb64a 100644
--- a/car/core/src/main/java/androidx/car/util/CarUxRestrictionsHelper.java
+++ b/car/core/src/main/java/androidx/car/util/CarUxRestrictionsHelper.java
@@ -41,14 +41,16 @@
     // mCar is created in the constructor, but can be null if connection to the car is not
     // successful.
     @SuppressWarnings("WeakerAccess") /* synthetic access */
-    @Nullable final Car mCar;
+    @Nullable
+    final Car mCar;
     @SuppressWarnings("WeakerAccess") /* synthetic access */
-    @Nullable CarUxRestrictionsManager mCarUxRestrictionsManager;
+    @Nullable
+    CarUxRestrictionsManager mCarUxRestrictionsManager;
 
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     final OnUxRestrictionsChangedListener mListener;
 
-    public CarUxRestrictionsHelper(Context context,
+    public CarUxRestrictionsHelper(@NonNull Context context,
             @NonNull OnUxRestrictionsChangedListener listener) {
         if (listener == null) {
             throw new IllegalArgumentException("Listener cannot be null.");
@@ -63,7 +65,9 @@
      * <p>This method can be called from {@code Activity}'s {@link Activity#onStart()}, or at the
      * time of construction.
      *
-     * <p>This method must be accompanied with a matching {@link #stop()} to avoid leak.
+     * <p>This method must be accompanied with a matching {@link #stop()} to avoid leak. After
+     * {@link #start()} has been called, calling {@link #start()} subsequent times without
+     * calling {@link #stop()} will result in a no-op.
      */
     public void start() {
         try {
@@ -83,7 +87,8 @@
      * time of being discarded.
      *
      * <p>After {@link #stop()} has been called, {@link #start()} can be called again to resume
-     * monitoring car ux restrictions change.
+     * monitoring car ux restrictions change. Calling {@link #stop()} without calling
+     * {@link #start()} will result in a no-op.
      */
     public void stop() {
         if (mCarUxRestrictionsManager != null) {
diff --git a/car/moderator/res/values-as/strings.xml b/car/moderator/res/values-as/strings.xml
new file mode 100644
index 0000000..ad8b096
--- /dev/null
+++ b/car/moderator/res/values-as/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2018 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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="speed_bump_lockout_message" msgid="5540717186175632753">"গাড়ী চলোৱাত ধ্যান দিয়ক"</string>
+</resources>
diff --git a/compose/plugins/cli-tests/build.gradle b/compose/plugins/cli-tests/build.gradle
index 8b80439..9261160 100644
--- a/compose/plugins/cli-tests/build.gradle
+++ b/compose/plugins/cli-tests/build.gradle
@@ -57,7 +57,7 @@
         unitTests.all {
             // There is only one version of the compose plugin built so the debug tests are
             // sufficient as they test that one version
-            if (it.name == 'testReleaseUnitTest') {
+            if (it.name == 'testReleaseUnitTest' || it.name == 'testDebugUnitTest') {
                 filter {
                     exclude '*'
                 }
diff --git a/core/api/restricted_1.1.0-beta02.txt b/core/api/restricted_1.1.0-beta02.txt
index 9f724f4..62d67c7 100644
--- a/core/api/restricted_1.1.0-beta02.txt
+++ b/core/api/restricted_1.1.0-beta02.txt
@@ -129,14 +129,15 @@
     ctor @RequiresApi(25) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ShortcutInfoCompat.Builder(android.content.Context, android.content.pm.ShortcutInfo);
   }
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaver {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ShortcutInfoCompatSaver<T> {
     ctor public ShortcutInfoCompatSaver();
-    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
+    method @AnyThread public abstract T! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
     method @WorkerThread public java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>! getShortcuts() throws java.lang.Exception;
-    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeAllShortcuts();
-    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeShortcuts(java.util.List<java.lang.String!>!);
+    method @AnyThread public abstract T! removeAllShortcuts();
+    method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
+
 }
 
 package androidx.core.content.res {
diff --git a/core/api/restricted_current.txt b/core/api/restricted_current.txt
index 9f724f4..62d67c7 100644
--- a/core/api/restricted_current.txt
+++ b/core/api/restricted_current.txt
@@ -129,14 +129,15 @@
     ctor @RequiresApi(25) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ShortcutInfoCompat.Builder(android.content.Context, android.content.pm.ShortcutInfo);
   }
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaver {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ShortcutInfoCompatSaver<T> {
     ctor public ShortcutInfoCompatSaver();
-    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
+    method @AnyThread public abstract T! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
     method @WorkerThread public java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>! getShortcuts() throws java.lang.Exception;
-    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeAllShortcuts();
-    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeShortcuts(java.util.List<java.lang.String!>!);
+    method @AnyThread public abstract T! removeAllShortcuts();
+    method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
+
 }
 
 package androidx.core.content.res {
diff --git a/core/build.gradle b/core/build.gradle
index 4b5c603..03fc3862 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -13,8 +13,6 @@
     implementation("androidx.collection:collection:1.0.0")
     api(ARCH_LIFECYCLE_RUNTIME, libs.exclude_annotations_transitive)
     api(project(":versionedparcelable"))
-    api(GUAVA_LISTENABLE_FUTURE)
-    implementation(project(":concurrent:concurrent-futures"))
 
     androidTestImplementation(KOTLIN_STDLIB)
     androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
diff --git a/core/res/values-as/strings.xml b/core/res/values-as/strings.xml
new file mode 100644
index 0000000..3039039
--- /dev/null
+++ b/core/res/values-as/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2017 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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="status_bar_notification_info_overflow" msgid="8106346172024741305">"৯৯৯+"</string>
+</resources>
diff --git a/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompatSaver.java b/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompatSaver.java
index 4bda3a7..caac3a7 100644
--- a/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompatSaver.java
+++ b/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompatSaver.java
@@ -16,14 +16,12 @@
 
 package androidx.core.content.pm;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
 import androidx.annotation.AnyThread;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.WorkerThread;
-import androidx.concurrent.futures.ResolvableFuture;
-
-import com.google.common.util.concurrent.ListenableFuture;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,30 +33,41 @@
  * @hide
  */
 @RestrictTo(LIBRARY_GROUP_PREFIX)
-public class ShortcutInfoCompatSaver {
+public abstract class ShortcutInfoCompatSaver<T> {
     @AnyThread
-    public ListenableFuture<Void> addShortcuts(List<ShortcutInfoCompat> shortcuts) {
-        final ResolvableFuture<Void> result = ResolvableFuture.create();
-        result.set(null);
-        return result;
-    }
+    public abstract T addShortcuts(List<ShortcutInfoCompat> shortcuts);
 
     @AnyThread
-    public ListenableFuture<Void> removeShortcuts(List<String> shortcutIds) {
-        final ResolvableFuture<Void> result = ResolvableFuture.create();
-        result.set(null);
-        return result;
-    }
+    public abstract T removeShortcuts(List<String> shortcutIds);
 
     @AnyThread
-    public ListenableFuture<Void> removeAllShortcuts() {
-        final ResolvableFuture<Void> result = ResolvableFuture.create();
-        result.set(null);
-        return result;
-    }
+    public abstract T removeAllShortcuts();
 
     @WorkerThread
     public List<ShortcutInfoCompat> getShortcuts() throws Exception {
         return new ArrayList<>();
     }
+
+    /**
+     * Implementation that does nothing and returns null from asynchronous methods.
+     *
+     * @hide
+     */
+    @RestrictTo(LIBRARY)
+    public static class NoopImpl extends ShortcutInfoCompatSaver<Void> {
+        @Override
+        public Void addShortcuts(List<ShortcutInfoCompat> shortcuts) {
+            return null;
+        }
+
+        @Override
+        public Void removeShortcuts(List<String> shortcutIds) {
+            return null;
+        }
+
+        @Override
+        public Void removeAllShortcuts() {
+            return null;
+        }
+    }
 }
diff --git a/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java b/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java
index fc7e4ae..509eb17 100644
--- a/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java
+++ b/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java
@@ -62,7 +62,7 @@
      * If fails to load an implementation via reflection, will use the default implementation which
      * is no-op to avoid unnecessary disk I/O.
      */
-    private static volatile ShortcutInfoCompatSaver sShortcutInfoCompatSaver = null;
+    private static volatile ShortcutInfoCompatSaver<?> sShortcutInfoCompatSaver = null;
 
     private ShortcutManagerCompat() {
         /* Hide constructor */
@@ -298,7 +298,7 @@
 
             if (sShortcutInfoCompatSaver == null) {
                 // Implementation not available. Instantiate to the default no-op impl.
-                sShortcutInfoCompatSaver = new ShortcutInfoCompatSaver();
+                sShortcutInfoCompatSaver = new ShortcutInfoCompatSaver.NoopImpl();
             }
         }
         return sShortcutInfoCompatSaver;
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/DialogFragmentDismissTest.kt b/fragment/src/androidTest/java/androidx/fragment/app/DialogFragmentDismissTest.kt
index c53870c..51ca384 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/DialogFragmentDismissTest.kt
+++ b/fragment/src/androidTest/java/androidx/fragment/app/DialogFragmentDismissTest.kt
@@ -22,8 +22,8 @@
 import android.os.Bundle
 import android.os.Looper
 import androidx.fragment.app.test.EmptyFragmentTestActivity
-import androidx.lifecycle.GenericLifecycleObserver
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.test.filters.LargeTest
 import androidx.test.rule.ActivityTestRule
 import com.google.common.truth.Truth.assertWithMessage
@@ -110,7 +110,7 @@
         var onDismissCalledCount = 0
         val countDownLatch = CountDownLatch(3)
         activityTestRule.runOnUiThread {
-            fragment.lifecycle.addObserver(GenericLifecycleObserver { _, event ->
+            fragment.lifecycle.addObserver(LifecycleEventObserver { _, event ->
                 if (event == Lifecycle.Event.ON_STOP) {
                     val dialog = fragment.dialog
                     dialogIsNonNull = dialog != null
diff --git a/fragment/src/main/java/androidx/fragment/app/Fragment.java b/fragment/src/main/java/androidx/fragment/app/Fragment.java
index 8e77d30c..3428c69e 100644
--- a/fragment/src/main/java/androidx/fragment/app/Fragment.java
+++ b/fragment/src/main/java/androidx/fragment/app/Fragment.java
@@ -461,7 +461,8 @@
         if (Build.VERSION.SDK_INT >= 19) {
             mLifecycleRegistry.addObserver(new GenericLifecycleObserver() {
                 @Override
-                public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+                public void onStateChanged(@NonNull LifecycleOwner source,
+                        @NonNull Lifecycle.Event event) {
                     if (event == Lifecycle.Event.ON_STOP) {
                         if (mView != null) {
                             mView.cancelPendingInputEvents();
diff --git a/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt b/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
index d8b17be..5bf786e 100644
--- a/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
+++ b/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
@@ -23,9 +23,9 @@
 import androidx.fragment.app.FragmentFactory
 import androidx.fragment.testing.test.R.id.view_tag_id
 import androidx.fragment.testing.test.R.style.ThemedFragmentTheme
-import androidx.lifecycle.GenericLifecycleObserver
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.Lifecycle.State
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.test.core.app.ApplicationProvider.getApplicationContext
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
@@ -198,7 +198,7 @@
                         fragment.requireView().setTag(view_tag_id, "fakeNavController")
                     }
                 }
-                fragment.lifecycle.addObserver(GenericLifecycleObserver { _, event ->
+                fragment.lifecycle.addObserver(LifecycleEventObserver { _, event ->
                     if (event == Lifecycle.Event.ON_START) {
                         tagSetBeforeOnStart =
                             fragment.requireView().getTag(view_tag_id) == "fakeNavController"
diff --git a/leanback/src/main/res/values-as/strings.xml b/leanback/src/main/res/values-as/strings.xml
index eb3b2b0..05b84d6 100644
--- a/leanback/src/main/res/values-as/strings.xml
+++ b/leanback/src/main/res/values-as/strings.xml
@@ -49,7 +49,7 @@
     <string name="lb_playback_controls_closed_captioning_disable" msgid="5508271941331836786">"ছাব-টাইটেল অক্ষম কৰক"</string>
     <string name="lb_playback_controls_picture_in_picture" msgid="8800305194045609275">"চিত্ৰৰ ভিতৰত চিত্ৰ ম\'ড আৰম্ভ কৰক"</string>
     <string name="lb_playback_time_separator" msgid="6549544638083578695">"/"</string>
-    <string name="lb_playback_controls_shown" msgid="7794717158616536936">"মিডিয়াৰ নিয়ন্ত্ৰণসমূহ দেখুওৱা হ\'ল"</string>
+    <string name="lb_playback_controls_shown" msgid="7794717158616536936">"মিডিয়াৰ নিয়ন্ত্ৰণসমূহ দেখুওৱা হ’ল"</string>
     <string name="lb_playback_controls_hidden" msgid="619396299825306757">"মিডিয়াৰ নিয়ন্ত্ৰণসমূহ লুকুৱাই ৰখা হৈছে, দেখুওৱাবলৈ ডি-পেডত টিপক"</string>
     <string name="lb_guidedaction_finish_title" msgid="7747913934287176843">"সমাপ্ত"</string>
     <string name="lb_guidedaction_continue_title" msgid="1122271825827282965">"অব্যাহত ৰাখক"</string>
diff --git a/leanback/src/main/res/values-bs/strings.xml b/leanback/src/main/res/values-bs/strings.xml
index dbdfdea..6c429a0 100644
--- a/leanback/src/main/res/values-bs/strings.xml
+++ b/leanback/src/main/res/values-bs/strings.xml
@@ -55,5 +55,5 @@
     <string name="lb_guidedaction_continue_title" msgid="1122271825827282965">"Nastavi"</string>
     <string name="lb_media_player_error" msgid="8748646000835486516">"Kôd greške MediaPlayera %1$d dodatno %2$d"</string>
     <string name="lb_onboarding_get_started" msgid="7674487829030291492">"ZAPOČNITE"</string>
-    <string name="lb_onboarding_accessibility_next" msgid="4213611627196077555">"Dalje"</string>
+    <string name="lb_onboarding_accessibility_next" msgid="4213611627196077555">"Naprijed"</string>
 </resources>
diff --git a/leanback/src/main/res/values-eu/strings.xml b/leanback/src/main/res/values-eu/strings.xml
index 72c433f..50bdcaf 100644
--- a/leanback/src/main/res/values-eu/strings.xml
+++ b/leanback/src/main/res/values-eu/strings.xml
@@ -55,5 +55,5 @@
     <string name="lb_guidedaction_continue_title" msgid="1122271825827282965">"Egin aurrera"</string>
     <string name="lb_media_player_error" msgid="8748646000835486516">"MediaPlayer errore-kodea: %1$d (%2$d gehigarria)"</string>
     <string name="lb_onboarding_get_started" msgid="7674487829030291492">"HASI ERABILTZEN"</string>
-    <string name="lb_onboarding_accessibility_next" msgid="4213611627196077555">"Aurrera"</string>
+    <string name="lb_onboarding_accessibility_next" msgid="4213611627196077555">"Hurrengoa"</string>
 </resources>
diff --git a/leanback/src/main/res/values-iw/strings.xml b/leanback/src/main/res/values-iw/strings.xml
index 7f02b2e..d31a805 100644
--- a/leanback/src/main/res/values-iw/strings.xml
+++ b/leanback/src/main/res/values-iw/strings.xml
@@ -39,8 +39,8 @@
     <string name="lb_playback_controls_thumb_down" msgid="5075744418630733006">"ביטול בחירה בסימון \'לא אהבתי\'"</string>
     <string name="lb_playback_controls_thumb_down_outline" msgid="2847309435442474470">"בחירה בסימון \'לא אהבתי\'"</string>
     <string name="lb_playback_controls_repeat_none" msgid="5812341701962930499">"אל תחזור על כלום"</string>
-    <string name="lb_playback_controls_repeat_all" msgid="5164826436271322261">"חזור על הכול"</string>
-    <string name="lb_playback_controls_repeat_one" msgid="7675097479246139440">"חזור על פריט אחד"</string>
+    <string name="lb_playback_controls_repeat_all" msgid="5164826436271322261">"חזרה על הכל"</string>
+    <string name="lb_playback_controls_repeat_one" msgid="7675097479246139440">"חזרה על פריט אחד"</string>
     <string name="lb_playback_controls_shuffle_enable" msgid="7809089255981448519">"הפעלת ערבוב"</string>
     <string name="lb_playback_controls_shuffle_disable" msgid="8182435535948303910">"השבתת ערבוב"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="1862669142355962638">"הפעלת איכות גבוהה"</string>
diff --git a/leanback/src/main/res/values-ne/strings.xml b/leanback/src/main/res/values-ne/strings.xml
index 416fc65..5cf37cd 100644
--- a/leanback/src/main/res/values-ne/strings.xml
+++ b/leanback/src/main/res/values-ne/strings.xml
@@ -47,7 +47,7 @@
     <string name="lb_playback_controls_high_quality_disable" msgid="3000046054608531995">"उच्च गुणस्तरलाई असक्षम पार्नुहोस्"</string>
     <string name="lb_playback_controls_closed_captioning_enable" msgid="3934392140182327163">"उप शीर्षकहरू देखाउने सुविधालाई सक्षम पार्नुहोस्"</string>
     <string name="lb_playback_controls_closed_captioning_disable" msgid="5508271941331836786">"उप शीर्षकहरू देखाउने सुविधालाई असक्षम पार्नुहोस्"</string>
-    <string name="lb_playback_controls_picture_in_picture" msgid="8800305194045609275">"तस्बिरभित्र तस्बिर नामक मोडमा प्रविष्ट गर्नुहोस्"</string>
+    <string name="lb_playback_controls_picture_in_picture" msgid="8800305194045609275">"तस्बिरभित्र तस्बिर नामक मोडमा प्रविष्टि गर्नुहोस्"</string>
     <string name="lb_playback_time_separator" msgid="6549544638083578695">"/"</string>
     <string name="lb_playback_controls_shown" msgid="7794717158616536936">"मिडियाका नियन्त्रणहरू देखाइएका छन्"</string>
     <string name="lb_playback_controls_hidden" msgid="619396299825306757">"मिडियाका नियन्त्रणहरूलाई लुकाइएको छ, देखाउनका लागि d-pad नामक बटन थिच्नुहोस्"</string>
diff --git a/leanback/src/main/res/values-ta/strings.xml b/leanback/src/main/res/values-ta/strings.xml
index 10c84ca..d0b2641 100644
--- a/leanback/src/main/res/values-ta/strings.xml
+++ b/leanback/src/main/res/values-ta/strings.xml
@@ -41,8 +41,8 @@
     <string name="lb_playback_controls_repeat_none" msgid="5812341701962930499">"எதையும் மீண்டும் இயக்காதே"</string>
     <string name="lb_playback_controls_repeat_all" msgid="5164826436271322261">"அனைத்தையும் மீண்டும் இயக்கு"</string>
     <string name="lb_playback_controls_repeat_one" msgid="7675097479246139440">"ஒன்றை மட்டும் மீண்டும் இயக்கு"</string>
-    <string name="lb_playback_controls_shuffle_enable" msgid="7809089255981448519">"கலைத்து இயக்கு"</string>
-    <string name="lb_playback_controls_shuffle_disable" msgid="8182435535948303910">"கலைக்காமல் இயக்கு"</string>
+    <string name="lb_playback_controls_shuffle_enable" msgid="7809089255981448519">"வரிசை மாற்றி இயக்கு"</string>
+    <string name="lb_playback_controls_shuffle_disable" msgid="8182435535948303910">"வரிசை மாற்றி இயக்குவதை நிறுத்து"</string>
     <string name="lb_playback_controls_high_quality_enable" msgid="1862669142355962638">"உயர்தரத்தை இயக்கு"</string>
     <string name="lb_playback_controls_high_quality_disable" msgid="3000046054608531995">"உயர்தரத்தை முடக்கு"</string>
     <string name="lb_playback_controls_closed_captioning_enable" msgid="3934392140182327163">"விரிவான வசனங்களை இயக்கு"</string>
diff --git a/lifecycle/common/src/main/java/androidx/lifecycle/CompositeGeneratedAdaptersObserver.java b/lifecycle/common/src/main/java/androidx/lifecycle/CompositeGeneratedAdaptersObserver.java
index 10d7adb..cd2e072 100644
--- a/lifecycle/common/src/main/java/androidx/lifecycle/CompositeGeneratedAdaptersObserver.java
+++ b/lifecycle/common/src/main/java/androidx/lifecycle/CompositeGeneratedAdaptersObserver.java
@@ -17,6 +17,8 @@
 package androidx.lifecycle;
 
 
+import androidx.annotation.NonNull;
+
 class CompositeGeneratedAdaptersObserver implements LifecycleEventObserver {
 
     private final GeneratedAdapter[] mGeneratedAdapters;
@@ -26,7 +28,7 @@
     }
 
     @Override
-    public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+    public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
         MethodCallsLogger logger = new MethodCallsLogger();
         for (GeneratedAdapter mGenerated: mGeneratedAdapters) {
             mGenerated.callMethods(source, event, false, logger);
diff --git a/lifecycle/common/src/main/java/androidx/lifecycle/FullLifecycleObserverAdapter.java b/lifecycle/common/src/main/java/androidx/lifecycle/FullLifecycleObserverAdapter.java
index 0c9ff0b..10223d4 100644
--- a/lifecycle/common/src/main/java/androidx/lifecycle/FullLifecycleObserverAdapter.java
+++ b/lifecycle/common/src/main/java/androidx/lifecycle/FullLifecycleObserverAdapter.java
@@ -16,6 +16,8 @@
 
 package androidx.lifecycle;
 
+import androidx.annotation.NonNull;
+
 class FullLifecycleObserverAdapter implements LifecycleEventObserver {
 
     private final FullLifecycleObserver mFullLifecycleObserver;
@@ -28,7 +30,7 @@
     }
 
     @Override
-    public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+    public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
         switch (event) {
             case ON_CREATE:
                 mFullLifecycleObserver.onCreate(source);
diff --git a/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java b/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java
index 9450466..2abb6ec 100644
--- a/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java
+++ b/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java
@@ -49,6 +49,7 @@
     /**
      * @deprecated Left for compatibility with lifecycle-runtime:2.0
      */
+    @SuppressWarnings("deprecation")
     @Deprecated
     @NonNull
     static GenericLifecycleObserver getCallback(final Object object) {
diff --git a/lifecycle/common/src/main/java/androidx/lifecycle/ReflectiveGenericLifecycleObserver.java b/lifecycle/common/src/main/java/androidx/lifecycle/ReflectiveGenericLifecycleObserver.java
index 69212de..ba39f7b 100644
--- a/lifecycle/common/src/main/java/androidx/lifecycle/ReflectiveGenericLifecycleObserver.java
+++ b/lifecycle/common/src/main/java/androidx/lifecycle/ReflectiveGenericLifecycleObserver.java
@@ -16,6 +16,7 @@
 
 package androidx.lifecycle;
 
+import androidx.annotation.NonNull;
 import androidx.lifecycle.ClassesInfoCache.CallbackInfo;
 import androidx.lifecycle.Lifecycle.Event;
 
@@ -32,7 +33,7 @@
     }
 
     @Override
-    public void onStateChanged(LifecycleOwner source, Event event) {
+    public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Event event) {
         mInfo.invokeCallbacks(source, event, mWrapped);
     }
 }
diff --git a/lifecycle/common/src/main/java/androidx/lifecycle/SingleGeneratedAdapterObserver.java b/lifecycle/common/src/main/java/androidx/lifecycle/SingleGeneratedAdapterObserver.java
index 2f77c1d..13f7b63 100644
--- a/lifecycle/common/src/main/java/androidx/lifecycle/SingleGeneratedAdapterObserver.java
+++ b/lifecycle/common/src/main/java/androidx/lifecycle/SingleGeneratedAdapterObserver.java
@@ -16,6 +16,8 @@
 
 package androidx.lifecycle;
 
+import androidx.annotation.NonNull;
+
 class SingleGeneratedAdapterObserver implements LifecycleEventObserver {
 
     private final GeneratedAdapter mGeneratedAdapter;
@@ -25,7 +27,7 @@
     }
 
     @Override
-    public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+    public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
         mGeneratedAdapter.callMethods(source, event, false, null);
         mGeneratedAdapter.callMethods(source, event, true, null);
     }
diff --git a/lifecycle/common/src/test/java/androidx/lifecycle/FullLifecycleObserverTest.java b/lifecycle/common/src/test/java/androidx/lifecycle/FullLifecycleObserverTest.java
index 431f099..8a6500b 100644
--- a/lifecycle/common/src/test/java/androidx/lifecycle/FullLifecycleObserverTest.java
+++ b/lifecycle/common/src/test/java/androidx/lifecycle/FullLifecycleObserverTest.java
@@ -32,6 +32,8 @@
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.when;
 
+import androidx.annotation.NonNull;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -123,7 +125,8 @@
             }
 
             @Override
-            public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+            public void onStateChanged(@NonNull LifecycleOwner source,
+                    @NonNull Lifecycle.Event event) {
 
             }
         }
diff --git a/lifecycle/common/src/test/java/androidx/lifecycle/LifecyclingTest.java b/lifecycle/common/src/test/java/androidx/lifecycle/LifecyclingTest.java
index a137f43..5854dce 100644
--- a/lifecycle/common/src/test/java/androidx/lifecycle/LifecyclingTest.java
+++ b/lifecycle/common/src/test/java/androidx/lifecycle/LifecyclingTest.java
@@ -87,11 +87,13 @@
     }
 
     // MUST BE HERE TILL Lifecycle 3.0.0 release for back-compatibility with other modules
+    @SuppressWarnings("deprecation")
     @Test
     public void testDeprecatedGenericLifecycleObserver() {
         GenericLifecycleObserver genericLifecycleObserver = new GenericLifecycleObserver() {
             @Override
-            public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+            public void onStateChanged(@NonNull LifecycleOwner source,
+                    @NonNull Lifecycle.Event event) {
             }
         };
         LifecycleEventObserver observer = lifecycleEventObserver(genericLifecycleObserver);
@@ -99,11 +101,13 @@
     }
 
     // MUST BE HERE TILL Lifecycle 3.0.0 release for back-compatibility with other modules
+    @SuppressWarnings("deprecation")
     @Test
     public void testDeprecatedLifecyclingCallback() {
         GenericLifecycleObserver genericLifecycleObserver = new GenericLifecycleObserver() {
             @Override
-            public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+            public void onStateChanged(@NonNull LifecycleOwner source,
+                    @NonNull Lifecycle.Event event) {
             }
         };
         LifecycleEventObserver observer = Lifecycling.getCallback(genericLifecycleObserver);
diff --git a/lifecycle/integration-tests/testapp/src/androidTest/java/androidx/lifecycle/SynchronousActivityLifecycleTest.java b/lifecycle/integration-tests/testapp/src/androidTest/java/androidx/lifecycle/SynchronousActivityLifecycleTest.java
index bbb2292..245ff06 100644
--- a/lifecycle/integration-tests/testapp/src/androidTest/java/androidx/lifecycle/SynchronousActivityLifecycleTest.java
+++ b/lifecycle/integration-tests/testapp/src/androidTest/java/androidx/lifecycle/SynchronousActivityLifecycleTest.java
@@ -29,6 +29,7 @@
 import android.content.pm.ActivityInfo;
 import android.os.Build;
 
+import androidx.annotation.NonNull;
 import androidx.lifecycle.Lifecycle.Event;
 import androidx.lifecycle.testapp.LifecycleTestActivity;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -181,7 +182,7 @@
         }
 
         @Override
-        public void onStateChanged(LifecycleOwner lifecycleOwner, Event event) {
+        public void onStateChanged(@NonNull LifecycleOwner lifecycleOwner, @NonNull Event event) {
             if (mMuted) {
                 return;
             }
diff --git a/lifecycle/livedata-core/src/main/java/androidx/lifecycle/LiveData.java b/lifecycle/livedata-core/src/main/java/androidx/lifecycle/LiveData.java
index 43909fa..719c8ed 100644
--- a/lifecycle/livedata-core/src/main/java/androidx/lifecycle/LiveData.java
+++ b/lifecycle/livedata-core/src/main/java/androidx/lifecycle/LiveData.java
@@ -80,6 +80,7 @@
     @SuppressWarnings("FieldCanBeLocal")
     private boolean mDispatchInvalidated;
     private final Runnable mPostValueRunnable = new Runnable() {
+        @SuppressWarnings("unchecked")
         @Override
         public void run() {
             Object newValue;
@@ -87,7 +88,6 @@
                 newValue = mPendingData;
                 mPendingData = NOT_SET;
             }
-            //noinspection unchecked
             setValue((T) newValue);
         }
     };
@@ -110,6 +110,7 @@
         mVersion = START_VERSION;
     }
 
+    @SuppressWarnings("unchecked")
     private void considerNotify(ObserverWrapper observer) {
         if (!observer.mActive) {
             return;
@@ -127,7 +128,6 @@
             return;
         }
         observer.mLastVersion = mVersion;
-        //noinspection unchecked
         observer.mObserver.onChanged((T) mData);
     }
 
@@ -314,11 +314,11 @@
      *
      * @return the current value
      */
+    @SuppressWarnings("unchecked")
     @Nullable
     public T getValue() {
         Object data = mData;
         if (data != NOT_SET) {
-            //noinspection unchecked
             return (T) data;
         }
         return null;
@@ -386,7 +386,8 @@
         }
 
         @Override
-        public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
+        public void onStateChanged(@NonNull LifecycleOwner source,
+                @NonNull Lifecycle.Event event) {
             if (mOwner.getLifecycle().getCurrentState() == DESTROYED) {
                 removeObserver(mObserver);
                 return;
diff --git a/lifecycle/livedata/src/test/java/androidx/lifecycle/ComputableLiveDataTest.java b/lifecycle/livedata/src/test/java/androidx/lifecycle/ComputableLiveDataTest.java
index 2b9d37e..96796e3 100644
--- a/lifecycle/livedata/src/test/java/androidx/lifecycle/ComputableLiveDataTest.java
+++ b/lifecycle/livedata/src/test/java/androidx/lifecycle/ComputableLiveDataTest.java
@@ -75,6 +75,7 @@
         verify(mTaskExecutor, never()).executeOnDiskIO(computable.mInvalidationRunnable);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void noConcurrentCompute() throws InterruptedException {
         TaskExecutorWithFakeMainThread executor = new TaskExecutorWithFakeMainThread(2);
@@ -97,7 +98,6 @@
                 }
             };
             final ArgumentCaptor<Integer> captor = ArgumentCaptor.forClass(Integer.class);
-            //noinspection unchecked
             final Observer<Integer> observer = mock(Observer.class);
             executor.postToMainThread(new Runnable() {
                 @Override
diff --git a/lifecycle/runtime/src/test/java/androidx/lifecycle/LifecycleRegistryTest.java b/lifecycle/runtime/src/test/java/androidx/lifecycle/LifecycleRegistryTest.java
index f12bfd3..414fb28 100644
--- a/lifecycle/runtime/src/test/java/androidx/lifecycle/LifecycleRegistryTest.java
+++ b/lifecycle/runtime/src/test/java/androidx/lifecycle/LifecycleRegistryTest.java
@@ -81,6 +81,7 @@
         assertThat(mRegistry.getObserverCount(), is(0));
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public void addGenericAndObserve() {
         GenericLifecycleObserver generic = mock(GenericLifecycleObserver.class);
diff --git a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/AndroidViewModel.java b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/AndroidViewModel.java
index 1782453..f3fc032 100644
--- a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/AndroidViewModel.java
+++ b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/AndroidViewModel.java
@@ -38,10 +38,9 @@
     /**
      * Return the application.
      */
-    @SuppressWarnings("TypeParameterUnusedInFormals")
+    @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"})
     @NonNull
     public <T extends Application> T getApplication() {
-        //noinspection unchecked
         return (T) mApplication;
     }
 }
diff --git a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModel.java b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModel.java
index d18d8ed..0709327 100644
--- a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModel.java
+++ b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModel.java
@@ -151,10 +151,10 @@
      * it implements {@link Closeable}. The same object may receive multiple close calls, so method
      * should be idempotent.
      */
+    @SuppressWarnings("unchecked")
     <T> T setTagIfAbsent(String key, T newValue) {
         T previous;
         synchronized (mBagOfTags) {
-            //noinspection unchecked
             previous = (T) mBagOfTags.get(key);
             if (previous == null) {
                 mBagOfTags.put(key, newValue);
@@ -173,9 +173,8 @@
     /**
      * Returns the tag associated with this viewmodel and the specified key.
      */
-    @SuppressWarnings("TypeParameterUnusedInFormals")
+    @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"})
     <T> T getTag(String key) {
-        //noinspection unchecked
         synchronized (mBagOfTags) {
             return (T) mBagOfTags.get(key);
         }
diff --git a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java
index fa2efb9..56d9f1b 100644
--- a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java
+++ b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java
@@ -144,13 +144,13 @@
      * @param <T>        The type parameter for the ViewModel.
      * @return A ViewModel that is an instance of the given type {@code T}.
      */
+    @SuppressWarnings("unchecked")
     @NonNull
     @MainThread
     public <T extends ViewModel> T get(@NonNull String key, @NonNull Class<T> modelClass) {
         ViewModel viewModel = mViewModelStore.get(key);
 
         if (modelClass.isInstance(viewModel)) {
-            //noinspection unchecked
             return (T) viewModel;
         } else {
             //noinspection StatementWithEmptyBody
@@ -164,7 +164,6 @@
             viewModel = (mFactory).create(modelClass);
         }
         mViewModelStore.put(key, viewModel);
-        //noinspection unchecked
         return (T) viewModel;
     }
 
diff --git a/mediarouter/src/main/res/values-in/strings.xml b/mediarouter/src/main/res/values-in/strings.xml
index 305bae8..45f7ff0 100644
--- a/mediarouter/src/main/res/values-in/strings.xml
+++ b/mediarouter/src/main/res/values-in/strings.xml
@@ -33,7 +33,7 @@
     <string name="mr_controller_expand_group" msgid="2422682304043876468">"Luaskan"</string>
     <string name="mr_controller_collapse_group" msgid="5518911192681928413">"Ciutkan"</string>
     <string name="mr_controller_album_art" msgid="5813284753012893250">"Sampul album"</string>
-    <string name="mr_controller_volume_slider" msgid="691656961160498512">"Penggeser volume"</string>
+    <string name="mr_controller_volume_slider" msgid="691656961160498512">"Pengatur volume"</string>
     <string name="mr_controller_no_media_selected" msgid="4342878516155861006">"Tidak ada media yang dipilih"</string>
     <string name="mr_controller_no_info_available" msgid="7299368841849988218">"Tidak ada info yang tersedia"</string>
     <string name="mr_controller_casting_screen" msgid="5286734709674025661">"Melakukan cast layar"</string>
diff --git a/mediarouter/src/main/res/values-ja/strings.xml b/mediarouter/src/main/res/values-ja/strings.xml
index 7558a71..21f712a 100644
--- a/mediarouter/src/main/res/values-ja/strings.xml
+++ b/mediarouter/src/main/res/values-ja/strings.xml
@@ -17,13 +17,13 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="mr_system_route_name" msgid="3117964881088969586">"システム"</string>
-    <string name="mr_user_route_category_name" msgid="8236416097133080726">"端末"</string>
+    <string name="mr_user_route_category_name" msgid="8236416097133080726">"デバイス"</string>
     <string name="mr_button_content_description" msgid="1685185767093348095">"キャスト アイコン"</string>
     <string name="mr_cast_button_disconnected" msgid="5501231066847739632">"キャスト アイコン。接続解除済み"</string>
     <string name="mr_cast_button_connecting" msgid="8959304318293841992">"キャスト アイコン。接続中"</string>
     <string name="mr_cast_button_connected" msgid="1350095112462806159">"キャスト アイコン。接続済み"</string>
     <string name="mr_chooser_title" msgid="7548226170787476564">"キャスト先"</string>
-    <string name="mr_chooser_searching" msgid="5504553798429329689">"端末を検出しています"</string>
+    <string name="mr_chooser_searching" msgid="5504553798429329689">"デバイスを検出しています"</string>
     <string name="mr_controller_disconnect" msgid="1370654436555555647">"接続を解除"</string>
     <string name="mr_controller_stop_casting" msgid="7617024847862349259">"キャストを停止"</string>
     <string name="mr_controller_close_description" msgid="5468775621814500662">"閉じる"</string>
@@ -37,7 +37,7 @@
     <string name="mr_controller_no_media_selected" msgid="4342878516155861006">"メディアが選択されていません"</string>
     <string name="mr_controller_no_info_available" msgid="7299368841849988218">"情報がありません"</string>
     <string name="mr_controller_casting_screen" msgid="5286734709674025661">"画面をキャストしています"</string>
-    <string name="mr_dialog_groupable_header" msgid="470815817763403488">"端末の追加"</string>
+    <string name="mr_dialog_groupable_header" msgid="470815817763403488">"デバイスの追加"</string>
     <string name="mr_dialog_transferable_header" msgid="8242946697267839296">"グループで再生"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="6167045754274068030">"情報がありません"</string>
 </resources>
diff --git a/mediarouter/src/main/res/values-pa/strings.xml b/mediarouter/src/main/res/values-pa/strings.xml
index 71224a6..46a04e3 100644
--- a/mediarouter/src/main/res/values-pa/strings.xml
+++ b/mediarouter/src/main/res/values-pa/strings.xml
@@ -22,7 +22,7 @@
     <string name="mr_cast_button_disconnected" msgid="5501231066847739632">"\'ਕਾਸਟ ਕਰੋ\' ਬਟਨ। ਡਿਸਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
     <string name="mr_cast_button_connecting" msgid="8959304318293841992">"\'ਕਾਸਟ ਕਰੋ\' ਬਟਨ। ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
     <string name="mr_cast_button_connected" msgid="1350095112462806159">"\'ਕਾਸਟ ਕਰੋ\' ਬਟਨ। ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="mr_chooser_title" msgid="7548226170787476564">"ਏਥੇ ਕਾਸਟ ਕਰੋ"</string>
+    <string name="mr_chooser_title" msgid="7548226170787476564">"ਇਸਦੇ ਨਾਲ ਕਾਸਟ ਕਰੋ"</string>
     <string name="mr_chooser_searching" msgid="5504553798429329689">"ਡੀਵਾਈਸ ਲੱਭੇ ਜਾ ਰਹੇ ਹਨ"</string>
     <string name="mr_controller_disconnect" msgid="1370654436555555647">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
     <string name="mr_controller_stop_casting" msgid="7617024847862349259">"ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰੋ"</string>
diff --git a/navigation/common/src/androidTest/java/androidx/navigation/NavGraphNavigatorStateTest.kt b/navigation/common/src/androidTest/java/androidx/navigation/NavGraphNavigatorStateTest.kt
deleted file mode 100644
index 11f5871..0000000
--- a/navigation/common/src/androidTest/java/androidx/navigation/NavGraphNavigatorStateTest.kt
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2018 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 androidx.navigation
-
-import androidx.annotation.IdRes
-import androidx.test.filters.SmallTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-
-@SmallTest
-class NavGraphNavigatorStateTest {
-
-    companion object {
-        @IdRes
-        private const val FIRST_DESTINATION_ID = 1
-    }
-
-    private lateinit var provider: NavigatorProvider
-    private lateinit var noOpNavigator: NoOpNavigator
-    private lateinit var navGraphNavigator: NavGraphNavigator
-
-    @Before
-    fun setup() {
-        provider = NavigatorProvider().apply {
-            addNavigator(NoOpNavigator().also { noOpNavigator = it })
-            addNavigator(NavGraphNavigator(this).also {
-                navGraphNavigator = it
-            })
-        }
-    }
-
-    @Test
-    fun navigateSingleTopSaveState() {
-        val destination = noOpNavigator.createDestination().apply {
-            id = FIRST_DESTINATION_ID
-        }
-        val graph = navGraphNavigator.createDestination().apply {
-            addDestination(destination)
-            startDestination = FIRST_DESTINATION_ID
-        }
-        assertThat(navGraphNavigator.navigate(graph, null, null, null))
-            .isEqualTo(destination)
-
-        // Save and restore the state, effectively resetting the NavGraphNavigator
-        val saveState = navGraphNavigator.onSaveState()
-        navGraphNavigator.onRestoreState(saveState)
-
-        assertThat(navGraphNavigator.navigate(graph, null,
-            NavOptions.Builder().setLaunchSingleTop(true).build(), null))
-            .isEqualTo(destination)
-    }
-}
diff --git a/navigation/common/src/main/java/androidx/navigation/NavGraphNavigator.java b/navigation/common/src/main/java/androidx/navigation/NavGraphNavigator.java
index 7bac4bd..4bf9522 100644
--- a/navigation/common/src/main/java/androidx/navigation/NavGraphNavigator.java
+++ b/navigation/common/src/main/java/androidx/navigation/NavGraphNavigator.java
@@ -21,18 +21,13 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import java.util.ArrayDeque;
-
 /**
  * A Navigator built specifically for {@link NavGraph} elements. Handles navigating to the
  * correct destination when the NavGraph is the target of navigation actions.
  */
 @Navigator.Name("navigation")
 public class NavGraphNavigator extends Navigator<NavGraph> {
-    private static final String KEY_BACK_STACK_IDS = "androidx-nav-graph:navigator:backStackIds";
-
     private final NavigatorProvider mNavigatorProvider;
-    private ArrayDeque<Integer> mBackStack = new ArrayDeque<>();
 
     /**
      * Construct a Navigator capable of routing incoming navigation requests to the proper
@@ -71,70 +66,14 @@
             throw new IllegalArgumentException("navigation destination " + dest
                     + " is not a direct child of this NavGraph");
         }
-        if (navOptions == null || !(navOptions.shouldLaunchSingleTop()
-                && isAlreadyTop(destination))) {
-            mBackStack.add(destination.getId());
-        }
         Navigator<NavDestination> navigator = mNavigatorProvider.getNavigator(
                 startDestination.getNavigatorName());
         return navigator.navigate(startDestination, startDestination.addInDefaultArgs(args),
                 navOptions, navigatorExtras);
     }
 
-    /**
-     * This method to checks to see if navigating to the given destId would result in you
-     * being right back where you started (we want to avoid creating a duplicate stack of the
-     * same destinations).
-     *
-     * Because you can have a NavGraph as the start destination of another graph, we need to both
-     * check the current NavGraph (i.e., no direct singleTop copies) and all of the parents that
-     * start the current NavGraph via their start destinations.
-     */
-    private boolean isAlreadyTop(NavGraph destination) {
-        if (mBackStack.isEmpty()) {
-            return false;
-        }
-        int topDestId = mBackStack.peekLast();
-        NavGraph current = destination;
-        while (current.getId() != topDestId) {
-            NavDestination startDestination = current.findNode(current.getStartDestination());
-            if (startDestination instanceof NavGraph) {
-                current = (NavGraph) startDestination;
-            } else {
-                return false;
-            }
-        }
-        return true;
-    }
-
     @Override
     public boolean popBackStack() {
-        return mBackStack.pollLast() != null;
-    }
-
-    @Override
-    @Nullable
-    public Bundle onSaveState() {
-        Bundle b = new Bundle();
-        int[] backStack = new int[mBackStack.size()];
-        int index = 0;
-        for (Integer id : mBackStack) {
-            backStack[index++] = id;
-        }
-        b.putIntArray(KEY_BACK_STACK_IDS, backStack);
-        return b;
-    }
-
-    @Override
-    public void onRestoreState(@Nullable Bundle savedState) {
-        if (savedState != null) {
-            int[] backStack = savedState.getIntArray(KEY_BACK_STACK_IDS);
-            if (backStack != null) {
-                mBackStack.clear();
-                for (int destId : backStack) {
-                    mBackStack.add(destId);
-                }
-            }
-        }
+        return true;
     }
 }
diff --git a/navigation/common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt b/navigation/common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt
index 9f74865..f37ade4 100644
--- a/navigation/common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt
+++ b/navigation/common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt
@@ -80,14 +80,6 @@
     }
 
     @Test
-    fun popWithEmptyStack() {
-        val success = navGraphNavigator.popBackStack()
-        assertWithMessage("popBackStack should return false on an empty stack")
-            .that(success)
-            .isFalse()
-    }
-
-    @Test
     fun navigateThenPop() {
         val destination = createFirstDestination()
         val graph = createGraphWithDestination(destination)
diff --git a/navigation/fragment/src/main/java/androidx/navigation/fragment/NavHostFragment.java b/navigation/fragment/src/main/java/androidx/navigation/fragment/NavHostFragment.java
index cef3596..90882eb 100644
--- a/navigation/fragment/src/main/java/androidx/navigation/fragment/NavHostFragment.java
+++ b/navigation/fragment/src/main/java/androidx/navigation/fragment/NavHostFragment.java
@@ -207,7 +207,7 @@
 
         mNavController = new NavHostController(context);
         mNavController.setLifecycleOwner(this);
-        mNavController.setOnBackPressedDispatcherOwner(requireActivity());
+        mNavController.setOnBackPressedDispatcher(requireActivity().getOnBackPressedDispatcher());
         // Set the default state - this will be updated whenever
         // onPrimaryNavigationFragmentChanged() is called
         mNavController.enableOnBackPressed(
diff --git a/navigation/runtime/api/2.1.0-alpha05.txt b/navigation/runtime/api/2.1.0-alpha05.txt
index 160bf57..1dda053 100644
--- a/navigation/runtime/api/2.1.0-alpha05.txt
+++ b/navigation/runtime/api/2.1.0-alpha05.txt
@@ -95,7 +95,7 @@
     ctor public NavHostController(android.content.Context);
     method public void enableOnBackPressed(boolean);
     method public void setLifecycleOwner(androidx.lifecycle.LifecycleOwner);
-    method public void setOnBackPressedDispatcherOwner(androidx.activity.OnBackPressedDispatcherOwner);
+    method public void setOnBackPressedDispatcher(androidx.activity.OnBackPressedDispatcher);
     method public void setViewModelStore(androidx.lifecycle.ViewModelStore);
   }
 
diff --git a/navigation/runtime/api/current.txt b/navigation/runtime/api/current.txt
index 160bf57..1dda053 100644
--- a/navigation/runtime/api/current.txt
+++ b/navigation/runtime/api/current.txt
@@ -95,7 +95,7 @@
     ctor public NavHostController(android.content.Context);
     method public void enableOnBackPressed(boolean);
     method public void setLifecycleOwner(androidx.lifecycle.LifecycleOwner);
-    method public void setOnBackPressedDispatcherOwner(androidx.activity.OnBackPressedDispatcherOwner);
+    method public void setOnBackPressedDispatcher(androidx.activity.OnBackPressedDispatcher);
     method public void setViewModelStore(androidx.lifecycle.ViewModelStore);
   }
 
diff --git a/navigation/runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt b/navigation/runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
index 8acda64..c86f527 100644
--- a/navigation/runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
+++ b/navigation/runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
@@ -249,6 +249,76 @@
     }
 
     @Test
+    fun testNavigateToDifferentGraphViaDeepLink3x() {
+        val navController = createNavController()
+        navController.setGraph(R.navigation.nav_multiple_navigation)
+        val navigator = navController.navigatorProvider.getNavigator(TestNavigator::class.java)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+
+        val deepLink = Uri.parse("android-app://androidx.navigation.test/test")
+
+        navController.navigate(deepLink)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.deep_link_child_second_test)
+        assertThat(navigator.backStack.size).isEqualTo(2)
+
+        navController.popBackStack()
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+
+        // repeat nav and pop 2 more times.
+        navController.navigate(deepLink)
+        navController.popBackStack()
+        navController.navigate(deepLink)
+
+        val popped = navController.popBackStack()
+        assertWithMessage("NavController should return true when popping a non-root destination")
+            .that(popped)
+            .isTrue()
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+    }
+
+    @Test
+    fun testNavigateToDifferentGraphViaDeepLinkToGrandchild3x() {
+        val navController = createNavController()
+        navController.setGraph(R.navigation.nav_multiple_navigation)
+        val navigator = navController.navigatorProvider.getNavigator(TestNavigator::class.java)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+
+        val deepLink = Uri.parse("android-app://androidx.navigation.test/grand_child_test")
+
+        navController.navigate(deepLink)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.deep_link_grandchild_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(2)
+
+        navController.popBackStack()
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+
+        // repeat nav and pop 2 more times.
+        navController.navigate(deepLink)
+        navController.popBackStack()
+        navController.navigate(deepLink)
+
+        val popped = navController.popBackStack()
+        assertWithMessage("NavController should return true when popping a non-root destination")
+            .that(popped)
+            .isTrue()
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+    }
+
+    @Test
     fun testSaveRestoreStateXml() {
         val context = ApplicationProvider.getApplicationContext() as Context
         var navController = NavController(context)
diff --git a/navigation/runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml b/navigation/runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml
index f0e04b1..1f62231 100644
--- a/navigation/runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml
+++ b/navigation/runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml
@@ -47,5 +47,15 @@
                 app:popUpTo="@id/deep_link_child_start_test" />
             <deepLink app:uri="android-app://androidx.navigation.test/test" />
         </test>
+        <navigation android:id="@+id/deep_link_child_second"
+            app:startDestination="@+id/deep_link_grandchild_start_test">
+
+            <test android:id="@+id/deep_link_grandchild_start_test">
+                <action
+                    android:id="@+id/deep_link_child_finish"
+                    app:popUpTo="@+id/deep_link_child_start_test" />
+                <deepLink app:uri="android-app://androidx.navigation.test/grand_child_test" />
+            </test>
+        </navigation>
     </navigation>
 </navigation>
\ No newline at end of file
diff --git a/navigation/runtime/src/main/java/androidx/navigation/NavController.java b/navigation/runtime/src/main/java/androidx/navigation/NavController.java
index 91cc8e01..ec650ea 100644
--- a/navigation/runtime/src/main/java/androidx/navigation/NavController.java
+++ b/navigation/runtime/src/main/java/androidx/navigation/NavController.java
@@ -27,7 +27,6 @@
 
 import androidx.activity.OnBackPressedCallback;
 import androidx.activity.OnBackPressedDispatcher;
-import androidx.activity.OnBackPressedDispatcherOwner;
 import androidx.annotation.CallSuper;
 import androidx.annotation.IdRes;
 import androidx.annotation.NavigationRes;
@@ -995,11 +994,11 @@
         mLifecycleOwner = owner;
     }
 
-    void setOnBackPressedDispatcherOwner(@NonNull OnBackPressedDispatcherOwner owner) {
+    void setOnBackPressedDispatcher(@NonNull OnBackPressedDispatcher dispatcher) {
         if (mLifecycleOwner == null) {
-            mLifecycleOwner = owner;
+            throw new IllegalStateException("You must call setLifecycleOwner() before calling "
+                    + "setOnBackPressedDispatcher()");
         }
-        OnBackPressedDispatcher dispatcher = owner.getOnBackPressedDispatcher();
         // Remove the callback from any previous dispatcher
         mOnBackPressedCallback.remove();
         // Then add it to the new dispatcher
diff --git a/navigation/runtime/src/main/java/androidx/navigation/NavHost.java b/navigation/runtime/src/main/java/androidx/navigation/NavHost.java
index ed587a2..603740e 100644
--- a/navigation/runtime/src/main/java/androidx/navigation/NavHost.java
+++ b/navigation/runtime/src/main/java/androidx/navigation/NavHost.java
@@ -19,7 +19,6 @@
 import android.os.Bundle;
 import android.view.View;
 
-import androidx.activity.OnBackPressedDispatcherOwner;
 import androidx.annotation.NonNull;
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.ViewModelStore;
@@ -39,7 +38,7 @@
  * <li>Call {@link Navigation#setViewNavController(View, NavController)} on their root view</li>
  * <li>Route system Back button events to the NavController either by manually calling
  * {@link NavController#popBackStack()} or by calling
- * {@link NavHostController#setOnBackPressedDispatcherOwner(OnBackPressedDispatcherOwner)}
+ * {@link NavHostController#setOnBackPressedDispatcher(androidx.activity.OnBackPressedDispatcher)}
  * when constructing the NavController.</li>
  * </ul>
  * Optionally, a navigation host should consider calling:
diff --git a/navigation/runtime/src/main/java/androidx/navigation/NavHostController.java b/navigation/runtime/src/main/java/androidx/navigation/NavHostController.java
index cc7c6b8..0005c619 100644
--- a/navigation/runtime/src/main/java/androidx/navigation/NavHostController.java
+++ b/navigation/runtime/src/main/java/androidx/navigation/NavHostController.java
@@ -21,7 +21,6 @@
 
 import androidx.activity.OnBackPressedCallback;
 import androidx.activity.OnBackPressedDispatcher;
-import androidx.activity.OnBackPressedDispatcherOwner;
 import androidx.annotation.NonNull;
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.ViewModelStore;
@@ -58,7 +57,7 @@
      * Sets the host's {@link LifecycleOwner}.
      *
      * @param owner The {@link LifecycleOwner} associated with the containing {@link NavHost}.
-     * @see #setOnBackPressedDispatcherOwner(OnBackPressedDispatcherOwner)
+     * @see NavHostController#setOnBackPressedDispatcher(OnBackPressedDispatcher)
      */
     @Override
     public void setLifecycleOwner(@NonNull LifecycleOwner owner) {
@@ -66,24 +65,25 @@
     }
 
     /**
-     * Sets the host's {@link OnBackPressedDispatcherOwner}. If set, NavController will
+     * Sets the host's {@link OnBackPressedDispatcher}. If set, NavController will
      * register a {@link OnBackPressedCallback} to handle system Back button events.
      * <p>
-     * If you have not explicitly called {@link #setLifecycleOwner(LifecycleOwner)},
-     * the owner you pass here will be used as the {@link LifecycleOwner} for registering
+     * You must explicitly called {@link #setLifecycleOwner(LifecycleOwner)} before calling this
+     * method as the owner set there will be used as the {@link LifecycleOwner} for registering
      * the {@link OnBackPressedCallback}.
      * <p>
      * You can dynamically enable and disable whether the NavController should handle the
      * system Back button events by calling {@link #enableOnBackPressed(boolean)}.
      *
-     * @param owner The {@link OnBackPressedDispatcherOwner} associated with the containing
+     * @param dispatcher The {@link OnBackPressedDispatcher} associated with the containing
      * {@link NavHost}.
+     * @throws IllegalStateException if you have not called
+     * {@link #setLifecycleOwner(LifecycleOwner)} before calling this method.
      * @see #setLifecycleOwner(LifecycleOwner)
      */
     @Override
-    public void setOnBackPressedDispatcherOwner(
-            @NonNull OnBackPressedDispatcherOwner owner) {
-        super.setOnBackPressedDispatcherOwner(owner);
+    public void setOnBackPressedDispatcher(@NonNull OnBackPressedDispatcher dispatcher) {
+        super.setOnBackPressedDispatcher(dispatcher);
     }
 
     /**
diff --git a/navigation/ui/src/main/res/values-bs/strings.xml b/navigation/ui/src/main/res/values-bs/strings.xml
index 39602a7..f4b93f0 100644
--- a/navigation/ui/src/main/res/values-bs/strings.xml
+++ b/navigation/ui/src/main/res/values-bs/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="nav_app_bar_open_drawer_description" msgid="7456070600745802113">"Otvaranje panela za navigaciju"</string>
+    <string name="nav_app_bar_open_drawer_description" msgid="7456070600745802113">"Otvaranje ladice za navigaciju"</string>
     <string name="nav_app_bar_navigate_up_description" msgid="6301633601645100427">"Idi gore"</string>
 </resources>
diff --git a/preference/res/values-az/strings.xml b/preference/res/values-az/strings.xml
index f79e4bc..f6b48bb 100644
--- a/preference/res/values-az/strings.xml
+++ b/preference/res/values-az/strings.xml
@@ -3,7 +3,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="v7_preference_on" msgid="27351710992731591">"AKTİV"</string>
     <string name="v7_preference_off" msgid="5138405918326871307">"DEAKTİV"</string>
-    <string name="expand_button_title" msgid="1234962710353108940">"Qabaqcıl"</string>
+    <string name="expand_button_title" msgid="1234962710353108940">"Qabaqcıl ayarlar"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>, <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"Kopyalayın"</string>
     <string name="preference_copied" msgid="7961817945132860002">"\"<xliff:g id="SUMMARY">%1$s</xliff:g>\" buferə kopyalandı."</string>
diff --git a/preference/res/values-cs/strings.xml b/preference/res/values-cs/strings.xml
index 0a5c920..e0f41e4 100644
--- a/preference/res/values-cs/strings.xml
+++ b/preference/res/values-cs/strings.xml
@@ -2,7 +2,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="v7_preference_on" msgid="27351710992731591">"ZAP"</string>
-    <string name="v7_preference_off" msgid="5138405918326871307">"VYP"</string>
+    <string name="v7_preference_off" msgid="5138405918326871307">"Vypnutí"</string>
     <string name="expand_button_title" msgid="1234962710353108940">"Rozšířená nastavení"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>, <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"Kopírovat"</string>
diff --git a/preference/res/values-et/strings.xml b/preference/res/values-et/strings.xml
index 2d10743..5976d46 100644
--- a/preference/res/values-et/strings.xml
+++ b/preference/res/values-et/strings.xml
@@ -3,7 +3,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="v7_preference_on" msgid="27351710992731591">"SEES"</string>
     <string name="v7_preference_off" msgid="5138405918326871307">"VÄLJAS"</string>
-    <string name="expand_button_title" msgid="1234962710353108940">"Täpsem"</string>
+    <string name="expand_button_title" msgid="1234962710353108940">"Täpsemad"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>, <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"Kopeerimine"</string>
     <string name="preference_copied" msgid="7961817945132860002">"„<xliff:g id="SUMMARY">%1$s</xliff:g>” on lõikelauale kopeeritud."</string>
diff --git a/preference/res/values-fa/strings.xml b/preference/res/values-fa/strings.xml
index e17f895..2c6d65b 100644
--- a/preference/res/values-fa/strings.xml
+++ b/preference/res/values-fa/strings.xml
@@ -6,6 +6,6 @@
     <string name="expand_button_title" msgid="1234962710353108940">"پیشرفته"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>، <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"کپی"</string>
-    <string name="preference_copied" msgid="7961817945132860002">"«<xliff:g id="SUMMARY">%1$s</xliff:g>» در کلیپ‌بورد کپی شد."</string>
+    <string name="preference_copied" msgid="7961817945132860002">"«<xliff:g id="SUMMARY">%1$s</xliff:g>» در بریده‌دان کپی شد."</string>
     <string name="not_set" msgid="478774118347071097">"تنظیم نشده است"</string>
 </resources>
diff --git a/preference/res/values-fr/strings.xml b/preference/res/values-fr/strings.xml
index e9490d7b..97fedcc 100644
--- a/preference/res/values-fr/strings.xml
+++ b/preference/res/values-fr/strings.xml
@@ -3,7 +3,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="v7_preference_on" msgid="27351710992731591">"ACTIVÉ"</string>
     <string name="v7_preference_off" msgid="5138405918326871307">"DÉSACTIVÉ"</string>
-    <string name="expand_button_title" msgid="1234962710353108940">"Préférences avancées"</string>
+    <string name="expand_button_title" msgid="1234962710353108940">"Paramètres avancés"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>, <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"Copier"</string>
     <string name="preference_copied" msgid="7961817945132860002">"\"<xliff:g id="SUMMARY">%1$s</xliff:g>\" copié dans le presse-papier."</string>
diff --git a/preference/res/values-ml/strings.xml b/preference/res/values-ml/strings.xml
index a87d23c..e2aaf2a 100644
--- a/preference/res/values-ml/strings.xml
+++ b/preference/res/values-ml/strings.xml
@@ -2,7 +2,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="v7_preference_on" msgid="27351710992731591">"ഓൺ"</string>
-    <string name="v7_preference_off" msgid="5138405918326871307">"ഓഫ്"</string>
+    <string name="v7_preference_off" msgid="5138405918326871307">"ഓഫാണ്"</string>
     <string name="expand_button_title" msgid="1234962710353108940">"വിപുലമായത്"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>, <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"പകർത്തുക"</string>
diff --git a/preference/res/values-te/strings.xml b/preference/res/values-te/strings.xml
index d552b58..34c3382 100644
--- a/preference/res/values-te/strings.xml
+++ b/preference/res/values-te/strings.xml
@@ -3,7 +3,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="v7_preference_on" msgid="27351710992731591">"ఆన్ చేయండి"</string>
     <string name="v7_preference_off" msgid="5138405918326871307">"ఆఫ్ చేయండి"</string>
-    <string name="expand_button_title" msgid="1234962710353108940">"అధునాతన"</string>
+    <string name="expand_button_title" msgid="1234962710353108940">"అధునాతనం"</string>
     <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>, <xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"కాపీ చేయి"</string>
     <string name="preference_copied" msgid="7961817945132860002">"\"<xliff:g id="SUMMARY">%1$s</xliff:g>\" క్లిప్‌బోర్డ్‌కి కాపీ చేయబడింది."</string>
diff --git a/preference/res/values-zh-rHK/strings.xml b/preference/res/values-zh-rHK/strings.xml
index 38376a7..487dc31 100644
--- a/preference/res/values-zh-rHK/strings.xml
+++ b/preference/res/values-zh-rHK/strings.xml
@@ -4,7 +4,7 @@
     <string name="v7_preference_on" msgid="27351710992731591">"開啟"</string>
     <string name="v7_preference_off" msgid="5138405918326871307">"關閉"</string>
     <string name="expand_button_title" msgid="1234962710353108940">"進階"</string>
-    <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>,<xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
+    <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>、<xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"複製"</string>
     <string name="preference_copied" msgid="7961817945132860002">"「<xliff:g id="SUMMARY">%1$s</xliff:g>」已複製到剪貼簿。"</string>
     <string name="not_set" msgid="478774118347071097">"未設定"</string>
diff --git a/preference/res/values-zh-rTW/strings.xml b/preference/res/values-zh-rTW/strings.xml
index 7787479..4628cf0 100644
--- a/preference/res/values-zh-rTW/strings.xml
+++ b/preference/res/values-zh-rTW/strings.xml
@@ -4,7 +4,7 @@
     <string name="v7_preference_on" msgid="27351710992731591">"開啟"</string>
     <string name="v7_preference_off" msgid="5138405918326871307">"關閉"</string>
     <string name="expand_button_title" msgid="1234962710353108940">"進階"</string>
-    <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>,<xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
+    <string name="summary_collapsed_preference_list" msgid="5190123168583152844">"<xliff:g id="CURRENT_ITEMS">%1$s</xliff:g>、<xliff:g id="ADDED_ITEMS">%2$s</xliff:g>"</string>
     <string name="copy" msgid="3209159573327985035">"複製"</string>
     <string name="preference_copied" msgid="7961817945132860002">"已將「<xliff:g id="SUMMARY">%1$s</xliff:g>」複製到剪貼簿。"</string>
     <string name="not_set" msgid="478774118347071097">"未設定"</string>
diff --git a/sharetarget/api/restricted_1.0.0-alpha02.txt b/sharetarget/api/restricted_1.0.0-alpha02.txt
index 36d3782..b838cc7 100644
--- a/sharetarget/api/restricted_1.0.0-alpha02.txt
+++ b/sharetarget/api/restricted_1.0.0-alpha02.txt
@@ -6,9 +6,12 @@
     method public java.util.List<android.service.chooser.ChooserTarget!>! onGetChooserTargets(android.content.ComponentName!, android.content.IntentFilter!);
   }
 
-  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaverImpl extends androidx.core.content.pm.ShortcutInfoCompatSaver {
+  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaverImpl extends androidx.core.content.pm.ShortcutInfoCompatSaver<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> {
+    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
     method @AnyThread public static androidx.sharetarget.ShortcutInfoCompatSaverImpl! getInstance(android.content.Context!);
     method @WorkerThread public androidx.core.graphics.drawable.IconCompat! getShortcutIcon(String!) throws java.lang.Exception;
+    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeAllShortcuts();
+    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
 }
diff --git a/sharetarget/api/restricted_current.txt b/sharetarget/api/restricted_current.txt
index 36d3782..b838cc7 100644
--- a/sharetarget/api/restricted_current.txt
+++ b/sharetarget/api/restricted_current.txt
@@ -6,9 +6,12 @@
     method public java.util.List<android.service.chooser.ChooserTarget!>! onGetChooserTargets(android.content.ComponentName!, android.content.IntentFilter!);
   }
 
-  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaverImpl extends androidx.core.content.pm.ShortcutInfoCompatSaver {
+  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaverImpl extends androidx.core.content.pm.ShortcutInfoCompatSaver<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> {
+    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
     method @AnyThread public static androidx.sharetarget.ShortcutInfoCompatSaverImpl! getInstance(android.content.Context!);
     method @WorkerThread public androidx.core.graphics.drawable.IconCompat! getShortcutIcon(String!) throws java.lang.Exception;
+    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeAllShortcuts();
+    method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
 }
diff --git a/sharetarget/src/main/java/androidx/sharetarget/ShortcutInfoCompatSaverImpl.java b/sharetarget/src/main/java/androidx/sharetarget/ShortcutInfoCompatSaverImpl.java
index c0ef1dc..ef820f0 100644
--- a/sharetarget/src/main/java/androidx/sharetarget/ShortcutInfoCompatSaverImpl.java
+++ b/sharetarget/src/main/java/androidx/sharetarget/ShortcutInfoCompatSaverImpl.java
@@ -62,7 +62,7 @@
 @RequiresApi(19)
 @RestrictTo(LIBRARY_GROUP_PREFIX)
 //TODO: we need Futures.addCallback and CallbackToFutureAdapter, update once they're available
-public class ShortcutInfoCompatSaverImpl extends ShortcutInfoCompatSaver {
+public class ShortcutInfoCompatSaverImpl extends ShortcutInfoCompatSaver<ListenableFuture<Void>> {
 
     static final String TAG = "ShortcutInfoCompatSaver";
 
diff --git a/slices/core/src/main/res/values-eu/strings.xml b/slices/core/src/main/res/values-eu/strings.xml
index 3329fa5..55e4c59d 100644
--- a/slices/core/src/main/res/values-eu/strings.xml
+++ b/slices/core/src/main/res/values-eu/strings.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="abc_slices_permission_request" msgid="3604847235923472451">"<xliff:g id="APP_0">%1$s</xliff:g> aplikazioak <xliff:g id="APP_2">%2$s</xliff:g> aplikazioaren zatiak erakutsi nahi ditu"</string>
-    <string name="abc_slice_permission_title" msgid="4175332421259324948">"<xliff:g id="APP_0">%1$s</xliff:g> aplikazioari <xliff:g id="APP_2">%2$s</xliff:g> aplikazioaren zatiak erakustea baimendu nahi diozu?"</string>
+    <string name="abc_slice_permission_title" msgid="4175332421259324948">"<xliff:g id="APP_0">%1$s</xliff:g> aplikazioari <xliff:g id="APP_2">%2$s</xliff:g> aplikazioaren zatiak erakusteko baimena eman nahi diozu?"</string>
     <string name="abc_slice_permission_text_1" msgid="4525743640399572811">"- <xliff:g id="APP">%1$s</xliff:g> aplikazioaren informazioa irakur dezake."</string>
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- <xliff:g id="APP">%1$s</xliff:g> aplikazioan ekintzak gauza ditzake."</string>
     <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"Baimendu <xliff:g id="APP">%1$s</xliff:g> aplikazioari edozein aplikazioren zatiak erakustea"</string>
diff --git a/slices/core/src/main/res/values-it/strings.xml b/slices/core/src/main/res/values-it/strings.xml
index 57540ce..333547d 100644
--- a/slices/core/src/main/res/values-it/strings.xml
+++ b/slices/core/src/main/res/values-it/strings.xml
@@ -23,5 +23,5 @@
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- Può compiere azioni nell\'app <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"Consenti all\'app <xliff:g id="APP">%1$s</xliff:g> di mostrare porzioni di qualsiasi app"</string>
     <string name="abc_slice_permission_allow" msgid="5024599872061409708">"Consenti"</string>
-    <string name="abc_slice_permission_deny" msgid="3819478292430407705">"Nega"</string>
+    <string name="abc_slice_permission_deny" msgid="3819478292430407705">"Rifiuta"</string>
 </resources>
diff --git a/slices/core/src/main/res/values-ta/strings.xml b/slices/core/src/main/res/values-ta/strings.xml
index 8ab82bd..0c8d874 100644
--- a/slices/core/src/main/res/values-ta/strings.xml
+++ b/slices/core/src/main/res/values-ta/strings.xml
@@ -17,11 +17,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="abc_slices_permission_request" msgid="3604847235923472451">"<xliff:g id="APP_2">%2$s</xliff:g> பயன்பாட்டின் விழிப்பூட்டல்களைக் காண்பிக்க, <xliff:g id="APP_0">%1$s</xliff:g> அனுமதி கேட்கிறது"</string>
-    <string name="abc_slice_permission_title" msgid="4175332421259324948">"<xliff:g id="APP_2">%2$s</xliff:g> பயன்பாட்டின் விழிப்பூட்டல்களைக் காண்பிக்க, <xliff:g id="APP_0">%1$s</xliff:g> பயன்பாட்டை அனுமதிக்கவா?"</string>
+    <string name="abc_slices_permission_request" msgid="3604847235923472451">"<xliff:g id="APP_2">%2$s</xliff:g> ஆப்ஸின் விழிப்பூட்டல்களைக் காண்பிக்க, <xliff:g id="APP_0">%1$s</xliff:g> அனுமதி கேட்கிறது"</string>
+    <string name="abc_slice_permission_title" msgid="4175332421259324948">"<xliff:g id="APP_2">%2$s</xliff:g> ஆப்ஸின் விழிப்பூட்டல்களைக் காண்பிக்க, <xliff:g id="APP_0">%1$s</xliff:g> ஆப்ஸை அனுமதிக்கவா?"</string>
     <string name="abc_slice_permission_text_1" msgid="4525743640399572811">"- இது, <xliff:g id="APP">%1$s</xliff:g> பயன்பாட்டிலிருக்கும் தகவலைப் படிக்கும்"</string>
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- இது, <xliff:g id="APP">%1$s</xliff:g> பயன்பாட்டிற்குள் செயல்பாடுகளில் ஈடுபடும்"</string>
-    <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"எந்தப் பயன்பாட்டிலிருந்தும் விழிப்பூட்டல்களைக் காண்பிக்க, <xliff:g id="APP">%1$s</xliff:g> பயன்பாட்டை அனுமதி"</string>
+    <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"எந்தப் பயன்பாட்டிலிருந்தும் விழிப்பூட்டல்களைக் காண்பிக்க, <xliff:g id="APP">%1$s</xliff:g> ஆப்ஸை அனுமதி"</string>
     <string name="abc_slice_permission_allow" msgid="5024599872061409708">"அனுமதி"</string>
     <string name="abc_slice_permission_deny" msgid="3819478292430407705">"நிராகரி"</string>
 </resources>
diff --git a/slices/view/src/main/res/values-af/strings.xml b/slices/view/src/main/res/values-af/strings.xml
index cfe8138..fb3b6db 100644
--- a/slices/view/src/main/res/values-af/strings.xml
+++ b/slices/view/src/main/res/values-af/strings.xml
@@ -22,8 +22,8 @@
     <string name="abc_slice_show_more" msgid="1567717014004692768">"Wys meer"</string>
     <string name="abc_slice_updated" msgid="8155085405396453848">"Opgedateer om <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <plurals name="abc_slice_duration_min" formatted="false" msgid="6996334305156847955">
-      <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> min. gelede</item>
-      <item quantity="one"><xliff:g id="ID_1">%d</xliff:g> min. gelede</item>
+      <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> m. gelede</item>
+      <item quantity="one"><xliff:g id="ID_1">%d</xliff:g> m. gelede</item>
     </plurals>
     <plurals name="abc_slice_duration_years" formatted="false" msgid="6212691832333991589">
       <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> jaar gelede</item>
diff --git a/slices/view/src/main/res/values-as/strings.xml b/slices/view/src/main/res/values-as/strings.xml
index dbc598f..78cc260 100644
--- a/slices/view/src/main/res/values-as/strings.xml
+++ b/slices/view/src/main/res/values-as/strings.xml
@@ -20,7 +20,7 @@
     <string name="abc_slice_more_content" msgid="6405516388971241142">"+ <xliff:g id="NUMBER">%1$d</xliff:g>"</string>
     <string name="abc_slice_more" msgid="1983560225998630901">"অধিক"</string>
     <string name="abc_slice_show_more" msgid="1567717014004692768">"অধিক দেখুৱাওক"</string>
-    <string name="abc_slice_updated" msgid="8155085405396453848">"<xliff:g id="TIME">%1$s</xliff:g> আপডেট কৰা হৈছিল"</string>
+    <string name="abc_slice_updated" msgid="8155085405396453848">"<xliff:g id="TIME">%1$s</xliff:g> আপডে’ট কৰা হৈছিল"</string>
     <plurals name="abc_slice_duration_min" formatted="false" msgid="6996334305156847955">
       <item quantity="one"><xliff:g id="ID_2">%d</xliff:g> মিনিট আগেয়ে</item>
       <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> মিনিট আগেয়ে</item>
diff --git a/slices/view/src/main/res/values-eu/strings.xml b/slices/view/src/main/res/values-eu/strings.xml
index 5e0642c..4a7f780 100644
--- a/slices/view/src/main/res/values-eu/strings.xml
+++ b/slices/view/src/main/res/values-eu/strings.xml
@@ -22,8 +22,8 @@
     <string name="abc_slice_show_more" msgid="1567717014004692768">"Erakutsi gehiago"</string>
     <string name="abc_slice_updated" msgid="8155085405396453848">"Azken eguneratzea: <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <plurals name="abc_slice_duration_min" formatted="false" msgid="6996334305156847955">
-      <item quantity="other">Duela <xliff:g id="ID_2">%d</xliff:g> minutu</item>
-      <item quantity="one">Duela <xliff:g id="ID_1">%d</xliff:g> minutu</item>
+      <item quantity="other">Duela <xliff:g id="ID_2">%d</xliff:g> min</item>
+      <item quantity="one">Duela <xliff:g id="ID_1">%d</xliff:g> min</item>
     </plurals>
     <plurals name="abc_slice_duration_years" formatted="false" msgid="6212691832333991589">
       <item quantity="other">Duela <xliff:g id="ID_2">%d</xliff:g> urte</item>
diff --git a/slices/view/src/main/res/values-mr/strings.xml b/slices/view/src/main/res/values-mr/strings.xml
index 80aa0a7..54d042c 100644
--- a/slices/view/src/main/res/values-mr/strings.xml
+++ b/slices/view/src/main/res/values-mr/strings.xml
@@ -22,16 +22,16 @@
     <string name="abc_slice_show_more" msgid="1567717014004692768">"आणखी दाखवा"</string>
     <string name="abc_slice_updated" msgid="8155085405396453848">"<xliff:g id="TIME">%1$s</xliff:g> ला अपडेट केले"</string>
     <plurals name="abc_slice_duration_min" formatted="false" msgid="6996334305156847955">
-      <item quantity="one"><xliff:g id="ID_2">%d</xliff:g> मिनिटापूर्वी</item>
       <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> मिनिटांपूर्वी</item>
+      <item quantity="one"><xliff:g id="ID_1">%d</xliff:g> मिनिटापूर्वी</item>
     </plurals>
     <plurals name="abc_slice_duration_years" formatted="false" msgid="6212691832333991589">
-      <item quantity="one"><xliff:g id="ID_2">%d</xliff:g> वर्षापूर्वी</item>
       <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> वर्षांपूर्वी</item>
+      <item quantity="one"><xliff:g id="ID_1">%d</xliff:g> वर्षापूर्वी</item>
     </plurals>
     <plurals name="abc_slice_duration_days" formatted="false" msgid="6241698511167107334">
-      <item quantity="one"><xliff:g id="ID_2">%d</xliff:g> दिवसापूर्वी</item>
       <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> दिवसांपूर्वी</item>
+      <item quantity="one"><xliff:g id="ID_1">%d</xliff:g> दिवसापूर्वी</item>
     </plurals>
     <string name="abc_slice_error" msgid="4188371422904147368">"कनेक्ट करता आले नाही"</string>
 </resources>
diff --git a/textclassifier/src/main/res/values-am/strings.xml b/textclassifier/src/main/res/values-am/strings.xml
index 7218771..831ac2b 100644
--- a/textclassifier/src/main/res/values-am/strings.xml
+++ b/textclassifier/src/main/res/values-am/strings.xml
@@ -19,7 +19,7 @@
     <string name="email" msgid="5568050657313893478">"ኢሜይል"</string>
     <string name="email_desc" msgid="6941280589171810022">"ለተመረጡ አድራሻዎች ኢሜይል ላክ"</string>
     <string name="dial" msgid="7317293545368448453">"ደውል"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"ወደተመረጠው ስልክ ቁጥር ደውል"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"ወደ ተመረጠው ስልክ ቁጥር ደውል"</string>
     <string name="browse" msgid="3733970143542020945">"ክፈት"</string>
     <string name="browse_desc" msgid="3898254913938219011">"የተመረጠውን ዩአርኤል ክፈት"</string>
     <string name="sms" msgid="5495416906312064886">"መልዕክት"</string>
diff --git a/textclassifier/src/main/res/values-ar/strings.xml b/textclassifier/src/main/res/values-ar/strings.xml
index b2569b9..52fb7d7 100644
--- a/textclassifier/src/main/res/values-ar/strings.xml
+++ b/textclassifier/src/main/res/values-ar/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"البريد الإلكتروني"</string>
+    <string name="email" msgid="5568050657313893478">"إرسال بريد إلكتروني"</string>
     <string name="email_desc" msgid="6941280589171810022">"مراسلة العنوان المحدد عبر البريد الإلكتروني"</string>
     <string name="dial" msgid="7317293545368448453">"اتصال"</string>
     <string name="dial_desc" msgid="5129451396208040332">"الاتصال برقم الهاتف المحدد"</string>
     <string name="browse" msgid="3733970143542020945">"فتح"</string>
     <string name="browse_desc" msgid="3898254913938219011">"‏فتح عنوان URL المحدد"</string>
-    <string name="sms" msgid="5495416906312064886">"رسالة"</string>
+    <string name="sms" msgid="5495416906312064886">"إرسال رسائل قصيرة"</string>
     <string name="sms_desc" msgid="8293660783374489324">"مراسلة رقم الهاتف المحدد"</string>
     <string name="add_contact" msgid="9005634177208282449">"إضافة"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"إضافة إلى جهات الاتصال"</string>
diff --git a/textclassifier/src/main/res/values-as/strings.xml b/textclassifier/src/main/res/values-as/strings.xml
new file mode 100644
index 0000000..7f52871
--- /dev/null
+++ b/textclassifier/src/main/res/values-as/strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2018 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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="email" msgid="5568050657313893478">"ইমেইল কৰক"</string>
+    <string name="email_desc" msgid="6941280589171810022">"বাছনি কৰা ঠিকনালৈ ইমেইল পঠিয়াওক"</string>
+    <string name="dial" msgid="7317293545368448453">"কল কৰক"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"বাছনি কৰা ফ\'ন নম্বৰত কল কৰক"</string>
+    <string name="browse" msgid="3733970143542020945">"খোলক"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"বাছনি কৰা URL খোলক"</string>
+    <string name="sms" msgid="5495416906312064886">"বাৰ্তা পঠিয়াওক"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"বাছনি কৰা ফ’ন নম্বৰলৈ বাৰ্তা পঠিয়াওক"</string>
+    <string name="add_contact" msgid="9005634177208282449">"যোগ কৰক"</string>
+    <string name="add_contact_desc" msgid="2475604767309086575">"সর্ম্পকসূচীত যোগ কৰক"</string>
+    <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"অধিক বিকল্প"</string>
+    <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"অভাৰফ্ল\' বন্ধ কৰক"</string>
+    <string name="abc_share" msgid="7091841667818715717">"শ্বেয়াৰ কৰক"</string>
+</resources>
diff --git a/textclassifier/src/main/res/values-az/strings.xml b/textclassifier/src/main/res/values-az/strings.xml
index e8b583e..b8de8f8 100644
--- a/textclassifier/src/main/res/values-az/strings.xml
+++ b/textclassifier/src/main/res/values-az/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-poçt"</string>
+    <string name="email" msgid="5568050657313893478">"E-poçt yazın"</string>
     <string name="email_desc" msgid="6941280589171810022">"Seçilmiş ünvana e-məktub yazın"</string>
     <string name="dial" msgid="7317293545368448453">"Zəng edin"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Seçilmiş telefon nömrəsinə zəng edin"</string>
     <string name="browse" msgid="3733970143542020945">"Açın"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Seçilmiş linki açın"</string>
-    <string name="sms" msgid="5495416906312064886">"Mesaj"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Seçilmiş telefon nömrəsini mesajla göndərin"</string>
+    <string name="sms" msgid="5495416906312064886">"Mesaj yazın"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Seçilmiş telefon nömrəsinə mesaj göndərin"</string>
     <string name="add_contact" msgid="9005634177208282449">"Əlavə edin"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Kontakta əlavə edin"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Digər seçimlər"</string>
diff --git a/textclassifier/src/main/res/values-bs/strings.xml b/textclassifier/src/main/res/values-bs/strings.xml
index 0bc610f8..0ad050a 100644
--- a/textclassifier/src/main/res/values-bs/strings.xml
+++ b/textclassifier/src/main/res/values-bs/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-pošta"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Pošaljite e-poruku na odabrane adrese"</string>
-    <string name="dial" msgid="7317293545368448453">"Poziv"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Pozovite odabrani broj telefona"</string>
+    <string name="email" msgid="5568050657313893478">"Pošalji e-poruku"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Pošalji e-poruku na odabranu adresu"</string>
+    <string name="dial" msgid="7317293545368448453">"Pozovi"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Pozovi odabrani broj telefona"</string>
     <string name="browse" msgid="3733970143542020945">"Otvori"</string>
-    <string name="browse_desc" msgid="3898254913938219011">"Otvorite odabrani URL"</string>
-    <string name="sms" msgid="5495416906312064886">"Poruka"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Pošaljite poruku odabranom broju telefona"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"Otvori odabrani URL"</string>
+    <string name="sms" msgid="5495416906312064886">"Pošalji SMS"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Pošalji SMS odabranom broju telefona"</string>
     <string name="add_contact" msgid="9005634177208282449">"Dodaj"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Dodaj u kontakte"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Više opcija"</string>
diff --git a/textclassifier/src/main/res/values-ca/strings.xml b/textclassifier/src/main/res/values-ca/strings.xml
index 0f2cf5ab..e4932cb 100644
--- a/textclassifier/src/main/res/values-ca/strings.xml
+++ b/textclassifier/src/main/res/values-ca/strings.xml
@@ -22,7 +22,7 @@
     <string name="dial_desc" msgid="5129451396208040332">"Truca al número de telèfon seleccionat"</string>
     <string name="browse" msgid="3733970143542020945">"Obre"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Obre l\'URL seleccionat"</string>
-    <string name="sms" msgid="5495416906312064886">"Missatge"</string>
+    <string name="sms" msgid="5495416906312064886">"Envia un SMS"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Envia un missatge al número de telèfon seleccionat"</string>
     <string name="add_contact" msgid="9005634177208282449">"Afegeix"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Afegeix als contactes"</string>
diff --git a/textclassifier/src/main/res/values-cs/strings.xml b/textclassifier/src/main/res/values-cs/strings.xml
index cc7360f..757a68d 100644
--- a/textclassifier/src/main/res/values-cs/strings.xml
+++ b/textclassifier/src/main/res/values-cs/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E‑mail"</string>
+    <string name="email" msgid="5568050657313893478">"Poslat e-mail"</string>
     <string name="email_desc" msgid="6941280589171810022">"Napsat na vybranou e‑mailovou adresu"</string>
-    <string name="dial" msgid="7317293545368448453">"Volat"</string>
+    <string name="dial" msgid="7317293545368448453">"Zavolat"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Zavolat na vybrané telefonní číslo"</string>
     <string name="browse" msgid="3733970143542020945">"Otevřít"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Otevřít vybranou adresu URL"</string>
-    <string name="sms" msgid="5495416906312064886">"Zpráva"</string>
+    <string name="sms" msgid="5495416906312064886">"Napsat zprávu"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Napsat SMS na vybrané telefonní číslo"</string>
     <string name="add_contact" msgid="9005634177208282449">"Přidat"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Přidat do kontaktů"</string>
diff --git a/textclassifier/src/main/res/values-da/strings.xml b/textclassifier/src/main/res/values-da/strings.xml
index 50e7f3d..d519fc9 100644
--- a/textclassifier/src/main/res/values-da/strings.xml
+++ b/textclassifier/src/main/res/values-da/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Mail"</string>
+    <string name="email" msgid="5568050657313893478">"Send mail"</string>
     <string name="email_desc" msgid="6941280589171810022">"Send en mail til den valgte adresse"</string>
-    <string name="dial" msgid="7317293545368448453">"Opkald"</string>
+    <string name="dial" msgid="7317293545368448453">"Ring op"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Ring til det valgte telefonnummer"</string>
     <string name="browse" msgid="3733970143542020945">"Åbn"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Åbn den valgte webadresse"</string>
-    <string name="sms" msgid="5495416906312064886">"Besked"</string>
+    <string name="sms" msgid="5495416906312064886">"Send besked"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Send en besked til det valgte telefonnummer"</string>
     <string name="add_contact" msgid="9005634177208282449">"Tilføj"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Føj til kontakter"</string>
diff --git a/textclassifier/src/main/res/values-de/strings.xml b/textclassifier/src/main/res/values-de/strings.xml
index 373ba36..463609c 100644
--- a/textclassifier/src/main/res/values-de/strings.xml
+++ b/textclassifier/src/main/res/values-de/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-Mail"</string>
+    <string name="email" msgid="5568050657313893478">"E-Mail senden"</string>
     <string name="email_desc" msgid="6941280589171810022">"E-Mail an ausgewählte Adresse senden"</string>
     <string name="dial" msgid="7317293545368448453">"Anruf"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Ausgewählte Telefonnummer anrufen"</string>
     <string name="browse" msgid="3733970143542020945">"Öffnen"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Ausgewählte URL öffnen"</string>
-    <string name="sms" msgid="5495416906312064886">"SMS"</string>
+    <string name="sms" msgid="5495416906312064886">"SMS senden"</string>
     <string name="sms_desc" msgid="8293660783374489324">"SMS an ausgewählte Telefonnummer senden"</string>
     <string name="add_contact" msgid="9005634177208282449">"Hinzufügen"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Zu Kontakten hinzufügen"</string>
diff --git a/textclassifier/src/main/res/values-es/strings.xml b/textclassifier/src/main/res/values-es/strings.xml
index 007e62e..dd4c644 100644
--- a/textclassifier/src/main/res/values-es/strings.xml
+++ b/textclassifier/src/main/res/values-es/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Correo electrónico"</string>
+    <string name="email" msgid="5568050657313893478">"Enviar correo"</string>
     <string name="email_desc" msgid="6941280589171810022">"Enviar un correo electrónico a la dirección seleccionada"</string>
     <string name="dial" msgid="7317293545368448453">"Llamar"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Llamar al número de teléfono seleccionado"</string>
     <string name="browse" msgid="3733970143542020945">"Abrir"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Abrir la URL seleccionada"</string>
-    <string name="sms" msgid="5495416906312064886">"Mensaje"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Enviar un mensaje al número de teléfono seleccionado"</string>
+    <string name="sms" msgid="5495416906312064886">"Enviar SMS"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Enviar SMS al teléfono seleccionado"</string>
     <string name="add_contact" msgid="9005634177208282449">"Añadir"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Añadir a contactos"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Más opciones"</string>
diff --git a/textclassifier/src/main/res/values-et/strings.xml b/textclassifier/src/main/res/values-et/strings.xml
index da2ecfb..b4b2e29 100644
--- a/textclassifier/src/main/res/values-et/strings.xml
+++ b/textclassifier/src/main/res/values-et/strings.xml
@@ -16,16 +16,16 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-post"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Valitud aadressile meili saatmine"</string>
-    <string name="dial" msgid="7317293545368448453">"Kõne"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Valitud telefoninumbrile helistamine"</string>
+    <string name="email" msgid="5568050657313893478">"Saada meil"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Saada valitud aadressile meil"</string>
+    <string name="dial" msgid="7317293545368448453">"Helista"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Helista valitud telefoninumbrile"</string>
     <string name="browse" msgid="3733970143542020945">"Ava"</string>
-    <string name="browse_desc" msgid="3898254913938219011">"Valitud URL-i avamine"</string>
-    <string name="sms" msgid="5495416906312064886">"Sõnum"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Valitud telefoninumbrile sõnumi saatmine"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"Ava valitud URL"</string>
+    <string name="sms" msgid="5495416906312064886">"Saada sõnum"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Saada valitud telefoninumbrile sõnum"</string>
     <string name="add_contact" msgid="9005634177208282449">"Lisa"</string>
-    <string name="add_contact_desc" msgid="2475604767309086575">"Lisamine kontaktidesse"</string>
+    <string name="add_contact_desc" msgid="2475604767309086575">"Lisa kontaktidesse"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Rohkem valikuid"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"Ületäite sulgemine"</string>
     <string name="abc_share" msgid="7091841667818715717">"Jaga"</string>
diff --git a/textclassifier/src/main/res/values-eu/strings.xml b/textclassifier/src/main/res/values-eu/strings.xml
index 0cfaf81..5b98777 100644
--- a/textclassifier/src/main/res/values-eu/strings.xml
+++ b/textclassifier/src/main/res/values-eu/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Bidali mezu elektroniko bat"</string>
+    <string name="email" msgid="5568050657313893478">"Bidali mezu bat"</string>
     <string name="email_desc" msgid="6941280589171810022">"Bidali mezu elektroniko bat hautatutako helbidera"</string>
     <string name="dial" msgid="7317293545368448453">"Deitu"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Deitu hautatutako telefono-zenbakira"</string>
diff --git a/textclassifier/src/main/res/values-fa/strings.xml b/textclassifier/src/main/res/values-fa/strings.xml
index f9d259f..0c01dc6 100644
--- a/textclassifier/src/main/res/values-fa/strings.xml
+++ b/textclassifier/src/main/res/values-fa/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ایمیل"</string>
+    <string name="email" msgid="5568050657313893478">"فرستادن ایمیل"</string>
     <string name="email_desc" msgid="6941280589171810022">"ارسال ایمیل به نشانی انتخابی"</string>
-    <string name="dial" msgid="7317293545368448453">"تماس"</string>
+    <string name="dial" msgid="7317293545368448453">"تماس گرفتن"</string>
     <string name="dial_desc" msgid="5129451396208040332">"تماس با شماره تلفن انتخابی"</string>
     <string name="browse" msgid="3733970143542020945">"باز کردن"</string>
     <string name="browse_desc" msgid="3898254913938219011">"باز کردن نشانی وب انتخابی"</string>
-    <string name="sms" msgid="5495416906312064886">"پیام"</string>
+    <string name="sms" msgid="5495416906312064886">"فرستادن پیام"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ارسال پیام به شماره تلفن انتخابی"</string>
     <string name="add_contact" msgid="9005634177208282449">"افزودن"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"افزودن به مخاطبین"</string>
diff --git a/textclassifier/src/main/res/values-fr-rCA/strings.xml b/textclassifier/src/main/res/values-fr-rCA/strings.xml
index d1ff08c..d56c13f 100644
--- a/textclassifier/src/main/res/values-fr-rCA/strings.xml
+++ b/textclassifier/src/main/res/values-fr-rCA/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Courriel"</string>
+    <string name="email" msgid="5568050657313893478">"Envoyer un courriel"</string>
     <string name="email_desc" msgid="6941280589171810022">"Envoyer un courriel à l\'adresse sélectionnée"</string>
     <string name="dial" msgid="7317293545368448453">"Appeler"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Téléphoner au numéro sélectionné"</string>
     <string name="browse" msgid="3733970143542020945">"Ouvrir"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Ouvrir l\'adresse URL sélectionnée"</string>
-    <string name="sms" msgid="5495416906312064886">"Message"</string>
+    <string name="sms" msgid="5495416906312064886">"Envoyer un texto"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Envoyer un message texte au numéro de téléphone sélectionné"</string>
     <string name="add_contact" msgid="9005634177208282449">"Ajouter"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Ajouter aux contacts"</string>
diff --git a/textclassifier/src/main/res/values-fr/strings.xml b/textclassifier/src/main/res/values-fr/strings.xml
index 87beba5..8fc7a9a 100644
--- a/textclassifier/src/main/res/values-fr/strings.xml
+++ b/textclassifier/src/main/res/values-fr/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-mail"</string>
+    <string name="email" msgid="5568050657313893478">"Envoyer un e-mail"</string>
     <string name="email_desc" msgid="6941280589171810022">"Envoyer un e-mail à l\'adresse sélectionnée"</string>
     <string name="dial" msgid="7317293545368448453">"Appeler"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Appeler le numéro de téléphone sélectionné"</string>
     <string name="browse" msgid="3733970143542020945">"Ouvrir"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Ouvrir l\'URL sélectionnée"</string>
-    <string name="sms" msgid="5495416906312064886">"Message"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Envoyer un message au numéro de téléphone sélectionné"</string>
+    <string name="sms" msgid="5495416906312064886">"Envoyer un SMS"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Envoyer un SMS au numéro de téléphone sélectionné"</string>
     <string name="add_contact" msgid="9005634177208282449">"Ajouter"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Ajouter aux contacts"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Autres options"</string>
diff --git a/textclassifier/src/main/res/values-gl/strings.xml b/textclassifier/src/main/res/values-gl/strings.xml
index b17e574..2c4385c 100644
--- a/textclassifier/src/main/res/values-gl/strings.xml
+++ b/textclassifier/src/main/res/values-gl/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Correo electrónico"</string>
+    <string name="email" msgid="5568050657313893478">"Enviar correo e."</string>
     <string name="email_desc" msgid="6941280589171810022">"Envía un correo electrónico ao enderezo seleccionado"</string>
     <string name="dial" msgid="7317293545368448453">"Chamar"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Chama ao número de teléfono seleccionado"</string>
     <string name="browse" msgid="3733970143542020945">"Abrir"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Abre o URL seleccionado"</string>
-    <string name="sms" msgid="5495416906312064886">"Enviar mensaxe"</string>
+    <string name="sms" msgid="5495416906312064886">"Enviar SMS"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Envía unha mensaxe ao número de teléfono seleccionado"</string>
     <string name="add_contact" msgid="9005634177208282449">"Engadir"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Engade o elemento aos contactos"</string>
diff --git a/textclassifier/src/main/res/values-gu/strings.xml b/textclassifier/src/main/res/values-gu/strings.xml
index 84ec7d3..c92cbd17 100644
--- a/textclassifier/src/main/res/values-gu/strings.xml
+++ b/textclassifier/src/main/res/values-gu/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ઇમેઇલ"</string>
+    <string name="email" msgid="5568050657313893478">"ઇમેઇલ કરો"</string>
     <string name="email_desc" msgid="6941280589171810022">"પસંદ કરેલા ઍડ્રેસ પર ઇમેઇલ મોકલો"</string>
-    <string name="dial" msgid="7317293545368448453">"કૉલ"</string>
+    <string name="dial" msgid="7317293545368448453">"કૉલ કરો"</string>
     <string name="dial_desc" msgid="5129451396208040332">"પસંદ કરેલા ફોન નંબર પર કૉલ કરો"</string>
     <string name="browse" msgid="3733970143542020945">"ખોલો"</string>
     <string name="browse_desc" msgid="3898254913938219011">"પસંદ કરેલું URL ખોલો"</string>
-    <string name="sms" msgid="5495416906312064886">"સંદેશ"</string>
+    <string name="sms" msgid="5495416906312064886">"સંદેશ મોકલો"</string>
     <string name="sms_desc" msgid="8293660783374489324">"પસંદ કરેલા ફોન નંબર પર સંદેશ મોકલો"</string>
     <string name="add_contact" msgid="9005634177208282449">"ઉમેરો"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"સંપર્કોમાં ઉમેરો"</string>
diff --git a/textclassifier/src/main/res/values-hi/strings.xml b/textclassifier/src/main/res/values-hi/strings.xml
index 0d3da9e2..e9cf510 100644
--- a/textclassifier/src/main/res/values-hi/strings.xml
+++ b/textclassifier/src/main/res/values-hi/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ईमेल"</string>
+    <string name="email" msgid="5568050657313893478">"ईमेल करें"</string>
     <string name="email_desc" msgid="6941280589171810022">"चुने गए पते पर ईमेल भेजें"</string>
     <string name="dial" msgid="7317293545368448453">"कॉल करें"</string>
     <string name="dial_desc" msgid="5129451396208040332">"चुने गए फ़ोन नंबर पर कॉल करें"</string>
     <string name="browse" msgid="3733970143542020945">"खोलें"</string>
     <string name="browse_desc" msgid="3898254913938219011">"चुना गया यूआरएल खोलें"</string>
-    <string name="sms" msgid="5495416906312064886">"मैसेज"</string>
+    <string name="sms" msgid="5495416906312064886">"मैसेज करें"</string>
     <string name="sms_desc" msgid="8293660783374489324">"चुने गए फ़ोन नंबर को मैसेज करें"</string>
     <string name="add_contact" msgid="9005634177208282449">"जोड़ें"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"संपर्क सूची में जोड़ें"</string>
diff --git a/textclassifier/src/main/res/values-hr/strings.xml b/textclassifier/src/main/res/values-hr/strings.xml
index 197bf47..0a05d23 100644
--- a/textclassifier/src/main/res/values-hr/strings.xml
+++ b/textclassifier/src/main/res/values-hr/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-pošta"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Slanje e-poruke na odabranu adresu"</string>
-    <string name="dial" msgid="7317293545368448453">"Poziv"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Pozivanje odabranog telefonskog broja"</string>
+    <string name="email" msgid="5568050657313893478">"Pošalji e-poštu"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Pošalji e-poštu na odabranu adresu"</string>
+    <string name="dial" msgid="7317293545368448453">"Nazovi"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Nazovi odabrani telefonski broj"</string>
     <string name="browse" msgid="3733970143542020945">"Otvori"</string>
-    <string name="browse_desc" msgid="3898254913938219011">"Otvaranje odabranog URL-a"</string>
-    <string name="sms" msgid="5495416906312064886">"Poruka"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Slanje poruke na odabrani telefonski broj"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"Otvori odabrani URL"</string>
+    <string name="sms" msgid="5495416906312064886">"Pošalji poruku"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Pošalji poruku na odabrani telefonski broj"</string>
     <string name="add_contact" msgid="9005634177208282449">"Dodaj"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Dodaj u kontakte"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Više opcija"</string>
diff --git a/textclassifier/src/main/res/values-hu/strings.xml b/textclassifier/src/main/res/values-hu/strings.xml
index b58ea3c..59d8bf4 100644
--- a/textclassifier/src/main/res/values-hu/strings.xml
+++ b/textclassifier/src/main/res/values-hu/strings.xml
@@ -17,7 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="email" msgid="5568050657313893478">"E-mail"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Kiválasztott cím elküldése e-mailben"</string>
+    <string name="email_desc" msgid="6941280589171810022">"E-mail küldése a kiválasztott címre"</string>
     <string name="dial" msgid="7317293545368448453">"Hívás"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Kiválasztott telefonszám hívása"</string>
     <string name="browse" msgid="3733970143542020945">"Megnyitás"</string>
diff --git a/textclassifier/src/main/res/values-hy/strings.xml b/textclassifier/src/main/res/values-hy/strings.xml
index a3b204e..d7317e8 100644
--- a/textclassifier/src/main/res/values-hy/strings.xml
+++ b/textclassifier/src/main/res/values-hy/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="email" msgid="5568050657313893478">"Էլփոստ"</string>
     <string name="email_desc" msgid="6941280589171810022">"Նամակ ուղարկել ընտրված հասցեին"</string>
-    <string name="dial" msgid="7317293545368448453">"Զանգ"</string>
+    <string name="dial" msgid="7317293545368448453">"Զանգել"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Զանգել ընտրված հեռախոսահամարին"</string>
     <string name="browse" msgid="3733970143542020945">"Բացել"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Բացել ընտրված URL-ը"</string>
diff --git a/textclassifier/src/main/res/values-in/strings.xml b/textclassifier/src/main/res/values-in/strings.xml
index ea214c8..85dbb52 100644
--- a/textclassifier/src/main/res/values-in/strings.xml
+++ b/textclassifier/src/main/res/values-in/strings.xml
@@ -17,13 +17,13 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="email" msgid="5568050657313893478">"Email"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Mengirimkan email ke alamat yang dipilih"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Kirim email ke alamat yang dipilih"</string>
     <string name="dial" msgid="7317293545368448453">"Panggil"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Memanggil nomor telepon yang dipilih"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Panggil nomor telepon yang dipilih"</string>
     <string name="browse" msgid="3733970143542020945">"Buka"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Buka URL yang dipilih"</string>
     <string name="sms" msgid="5495416906312064886">"Pesan"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Mengirimkan SMS ke nomor telepon yang dipilih"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Kirim SMS ke nomor telepon yang dipilih"</string>
     <string name="add_contact" msgid="9005634177208282449">"Tambahkan"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Tambahkan ke kontak"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Opsi lain"</string>
diff --git a/textclassifier/src/main/res/values-iw/strings.xml b/textclassifier/src/main/res/values-iw/strings.xml
index 84df5c1..b577732 100644
--- a/textclassifier/src/main/res/values-iw/strings.xml
+++ b/textclassifier/src/main/res/values-iw/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"אימייל"</string>
+    <string name="email" msgid="5568050657313893478">"התכתבות באימייל"</string>
     <string name="email_desc" msgid="6941280589171810022">"שליחת אימייל לכתובת שנבחרה"</string>
-    <string name="dial" msgid="7317293545368448453">"שיחה"</string>
+    <string name="dial" msgid="7317293545368448453">"ביצוע שיחה"</string>
     <string name="dial_desc" msgid="5129451396208040332">"התקשרות למספר הטלפון שנבחר"</string>
     <string name="browse" msgid="3733970143542020945">"פתיחה"</string>
     <string name="browse_desc" msgid="3898254913938219011">"פתיחה של כתובת האתר שנבחרה"</string>
-    <string name="sms" msgid="5495416906312064886">"הודעה"</string>
+    <string name="sms" msgid="5495416906312064886">"התכתבות בהודעות"</string>
     <string name="sms_desc" msgid="8293660783374489324">"שליחת הודעה למספר הטלפון שנבחר"</string>
     <string name="add_contact" msgid="9005634177208282449">"הוספה"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"הוספה לאנשי הקשר"</string>
diff --git a/textclassifier/src/main/res/values-kk/strings.xml b/textclassifier/src/main/res/values-kk/strings.xml
index 49cae0b..70a0090 100644
--- a/textclassifier/src/main/res/values-kk/strings.xml
+++ b/textclassifier/src/main/res/values-kk/strings.xml
@@ -16,16 +16,16 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Электрондық пошта"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Таңдалған электрондық пошта мекенжайына хабар жіберу"</string>
+    <string name="email" msgid="5568050657313893478">"Эл. поштаны ашу"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Таңдалған мекенжайға хабар жіберу"</string>
     <string name="dial" msgid="7317293545368448453">"Қоңырау шалу"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Таңдалған телефон нөміріне қоңырау шалу"</string>
     <string name="browse" msgid="3733970143542020945">"Ашу"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Таңдалған URL мекенжайын ашу"</string>
-    <string name="sms" msgid="5495416906312064886">"Хабар"</string>
+    <string name="sms" msgid="5495416906312064886">"Хабар жіберу"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Таңдалған телефон нөміріне хабар жіберу"</string>
-    <string name="add_contact" msgid="9005634177208282449">"Қосу"</string>
-    <string name="add_contact_desc" msgid="2475604767309086575">"Контактілерге қосу"</string>
+    <string name="add_contact" msgid="9005634177208282449">"Енгізу"</string>
+    <string name="add_contact_desc" msgid="2475604767309086575">"Контактілер тізіміне енгізу"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Басқа опциялар"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"Қосымша мәзірді жабу"</string>
     <string name="abc_share" msgid="7091841667818715717">"Бөлісу"</string>
diff --git a/textclassifier/src/main/res/values-km/strings.xml b/textclassifier/src/main/res/values-km/strings.xml
index 11fcb96..e71c64b5 100644
--- a/textclassifier/src/main/res/values-km/strings.xml
+++ b/textclassifier/src/main/res/values-km/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"អ៊ីមែល"</string>
+    <string name="email" msgid="5568050657313893478">"ផ្ញើអ៊ីមែល"</string>
     <string name="email_desc" msgid="6941280589171810022">"ផ្ញើ​អ៊ីមែល​ទៅ​អាសយដ្ឋាន​ដែល​បាន​ជ្រើសរើស"</string>
-    <string name="dial" msgid="7317293545368448453">"ហៅ"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"ហៅ​ទៅ​លេខ​ទូរសព្ទដែល​បាន​ជ្រើសរើស"</string>
+    <string name="dial" msgid="7317293545368448453">"ហៅទូរសព្ទ"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"ហៅ​ទូរសព្ទ​ទៅ​លេខ​ដែល​បាន​ជ្រើសរើស"</string>
     <string name="browse" msgid="3733970143542020945">"បើក"</string>
     <string name="browse_desc" msgid="3898254913938219011">"បើក URL ដែល​បាន​ជ្រើសរើស"</string>
-    <string name="sms" msgid="5495416906312064886">"សារ"</string>
+    <string name="sms" msgid="5495416906312064886">"ផ្ញើសារ"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ផ្ញើសារ​ទៅ​លេខ​ទូរសព្ទ​ដែល​បាន​ជ្រើសរើស"</string>
     <string name="add_contact" msgid="9005634177208282449">"បញ្ចូល"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"បញ្ចូល​ទៅ​ក្នុង​ទំនាក់ទំនង"</string>
diff --git a/textclassifier/src/main/res/values-kn/strings.xml b/textclassifier/src/main/res/values-kn/strings.xml
index 57769c7..14dfb18 100644
--- a/textclassifier/src/main/res/values-kn/strings.xml
+++ b/textclassifier/src/main/res/values-kn/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ಇಮೇಲ್"</string>
+    <string name="email" msgid="5568050657313893478">"ಇಮೇಲ್ ಮಾಡಿ"</string>
     <string name="email_desc" msgid="6941280589171810022">"ಆಯ್ಕೆಮಾಡಿದ ವಿಳಾಸಕ್ಕೆ ಇಮೇಲ್‌ ಮಾಡಿ"</string>
-    <string name="dial" msgid="7317293545368448453">"ಕರೆ"</string>
+    <string name="dial" msgid="7317293545368448453">"ಕರೆ ಮಾಡಿ"</string>
     <string name="dial_desc" msgid="5129451396208040332">"ಆಯ್ಕೆಮಾಡಿದ ಫೋನ್ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಿ"</string>
     <string name="browse" msgid="3733970143542020945">"ತೆರೆಯಿರಿ"</string>
     <string name="browse_desc" msgid="3898254913938219011">"ಆಯ್ಕೆ ಮಾಡಿದ URL ತೆರೆಯಿರಿ"</string>
-    <string name="sms" msgid="5495416906312064886">"ಸಂದೇಶ"</string>
+    <string name="sms" msgid="5495416906312064886">"ಸಂದೇಶ ಕಳುಹಿಸಿ"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ಆಯ್ಕೆಮಾಡಿದ ಫೋನ್ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶ ಕಳುಹಿಸಿ"</string>
     <string name="add_contact" msgid="9005634177208282449">"ಸೇರಿಸಿ"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸಿ"</string>
diff --git a/textclassifier/src/main/res/values-ky/strings.xml b/textclassifier/src/main/res/values-ky/strings.xml
index f0da54b..1ae09c4 100644
--- a/textclassifier/src/main/res/values-ky/strings.xml
+++ b/textclassifier/src/main/res/values-ky/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Электрондук почта"</string>
+    <string name="email" msgid="5568050657313893478">"Электрондук кат жөнөтүү"</string>
     <string name="email_desc" msgid="6941280589171810022">"Тандалган дарекке электрондук кат жөнөтүү"</string>
     <string name="dial" msgid="7317293545368448453">"Чалуу"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Тандалган телефон номерине чалуу"</string>
     <string name="browse" msgid="3733970143542020945">"Ачуу"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Тандалган URL\'ди ачуу"</string>
-    <string name="sms" msgid="5495416906312064886">"Билдирүү"</string>
+    <string name="sms" msgid="5495416906312064886">"Билдирүү жөнөтүү"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Тандалган телефон номерине билдирүү жөнөтүү"</string>
     <string name="add_contact" msgid="9005634177208282449">"Кошуу"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Байланыштарга кошуу"</string>
diff --git a/textclassifier/src/main/res/values-lt/strings.xml b/textclassifier/src/main/res/values-lt/strings.xml
index f0affddb..8055d7e 100644
--- a/textclassifier/src/main/res/values-lt/strings.xml
+++ b/textclassifier/src/main/res/values-lt/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"El. paštas"</string>
+    <string name="email" msgid="5568050657313893478">"Rašyti el. laišką"</string>
     <string name="email_desc" msgid="6941280589171810022">"Siųsti el. laišką pasirinktu adresu"</string>
     <string name="dial" msgid="7317293545368448453">"Skambinti"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Skambinti pasirinktu telefono numeriu"</string>
     <string name="browse" msgid="3733970143542020945">"Atidaryti"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Atidaryti pasirinktą URL"</string>
-    <string name="sms" msgid="5495416906312064886">"Pranešimas"</string>
+    <string name="sms" msgid="5495416906312064886">"Rašyti pranešimą"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Siųsti pranešimą pasirinktu telefono numeriu"</string>
     <string name="add_contact" msgid="9005634177208282449">"Pridėti"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Pridėti prie kontaktų"</string>
diff --git a/textclassifier/src/main/res/values-lv/strings.xml b/textclassifier/src/main/res/values-lv/strings.xml
index b3d2599..01b7230 100644
--- a/textclassifier/src/main/res/values-lv/strings.xml
+++ b/textclassifier/src/main/res/values-lv/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-pasta ziņojums"</string>
+    <string name="email" msgid="5568050657313893478">"E-pasts"</string>
     <string name="email_desc" msgid="6941280589171810022">"Nosūtīt e-pasta ziņojumu uz atlasīto adresi"</string>
     <string name="dial" msgid="7317293545368448453">"Zvans"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Zvanīt uz atlasīto tālruņa numuru"</string>
diff --git a/textclassifier/src/main/res/values-mk/strings.xml b/textclassifier/src/main/res/values-mk/strings.xml
index dc5183b..39235db 100644
--- a/textclassifier/src/main/res/values-mk/strings.xml
+++ b/textclassifier/src/main/res/values-mk/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Е-пошта"</string>
+    <string name="email" msgid="5568050657313893478">"Испрати е-пошта"</string>
     <string name="email_desc" msgid="6941280589171810022">"Испрати е-порака до избраната адреса"</string>
     <string name="dial" msgid="7317293545368448453">"Повикај"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Повикај го избраниот телефонски број"</string>
     <string name="browse" msgid="3733970143542020945">"Отвори"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Отвори ја избраната URL-адреса"</string>
-    <string name="sms" msgid="5495416906312064886">"Порака"</string>
+    <string name="sms" msgid="5495416906312064886">"Испрати порака"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Испрати порака до избраниот телефонски број"</string>
     <string name="add_contact" msgid="9005634177208282449">"Додај"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Додај во контакти"</string>
diff --git a/textclassifier/src/main/res/values-ml/strings.xml b/textclassifier/src/main/res/values-ml/strings.xml
index 1d5d95b..b8726a9 100644
--- a/textclassifier/src/main/res/values-ml/strings.xml
+++ b/textclassifier/src/main/res/values-ml/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ഇമെയിൽ"</string>
+    <string name="email" msgid="5568050657313893478">"ഇമെയിൽ അയയ്ക്കൂ"</string>
     <string name="email_desc" msgid="6941280589171810022">"തിരഞ്ഞെടുത്ത വിലാസത്തിലേക്ക് ഇമെയിൽ അയയ്ക്കുക"</string>
     <string name="dial" msgid="7317293545368448453">"വിളിക്കുക"</string>
     <string name="dial_desc" msgid="5129451396208040332">"തിരഞ്ഞെടുത്ത ഫോൺ നമ്പറിലേക്ക് വിളിക്കുക"</string>
     <string name="browse" msgid="3733970143542020945">"തുറക്കുക"</string>
     <string name="browse_desc" msgid="3898254913938219011">"തിരഞ്ഞെടുത്ത URL തുറക്കുക"</string>
-    <string name="sms" msgid="5495416906312064886">"സന്ദേശം"</string>
+    <string name="sms" msgid="5495416906312064886">"സന്ദേശം അയയ്ക്കൂ"</string>
     <string name="sms_desc" msgid="8293660783374489324">"തിരഞ്ഞെടുത്ത ഫോൺ നമ്പറിലേക്ക് സന്ദേശം അയയ്ക്കുക"</string>
     <string name="add_contact" msgid="9005634177208282449">"ചേർക്കുക"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"കോൺടാക്‌റ്റുകളിലേക്ക് ചേർക്കുക"</string>
diff --git a/textclassifier/src/main/res/values-mn/strings.xml b/textclassifier/src/main/res/values-mn/strings.xml
index c4e9d7e..9dfd17b 100644
--- a/textclassifier/src/main/res/values-mn/strings.xml
+++ b/textclassifier/src/main/res/values-mn/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Имэйл"</string>
+    <string name="email" msgid="5568050657313893478">"Имэйл бичих"</string>
     <string name="email_desc" msgid="6941280589171810022">"Сонгосон хаяг руу имэйл илгээх"</string>
     <string name="dial" msgid="7317293545368448453">"Залгах"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Сонгосон утасны дугаар руу залгах"</string>
     <string name="browse" msgid="3733970143542020945">"Нээх"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Сонгосон URL-г нээх"</string>
-    <string name="sms" msgid="5495416906312064886">"Мессеж"</string>
+    <string name="sms" msgid="5495416906312064886">"Мессеж бичих"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Сонгосон утасны дугаар руу мессеж илгээх"</string>
     <string name="add_contact" msgid="9005634177208282449">"Нэмэх"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Харилцагчид нэмэх"</string>
diff --git a/textclassifier/src/main/res/values-mr/strings.xml b/textclassifier/src/main/res/values-mr/strings.xml
index 895d1dc..11a2d55 100644
--- a/textclassifier/src/main/res/values-mr/strings.xml
+++ b/textclassifier/src/main/res/values-mr/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ईमेल"</string>
+    <string name="email" msgid="5568050657313893478">"ईमेल करा"</string>
     <string name="email_desc" msgid="6941280589171810022">"निवडलेल्या अॅड्रेसवर ईमेल करा"</string>
     <string name="dial" msgid="7317293545368448453">"कॉल करा"</string>
     <string name="dial_desc" msgid="5129451396208040332">"निवडलेल्या फोन नंबरवर कॉल करा"</string>
     <string name="browse" msgid="3733970143542020945">"उघडा"</string>
     <string name="browse_desc" msgid="3898254913938219011">"निवडलेली URL उघडा"</string>
-    <string name="sms" msgid="5495416906312064886">"मेसेज"</string>
+    <string name="sms" msgid="5495416906312064886">"मेसेज करा"</string>
     <string name="sms_desc" msgid="8293660783374489324">"निवडलेल्या फोन नंबरवर मेसेज करा"</string>
     <string name="add_contact" msgid="9005634177208282449">"जोडा"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"संपर्कांमध्ये जोडा"</string>
diff --git a/textclassifier/src/main/res/values-my/strings.xml b/textclassifier/src/main/res/values-my/strings.xml
index 9a159f0..78edba2 100644
--- a/textclassifier/src/main/res/values-my/strings.xml
+++ b/textclassifier/src/main/res/values-my/strings.xml
@@ -16,16 +16,16 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"အီးမေးလ်"</string>
+    <string name="email" msgid="5568050657313893478">"အီးမေးလ်ပို့ရန်"</string>
     <string name="email_desc" msgid="6941280589171810022">"ရွေးထားသည့် လိပ်စာသို့ အီးမေးလ်ပို့ရန်"</string>
     <string name="dial" msgid="7317293545368448453">"ခေါ်ဆိုရန်"</string>
     <string name="dial_desc" msgid="5129451396208040332">"ရွေးထားသည့် ဖုန်းနံပါတ်ကို ခေါ်ရန်"</string>
     <string name="browse" msgid="3733970143542020945">"ဖွင့်ရန်"</string>
     <string name="browse_desc" msgid="3898254913938219011">"ရွေးထားသည့် URL ကို ဖွင့်ရန်"</string>
-    <string name="sms" msgid="5495416906312064886">"မက်ဆေ့ဂျ်"</string>
+    <string name="sms" msgid="5495416906312064886">"မက်ဆေ့ဂျ်ပို့ရန်"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ရွေးထားသည့် ဖုန်းနံပါတ်ကို မက်ဆေ့ဂျ်ပို့ရန်"</string>
     <string name="add_contact" msgid="9005634177208282449">"ထည့်ရန်"</string>
-    <string name="add_contact_desc" msgid="2475604767309086575">"ထည့်ရန်"</string>
+    <string name="add_contact_desc" msgid="2475604767309086575">"အဆက်အသွယ်များသို့ ထည့်ရန်"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"နောက်ထပ် ရွေးစရာများ"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"အပိုမီနူးကို ပိတ်ရန်"</string>
     <string name="abc_share" msgid="7091841667818715717">"မျှဝေရန်"</string>
diff --git a/textclassifier/src/main/res/values-nb/strings.xml b/textclassifier/src/main/res/values-nb/strings.xml
index 31bac6e..1959f52 100644
--- a/textclassifier/src/main/res/values-nb/strings.xml
+++ b/textclassifier/src/main/res/values-nb/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-post"</string>
+    <string name="email" msgid="5568050657313893478">"Send e-post"</string>
     <string name="email_desc" msgid="6941280589171810022">"Send e-post til den valgte adressen"</string>
     <string name="dial" msgid="7317293545368448453">"Ring"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Ring det valgte telefonnummeret"</string>
     <string name="browse" msgid="3733970143542020945">"Åpne"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Åpne den valgte nettadressen"</string>
-    <string name="sms" msgid="5495416906312064886">"Melding"</string>
+    <string name="sms" msgid="5495416906312064886">"Send melding"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Send melding til det valgte telefonnummeret"</string>
     <string name="add_contact" msgid="9005634177208282449">"Legg til"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Legg til i kontakter"</string>
diff --git a/textclassifier/src/main/res/values-ne/strings.xml b/textclassifier/src/main/res/values-ne/strings.xml
index e33e441..34325fe 100644
--- a/textclassifier/src/main/res/values-ne/strings.xml
+++ b/textclassifier/src/main/res/values-ne/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"इमेल"</string>
+    <string name="email" msgid="5568050657313893478">"इमेल गर्नुहोस्"</string>
     <string name="email_desc" msgid="6941280589171810022">"चयन गरिएको ठेगानामा इमेल पठाउनुहोस्"</string>
     <string name="dial" msgid="7317293545368448453">"कल गर्नुहोस्"</string>
     <string name="dial_desc" msgid="5129451396208040332">"चयन गरिएको फोन नम्बरमा कल गर्नुहोस्"</string>
     <string name="browse" msgid="3733970143542020945">"खोल्नुहोस्"</string>
     <string name="browse_desc" msgid="3898254913938219011">"चयन गरिएको URL खोल्नुहोस्"</string>
-    <string name="sms" msgid="5495416906312064886">"सन्देश"</string>
+    <string name="sms" msgid="5495416906312064886">"सन्देश पठाउनुहोस्"</string>
     <string name="sms_desc" msgid="8293660783374489324">"चयन गरिएको फोन नम्बरमा सन्देश पठाउनुहोस्‌"</string>
     <string name="add_contact" msgid="9005634177208282449">"थप्नुहोस्"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"सम्पर्कहरूमा थप्नुहोस्"</string>
diff --git a/textclassifier/src/main/res/values-or/strings.xml b/textclassifier/src/main/res/values-or/strings.xml
index 3454944..4b3aa2c9 100644
--- a/textclassifier/src/main/res/values-or/strings.xml
+++ b/textclassifier/src/main/res/values-or/strings.xml
@@ -18,15 +18,15 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="email" msgid="5568050657313893478">"ଇମେଲ୍"</string>
     <string name="email_desc" msgid="6941280589171810022">"ଚୟନିତ ଠିକଣାକୁ ଇମେଲ୍‌ ପଠାନ୍ତୁ"</string>
-    <string name="dial" msgid="7317293545368448453">"କଲ୍ କରନ୍ତୁ"</string>
+    <string name="dial" msgid="7317293545368448453">"କଲ୍‍"</string>
     <string name="dial_desc" msgid="5129451396208040332">"ଚୟନିତ ଫୋନ୍‌ ନମ୍ବର୍‌କୁ କଲ୍‌ କରନ୍ତୁ"</string>
     <string name="browse" msgid="3733970143542020945">"ଖୋଲନ୍ତୁ"</string>
     <string name="browse_desc" msgid="3898254913938219011">"ଚୟନିତ URL ଖୋଲନ୍ତୁ"</string>
     <string name="sms" msgid="5495416906312064886">"ମେସେଜ୍"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ଚୟନିତ ଫୋନ୍‌ ନମ୍ବର୍‌କୁ ମେସେଜ୍‌ ପଠାନ୍ତୁ"</string>
-    <string name="add_contact" msgid="9005634177208282449">"ଯୋଡ଼ନ୍ତୁ"</string>
-    <string name="add_contact_desc" msgid="2475604767309086575">"ଯୋଗାଯୋଗରେ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="add_contact" msgid="9005634177208282449">"ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="add_contact_desc" msgid="2475604767309086575">"ଯୋଗାଯୋଗରେ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"ଅଧିକ ବିକଳ୍ପ"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"ଓଭରଫ୍ଲୋ ବନ୍ଦ କରନ୍ତୁ"</string>
-    <string name="abc_share" msgid="7091841667818715717">"ଶେୟାର୍ କରନ୍ତୁ"</string>
+    <string name="abc_share" msgid="7091841667818715717">"ସେୟାର୍ କରନ୍ତୁ"</string>
 </resources>
diff --git a/textclassifier/src/main/res/values-pa/strings.xml b/textclassifier/src/main/res/values-pa/strings.xml
index 6831001..004bc9c 100644
--- a/textclassifier/src/main/res/values-pa/strings.xml
+++ b/textclassifier/src/main/res/values-pa/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ਈਮੇਲ"</string>
+    <string name="email" msgid="5568050657313893478">"ਈਮੇਲ ਖੋਲ੍ਹੋ"</string>
     <string name="email_desc" msgid="6941280589171810022">"ਚੁਣੇ ਹੋਏ ਪਤੇ \'ਤੇ ਈਮੇਲ ਭੇਜੋ"</string>
     <string name="dial" msgid="7317293545368448453">"ਕਾਲ ਕਰੋ"</string>
     <string name="dial_desc" msgid="5129451396208040332">"ਚੁਣੇ ਗਏ ਫ਼ੋਨ ਨੰਬਰ \'ਤੇ ਕਾਲ ਕਰੋ"</string>
     <string name="browse" msgid="3733970143542020945">"ਖੋਲ੍ਹੋ"</string>
     <string name="browse_desc" msgid="3898254913938219011">"ਚੁਣਿਆ ਗਿਆ URL ਖੋਲ੍ਹੋ"</string>
-    <string name="sms" msgid="5495416906312064886">"ਸੁਨੇਹਾ"</string>
+    <string name="sms" msgid="5495416906312064886">"ਸੁਨੇਹਾ ਖੋਲ੍ਹੋ"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ਚੁਣੇ ਗਏ ਫ਼ੋਨ ਨੰਬਰ \'ਤੇ ਸੁਨੇਹਾ ਭੇਜੋ"</string>
     <string name="add_contact" msgid="9005634177208282449">"ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"ਸੰਪਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ"</string>
diff --git a/textclassifier/src/main/res/values-pt-rPT/strings.xml b/textclassifier/src/main/res/values-pt-rPT/strings.xml
index 3eef4f1e..c1ff32b 100644
--- a/textclassifier/src/main/res/values-pt-rPT/strings.xml
+++ b/textclassifier/src/main/res/values-pt-rPT/strings.xml
@@ -22,7 +22,7 @@
     <string name="dial_desc" msgid="5129451396208040332">"Ligar para o número de telefone selecionado"</string>
     <string name="browse" msgid="3733970143542020945">"Abrir"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Abrir o URL selecionado"</string>
-    <string name="sms" msgid="5495416906312064886">"Mensagem"</string>
+    <string name="sms" msgid="5495416906312064886">"Enviar mensagem"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Enviar uma mensagem para o número de telefone selecionado"</string>
     <string name="add_contact" msgid="9005634177208282449">"Adicionar"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Adicionar aos contactos"</string>
diff --git a/textclassifier/src/main/res/values-ro/strings.xml b/textclassifier/src/main/res/values-ro/strings.xml
index d41f9b7..3656640 100644
--- a/textclassifier/src/main/res/values-ro/strings.xml
+++ b/textclassifier/src/main/res/values-ro/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-mail"</string>
+    <string name="email" msgid="5568050657313893478">"Trimiteți un e-mail"</string>
     <string name="email_desc" msgid="6941280589171810022">"Trimiteți un e-mail la adresa selectată"</string>
-    <string name="dial" msgid="7317293545368448453">"Apelați"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Apelați numărul de telefon selectat"</string>
+    <string name="dial" msgid="7317293545368448453">"Sunați"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Sunați la numărul de telefon selectat"</string>
     <string name="browse" msgid="3733970143542020945">"Deschideți"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Deschideți adresa URL selectată"</string>
-    <string name="sms" msgid="5495416906312064886">"Mesaj"</string>
+    <string name="sms" msgid="5495416906312064886">"Trimiteți mesaj"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Trimiteți un mesaj la numărul de telefon selectat"</string>
     <string name="add_contact" msgid="9005634177208282449">"Adăugați"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Adăugați în agendă"</string>
diff --git a/textclassifier/src/main/res/values-ru/strings.xml b/textclassifier/src/main/res/values-ru/strings.xml
index a34d303..c3e4610 100644
--- a/textclassifier/src/main/res/values-ru/strings.xml
+++ b/textclassifier/src/main/res/values-ru/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Написать по почте"</string>
+    <string name="email" msgid="5568050657313893478">"Написать письмо"</string>
     <string name="email_desc" msgid="6941280589171810022">"Отправить письмо выбранному адресату"</string>
     <string name="dial" msgid="7317293545368448453">"Позвонить"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Позвонить по выбранному номеру"</string>
diff --git a/textclassifier/src/main/res/values-sl/strings.xml b/textclassifier/src/main/res/values-sl/strings.xml
index 7a9981f..9cf16f6 100644
--- a/textclassifier/src/main/res/values-sl/strings.xml
+++ b/textclassifier/src/main/res/values-sl/strings.xml
@@ -16,16 +16,16 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-pošta"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Pošiljanje e-poštnega sporočila na izbrani naslov"</string>
-    <string name="dial" msgid="7317293545368448453">"Telefonski klic"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Klic izbrane telefonske številke"</string>
-    <string name="browse" msgid="3733970143542020945">"Odpiranje"</string>
-    <string name="browse_desc" msgid="3898254913938219011">"Odpiranje izbranega URL-ja"</string>
-    <string name="sms" msgid="5495416906312064886">"Sporočilo"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Pošiljanje sporočila na izbrano telefonsko številko"</string>
-    <string name="add_contact" msgid="9005634177208282449">"Dodajanje"</string>
-    <string name="add_contact_desc" msgid="2475604767309086575">"Dodajanje med stike"</string>
+    <string name="email" msgid="5568050657313893478">"Odpri e-pošto"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Pošlji e-poštno sporočilo na izbrani naslov"</string>
+    <string name="dial" msgid="7317293545368448453">"Pokliči"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Pokliči izbrano telefonsko številko"</string>
+    <string name="browse" msgid="3733970143542020945">"Odpri"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"Odpri izbrani URL"</string>
+    <string name="sms" msgid="5495416906312064886">"Pošlji SMS"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Pošlji SMS na izbrano telefonsko številko"</string>
+    <string name="add_contact" msgid="9005634177208282449">"Dodaj"</string>
+    <string name="add_contact_desc" msgid="2475604767309086575">"Dodaj med stike"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Več možnosti"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"Zapiranje dodatnih elementov"</string>
     <string name="abc_share" msgid="7091841667818715717">"Skup. raba"</string>
diff --git a/textclassifier/src/main/res/values-sq/strings.xml b/textclassifier/src/main/res/values-sq/strings.xml
index 2735efc..90f6619 100644
--- a/textclassifier/src/main/res/values-sq/strings.xml
+++ b/textclassifier/src/main/res/values-sq/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Email"</string>
+    <string name="email" msgid="5568050657313893478">"Dërgo email"</string>
     <string name="email_desc" msgid="6941280589171810022">"Dërgo email tek adresa e zgjedhur"</string>
     <string name="dial" msgid="7317293545368448453">"Telefono"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Telefono në numrin e zgjedhur të telefonit"</string>
     <string name="browse" msgid="3733970143542020945">"Hap"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Hap URL-në e zgjedhur"</string>
-    <string name="sms" msgid="5495416906312064886">"Mesazh"</string>
+    <string name="sms" msgid="5495416906312064886">"Dërgo mesazh"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Dërgo mesazh te numri i zgjedhur i telefonit"</string>
     <string name="add_contact" msgid="9005634177208282449">"Shto"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Shto te kontaktet"</string>
diff --git a/textclassifier/src/main/res/values-sv/strings.xml b/textclassifier/src/main/res/values-sv/strings.xml
index 483a79f..8a677c4 100644
--- a/textclassifier/src/main/res/values-sv/strings.xml
+++ b/textclassifier/src/main/res/values-sv/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-post"</string>
+    <string name="email" msgid="5568050657313893478">"Skicka e-post"</string>
     <string name="email_desc" msgid="6941280589171810022">"Skicka e-post till vald adress"</string>
     <string name="dial" msgid="7317293545368448453">"Ring"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Ring valt telefonnummer"</string>
diff --git a/textclassifier/src/main/res/values-sw/strings.xml b/textclassifier/src/main/res/values-sw/strings.xml
index 0171aa6..e940614 100644
--- a/textclassifier/src/main/res/values-sw/strings.xml
+++ b/textclassifier/src/main/res/values-sw/strings.xml
@@ -16,9 +16,9 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Barua pepe"</string>
+    <string name="email" msgid="5568050657313893478">"Tuma barua pepe"</string>
     <string name="email_desc" msgid="6941280589171810022">"Tuma barua pepe kwa anwani uliyochagua"</string>
-    <string name="dial" msgid="7317293545368448453">"Simu"</string>
+    <string name="dial" msgid="7317293545368448453">"Piga simu"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Piga simu kwa nambari uliyochagua"</string>
     <string name="browse" msgid="3733970143542020945">"Fungua"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Fungua URL uliyochagua"</string>
diff --git a/textclassifier/src/main/res/values-ta/strings.xml b/textclassifier/src/main/res/values-ta/strings.xml
index 4f3123b..c90ac79 100644
--- a/textclassifier/src/main/res/values-ta/strings.xml
+++ b/textclassifier/src/main/res/values-ta/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"மின்னஞ்சல்"</string>
+    <string name="email" msgid="5568050657313893478">"மின்னஞ்சல் அனுப்பு"</string>
     <string name="email_desc" msgid="6941280589171810022">"தேர்ந்தெடுத்த முகவரிக்கு மின்னஞ்சலை அனுப்பும்"</string>
     <string name="dial" msgid="7317293545368448453">"அழை"</string>
     <string name="dial_desc" msgid="5129451396208040332">"தேர்ந்தெடுத்த ஃபோன் எண்ணை அழைக்கும்"</string>
     <string name="browse" msgid="3733970143542020945">"திற"</string>
     <string name="browse_desc" msgid="3898254913938219011">"தேர்ந்தெடுத்த URLலைத் திறக்கும்"</string>
-    <string name="sms" msgid="5495416906312064886">"மெசேஜ்"</string>
+    <string name="sms" msgid="5495416906312064886">"செய்தி அனுப்பு"</string>
     <string name="sms_desc" msgid="8293660783374489324">"தேர்ந்தெடுத்த ஃபோன் எண்ணிற்கு மெசேஜ் அனுப்பும்"</string>
     <string name="add_contact" msgid="9005634177208282449">"சேர்"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"தொடர்புகளில் சேர்க்கும்"</string>
diff --git a/textclassifier/src/main/res/values-te/strings.xml b/textclassifier/src/main/res/values-te/strings.xml
index 4adcfbf..25e41ff 100644
--- a/textclassifier/src/main/res/values-te/strings.xml
+++ b/textclassifier/src/main/res/values-te/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ఇమెయిల్"</string>
+    <string name="email" msgid="5568050657313893478">"ఇమెయిల్ పంపు"</string>
     <string name="email_desc" msgid="6941280589171810022">"ఎంచుకున్న చిరునామాకు ఇమెయిల్‌ను పంపుతుంది"</string>
-    <string name="dial" msgid="7317293545368448453">"కాల్"</string>
+    <string name="dial" msgid="7317293545368448453">"కాల్ చేయి"</string>
     <string name="dial_desc" msgid="5129451396208040332">"ఎంచుకున్న ఫోన్ నంబర్‌కు కాల్ చేస్తుంది"</string>
     <string name="browse" msgid="3733970143542020945">"తెరువు"</string>
     <string name="browse_desc" msgid="3898254913938219011">"ఎంచుకున్న URLని తెరుస్తుంది"</string>
-    <string name="sms" msgid="5495416906312064886">"సందేశం"</string>
+    <string name="sms" msgid="5495416906312064886">"సందేశం పంపు"</string>
     <string name="sms_desc" msgid="8293660783374489324">"ఎంచుకున్న ఫోన్ నంబర్‌కి సందేశం పంపుతుంది"</string>
     <string name="add_contact" msgid="9005634177208282449">"జోడించు"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"పరిచయాలకు జోడిస్తుంది"</string>
diff --git a/textclassifier/src/main/res/values-tl/strings.xml b/textclassifier/src/main/res/values-tl/strings.xml
index 734524e..f75b004 100644
--- a/textclassifier/src/main/res/values-tl/strings.xml
+++ b/textclassifier/src/main/res/values-tl/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Email"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Mag-email sa napiling address"</string>
-    <string name="dial" msgid="7317293545368448453">"Tawag"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Tawagan ang napiling numero ng telepono"</string>
+    <string name="email" msgid="5568050657313893478">"Mag-email"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Mag-email sa piniling address"</string>
+    <string name="dial" msgid="7317293545368448453">"Tumawag"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Tawagan ang piniling numero ng telepono"</string>
     <string name="browse" msgid="3733970143542020945">"Buksan"</string>
-    <string name="browse_desc" msgid="3898254913938219011">"Buksan ang napiling URL"</string>
-    <string name="sms" msgid="5495416906312064886">"Mensahe"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"Padalhan ng mensahe ang napiling numero ng telepono"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"Buksan ang piniling URL"</string>
+    <string name="sms" msgid="5495416906312064886">"Magmensahe"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"Padalhan ng mensahe ang piniling numero ng telepono"</string>
     <string name="add_contact" msgid="9005634177208282449">"Magdagdag"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Idagdag sa mga contact"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Higit pang opsyon"</string>
diff --git a/textclassifier/src/main/res/values-tr/strings.xml b/textclassifier/src/main/res/values-tr/strings.xml
index be12836..044d43f 100644
--- a/textclassifier/src/main/res/values-tr/strings.xml
+++ b/textclassifier/src/main/res/values-tr/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="email" msgid="5568050657313893478">"E-posta"</string>
     <string name="email_desc" msgid="6941280589171810022">"Seçilen adrese e-posta gönder"</string>
-    <string name="dial" msgid="7317293545368448453">"Ara"</string>
+    <string name="dial" msgid="7317293545368448453">"Telefon et"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Seçilen telefon numarasını ara"</string>
     <string name="browse" msgid="3733970143542020945">"Aç"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Seçilen URL\'yi aç"</string>
diff --git a/textclassifier/src/main/res/values-uk/strings.xml b/textclassifier/src/main/res/values-uk/strings.xml
index 241021a..a40df77 100644
--- a/textclassifier/src/main/res/values-uk/strings.xml
+++ b/textclassifier/src/main/res/values-uk/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"Електронна адреса"</string>
+    <string name="email" msgid="5568050657313893478">"Написати лист"</string>
     <string name="email_desc" msgid="6941280589171810022">"Надіслати електронний лист на вибрану адресу"</string>
-    <string name="dial" msgid="7317293545368448453">"Виклик"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"Набрати вибраний номер телефону"</string>
+    <string name="dial" msgid="7317293545368448453">"Телефонувати"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"Телефонувати за вибраним номером"</string>
     <string name="browse" msgid="3733970143542020945">"Відкрити"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Відкрити вибрану URL-адресу"</string>
-    <string name="sms" msgid="5495416906312064886">"Повідомлення"</string>
+    <string name="sms" msgid="5495416906312064886">"Написати SMS"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Надіслати повідомлення за вибраним номером телефону"</string>
     <string name="add_contact" msgid="9005634177208282449">"Додати"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Додати в контакти"</string>
diff --git a/textclassifier/src/main/res/values-ur/strings.xml b/textclassifier/src/main/res/values-ur/strings.xml
index 55b2e6d..acdb424 100644
--- a/textclassifier/src/main/res/values-ur/strings.xml
+++ b/textclassifier/src/main/res/values-ur/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"ای میل"</string>
+    <string name="email" msgid="5568050657313893478">"ای میل بھیجیں"</string>
     <string name="email_desc" msgid="6941280589171810022">"منتخب کردہ پتے پر ای میل کریں"</string>
-    <string name="dial" msgid="7317293545368448453">"کال"</string>
+    <string name="dial" msgid="7317293545368448453">"کال کریں"</string>
     <string name="dial_desc" msgid="5129451396208040332">"منتخب کردہ فون نمبر پر کال کریں"</string>
     <string name="browse" msgid="3733970143542020945">"کھولیں"</string>
     <string name="browse_desc" msgid="3898254913938219011">"‏منتخب کردہ URL کھولیں"</string>
-    <string name="sms" msgid="5495416906312064886">"پیغام"</string>
+    <string name="sms" msgid="5495416906312064886">"پیغام بھیجیں"</string>
     <string name="sms_desc" msgid="8293660783374489324">"منتخب کردہ فون نمبر پر پیغام بھیجیں"</string>
     <string name="add_contact" msgid="9005634177208282449">"شامل کریں"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"رابطوں میں شامل کریں"</string>
diff --git a/textclassifier/src/main/res/values-uz/strings.xml b/textclassifier/src/main/res/values-uz/strings.xml
index 74d563d..9e31f76 100644
--- a/textclassifier/src/main/res/values-uz/strings.xml
+++ b/textclassifier/src/main/res/values-uz/strings.xml
@@ -16,15 +16,15 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"E-pochta"</string>
-    <string name="email_desc" msgid="6941280589171810022">"Belgilangan manzilga xat yuborish"</string>
+    <string name="email" msgid="5568050657313893478">"Email"</string>
+    <string name="email_desc" msgid="6941280589171810022">"Belgilangan e-pochta manziliga xat yuborish"</string>
     <string name="dial" msgid="7317293545368448453">"Chaqiruv"</string>
     <string name="dial_desc" msgid="5129451396208040332">"Belgilangan raqamga telefon qilish"</string>
     <string name="browse" msgid="3733970143542020945">"Ochish"</string>
     <string name="browse_desc" msgid="3898254913938219011">"Belgilangan URL manzilini ochish"</string>
-    <string name="sms" msgid="5495416906312064886">"Xabar"</string>
+    <string name="sms" msgid="5495416906312064886">"SMS yozish"</string>
     <string name="sms_desc" msgid="8293660783374489324">"Belgilangan telefon raqamiga SMS yuborish"</string>
-    <string name="add_contact" msgid="9005634177208282449">"Qo‘shish"</string>
+    <string name="add_contact" msgid="9005634177208282449">"Saqlab olish"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"Kontaktlarga saqlash"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"Yana"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="6243666280435354232">"Qalqib turuvchi asboblar panelini yopish"</string>
diff --git a/textclassifier/src/main/res/values-zh-rCN/strings.xml b/textclassifier/src/main/res/values-zh-rCN/strings.xml
index a990409..afa89ca 100644
--- a/textclassifier/src/main/res/values-zh-rCN/strings.xml
+++ b/textclassifier/src/main/res/values-zh-rCN/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"电子邮件"</string>
+    <string name="email" msgid="5568050657313893478">"发送电子邮件"</string>
     <string name="email_desc" msgid="6941280589171810022">"将电子邮件发送至所选地址"</string>
     <string name="dial" msgid="7317293545368448453">"通话"</string>
     <string name="dial_desc" msgid="5129451396208040332">"拨打所选电话号码"</string>
     <string name="browse" msgid="3733970143542020945">"打开"</string>
     <string name="browse_desc" msgid="3898254913938219011">"打开所选网址"</string>
-    <string name="sms" msgid="5495416906312064886">"短信"</string>
+    <string name="sms" msgid="5495416906312064886">"发短信"</string>
     <string name="sms_desc" msgid="8293660783374489324">"将短信发送至所选电话号码"</string>
     <string name="add_contact" msgid="9005634177208282449">"添加"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"添加到通讯录"</string>
diff --git a/textclassifier/src/main/res/values-zh-rHK/strings.xml b/textclassifier/src/main/res/values-zh-rHK/strings.xml
index 946fd6c..2ada5ec 100644
--- a/textclassifier/src/main/res/values-zh-rHK/strings.xml
+++ b/textclassifier/src/main/res/values-zh-rHK/strings.xml
@@ -22,7 +22,7 @@
     <string name="dial_desc" msgid="5129451396208040332">"打指定嘅電話號碼"</string>
     <string name="browse" msgid="3733970143542020945">"開啟"</string>
     <string name="browse_desc" msgid="3898254913938219011">"打開指定網址"</string>
-    <string name="sms" msgid="5495416906312064886">"訊息"</string>
+    <string name="sms" msgid="5495416906312064886">"發短訊"</string>
     <string name="sms_desc" msgid="8293660783374489324">"傳短訊去指定電話號碼"</string>
     <string name="add_contact" msgid="9005634177208282449">"新增"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"加入聯絡人"</string>
diff --git a/textclassifier/src/main/res/values-zh-rTW/strings.xml b/textclassifier/src/main/res/values-zh-rTW/strings.xml
index 4fc184f..d2bd3ab 100644
--- a/textclassifier/src/main/res/values-zh-rTW/strings.xml
+++ b/textclassifier/src/main/res/values-zh-rTW/strings.xml
@@ -16,14 +16,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="5568050657313893478">"電子郵件"</string>
-    <string name="email_desc" msgid="6941280589171810022">"將電子郵件寄到所選地址"</string>
-    <string name="dial" msgid="7317293545368448453">"撥號"</string>
-    <string name="dial_desc" msgid="5129451396208040332">"撥打所選電話號碼"</string>
+    <string name="email" msgid="5568050657313893478">"發送電子郵件"</string>
+    <string name="email_desc" msgid="6941280589171810022">"將電子郵件寄到選取的地址"</string>
+    <string name="dial" msgid="7317293545368448453">"撥號通話"</string>
+    <string name="dial_desc" msgid="5129451396208040332">"撥打選取的電話號碼"</string>
     <string name="browse" msgid="3733970143542020945">"開啟"</string>
-    <string name="browse_desc" msgid="3898254913938219011">"開啟所選網址"</string>
-    <string name="sms" msgid="5495416906312064886">"訊息"</string>
-    <string name="sms_desc" msgid="8293660783374489324">"將訊息傳送到所選電話號碼"</string>
+    <string name="browse_desc" msgid="3898254913938219011">"開啟選取的網址"</string>
+    <string name="sms" msgid="5495416906312064886">"發送訊息"</string>
+    <string name="sms_desc" msgid="8293660783374489324">"將訊息傳送到選取的電話號碼"</string>
     <string name="add_contact" msgid="9005634177208282449">"新增"</string>
     <string name="add_contact_desc" msgid="2475604767309086575">"新增至聯絡人"</string>
     <string name="floating_toolbar_open_overflow_description" msgid="1187148927509077545">"更多選項"</string>
diff --git a/wear/res/values-bs/strings.xml b/wear/res/values-bs/strings.xml
index 82c990c..cf30702 100644
--- a/wear/res/values-bs/strings.xml
+++ b/wear/res/values-bs/strings.xml
@@ -16,6 +16,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="ws_navigation_drawer_content_description" msgid="7216697245762194759">"Panel za navigaciju"</string>
-    <string name="ws_action_drawer_content_description" msgid="1837365417701148489">"Panel za radnju"</string>
+    <string name="ws_navigation_drawer_content_description" msgid="7216697245762194759">"Ladica za navigaciju"</string>
+    <string name="ws_action_drawer_content_description" msgid="1837365417701148489">"Ladica za radnju"</string>
 </resources>
diff --git a/work/workmanager-gcm/src/main/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcher.java b/work/workmanager-gcm/src/main/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcher.java
index 7219506..77b2ca9 100644
--- a/work/workmanager-gcm/src/main/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcher.java
+++ b/work/workmanager-gcm/src/main/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcher.java
@@ -134,8 +134,8 @@
 
     private int reschedule(@NonNull String workSpecId) {
         WorkDatabase workDatabase = mWorkManagerImpl.getWorkDatabase();
+        workDatabase.beginTransaction();
         try {
-            workDatabase.beginTransaction();
             // Mark the workSpec as unscheduled. We are doing this explicitly here because
             // there are many cases where WorkerWrapper may not have had a chance to update this
             // flag. For e.g. this will happen if the Worker took longer than 10 minutes.
diff --git a/work/workmanager/build.gradle b/work/workmanager/build.gradle
index ee216a96..805f9af 100644
--- a/work/workmanager/build.gradle
+++ b/work/workmanager/build.gradle
@@ -55,9 +55,10 @@
         implementation(ARCH_ROOM_RUNTIME)
         androidTestImplementation(ARCH_ROOM_TESTING)
     }
-
-    api(ARCH_LIFECYCLE_EXTENSIONS)
     api(GUAVA_LISTENABLE_FUTURE)
+    api(ARCH_LIFECYCLE_LIVEDATA)
+    implementation(ANDROIDX_CORE)
+    implementation(ARCH_LIFECYCLE_SERVICE)
     androidTestImplementation(KOTLIN_STDLIB)
     androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
     androidTestImplementation(ANDROIDX_TEST_CORE)
diff --git a/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java b/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
index eb4e9b7..efa3b4c 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
@@ -314,8 +314,8 @@
     void onWorkFinished() {
         boolean isWorkFinished = false;
         if (!tryCheckForInterruptionAndResolve()) {
+            mWorkDatabase.beginTransaction();
             try {
-                mWorkDatabase.beginTransaction();
                 WorkInfo.State state = mWorkSpecDao.getState(mWorkSpecId);
                 if (state == null) {
                     // state can be null here with a REPLACE on beginUniqueWork().
@@ -409,6 +409,7 @@
     }
 
     private void resolve(final boolean needsReschedule) {
+        mWorkDatabase.beginTransaction();
         try {
             // IMPORTANT: We are using a transaction here as to ensure that we have some guarantees
             // about the state of the world before we disable RescheduleReceiver.
@@ -416,7 +417,6 @@
             // Check to see if there is more work to be done. If there is no more work, then
             // disable RescheduleReceiver. Using a transaction here, as there could be more than
             // one thread looking at the list of eligible WorkSpecs.
-            mWorkDatabase.beginTransaction();
             List<String> unfinishedWork = mWorkDatabase.workSpecDao().getAllUnfinishedWork();
             boolean noMoreWork = unfinishedWork == null || unfinishedWork.isEmpty();
             if (noMoreWork) {
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
index 2253cf0..7a6dc44 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
@@ -80,25 +80,26 @@
         for (WorkSpec workSpec : workSpecs) {
             workDatabase.beginTransaction();
             try {
-                // It is possible that this WorkSpec got cancelled/pruned since this isn't part of
-                // the same database transaction as marking it enqueued (for example, if we using
-                // any of the synchronous operations).  For now, handle this gracefully by exiting
-                // the loop.  When we plumb ListenableFutures all the way through, we can remove the
-                // *sync methods and return ListenableFutures, which will block on an operation on
-                // the background task thread so all database operations happen on the same thread.
-                // See b/114705286.
                 WorkSpec currentDbWorkSpec = workDatabase.workSpecDao().getWorkSpec(workSpec.id);
                 if (currentDbWorkSpec == null) {
                     Logger.get().warning(
                             TAG,
                             "Skipping scheduling " + workSpec.id
                                     + " because it's no longer in the DB");
+
+                    // Marking this transaction as successful, as we don't want this transaction
+                    // to affect transactions for unrelated WorkSpecs.
+                    workDatabase.setTransactionSuccessful();
                     continue;
                 } else if (currentDbWorkSpec.state != WorkInfo.State.ENQUEUED) {
                     Logger.get().warning(
                             TAG,
                             "Skipping scheduling " + workSpec.id
                                     + " because it is no longer enqueued");
+
+                    // Marking this transaction as successful, as we don't want this transaction
+                    // to affect transactions for unrelated WorkSpecs.
+                    workDatabase.setTransactionSuccessful();
                     continue;
                 }
 
diff --git a/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java b/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
index 6dc3b3f..3804e1ba 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
@@ -82,8 +82,8 @@
         } else {
             WorkDatabase workDatabase = mWorkManager.getWorkDatabase();
             WorkSpecDao workSpecDao = workDatabase.workSpecDao();
+            workDatabase.beginTransaction();
             try {
-                workDatabase.beginTransaction();
                 List<WorkSpec> workSpecs = workSpecDao.getEnqueuedWork();
                 if (workSpecs != null && !workSpecs.isEmpty()) {
                     Logger.get().debug(TAG, "Found unfinished work, scheduling it.");