| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/input/ScrollManager.h" | 5 #include "core/input/ScrollManager.h" |
| 6 | 6 |
| 7 #include "core/dom/DOMNodeIds.h" | 7 #include "core/dom/DOMNodeIds.h" |
| 8 #include "core/events/GestureEvent.h" | 8 #include "core/events/GestureEvent.h" |
| 9 #include "core/frame/BrowserControls.h" | 9 #include "core/frame/BrowserControls.h" |
| 10 #include "core/frame/FrameHost.h" | 10 #include "core/frame/FrameHost.h" |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 gestureEvent.sourceDevice == WebGestureDeviceTouchscreen; | 233 gestureEvent.sourceDevice == WebGestureDeviceTouchscreen; |
| 234 scrollStateData->delta_consumed_for_scroll_sequence = | 234 scrollStateData->delta_consumed_for_scroll_sequence = |
| 235 m_deltaConsumedForScrollSequence; | 235 m_deltaConsumedForScrollSequence; |
| 236 ScrollState* scrollState = ScrollState::create(std::move(scrollStateData)); | 236 ScrollState* scrollState = ScrollState::create(std::move(scrollStateData)); |
| 237 customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState); | 237 customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState); |
| 238 return WebInputEventResult::HandledSystem; | 238 return WebInputEventResult::HandledSystem; |
| 239 } | 239 } |
| 240 | 240 |
| 241 WebInputEventResult ScrollManager::handleGestureScrollUpdate( | 241 WebInputEventResult ScrollManager::handleGestureScrollUpdate( |
| 242 const WebGestureEvent& gestureEvent) { | 242 const WebGestureEvent& gestureEvent) { |
| 243 DCHECK_EQ(gestureEvent.type, WebInputEvent::GestureScrollUpdate); | 243 DCHECK_EQ(gestureEvent.type(), WebInputEvent::GestureScrollUpdate); |
| 244 | 244 |
| 245 Node* node = m_scrollGestureHandlingNode.get(); | 245 Node* node = m_scrollGestureHandlingNode.get(); |
| 246 if (!node || !node->layoutObject()) | 246 if (!node || !node->layoutObject()) |
| 247 return WebInputEventResult::NotHandled; | 247 return WebInputEventResult::NotHandled; |
| 248 | 248 |
| 249 // Negate the deltas since the gesture event stores finger movement and | 249 // Negate the deltas since the gesture event stores finger movement and |
| 250 // scrolling occurs in the direction opposite the finger's movement | 250 // scrolling occurs in the direction opposite the finger's movement |
| 251 // direction. e.g. Finger moving up has negative event delta but causes the | 251 // direction. e.g. Finger moving up has negative event delta but causes the |
| 252 // page to scroll down causing positive scroll delta. | 252 // page to scroll down causing positive scroll delta. |
| 253 FloatSize delta(-gestureEvent.deltaXInRootFrame(), | 253 FloatSize delta(-gestureEvent.deltaXInRootFrame(), |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 return m_frame->document()->rootScrollerController().scrollsViewport(element); | 378 return m_frame->document()->rootScrollerController().scrollsViewport(element); |
| 379 } | 379 } |
| 380 | 380 |
| 381 WebInputEventResult ScrollManager::handleGestureScrollEvent( | 381 WebInputEventResult ScrollManager::handleGestureScrollEvent( |
| 382 const WebGestureEvent& gestureEvent) { | 382 const WebGestureEvent& gestureEvent) { |
| 383 if (!m_frame->view()) | 383 if (!m_frame->view()) |
| 384 return WebInputEventResult::NotHandled; | 384 return WebInputEventResult::NotHandled; |
| 385 | 385 |
| 386 Node* eventTarget = nullptr; | 386 Node* eventTarget = nullptr; |
| 387 Scrollbar* scrollbar = nullptr; | 387 Scrollbar* scrollbar = nullptr; |
| 388 if (gestureEvent.type != WebInputEvent::GestureScrollBegin) { | 388 if (gestureEvent.type() != WebInputEvent::GestureScrollBegin) { |
| 389 scrollbar = m_scrollbarHandlingScrollGesture.get(); | 389 scrollbar = m_scrollbarHandlingScrollGesture.get(); |
| 390 eventTarget = m_scrollGestureHandlingNode.get(); | 390 eventTarget = m_scrollGestureHandlingNode.get(); |
| 391 } | 391 } |
| 392 | 392 |
| 393 if (!eventTarget) { | 393 if (!eventTarget) { |
| 394 Document* document = m_frame->document(); | 394 Document* document = m_frame->document(); |
| 395 if (document->layoutViewItem().isNull()) | 395 if (document->layoutViewItem().isNull()) |
| 396 return WebInputEventResult::NotHandled; | 396 return WebInputEventResult::NotHandled; |
| 397 | 397 |
| 398 FrameView* view = m_frame->view(); | 398 FrameView* view = m_frame->view(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 DispatchEventResult gestureDomEventResult = | 433 DispatchEventResult gestureDomEventResult = |
| 434 eventTarget->dispatchEvent(gestureDomEvent); | 434 eventTarget->dispatchEvent(gestureDomEvent); |
| 435 if (gestureDomEventResult != DispatchEventResult::NotCanceled) { | 435 if (gestureDomEventResult != DispatchEventResult::NotCanceled) { |
| 436 DCHECK(gestureDomEventResult != | 436 DCHECK(gestureDomEventResult != |
| 437 DispatchEventResult::CanceledByEventHandler); | 437 DispatchEventResult::CanceledByEventHandler); |
| 438 return EventHandlingUtil::toWebInputEventResult(gestureDomEventResult); | 438 return EventHandlingUtil::toWebInputEventResult(gestureDomEventResult); |
| 439 } | 439 } |
| 440 } | 440 } |
| 441 } | 441 } |
| 442 | 442 |
| 443 switch (gestureEvent.type) { | 443 switch (gestureEvent.type()) { |
| 444 case WebInputEvent::GestureScrollBegin: | 444 case WebInputEvent::GestureScrollBegin: |
| 445 return handleGestureScrollBegin(gestureEvent); | 445 return handleGestureScrollBegin(gestureEvent); |
| 446 case WebInputEvent::GestureScrollUpdate: | 446 case WebInputEvent::GestureScrollUpdate: |
| 447 return handleGestureScrollUpdate(gestureEvent); | 447 return handleGestureScrollUpdate(gestureEvent); |
| 448 case WebInputEvent::GestureScrollEnd: | 448 case WebInputEvent::GestureScrollEnd: |
| 449 return handleGestureScrollEnd(gestureEvent); | 449 return handleGestureScrollEnd(gestureEvent); |
| 450 case WebInputEvent::GestureFlingStart: | 450 case WebInputEvent::GestureFlingStart: |
| 451 case WebInputEvent::GesturePinchBegin: | 451 case WebInputEvent::GesturePinchBegin: |
| 452 case WebInputEvent::GesturePinchEnd: | 452 case WebInputEvent::GesturePinchEnd: |
| 453 case WebInputEvent::GesturePinchUpdate: | 453 case WebInputEvent::GesturePinchUpdate: |
| 454 return WebInputEventResult::NotHandled; | 454 return WebInputEventResult::NotHandled; |
| 455 default: | 455 default: |
| 456 NOTREACHED(); | 456 NOTREACHED(); |
| 457 return WebInputEventResult::NotHandled; | 457 return WebInputEventResult::NotHandled; |
| 458 } | 458 } |
| 459 } | 459 } |
| 460 | 460 |
| 461 bool ScrollManager::isScrollbarHandlingGestures() const { | 461 bool ScrollManager::isScrollbarHandlingGestures() const { |
| 462 return m_scrollbarHandlingScrollGesture.get(); | 462 return m_scrollbarHandlingScrollGesture.get(); |
| 463 } | 463 } |
| 464 | 464 |
| 465 bool ScrollManager::handleScrollGestureOnResizer( | 465 bool ScrollManager::handleScrollGestureOnResizer( |
| 466 Node* eventTarget, | 466 Node* eventTarget, |
| 467 const WebGestureEvent& gestureEvent) { | 467 const WebGestureEvent& gestureEvent) { |
| 468 if (gestureEvent.sourceDevice != WebGestureDeviceTouchscreen) | 468 if (gestureEvent.sourceDevice != WebGestureDeviceTouchscreen) |
| 469 return false; | 469 return false; |
| 470 | 470 |
| 471 if (gestureEvent.type == WebInputEvent::GestureScrollBegin) { | 471 if (gestureEvent.type() == WebInputEvent::GestureScrollBegin) { |
| 472 PaintLayer* layer = eventTarget->layoutObject() | 472 PaintLayer* layer = eventTarget->layoutObject() |
| 473 ? eventTarget->layoutObject()->enclosingLayer() | 473 ? eventTarget->layoutObject()->enclosingLayer() |
| 474 : nullptr; | 474 : nullptr; |
| 475 IntPoint p = m_frame->view()->rootFrameToContents( | 475 IntPoint p = m_frame->view()->rootFrameToContents( |
| 476 flooredIntPoint(gestureEvent.positionInRootFrame())); | 476 flooredIntPoint(gestureEvent.positionInRootFrame())); |
| 477 if (layer && layer->getScrollableArea() && | 477 if (layer && layer->getScrollableArea() && |
| 478 layer->getScrollableArea()->isPointInResizeControl(p, | 478 layer->getScrollableArea()->isPointInResizeControl(p, |
| 479 ResizerForTouch)) { | 479 ResizerForTouch)) { |
| 480 m_resizeScrollableArea = layer->getScrollableArea(); | 480 m_resizeScrollableArea = layer->getScrollableArea(); |
| 481 m_resizeScrollableArea->setInResizeMode(true); | 481 m_resizeScrollableArea->setInResizeMode(true); |
| 482 m_offsetFromResizeCorner = | 482 m_offsetFromResizeCorner = |
| 483 LayoutSize(m_resizeScrollableArea->offsetFromResizeCorner(p)); | 483 LayoutSize(m_resizeScrollableArea->offsetFromResizeCorner(p)); |
| 484 return true; | 484 return true; |
| 485 } | 485 } |
| 486 } else if (gestureEvent.type == WebInputEvent::GestureScrollUpdate) { | 486 } else if (gestureEvent.type() == WebInputEvent::GestureScrollUpdate) { |
| 487 if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) { | 487 if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) { |
| 488 IntPoint pos = roundedIntPoint(gestureEvent.positionInRootFrame()); | 488 IntPoint pos = roundedIntPoint(gestureEvent.positionInRootFrame()); |
| 489 pos.move(gestureEvent.deltaXInRootFrame(), | 489 pos.move(gestureEvent.deltaXInRootFrame(), |
| 490 gestureEvent.deltaYInRootFrame()); | 490 gestureEvent.deltaYInRootFrame()); |
| 491 m_resizeScrollableArea->resize(pos, m_offsetFromResizeCorner); | 491 m_resizeScrollableArea->resize(pos, m_offsetFromResizeCorner); |
| 492 return true; | 492 return true; |
| 493 } | 493 } |
| 494 } else if (gestureEvent.type == WebInputEvent::GestureScrollEnd) { | 494 } else if (gestureEvent.type() == WebInputEvent::GestureScrollEnd) { |
| 495 if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) { | 495 if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) { |
| 496 m_resizeScrollableArea->setInResizeMode(false); | 496 m_resizeScrollableArea->setInResizeMode(false); |
| 497 m_resizeScrollableArea = nullptr; | 497 m_resizeScrollableArea = nullptr; |
| 498 return false; | 498 return false; |
| 499 } | 499 } |
| 500 } | 500 } |
| 501 | 501 |
| 502 return false; | 502 return false; |
| 503 } | 503 } |
| 504 | 504 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 if (scrollbar->gestureEvent(targetedEvent.event(), &shouldUpdateCapture)) { | 539 if (scrollbar->gestureEvent(targetedEvent.event(), &shouldUpdateCapture)) { |
| 540 if (shouldUpdateCapture) | 540 if (shouldUpdateCapture) |
| 541 m_scrollbarHandlingScrollGesture = scrollbar; | 541 m_scrollbarHandlingScrollGesture = scrollbar; |
| 542 return true; | 542 return true; |
| 543 } | 543 } |
| 544 } | 544 } |
| 545 return false; | 545 return false; |
| 546 } | 546 } |
| 547 | 547 |
| 548 } // namespace blink | 548 } // namespace blink |
| OLD | NEW |