Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8486038 authored by Mehdi Alizadeh's avatar Mehdi Alizadeh
Browse files

Remove swipe up setting page if the feature is not available

Bug: 77974864
Test: Manual test and RoboTests
Change-Id: Ie23a01f254d65e5888f91b5b1cb80df40976c569
parent 031bee8e
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -16,8 +16,11 @@


package com.android.settings.gestures;
package com.android.settings.gestures;


import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.content.res.Resources;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
@@ -33,6 +36,7 @@ public class SwipeUpPreferenceController extends GesturePreferenceController {
    private final int ON = 1;
    private final int ON = 1;
    private final int OFF = 0;
    private final int OFF = 0;


    private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
    private static final String PREF_KEY_VIDEO = "gesture_swipe_up_video";
    private static final String PREF_KEY_VIDEO = "gesture_swipe_up_video";
    private final UserManager mUserManager;
    private final UserManager mUserManager;


@@ -42,6 +46,14 @@ public class SwipeUpPreferenceController extends GesturePreferenceController {
    }
    }


    static boolean isGestureAvailable(Context context) {
    static boolean isGestureAvailable(Context context) {
        final ComponentName recentsComponentName = ComponentName.unflattenFromString(
                context.getString(com.android.internal.R.string.config_recentsComponentName));
        final Intent quickStepIntent = new Intent(ACTION_QUICKSTEP)
                .setPackage(recentsComponentName.getPackageName());
        if (context.getPackageManager().resolveService(quickStepIntent,
                PackageManager.MATCH_SYSTEM_ONLY) == null) {
            return false;
        }
        return true;
        return true;
    }
    }


+25 −2
Original line number Original line Diff line number Diff line
@@ -17,12 +17,14 @@
package com.android.settings.gestures;
package com.android.settings.gestures;


import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.hardware.Sensor;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.SensorManager;
import android.os.UserManager;
import android.os.UserManager;
@@ -38,7 +40,8 @@ import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowPackageManager;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
@@ -47,15 +50,35 @@ import java.util.List;
public class SwipeUpPreferenceControllerTest {
public class SwipeUpPreferenceControllerTest {


    private Context mContext;
    private Context mContext;
    private ShadowPackageManager mPackageManager;
    private SwipeUpPreferenceController mController;
    private SwipeUpPreferenceController mController;

    private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
    private static final String KEY_SWIPE_UP = "gesture_swipe_up";
    private static final String KEY_SWIPE_UP = "gesture_swipe_up";


    @Before
    @Before
    public void setUp() {
    public void setUp() {
        mContext = RuntimeEnvironment.application;
        mContext = RuntimeEnvironment.application;
        mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
        mController = new SwipeUpPreferenceController(mContext, KEY_SWIPE_UP);
        mController = new SwipeUpPreferenceController(mContext, KEY_SWIPE_UP);
    }
    }


    @Test
    public void testIsGestureAvailable_matchingServiceExists_shouldReturnTrue() {
        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)).isTrue();
    }

    @Test
    public void testIsGestureAvailable_noMatchingServiceExists_shouldReturnFalse() {
        assertThat(SwipeUpPreferenceController.isGestureAvailable(mContext)).isFalse();
    }

    @Test
    @Test
    public void testIsChecked_configIsSet_shouldReturnTrue() {
    public void testIsChecked_configIsSet_shouldReturnTrue() {
        // Set the setting to be enabled.
        // Set the setting to be enabled.