Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(256)

Side by Side Diff: third_party/WebKit/Source/core/input/ScrollManager.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/FrameHost.h" 9 #include "core/frame/FrameHost.h"
10 #include "core/frame/FrameView.h" 10 #include "core/frame/FrameView.h"
11 #include "core/frame/TopControls.h" 11 #include "core/frame/TopControls.h"
12 #include "core/html/HTMLFrameOwnerElement.h" 12 #include "core/html/HTMLFrameOwnerElement.h"
13 #include "core/input/EventHandler.h" 13 #include "core/input/EventHandler.h"
14 #include "core/layout/LayoutPart.h" 14 #include "core/layout/LayoutPart.h"
15 #include "core/loader/DocumentLoader.h" 15 #include "core/loader/DocumentLoader.h"
16 #include "core/page/AutoscrollController.h" 16 #include "core/page/AutoscrollController.h"
17 #include "core/page/Page.h" 17 #include "core/page/Page.h"
18 #include "core/page/scrolling/OverscrollController.h" 18 #include "core/page/scrolling/OverscrollController.h"
19 #include "core/page/scrolling/ScrollState.h" 19 #include "core/page/scrolling/ScrollState.h"
20 #include "core/paint/PaintLayer.h" 20 #include "core/paint/PaintLayer.h"
21 #include "platform/PlatformGestureEvent.h" 21 #include "platform/PlatformGestureEvent.h"
22 #include "wtf/PtrUtil.h"
23 #include <memory>
24 22
25 23
26 namespace blink { 24 namespace blink {
27 25
28 namespace { 26 namespace {
29 27
30 // TODO(bokan): This method can go away once all scrolls happen through the 28 // TODO(bokan): This method can go away once all scrolls happen through the
31 // scroll customization path. 29 // scroll customization path.
32 void computeScrollChainForSingleNode(Node& node, std::deque<int>& scrollChain) 30 void computeScrollChainForSingleNode(Node& node, std::deque<int>& scrollChain)
33 { 31 {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 if (!node || !node->isElementNode() || !toElement(node)->getApplyScroll()) { 239 if (!node || !node->isElementNode() || !toElement(node)->getApplyScroll()) {
242 *wasRootScroller = false; 240 *wasRootScroller = false;
243 return box->scroll(granularity, delta); 241 return box->scroll(granularity, delta);
244 } 242 }
245 243
246 // If there is an ApplyScroll callback, its because we placed one on the 244 // If there is an ApplyScroll callback, its because we placed one on the
247 // root scroller to control top controls and overscroll. Invoke a scroll 245 // root scroller to control top controls and overscroll. Invoke a scroll
248 // using parts of the scroll customization framework on just this element. 246 // using parts of the scroll customization framework on just this element.
249 computeScrollChainForSingleNode(*node, m_currentScrollChain); 247 computeScrollChainForSingleNode(*node, m_currentScrollChain);
250 248
251 std::unique_ptr<ScrollStateData> scrollStateData = wrapUnique(new ScrollStat eData()); 249 OwnPtr<ScrollStateData> scrollStateData = adoptPtr(new ScrollStateData());
252 scrollStateData->delta_x = delta.width(); 250 scrollStateData->delta_x = delta.width();
253 scrollStateData->delta_y = delta.height(); 251 scrollStateData->delta_y = delta.height();
254 scrollStateData->position_x = position.x(); 252 scrollStateData->position_x = position.x();
255 scrollStateData->position_y = position.y(); 253 scrollStateData->position_y = position.y();
256 // TODO(bokan): delta_granularity is meant to be the number of pixels per 254 // TODO(bokan): delta_granularity is meant to be the number of pixels per
257 // unit of delta but we can't determine that until we get to the area we'll 255 // unit of delta but we can't determine that until we get to the area we'll
258 // scroll. This is a hack, we stuff the enum into the double value for 256 // scroll. This is a hack, we stuff the enum into the double value for
259 // now. 257 // now.
260 scrollStateData->delta_granularity = static_cast<double>(granularity); 258 scrollStateData->delta_granularity = static_cast<double>(granularity);
261 scrollStateData->velocity_x = velocity.width(); 259 scrollStateData->velocity_x = velocity.width();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) 319 if (RuntimeEnabledFeatures::scrollCustomizationEnabled())
322 m_scrollGestureHandlingNode = m_frame->document()->documentElement() ; 320 m_scrollGestureHandlingNode = m_frame->document()->documentElement() ;
323 else 321 else
324 return WebInputEventResult::NotHandled; 322 return WebInputEventResult::NotHandled;
325 } 323 }
326 DCHECK(m_scrollGestureHandlingNode); 324 DCHECK(m_scrollGestureHandlingNode);
327 325
328 passScrollGestureEventToWidget(gestureEvent, m_scrollGestureHandlingNode->la youtObject()); 326 passScrollGestureEventToWidget(gestureEvent, m_scrollGestureHandlingNode->la youtObject());
329 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) { 327 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) {
330 m_currentScrollChain.clear(); 328 m_currentScrollChain.clear();
331 std::unique_ptr<ScrollStateData> scrollStateData = wrapUnique(new Scroll StateData()); 329 OwnPtr<ScrollStateData> scrollStateData = adoptPtr(new ScrollStateData() );
332 scrollStateData->position_x = gestureEvent.position().x(); 330 scrollStateData->position_x = gestureEvent.position().x();
333 scrollStateData->position_y = gestureEvent.position().y(); 331 scrollStateData->position_y = gestureEvent.position().y();
334 scrollStateData->is_beginning = true; 332 scrollStateData->is_beginning = true;
335 scrollStateData->from_user_input = true; 333 scrollStateData->from_user_input = true;
336 scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsumedFor ScrollSequence; 334 scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsumedFor ScrollSequence;
337 ScrollState* scrollState = ScrollState::create(std::move(scrollStateData )); 335 ScrollState* scrollState = ScrollState::create(std::move(scrollStateData ));
338 customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState); 336 customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState);
339 } else { 337 } else {
340 if (m_frame->isMainFrame()) 338 if (m_frame->isMainFrame())
341 m_frame->host()->topControls().scrollBegin(); 339 m_frame->host()->topControls().scrollBegin();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 // scroll customization enabled. 373 // scroll customization enabled.
376 m_previousGestureScrolledNode = m_scrollGestureHandlingNode; 374 m_previousGestureScrolledNode = m_scrollGestureHandlingNode;
377 } 375 }
378 // FIXME: we should allow simultaneous scrolling of nested 376 // FIXME: we should allow simultaneous scrolling of nested
379 // iframes along perpendicular axes. See crbug.com/466991. 377 // iframes along perpendicular axes. See crbug.com/466991.
380 m_deltaConsumedForScrollSequence = true; 378 m_deltaConsumedForScrollSequence = true;
381 return result; 379 return result;
382 } 380 }
383 381
384 if (handleScrollCustomization) { 382 if (handleScrollCustomization) {
385 std::unique_ptr<ScrollStateData> scrollStateData = wrapUnique(new Sc rollStateData()); 383 OwnPtr<ScrollStateData> scrollStateData = adoptPtr(new ScrollStateDa ta());
386 scrollStateData->delta_x = delta.width(); 384 scrollStateData->delta_x = delta.width();
387 scrollStateData->delta_y = delta.height(); 385 scrollStateData->delta_y = delta.height();
388 scrollStateData->delta_granularity = ScrollByPrecisePixel; 386 scrollStateData->delta_granularity = ScrollByPrecisePixel;
389 scrollStateData->velocity_x = velocity.width(); 387 scrollStateData->velocity_x = velocity.width();
390 scrollStateData->velocity_y = velocity.height(); 388 scrollStateData->velocity_y = velocity.height();
391 scrollStateData->should_propagate = !gestureEvent.preventPropagation (); 389 scrollStateData->should_propagate = !gestureEvent.preventPropagation ();
392 scrollStateData->is_in_inertial_phase = gestureEvent.inertialPhase() == ScrollInertialPhaseMomentum; 390 scrollStateData->is_in_inertial_phase = gestureEvent.inertialPhase() == ScrollInertialPhaseMomentum;
393 scrollStateData->from_user_input = true; 391 scrollStateData->from_user_input = true;
394 scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsume dForScrollSequence; 392 scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsume dForScrollSequence;
395 ScrollState* scrollState = ScrollState::create(std::move(scrollState Data)); 393 ScrollState* scrollState = ScrollState::create(std::move(scrollState Data));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 return WebInputEventResult::NotHandled; 438 return WebInputEventResult::NotHandled;
441 } 439 }
442 440
443 WebInputEventResult ScrollManager::handleGestureScrollEnd(const PlatformGestureE vent& gestureEvent) 441 WebInputEventResult ScrollManager::handleGestureScrollEnd(const PlatformGestureE vent& gestureEvent)
444 { 442 {
445 Node* node = m_scrollGestureHandlingNode; 443 Node* node = m_scrollGestureHandlingNode;
446 444
447 if (node) { 445 if (node) {
448 passScrollGestureEventToWidget(gestureEvent, node->layoutObject()); 446 passScrollGestureEventToWidget(gestureEvent, node->layoutObject());
449 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) { 447 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) {
450 std::unique_ptr<ScrollStateData> scrollStateData = wrapUnique(new Sc rollStateData()); 448 OwnPtr<ScrollStateData> scrollStateData = adoptPtr(new ScrollStateDa ta());
451 scrollStateData->is_ending = true; 449 scrollStateData->is_ending = true;
452 scrollStateData->is_in_inertial_phase = gestureEvent.inertialPhase() == ScrollInertialPhaseMomentum; 450 scrollStateData->is_in_inertial_phase = gestureEvent.inertialPhase() == ScrollInertialPhaseMomentum;
453 scrollStateData->from_user_input = true; 451 scrollStateData->from_user_input = true;
454 scrollStateData->is_direct_manipulation = true; 452 scrollStateData->is_direct_manipulation = true;
455 scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsume dForScrollSequence; 453 scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsume dForScrollSequence;
456 ScrollState* scrollState = ScrollState::create(std::move(scrollState Data)); 454 ScrollState* scrollState = ScrollState::create(std::move(scrollState Data));
457 customizedScroll(*node, *scrollState); 455 customizedScroll(*node, *scrollState);
458 } 456 }
459 } 457 }
460 458
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 DEFINE_TRACE(ScrollManager) 646 DEFINE_TRACE(ScrollManager)
649 { 647 {
650 visitor->trace(m_frame); 648 visitor->trace(m_frame);
651 visitor->trace(m_scrollGestureHandlingNode); 649 visitor->trace(m_scrollGestureHandlingNode);
652 visitor->trace(m_previousGestureScrolledNode); 650 visitor->trace(m_previousGestureScrolledNode);
653 visitor->trace(m_scrollbarHandlingScrollGesture); 651 visitor->trace(m_scrollbarHandlingScrollGesture);
654 visitor->trace(m_resizeScrollableArea); 652 visitor->trace(m_resizeScrollableArea);
655 } 653 }
656 654
657 } // namespace blink 655 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/input/EventHandlerTest.cpp ('k') | third_party/WebKit/Source/core/input/TouchEventManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698