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

Side by Side Diff: Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 22419002: Set up clip and scroll parents on the blink side. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 scrollbarGraphicsLayer->setContentsOpaque(isMainFrame && isOpaqueScr ollbar); 281 scrollbarGraphicsLayer->setContentsOpaque(isMainFrame && isOpaqueScr ollbar);
282 scrollbarLayer->layer()->setOpaque(scrollbarGraphicsLayer->contentsOpaqu e()); 282 scrollbarLayer->layer()->setOpaque(scrollbarGraphicsLayer->contentsOpaqu e());
283 283
284 setupScrollbarLayer(scrollbarGraphicsLayer, scrollbarLayer, scrollingWeb LayerForScrollableArea(scrollableArea)); 284 setupScrollbarLayer(scrollbarGraphicsLayer, scrollbarLayer, scrollingWeb LayerForScrollableArea(scrollableArea));
285 } else 285 } else
286 removeWebScrollbarLayer(scrollableArea, orientation); 286 removeWebScrollbarLayer(scrollableArea, orientation);
287 } 287 }
288 288
289 bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc rollableArea) 289 bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc rollableArea)
290 { 290 {
291 TRACE_EVENT_INSTANT2("comp-scroll", "ScrollingCoordinator::scrollableAreaScr ollLayerDidChange",
292 "width", scrollableArea->scrollableAreaBoundingBox().width(),
293 "height", scrollableArea->scrollableAreaBoundingBox().height());
294
291 GraphicsLayer* scrollLayer = scrollLayerForScrollableArea(scrollableArea); 295 GraphicsLayer* scrollLayer = scrollLayerForScrollableArea(scrollableArea);
292 if (scrollLayer) { 296 if (scrollLayer) {
293 bool isMainFrame = isForMainFrame(scrollableArea); 297 bool isMainFrame = isForMainFrame(scrollableArea);
294 scrollLayer->setScrollableArea(scrollableArea, isMainFrame); 298 scrollLayer->setScrollableArea(scrollableArea, isMainFrame);
295 } 299 }
296 300
297 WebLayer* webLayer = scrollingWebLayerForScrollableArea(scrollableArea); 301 WebLayer* webLayer = scrollingWebLayerForScrollableArea(scrollableArea);
298 if (webLayer) { 302 if (webLayer) {
299 webLayer->setScrollable(true); 303 webLayer->setScrollable(true);
300 webLayer->setScrollPosition(IntPoint(scrollableArea->scrollPosition() - scrollableArea->minimumScrollPosition())); 304 webLayer->setScrollPosition(IntPoint(scrollableArea->scrollPosition() - scrollableArea->minimumScrollPosition()));
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 if (m_page->mainFrame()->view()->needsLayout()) 490 if (m_page->mainFrame()->view()->needsLayout())
487 return; 491 return;
488 492
489 TRACE_EVENT0("input", "ScrollingCoordinator::touchEventTargetRectsDidChange" ); 493 TRACE_EVENT0("input", "ScrollingCoordinator::touchEventTargetRectsDidChange" );
490 494
491 LayerHitTestRects touchEventTargetRects; 495 LayerHitTestRects touchEventTargetRects;
492 computeTouchEventTargetRects(touchEventTargetRects); 496 computeTouchEventTargetRects(touchEventTargetRects);
493 setTouchEventTargetRects(touchEventTargetRects); 497 setTouchEventTargetRects(touchEventTargetRects);
494 } 498 }
495 499
496 void ScrollingCoordinator::willDestroyRenderLayer(RenderLayer* layer) 500 void ScrollingCoordinator::updateScrollParentForLayer(RenderLayer* child, Render Layer* parent)
497 { 501 {
498 m_layersWithTouchRects.remove(layer); 502 if (!child || !child->backing())
enne (OOO) 2013/08/22 20:54:30 Shouldn't these always be true?
503 return;
504
505 WebLayer* childWebLayer = scrollingWebLayerForGraphicsLayer(child->layerForS crollChild());
506 if (!childWebLayer)
507 return;
508
509 WebLayer* scrollParentWebLayer = 0;
510 if (parent && parent->backing())
511 scrollParentWebLayer = scrollingWebLayerForGraphicsLayer(parent->backing ()->parentForSublayers());
512
513 TRACE_EVENT_INSTANT2("comp-scroll2", "ScrollingCoordinator::updateScrollPare ntForLayer",
514 "childId", childWebLayer->id(),
515 "ancestorId", scrollParentWebLayer ? scrollParentWebLayer->id() : -1);
516
517 childWebLayer->setScrollParent(scrollParentWebLayer);
518 }
519
520 void ScrollingCoordinator::updateClipParentForLayer(RenderLayer* child, RenderLa yer* parent)
521 {
522 if (!child || !child->backing())
523 return;
524
525 WebLayer* childWebLayer = scrollingWebLayerForGraphicsLayer(child->backing() ->graphicsLayer());
526 if (!childWebLayer)
527 return;
528
529 WebLayer* clipParentWebLayer = 0;
530 if (parent && parent->backing())
531 clipParentWebLayer = scrollingWebLayerForGraphicsLayer(parent->backing() ->parentForSublayers());
532
533 TRACE_EVENT_INSTANT2("comp-scroll", "ScrollingCoordinator::updateClipParentF orLayer",
534 "childId", childWebLayer->id(),
535 "ancestorId", clipParentWebLayer ? clipParentWebLayer->id() : -1);
536
537 childWebLayer->setClipParent(clipParentWebLayer);
499 } 538 }
500 539
501 void ScrollingCoordinator::setWheelEventHandlerCount(unsigned count) 540 void ScrollingCoordinator::setWheelEventHandlerCount(unsigned count)
502 { 541 {
503 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) 542 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view()))
504 scrollLayer->setHaveWheelEventHandlers(count > 0); 543 scrollLayer->setHaveWheelEventHandlers(count > 0);
505 } 544 }
506 545
507 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView * frameView) 546 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView * frameView)
508 { 547 {
509 UNUSED_PARAM(frameView); 548 UNUSED_PARAM(frameView);
510 setWheelEventHandlerCount(computeCurrentWheelEventHandlerCount()); 549 setWheelEventHandlerCount(computeCurrentWheelEventHandlerCount());
511 } 550 }
512 551
513 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh readScrollingReasons reasons) 552 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh readScrollingReasons reasons)
514 { 553 {
515 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) 554 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) {
555 TRACE_EVENT_INSTANT2("impl-scroll", "ScrollingCoordinator::setShouldUpda teScrollLayerPositionOnMainThread",
556 "layerId", scrollLayer->id(),
557 "reasons", reasons);
516 scrollLayer->setShouldScrollOnMainThread(reasons); 558 scrollLayer->setShouldScrollOnMainThread(reasons);
559 }
517 } 560 }
518 561
519 void ScrollingCoordinator::pageDestroyed() 562 void ScrollingCoordinator::pageDestroyed()
520 { 563 {
521 ASSERT(m_page); 564 ASSERT(m_page);
522 m_page = 0; 565 m_page = 0;
523 } 566 }
524 567
525 bool ScrollingCoordinator::coordinatesScrollingForFrameView(FrameView* frameView ) const 568 bool ScrollingCoordinator::coordinatesScrollingForFrameView(FrameView* frameView ) const
526 { 569 {
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 stringBuilder.resize(stringBuilder.length() - 2); 854 stringBuilder.resize(stringBuilder.length() - 2);
812 return stringBuilder.toString(); 855 return stringBuilder.toString();
813 } 856 }
814 857
815 String ScrollingCoordinator::mainThreadScrollingReasonsAsText() const 858 String ScrollingCoordinator::mainThreadScrollingReasonsAsText() const
816 { 859 {
817 return mainThreadScrollingReasonsAsText(mainThreadScrollingReasons()); 860 return mainThreadScrollingReasonsAsText(mainThreadScrollingReasons());
818 } 861 }
819 862
820 } // namespace WebCore 863 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698