Loading src/com/android/settings/network/telephony/MobileDataPreferenceController.java +17 −7 Original line number Diff line number Diff line Loading @@ -22,21 +22,21 @@ import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; /** * Preference controller for "Mobile data" */ Loading Loading @@ -115,8 +115,18 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @Override public boolean isChecked() { return mTelephonyManager.isDataEnabled() && mSubId == SubscriptionManager.getDefaultDataSubscriptionId(); return mTelephonyManager.isDataEnabled(); } @Override public void updateState(Preference preference) { super.updateState(preference); preference.setEnabled(!isOpportunistic()); } private boolean isOpportunistic() { SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(mSubId); return info != null && info.isOpportunistic(); } public static Uri getObservableUri(int subId) { Loading tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -149,4 +149,23 @@ public class MobileDataPreferenceControllerTest { verify(mTelephonyManager).setDataEnabled(true); } @Test public void isChecked_returnUserDataEnabled() { mController.init(mFragmentManager, SUB_ID); assertThat(mController.isChecked()).isFalse(); doReturn(true).when(mTelephonyManager).isDataEnabled(); assertThat(mController.isChecked()).isTrue(); } @Test public void updateState_opportunistic_disabled() { doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID); mController.init(mFragmentManager, SUB_ID); doReturn(true).when(mSubscriptionInfo).isOpportunistic(); mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); } } Loading
src/com/android/settings/network/telephony/MobileDataPreferenceController.java +17 −7 Original line number Diff line number Diff line Loading @@ -22,21 +22,21 @@ import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; /** * Preference controller for "Mobile data" */ Loading Loading @@ -115,8 +115,18 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @Override public boolean isChecked() { return mTelephonyManager.isDataEnabled() && mSubId == SubscriptionManager.getDefaultDataSubscriptionId(); return mTelephonyManager.isDataEnabled(); } @Override public void updateState(Preference preference) { super.updateState(preference); preference.setEnabled(!isOpportunistic()); } private boolean isOpportunistic() { SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(mSubId); return info != null && info.isOpportunistic(); } public static Uri getObservableUri(int subId) { Loading
tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -149,4 +149,23 @@ public class MobileDataPreferenceControllerTest { verify(mTelephonyManager).setDataEnabled(true); } @Test public void isChecked_returnUserDataEnabled() { mController.init(mFragmentManager, SUB_ID); assertThat(mController.isChecked()).isFalse(); doReturn(true).when(mTelephonyManager).isDataEnabled(); assertThat(mController.isChecked()).isTrue(); } @Test public void updateState_opportunistic_disabled() { doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID); mController.init(mFragmentManager, SUB_ID); doReturn(true).when(mSubscriptionInfo).isOpportunistic(); mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); } }