Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ba65c39 authored by Salvador Martinez's avatar Salvador Martinez Committed by Andrew Sapperstein
Browse files

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
parent 8a3bcaa3
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -36,15 +36,17 @@ import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;

public class WifiTetherSwitchBarController implements SwitchWidgetController.OnSwitchChangeListener,
        LifecycleObserver, OnStart, OnStop {
        LifecycleObserver, OnStart, OnStop, DataSaverBackend.Listener {

    private static final IntentFilter WIFI_INTENT_FILTER;

    private final Context mContext;
    private final SwitchWidgetController mSwitchBar;
    private final ConnectivityManager mConnectivityManager;
    private final DataSaverBackend mDataSaverBackend;
    private final WifiManager mWifiManager;

    @VisibleForTesting
    final DataSaverBackend mDataSaverBackend;
    @VisibleForTesting
    final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
            new ConnectivityManager.OnStartTetheringCallback() {
@@ -75,12 +77,14 @@ public class WifiTetherSwitchBarController implements SwitchWidgetController.OnS

    @Override
    public void onStart() {
        mDataSaverBackend.addListener(this);
        mSwitchBar.startListening();
        mContext.registerReceiver(mReceiver, WIFI_INTENT_FILTER);
    }

    @Override
    public void onStop() {
        mDataSaverBackend.remListener(this);
        mSwitchBar.stopListening();
        mContext.unregisterReceiver(mReceiver);
    }
@@ -157,4 +161,19 @@ public class WifiTetherSwitchBarController implements SwitchWidgetController.OnS
            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
    }
}
+16 −0
Original line number Diff line number Diff line
@@ -88,4 +88,20 @@ public class WifiTetherSwitchBarControllerTest {
        assertThat(mSwitchBar.isChecked()).isFalse();
        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();

    }
}