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

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: 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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 if (m_page->mainFrame()->view()->needsLayout()) 402 if (m_page->mainFrame()->view()->needsLayout())
399 return; 403 return;
400 404
401 TRACE_EVENT0("input", "ScrollingCoordinator::touchEventTargetRectsDidChange" ); 405 TRACE_EVENT0("input", "ScrollingCoordinator::touchEventTargetRectsDidChange" );
402 406
403 LayerHitTestRects touchEventTargetRects; 407 LayerHitTestRects touchEventTargetRects;
404 computeTouchEventTargetRects(touchEventTargetRects); 408 computeTouchEventTargetRects(touchEventTargetRects);
405 setTouchEventTargetRects(touchEventTargetRects); 409 setTouchEventTargetRects(touchEventTargetRects);
406 } 410 }
407 411
412 void ScrollingCoordinator::updateScrollParentForLayer(RenderLayer* child, Render Layer* parent)
413 {
414 if (!child || !child->backing())
415 return;
416
417 WebLayer* childWebLayer = scrollingWebLayerForGraphicsLayer(child->layerForS crollChild());
418 if (!childWebLayer)
419 return;
420
421 WebLayer* scrollParentWebLayer = 0;
422 if (parent && parent->backing())
423 scrollParentWebLayer = scrollingWebLayerForGraphicsLayer(parent->backing ()->parentForSublayers());
424
425 TRACE_EVENT_INSTANT2("comp-scroll2", "ScrollingCoordinator::updateScrollPare ntForLayer",
enne (OOO) 2013/08/22 20:54:30 Would this trace event be better on the cc side wh
426 "childId", childWebLayer->id(),
427 "ancestorId", scrollParentWebLayer ? scrollParentWebLayer->id() : -1);
enne (OOO) 2013/08/22 20:54:30 Ids start at 1, so you could say 0.
428
429 childWebLayer->setScrollParent(scrollParentWebLayer);
430 }
431
432 void ScrollingCoordinator::updateClipParentForLayer(RenderLayer* child, RenderLa yer* parent)
433 {
434 if (!child || !child->backing())
435 return;
436
437 WebLayer* childWebLayer = scrollingWebLayerForGraphicsLayer(child->backing() ->graphicsLayer());
438 if (!childWebLayer)
439 return;
440
441 WebLayer* clipParentWebLayer = 0;
442 if (parent && parent->backing())
443 clipParentWebLayer = scrollingWebLayerForGraphicsLayer(parent->backing() ->parentForSublayers());
444
445 TRACE_EVENT_INSTANT2("comp-scroll", "ScrollingCoordinator::updateClipParentF orLayer",
446 "childId", childWebLayer->id(),
447 "ancestorId", clipParentWebLayer ? clipParentWebLayer->id() : -1);
448
449 childWebLayer->setClipParent(clipParentWebLayer);
450 }
451
408 void ScrollingCoordinator::setWheelEventHandlerCount(unsigned count) 452 void ScrollingCoordinator::setWheelEventHandlerCount(unsigned count)
409 { 453 {
410 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) 454 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view()))
411 scrollLayer->setHaveWheelEventHandlers(count > 0); 455 scrollLayer->setHaveWheelEventHandlers(count > 0);
412 } 456 }
413 457
414 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView * frameView) 458 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView * frameView)
415 { 459 {
416 UNUSED_PARAM(frameView); 460 UNUSED_PARAM(frameView);
417 setWheelEventHandlerCount(computeCurrentWheelEventHandlerCount()); 461 setWheelEventHandlerCount(computeCurrentWheelEventHandlerCount());
418 } 462 }
419 463
420 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh readScrollingReasons reasons) 464 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh readScrollingReasons reasons)
421 { 465 {
422 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) 466 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF rame()->view())) {
467 TRACE_EVENT_INSTANT2("impl-scroll", "ScrollingCoordinator::setShouldUpda teScrollLayerPositionOnMainThread",
468 "layerId", scrollLayer->id(),
469 "reasons", reasons);
423 scrollLayer->setShouldScrollOnMainThread(reasons); 470 scrollLayer->setShouldScrollOnMainThread(reasons);
471 }
424 } 472 }
425 473
426 void ScrollingCoordinator::pageDestroyed() 474 void ScrollingCoordinator::pageDestroyed()
427 { 475 {
428 ASSERT(m_page); 476 ASSERT(m_page);
429 m_page = 0; 477 m_page = 0;
430 } 478 }
431 479
432 bool ScrollingCoordinator::coordinatesScrollingForFrameView(FrameView* frameView ) const 480 bool ScrollingCoordinator::coordinatesScrollingForFrameView(FrameView* frameView ) const
433 { 481 {
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 stringBuilder.resize(stringBuilder.length() - 2); 776 stringBuilder.resize(stringBuilder.length() - 2);
729 return stringBuilder.toString(); 777 return stringBuilder.toString();
730 } 778 }
731 779
732 String ScrollingCoordinator::mainThreadScrollingReasonsAsText() const 780 String ScrollingCoordinator::mainThreadScrollingReasonsAsText() const
733 { 781 {
734 return mainThreadScrollingReasonsAsText(mainThreadScrollingReasons()); 782 return mainThreadScrollingReasonsAsText(mainThreadScrollingReasons());
735 } 783 }
736 784
737 } // namespace WebCore 785 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.h ('k') | Source/core/platform/ScrollableArea.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698