Merge "Fix test case error"
diff --git a/res/layout/palette_listview_item.xml b/res/layout/palette_listview_item.xml
index e8cc940..3342ef1 100644
--- a/res/layout/palette_listview_item.xml
+++ b/res/layout/palette_listview_item.xml
@@ -22,10 +22,12 @@
<TextView
android:id="@+id/item_textview"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="10dp"
- android:textSize="20dp"
+ android:layout_height="42dp"
+ android:fontFamily="roboto-bold"
+ android:gravity="center_vertical"
android:maxLength="20"
- android:singleLine="true"/>
+ android:paddingLeft="@dimen/accessibility_layout_margin_start_end"
+ android:singleLine="true"
+ android:textSize="14dp" />
</FrameLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index f79874c..ad5c294 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -266,7 +266,7 @@
<dimen name="message_metadata_top_padding">4dp</dimen>
<!-- Accessibility Settings -->
- <dimen name="accessibility_layout_margin_start_end">24dp</dimen>
+ <dimen name="accessibility_layout_margin_start_end">16dp</dimen>
<dimen name="accessibility_button_preference_padding_top_bottom">18dp</dimen>
<!-- Accessibility, Screen magnification. These values are meant to be relative values and the actual layout value will be set programmatically. -->
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 9793e85..3817730 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -48,6 +48,7 @@
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType;
+import com.android.settings.accessibility.AccessibilityUtil.State;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.display.DarkUIPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -254,11 +255,15 @@
}
public static CharSequence getServiceSummary(Context context, AccessibilityServiceInfo info,
- boolean serviceEnabled) {
- final String serviceState = serviceEnabled
+ @State int state) {
+ final CharSequence serviceSummary = info.loadSummary(context.getPackageManager());
+ if (state == State.UNKNOWN) {
+ return serviceSummary;
+ }
+
+ final String serviceState = (state == State.ON)
? context.getString(R.string.accessibility_summary_state_enabled)
: context.getString(R.string.accessibility_summary_state_disabled);
- final CharSequence serviceSummary = info.loadSummary(context.getPackageManager());
final String stateSummaryCombo = context.getString(
R.string.preference_summary_default_combination,
serviceState, serviceSummary);
@@ -266,6 +271,7 @@
return (TextUtils.isEmpty(serviceSummary))
? serviceState
: stateSummaryCombo;
+
}
@VisibleForTesting
@@ -371,13 +377,18 @@
description = getString(R.string.accessibility_service_default_description);
}
+ final int fragmentType = AccessibilityUtil.getAccessibilityServiceFragmentType(info);
if (serviceEnabled && info.crashed) {
// Update the summaries for services that have crashed.
preference.setSummary(R.string.accessibility_summary_state_stopped);
description = getString(R.string.accessibility_description_state_stopped);
} else {
+ int serviceState = serviceEnabled ? State.ON : State.OFF;
+ if (fragmentType == AccessibilityServiceFragmentType.INVISIBLE) {
+ serviceState = State.UNKNOWN;
+ }
final CharSequence serviceSummary = getServiceSummary(getContext(), info,
- serviceEnabled);
+ serviceState);
preference.setSummary(serviceSummary);
}
@@ -397,7 +408,7 @@
preference.setEnabled(true);
}
- switch (AccessibilityUtil.getAccessibilityServiceFragmentType(info)) {
+ switch (fragmentType) {
case AccessibilityServiceFragmentType.LEGACY:
preference.setFragment(
LegacyAccessibilityServicePreferenceFragment.class.getName());
@@ -508,6 +519,8 @@
experimentalCategory.removePreference(mDisplayDaltonizerPreferenceScreen);
mDisplayDaltonizerPreferenceScreen.setOrder(
mDisplayMagnificationPreferenceScreen.getOrder() + 1);
+ mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary(
+ getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED));
mToggleInversionPreference.setOrder(
mDisplayDaltonizerPreferenceScreen.getOrder() + 1);
mToggleLargePointerIconPreference.setOrder(
diff --git a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
index e53afeb..17c6016 100644
--- a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
@@ -16,6 +16,10 @@
package com.android.settings.accessibility;
+import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
+import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
+import static com.android.settings.accessibility.AccessibilityUtil.State.UNKNOWN;
+
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -23,6 +27,7 @@
import android.provider.Settings;
import android.view.accessibility.AccessibilityManager;
+import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.accessibility.AccessibilityUtils;
@@ -39,8 +44,7 @@
private final ComponentName mComponentName;
- private final int ON = 1;
- private final int OFF = 0;
+ private static final String EMPTY_STRING = "";
public AccessibilitySlicePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -55,8 +59,13 @@
@Override
public CharSequence getSummary() {
final AccessibilityServiceInfo serviceInfo = getAccessibilityServiceInfo();
- return serviceInfo == null
- ? "" : AccessibilitySettings.getServiceSummary(mContext, serviceInfo, isChecked());
+ int serviceState = isChecked() ? ON : OFF;
+ if (AccessibilityUtil.getAccessibilityServiceFragmentType(serviceInfo)
+ == AccessibilityServiceFragmentType.INVISIBLE) {
+ serviceState = UNKNOWN;
+ }
+ return serviceInfo == null ? EMPTY_STRING : AccessibilitySettings.getServiceSummary(
+ mContext, serviceInfo, serviceState);
}
@Override
diff --git a/src/com/android/settings/accessibility/AccessibilityUtil.java b/src/com/android/settings/accessibility/AccessibilityUtil.java
index 8da6fbb..6159f92 100644
--- a/src/com/android/settings/accessibility/AccessibilityUtil.java
+++ b/src/com/android/settings/accessibility/AccessibilityUtil.java
@@ -98,6 +98,7 @@
/** Denotes the accessibility enabled status */
@Retention(RetentionPolicy.SOURCE)
public @interface State {
+ int UNKNOWN = -1;
int OFF = 0;
int ON = 1;
}
diff --git a/src/com/android/settings/accessibility/DaltonizerPreferenceController.java b/src/com/android/settings/accessibility/DaltonizerPreferenceController.java
index 2922b76..c859d8c 100644
--- a/src/com/android/settings/accessibility/DaltonizerPreferenceController.java
+++ b/src/com/android/settings/accessibility/DaltonizerPreferenceController.java
@@ -19,15 +19,10 @@
import android.content.Context;
import android.provider.Settings;
-import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
-import com.google.common.primitives.Ints;
-
/** Controller that shows and updates the color correction summary. */
public class DaltonizerPreferenceController extends BasePreferenceController {
-
- private static final String DALTONIZER_TYPE = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER;
private static final String DALTONIZER_ENABLED =
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED;
@@ -42,21 +37,6 @@
@Override
public CharSequence getSummary() {
- final String[] daltonizerSummaries = mContext.getResources().getStringArray(
- R.array.daltonizer_mode_summaries);
- final int[] daltonizerValues = mContext.getResources().getIntArray(
- R.array.daltonizer_type_values);
- final int timeoutValue =
- DaltonizerRadioButtonPreferenceController.getSecureAccessibilityDaltonizerValue(
- mContext.getContentResolver(), DALTONIZER_TYPE);
- final int idx = Ints.indexOf(daltonizerValues, timeoutValue);
- final String serviceSummary = daltonizerSummaries[idx == -1 ? 0 : idx];
-
- final CharSequence serviceState = AccessibilityUtil.getSummary(mContext,
- DALTONIZER_ENABLED);
-
- return mContext.getString(
- R.string.preference_summary_default_combination,
- serviceState, serviceSummary);
+ return AccessibilityUtil.getSummary(mContext, DALTONIZER_ENABLED);
}
}
diff --git a/src/com/android/settings/accessibility/DaltonizerRadioButtonPreferenceController.java b/src/com/android/settings/accessibility/DaltonizerRadioButtonPreferenceController.java
index dd5eb10..f6f554e 100644
--- a/src/com/android/settings/accessibility/DaltonizerRadioButtonPreferenceController.java
+++ b/src/com/android/settings/accessibility/DaltonizerRadioButtonPreferenceController.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.res.Resources;
import android.provider.Settings;
+import android.view.View;
import android.view.accessibility.AccessibilityManager;
import androidx.lifecycle.LifecycleObserver;
@@ -122,6 +123,7 @@
mPreference = (RadioButtonPreference)
screen.findPreference(getPreferenceKey());
mPreference.setOnClickListener(this);
+ mPreference.setAppendixVisibility(View.GONE);
updateState(mPreference);
}
diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceController.java b/src/com/android/settings/accessibility/MagnificationPreferenceController.java
index 8b214a2..7ac7bef 100644
--- a/src/com/android/settings/accessibility/MagnificationPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationPreferenceController.java
@@ -18,7 +18,6 @@
import android.content.Context;
import android.os.Bundle;
-import android.provider.Settings;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -41,22 +40,8 @@
@Override
public CharSequence getSummary() {
- final boolean tripleTapEnabled = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1;
- final boolean buttonEnabled = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 1;
-
- int summaryResId = 0;
- if (!tripleTapEnabled && !buttonEnabled) {
- summaryResId = R.string.accessibility_feature_state_off;
- } else if (!tripleTapEnabled && buttonEnabled) {
- summaryResId = R.string.accessibility_screen_magnification_navbar_title;
- } else if (tripleTapEnabled && !buttonEnabled) {
- summaryResId = R.string.accessibility_screen_magnification_gestures_title;
- } else {
- summaryResId = R.string.accessibility_screen_magnification_state_navbar_gesture;
- }
- return mContext.getResources().getText(summaryResId);
+ return mContext.getResources().getText(
+ R.string.accessibility_screen_magnification_navbar_title);
}
@Override
diff --git a/src/com/android/settings/accessibility/PaletteListPreference.java b/src/com/android/settings/accessibility/PaletteListPreference.java
index de35112..c5c4205 100644
--- a/src/com/android/settings/accessibility/PaletteListPreference.java
+++ b/src/com/android/settings/accessibility/PaletteListPreference.java
@@ -26,7 +26,7 @@
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
-import com.android.settingslib.widget.R;
+import com.android.settings.R;
/** Preference that easier preview by matching name to color. */
public class PaletteListPreference extends Preference {
diff --git a/src/com/android/settings/accessibility/PaletteListView.java b/src/com/android/settings/accessibility/PaletteListView.java
index 0030817..ef010e2 100644
--- a/src/com/android/settings/accessibility/PaletteListView.java
+++ b/src/com/android/settings/accessibility/PaletteListView.java
@@ -35,7 +35,7 @@
import androidx.annotation.VisibleForTesting;
-import com.android.settingslib.widget.R;
+import com.android.settings.R;
import com.google.common.collect.Iterables;
@@ -55,13 +55,13 @@
* display also the view background shows the color beside the text variable end point.
*/
public class PaletteListView extends ListView {
- private static final float VIEW_PITCH = 0.05f;
private final Context mContext;
private final DisplayAdapter mDisplayAdapter;
private final LayoutInflater mLayoutInflater;
private final String mDefaultGradientColorCodeString;
private final int mDefaultGradientColor;
private float mTextBound;
+ private static final float LANDSCAPE_MAX_WIDTH_PERCENTAGE = 100f;
public PaletteListView(Context context) {
this(context, null);
@@ -206,8 +206,17 @@
final float textWidth = textView.getPaint().measureText(textView.getText().toString());
// Computes rate of text width compare to screen width, and measures the round the double
// to two decimal places manually.
- final float textBound = Math.round(textWidth / getScreenWidth(windowManager) * 100) / 100f;
- mTextBound = textBound + VIEW_PITCH;
+ final float textBound = Math.round(
+ textWidth / getScreenWidth(windowManager) * LANDSCAPE_MAX_WIDTH_PERCENTAGE)
+ / LANDSCAPE_MAX_WIDTH_PERCENTAGE;
+
+ // Left padding and right padding with color preview.
+ final float paddingPixel = getResources().getDimension(
+ R.dimen.accessibility_layout_margin_start_end);
+ final float paddingWidth =
+ Math.round(paddingPixel / getScreenWidth(windowManager)
+ * LANDSCAPE_MAX_WIDTH_PERCENTAGE) / LANDSCAPE_MAX_WIDTH_PERCENTAGE;
+ mTextBound = textBound + paddingWidth + paddingWidth;
}
private static class ViewHolder {
diff --git a/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java b/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java
index e368aab..4862cfe 100644
--- a/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java
+++ b/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java
@@ -26,6 +26,7 @@
import android.provider.Settings;
import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
@@ -80,6 +81,12 @@
}
@Override
+ public void updateState(Preference preference) {
+ final FooterPreference footerPref = (FooterPreference) preference;
+ footerPref.setVisible(isAvailable());
+ }
+
+ @Override
public void onGraphicsDriverContentChanged() {
updateState(mPreference);
}
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 1986965..d7e07d9 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -27,6 +27,7 @@
import android.os.IBinder;
import android.os.PersistableBundle;
import android.os.RemoteException;
+import android.telephony.AccessNetworkConstants;
import android.telephony.Annotation;
import android.telephony.CarrierConfigManager;
import android.telephony.CellBroadcastIntents;
@@ -42,6 +43,9 @@
import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo;
import android.telephony.euicc.EuiccManager;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.ImsMmTelManager;
+import android.telephony.ims.ImsReasonInfo;
import android.text.TextUtils;
import android.util.Log;
@@ -107,11 +111,27 @@
new OnSubscriptionsChangedListener() {
@Override
public void onSubscriptionsChanged() {
- mSubscriptionInfo = mSubscriptionManager.getActiveSubscriptionInfo(
- mSubscriptionInfo.getSubscriptionId());
- mTelephonyManager = mTelephonyManager.createForSubscriptionId(
- mSubscriptionInfo.getSubscriptionId());
- updateNetworkProvider();
+ final int prevSubId = (mSubscriptionInfo != null)
+ ? mSubscriptionInfo.getSubscriptionId()
+ : SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
+ mSubscriptionInfo = getPhoneSubscriptionInfo(mSlotIndex);
+
+ final int nextSubId = (mSubscriptionInfo != null)
+ ? mSubscriptionInfo.getSubscriptionId()
+ : SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
+ if (prevSubId != nextSubId) {
+ if (SubscriptionManager.isValidSubscriptionId(prevSubId)) {
+ unregisterImsRegistrationCallback(prevSubId);
+ }
+ if (SubscriptionManager.isValidSubscriptionId(nextSubId)) {
+ mTelephonyManager =
+ mTelephonyManager.createForSubscriptionId(nextSubId);
+ registerImsRegistrationCallback(nextSubId);
+ }
+ }
+ updateSubscriptionStatus();
}
};
@@ -201,13 +221,17 @@
}
mPhoneStateListener = getPhoneStateListener();
+ updateLatestAreaInfo();
+ updateSubscriptionStatus();
+ }
+
+ private void updateSubscriptionStatus() {
updateNetworkProvider();
final ServiceState serviceState = mTelephonyManager.getServiceState();
final SignalStrength signalStrength = mTelephonyManager.getSignalStrength();
updatePhoneNumber();
- updateLatestAreaInfo();
updateServiceState(serviceState);
updateSignalStrength(signalStrength);
updateNetworkType();
@@ -241,6 +265,7 @@
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
| PhoneStateListener.LISTEN_SERVICE_STATE);
mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
+ registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
if (mShowLatestAreaInfo) {
updateAreaInfoText();
@@ -255,6 +280,7 @@
return;
}
+ unregisterImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
@@ -525,21 +551,68 @@
}
}
- private void updateImsRegistrationState() {
+ private boolean isImsRegistrationStateShowUp() {
final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
final PersistableBundle carrierConfig =
mCarrierConfigManager.getConfigForSubId(subscriptionId);
- final boolean showImsRegState = carrierConfig == null ? false :
+ return carrierConfig == null ? false :
carrierConfig.getBoolean(
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
- if (showImsRegState) {
- final boolean isImsRegistered = mTelephonyManager.isImsRegistered(subscriptionId);
- mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(isImsRegistered ?
- R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered));
- } else {
- mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID);
- mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
+ }
+
+ private void updateImsRegistrationState() {
+ if (isImsRegistrationStateShowUp()) {
+ return;
}
+ mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID);
+ mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
+ }
+
+ private ImsMmTelManager.RegistrationCallback mImsRegStateCallback =
+ new ImsMmTelManager.RegistrationCallback() {
+ @Override
+ public void onRegistered(@AccessNetworkConstants.TransportType int imsTransportType) {
+ mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
+ R.string.ims_reg_status_registered));
+ }
+ @Override
+ public void onRegistering(@AccessNetworkConstants.TransportType int imsTransportType) {
+ mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
+ R.string.ims_reg_status_not_registered));
+ }
+ @Override
+ public void onUnregistered(@Nullable ImsReasonInfo info) {
+ mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
+ R.string.ims_reg_status_not_registered));
+ }
+ @Override
+ public void onTechnologyChangeFailed(
+ @AccessNetworkConstants.TransportType int imsTransportType,
+ @Nullable ImsReasonInfo info) {
+ mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
+ R.string.ims_reg_status_not_registered));
+ }
+ };
+
+ private void registerImsRegistrationCallback(int subId) {
+ if (!isImsRegistrationStateShowUp()) {
+ return;
+ }
+ try {
+ final ImsMmTelManager imsMmTelMgr = ImsMmTelManager.createForSubscriptionId(subId);
+ imsMmTelMgr.registerImsRegistrationCallback(mDialog.getContext().getMainExecutor(),
+ mImsRegStateCallback);
+ } catch (ImsException exception) {
+ Log.w(TAG, "fail to register IMS status for subId=" + subId, exception);
+ }
+ }
+
+ private void unregisterImsRegistrationCallback(int subId) {
+ if (!isImsRegistrationStateShowUp()) {
+ return;
+ }
+ final ImsMmTelManager imsMmTelMgr = ImsMmTelManager.createForSubscriptionId(subId);
+ imsMmTelMgr.unregisterImsRegistrationCallback(mImsRegStateCallback);
}
private SubscriptionInfo getPhoneSubscriptionInfo(int slotId) {
diff --git a/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java
index 1dac131..a2d23b6 100644
--- a/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java
@@ -105,4 +105,20 @@
verify(mGraphicsDriverContentObserver).unregister(mResolver);
}
+
+ @Test
+ public void updateState_available_visible() {
+ when(mController.getAvailabilityStatus()).thenReturn(AVAILABLE_UNSEARCHABLE);
+ mController.updateState(mPreference);
+
+ verify(mPreference).setVisible(true);
+ }
+
+ @Test
+ public void updateState_unavailable_invisible() {
+ when(mController.getAvailabilityStatus()).thenReturn(CONDITIONALLY_UNAVAILABLE);
+ mController.updateState(mPreference);
+
+ verify(mPreference).setVisible(false);
+ }
}
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 851dfe0..395c8a4 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -43,6 +43,7 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
import android.content.Context;
import android.content.pm.PackageInfo;
@@ -80,6 +81,7 @@
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowPackageManager;
+import org.robolectric.shadows.ShadowTelephonyManager;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
@@ -93,7 +95,6 @@
@Mock
private SimStatusDialogFragment mDialog;
- @Mock
private TelephonyManager mTelephonyManager;
@Mock
private SubscriptionInfo mSubscriptionInfo;
@@ -115,7 +116,6 @@
private PersistableBundle mPersistableBundle;
@Mock
private EuiccManager mEuiccManager;
- @Mock
private SubscriptionManager mSubscriptionManager;
private SimStatusDialogController mController;
@@ -131,10 +131,22 @@
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
+ mContext = spy(RuntimeEnvironment.application);
when(mDialog.getContext()).thenReturn(mContext);
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
+
+ mSubscriptionManager = spy(mContext.getSystemService(SubscriptionManager.class));
+
+ mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class));
+ final ShadowTelephonyManager shadowTelephonyMgr = shadowOf(mTelephonyManager);
+ shadowTelephonyMgr.setTelephonyManagerForSubscriptionId(
+ SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, mTelephonyManager);
+ doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc();
+ doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();
+
+ doReturn(mEuiccManager).when(mContext).getSystemService(EuiccManager.class);
+
mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
ShadowDeviceInfoUtils.setPhoneNumber("");
//CellSignalStrength setup
@@ -156,9 +168,9 @@
ReflectionHelpers.setField(mController, "mSubscriptionManager", mSubscriptionManager);
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
- when(mTelephonyManager.getUiccCardsInfo()).thenReturn(new ArrayList<UiccCardInfo>());
- when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(
- new HashMap<Integer, Integer>());
+ doReturn(new ArrayList<UiccCardInfo>()).when(mTelephonyManager).getUiccCardsInfo();
+ doReturn(new HashMap<Integer, Integer>()).when(mTelephonyManager)
+ .getLogicalToPhysicalSlotMapping();
when(mEuiccManager.isEnabled()).thenReturn(false);
when(mEuiccManager.getEid()).thenReturn("");
@@ -168,7 +180,6 @@
when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
.thenReturn(true);
- when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
doReturn(mServiceState).when(mTelephonyManager).getServiceState();
doReturn(mSignalStrength).when(mTelephonyManager).getSignalStrength();
@@ -185,7 +196,6 @@
}
@Test
- @Ignore
public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() {
final CharSequence carrierName = "foobar";
doReturn(carrierName).when(mSubscriptionInfo).getCarrierName();
@@ -196,7 +206,6 @@
}
@Test
- @Ignore
public void initialize_updatePhoneNumberWith1111111111_shouldUpdatePhoneNumber() {
ShadowDeviceInfoUtils.setPhoneNumber("1111111111");
@@ -209,7 +218,6 @@
}
@Test
- @Ignore
public void initialize_updateLatestAreaInfoWithCdmaPhone_shouldRemoveOperatorInfoSetting() {
when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA);
@@ -220,7 +228,6 @@
}
@Test
- @Ignore
public void initialize_updateServiceStateWithInService_shouldUpdateTextToBeCInService() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
@@ -231,7 +238,6 @@
}
@Test
- @Ignore
public void initialize_updateServiceStateWithPowerOff_shouldUpdateTextAndResetSignalStrength() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF);
when(mPersistableBundle.getBoolean(
@@ -245,7 +251,6 @@
}
@Test
- @Ignore
public void initialize_updateVoiceDataOutOfService_shouldUpdateSettingAndResetSignalStrength() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
when(mServiceState.getDataRegistrationState()).thenReturn(
@@ -261,7 +266,6 @@
}
@Test
- @Ignore
public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateTextToBeInService() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE);
@@ -275,7 +279,6 @@
}
@Test
- @Ignore
public void initialize_updateSignalStrengthWithLte50Wcdma40_shouldUpdateSignalStrengthTo50() {
final int lteDbm = 50;
final int lteAsu = 50;
@@ -293,7 +296,6 @@
}
@Test
- @Ignore
public void initialize_updateSignalStrengthWithLte50Cdma30_shouldUpdateSignalStrengthTo50() {
final int lteDbm = 50;
final int lteAsu = 50;
@@ -311,7 +313,6 @@
}
@Test
- @Ignore
public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateSignalStrengthTo50() {
when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE);
@@ -332,7 +333,6 @@
}
@Test
- @Ignore
public void initialize_updateVoiceNetworkTypeWithEdge_shouldUpdateSettingToEdge() {
when(mTelephonyManager.getVoiceNetworkType()).thenReturn(
TelephonyManager.NETWORK_TYPE_EDGE);
@@ -344,7 +344,6 @@
}
@Test
- @Ignore
public void initialize_updateDataNetworkTypeWithEdge_shouldUpdateSettingToEdge() {
when(mTelephonyManager.getDataNetworkType()).thenReturn(
TelephonyManager.NETWORK_TYPE_EDGE);
@@ -356,7 +355,6 @@
}
@Test
- @Ignore
public void initialize_updateRoamingStatusIsRoaming_shouldSetSettingToRoaming() {
when(mServiceState.getRoaming()).thenReturn(true);
@@ -367,7 +365,6 @@
}
@Test
- @Ignore
public void initialize_updateRoamingStatusNotRoaming_shouldSetSettingToRoamingOff() {
when(mServiceState.getRoaming()).thenReturn(false);
@@ -378,7 +375,6 @@
}
@Test
- @Ignore
public void initialize_doNotShowIccid_shouldRemoveIccidSetting() {
when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL)).thenReturn(false);
@@ -390,7 +386,6 @@
}
@Test
- @Ignore
public void initialize_doNotShowSignalStrength_shouldRemoveSignalStrengthSetting() {
when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
@@ -403,7 +398,6 @@
}
@Test
- @Ignore
public void initialize_showSignalStrengthAndIccId_shouldShowSignalStrengthAndIccIdSetting() {
// getConfigForSubId is nullable, so make sure the default behavior is correct
when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(null);
@@ -416,7 +410,6 @@
}
@Test
- @Ignore
public void initialize_showIccid_shouldSetIccidToSetting() {
final String iccid = "12351351231241";
when(mPersistableBundle.getBoolean(
@@ -429,7 +422,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldNotSetEid() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM);
@@ -468,7 +460,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldSetEidFromCard() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM);
@@ -507,7 +498,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldSetEidFromManager() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM);
@@ -549,7 +539,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldRemoveEid() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM);
@@ -589,7 +578,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldNotSetEidInSingleSimMode() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
@@ -619,7 +607,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldSetEidInSingleSimModeWithEnabledEuicc() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
@@ -651,7 +638,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldSetEidInSingleSimModeWithDisabledEuicc() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
@@ -683,7 +669,6 @@
}
@Test
- @Ignore
public void initialize_updateEid_shouldRemoveEidInSingleSimMode() {
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
@@ -763,7 +748,6 @@
}
@Test
- @Ignore
public void initialize_nullSignalStrength_noCrash() {
doReturn(null).when(mTelephonyManager).getSignalStrength();
// we should not crash when running the following line