[Provider Model] Implement the carrner network selection settings

- Add WifiPickerTrackerHelper to reuse the library

- User taps on carrier network preference
  - Calls MergedCarrierEntry#connect()

- User toggles mobile data On/Off
  - Calls MergedCarrierEntry#setEnabled(true/false)

Bug: 175761096
Test:
- Manual Test
- atest NetworkMobileProviderControllerTest \
        SubscriptionsPreferenceControllerTest \
        WifiPickerTrackerHelperTest

Change-Id: Ia311b10ca7a44a536556c1889ee65743af379822
This commit is contained in:
Weng Su
2021-01-04 21:54:13 +00:00
parent 88d1033150
commit 5e76c02d82
9 changed files with 332 additions and 46 deletions

View File

@@ -50,6 +50,7 @@ import com.android.settings.network.telephony.MobileNetworkActivity;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.network.telephony.SignalStrengthListener;
import com.android.settings.widget.GearPreference;
import com.android.settings.wifi.WifiPickerTrackerHelper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.net.SignalStrengthUtil;
@@ -84,6 +85,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
private MobileDataEnabledListener mDataEnabledListener;
private DataConnectivityListener mConnectivityListener;
private SignalStrengthListener mSignalStrengthListener;
private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
@VisibleForTesting
final BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() {
@@ -215,7 +217,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
mPreferenceGroup.removeAll();
mSubsGearPref = new GearPreference(mContext, null);
mSubsGearPref.setOnPreferenceClickListener(preference -> {
//TODO(b/176141379) Wait for wifiManager#selectCarrier(int subscriptionId)
connectCarrierNetwork();
return true;
});
mSubsGearPref.setOnGearClickListener(p ->
@@ -466,6 +468,20 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
ProxySubscriptionManager.getInstance(context), subId) != null);
}
public void setWifiPickerTrackerHelper(WifiPickerTrackerHelper helper) {
mWifiPickerTrackerHelper = helper;
}
@VisibleForTesting
public void connectCarrierNetwork() {
if (mTelephonyManager == null || !mTelephonyManager.isDataEnabled()) {
return;
}
if (mWifiPickerTrackerHelper != null) {
mWifiPickerTrackerHelper.connectCarrierNetwork(null /* ConnectCallback */);
}
}
SubsPrefCtrlInjector createSubsPrefCtrlInjector() {
return new SubsPrefCtrlInjector();
}