| OLD | NEW |
| 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 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 GraphicsLayer* horizontalScrollbarLayer = horizontalScrollbarLayerForScr
ollableArea(scrollableArea); | 373 GraphicsLayer* horizontalScrollbarLayer = horizontalScrollbarLayerForScr
ollableArea(scrollableArea); |
| 374 if (horizontalScrollbarLayer) | 374 if (horizontalScrollbarLayer) |
| 375 setupScrollbarLayer(horizontalScrollbarLayer, scrollbarLayer, webLay
er, containerLayer); | 375 setupScrollbarLayer(horizontalScrollbarLayer, scrollbarLayer, webLay
er, containerLayer); |
| 376 } | 376 } |
| 377 if (WebScrollbarLayer* scrollbarLayer = getWebScrollbarLayer(scrollableArea,
VerticalScrollbar)) { | 377 if (WebScrollbarLayer* scrollbarLayer = getWebScrollbarLayer(scrollableArea,
VerticalScrollbar)) { |
| 378 GraphicsLayer* verticalScrollbarLayer = verticalScrollbarLayerForScrolla
bleArea(scrollableArea); | 378 GraphicsLayer* verticalScrollbarLayer = verticalScrollbarLayerForScrolla
bleArea(scrollableArea); |
| 379 if (verticalScrollbarLayer) | 379 if (verticalScrollbarLayer) |
| 380 setupScrollbarLayer(verticalScrollbarLayer, scrollbarLayer, webLayer
, containerLayer); | 380 setupScrollbarLayer(verticalScrollbarLayer, scrollbarLayer, webLayer
, containerLayer); |
| 381 } | 381 } |
| 382 | 382 |
| 383 scrollableArea->layerForScrollingDidChange(); |
| 383 return !!webLayer; | 384 return !!webLayer; |
| 384 } | 385 } |
| 385 | 386 |
| 386 // In order to do a DFS cross-frame walk of the RenderLayer tree, we need to kno
w which | 387 // In order to do a DFS cross-frame walk of the RenderLayer tree, we need to kno
w which |
| 387 // RenderLayers have child frames inside of them. This computes a mapping for th
e | 388 // RenderLayers have child frames inside of them. This computes a mapping for th
e |
| 388 // current frame which we can consult while walking the layers of that frame. | 389 // current frame which we can consult while walking the layers of that frame. |
| 389 // Whenever we descend into a new frame, a new map will be created. | 390 // Whenever we descend into a new frame, a new map will be created. |
| 390 typedef HashMap<const RenderLayer*, Vector<const Frame*> > LayerFrameMap; | 391 typedef HashMap<const RenderLayer*, Vector<const Frame*> > LayerFrameMap; |
| 391 static void makeLayerChildFrameMap(const Frame* currentFrame, LayerFrameMap* map
) | 392 static void makeLayerChildFrameMap(const Frame* currentFrame, LayerFrameMap* map
) |
| 392 { | 393 { |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 | 631 |
| 631 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView
*) | 632 void ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView(FrameView
*) |
| 632 { | 633 { |
| 633 setWheelEventHandlerCount(computeCurrentWheelEventHandlerCount()); | 634 setWheelEventHandlerCount(computeCurrentWheelEventHandlerCount()); |
| 634 } | 635 } |
| 635 | 636 |
| 636 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh
readScrollingReasons reasons) | 637 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh
readScrollingReasons reasons) |
| 637 { | 638 { |
| 638 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF
rame()->view())) { | 639 if (WebLayer* scrollLayer = scrollingWebLayerForScrollableArea(m_page->mainF
rame()->view())) { |
| 639 m_lastMainThreadScrollingReasons = reasons; | 640 m_lastMainThreadScrollingReasons = reasons; |
| 640 scrollLayer->setShouldScrollOnMainThread(reasons); | 641 bool shouldScrollOnMainThread = reasons; |
| 642 if (shouldScrollOnMainThread != scrollLayer->shouldScrollOnMainThread())
{ |
| 643 scrollLayer->setShouldScrollOnMainThread(reasons); |
| 644 m_page->mainFrame()->view()->requiresMainThreadScrollingDidChange(); |
| 645 } |
| 641 } | 646 } |
| 642 } | 647 } |
| 643 | 648 |
| 644 void ScrollingCoordinator::pageDestroyed() | 649 void ScrollingCoordinator::pageDestroyed() |
| 645 { | 650 { |
| 646 ASSERT(m_page); | 651 ASSERT(m_page); |
| 647 m_page = 0; | 652 m_page = 0; |
| 648 } | 653 } |
| 649 | 654 |
| 650 bool ScrollingCoordinator::coordinatesScrollingForFrameView(FrameView* frameView
) const | 655 bool ScrollingCoordinator::coordinatesScrollingForFrameView(FrameView* frameView
) const |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 bool frameIsScrollable = frameView && frameView->isScrollable(); | 973 bool frameIsScrollable = frameView && frameView->isScrollable(); |
| 969 if (frameIsScrollable != m_wasFrameScrollable) | 974 if (frameIsScrollable != m_wasFrameScrollable) |
| 970 return true; | 975 return true; |
| 971 | 976 |
| 972 if (WebLayer* scrollLayer = frameView ? scrollingWebLayerForScrollableArea(f
rameView) : 0) | 977 if (WebLayer* scrollLayer = frameView ? scrollingWebLayerForScrollableArea(f
rameView) : 0) |
| 973 return blink::WebSize(frameView->contentsSize()) != scrollLayer->bounds(
); | 978 return blink::WebSize(frameView->contentsSize()) != scrollLayer->bounds(
); |
| 974 return false; | 979 return false; |
| 975 } | 980 } |
| 976 | 981 |
| 977 } // namespace WebCore | 982 } // namespace WebCore |
| OLD | NEW |