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

Commit 4143239c authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5713143 from 66c02ffd to qt-c2f2-release

Change-Id: I655e1565f3910600b0a12e8fbdccd852ab1037ce
parents fff7e807 66c02ffd
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -120,6 +120,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
    private int mCurrentBoundedUserId = -1;
    private float mNavBarButtonAlpha;
    private boolean mInputFocusTransferStarted;
    private float mInputFocusTransferStartY;
    private long mInputFocusTransferStartMillis;
    private float mWindowCornerRadius;
    private boolean mSupportsRoundedCornersOnWindows;
    private int mNavBarMode = NAV_BAR_MODE_3BUTTON;
@@ -180,12 +182,16 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
                        int action = event.getActionMasked();
                        if (action == ACTION_DOWN) {
                            mInputFocusTransferStarted = true;

                            mInputFocusTransferStartY = event.getY();
                            mInputFocusTransferStartMillis = event.getEventTime();
                            bar.onInputFocusTransfer(mInputFocusTransferStarted, 0 /* velocity */);
                        }
                        if (action == ACTION_UP || action == ACTION_CANCEL) {
                            mInputFocusTransferStarted = false;
                            bar.onInputFocusTransfer(mInputFocusTransferStarted,
                                    (event.getY() - mInputFocusTransferStartY)
                                    / (event.getEventTime() - mInputFocusTransferStartMillis));
                        }
                        bar.onInputFocusTransfer(mInputFocusTransferStarted);
                        event.recycle();
                    }
                });
@@ -596,7 +602,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
                StatusBar bar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
                if (bar != null) {
                    mInputFocusTransferStarted = false;
                    bar.onInputFocusTransfer(false);
                    bar.onInputFocusTransfer(false, 0 /* velocity */);
                }
            });
        }
