Merge "Import translations. DO NOT MERGE" into rvc-dev
diff --git a/src/com/android/settings/media/MediaDeviceUpdateWorker.java b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
index a976811..bce9c34 100644
--- a/src/com/android/settings/media/MediaDeviceUpdateWorker.java
+++ b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
@@ -128,10 +128,11 @@
 
     public void connectDevice(MediaDevice device) {
         ThreadUtils.postOnBackgroundThread(() -> {
-            mLocalMediaManager.connectDevice(device);
-            ThreadUtils.postOnMainThread(() -> {
-                notifySliceChange();
-            });
+            if (mLocalMediaManager.connectDevice(device)) {
+                ThreadUtils.postOnMainThread(() -> {
+                    notifySliceChange();
+                });
+            }
         });
     }
 
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 6917549..26c206d 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -204,13 +204,16 @@
                     .createForSubscriptionId(mSubId);
 
             final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
+            final boolean isNrEnabledFromCarrierConfig = carrierConfig != null
+                    && carrierConfig.getBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL);
             mAllowed5gNetworkType = checkSupportedRadioBitmask(
                     mTelephonyManager.getAllowedNetworkTypes(),
                     TelephonyManager.NETWORK_TYPE_BITMASK_NR);
-            mSupported5gRadioAccessFamily = checkSupportedRadioBitmask(
-                    mTelephonyManager.getSupportedRadioAccessFamily(),
+            mSupported5gRadioAccessFamily = isNrEnabledFromCarrierConfig
+                    && checkSupportedRadioBitmask(mTelephonyManager.getSupportedRadioAccessFamily(),
                     TelephonyManager.NETWORK_TYPE_BITMASK_NR);
             mIsGlobalCdma = mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled()
+                    && carrierConfig != null
                     && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL);
             mShow4gForLTE = carrierConfig != null && carrierConfig.getBoolean(
                     CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL);
