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

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

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