Merge "Correct behavior of "Mobile data" button on opportunistic subscriptions."
This commit is contained in:
committed by
Android (Google) Code Review
commit
e67344a5c5
@@ -22,21 +22,21 @@ import android.net.Uri;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
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.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.preference.SwitchPreference;
|
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"
|
* Preference controller for "Mobile data"
|
||||||
*/
|
*/
|
||||||
@@ -115,8 +115,18 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChecked() {
|
public boolean isChecked() {
|
||||||
return mTelephonyManager.isDataEnabled()
|
return mTelephonyManager.isDataEnabled();
|
||||||
&& mSubId == SubscriptionManager.getDefaultDataSubscriptionId();
|
}
|
||||||
|
|
||||||
|
@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) {
|
public static Uri getObservableUri(int subId) {
|
||||||
|
@@ -149,4 +149,23 @@ public class MobileDataPreferenceControllerTest {
|
|||||||
|
|
||||||
verify(mTelephonyManager).setDataEnabled(true);
|
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