From 29e37ceaa1028672160c74715a5840d51a7c96fb Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 23 Apr 2020 17:49:04 +0800 Subject: [PATCH] [Settings] Fix CellDataPreferenceTest Fix CellDataPreferenceTest Bug: 154562715 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=CellDataPreferenceTest Change-Id: Ia0ee0f5cd802ca9b6827bddcaf189c619d268074 --- .../datausage/CellDataPreference.java | 40 +++++++++++-------- .../datausage/CellDataPreferenceTest.java | 26 +++++++++--- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java index 4a49f333cbb..6dc40e86aa9 100644 --- a/src/com/android/settings/datausage/CellDataPreference.java +++ b/src/com/android/settings/datausage/CellDataPreference.java @@ -50,15 +50,12 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 class CellDataPreference extends CustomDialogPreferenceCompat 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat } 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 @@ public class CellDataPreference extends CustomDialogPreferenceCompat 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 5f2a54c5bc7..c0b12dc50c1 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 @@ package com.android.settings.datausage; 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 androidx.preference.PreferenceViewHolder; 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.RobolectricTestRunner; 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 @@ public class CellDataPreferenceTest { 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 @@ public class CellDataPreferenceTest { @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(); }