Disable Fold lock behavior setting by default
Flag protect Fold lock behavior setting behind a sysprop flag.
The setting will be disabled by default and can be
teamfooded by enabling sysprop flag with prop name
persist.fold_lock_behavior_config.
Enable sysprop flag by running following command
* adb root && adb shell setprop persist.fold_lock_behavior_config true
Flag: persist.fold_lock_behavior_config
Bug: 298200843
Test: atest FoldSettingProviderTest FoldLockBehaviorPreferenceControllerTest
* Manually check if the setting accessible with sysprop flag true and
false.
Change-Id: I80e3ba4c544bbe20673b57fe8702e7f299c387a9
diff --git a/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java b/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java
index 88e78e8..661eb99 100644
--- a/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java
+++ b/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java
@@ -24,12 +24,12 @@
import static com.android.settings.display.FoldLockBehaviorSettings.SETTING_VALUE_STAY_AWAKE_ON_FOLD;
import android.content.Context;
-import android.content.res.Resources;
import android.os.UserHandle;
import android.provider.Settings;
import androidx.preference.Preference;
+import com.android.internal.foldables.FoldLockSettingAvailabilityProvider;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
@@ -45,17 +45,17 @@
*/
public class FoldLockBehaviorPreferenceController extends BasePreferenceController {
- private final Resources mResources;
-
- private static Map<String, String> KEY_TO_TEXT = new HashMap<>();
+ private static final Map<String, String> KEY_TO_TEXT = new HashMap<>();
+ private final FoldLockSettingAvailabilityProvider mFoldLockSettingAvailabilityProvider;
public FoldLockBehaviorPreferenceController(Context context, String key) {
- this(context, key, context.getResources());
+ this(context, key, new FoldLockSettingAvailabilityProvider(context.getResources()));
}
- public FoldLockBehaviorPreferenceController(Context context, String key, Resources resources) {
+ public FoldLockBehaviorPreferenceController(Context context, String key,
+ FoldLockSettingAvailabilityProvider foldLockSettingAvailabilityProvider) {
super(context, key);
- mResources = resources;
+ mFoldLockSettingAvailabilityProvider = foldLockSettingAvailabilityProvider;
KEY_TO_TEXT.put(SETTING_VALUE_STAY_AWAKE_ON_FOLD,
resourceToString(R.string.stay_awake_on_fold_title));
KEY_TO_TEXT.put(SETTING_VALUE_SELECTIVE_STAY_AWAKE,
@@ -66,7 +66,9 @@
@Override
public int getAvailabilityStatus() {
- return mResources.getBoolean(com.android.internal.R.bool.config_fold_lock_behavior)
+ boolean isFoldLockBehaviorAvailable =
+ mFoldLockSettingAvailabilityProvider.isFoldLockBehaviorAvailable();
+ return isFoldLockBehaviorAvailable
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
diff --git a/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java
index 2510bf1..4fc56b0 100644
--- a/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java
@@ -25,9 +25,8 @@
import static org.mockito.Mockito.when;
import android.content.Context;
-import android.content.res.Resources;
-import com.android.internal.R;
+import com.android.internal.foldables.FoldLockSettingAvailabilityProvider;
import org.junit.Before;
import org.junit.Test;
@@ -41,27 +40,29 @@
public class FoldLockBehaviorPreferenceControllerTest {
@Mock
- private Resources mResources;
+ private FoldLockSettingAvailabilityProvider mFoldLockSettingAvailabilityProvider;
private Context mContext;
private FoldLockBehaviorPreferenceController mController;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
- mResources = Mockito.mock(Resources.class);
- mController = new FoldLockBehaviorPreferenceController(mContext, "key", mResources);
+ mFoldLockSettingAvailabilityProvider = Mockito.mock(
+ FoldLockSettingAvailabilityProvider.class);
+ mController = new FoldLockBehaviorPreferenceController(mContext, "key",
+ mFoldLockSettingAvailabilityProvider);
}
@Test
public void getAvailabilityStatus_withConfigNoShow_returnUnsupported() {
- when(mResources.getBoolean(R.bool.config_fold_lock_behavior)).thenReturn(false);
+ when(mFoldLockSettingAvailabilityProvider.isFoldLockBehaviorAvailable()).thenReturn(false);
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
@Test
public void getAvailabilityStatus_withConfigNoShow_returnAvailable() {
- when(mResources.getBoolean(R.bool.config_fold_lock_behavior)).thenReturn(true);
+ when(mFoldLockSettingAvailabilityProvider.isFoldLockBehaviorAvailable()).thenReturn(true);
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}