From f62888975ebf602fbd366a19d019eeaa97a60287 Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Tue, 21 Apr 2020 17:36:53 +0800 Subject: [PATCH] Enable(visible) or Disabled(invisible) all one-handed settings preference by System Property flag configuration. To check System Property flag "support_one_handed_mode" configuration then enable(visible) or disable(invisible) all one-handed settings preference. Bug: 154290458 Test: manual Test: RunSettingsRoboTests Change-Id: Ib6ed12dd65e66747e53b6333574ba0ad5be3c6e0 --- .../OneHandedEnablePreferenceController.java | 7 ++++- .../settings/gestures/OneHandedSettings.java | 10 ++++++- ...eHandedEnablePreferenceControllerTest.java | 13 ++++++++- .../gestures/OneHandedSettingsTest.java | 27 +++++++++++++++++++ 4 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java index 216c111e9d6..c6db4eaf031 100644 --- a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java +++ b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.gestures; import android.content.Context; +import android.os.SystemProperties; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; @@ -27,13 +28,17 @@ import com.android.settings.core.TogglePreferenceController; **/ public class OneHandedEnablePreferenceController extends TogglePreferenceController { + static final String SUPPORT_ONE_HANDED_MODE = "ro.support_one_handed_mode"; + public OneHandedEnablePreferenceController(Context context, String key) { super(context, key); } @Override public int getAvailabilityStatus() { - return BasePreferenceController.AVAILABLE; + return SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false) + ? BasePreferenceController.AVAILABLE + : BasePreferenceController.UNSUPPORTED_ON_DEVICE; } @Override diff --git a/src/com/android/settings/gestures/OneHandedSettings.java b/src/com/android/settings/gestures/OneHandedSettings.java index 1833147f696..2449cf2f48f 100644 --- a/src/com/android/settings/gestures/OneHandedSettings.java +++ b/src/com/android/settings/gestures/OneHandedSettings.java @@ -17,6 +17,8 @@ package com.android.settings.gestures; import android.app.settings.SettingsEnums; +import android.content.Context; +import android.os.SystemProperties; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -47,5 +49,11 @@ public class OneHandedSettings extends DashboardFragment { } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider(R.xml.one_handed_settings); + new BaseSearchIndexProvider(R.xml.one_handed_settings) { + @Override + protected boolean isPageSearchEnabled(Context context) { + return SystemProperties.getBoolean( + OneHandedEnablePreferenceController.SUPPORT_ONE_HANDED_MODE, false); + } + }; } diff --git a/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java index f514d580ee6..d2cd7450cfc 100644 --- a/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java @@ -19,6 +19,7 @@ package com.android.settings.gestures; import static com.google.common.truth.Truth.assertThat; import android.content.Context; +import android.os.SystemProperties; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; @@ -57,11 +58,21 @@ public class OneHandedEnablePreferenceControllerTest { } @Test - public void getAvailabilityStatus_byDefault_shouldAvailable() { + public void getAvailabilityStatus_setSupportOneHandedModeProperty_shouldAvailable() { + SystemProperties.set(OneHandedEnablePreferenceController.SUPPORT_ONE_HANDED_MODE, "true"); + assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE); } + @Test + public void getAvailabilityStatus_unsetSupportOneHandedModeProperty_shouldUnsupported() { + SystemProperties.set(OneHandedEnablePreferenceController.SUPPORT_ONE_HANDED_MODE, "false"); + + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE); + } + @Test public void getSummary_enabledOneHanded_shouldDisplayOnSummary() { OneHandedSettingsUtils.setSettingsOneHandedModeEnabled(mContext, true); diff --git a/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java b/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java index 28ce4fc949a..fcea91942b7 100644 --- a/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java +++ b/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java @@ -18,6 +18,8 @@ package com.android.settings.gestures; import static com.google.common.truth.Truth.assertThat; +import android.content.Context; +import android.os.SystemProperties; import android.provider.SearchIndexableResource; import org.junit.Before; @@ -25,6 +27,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import org.robolectric.util.ReflectionHelpers; import java.util.List; @@ -32,10 +35,12 @@ import java.util.List; public class OneHandedSettingsTest { private OneHandedSettings mSettings; + private Context mContext; @Before public void setUp() { mSettings = new OneHandedSettings(); + mContext = RuntimeEnvironment.application; } @Test @@ -47,4 +52,26 @@ public class OneHandedSettingsTest { assertThat(indexRes).isNotNull(); assertThat(indexRes.get(0).xmlResId).isEqualTo(mSettings.getPreferenceScreenResId()); } + + @Test + public void isPageSearchEnabled_setSupportOneHandedModeProperty_shouldReturnTrue() { + SystemProperties.set(OneHandedEnablePreferenceController.SUPPORT_ONE_HANDED_MODE, "true"); + + final Object obj = ReflectionHelpers.callInstanceMethod( + OneHandedSettings.SEARCH_INDEX_DATA_PROVIDER, "isPageSearchEnabled", + ReflectionHelpers.ClassParameter.from(Context.class, mContext)); + final boolean isEnabled = (Boolean) obj; + assertThat(isEnabled).isTrue(); + } + + @Test + public void isPageSearchEnabled_unsetSupportOneHandedModeProperty_shouldReturnFalse() { + SystemProperties.set(OneHandedEnablePreferenceController.SUPPORT_ONE_HANDED_MODE, "false"); + + final Object obj = ReflectionHelpers.callInstanceMethod( + OneHandedSettings.SEARCH_INDEX_DATA_PROVIDER, "isPageSearchEnabled", + ReflectionHelpers.ClassParameter.from(Context.class, mContext)); + final boolean isEnabled = (Boolean) obj; + assertThat(isEnabled).isFalse(); + } }