diff --git a/res/values/config.xml b/res/values/config.xml index e3ec74f2636..f8a7acc9c61 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -131,4 +131,7 @@ + + false + diff --git a/src/com/android/settings/gestures/SwipeUpPreferenceController.java b/src/com/android/settings/gestures/SwipeUpPreferenceController.java index 8afd13be31a..7dcf666f3ac 100644 --- a/src/com/android/settings/gestures/SwipeUpPreferenceController.java +++ b/src/com/android/settings/gestures/SwipeUpPreferenceController.java @@ -39,6 +39,10 @@ public class SwipeUpPreferenceController extends GesturePreferenceController { } static boolean isGestureAvailable(Context context) { + if (!context.getResources().getBoolean(R.bool.config_swipe_up_gesture_setting_available)) { + return false; + } + final ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); final Intent quickStepIntent = new Intent(ACTION_QUICKSTEP) @@ -74,8 +78,10 @@ public class SwipeUpPreferenceController extends GesturePreferenceController { @Override public boolean isChecked() { + final int defaultValue = mContext.getResources() + .getBoolean(com.android.internal.R.bool.config_swipe_up_gesture_default) ? ON : OFF; final int swipeUpEnabled = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.SWIPE_UP_TO_SWITCH_APPS_ENABLED, OFF); + Settings.Secure.SWIPE_UP_TO_SWITCH_APPS_ENABLED, defaultValue); return swipeUpEnabled != OFF; } } diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java index 360609bd169..4107b7398a7 100644 --- a/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java @@ -18,35 +18,32 @@ package com.android.settings.gestures; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; -import android.hardware.Sensor; -import android.hardware.SensorManager; import android.os.UserManager; import android.provider.Settings; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.SettingsShadowResources; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; +import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowPackageManager; -import java.util.ArrayList; -import java.util.List; - @RunWith(SettingsRobolectricTestRunner.class) +@Config(shadows = SettingsShadowResources.class) public class SwipeUpPreferenceControllerTest { private Context mContext; @@ -58,11 +55,21 @@ public class SwipeUpPreferenceControllerTest { @Before public void setUp() { + SettingsShadowResources.overrideResource(R.bool.config_swipe_up_gesture_setting_available, + true); + SettingsShadowResources.overrideResource( + com.android.internal.R.bool.config_swipe_up_gesture_default, true); + mContext = RuntimeEnvironment.application; mPackageManager = Shadows.shadowOf(mContext.getPackageManager()); mController = new SwipeUpPreferenceController(mContext, KEY_SWIPE_UP); } + @After + public void tearDown() { + SettingsShadowResources.reset(); + } + @Test public void testIsGestureAvailable_matchingServiceExists_shouldReturnTrue() { final ComponentName recentsComponentName = ComponentName.unflattenFromString( @@ -74,20 +81,46 @@ public class SwipeUpPreferenceControllerTest { assertThat(SwipeUpPreferenceController.isGestureAvailable(mContext)).isTrue(); } + @Test + public void testIsGestureAvailable_overlayDisabled_matchingServiceExists_shouldReturnFalse() { + SettingsShadowResources.overrideResource(R.bool.config_swipe_up_gesture_setting_available, + false); + + final ComponentName recentsComponentName = ComponentName.unflattenFromString( + mContext.getString(com.android.internal.R.string.config_recentsComponentName)); + final Intent quickStepIntent = new Intent(ACTION_QUICKSTEP) + .setPackage(recentsComponentName.getPackageName()); + mPackageManager.addResolveInfoForIntent(quickStepIntent, new ResolveInfo()); + + assertThat(SwipeUpPreferenceController.isGestureAvailable(mContext)).isFalse(); + } + @Test public void testIsGestureAvailable_noMatchingServiceExists_shouldReturnFalse() { assertThat(SwipeUpPreferenceController.isGestureAvailable(mContext)).isFalse(); } @Test - public void testIsChecked_configIsSet_shouldReturnTrue() { + public void testIsChecked_defaultIsTrue_shouldReturnTrue() { + assertThat(mController.isChecked()).isTrue(); + } + + @Test + public void testIsChecked_defaultIsFalse_shouldReturnFalse() { + SettingsShadowResources.overrideResource( + com.android.internal.R.bool.config_swipe_up_gesture_default, false); + assertThat(mController.isChecked()).isFalse(); + } + + @Test + public void testIsChecked_setCheckedTrue_shouldReturnTrue() { // Set the setting to be enabled. mController.setChecked(true); assertThat(mController.isChecked()).isTrue(); } @Test - public void testIsChecked_configIsNotSet_shouldReturnFalse() { + public void testIsChecked_setCheckedFalse_shouldReturnFalse() { // Set the setting to be disabled. mController.setChecked(false); assertThat(mController.isChecked()).isFalse();