Merge "Fix UXRE toast behavior" into rvc-qpr-dev
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index bfd6496..e436e53 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -213,7 +213,7 @@
     <string name="text_to_speech_settings" msgid="811985746199507343">"Keluaran text-to-speech"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Mesin yang dipilih"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Mesin saat ini"</string>
-    <string name="tts_speech_rate" msgid="4512944877291943133">"Laju Bicara"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Kecepatan Ucapan"</string>
     <string name="tts_pitch" msgid="2389171233852604923">"Tinggi nada"</string>
     <string name="tts_reset" msgid="6289481549801844709">"Reset"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Suara"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 5ec8883..91af2dd 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -518,7 +518,7 @@
     <string name="account_auto_sync_title" msgid="3238816995364191432">"Өгөгдлийг автоматаар синк хийх"</string>
     <string name="account_auto_sync_summary" msgid="6963837893148304128">"Өгөгдлийг автоматаар сэргээхийг аппад зөвшөөрөх"</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Өгөгдлийг автоматаар синк хийхийг асаах уу?"</string>
-    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Таны вэб дээрээс бүртгэлдээ оруулсан аливаа өөрчлөлтийг таны төхөөрөмжид автоматаар хуулах болно.\n\nЗарим бүртгэл нь таны утсан дээрээ оруулсан аливаа өөрчлөлтийг вэб рүү автоматаар хуулж болзошгүй. Google бүртгэл ингэж ажилладаг."</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Таны веб дээрээс бүртгэлдээ оруулсан аливаа өөрчлөлтийг таны төхөөрөмжид автоматаар хуулах болно.\n\nЗарим бүртгэл нь таны утсан дээрээ оруулсан аливаа өөрчлөлтийг веб рүү автоматаар хуулж болзошгүй. Google бүртгэл ингэж ажилладаг."</string>
     <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Өгөгдлийг автоматаар синк хийхийг унтраах уу?"</string>
     <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Энэ нь датаг хэмнэх боловч та сүүлийн үеийн мэдээллийг цуглуулахын тулд бүртгэл бүрийг гараар синк хийх шаардлагатай болно. Мөн шинэчлэлтийг хийх үед та мэдэгдэл хүлээн авахгүй."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Бүртгэлийн мэдээлэл"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index f68596b..652d822 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -396,9 +396,9 @@
       <item quantity="other">اب آپ ڈویلپر بننے سے <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> قدم دور ہیں۔</item>
       <item quantity="one">اب آپ ڈویلپر بننے سے <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> قدم دور ہیں۔</item>
     </plurals>
-    <string name="show_dev_on" msgid="5339077400040834808">"اب آپ ایک ڈیولپر ہیں!"</string>
-    <string name="show_dev_already" msgid="1678087328973865736">"کوئی ضرورت نہیں ہے، آپ پہلے سے ہی ایک ڈیولپر ہیں۔"</string>
-    <string name="developer_options_settings" msgid="1530739225109118480">"ڈیولپر کے اختیارات"</string>
+    <string name="show_dev_on" msgid="5339077400040834808">"اب آپ ایک ڈویلپر ہیں!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"کوئی ضرورت نہیں ہے، آپ پہلے سے ہی ایک ڈویلپر ہیں۔"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ڈویلپر کے اختیارات"</string>
     <string name="reset_options_title" msgid="4388902952861833420">"دوبارہ ترتیب دینے کے اختیارات"</string>
     <string name="reset_options_summary" msgid="5508201367420359293">"نیٹ ورک، ایپس یا آلہ کو دوبارہ ترتیب دینا"</string>
     <string name="reset_network_title" msgid="1284233059990797263">"نیٹ ورک کو دوبارہ ترتیب دیں"</string>
diff --git a/src/com/android/car/settings/FallbackHome.java b/src/com/android/car/settings/FallbackHome.java
index 63e4b9f..559bb18 100644
--- a/src/com/android/car/settings/FallbackHome.java
+++ b/src/com/android/car/settings/FallbackHome.java
@@ -19,6 +19,7 @@
 import static android.car.settings.CarSettings.Global.ENABLE_USER_SWITCH_DEVELOPER_MESSAGE;
 
 import android.app.Activity;
+import android.car.userlib.UserHelper;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -53,6 +54,8 @@
 
     private boolean mProvisioned;
 
+    private boolean mFinished;
+
     private final Runnable mProgressTimeoutRunnable = () -> {
         View v = getLayoutInflater().inflate(
                 R.layout.fallback_home_finishing_boot, /* root= */ null);
@@ -135,6 +138,10 @@
     protected void onDestroy() {
         super.onDestroy();
         unregisterReceiver(mReceiver);
+        if (!mFinished) {
+            LOG.d("User " + getUserId() + " FallbackHome is finished");
+            finishFallbackHome();
+        }
     }
 
     private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -160,15 +167,25 @@
                         + "one soon?");
                 mHandler.sendEmptyMessageDelayed(0, 500);
             } else {
-                LOG.d("User " + getUserId() + " unlocked and real home ("
-                        + homeInfo.activityInfo.packageName + ") found; let's go!");
-                getSystemService(PowerManager.class).userActivity(
-                        SystemClock.uptimeMillis(), false);
-                finishAndRemoveTask();
+                String homePackageName = homeInfo.activityInfo.packageName;
+                if (UserHelper.isHeadlessSystemUser(getUserId())) {
+                    // This is the transient state in HeadlessSystemMode to boot for user 10+.
+                    LOG.d("User 0 unlocked, but will not launch real home: " + homePackageName);
+                    return;
+                }
+                LOG.d("User " + getUserId() + " unlocked and real home (" + homePackageName
+                        + ") found; let's go!");
+                finishFallbackHome();
             }
         }
     }
 
+    private void finishFallbackHome() {
+        getSystemService(PowerManager.class).userActivity(SystemClock.uptimeMillis(), false);
+        finishAndRemoveTask();
+        mFinished = true;
+    }
+
     private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
diff --git a/src/com/android/car/settings/common/SeekBarPreference.java b/src/com/android/car/settings/common/SeekBarPreference.java
index cfdb7cd..4493771 100644
--- a/src/com/android/car/settings/common/SeekBarPreference.java
+++ b/src/com/android/car/settings/common/SeekBarPreference.java
@@ -115,10 +115,12 @@
                 return true;
             }
             if (keyCode == KeyEvent.KEYCODE_BACK) {
-                if (event.getAction() == KeyEvent.ACTION_DOWN && mInDirectManipulationMode) {
-                    setInDirectManipulationMode(v, false);
+                if (mInDirectManipulationMode) {
+                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                        setInDirectManipulationMode(v, false);
+                    }
+                    return true;
                 }
-                return true;
             }
 
             // Don't propagate confirm keys to the SeekBar to prevent a ripple effect on the thumb.