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:
committed by
Andrew Sapperstein
parent
8a3bcaa3e3
commit
7ba65c39ae
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user