diff --git a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java index cad56e3b3ee..6f86ddd1832 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java @@ -26,7 +26,6 @@ import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Handler; import android.os.Looper; -import android.view.View; import android.widget.Switch; import androidx.annotation.VisibleForTesting; @@ -36,12 +35,13 @@ import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; +import com.android.settingslib.widget.OnMainSwitchChangeListener; /** * Controller for logic pertaining to switch Wi-Fi tethering. */ public class WifiTetherSwitchBarController implements - LifecycleObserver, OnStart, OnStop, DataSaverBackend.Listener, View.OnClickListener { + LifecycleObserver, OnStart, OnStop, DataSaverBackend.Listener, OnMainSwitchChangeListener { private static final IntentFilter WIFI_INTENT_FILTER; private final Context mContext; @@ -82,7 +82,7 @@ public class WifiTetherSwitchBarController implements @Override public void onStart() { mDataSaverBackend.addListener(this); - mSwitch.setOnClickListener(this); + mSwitchBar.addOnSwitchChangeListener(this); mContext.registerReceiver(mReceiver, WIFI_INTENT_FILTER, Context.RECEIVER_EXPORTED_UNAUDITED); } @@ -94,8 +94,8 @@ public class WifiTetherSwitchBarController implements } @Override - public void onClick(View v) { - if (((Switch) v).isChecked()) { + public void onSwitchChanged(Switch switchView, boolean isChecked) { + if (isChecked) { startTether(); } else { stopTether(); diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java index b0bd8bc86ab..a27743e2bd7 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java @@ -16,15 +16,14 @@ package com.android.settings.wifi.tether; +import static android.net.ConnectivityManager.TETHERING_WIFI; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -52,6 +51,8 @@ public class WifiTetherSwitchBarControllerTest { private ConnectivityManager mConnectivityManager; @Mock private NetworkPolicyManager mNetworkPolicyManager; + @Mock + private Switch mSwitch; private Context mContext; private SettingsMainSwitchBar mSwitchBar; @@ -99,23 +100,20 @@ public class WifiTetherSwitchBarControllerTest { } @Test - public void onSwitchToggled_switchOff_noStartTethering() { - final Switch mockSwitch = mock(Switch.class); - when(mockSwitch.isChecked()).thenReturn(false); + public void onSwitchChanged_isChecked_startTethering() { + when(mSwitch.isChecked()).thenReturn(true); - mController.onClick(mockSwitch); + mController.onSwitchChanged(mSwitch, mSwitch.isChecked()); - verify(mConnectivityManager, never()).startTethering(anyInt(), anyBoolean(), any(), any()); + verify(mConnectivityManager).startTethering(eq(TETHERING_WIFI), anyBoolean(), any(), any()); } @Test - public void onSwitchToggled_switchOn_startTethering() { - final Switch mockSwitch = mock(Switch.class); - when(mockSwitch.isChecked()).thenReturn(true); + public void onSwitchChanged_isNotChecked_stopTethering() { + when(mSwitch.isChecked()).thenReturn(false); - mController.onClick(mockSwitch); + mController.onSwitchChanged(mSwitch, mSwitch.isChecked()); - verify(mConnectivityManager, times(1)) - .startTethering(anyInt(), anyBoolean(), any(), any()); + verify(mConnectivityManager).stopTethering(TETHERING_WIFI); } }