Not call MainSwitchBar.getSwitch()

This is private implement details, will be removed in future.

Should call MainSwitchBar's isChecked() and setChecked() to ensure
main switch bar's style is set correctly.

Bug: 306658427
Test: manual - on wifi tether
Test: manual - on developer options
Test: m RunSettingsRoboTests
Change-Id: I292ffbcf73da0721fc206e3dac7610a0aeb20047
This commit is contained in:
Chaohui Wang
2023-10-25 13:45:09 +08:00
parent e752f7214b
commit 12ea5afdf1
5 changed files with 22 additions and 35 deletions

View File

@@ -33,13 +33,11 @@ public class AudioSharingSwitchBarController
private final Context mContext;
private final SettingsMainSwitchBar mSwitchBar;
private final Switch mSwitch;
AudioSharingSwitchBarController(Context context, SettingsMainSwitchBar switchBar) {
mContext = context;
mSwitchBar = switchBar;
mSwitch = mSwitchBar.getSwitch();
mSwitch.setChecked(false);
mSwitchBar.setChecked(false);
}
@Override

View File

@@ -334,9 +334,6 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (switchView != mSwitchBar.getSwitch()) {
return;
}
final boolean developmentEnabledState =
DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(getContext());
if (isChecked != developmentEnabledState) {

View File

@@ -54,7 +54,6 @@ public class WifiTetherSwitchBarController implements
private final Context mContext;
private final SettingsMainSwitchBar mSwitchBar;
private final Switch mSwitch;
private final ConnectivityManager mConnectivityManager;
private final WifiManager mWifiManager;
@@ -78,7 +77,6 @@ public class WifiTetherSwitchBarController implements
WifiTetherSwitchBarController(Context context, SettingsMainSwitchBar switchBar) {
mContext = context;
mSwitchBar = switchBar;
mSwitch = mSwitchBar.getSwitch();
mDataSaverBackend = new DataSaverBackend(context);
mConnectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -153,8 +151,8 @@ public class WifiTetherSwitchBarController implements
if (state == WIFI_AP_STATE_ENABLING || state == WIFI_AP_STATE_DISABLING) return;
final boolean shouldBeChecked = (state == WIFI_AP_STATE_ENABLED);
if (mSwitch.isChecked() != shouldBeChecked) {
mSwitch.setChecked(shouldBeChecked);
if (mSwitchBar.isChecked() != shouldBeChecked) {
mSwitchBar.setChecked(shouldBeChecked);
}
updateWifiSwitch();
}

View File

@@ -27,7 +27,6 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.widget.Switch;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
@@ -65,7 +64,6 @@ import java.util.List;
})
public class DevelopmentSettingsDashboardFragmentTest {
private Switch mSwitch;
private Context mContext;
private ShadowUserManager mShadowUserManager;
private DevelopmentSettingsDashboardFragment mDashboard;
@@ -75,7 +73,6 @@ public class DevelopmentSettingsDashboardFragmentTest {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
SettingsMainSwitchBar switchBar = new SettingsMainSwitchBar(mContext);
mSwitch = switchBar.getSwitch();
mDashboard = spy(new DevelopmentSettingsDashboardFragment());
ReflectionHelpers.setField(mDashboard, "mSwitchBar", switchBar);
mShadowUserManager = Shadow.extract(mContext.getSystemService(Context.USER_SERVICE));
@@ -163,7 +160,7 @@ public class DevelopmentSettingsDashboardFragmentTest {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
mDashboard.onSwitchChanged(mSwitch, false /* isChecked */);
mDashboard.onSwitchChanged(null, false /* isChecked */);
assertThat(ShadowEnableDevelopmentSettingWarningDialog.mShown).isFalse();
}
@@ -175,7 +172,7 @@ public class DevelopmentSettingsDashboardFragmentTest {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
mDashboard.onSwitchChanged(mSwitch, true /* isChecked */);
mDashboard.onSwitchChanged(null, true /* isChecked */);
assertThat(ShadowEnableDevelopmentSettingWarningDialog.mShown).isTrue();
}
@@ -187,7 +184,7 @@ public class DevelopmentSettingsDashboardFragmentTest {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
mDashboard.onSwitchChanged(mSwitch, false /* isChecked */);
mDashboard.onSwitchChanged(null, false /* isChecked */);
assertThat(ShadowEnableDevelopmentSettingWarningDialog.mShown).isFalse();
assertThat(DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)).isFalse();
@@ -206,7 +203,7 @@ public class DevelopmentSettingsDashboardFragmentTest {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
mDashboard.onSwitchChanged(mSwitch, false /* isChecked */);
mDashboard.onSwitchChanged(null, false /* isChecked */);
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog).isNotNull();

View File

@@ -19,45 +19,42 @@ package com.android.settings.widget;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settingslib.RestrictedLockUtils;
import androidx.test.core.app.ApplicationProvider;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.widget.mainswitch.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class SettingsMainSwitchBarTest {
private SettingsMainSwitchBar mMainSwitchBar;
private final Context mContext = ApplicationProvider.getApplicationContext();
private final SettingsMainSwitchBar mMainSwitchBar = new SettingsMainSwitchBar(mContext);
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
final Context context = RuntimeEnvironment.application;
mMainSwitchBar = new SettingsMainSwitchBar(context);
}
private final TextView mTitle = mMainSwitchBar.findViewById(R.id.switch_text);
private final CompoundButton mSwitchWidget =
mMainSwitchBar.findViewById(android.R.id.switch_widget);
@Test
public void disabledByAdmin_shouldBeDisabled() {
mMainSwitchBar.setDisabledByAdmin(new RestrictedLockUtils.EnforcedAdmin());
TextView title = (TextView) mMainSwitchBar.findViewById(R.id.switch_text);
assertThat(title.isEnabled()).isFalse();
assertThat(mMainSwitchBar.getSwitch().isEnabled()).isFalse();
assertThat(mTitle.isEnabled()).isFalse();
assertThat(mSwitchWidget.isEnabled()).isFalse();
}
@Test
public void disabledByAdmin_setNull_shouldBeEnabled() {
mMainSwitchBar.setDisabledByAdmin(null);
TextView title = (TextView) mMainSwitchBar.findViewById(R.id.switch_text);
assertThat(title.isEnabled()).isTrue();
assertThat(mMainSwitchBar.getSwitch().isEnabled()).isTrue();
assertThat(mTitle.isEnabled()).isTrue();
assertThat(mSwitchWidget.isEnabled()).isTrue();
}
}