Merge "[Provider Model] Implement the carrner network selection"
This commit is contained in:
@@ -165,16 +165,28 @@ public class ProviderModelSlice extends WifiSlice {
|
||||
if (subscriptionManager == null) {
|
||||
return;
|
||||
}
|
||||
final boolean newState = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
||||
mHelper.isMobileDataEnabled());
|
||||
final int defaultSubId = subscriptionManager.getDefaultDataSubscriptionId();
|
||||
log("defaultSubId:" + defaultSubId);
|
||||
if (!SubscriptionManager.isUsableSubscriptionId(defaultSubId)) {
|
||||
return; // No subscription - do nothing.
|
||||
}
|
||||
boolean requestConnectCarrier = !intent.hasExtra(EXTRA_TOGGLE_STATE);
|
||||
// Enable the mobile data always if the user requests to connect to the carrier network.
|
||||
boolean newState = requestConnectCarrier ? true
|
||||
: intent.getBooleanExtra(EXTRA_TOGGLE_STATE, mHelper.isMobileDataEnabled());
|
||||
|
||||
MobileNetworkUtils.setMobileDataEnabled(mContext, defaultSubId, newState,
|
||||
false /* disableOtherSubscriptions */);
|
||||
|
||||
final NetworkProviderWorker worker = getWorker();
|
||||
if (worker == null) {
|
||||
return;
|
||||
}
|
||||
if (requestConnectCarrier) {
|
||||
worker.connectCarrierNetwork();
|
||||
} else {
|
||||
worker.setCarrierNetworkEnabled(newState);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -131,14 +131,16 @@ public class ProviderModelSliceHelper {
|
||||
e.printStackTrace();
|
||||
}
|
||||
final IconCompat levelIcon = Utils.createIconWithDrawable(drawable);
|
||||
final PendingIntent toggleAction = mSliceable.getBroadcastIntent(mContext);
|
||||
final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
|
||||
final PendingIntent rowIntent = mSliceable.getBroadcastIntent(mContext);
|
||||
final SliceAction primaryAction = SliceAction.create(rowIntent,
|
||||
levelIcon, ListBuilder.ICON_IMAGE, title);
|
||||
final SliceAction toggleAction = SliceAction.createToggle(rowIntent,
|
||||
"mobile_toggle" /* actionTitle */, isMobileDataEnabled());
|
||||
final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
|
||||
.setTitle(title)
|
||||
.setTitleItem(levelIcon, ListBuilder.ICON_IMAGE)
|
||||
.addEndItem(toggleSliceAction)
|
||||
.setPrimaryAction(toggleSliceAction)
|
||||
.addEndItem(toggleAction)
|
||||
.setPrimaryAction(primaryAction)
|
||||
.setSubtitle(summary);
|
||||
return rowBuilder;
|
||||
}
|
||||
|
@@ -36,6 +36,7 @@ import androidx.lifecycle.LifecycleRegistry;
|
||||
|
||||
import com.android.settings.slices.SliceBackgroundWorker;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
import com.android.wifitrackerlib.MergedCarrierEntry;
|
||||
import com.android.wifitrackerlib.WifiEntry;
|
||||
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback;
|
||||
import com.android.wifitrackerlib.WifiPickerTracker;
|
||||
@@ -199,4 +200,18 @@ public class WifiScanWorker extends SliceBackgroundWorker<WifiSliceItem> impleme
|
||||
}
|
||||
super.updateResults(resultList);
|
||||
}
|
||||
|
||||
public void setCarrierNetworkEnabled(boolean enable) {
|
||||
final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
|
||||
if (mergedCarrierEntry != null) {
|
||||
mergedCarrierEntry.setEnabled(enable);
|
||||
}
|
||||
}
|
||||
|
||||
public void connectCarrierNetwork() {
|
||||
final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
|
||||
if (mergedCarrierEntry != null && mergedCarrierEntry.canConnect()) {
|
||||
mergedCarrierEntry.connect(null /* ConnectCallback */);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -20,11 +20,14 @@ import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
|
||||
import com.android.wifitrackerlib.MergedCarrierEntry;
|
||||
import com.android.wifitrackerlib.WifiEntry;
|
||||
import com.android.wifitrackerlib.WifiPickerTracker;
|
||||
|
||||
@@ -44,6 +47,8 @@ public class WifiScanWorkerTest {
|
||||
private WifiScanWorker mWifiScanWorker;
|
||||
@Mock
|
||||
WifiPickerTracker mWifiPickerTracker;
|
||||
@Mock
|
||||
MergedCarrierEntry mMergedCarrierEntry;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -51,6 +56,7 @@ public class WifiScanWorkerTest {
|
||||
|
||||
mWifiScanWorker = new WifiScanWorker(RuntimeEnvironment.application, WIFI_SLICE_URI);
|
||||
mWifiScanWorker.mWifiPickerTracker = mWifiPickerTracker;
|
||||
when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -102,4 +108,24 @@ public class WifiScanWorkerTest {
|
||||
|
||||
assertThat(mWifiScanWorker.getWifiEntry(key)).isEqualTo(reachableWifiEntry);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setCarrierNetworkEnabled_shouldCallMergedCarrierEntrySetEnabled() {
|
||||
mWifiScanWorker.setCarrierNetworkEnabled(true);
|
||||
|
||||
verify(mMergedCarrierEntry).setEnabled(true);
|
||||
|
||||
mWifiScanWorker.setCarrierNetworkEnabled(false);
|
||||
|
||||
verify(mMergedCarrierEntry).setEnabled(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void connectCarrierNetwork_shouldCallMergedCarrierEntryConnect() {
|
||||
when(mMergedCarrierEntry.canConnect()).thenReturn(true);
|
||||
|
||||
mWifiScanWorker.connectCarrierNetwork();
|
||||
|
||||
verify(mMergedCarrierEntry).connect(any());
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.network;
|
||||
|
||||
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@@ -113,13 +115,14 @@ public class ProviderModelSliceTest {
|
||||
|
||||
// Set-up specs for SliceMetadata.
|
||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||
mMockNetworkProviderWorker = new MockNetworkProviderWorker(mContext,
|
||||
PROVIDER_MODEL_SLICE_URI);
|
||||
mMockNetworkProviderWorker = spy(new MockNetworkProviderWorker(mContext,
|
||||
PROVIDER_MODEL_SLICE_URI));
|
||||
mMockProviderModelSlice = new MockProviderModelSlice(mContext, mMockNetworkProviderWorker);
|
||||
mListBuilder = spy(new ListBuilder(mContext, PROVIDER_MODEL_SLICE_URI,
|
||||
ListBuilder.INFINITY).setAccentColor(-1));
|
||||
when(mProviderModelSliceHelper.createListBuilder(PROVIDER_MODEL_SLICE_URI)).thenReturn(
|
||||
mListBuilder);
|
||||
when(mProviderModelSliceHelper.getSubscriptionManager()).thenReturn(mSubscriptionManager);
|
||||
|
||||
mWifiList = new ArrayList<>();
|
||||
mMockNetworkProviderWorker.updateSelfResults(mWifiList);
|
||||
@@ -330,4 +333,33 @@ public class ProviderModelSliceTest {
|
||||
return mNetworkProviderWorker;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNotifyChange_intentToggleActionOn_shouldSetCarrierNetworkEnabledTrue() {
|
||||
Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
|
||||
intent.putExtra(EXTRA_TOGGLE_STATE, true);
|
||||
|
||||
mMockProviderModelSlice.onNotifyChange(intent);
|
||||
|
||||
verify(mMockNetworkProviderWorker).setCarrierNetworkEnabled(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNotifyChange_intentToggleActionOff_shouldSetCarrierNetworkEnabledFalse() {
|
||||
Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
|
||||
intent.putExtra(EXTRA_TOGGLE_STATE, false);
|
||||
|
||||
mMockProviderModelSlice.onNotifyChange(intent);
|
||||
|
||||
verify(mMockNetworkProviderWorker).setCarrierNetworkEnabled(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNotifyChange_intentPrimaryAction_shouldConnectCarrierNetwork() {
|
||||
Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
|
||||
|
||||
mMockProviderModelSlice.onNotifyChange(intent);
|
||||
|
||||
verify(mMockNetworkProviderWorker).connectCarrierNetwork();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user