Merge "[Settings] Fix CellDataPreferenceTest" into rvc-dev
diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java
index 4a49f33..6dc40e8 100644
--- a/src/com/android/settings/datausage/CellDataPreference.java
+++ b/src/com/android/settings/datausage/CellDataPreference.java
@@ -50,15 +50,12 @@
public int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
public boolean mChecked;
public boolean mMultiSimDialog;
- @VisibleForTesting
- ProxySubscriptionManager mProxySubscriptionMgr;
private MobileDataEnabledListener mDataStateListener;
public CellDataPreference(Context context, AttributeSet attrs) {
super(context, attrs, TypedArrayUtils.getAttr(context,
androidx.preference.R.attr.switchPreferenceStyle,
android.R.attr.switchPreferenceStyle));
- mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(context);
mDataStateListener = new MobileDataEnabledListener(context, this);
}
@@ -88,13 +85,15 @@
public void onAttached() {
super.onAttached();
mDataStateListener.start(mSubId);
- mProxySubscriptionMgr.addActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
+ getProxySubscriptionManager()
+ .addActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
}
@Override
public void onDetached() {
mDataStateListener.stop();
- mProxySubscriptionMgr.removeActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
+ getProxySubscriptionManager()
+ .removeActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
super.onDetached();
}
@@ -104,8 +103,8 @@
throw new IllegalArgumentException("CellDataPreference needs a SubscriptionInfo");
}
- mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(getContext());
- mProxySubscriptionMgr.addActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
+ getProxySubscriptionManager()
+ .addActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
mSubId = subId;
@@ -115,6 +114,16 @@
updateChecked();
}
+ @VisibleForTesting
+ ProxySubscriptionManager getProxySubscriptionManager() {
+ return ProxySubscriptionManager.getInstance(getContext());
+ }
+
+ @VisibleForTesting
+ SubscriptionInfo getActiveSubscriptionInfo(int subId) {
+ return getProxySubscriptionManager().getActiveSubscriptionInfo(subId);
+ }
+
private void updateChecked() {
setChecked(getContext().getSystemService(TelephonyManager.class).getDataEnabled(mSubId));
}
@@ -122,7 +131,7 @@
private void updateEnabled() {
// If this subscription is not active, for example, SIM card is taken out, we disable
// the button.
- setEnabled(mProxySubscriptionMgr.getActiveSubscriptionInfo(mSubId) != null);
+ setEnabled(getActiveSubscriptionInfo(mSubId) != null);
}
@Override
@@ -130,9 +139,8 @@
final Context context = getContext();
FeatureFactory.getFactory(context).getMetricsFeatureProvider()
.action(context, SettingsEnums.ACTION_CELL_DATA_TOGGLE, !mChecked);
- final SubscriptionInfo currentSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
- mSubId);
- final SubscriptionInfo nextSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
+ final SubscriptionInfo currentSir = getActiveSubscriptionInfo(mSubId);
+ final SubscriptionInfo nextSir = getActiveSubscriptionInfo(
SubscriptionManager.getDefaultDataSubscriptionId());
if (mChecked) {
setMobileDataEnabled(false);
@@ -186,9 +194,8 @@
private void showMultiSimDialog(Builder builder,
DialogInterface.OnClickListener listener) {
- final SubscriptionInfo currentSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
- mSubId);
- final SubscriptionInfo nextSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
+ final SubscriptionInfo currentSir = getActiveSubscriptionInfo(mSubId);
+ final SubscriptionInfo nextSir = getActiveSubscriptionInfo(
SubscriptionManager.getDefaultDataSubscriptionId());
final String previousName = (nextSir == null)
@@ -205,8 +212,7 @@
}
private void disableDataForOtherSubscriptions(int subId) {
- final SubscriptionInfo subInfo = mProxySubscriptionMgr.getActiveSubscriptionInfo(
- subId);
+ final SubscriptionInfo subInfo = getActiveSubscriptionInfo(subId);
if (subInfo != null) {
getContext().getSystemService(TelephonyManager.class).setDataEnabled(subId, false);
}
@@ -218,7 +224,7 @@
return;
}
if (mMultiSimDialog) {
- mProxySubscriptionMgr.get().setDefaultDataSubId(mSubId);
+ getProxySubscriptionManager().get().setDefaultDataSubId(mSubId);
setMobileDataEnabled(true);
disableDataForOtherSubscriptions(mSubId);
} else {
diff --git a/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
index 5f2a54c..c0b12dc 100644
--- a/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
@@ -17,11 +17,14 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import android.content.Context;
import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
@@ -31,7 +34,6 @@
import com.android.settings.network.ProxySubscriptionManager;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -40,12 +42,13 @@
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
-@Ignore
public class CellDataPreferenceTest {
@Mock
private ProxySubscriptionManager mProxySubscriptionMgr;
@Mock
+ private SubscriptionManager mSubscriptionManager;
+ @Mock
private SubscriptionInfo mSubInfo;
private Context mContext;
@@ -57,8 +60,20 @@
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mPreference = new CellDataPreference(mContext, null);
- mPreference.mProxySubscriptionMgr = mProxySubscriptionMgr;
+ mPreference = new CellDataPreference(mContext, null) {
+ @Override
+ ProxySubscriptionManager getProxySubscriptionManager() {
+ return mProxySubscriptionMgr;
+ }
+ @Override
+ SubscriptionInfo getActiveSubscriptionInfo(int subId) {
+ return mSubInfo;
+ }
+ };
+ doNothing().when(mSubscriptionManager).setDefaultDataSubId(anyInt());
+ doReturn(mSubscriptionManager).when(mProxySubscriptionMgr).get();
+ doNothing().when(mProxySubscriptionMgr).addActiveSubscriptionsListener(any());
+ doNothing().when(mProxySubscriptionMgr).removeActiveSubscriptionsListener(any());
final LayoutInflater inflater = LayoutInflater.from(mContext);
final View view = inflater.inflate(mPreference.getLayoutResource(),
@@ -69,14 +84,13 @@
@Test
public void noActiveSub_shouldDisable() {
- doReturn(null).when(mProxySubscriptionMgr).getActiveSubscriptionInfo(anyInt());
+ mSubInfo = null;
mPreference.mOnSubscriptionsChangeListener.onChanged();
assertThat(mPreference.isEnabled()).isFalse();
}
@Test
public void hasActiveSub_shouldEnable() {
- doReturn(mSubInfo).when(mProxySubscriptionMgr).getActiveSubscriptionInfo(anyInt());
mPreference.mOnSubscriptionsChangeListener.onChanged();
assertThat(mPreference.isEnabled()).isTrue();
}