Merge "Shutdown secondary SAP automatically" into udc-d1-dev am: 57522f0fcc
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23680143 Change-Id: I2b65e858794346e3231bb7fdb0a013a2d4934677 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -20,19 +20,29 @@ import android.content.Context;
|
|||||||
import android.net.wifi.SoftApConfiguration;
|
import android.net.wifi.SoftApConfiguration;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.SwitchPreference;
|
import androidx.preference.SwitchPreference;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settings.wifi.repository.WifiHotspotRepository;
|
||||||
|
|
||||||
public class WifiTetherAutoOffPreferenceController extends BasePreferenceController implements
|
public class WifiTetherAutoOffPreferenceController extends BasePreferenceController implements
|
||||||
Preference.OnPreferenceChangeListener {
|
Preference.OnPreferenceChangeListener {
|
||||||
|
|
||||||
private final WifiManager mWifiManager;
|
private final WifiManager mWifiManager;
|
||||||
private boolean mSettingsOn;
|
private boolean mSettingsOn;
|
||||||
|
@VisibleForTesting
|
||||||
|
boolean mNeedShutdownSecondarySap;
|
||||||
|
|
||||||
public WifiTetherAutoOffPreferenceController(Context context, String preferenceKey) {
|
public WifiTetherAutoOffPreferenceController(Context context, String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
|
WifiHotspotRepository wifiHotspotRepository = FeatureFactory.getFactory(context)
|
||||||
|
.getWifiFeatureProvider().getWifiHotspotRepository();
|
||||||
|
if (wifiHotspotRepository.isSpeedFeatureAvailable() && wifiHotspotRepository.isDualBand()) {
|
||||||
|
mNeedShutdownSecondarySap = true;
|
||||||
|
}
|
||||||
mWifiManager = context.getSystemService(WifiManager.class);
|
mWifiManager = context.getSystemService(WifiManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,14 +61,15 @@ public class WifiTetherAutoOffPreferenceController extends BasePreferenceControl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
final boolean settingsOn = (Boolean) newValue;
|
boolean settingsOn = (Boolean) newValue;
|
||||||
SoftApConfiguration softApConfiguration = mWifiManager.getSoftApConfiguration();
|
SoftApConfiguration.Builder configBuilder =
|
||||||
SoftApConfiguration newSoftApConfiguration =
|
new SoftApConfiguration.Builder(mWifiManager.getSoftApConfiguration());
|
||||||
new SoftApConfiguration.Builder(softApConfiguration)
|
configBuilder.setAutoShutdownEnabled(settingsOn);
|
||||||
.setAutoShutdownEnabled(settingsOn)
|
if (mNeedShutdownSecondarySap) {
|
||||||
.build();
|
configBuilder.setBridgedModeOpportunisticShutdownEnabled(settingsOn);
|
||||||
|
}
|
||||||
mSettingsOn = settingsOn;
|
mSettingsOn = settingsOn;
|
||||||
return mWifiManager.setSoftApConfiguration(newSoftApConfiguration);
|
return mWifiManager.setSoftApConfiguration(configBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.wifi.tether;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -28,6 +29,10 @@ import android.net.wifi.WifiManager;
|
|||||||
|
|
||||||
import androidx.preference.SwitchPreference;
|
import androidx.preference.SwitchPreference;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
import com.android.settings.wifi.factory.WifiFeatureProvider;
|
||||||
|
import com.android.settings.wifi.repository.WifiHotspotRepository;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -54,6 +59,8 @@ public class WifiTetherAutoOffPreferenceControllerTest {
|
|||||||
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
|
|
||||||
|
WifiFeatureProvider provider = FakeFeatureFactory.setupForTest().getWifiFeatureProvider();
|
||||||
|
when(provider.getWifiHotspotRepository()).thenReturn(mock(WifiHotspotRepository.class));
|
||||||
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
||||||
mSoftApConfiguration = new SoftApConfiguration.Builder().build();
|
mSoftApConfiguration = new SoftApConfiguration.Builder().build();
|
||||||
when(mWifiManager.getSoftApConfiguration()).thenReturn(mSoftApConfiguration);
|
when(mWifiManager.getSoftApConfiguration()).thenReturn(mSoftApConfiguration);
|
||||||
@@ -101,6 +108,32 @@ public class WifiTetherAutoOffPreferenceControllerTest {
|
|||||||
assertThat(mSwitchPreference.isChecked()).isTrue();
|
assertThat(mSwitchPreference.isChecked()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPreferenceChange_needShutdownSecondarySap_setSecondarySap() {
|
||||||
|
mController.mNeedShutdownSecondarySap = true;
|
||||||
|
setConfigShutdownSecondarySap(false);
|
||||||
|
|
||||||
|
mController.onPreferenceChange(mSwitchPreference, true);
|
||||||
|
|
||||||
|
ArgumentCaptor<SoftApConfiguration> config =
|
||||||
|
ArgumentCaptor.forClass(SoftApConfiguration.class);
|
||||||
|
verify(mWifiManager).setSoftApConfiguration(config.capture());
|
||||||
|
assertThat(config.getValue().isBridgedModeOpportunisticShutdownEnabled()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPreferenceChange_noNeedShutdownSecondarySap_doNotSetSecondarySap() {
|
||||||
|
mController.mNeedShutdownSecondarySap = false;
|
||||||
|
setConfigShutdownSecondarySap(false);
|
||||||
|
|
||||||
|
mController.onPreferenceChange(mSwitchPreference, true);
|
||||||
|
|
||||||
|
ArgumentCaptor<SoftApConfiguration> config =
|
||||||
|
ArgumentCaptor.forClass(SoftApConfiguration.class);
|
||||||
|
verify(mWifiManager).setSoftApConfiguration(config.capture());
|
||||||
|
assertThat(config.getValue().isBridgedModeOpportunisticShutdownEnabled()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
private boolean getAutoOffSetting() {
|
private boolean getAutoOffSetting() {
|
||||||
ArgumentCaptor<SoftApConfiguration> softApConfigCaptor =
|
ArgumentCaptor<SoftApConfiguration> softApConfigCaptor =
|
||||||
ArgumentCaptor.forClass(SoftApConfiguration.class);
|
ArgumentCaptor.forClass(SoftApConfiguration.class);
|
||||||
@@ -115,4 +148,12 @@ public class WifiTetherAutoOffPreferenceControllerTest {
|
|||||||
.build();
|
.build();
|
||||||
when(mWifiManager.getSoftApConfiguration()).thenReturn(mSoftApConfiguration);
|
when(mWifiManager.getSoftApConfiguration()).thenReturn(mSoftApConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setConfigShutdownSecondarySap(boolean enabled) {
|
||||||
|
mSoftApConfiguration =
|
||||||
|
new SoftApConfiguration.Builder(mSoftApConfiguration)
|
||||||
|
.setBridgedModeOpportunisticShutdownEnabled(enabled)
|
||||||
|
.build();
|
||||||
|
when(mWifiManager.getSoftApConfiguration()).thenReturn(mSoftApConfiguration);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user