Merge "Fix unexpected highlight"
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 77cc03e..a9b5b31 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -30,6 +30,7 @@
 import android.os.Message;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
+import android.telephony.PinResult;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -532,30 +533,25 @@
         mPinToggle.setEnabled(false);
     }
 
-    private class SetIccLockEnabled extends AsyncTask<Void, Void, Void> {
+    private class SetIccLockEnabled extends AsyncTask<Void, Void, PinResult> {
         private final boolean mState;
-        private final String mPassword;
-        private int mAttemptsRemaining;
+        private final String mPin;
 
         private SetIccLockEnabled(boolean state, String pin) {
             mState = state;
-            mPassword = pin;
+            mPin = pin;
         }
 
         @Override
-        protected Void doInBackground(Void... params) {
+        protected PinResult doInBackground(Void... params) {
             mTelephonyManager =  mTelephonyManager.createForSubscriptionId(mSubId);
-            mAttemptsRemaining = mTelephonyManager.setIccLockEnabled(mState, mPassword);
-            return null;
+            return mTelephonyManager.setIccLockEnabled(mState, mPin);
         }
 
         @Override
-        protected void onPostExecute(Void aVoid) {
-            if (mAttemptsRemaining == TelephonyManager.CHANGE_ICC_LOCK_SUCCESS) {
-                iccLockChanged(true, mAttemptsRemaining);
-            } else {
-                iccLockChanged(false, mAttemptsRemaining);
-            }
+        protected void onPostExecute(PinResult pinResult) {
+            iccLockChanged(pinResult.getResult() == PinResult.PIN_RESULT_TYPE_SUCCESS /* success */,
+                    pinResult.getAttemptsRemaining() /* attemptsRemaining */);
         }
     }
 
@@ -641,33 +637,28 @@
     }
 
     private void tryChangePin() {
-        new ChangeIccLockPassword(mOldPin, mNewPin).execute();
+        new ChangeIccLockPin(mOldPin, mNewPin).execute();
     }
 
-    private class ChangeIccLockPassword extends AsyncTask<Void, Void, Void> {
-        private final String mOldPwd;
-        private final String mNewPwd;
-        private int mAttemptsRemaining;
+    private class ChangeIccLockPin extends AsyncTask<Void, Void, PinResult> {
+        private final String mOldPin;
+        private final String mNewPin;
 
-        private ChangeIccLockPassword(String oldPin, String newPin) {
-            mOldPwd = oldPin;
-            mNewPwd = newPin;
+        private ChangeIccLockPin(String oldPin, String newPin) {
+            mOldPin = oldPin;
+            mNewPin = newPin;
         }
 
         @Override
-        protected Void doInBackground(Void... params) {
+        protected PinResult doInBackground(Void... params) {
             mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId);
-            mAttemptsRemaining = mTelephonyManager.changeIccLockPassword(mOldPwd, mNewPwd);
-            return null;
+            return mTelephonyManager.changeIccLockPin(mOldPin, mNewPin);
         }
 
         @Override
-        protected void onPostExecute(Void aVoid) {
-            if (mAttemptsRemaining == TelephonyManager.CHANGE_ICC_LOCK_SUCCESS) {
-                iccPinChanged(true, mAttemptsRemaining);
-            } else {
-                iccPinChanged(false, mAttemptsRemaining);
-            }
+        protected void onPostExecute(PinResult pinResult) {
+            iccPinChanged(pinResult.getResult() == PinResult.PIN_RESULT_TYPE_SUCCESS /* success */,
+                    pinResult.getAttemptsRemaining() /* attemptsRemaining */);
         }
     }
 
diff --git a/src/com/android/settings/backup/OWNERS b/src/com/android/settings/backup/OWNERS
index 7e7710b..0f88811 100644
--- a/src/com/android/settings/backup/OWNERS
+++ b/src/com/android/settings/backup/OWNERS
@@ -1,4 +1,4 @@
 # Bug component: 656484
 
-include platform/frameworks/base/services/backup:/OWNERS
+include platform/frameworks/base:/services/backup/OWNERS
 
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 9858ad2..10409fc 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -140,6 +140,7 @@
 
     private SubscriptionInfo mSubscriptionInfo;
     private TelephonyDisplayInfo mTelephonyDisplayInfo;
+    private ServiceState mPreviousServiceState;
 
     private final int mSlotIndex;
     private TelephonyManager mTelephonyManager;
@@ -437,6 +438,9 @@
         final int state = Utils.getCombinedServiceState(serviceState);
         if (!Utils.isInService(serviceState)) {
             resetSignalStrength();
+        } else if (!Utils.isInService(mPreviousServiceState)) {
+            // If ServiceState changed from out of service -> in service, update signal strength.
+            updateSignalStrength(mTelephonyManager.getSignalStrength());
         }
 
         String serviceStateValue;
@@ -484,7 +488,7 @@
         }
 
         ServiceState serviceState = mTelephonyManager.getServiceState();
-        if (serviceState == null || !Utils.isInService(serviceState)) {
+        if (!Utils.isInService(serviceState)) {
             return;
         }
 
@@ -767,6 +771,7 @@
                 updateNetworkProvider();
                 updateServiceState(serviceState);
                 updateRoamingStatus(serviceState);
+                mPreviousServiceState = serviceState;
             }
 
             @Override
diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java
index e714fbe..4790bfa 100644
--- a/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java
+++ b/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java
@@ -67,13 +67,14 @@
     public boolean onPreferenceChange(Preference preference, Object object) {
         final int newMode = Integer.parseInt((String) object);
         //TODO(b/117611981): only set it in one place
-        if (mTelephonyManager.setCdmaSubscriptionMode(newMode)) {
+        try {
+            mTelephonyManager.setCdmaSubscriptionMode(newMode);
             Settings.Global.putInt(mContext.getContentResolver(),
                     Settings.Global.CDMA_SUBSCRIPTION_MODE, newMode);
             return true;
+        } catch (IllegalStateException e) {
+            return false;
         }
-
-        return false;
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
index 13324fc..2b0c221 100644
--- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
@@ -63,13 +63,14 @@
     public boolean onPreferenceChange(Preference preference, Object object) {
         int newMode = Integer.parseInt((String) object);
         //TODO(b/117611981): only set it in one place
-        if (mTelephonyManager.setCdmaRoamingMode(newMode)) {
+        try {
+            mTelephonyManager.setCdmaRoamingMode(newMode);
             Settings.Global.putInt(mContext.getContentResolver(),
                     Settings.Global.CDMA_ROAMING_MODE, newMode);
             return true;
+        } catch (IllegalStateException e) {
+            return false;
         }
-
-        return false;
     }
 
     private void resetCdmaRoamingModeToDefault() {
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index bbab259..a854c04 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -42,6 +42,7 @@
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.robolectric.Shadows.shadowOf;
@@ -293,7 +294,7 @@
 
         final String signalStrengthString =
                 mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
-        verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
+        verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
     @Test
@@ -310,7 +311,7 @@
 
         final String signalStrengthString =
                 mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
-        verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
+        verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
     @Test
@@ -330,7 +331,7 @@
 
         final String signalStrengthString =
                 mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
-        verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
+        verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
     @Test
@@ -394,8 +395,8 @@
 
         mController.initialize();
 
-        verify(mDialog).removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID);
-        verify(mDialog).removeSettingFromScreen(SIGNAL_STRENGTH_VALUE_ID);
+        verify(mDialog, times(2)).removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID);
+        verify(mDialog, times(2)).removeSettingFromScreen(SIGNAL_STRENGTH_VALUE_ID);
     }
 
     @Test
@@ -405,7 +406,7 @@
 
         mController.initialize();
 
-        verify(mDialog).setText(eq(SIGNAL_STRENGTH_VALUE_ID), any());
+        verify(mDialog, times(2)).setText(eq(SIGNAL_STRENGTH_VALUE_ID), any());
         verify(mDialog).removeSettingFromScreen(ICCID_INFO_LABEL_ID);
         verify(mDialog).removeSettingFromScreen(ICCID_INFO_VALUE_ID);
     }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
index bcc82ba..c6d3868 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
@@ -86,8 +85,6 @@
 
     @Test
     public void onPreferenceChange_selectNV_returnNVMode() {
-        doReturn(true).when(mTelephonyManager).setCdmaSubscriptionMode(anyInt());
-
         mController.onPreferenceChange(mPreference, Integer.toString(
                 TelephonyManager.CDMA_SUBSCRIPTION_NV));
 
diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
index 1a7fd86..2352b0f 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
@@ -92,7 +91,6 @@
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.CDMA_ROAMING_MODE,
                 TelephonyManager.CDMA_ROAMING_MODE_ANY);
-        doReturn(true).when(mTelephonyManager).setCdmaRoamingMode(anyInt());
 
         mController.onPreferenceChange(mPreference,
                 Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_HOME));