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

Commit 5b6726fa authored by George Mount's avatar George Mount Committed by Android Git Automerger
Browse files

am aac5066d: Merge "Add intercept path for UI touch handling." into jb-dev

* commit 'aac5066d':
  Add intercept path for UI touch handling.
parents 2efec653 aac5066d
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -7593,6 +7593,8 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc

                case UPDATE_CONTENT_BOUNDS:
                    mEditTextContentBounds.set((Rect) msg.obj);
                    nativeMapLayerRect(mNativeClass, mEditTextLayerId,
                            mEditTextContentBounds);
                    break;

                case SCROLL_EDIT_TEXT:
@@ -7619,6 +7621,26 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
        public Context getContext() {
            return WebViewClassic.this.getContext();
        }

        @Override
        public boolean shouldInterceptTouchEvent(MotionEvent event) {
            if (!mSelectingText) {
                return false;
            }
            ensureSelectionHandles();
            int y = Math.round(event.getY() - getTitleHeight() + getScrollY());
            int x = Math.round(event.getX() + getScrollX());
            boolean isPressingHandle;
            if (mIsCaretSelection) {
                isPressingHandle = mSelectHandleCenter.getBounds()
                        .contains(x, y);
            } else {
                isPressingHandle =
                        mSelectHandleLeft.getBounds().contains(x, y)
                        || mSelectHandleRight.getBounds().contains(x, y);
            }
            return isPressingHandle;
        }
    }

    private void setHitTestTypeFromUrl(String url) {
+16 −6
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.util.Log;
import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.ViewConfiguration;

@@ -314,13 +313,15 @@ final class WebViewInputDispatcher {
                    return false;
                }

                if (mPostSendTouchEventsToWebKit
                        && mPostDoNotSendTouchEventsToWebKitUntilNextGesture
                        && action == MotionEvent.ACTION_DOWN) {
                if (action == MotionEvent.ACTION_DOWN && mPostSendTouchEventsToWebKit) {
                    if (mUiCallbacks.shouldInterceptTouchEvent(eventToEnqueue)) {
                        mPostDoNotSendTouchEventsToWebKitUntilNextGesture = true;
                    } else if (mPostDoNotSendTouchEventsToWebKitUntilNextGesture) {
                        // Recover from a previous web kit timeout.
                        mPostDoNotSendTouchEventsToWebKitUntilNextGesture = false;
                    }
                }
            }

            // Copy the event because we need to retain ownership.
            if (eventToEnqueue == event) {
@@ -949,6 +950,15 @@ final class WebViewInputDispatcher {
         * @param flags The event's dispatch flags.
         */
        public void dispatchUiEvent(MotionEvent event, int eventType, int flags);

        /**
         * Asks the UI thread whether this touch event stream should be
         * intercepted based on the touch down event.
         * @param event The touch down event.
         * @return true if the UI stream wants the touch stream without going
         * through webkit or false otherwise.
         */
        public boolean shouldInterceptTouchEvent(MotionEvent event);
    }

    /* Implemented by {@link WebViewCore} to perform operations on the web kit thread. */