@@ -573,7 +576,7 @@
          */
         private void add5gEntry(int value) {
             boolean isNRValue = value >= TelephonyManagerConstants.NETWORK_MODE_NR_ONLY;
-            if (mSupported5gRadioAccessFamily && mAllowed5gNetworkType && isNRValue) {
+            if (showNrList() && isNRValue) {
                 mEntries.add(mContext.getString(R.string.network_5G)
                         + mContext.getString(R.string.network_recommended));
                 mEntriesValue.add(value);
@@ -592,7 +595,7 @@
                     + " supported5GRadioAccessFamily: " + mSupported5gRadioAccessFamily
                     + " allowed5GNetworkType: " + mAllowed5gNetworkType);
             mEntries.add(mContext.getString(R.string.network_global));
-            if (mSupported5gRadioAccessFamily & mAllowed5gNetworkType) {
+            if (showNrList()) {
                 mEntriesValue.add(
                         TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
             } else {
@@ -601,11 +604,15 @@
             }
         }
 
+        private boolean showNrList() {
+            return mSupported5gRadioAccessFamily && mAllowed5gNetworkType;
+        }
+
         /**
          * Add LTE entry. If device supported 5G, show "LTE" instead of "LTE (recommended)".
          */
         private void addLteEntry(int value) {
-            if (mSupported5gRadioAccessFamily) {
+            if (showNrList()) {
                 mEntries.add(mContext.getString(R.string.network_lte_pure));
             } else {
                 mEntries.add(mContext.getString(R.string.network_lte));
@@ -617,7 +624,7 @@
          * Add 4G entry. If device supported 5G, show "4G" instead of "4G (recommended)".
          */
         private void add4gEntry(int value) {
-            if (mSupported5gRadioAccessFamily) {
+            if (showNrList()) {
                 mEntries.add(mContext.getString(R.string.network_4G_pure));
             } else {
                 mEntries.add(mContext.getString(R.string.network_4G));
diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
index 91d01d3..d6aed67 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
@@ -55,6 +55,7 @@
     Preference mPreference;
     private PhoneCallStateListener mPhoneStateListener;
     private boolean mShow5gLimitedDialog;
+    boolean mIsNrEnabledFromCarrierConfig;
     private boolean mHas5gCapability;
     @VisibleForTesting
     Integer mCallState;
@@ -95,6 +96,8 @@
 
         mShow5gLimitedDialog = carrierConfig.getBoolean(
                 CarrierConfigManager.KEY_VOLTE_5G_LIMITED_ALERT_DIALOG_BOOL);
+        mIsNrEnabledFromCarrierConfig = carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_NR_ENABLED_BOOL);
         return this;
     }
 
@@ -244,7 +247,7 @@
 
     private boolean isDialogNeeded() {
         Log.d(TAG, "Has5gCapability:" + mHas5gCapability);
-        return mShow5gLimitedDialog && mHas5gCapability;
+        return mShow5gLimitedDialog && mHas5gCapability && mIsNrEnabledFromCarrierConfig;
     }
 
     private void show5gLimitedDialog(ImsMmTelManager imsMmTelManager) {
diff --git a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
index b4c1815..aaa96bcc 100644
--- a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
@@ -31,6 +31,7 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.IconDrawableFactory;
+import android.util.Slog;
 
 import com.android.settings.R;
 import com.android.settings.Utils;
@@ -294,15 +295,19 @@
         List<NotifyingApp> displayableApps = new ArrayList<>(SHOW_RECENT_APP_COUNT);
         int count = 0;
         for (NotifyingApp app : mApps) {
-            final ApplicationsState.AppEntry appEntry = mApplicationsState.getEntry(
-                    app.getPackage(), app.getUserId());
-            if (appEntry == null) {
-                continue;
-            }
-            displayableApps.add(app);
-            count++;
-            if (count >= SHOW_RECENT_APP_COUNT) {
-                break;
+            try {
+                final ApplicationsState.AppEntry appEntry = mApplicationsState.getEntry(
+                        app.getPackage(), app.getUserId());
+                if (appEntry == null) {
+                    continue;
+                }
+                displayableApps.add(app);
+                count++;
+                if (count >= SHOW_RECENT_APP_COUNT) {
+                    break;
+                }
+            } catch (Exception e) {
+                Slog.e(TAG, "Failed to find app " + app.getPackage() + "/" + app.getUserId(), e);
             }
         }
         return displayableApps;
diff --git a/src/com/android/settings/notification/app/ConversationPriorityPreference.java b/src/com/android/settings/notification/app/ConversationPriorityPreference.java
index ff1dc6c..307abec 100644
--- a/src/com/android/settings/notification/app/ConversationPriorityPreference.java
+++ b/src/com/android/settings/notification/app/ConversationPriorityPreference.java
@@ -179,7 +179,11 @@
             // a11y service won't always read the newly appearing text in the right order if the
             // selection happens too soon (readback happens on a different thread as layout). post
             // the selection to make that conflict less likely
-            parent.post(() -> mSilenceButton.setSelected(true));
+            parent.post(() -> {
+                mSilenceButton.setSelected(true);
+                mAlertButton.setSelected(false);
+                mPriorityButton.setSelected(false);
+            });
         } else {
             if (isPriority) {
                 alertSummary.setVisibility(GONE);
@@ -197,7 +201,11 @@
                 mAlertButton.setBackground(unselectedBackground);
                 mPriorityButton.setBackground(selectedBackground);
                 mSilenceButton.setBackground(unselectedBackground);
-                parent.post(() -> mPriorityButton.setSelected(true));
+                parent.post(() -> {
+                    mSilenceButton.setSelected(false);
+                    mAlertButton.setSelected(false);
+                    mPriorityButton.setSelected(true);
+                });
             } else {
                 alertSummary.setVisibility(VISIBLE);
                 alertIcon.setImageTintList(colorAccent);
@@ -214,7 +222,11 @@
                 mAlertButton.setBackground(selectedBackground);
                 mPriorityButton.setBackground(unselectedBackground);
                 mSilenceButton.setBackground(unselectedBackground);
-                parent.post(() -> mAlertButton.setSelected(true));
+                parent.post(() -> {
+                    mSilenceButton.setSelected(false);
+                    mAlertButton.setSelected(true);
+                    mPriorityButton.setSelected(false);
+                });
             }
         }
     }
diff --git a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java
index afe36ef..4a5c627 100644
--- a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java
+++ b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java
@@ -98,7 +98,8 @@
             public boolean performAccessibilityAction(View host, int action, Bundle args) {
                 super.performAccessibilityAction(host, action, args);
                 if (action == AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS.getId()) {
-                    onItemSwipeDeleted(position);
+                    int currPosition = mValues.indexOf(hn);
+                    onItemSwipeDeleted(currPosition);
                     return true;
                 }
                 return false;
@@ -119,6 +120,11 @@
 
     @Override
     public void onItemSwipeDeleted(int position) {
+        if (position > (mValues.size() - 1)) {
+            Slog.d(TAG, "Tried to swipe element out of list: position: " + position
+                    + " size? " + mValues.size());
+            return;
+        }
         HistoricalNotification hn = mValues.remove(position);
         if (hn != null) {
             try {
diff --git a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
index 57729ea..a818852 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
@@ -155,6 +155,7 @@
 
     @Test
     public void updateState_5gWorldPhone_GlobalHasNr() {
+        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, true);
         mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
         mController.init(mLifecycle, SUB_ID);
         mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
@@ -168,6 +169,7 @@
 
     @Test
     public void updateState_selectedOn5gItem() {
+        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, true);
         mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
         mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA);
         mController.init(mLifecycle, SUB_ID);