Correct behavior of "Mobile data" button on opportunistic subscriptions.
A check was added earlier to make sure in DSDS mode only one sub shows data on, which is not true for opportunistic subscriptions. For them, it should always be on (enforced by Telephony) and be disabled as it shouldn't be turned off. Bug: 124331860 Bug: 124683219 Test: manual, robolectric Change-Id: I53c8d881ff71ad25c418085d3eee63e55c786b8f
This commit is contained in:
committed by
Xiangyu/Malcolm Chen
parent
88d6b2f9ad
commit
5506e0c732
@@ -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"
|
||||
*/
|
||||
@@ -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) {
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user