[Settings] Imporve MMS message UI state update

- When activity entered from outside, the MMS message is not udpated.
   Therefore, add a update behavior to onStart()

Bug: 281566495#5
Test: Manual test passed
Test: atest passed.
Change-Id: I3e5994ad0dbcdd1b78ae3e10e3cb564ce210e93e
This commit is contained in:
tom hsu
2023-06-14 12:20:04 +08:00
parent 5216eeaaec
commit 0a4458a9d1
2 changed files with 26 additions and 1 deletions

View File

@@ -21,15 +21,20 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyBoolean;
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 android.content.Context;
import android.os.Looper;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -63,7 +68,7 @@ public class MmsMessagePreferenceControllerTest {
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
mPreference = new SwitchPreference(mContext);
mPreference = spy(new SwitchPreference(mContext));
mController = new MmsMessagePreferenceController(mContext, "mms_message");
mController.init(SUB_ID);
mPreference.setKey(mController.getPreferenceKey());
@@ -118,4 +123,20 @@ public class MmsMessagePreferenceControllerTest {
verify(mTelephonyManager).setMobileDataPolicyEnabled(
TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, false);
}
@Test
public void onStart_updatePreferenceUiState() {
if (Looper.myLooper() == null) {
Looper.prepare();
}
PreferenceManager preferenceManager = new PreferenceManager(mContext);
PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
preferenceScreen.addPreference(mPreference);
mController.displayPreference(preferenceScreen);
mController.onStart();
// First is preference initialization, and second is in onStart();
verify(mPreference, times(2)).setChecked(anyBoolean());
}
}