Take default for background activity starts from DeviceConfig.
We've modified the implementation to use the value set by DeviceConfig if the user has not touched the developer options setting (change fb227077b8652b817a094d37a5215ad7466ee603). We want the Settings screen to reflect this default until the user explicitly sets it. Additionally if the user disables developer settings we want to go back to using whatever DeviceConfig sets. Bug: 129533810 Test: croot && make RunSettingsRoboTests \ ROBOTEST_FILTER=AllowBackgroundActivityStartsPreferenceControllerTest Change-Id: I73901a22da928f9a6924b30882b26494cdcd94bc
This commit is contained in:
@@ -16,17 +16,22 @@
|
||||
|
||||
package com.android.settings.development;
|
||||
|
||||
import static com.android.settings.development.AllowBackgroundActivityStartsPreferenceController.KEY_DEFAULT_BACKGROUND_ACTIVITY_STARTS_ENABLED;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -34,8 +39,10 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowDeviceConfig.class})
|
||||
public class AllowBackgroundActivityStartsPreferenceControllerTest {
|
||||
|
||||
@Mock
|
||||
@@ -60,20 +67,14 @@ public class AllowBackgroundActivityStartsPreferenceControllerTest {
|
||||
public void onPreferenceChange_settingEnabled_allowBackgroundActivityStartsShouldBeOn() {
|
||||
mController.onPreferenceChange(mPreference, true /* new value */);
|
||||
|
||||
final int mode = Settings.Global.getInt(mContext.getContentResolver(),
|
||||
Settings.Global.BACKGROUND_ACTIVITY_STARTS_ENABLED, 1 /* default */);
|
||||
|
||||
assertThat(mode).isEqualTo(1);
|
||||
assertThat(getModeFroMSettings()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPreferenceChange_settingDisabled_allowBackgroundActivityStartsShouldBeOff() {
|
||||
mController.onPreferenceChange(mPreference, false /* new value */);
|
||||
|
||||
final int mode = Settings.Global.getInt(mContext.getContentResolver(),
|
||||
Settings.Global.BACKGROUND_ACTIVITY_STARTS_ENABLED, 1 /* default */);
|
||||
|
||||
assertThat(mode).isEqualTo(0);
|
||||
assertThat(getModeFroMSettings()).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -83,7 +84,7 @@ public class AllowBackgroundActivityStartsPreferenceControllerTest {
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_settingEnabled_preferenceShouldBeChecked() {
|
||||
@@ -95,11 +96,64 @@ public class AllowBackgroundActivityStartsPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDeveloperOptionsSwitchDisabled_shouldDisablePreference() {
|
||||
public void updateState_settingReset_defaultDisabled_preferenceShouldNotBeChecked() {
|
||||
setDefault(false);
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setChecked(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_settingReset_defaultEnabled_preferenceShouldBeChecked() {
|
||||
setDefault(true);
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setChecked(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDeveloperOptionsSwitchDisabled_noDefault_shouldResetPreference() {
|
||||
mController.onDeveloperOptionsSwitchDisabled();
|
||||
|
||||
verify(mPreference).setChecked(true);
|
||||
verify(mPreference).setEnabled(false);
|
||||
|
||||
assertThat(getModeFroMSettings()).isEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDeveloperOptionsSwitchDisabled_defaultDisabled_shouldResetPreference() {
|
||||
setDefault(false);
|
||||
mController.onDeveloperOptionsSwitchDisabled();
|
||||
|
||||
verify(mPreference).setChecked(false);
|
||||
verify(mPreference).setEnabled(false);
|
||||
|
||||
assertThat(getModeFroMSettings()).isEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDeveloperOptionsSwitchDisabled_defaultEnabled_shouldResetPreference() {
|
||||
setDefault(true);
|
||||
mController.onDeveloperOptionsSwitchDisabled();
|
||||
|
||||
verify(mPreference).setChecked(true);
|
||||
verify(mPreference).setEnabled(false);
|
||||
|
||||
assertThat(getModeFroMSettings()).isEqualTo(-1);
|
||||
}
|
||||
|
||||
private int getModeFroMSettings() {
|
||||
return Settings.Global.getInt(mContext.getContentResolver(),
|
||||
Settings.Global.BACKGROUND_ACTIVITY_STARTS_ENABLED, 999 /* default */);
|
||||
}
|
||||
|
||||
private void setDefault(boolean defaultEnabled) {
|
||||
DeviceConfig.setProperty(
|
||||
DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
|
||||
KEY_DEFAULT_BACKGROUND_ACTIVITY_STARTS_ENABLED,
|
||||
Boolean.toString(defaultEnabled),
|
||||
false /* makeDefault */);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user