[Provider Model] Add WiFi toggle in internet panel

- Move Wi-Fi toggle from menu button to slice row

- Remove Wi-Fi disconnect action

- Show scanning sub-title once only

Bug: 189912933
Test: manual test
atest -c InternetConnectivityPanelTest \
         ProviderModelSliceTest

Change-Id: I2baf05362f5cd0a8ce94c7b3b2b112a7e9fe6894
This commit is contained in:
Weng Su
2021-06-08 04:43:24 +08:00
parent 9f7564c1b6
commit 04a4060225
5 changed files with 191 additions and 207 deletions

View File

@@ -18,12 +18,9 @@ package com.android.settings.panel;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -32,9 +29,7 @@ import android.content.Context;
import android.net.Uri;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Handler;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -82,8 +77,6 @@ public class InternetConnectivityPanelTest {
@Rule
public final MockitoRule mMocks = MockitoJUnit.rule();
@Mock
Handler mMainThreadHandler;
@Mock
PanelContentCallback mPanelContentCallback;
@Mock
InternetUpdater mInternetUpdater;
@@ -91,17 +84,34 @@ public class InternetConnectivityPanelTest {
private WifiManager mWifiManager;
@Mock
private ProviderModelSliceHelper mProviderModelSliceHelper;
@Mock
private FragmentActivity mPanelActivity;
private Context mContext;
private FakeHandlerInjector mFakeHandlerInjector;
private InternetConnectivityPanel mPanel;
private class FakeHandlerInjector extends InternetConnectivityPanel.HandlerInjector {
private Runnable mRunnable;
FakeHandlerInjector(Context context) {
super(context);
}
@Override
public void postDelay(Runnable runnable) {
mRunnable = runnable;
}
public Runnable getRunnable() {
return mRunnable;
}
}
@Before
public void setUp() {
mContext = spy(ApplicationProvider.getApplicationContext());
mFakeHandlerInjector = new FakeHandlerInjector(mContext);
when(mContext.getApplicationContext()).thenReturn(mContext);
when(mContext.getMainThreadHandler()).thenReturn(mMainThreadHandler);
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
mPanel = InternetConnectivityPanel.create(mContext);
@@ -109,6 +119,7 @@ public class InternetConnectivityPanelTest {
mPanel.mIsProviderModelEnabled = true;
mPanel.mInternetUpdater = mInternetUpdater;
mPanel.mProviderModelSliceHelper = mProviderModelSliceHelper;
mPanel.mHandlerInjector = mFakeHandlerInjector;
}
@Test
@@ -203,20 +214,6 @@ public class InternetConnectivityPanelTest {
assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
}
@Test
public void getCustomizedButtonTitle_wifiOff_turnOnWifi() {
doReturn(false).when(mInternetUpdater).isWifiEnabled();
assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_TURN_ON_WIFI);
}
@Test
public void getCustomizedButtonTitle_wifiOn_turnOffWifi() {
doReturn(true).when(mInternetUpdater).isWifiEnabled();
assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_TURN_OFF_WIFI);
}
@Test
public void getSlices_providerModelDisabled_containsNecessarySlices() {
mPanel.mIsProviderModelEnabled = false;
@@ -240,31 +237,6 @@ public class InternetConnectivityPanelTest {
assertThat(mPanel.getSeeMoreIntent()).isNull();
}
@Test
public void onClickCustomizedButton_wifiOn_setWifiOff() {
doReturn(true).when(mInternetUpdater).isWifiEnabled();
mPanel.onClickCustomizedButton(mPanelActivity);
verify(mWifiManager).setWifiEnabled(false);
}
@Test
public void onClickCustomizedButton_wifiOff_setWifiOn() {
doReturn(false).when(mInternetUpdater).isWifiEnabled();
mPanel.onClickCustomizedButton(mPanelActivity);
verify(mWifiManager).setWifiEnabled(true);
}
@Test
public void onClickCustomizedButton_shouldNotFinishActivity() {
mPanel.onClickCustomizedButton(mPanelActivity);
verify(mPanelActivity, never()).finish();
}
@Test
public void updatePanelTitle_onHeaderChanged() {
clearInvocations(mPanelContentCallback);
@@ -295,36 +267,41 @@ public class InternetConnectivityPanelTest {
}
@Test
public void showProgressBar_wifiDisabled_hideProgress() {
public void updateProgressBar_wifiDisabled_hideProgress() {
mPanel.mIsProgressBarVisible = true;
doReturn(false).when(mInternetUpdater).isWifiEnabled();
clearInvocations(mPanelContentCallback);
mPanel.showProgressBar();
mPanel.updateProgressBar();
assertThat(mPanel.isProgressBarVisible()).isFalse();
verify(mPanelContentCallback).onProgressBarVisibleChanged();
}
@Test
public void showProgressBar_noWifiScanResults_showProgressForever() {
public void updateProgressBar_noWifiScanResults_showProgressForever() {
mPanel.mIsScanningSubTitleShownOnce = false;
mPanel.mIsProgressBarVisible = false;
doReturn(true).when(mInternetUpdater).isWifiEnabled();
List<ScanResult> noWifiScanResults = new ArrayList<>();
doReturn(noWifiScanResults).when(mWifiManager).getScanResults();
clearInvocations(mPanelContentCallback);
mPanel.showProgressBar();
mPanel.updateProgressBar();
assertThat(mPanel.isProgressBarVisible()).isTrue();
assertThat(mPanel.mIsProgressBarVisible).isTrue();
verify(mPanelContentCallback).onProgressBarVisibleChanged();
verify(mPanelContentCallback).onHeaderChanged();
verify(mMainThreadHandler, never())
.postDelayed(any() /* mHideProgressBarRunnable */, anyLong());
assertThat(mFakeHandlerInjector.getRunnable())
.isEqualTo(mPanel.mHideScanningSubTitleRunnable);
mFakeHandlerInjector.getRunnable().run();
assertThat(mPanel.mIsScanningSubTitleShownOnce).isTrue();
assertThat(mPanel.mIsProgressBarVisible).isTrue();
}
@Test
public void showProgressBar_hasWifiScanResults_showProgressDelayedHide() {
public void updateProgressBar_hasWifiScanResults_showProgressDelayedHide() {
mPanel.mIsProgressBarVisible = false;
doReturn(true).when(mInternetUpdater).isWifiEnabled();
List<ScanResult> hasWifiScanResults = mock(ArrayList.class);
@@ -332,11 +309,15 @@ public class InternetConnectivityPanelTest {
doReturn(hasWifiScanResults).when(mWifiManager).getScanResults();
clearInvocations(mPanelContentCallback);
mPanel.showProgressBar();
mPanel.updateProgressBar();
assertThat(mPanel.isProgressBarVisible()).isTrue();
verify(mPanelContentCallback).onProgressBarVisibleChanged();
verify(mMainThreadHandler).postDelayed(any() /* mHideProgressBarRunnable */, anyLong());
assertThat(mFakeHandlerInjector.getRunnable())
.isEqualTo(mPanel.mHideProgressBarRunnable);
mFakeHandlerInjector.getRunnable().run();
assertThat(mPanel.mIsProgressBarVisible).isFalse();
}
@Test