Loading src/com/android/settings/network/ProviderModelSlice.java +14 −2 Original line number Diff line number Diff line Loading @@ -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 Loading src/com/android/settings/network/ProviderModelSliceHelper.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; } Loading src/com/android/settings/wifi/slice/WifiScanWorker.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */); } } } tests/robotests/src/com/android/settings/wifi/slice/WifiScanWorkerTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -44,6 +47,8 @@ public class WifiScanWorkerTest { private WifiScanWorker mWifiScanWorker; @Mock WifiPickerTracker mWifiPickerTracker; @Mock MergedCarrierEntry mMergedCarrierEntry; @Before public void setUp() { Loading @@ -51,6 +56,7 @@ public class WifiScanWorkerTest { mWifiScanWorker = new WifiScanWorker(RuntimeEnvironment.application, WIFI_SLICE_URI); mWifiScanWorker.mWifiPickerTracker = mWifiPickerTracker; when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); } @Test Loading Loading @@ -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()); } } tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +34 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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(); } } Loading
src/com/android/settings/network/ProviderModelSlice.java +14 −2 Original line number Diff line number Diff line Loading @@ -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 Loading
src/com/android/settings/network/ProviderModelSliceHelper.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; } Loading
src/com/android/settings/wifi/slice/WifiScanWorker.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */); } } }
tests/robotests/src/com/android/settings/wifi/slice/WifiScanWorkerTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -44,6 +47,8 @@ public class WifiScanWorkerTest { private WifiScanWorker mWifiScanWorker; @Mock WifiPickerTracker mWifiPickerTracker; @Mock MergedCarrierEntry mMergedCarrierEntry; @Before public void setUp() { Loading @@ -51,6 +56,7 @@ public class WifiScanWorkerTest { mWifiScanWorker = new WifiScanWorker(RuntimeEnvironment.application, WIFI_SLICE_URI); mWifiScanWorker.mWifiPickerTracker = mWifiPickerTracker; when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); } @Test Loading Loading @@ -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()); } }
tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +34 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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(); } }