Make WifiTether listen to datasaver

Wifi Tethering is already turned off when appropriate. However
if you re-enable it you still can't toggle the tether switchbar.
This CL makes it so that if you disable data saver the toggle
becomes enabled again.

Test: robotests
Bug: 77860936
Change-Id: I03fa74c21674678a90cde7bd20fa68167f02ae3c
This commit is contained in:
Salvador Martinez
2018-04-17 17:32:16 -07:00
committed by Andrew Sapperstein
parent 8a3bcaa3e3
commit 7ba65c39ae
2 changed files with 37 additions and 2 deletions

View File

@@ -36,15 +36,17 @@ import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
public class WifiTetherSwitchBarController implements SwitchWidgetController.OnSwitchChangeListener, public class WifiTetherSwitchBarController implements SwitchWidgetController.OnSwitchChangeListener,
LifecycleObserver, OnStart, OnStop { LifecycleObserver, OnStart, OnStop, DataSaverBackend.Listener {
private static final IntentFilter WIFI_INTENT_FILTER; private static final IntentFilter WIFI_INTENT_FILTER;
private final Context mContext; private final Context mContext;
private final SwitchWidgetController mSwitchBar; private final SwitchWidgetController mSwitchBar;
private final ConnectivityManager mConnectivityManager; private final ConnectivityManager mConnectivityManager;
private final DataSaverBackend mDataSaverBackend;
private final WifiManager mWifiManager; private final WifiManager mWifiManager;
@VisibleForTesting
final DataSaverBackend mDataSaverBackend;
@VisibleForTesting @VisibleForTesting
final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback = final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
new ConnectivityManager.OnStartTetheringCallback() { new ConnectivityManager.OnStartTetheringCallback() {
@@ -75,12 +77,14 @@ public class WifiTetherSwitchBarController implements SwitchWidgetController.OnS
@Override @Override
public void onStart() { public void onStart() {
mDataSaverBackend.addListener(this);
mSwitchBar.startListening(); mSwitchBar.startListening();
mContext.registerReceiver(mReceiver, WIFI_INTENT_FILTER); mContext.registerReceiver(mReceiver, WIFI_INTENT_FILTER);
} }
@Override @Override
public void onStop() { public void onStop() {
mDataSaverBackend.remListener(this);
mSwitchBar.stopListening(); mSwitchBar.stopListening();
mContext.unregisterReceiver(mReceiver); mContext.unregisterReceiver(mReceiver);
} }
@@ -157,4 +161,19 @@ public class WifiTetherSwitchBarController implements SwitchWidgetController.OnS
mSwitchBar.setEnabled(false); mSwitchBar.setEnabled(false);
} }
} }
@Override
public void onDataSaverChanged(boolean isDataSaving) {
updateWifiSwitch();
}
@Override
public void onWhitelistStatusChanged(int uid, boolean isWhitelisted) {
// we don't care, since we just want to read the value
}
@Override
public void onBlacklistStatusChanged(int uid, boolean isBlacklisted) {
// we don't care, since we just want to read the value
}
} }

View File

@@ -88,4 +88,20 @@ public class WifiTetherSwitchBarControllerTest {
assertThat(mSwitchBar.isChecked()).isFalse(); assertThat(mSwitchBar.isChecked()).isFalse();
assertThat(mSwitchBar.isEnabled()).isTrue(); assertThat(mSwitchBar.isEnabled()).isTrue();
} }
@Test
public void testOnDataSaverChanged_setsEnabledCorrectly() {
assertThat(mSwitchBar.isEnabled()).isTrue();
// try to turn data saver on
when(mNetworkPolicyManager.getRestrictBackground()).thenReturn(true);
mController.onDataSaverChanged(true);
assertThat(mSwitchBar.isEnabled()).isFalse();
// lets turn data saver off again
when(mNetworkPolicyManager.getRestrictBackground()).thenReturn(false);
mController.onDataSaverChanged(false);
assertThat(mSwitchBar.isEnabled()).isTrue();
}
} }