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

Commit b687c8a3 authored by Matthew Ng's avatar Matthew Ng
Browse files

Update swipe back gesture experiment settings

Using Settings.Global instead of setprop.
go/navbar-experiments

Bug: 112934365
Test: manual
Change-Id: I84e7dc2f6c8eaadf101ee3bf41442b588ad70426
parent 72555cca
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -195,7 +195,7 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
        @Override
        public void onBackButtonAlphaChanged(float alpha, boolean animate) {
            final ButtonDispatcher backButton = mNavigationBarView.getBackButton();
            if (QuickStepController.shouldhideBackButton()) {
            if (QuickStepController.shouldhideBackButton(getContext())) {
                // If property was changed to hide/show back button, going home will trigger
                // launcher to to change the back button alpha to reflect property change
                backButton.setVisibility(View.GONE);
+1 −1
Original line number Diff line number Diff line
@@ -594,7 +594,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
        // Always disable recents when alternate car mode UI is active.
        boolean disableRecent = mUseCarModeUi || !isOverviewEnabled();

        boolean disableBack = QuickStepController.shouldhideBackButton()
        boolean disableBack = QuickStepController.shouldhideBackButton(getContext())
                || (((mDisabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0) && !useAltBack);

        // When screen pinning, don't hide back and home when connected service or back and
+32 −20
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ import android.hardware.input.InputManager;
import android.os.Handler;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.provider.Settings;
import android.util.FloatProperty;
import android.util.Log;
import android.util.Slog;
@@ -77,10 +77,11 @@ public class QuickStepController implements GestureHelper {
    private static final float GRADIENT_WIDTH = .75f;

    /** Experiment to swipe home button left to execute a back key press */
    private static final String PULL_HOME_GO_BACK_PROP = "persist.quickstepcontroller.homegoesback";
    private static final String HIDE_BACK_BUTTON_PROP = "persist.quickstepcontroller.hideback";
    private static final String PULL_HOME_GO_BACK_PROP = "quickstepcontroller_homegoesback";
    private static final String HIDE_BACK_BUTTON_PROP = "quickstepcontroller_hideback";
    private static final String BACK_AFTER_END_PROP
            = "persist.quickstepcontroller.homegoesbackwhenend";
            = "quickstepcontroller_homegoesbackwhenend";
    private static final String NAVBAR_EXPERIMENTS_DISABLED = "navbarexperiments_disabled";
    private static final long BACK_BUTTON_FADE_OUT_ALPHA = 60;
    private static final long BACK_BUTTON_FADE_IN_ALPHA = 150;
    private static final long BACK_GESTURE_POLL_TIMEOUT = 1000;
@@ -124,14 +125,6 @@ public class QuickStepController implements GestureHelper {
    private final Matrix mTransformLocalMatrix = new Matrix();
    private final Paint mTrackPaint = new Paint();

    public static boolean swipeHomeGoBackGestureEnabled() {
        return SystemProperties.getBoolean(PULL_HOME_GO_BACK_PROP, false);
    }
    public static boolean shouldhideBackButton() {
        return swipeHomeGoBackGestureEnabled()
            && SystemProperties.getBoolean(HIDE_BACK_BUTTON_PROP, false);
    }

    private final FloatProperty<QuickStepController> mTrackAlphaProperty =
            new FloatProperty<QuickStepController>("TrackAlpha") {
        @Override
@@ -211,7 +204,7 @@ public class QuickStepController implements GestureHelper {
    public void setComponents(NavigationBarView navigationBarView) {
        mNavigationBarView = navigationBarView;

        mNavigationBarView.getBackButton().setVisibility(shouldhideBackButton()
        mNavigationBarView.getBackButton().setVisibility(shouldhideBackButton(mContext)
                ? View.GONE
                : View.VISIBLE);
    }
@@ -344,7 +337,7 @@ public class QuickStepController implements GestureHelper {
                    // Passing the drag slop then touch slop will start quick step
                    if (allowDrag) {
                        startQuickScrub();
                    } else if (swipeHomeGoBackGestureEnabled()
                    } else if (swipeHomeGoBackGestureEnabled(mContext)
                            && mNavigationBarView.getDownHitTarget() == HIT_TARGET_HOME
                            && mDragPositive ? pos < touchDown : pos > touchDown) {
                        startBackGesture();
@@ -607,10 +600,9 @@ public class QuickStepController implements GestureHelper {
        if (!mBackGestureActive) {
            mBackGestureActive = true;
            mNavigationBarView.getHomeButton().abortCurrentGesture();
            final boolean runBackMidGesture
                    = !SystemProperties.getBoolean(BACK_AFTER_END_PROP, false);
            final boolean runBackMidGesture = !shouldExecuteBackOnUp(mContext);
            if (mCanPerformBack) {
                if (!shouldhideBackButton()) {
                if (!shouldhideBackButton(mContext)) {
                    mNavigationBarView.getBackButton().setAlpha(0 /* alpha */, true /* animate */,
                            BACK_BUTTON_FADE_OUT_ALPHA);
                }
@@ -638,11 +630,11 @@ public class QuickStepController implements GestureHelper {
                mHomeAnimator.translationX(0);
            }
            mHomeAnimator.start();
            if (!shouldhideBackButton()) {
            if (!shouldhideBackButton(mContext)) {
                mNavigationBarView.getBackButton().setAlpha(
                        mOverviewEventSender.getBackButtonAlpha(), true /* animate */);
            }
            if (SystemProperties.getBoolean(BACK_AFTER_END_PROP, false)) {
            if (shouldExecuteBackOnUp(mContext)) {
                performBack();
            }
        }
@@ -709,7 +701,8 @@ public class QuickStepController implements GestureHelper {
    }

    private boolean canPerformHomeBackGesture() {
        return swipeHomeGoBackGestureEnabled() && mOverviewEventSender.getBackButtonAlpha() > 0;
        return swipeHomeGoBackGestureEnabled(mContext)
                && mOverviewEventSender.getBackButtonAlpha() > 0;
    }

    private void performBack() {
@@ -746,4 +739,23 @@ public class QuickStepController implements GestureHelper {
        }
        return false;
    }

    private static boolean getBoolGlobalSetting(Context context, String key) {
        return Settings.Global.getInt(context.getContentResolver(), key, 0) != 0;
    }

    public static boolean swipeHomeGoBackGestureEnabled(Context context) {
        return !getBoolGlobalSetting(context, NAVBAR_EXPERIMENTS_DISABLED)
            && getBoolGlobalSetting(context, PULL_HOME_GO_BACK_PROP);
    }

    public static boolean shouldhideBackButton(Context context) {
        return swipeHomeGoBackGestureEnabled(context)
            && getBoolGlobalSetting(context, HIDE_BACK_BUTTON_PROP);
    }

    public static boolean shouldExecuteBackOnUp(Context context) {
        return !getBoolGlobalSetting(context, NAVBAR_EXPERIMENTS_DISABLED)
            && getBoolGlobalSetting(context, BACK_AFTER_END_PROP);
    }
}