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

Commit 46b356d3 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Disable settings preferences when the packages do not exist" into qt-dev

parents 6e8c4033 cfd0a66f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ public class SystemNavigationEdgeToEdgePreferenceController extends
    @VisibleForTesting
    public SystemNavigationEdgeToEdgePreferenceController(Context context,
            IOverlayManager overlayManager, String key) {
        super(context, overlayManager, key);
        super(context, overlayManager, key, NAV_BAR_MODE_GESTURAL_OVERLAY);
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ public class SystemNavigationLegacyPreferenceController extends
    @VisibleForTesting
    public SystemNavigationLegacyPreferenceController(Context context,
            IOverlayManager overlayManager, String key) {
        super(context, overlayManager, key);
        super(context, overlayManager, key, NAV_BAR_MODE_3BUTTON_OVERLAY);
    }

    @Override
+26 −4
Original line number Diff line number Diff line
@@ -52,16 +52,18 @@ public abstract class SystemNavigationPreferenceController extends GesturePrefer

    protected final IOverlayManager mOverlayManager;
    protected PreferenceScreen mPreferenceScreen;
    private final String mOverlayPackage;

    public SystemNavigationPreferenceController(Context context, IOverlayManager overlayManager,
            String key) {
            String key, String overlayPackage) {
        super(context, key);
        mOverlayManager = overlayManager;
        mOverlayPackage = overlayPackage;
    }

    @Override
    public int getAvailabilityStatus() {
        return isGestureAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
        return isGestureAvailable(mContext, mOverlayPackage) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
@@ -105,23 +107,43 @@ public abstract class SystemNavigationPreferenceController extends GesturePrefer
        return PREF_KEY_VIDEO;
    }


    static boolean isGestureAvailable(Context context) {
        return isGestureAvailable(context, null /* overlayPackage */);
    }

    static boolean isGestureAvailable(Context context, String overlayPackage) {
        // Skip if the swipe up settings are not available
        if (!context.getResources().getBoolean(
                com.android.internal.R.bool.config_swipe_up_gesture_setting_available)) {
            return false;
        }

        // Skip if the recents component is not defined
        final ComponentName recentsComponentName = ComponentName.unflattenFromString(
                context.getString(com.android.internal.R.string.config_recentsComponentName));
        if (recentsComponentName == null) {
            return false;
        }

        // Skip if the overview proxy service exists
        final PackageManager pm = context.getPackageManager();
        final Intent quickStepIntent = new Intent(ACTION_QUICKSTEP)
                .setPackage(recentsComponentName.getPackageName());
        if (context.getPackageManager().resolveService(quickStepIntent,
                PackageManager.MATCH_SYSTEM_ONLY) == null) {
        if (pm.resolveService(quickStepIntent, PackageManager.MATCH_SYSTEM_ONLY) == null) {
            return false;
        }

        // Skip if the required overlay package is defined but doesn't exist
        if (overlayPackage != null) {
            try {
                return pm.getPackageInfo(overlayPackage, 0 /* flags */) != null;
            } catch (PackageManager.NameNotFoundException e) {
                // Not found, just return unavailable
                return false;
            }
        }

        return true;
    }

+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ public class SystemNavigationSwipeUpPreferenceController extends
    @VisibleForTesting
    public SystemNavigationSwipeUpPreferenceController(Context context,
            IOverlayManager overlayManager, String key) {
        super(context, overlayManager, key);
        super(context, overlayManager, key, NAV_BAR_MODE_2BUTTON_OVERLAY);
    }

    @Override
+6 −0
Original line number Diff line number Diff line
@@ -130,6 +130,12 @@ public class SystemNavigationEdgeToEdgePreferenceControllerTest {
                .isFalse();
    }

    @Test
    public void testIsGestureAvailable_noOverlayPackage_shouldReturnFalse() {
        assertThat(SystemNavigationEdgeToEdgePreferenceController.isGestureAvailable(mContext,
                "com.package.fake")).isFalse();
    }

    @Test
    public void testIsChecked_defaultIsEdgeToEdge_shouldReturnTrue() {
        SettingsShadowResources.overrideResource(R.integer.config_navBarInteractionMode,
Loading