Loading src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java +24 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; Loading @@ -30,6 +32,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.SubscriptionsChangeListener; public class DataDuringCallsPreferenceController extends TelephonyTogglePreferenceController Loading @@ -39,11 +43,16 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen private SwitchPreference mPreference; private SubscriptionsChangeListener mChangeListener; private TelephonyManager mManager; private MobileDataContentObserver mMobileDataContentObserver; private PreferenceScreen mScreen; public DataDuringCallsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mChangeListener = new SubscriptionsChangeListener(mContext, this); mMobileDataContentObserver = new MobileDataContentObserver( new Handler(Looper.getMainLooper())); mMobileDataContentObserver.setOnMobileDataChangedListener(()->refreshPreference()); } public void init(Lifecycle lifecycle, int subId) { Loading @@ -55,17 +64,20 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @OnLifecycleEvent(ON_RESUME) public void onResume() { mChangeListener.start(); mMobileDataContentObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_PAUSE) public void onPause() { mChangeListener.stop(); mMobileDataContentObserver.unRegister(mContext); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); mScreen = screen; } @Override Loading @@ -81,8 +93,8 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @Override public int getAvailabilityStatus(int subId) { if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID || SubscriptionManager.getDefaultDataSubscriptionId() == mSubId) { if (!SubscriptionManager.isValidSubscriptionId(subId) || SubscriptionManager.getDefaultDataSubscriptionId() == subId) { return CONDITIONALLY_UNAVAILABLE; } return AVAILABLE; Loading @@ -101,4 +113,14 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen public void onSubscriptionsChanged() { updateState(mPreference); } /** * Trigger displaying preference when Mobilde data content changed. */ @VisibleForTesting public void refreshPreference() { if (mScreen != null) { super.displayPreference(mScreen); } } } tests/robotests/src/com/android/settings/network/DataDuringCallsPreferenceControllerTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.network; import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -131,4 +132,24 @@ public class DataDuringCallsPreferenceControllerTest { assertThat(mController.isAvailable()).isTrue(); assertThat(mSwitchPreference.isVisible()).isTrue(); } @Test public void getAvailabilityStatus_mobileDataChangWithDefaultDataSubId_returnUnavailable() { ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1); mController.refreshPreference(); assertThat(mController.getAvailabilityStatus(SUB_ID_1)) .isEqualTo(CONDITIONALLY_UNAVAILABLE); } @Test public void getAvailabilityStatus_mobileDataChangWithoutDefaultDataSubId_returnAvailable() { ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1); mController.displayPreference(mPreferenceScreen); mController.refreshPreference(); assertThat(mController.getAvailabilityStatus(SUB_ID_2)).isEqualTo(AVAILABLE); } } Loading
src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java +24 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; Loading @@ -30,6 +32,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.SubscriptionsChangeListener; public class DataDuringCallsPreferenceController extends TelephonyTogglePreferenceController Loading @@ -39,11 +43,16 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen private SwitchPreference mPreference; private SubscriptionsChangeListener mChangeListener; private TelephonyManager mManager; private MobileDataContentObserver mMobileDataContentObserver; private PreferenceScreen mScreen; public DataDuringCallsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mChangeListener = new SubscriptionsChangeListener(mContext, this); mMobileDataContentObserver = new MobileDataContentObserver( new Handler(Looper.getMainLooper())); mMobileDataContentObserver.setOnMobileDataChangedListener(()->refreshPreference()); } public void init(Lifecycle lifecycle, int subId) { Loading @@ -55,17 +64,20 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @OnLifecycleEvent(ON_RESUME) public void onResume() { mChangeListener.start(); mMobileDataContentObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_PAUSE) public void onPause() { mChangeListener.stop(); mMobileDataContentObserver.unRegister(mContext); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); mScreen = screen; } @Override Loading @@ -81,8 +93,8 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @Override public int getAvailabilityStatus(int subId) { if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID || SubscriptionManager.getDefaultDataSubscriptionId() == mSubId) { if (!SubscriptionManager.isValidSubscriptionId(subId) || SubscriptionManager.getDefaultDataSubscriptionId() == subId) { return CONDITIONALLY_UNAVAILABLE; } return AVAILABLE; Loading @@ -101,4 +113,14 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen public void onSubscriptionsChanged() { updateState(mPreference); } /** * Trigger displaying preference when Mobilde data content changed. */ @VisibleForTesting public void refreshPreference() { if (mScreen != null) { super.displayPreference(mScreen); } } }
tests/robotests/src/com/android/settings/network/DataDuringCallsPreferenceControllerTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.network; import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -131,4 +132,24 @@ public class DataDuringCallsPreferenceControllerTest { assertThat(mController.isAvailable()).isTrue(); assertThat(mSwitchPreference.isVisible()).isTrue(); } @Test public void getAvailabilityStatus_mobileDataChangWithDefaultDataSubId_returnUnavailable() { ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1); mController.refreshPreference(); assertThat(mController.getAvailabilityStatus(SUB_ID_1)) .isEqualTo(CONDITIONALLY_UNAVAILABLE); } @Test public void getAvailabilityStatus_mobileDataChangWithoutDefaultDataSubId_returnAvailable() { ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1); mController.displayPreference(mPreferenceScreen); mController.refreshPreference(); assertThat(mController.getAvailabilityStatus(SUB_ID_2)).isEqualTo(AVAILABLE); } }