+40 −10
Original line number Diff line number Diff line
@@ -290,7 +290,11 @@ public class NotificationPanelView extends PanelView implements
    private boolean mIsFullWidth;
    private boolean mBlockingExpansionForCurrentTouch;

    private boolean mExpectingOpenPanelGesture;
    /**
     * Following variables maintain state of events when input focus transfer may occur.
     */
    private boolean mExpectingSynthesizedDown; // expecting to see synthesized DOWN event
    private boolean mLastEventSynthesizedDown; // last event was synthesized DOWN event

    /**
     * Current dark amount that follows regular interpolation curve of animation.
@@ -1059,6 +1063,15 @@ public class NotificationPanelView extends PanelView implements
            mDownY = event.getY();
            mCollapsedOnDown = isFullyCollapsed();
            mListenForHeadsUp = mCollapsedOnDown && mHeadsUpManager.hasPinnedHeadsUp();
            if (mExpectingSynthesizedDown) {
                mLastEventSynthesizedDown = true;
            } else {
                // down but not synthesized motion event.
                mLastEventSynthesizedDown = false;
            }
        } else {
            // not down event at all.
            mLastEventSynthesizedDown = false;
        }
    }

@@ -1124,12 +1137,18 @@ public class NotificationPanelView extends PanelView implements
            return false;
        }

        initDownStates(event);
        // Make sure the next touch won't the blocked after the current ends.
        if (event.getAction() == MotionEvent.ACTION_UP
                || event.getAction() == MotionEvent.ACTION_CANCEL) {
            mBlockingExpansionForCurrentTouch = false;
        }
        // When touch focus transfer happens, ACTION_DOWN->ACTION_UP may happen immediately
        // without any ACTION_MOVE event.
        // In such case, simply expand the panel instead of being stuck at the bottom bar.
        if (mLastEventSynthesizedDown && event.getAction() == MotionEvent.ACTION_UP) {
            expand(true /* animate */);
        }
        initDownStates(event);
        if (!mIsExpanding && !shouldQuickSettingsIntercept(mDownX, mDownY, 0)
                && mPulseExpansionHandler.onTouchEvent(event)) {
            // We're expanding all the other ones shouldn't get this anymore
@@ -1255,17 +1274,28 @@ public class NotificationPanelView extends PanelView implements
        if (!isFullyCollapsed()) {
            return;
        }
        mExpectingOpenPanelGesture = true;
        mExpectingSynthesizedDown = true;
        onTrackingStarted();
    }

    /**
     * Input focus transfer has already happened as this view decided to intercept
     * very first down event.
     * Called when this view is no longer waiting for input focus transfer.
     *
     * There are two scenarios behind this function call. First, input focus transfer
     * has successfully happened and this view already received synthetic DOWN event.
     * (mExpectingSynthesizedDown == false). Do nothing.
     *
     * Second, before input focus transfer finished, user may have lifted finger
     * in previous window and this window never received synthetic DOWN event.
     * (mExpectingSynthesizedDown == true).
     * In this case, we use the velocity to trigger fling event.
     *
     * @param velocity unit is in px / millis
     */
    public void stopWaitingForOpenPanelGesture() {
        if (mExpectingOpenPanelGesture) {
            mExpectingOpenPanelGesture = false;
    public void stopWaitingForOpenPanelGesture(float velocity) {
        if (mExpectingSynthesizedDown) {
            mExpectingSynthesizedDown = false;
            fling(velocity > 1f ? 1000f * velocity : 0, true /* animate */);
            onTrackingStopped(false);
        }
    }
@@ -1283,8 +1313,8 @@ public class NotificationPanelView extends PanelView implements

    @Override
    protected boolean shouldGestureWaitForTouchSlop() {
        if (mExpectingOpenPanelGesture) {
            mExpectingOpenPanelGesture = false;
        if (mExpectingSynthesizedDown) {
            mExpectingSynthesizedDown = false;
            return false;
        }
        return isFullyCollapsed() || mBarState != StatusBarState.SHADE;
+2 −3
Original line number Diff line number Diff line
@@ -80,7 +80,6 @@ import android.metrics.LogMaker;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -1932,7 +1931,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    /**
     * Called when another window is about to transfer it's input focus.
     */
    public void onInputFocusTransfer(boolean start) {
    public void onInputFocusTransfer(boolean start, float velocity) {
        if (!mCommandQueue.panelsEnabled()) {
            return;
        }
@@ -1940,7 +1939,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        if (start) {
            mNotificationPanel.startWaitingForOpenPanelGesture();
        } else {
            mNotificationPanel.stopWaitingForOpenPanelGesture();
            mNotificationPanel.stopWaitingForOpenPanelGesture(velocity);
        }
    }

+5 −0
Original line number Diff line number Diff line
@@ -2269,6 +2269,11 @@ public class PermissionManagerService {
            return;
        }

        // Permission is already revoked, no need to do anything.
        if (!permissionsState.hasRuntimePermission(permName, userId)) {
            return;
        }

        if (permissionsState.revokeRuntimePermission(bp, userId) ==
                PERMISSION_OPERATION_FAILURE) {
            return;
+3 −3
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ import static com.android.server.wm.WindowManagerService.logSurface;
import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP;
import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING;
import static com.android.server.wm.WindowStateAnimator.READY_TO_SHOW;
import static com.android.server.wm.utils.RegionUtils.forEachRect;
import static com.android.server.wm.utils.RegionUtils.forEachRectReverse;
import static com.android.server.wm.utils.RegionUtils.rectListToRegion;

import android.animation.AnimationHandler;
@@ -5257,13 +5257,13 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        r.op(edge, Op.INTERSECT);

        final int[] remaining = {limit};
        forEachRect(r, rect -> {
        forEachRectReverse(r, rect -> {
            if (remaining[0] <= 0) {
                return;
            }
            final int height = rect.height();
            if (height > remaining[0]) {
                rect.bottom = rect.top + remaining[0];
                rect.top = rect.bottom - remaining[0];
            }
            remaining[0] -= height;
            global.op(rect, Op.UNION);
Loading