Merge "Correct behavior of "Mobile data" button on opportunistic subscriptions."

This commit is contained in:
Xiangyu/Malcolm Chen
2019-02-19 21:04:01 +00:00
committed by Android (Google) Code Review
2 changed files with 36 additions and 7 deletions

View File

@@ -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) {

View File

@@ -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();
}
} }