Loading res/xml/device_info_sim_status.xml +7 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,13 @@ android:summary="@string/device_info_not_available" android:persistent="false" /> <Preference android:key="ims_reg_state" android:enabled="false" android:shouldDisableView="false" android:title="@string/ims_reg_title" android:summary="@string/device_info_not_available" android:persistent="false" /> <Preference android:key="number" android:enabled="false" android:shouldDisableView="false" Loading res/xml/device_info_status.xml +0 −6 Original line number Diff line number Diff line Loading @@ -89,10 +89,4 @@ android:title="@string/status_wimax_mac_address" android:summary="@string/summary_placeholder" android:persistent="false" /> <Preference android:key="ims_reg_state" android:enabled="false" android:shouldDisableView="false" android:title="@string/ims_reg_title" android:persistent="false" /> </PreferenceScreen> src/com/android/settings/deviceinfo/SimStatus.java +68 −38 Original line number Diff line number Diff line Loading @@ -30,7 +30,9 @@ import android.os.Bundle; import android.os.PersistableBundle; import android.os.UserHandle; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.CellBroadcastMessage; import android.telephony.PhoneStateListener; Loading Loading @@ -89,6 +91,9 @@ public class SimStatus extends SettingsPreferenceFragment { private static final String KEY_IMEI_SV = "imei_sv"; private static final String KEY_ICCID = "iccid"; @VisibleForTesting static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state"; static private final String CB_AREA_INFO_RECEIVED_ACTION = "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED"; Loading @@ -101,10 +106,10 @@ public class SimStatus extends SettingsPreferenceFragment { private CarrierConfigManager mCarrierConfigManager; private Phone mPhone = null; private Resources mRes; private Preference mSignalStrength; private SubscriptionInfo mSir; private boolean mShowLatestAreaInfo; private boolean mShowICCID; private boolean mShowImsRegState; // Default summary for items private String mDefaultText; Loading Loading @@ -148,8 +153,6 @@ public class SimStatus extends SettingsPreferenceFragment { mRes = getResources(); mDefaultText = mRes.getString(R.string.device_info_default); // Note - missing in zaku build, be careful later... mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); } @Override Loading Loading @@ -202,10 +205,11 @@ public class SimStatus extends SettingsPreferenceFragment { public void onResume() { super.onResume(); if (mPhone != null) { updatePreference(); updatePreference(false /* isTabChanged */); updateSignalStrength(mPhone.getSignalStrength()); updateServiceState(mPhone.getServiceState()); updateImsRegistrationState(); updateDataState(); mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE Loading Loading @@ -323,7 +327,7 @@ public class SimStatus extends SettingsPreferenceFragment { break; case ServiceState.STATE_OUT_OF_SERVICE: // Set signal strength to 0 when service state is STATE_OUT_OF_SERVICE mSignalStrength.setSummary("0"); setSummaryText(KEY_SIGNAL_STRENGTH, "0"); case ServiceState.STATE_EMERGENCY_ONLY: // Set summary string of service state to radioInfo_service_out when // service state is both STATE_OUT_OF_SERVICE & STATE_EMERGENCY_ONLY Loading @@ -332,7 +336,7 @@ public class SimStatus extends SettingsPreferenceFragment { case ServiceState.STATE_POWER_OFF: display = mRes.getString(R.string.radioInfo_service_off); // Also set signal strength to 0 mSignalStrength.setSummary("0"); setSummaryText(KEY_SIGNAL_STRENGTH, "0"); break; } Loading @@ -353,12 +357,11 @@ public class SimStatus extends SettingsPreferenceFragment { } void updateSignalStrength(SignalStrength signalStrength) { if (mSignalStrength != null) { final int state = mPhone.getServiceState().getState(); if ((ServiceState.STATE_OUT_OF_SERVICE == state) || (ServiceState.STATE_POWER_OFF == state)) { mSignalStrength.setSummary("0"); setSummaryText(KEY_SIGNAL_STRENGTH, "0"); return; } Loading @@ -373,12 +376,27 @@ public class SimStatus extends SettingsPreferenceFragment { signalAsu = 0; } mSignalStrength.setSummary(mRes.getString(R.string.sim_signal_strength, signalDbm, signalAsu)); setSummaryText(KEY_SIGNAL_STRENGTH, mRes.getString(R.string.sim_signal_strength, signalDbm, signalAsu)); } @VisibleForTesting void updateImsRegistrationState() { boolean isImsRegistered = mTelephonyManager.isImsRegistered(mSir.getSubscriptionId()); setSummaryText(KEY_IMS_REGISTRATION_STATE, mRes.getString(isImsRegistered ? R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered)); } @VisibleForTesting void updatePreference(boolean isTabChanged) { if (isTabChanged) { PreferenceScreen preferenceScreen = getPreferenceScreen(); if (preferenceScreen != null) { preferenceScreen.removeAll(); addPreferencesFromResource(R.xml.device_info_sim_status); } } private void updatePreference() { if (mPhone.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { mShowLatestAreaInfo = Resources.getSystem().getBoolean( com.android.internal.R.bool.config_showAreaUpdateInfoSettings); Loading @@ -387,7 +405,8 @@ public class SimStatus extends SettingsPreferenceFragment { mSir.getSubscriptionId()); mShowICCID = carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL); mShowImsRegState = carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL); // If formattedNumber is null or empty, it'll display as "Unknown". setSummaryText(KEY_PHONE_NUMBER, Loading @@ -412,6 +431,10 @@ public class SimStatus extends SettingsPreferenceFragment { if (hideSignalStrength) { removePreferenceFromScreen(KEY_SIGNAL_STRENGTH); } if (!mShowImsRegState) { removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE); } } private void updatePhoneInfos() { Loading Loading @@ -448,28 +471,35 @@ public class SimStatus extends SettingsPreferenceFragment { @Override public void onServiceStateChanged(ServiceState serviceState) { updateServiceState(serviceState); updateImsRegistrationState(); } }; } } } private OnTabChangeListener mTabListener = new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { doTabChanged(tabId); } }; @VisibleForTesting void doTabChanged(String tabId) { final int slotId = Integer.parseInt(tabId); mSir = mSelectableSubInfos.get(slotId); // The User has changed tab; update the SIM information. updatePhoneInfos(); updatePreference(true /* isTabChanged */); mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE); updateDataState(); updateNetworkType(); updatePreference(); } }; private TabContentFactory mEmptyTabContent = new TabContentFactory() { @Override Loading src/com/android/settings/deviceinfo/Status.java +0 −27 Original line number Diff line number Diff line Loading @@ -28,16 +28,12 @@ import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.PersistableBundle; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserManager; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; Loading Loading @@ -65,7 +61,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable { private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address"; private static final String KEY_SIM_STATUS = "sim_status"; private static final String KEY_IMEI_INFO = "imei_info"; private static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state"; // Broadcasts to listen to for connectivity changes. private static final String[] CONNECTIVITY_INTENTS = { Loading Loading @@ -95,7 +90,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable { private Preference mIpAddress; private Preference mWifiMacAddress; private Preference mWimaxMacAddress; private Preference mImsStatus; private Handler mHandler; Loading Loading @@ -174,7 +168,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable { mWifiMacAddress = findPreference(KEY_WIFI_MAC_ADDRESS); mWimaxMacAddress = findPreference(KEY_WIMAX_MAC_ADDRESS); mIpAddress = findPreference(KEY_IP_ADDRESS); mImsStatus = findPreference(KEY_IMS_REGISTRATION_STATE); mRes = getResources(); mUnavailable = mRes.getString(R.string.status_unavailable); Loading Loading @@ -282,31 +275,11 @@ public class Status extends SettingsPreferenceFragment implements Indexable { } } private void setImsRegistrationStatus() { CarrierConfigManager configManager = (CarrierConfigManager) getSystemService(Context.CARRIER_CONFIG_SERVICE); int subId = SubscriptionManager.getDefaultDataSubscriptionId(); PersistableBundle config = null; if (configManager != null) { config = configManager.getConfigForSubId(subId); } if (config != null && config.getBoolean( CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)) { TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mImsStatus.setSummary((tm != null && tm.isImsRegistered(subId)) ? R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered); } else { removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE); mImsStatus = null; } } void updateConnectivity() { setWimaxStatus(); setWifiStatus(); setBtStatus(); setIpAddressStatus(); setImsRegistrationStatus(); } void updateTimes() { Loading tests/robotests/src/com/android/settings/deviceinfo/SimStatusTest.java 0 → 100644 +185 −0 Original line number Diff line number Diff line /* * 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. */ package com.android.settings.deviceinfo; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.os.PersistableBundle; import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import com.android.internal.telephony.Phone; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowPhoneFactory; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { ShadowPhoneFactory.class }) public class SimStatusTest { @Mock private CarrierConfigManager mCarrierConfigManager; @Mock private Phone mPhone; @Mock private SubscriptionInfo mSubscriptionInfo; @Mock private TelephonyManager mTelephonyManager; @Mock private PreferenceScreen mMockScreen; @Mock private Preference mMockImsRegistrationStatePreference; @Mock private UserManager mMockUserManager; @Mock private Activity mMockActivity; private Context mContext; private Resources mResources; private PersistableBundle mBundle; private SimStatus mFragment; private String mImsRegSummaryText; private boolean mImsRegRemoved; private boolean mResourceUpdated; private List<SubscriptionInfo> mSelectableSubInfos = new ArrayList<>(); @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mResources = spy(mContext.getResources()); mBundle = new PersistableBundle(); mFragment = spy(new SimStatus()); doReturn(mContext).when(mFragment).getContext(); doReturn(mMockScreen).when(mFragment).getPreferenceScreen(); doReturn(mMockImsRegistrationStatePreference).when(mFragment).findPreference( SimStatus.KEY_IMS_REGISTRATION_STATE); doReturn(mMockActivity).when(mFragment).getActivity(); doReturn(mMockUserManager).when(mContext).getSystemService(Context.USER_SERVICE); doReturn(mResources).when(mContext).getResources(); doReturn(0).when(mResources).getIdentifier(anyString(), anyString(), anyString()); doReturn(false).when(mResources).getBoolean(0); doNothing().when(mFragment).addPreferencesFromResource(anyInt()); ReflectionHelpers.setField(mFragment, "mCarrierConfigManager", mCarrierConfigManager); ReflectionHelpers.setField(mFragment, "mPhone", mPhone); ReflectionHelpers.setField(mFragment, "mRes", mResources); ReflectionHelpers.setField(mFragment, "mSir", mSubscriptionInfo); ReflectionHelpers.setField(mFragment, "mTelephonyManager", mTelephonyManager); mSelectableSubInfos.add(mSubscriptionInfo); ReflectionHelpers.setField(mFragment, "mSelectableSubInfos", mSelectableSubInfos); when(mSubscriptionInfo.getSubscriptionId()).thenReturn(0); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mBundle); when(mMockActivity.createPackageContext(anyString(), anyInt())).thenReturn(mContext); ShadowPhoneFactory.setPhone(mPhone); } @Test public void updateImsRegistrationState_imsRegistered_shouldSetSummaryToRegisterd() { when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true); mFragment.updateImsRegistrationState(); // Check "Registered" is set in the summary text verify(mMockImsRegistrationStatePreference).setSummary(mContext.getString( R.string.ims_reg_status_registered)); } @Test public void updateImsRegistrationState_imsNotRegistered_shouldSetSummaryToNotRegisterd() { when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false); mFragment.updateImsRegistrationState(); // Check "Not registered" is set in the summary text verify(mMockImsRegistrationStatePreference).setSummary(mContext.getString( R.string.ims_reg_status_not_registered)); } @Test public void updatePreference_configTrue_shouldNotRemoveImsStatusPreference() { mBundle.putBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true); mFragment.updatePreference(false); // Check the preference is not removed if the config is true verify(mMockScreen, never()).removePreference(mMockImsRegistrationStatePreference); } @Test public void updatePreference_configFalse_shouldRemoveImsStatusPreference() { mBundle.putBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, false); mFragment.updatePreference(false); // Check the preference is removed if the config is false verify(mMockScreen).removePreference(mMockImsRegistrationStatePreference); } @Test public void updatePreference_tabChanged_shouldRemoveAndAddPreferences() { mFragment.updatePreference(true); // Check all preferences are removed once and added again verify(mMockScreen).removeAll(); verify(mFragment).addPreferencesFromResource(R.xml.device_info_sim_status); } @Test public void doTabChanged_shouldRemoveAndAddPreferences() { mFragment.doTabChanged("0"); // Check all preferences are removed once and added again verify(mMockScreen).removeAll(); verify(mFragment).addPreferencesFromResource(R.xml.device_info_sim_status); } } Loading
res/xml/device_info_sim_status.xml +7 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,13 @@ android:summary="@string/device_info_not_available" android:persistent="false" /> <Preference android:key="ims_reg_state" android:enabled="false" android:shouldDisableView="false" android:title="@string/ims_reg_title" android:summary="@string/device_info_not_available" android:persistent="false" /> <Preference android:key="number" android:enabled="false" android:shouldDisableView="false" Loading
res/xml/device_info_status.xml +0 −6 Original line number Diff line number Diff line Loading @@ -89,10 +89,4 @@ android:title="@string/status_wimax_mac_address" android:summary="@string/summary_placeholder" android:persistent="false" /> <Preference android:key="ims_reg_state" android:enabled="false" android:shouldDisableView="false" android:title="@string/ims_reg_title" android:persistent="false" /> </PreferenceScreen>
src/com/android/settings/deviceinfo/SimStatus.java +68 −38 Original line number Diff line number Diff line Loading @@ -30,7 +30,9 @@ import android.os.Bundle; import android.os.PersistableBundle; import android.os.UserHandle; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.CellBroadcastMessage; import android.telephony.PhoneStateListener; Loading Loading @@ -89,6 +91,9 @@ public class SimStatus extends SettingsPreferenceFragment { private static final String KEY_IMEI_SV = "imei_sv"; private static final String KEY_ICCID = "iccid"; @VisibleForTesting static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state"; static private final String CB_AREA_INFO_RECEIVED_ACTION = "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED"; Loading @@ -101,10 +106,10 @@ public class SimStatus extends SettingsPreferenceFragment { private CarrierConfigManager mCarrierConfigManager; private Phone mPhone = null; private Resources mRes; private Preference mSignalStrength; private SubscriptionInfo mSir; private boolean mShowLatestAreaInfo; private boolean mShowICCID; private boolean mShowImsRegState; // Default summary for items private String mDefaultText; Loading Loading @@ -148,8 +153,6 @@ public class SimStatus extends SettingsPreferenceFragment { mRes = getResources(); mDefaultText = mRes.getString(R.string.device_info_default); // Note - missing in zaku build, be careful later... mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); } @Override Loading Loading @@ -202,10 +205,11 @@ public class SimStatus extends SettingsPreferenceFragment { public void onResume() { super.onResume(); if (mPhone != null) { updatePreference(); updatePreference(false /* isTabChanged */); updateSignalStrength(mPhone.getSignalStrength()); updateServiceState(mPhone.getServiceState()); updateImsRegistrationState(); updateDataState(); mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE Loading Loading @@ -323,7 +327,7 @@ public class SimStatus extends SettingsPreferenceFragment { break; case ServiceState.STATE_OUT_OF_SERVICE: // Set signal strength to 0 when service state is STATE_OUT_OF_SERVICE mSignalStrength.setSummary("0"); setSummaryText(KEY_SIGNAL_STRENGTH, "0"); case ServiceState.STATE_EMERGENCY_ONLY: // Set summary string of service state to radioInfo_service_out when // service state is both STATE_OUT_OF_SERVICE & STATE_EMERGENCY_ONLY Loading @@ -332,7 +336,7 @@ public class SimStatus extends SettingsPreferenceFragment { case ServiceState.STATE_POWER_OFF: display = mRes.getString(R.string.radioInfo_service_off); // Also set signal strength to 0 mSignalStrength.setSummary("0"); setSummaryText(KEY_SIGNAL_STRENGTH, "0"); break; } Loading @@ -353,12 +357,11 @@ public class SimStatus extends SettingsPreferenceFragment { } void updateSignalStrength(SignalStrength signalStrength) { if (mSignalStrength != null) { final int state = mPhone.getServiceState().getState(); if ((ServiceState.STATE_OUT_OF_SERVICE == state) || (ServiceState.STATE_POWER_OFF == state)) { mSignalStrength.setSummary("0"); setSummaryText(KEY_SIGNAL_STRENGTH, "0"); return; } Loading @@ -373,12 +376,27 @@ public class SimStatus extends SettingsPreferenceFragment { signalAsu = 0; } mSignalStrength.setSummary(mRes.getString(R.string.sim_signal_strength, signalDbm, signalAsu)); setSummaryText(KEY_SIGNAL_STRENGTH, mRes.getString(R.string.sim_signal_strength, signalDbm, signalAsu)); } @VisibleForTesting void updateImsRegistrationState() { boolean isImsRegistered = mTelephonyManager.isImsRegistered(mSir.getSubscriptionId()); setSummaryText(KEY_IMS_REGISTRATION_STATE, mRes.getString(isImsRegistered ? R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered)); } @VisibleForTesting void updatePreference(boolean isTabChanged) { if (isTabChanged) { PreferenceScreen preferenceScreen = getPreferenceScreen(); if (preferenceScreen != null) { preferenceScreen.removeAll(); addPreferencesFromResource(R.xml.device_info_sim_status); } } private void updatePreference() { if (mPhone.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { mShowLatestAreaInfo = Resources.getSystem().getBoolean( com.android.internal.R.bool.config_showAreaUpdateInfoSettings); Loading @@ -387,7 +405,8 @@ public class SimStatus extends SettingsPreferenceFragment { mSir.getSubscriptionId()); mShowICCID = carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL); mShowImsRegState = carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL); // If formattedNumber is null or empty, it'll display as "Unknown". setSummaryText(KEY_PHONE_NUMBER, Loading @@ -412,6 +431,10 @@ public class SimStatus extends SettingsPreferenceFragment { if (hideSignalStrength) { removePreferenceFromScreen(KEY_SIGNAL_STRENGTH); } if (!mShowImsRegState) { removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE); } } private void updatePhoneInfos() { Loading Loading @@ -448,28 +471,35 @@ public class SimStatus extends SettingsPreferenceFragment { @Override public void onServiceStateChanged(ServiceState serviceState) { updateServiceState(serviceState); updateImsRegistrationState(); } }; } } } private OnTabChangeListener mTabListener = new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { doTabChanged(tabId); } }; @VisibleForTesting void doTabChanged(String tabId) { final int slotId = Integer.parseInt(tabId); mSir = mSelectableSubInfos.get(slotId); // The User has changed tab; update the SIM information. updatePhoneInfos(); updatePreference(true /* isTabChanged */); mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE); updateDataState(); updateNetworkType(); updatePreference(); } }; private TabContentFactory mEmptyTabContent = new TabContentFactory() { @Override Loading
src/com/android/settings/deviceinfo/Status.java +0 −27 Original line number Diff line number Diff line Loading @@ -28,16 +28,12 @@ import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.PersistableBundle; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserManager; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; Loading Loading @@ -65,7 +61,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable { private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address"; private static final String KEY_SIM_STATUS = "sim_status"; private static final String KEY_IMEI_INFO = "imei_info"; private static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state"; // Broadcasts to listen to for connectivity changes. private static final String[] CONNECTIVITY_INTENTS = { Loading Loading @@ -95,7 +90,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable { private Preference mIpAddress; private Preference mWifiMacAddress; private Preference mWimaxMacAddress; private Preference mImsStatus; private Handler mHandler; Loading Loading @@ -174,7 +168,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable { mWifiMacAddress = findPreference(KEY_WIFI_MAC_ADDRESS); mWimaxMacAddress = findPreference(KEY_WIMAX_MAC_ADDRESS); mIpAddress = findPreference(KEY_IP_ADDRESS); mImsStatus = findPreference(KEY_IMS_REGISTRATION_STATE); mRes = getResources(); mUnavailable = mRes.getString(R.string.status_unavailable); Loading Loading @@ -282,31 +275,11 @@ public class Status extends SettingsPreferenceFragment implements Indexable { } } private void setImsRegistrationStatus() { CarrierConfigManager configManager = (CarrierConfigManager) getSystemService(Context.CARRIER_CONFIG_SERVICE); int subId = SubscriptionManager.getDefaultDataSubscriptionId(); PersistableBundle config = null; if (configManager != null) { config = configManager.getConfigForSubId(subId); } if (config != null && config.getBoolean( CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)) { TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mImsStatus.setSummary((tm != null && tm.isImsRegistered(subId)) ? R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered); } else { removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE); mImsStatus = null; } } void updateConnectivity() { setWimaxStatus(); setWifiStatus(); setBtStatus(); setIpAddressStatus(); setImsRegistrationStatus(); } void updateTimes() { Loading
tests/robotests/src/com/android/settings/deviceinfo/SimStatusTest.java 0 → 100644 +185 −0 Original line number Diff line number Diff line /* * 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. */ package com.android.settings.deviceinfo; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.os.PersistableBundle; import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import com.android.internal.telephony.Phone; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowPhoneFactory; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { ShadowPhoneFactory.class }) public class SimStatusTest { @Mock private CarrierConfigManager mCarrierConfigManager; @Mock private Phone mPhone; @Mock private SubscriptionInfo mSubscriptionInfo; @Mock private TelephonyManager mTelephonyManager; @Mock private PreferenceScreen mMockScreen; @Mock private Preference mMockImsRegistrationStatePreference; @Mock private UserManager mMockUserManager; @Mock private Activity mMockActivity; private Context mContext; private Resources mResources; private PersistableBundle mBundle; private SimStatus mFragment; private String mImsRegSummaryText; private boolean mImsRegRemoved; private boolean mResourceUpdated; private List<SubscriptionInfo> mSelectableSubInfos = new ArrayList<>(); @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mResources = spy(mContext.getResources()); mBundle = new PersistableBundle(); mFragment = spy(new SimStatus()); doReturn(mContext).when(mFragment).getContext(); doReturn(mMockScreen).when(mFragment).getPreferenceScreen(); doReturn(mMockImsRegistrationStatePreference).when(mFragment).findPreference( SimStatus.KEY_IMS_REGISTRATION_STATE); doReturn(mMockActivity).when(mFragment).getActivity(); doReturn(mMockUserManager).when(mContext).getSystemService(Context.USER_SERVICE); doReturn(mResources).when(mContext).getResources(); doReturn(0).when(mResources).getIdentifier(anyString(), anyString(), anyString()); doReturn(false).when(mResources).getBoolean(0); doNothing().when(mFragment).addPreferencesFromResource(anyInt()); ReflectionHelpers.setField(mFragment, "mCarrierConfigManager", mCarrierConfigManager); ReflectionHelpers.setField(mFragment, "mPhone", mPhone); ReflectionHelpers.setField(mFragment, "mRes", mResources); ReflectionHelpers.setField(mFragment, "mSir", mSubscriptionInfo); ReflectionHelpers.setField(mFragment, "mTelephonyManager", mTelephonyManager); mSelectableSubInfos.add(mSubscriptionInfo); ReflectionHelpers.setField(mFragment, "mSelectableSubInfos", mSelectableSubInfos); when(mSubscriptionInfo.getSubscriptionId()).thenReturn(0); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mBundle); when(mMockActivity.createPackageContext(anyString(), anyInt())).thenReturn(mContext); ShadowPhoneFactory.setPhone(mPhone); } @Test public void updateImsRegistrationState_imsRegistered_shouldSetSummaryToRegisterd() { when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true); mFragment.updateImsRegistrationState(); // Check "Registered" is set in the summary text verify(mMockImsRegistrationStatePreference).setSummary(mContext.getString( R.string.ims_reg_status_registered)); } @Test public void updateImsRegistrationState_imsNotRegistered_shouldSetSummaryToNotRegisterd() { when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false); mFragment.updateImsRegistrationState(); // Check "Not registered" is set in the summary text verify(mMockImsRegistrationStatePreference).setSummary(mContext.getString( R.string.ims_reg_status_not_registered)); } @Test public void updatePreference_configTrue_shouldNotRemoveImsStatusPreference() { mBundle.putBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true); mFragment.updatePreference(false); // Check the preference is not removed if the config is true verify(mMockScreen, never()).removePreference(mMockImsRegistrationStatePreference); } @Test public void updatePreference_configFalse_shouldRemoveImsStatusPreference() { mBundle.putBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, false); mFragment.updatePreference(false); // Check the preference is removed if the config is false verify(mMockScreen).removePreference(mMockImsRegistrationStatePreference); } @Test public void updatePreference_tabChanged_shouldRemoveAndAddPreferences() { mFragment.updatePreference(true); // Check all preferences are removed once and added again verify(mMockScreen).removeAll(); verify(mFragment).addPreferencesFromResource(R.xml.device_info_sim_status); } @Test public void doTabChanged_shouldRemoveAndAddPreferences() { mFragment.doTabChanged("0"); // Check all preferences are removed once and added again verify(mMockScreen).removeAll(); verify(mFragment).addPreferencesFromResource(R.xml.device_info_sim_status); } }