Changeset 242359 in webkit
- Timestamp:
- Mar 4, 2019, 8:57:38 AM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 26 edited
- 2 copied
- 1 moved
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/SourcesCocoa.txt (modified) (1 diff)
-
WebCore/WebCore.xcodeproj/project.pbxproj (modified) (5 diffs)
-
WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (modified) (6 diffs)
-
WebCore/page/scrolling/ScrollingCoordinator.h (modified) (1 diff)
-
WebCore/page/scrolling/ScrollingStateFrameScrollingNode.cpp (modified) (5 diffs)
-
WebCore/page/scrolling/ScrollingStateFrameScrollingNode.h (modified) (4 diffs)
-
WebCore/page/scrolling/ScrollingStateScrollingNode.cpp (modified) (4 diffs)
-
WebCore/page/scrolling/ScrollingStateScrollingNode.h (modified) (5 diffs)
-
WebCore/page/scrolling/ScrollingTree.cpp (modified) (2 diffs)
-
WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm (moved) (moved from trunk/Source/WebCore/page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm ) (3 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h (modified) (3 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm (modified) (6 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h (modified) (2 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm (modified) (3 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h (modified) (4 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm (modified) (4 diffs)
-
WebCore/platform/ScrollbarThemeComposite.h (modified) (2 diffs)
-
WebCore/rendering/RenderLayerCompositor.cpp (modified) (4 diffs)
-
WebCore/rendering/RenderLayerCompositor.h (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp (modified) (4 diffs)
-
WebKit/SourcesCocoa.txt (modified) (1 diff)
-
WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp (modified) (1 diff)
-
WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp (modified) (2 diffs)
-
WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp (modified) (3 diffs)
-
WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp (copied) (copied from trunk/Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp ) (3 diffs)
-
WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.h (copied) (copied from trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h ) (1 diff)
-
WebKit/WebKit.xcodeproj/project.pbxproj (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r242357 r242359 1 2019-03-04 Simon Fraser <simon.fraser@apple.com> 2 3 Share more code between overflow and frame scrolling nodes, fixing overflow scrollbar display 4 https://bugs.webkit.org/show_bug.cgi?id=195258 5 6 Reviewed by Antti Koivisto. 7 8 This patch moves management of scrollbar layers and scrollbar painters ("NSScrollerImp") down to 9 ScrollingStateScrollingNode to be shared between frame and overflow nodes, allowing for 10 scrolling thread updates of overflow scrollbars. It also moves some scrolling tree-side code 11 to ScrollingTreeScrollingNodeDelegateMac to be shared between the "tree" nodes for overflow and frames. 12 13 Layers for scrollbars are given to scrolling state nodes via setNodeLayers() now, and 14 RenderLayerCompositor::updateScrollingNodeLayers() is added to provide a bottleneck to call that. 15 At some point AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() should be relieved 16 of the responsibility of pushing scrollbar layers (but the scrolling state tree needs to hold 17 references to GraphicsLayers before that becomes safe). 18 19 The actual fix that allows overflow scrollbars to show is the change in 20 AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() that calls scrollableArea.*ScrollbarLayerDidChange() 21 for all ScrollableAreas. This ensures that the CALayer is pushed onto the NSScrollerImp. 22 23 * SourcesCocoa.txt: 24 * WebCore.xcodeproj/project.pbxproj: 25 * page/scrolling/AsyncScrollingCoordinator.cpp: 26 (WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange): 27 (WebCore::AsyncScrollingCoordinator::setNodeLayers): 28 (WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState): 29 (WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry): 30 * page/scrolling/ScrollingCoordinator.h: 31 * page/scrolling/ScrollingStateFrameScrollingNode.cpp: 32 (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode): 33 (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged): 34 (WebCore::ScrollingStateFrameScrollingNode::setVerticalScrollbarLayer): Deleted. 35 (WebCore::ScrollingStateFrameScrollingNode::setHorizontalScrollbarLayer): Deleted. 36 (WebCore::ScrollingStateFrameScrollingNode::setScrollerImpsFromScrollbars): Deleted. 37 * page/scrolling/ScrollingStateFrameScrollingNode.h: 38 * page/scrolling/ScrollingStateScrollingNode.cpp: 39 (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode): 40 (WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged): 41 (WebCore::ScrollingStateScrollingNode::setHorizontalScrollbarLayer): 42 (WebCore::ScrollingStateScrollingNode::setVerticalScrollbarLayer): 43 (WebCore::ScrollingStateScrollingNode::setScrollerImpsFromScrollbars): 44 * page/scrolling/ScrollingStateScrollingNode.h: 45 (WebCore::ScrollingStateScrollingNode::horizontalScrollbarLayer const): 46 (WebCore::ScrollingStateScrollingNode::verticalScrollbarLayer const): 47 (WebCore::ScrollingStateScrollingNode::verticalScrollerImp const): 48 (WebCore::ScrollingStateScrollingNode::horizontalScrollerImp const): 49 * page/scrolling/ScrollingTree.cpp: 50 (WebCore::ScrollingTree::setOrClearLatchedNode): 51 (WebCore::ScrollingTree::handleWheelEvent): 52 * page/scrolling/mac/ScrollingStateScrollingNodeMac.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm. 53 (WebCore::ScrollingStateScrollingNode::setScrollerImpsFromScrollbars): 54 * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: 55 * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: 56 (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren): 57 (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent): 58 (WebCore::ScrollingTreeFrameScrollingNodeMac::repositionRelatedLayers): 59 (WebCore::ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac): Deleted. 60 (WebCore::ScrollingTreeFrameScrollingNodeMac::releaseReferencesToScrollerImpsOnTheMainThread): Deleted. 61 * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h: 62 * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: 63 (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren): 64 (WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent): 65 (WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionRelatedLayers): 66 * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h: 67 * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: 68 (WebCore::ScrollingTreeScrollingNodeDelegateMac::~ScrollingTreeScrollingNodeDelegateMac): 69 (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode): 70 (WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent): 71 (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateScrollbarPainters): 72 (WebCore::ScrollingTreeScrollingNodeDelegateMac::releaseReferencesToScrollerImpsOnTheMainThread): 73 * platform/ScrollbarThemeComposite.h: 74 * rendering/RenderLayerCompositor.cpp: 75 (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer): 76 (WebCore::RenderLayerCompositor::updateScrollingNodeLayers): 77 (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole): 78 * rendering/RenderLayerCompositor.h: 79 1 80 2019-03-04 Jer Noble <jer.noble@apple.com> 2 81 -
trunk/Source/WebCore/SourcesCocoa.txt
r242190 r242359 153 153 page/scrolling/mac/ScrollingCoordinatorMac.mm 154 154 page/scrolling/mac/ScrollingMomentumCalculatorMac.mm 155 page/scrolling/mac/ScrollingState FrameScrollingNodeMac.mm155 page/scrolling/mac/ScrollingStateScrollingNodeMac.mm 156 156 page/scrolling/mac/ScrollingThreadMac.mm 157 157 page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r242317 r242359 355 355 0F6383DE18615B29003E5DB5 /* ThreadedScrollingTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6383DC18615B29003E5DB5 /* ThreadedScrollingTree.h */; settings = {ATTRIBUTES = (Private, ); }; }; 356 356 0F6A12BE1A00923700C6DE72 /* DebugPageOverlays.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */; settings = {ATTRIBUTES = (Private, ); }; }; 357 0F73B769222B3A0C00805316 /* ScrollingTreeOverflowScrollingNodeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC0516A219B5EBE0031C39E /* ScrollingTreeOverflowScrollingNodeMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; 357 358 0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 072847E216EBC5B00043CFA4 /* PlatformTextTrack.h */; settings = {ATTRIBUTES = (Private, ); }; }; 358 359 0F850FE31ED7C18300FB77A7 /* PerformanceLoggingClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F850FE21ED7C18300FB77A7 /* PerformanceLoggingClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 5786 5787 0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugPageOverlays.h; sourceTree = "<group>"; }; 5787 5788 0F70495D211B524200369968 /* ActivityState.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ActivityState.cpp; sourceTree = "<group>"; }; 5789 0F73B765222B327F00805316 /* ScrollingStateScrollingNodeMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingStateScrollingNodeMac.mm; sourceTree = "<group>"; }; 5788 5790 0F7DF1471E2BF1A60095951B /* WebCoreJSClientData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreJSClientData.cpp; sourceTree = "<group>"; }; 5789 5791 0F850FE21ED7C18300FB77A7 /* PerformanceLoggingClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceLoggingClient.h; sourceTree = "<group>"; }; … … 5805 5807 0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayerUpdater.cpp; sourceTree = "<group>"; }; 5806 5808 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayerUpdater.h; sourceTree = "<group>"; }; 5807 0FA88EBC16A8D1BD00F99984 /* ScrollingStateFrameScrollingNodeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingStateFrameScrollingNodeMac.mm; sourceTree = "<group>"; };5808 5809 0FB6252C18DE1B1500A07C05 /* GeometryUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeometryUtilities.cpp; sourceTree = "<group>"; }; 5809 5810 0FB6252D18DE1B1500A07C05 /* GeometryUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeometryUtilities.h; sourceTree = "<group>"; }; … … 16986 16987 517DEEE71DE94B0800B91644 /* ScrollingMomentumCalculatorMac.h */, 16987 16988 517DEEE31DE94ADC00B91644 /* ScrollingMomentumCalculatorMac.mm */, 16988 0F A88EBC16A8D1BD00F99984 /* ScrollingStateFrameScrollingNodeMac.mm */,16989 0F73B765222B327F00805316 /* ScrollingStateScrollingNodeMac.mm */, 16989 16990 1AF62F2314DAFE910041556C /* ScrollingThreadMac.mm */, 16990 16991 93C4A4131629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h */, … … 31504 31505 1AAADDE414DC8C8F00AF64B3 /* ScrollingTreeNode.h in Headers */, 31505 31506 0FEA3E80191B3169000F1B55 /* ScrollingTreeOverflowScrollingNode.h in Headers */, 31507 0F73B769222B3A0C00805316 /* ScrollingTreeOverflowScrollingNodeMac.h in Headers */, 31506 31508 9391A99D1629D70000297330 /* ScrollingTreeScrollingNode.h in Headers */, 31507 31509 A6D5A99D1629D70000297330 /* ScrollingTreeScrollingNodeDelegate.h in Headers */, -
trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp
r242333 r242359 457 457 458 458 auto* node = m_scrollingStateTree->stateNodeForID(scrollableArea.scrollingNodeID()); 459 if (is<ScrollingState FrameScrollingNode>(node)) {460 auto& scrollingNode = downcast<ScrollingState FrameScrollingNode>(*node);459 if (is<ScrollingStateScrollingNode>(node)) { 460 auto& scrollingNode = downcast<ScrollingStateScrollingNode>(*node); 461 461 if (orientation == VerticalScrollbar) 462 462 scrollingNode.setVerticalScrollbarLayer(scrollableArea.layerForVerticalScrollbar()); … … 465 465 } 466 466 467 if (&scrollableArea == m_page->mainFrame().view()) { 468 if (orientation == VerticalScrollbar) 469 scrollableArea.verticalScrollbarLayerDidChange(); 470 else 471 scrollableArea.horizontalScrollbarLayerDidChange(); 472 } 467 if (orientation == VerticalScrollbar) 468 scrollableArea.verticalScrollbarLayerDidChange(); 469 else 470 scrollableArea.horizontalScrollbarLayerDidChange(); 473 471 } 474 472 … … 568 566 scrollingNode.setScrollContainerLayer(nodeLayers.scrollContainerLayer); 569 567 scrollingNode.setScrolledContentsLayer(nodeLayers.scrolledContentsLayer); 568 scrollingNode.setHorizontalScrollbarLayer(nodeLayers.horizontalScrollbarLayer); 569 scrollingNode.setVerticalScrollbarLayer(nodeLayers.verticalScrollbarLayer); 570 570 571 571 if (is<ScrollingStateFrameScrollingNode>(node)) { … … 606 606 auto& frameScrollingNode = downcast<ScrollingStateFrameScrollingNode>(*stateNode); 607 607 608 auto* verticalScrollbar = frameView.verticalScrollbar();609 auto* horizontalScrollbar = frameView.horizontalScrollbar();610 frameScrollingNode.setScrollerImpsFromScrollbars(verticalScrollbar, horizontalScrollbar);611 612 608 frameScrollingNode.setFrameScaleFactor(frameView.frame().frameScaleFactor()); 613 609 frameScrollingNode.setHeaderHeight(frameView.headerHeight()); … … 632 628 633 629 auto& scrollingNode = downcast<ScrollingStateScrollingNode>(*stateNode); 630 631 auto* verticalScrollbar = scrollableArea.verticalScrollbar(); 632 auto* horizontalScrollbar = scrollableArea.horizontalScrollbar(); 633 scrollingNode.setScrollerImpsFromScrollbars(verticalScrollbar, horizontalScrollbar); 634 634 635 scrollingNode.setScrollOrigin(scrollableArea.scrollOrigin()); 635 636 scrollingNode.setScrollPosition(scrollableArea.scrollPosition()); … … 637 638 scrollingNode.setReachableContentsSize(scrollableArea.reachableTotalContentsSize()); 638 639 scrollingNode.setScrollableAreaSize(scrollableArea.visibleSize()); 639 640 auto* verticalScrollbar = scrollableArea.verticalScrollbar();641 auto* horizontalScrollbar = scrollableArea.horizontalScrollbar();642 640 643 641 ScrollableAreaParameters scrollParameters; -
trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.h
r242333 r242359 137 137 GraphicsLayer* insetClipLayer { nullptr }; 138 138 GraphicsLayer* rootContentsLayer { nullptr }; 139 GraphicsLayer* horizontalScrollbarLayer { nullptr }; 140 GraphicsLayer* verticalScrollbarLayer { nullptr }; 139 141 }; 140 142 virtual void setNodeLayers(ScrollingNodeID, const NodeLayers&) { } -
trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.cpp
r241934 r242359 47 47 ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode(const ScrollingStateFrameScrollingNode& stateNode, ScrollingStateTree& adoptiveTree) 48 48 : ScrollingStateScrollingNode(stateNode, adoptiveTree) 49 #if PLATFORM(MAC)50 , m_verticalScrollerImp(stateNode.verticalScrollerImp())51 , m_horizontalScrollerImp(stateNode.horizontalScrollerImp())52 #endif53 49 , m_eventTrackingRegions(stateNode.eventTrackingRegions()) 54 50 , m_requestedScrollPosition(stateNode.requestedScrollPosition()) … … 83 79 if (hasChangedProperty(FooterLayer)) 84 80 setFooterLayer(stateNode.footerLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation())); 85 86 if (hasChangedProperty(VerticalScrollbarLayer))87 setVerticalScrollbarLayer(stateNode.verticalScrollbarLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation()));88 89 if (hasChangedProperty(HorizontalScrollbarLayer))90 setHorizontalScrollbarLayer(stateNode.horizontalScrollbarLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation()));91 81 } 92 82 … … 112 102 setPropertyChangedBit(HeaderLayer); 113 103 setPropertyChangedBit(FooterLayer); 114 setPropertyChangedBit(VerticalScrollbarLayer);115 setPropertyChangedBit(HorizontalScrollbarLayer);116 setPropertyChangedBit(PainterForScrollbar);117 104 setPropertyChangedBit(BehaviorForFixedElements); 118 105 setPropertyChangedBit(TopContentInset); … … 271 258 } 272 259 273 void ScrollingStateFrameScrollingNode::setVerticalScrollbarLayer(const LayerRepresentation& layer)274 {275 if (layer == m_verticalScrollbarLayer)276 return;277 278 m_verticalScrollbarLayer = layer;279 setPropertyChanged(VerticalScrollbarLayer);280 }281 282 void ScrollingStateFrameScrollingNode::setHorizontalScrollbarLayer(const LayerRepresentation& layer)283 {284 if (layer == m_horizontalScrollbarLayer)285 return;286 287 m_horizontalScrollbarLayer = layer;288 setPropertyChanged(HorizontalScrollbarLayer);289 }290 291 260 void ScrollingStateFrameScrollingNode::setFixedElementsLayoutRelativeToFrame(bool fixedElementsLayoutRelativeToFrame) 292 261 { … … 306 275 setPropertyChanged(AsyncFrameOrOverflowScrollingEnabled); 307 276 } 308 309 #if !PLATFORM(MAC)310 void ScrollingStateFrameScrollingNode::setScrollerImpsFromScrollbars(Scrollbar*, Scrollbar*)311 {312 }313 #endif314 277 315 278 void ScrollingStateFrameScrollingNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const -
trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.h
r241934 r242359 59 59 HeaderLayer, 60 60 FooterLayer, 61 VerticalScrollbarLayer,62 HorizontalScrollbarLayer,63 PainterForScrollbar,64 61 BehaviorForFixedElements, 65 62 TopContentInset, … … 126 123 WEBCORE_EXPORT void setFooterLayer(const LayerRepresentation&); 127 124 128 const LayerRepresentation& verticalScrollbarLayer() const { return m_verticalScrollbarLayer; }129 WEBCORE_EXPORT void setVerticalScrollbarLayer(const LayerRepresentation&);130 131 const LayerRepresentation& horizontalScrollbarLayer() const { return m_horizontalScrollbarLayer; }132 WEBCORE_EXPORT void setHorizontalScrollbarLayer(const LayerRepresentation&);133 134 125 // These are more like Settings, and should probably move to the Scrolling{State}Tree itself. 135 126 bool fixedElementsLayoutRelativeToFrame() const { return m_fixedElementsLayoutRelativeToFrame; } … … 138 129 bool asyncFrameOrOverflowScrollingEnabled() const { return m_asyncFrameOrOverflowScrollingEnabled; } 139 130 void setAsyncFrameOrOverflowScrollingEnabled(bool); 140 141 #if PLATFORM(MAC)142 NSScrollerImp *verticalScrollerImp() const { return m_verticalScrollerImp.get(); }143 NSScrollerImp *horizontalScrollerImp() const { return m_horizontalScrollerImp.get(); }144 #endif145 void setScrollerImpsFromScrollbars(Scrollbar* verticalScrollbar, Scrollbar* horizontalScrollbar);146 131 147 132 void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override; … … 159 144 LayerRepresentation m_headerLayer; 160 145 LayerRepresentation m_footerLayer; 161 LayerRepresentation m_verticalScrollbarLayer;162 LayerRepresentation m_horizontalScrollbarLayer;163 164 #if PLATFORM(MAC)165 RetainPtr<NSScrollerImp> m_verticalScrollerImp;166 RetainPtr<NSScrollerImp> m_horizontalScrollerImp;167 #endif168 146 169 147 EventTrackingRegions m_eventTrackingRegions; -
trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp
r240861 r242359 51 51 , m_snapOffsetsInfo(stateNode.m_snapOffsetsInfo) 52 52 #endif 53 #if PLATFORM(MAC) 54 , m_verticalScrollerImp(stateNode.verticalScrollerImp()) 55 , m_horizontalScrollerImp(stateNode.horizontalScrollerImp()) 56 #endif 53 57 , m_scrollableAreaParameters(stateNode.scrollableAreaParameters()) 54 58 , m_requestedScrollPositionRepresentsProgrammaticScroll(stateNode.requestedScrollPositionRepresentsProgrammaticScroll()) … … 57 61 if (hasChangedProperty(ScrollContainerLayer)) 58 62 setScrollContainerLayer(stateNode.scrollContainerLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation())); 63 59 64 if (hasChangedProperty(ScrolledContentsLayer)) 60 65 setScrolledContentsLayer(stateNode.scrolledContentsLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation())); 66 67 if (hasChangedProperty(VerticalScrollbarLayer)) 68 setVerticalScrollbarLayer(stateNode.verticalScrollbarLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation())); 69 70 if (hasChangedProperty(HorizontalScrollbarLayer)) 71 setHorizontalScrollbarLayer(stateNode.horizontalScrollbarLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation())); 61 72 } 62 73 … … 84 95 setPropertyChangedBit(ScrollContainerLayer); 85 96 setPropertyChangedBit(ScrolledContentsLayer); 97 setPropertyChangedBit(HorizontalScrollbarLayer); 98 setPropertyChangedBit(VerticalScrollbarLayer); 99 setPropertyChangedBit(PainterForScrollbar); 86 100 87 101 ScrollingStateNode::setAllPropertiesChanged(); … … 240 254 setPropertyChanged(ScrolledContentsLayer); 241 255 } 256 257 void ScrollingStateScrollingNode::setHorizontalScrollbarLayer(const LayerRepresentation& layer) 258 { 259 if (layer == m_horizontalScrollbarLayer) 260 return; 261 262 m_horizontalScrollbarLayer = layer; 263 setPropertyChanged(HorizontalScrollbarLayer); 264 } 265 266 void ScrollingStateScrollingNode::setVerticalScrollbarLayer(const LayerRepresentation& layer) 267 { 268 if (layer == m_verticalScrollbarLayer) 269 return; 270 271 m_verticalScrollbarLayer = layer; 272 setPropertyChanged(VerticalScrollbarLayer); 273 } 274 275 #if !PLATFORM(MAC) 276 void ScrollingStateScrollingNode::setScrollerImpsFromScrollbars(Scrollbar*, Scrollbar*) 277 { 278 } 279 #endif 242 280 243 281 void ScrollingStateScrollingNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const -
trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h
r240861 r242359 33 33 #include "ScrollingStateNode.h" 34 34 35 #if PLATFORM(COCOA) 36 OBJC_CLASS NSScrollerImp; 37 #endif 38 35 39 namespace WebCore { 36 40 … … 59 63 ScrollContainerLayer, 60 64 ScrolledContentsLayer, 65 HorizontalScrollbarLayer, 66 VerticalScrollbarLayer, 67 PainterForScrollbar, 61 68 NumScrollingStateNodeBits // This must remain at the last position. 62 69 }; … … 117 124 WEBCORE_EXPORT void setScrolledContentsLayer(const LayerRepresentation&); 118 125 126 const LayerRepresentation& horizontalScrollbarLayer() const { return m_horizontalScrollbarLayer; } 127 WEBCORE_EXPORT void setHorizontalScrollbarLayer(const LayerRepresentation&); 128 129 const LayerRepresentation& verticalScrollbarLayer() const { return m_verticalScrollbarLayer; } 130 WEBCORE_EXPORT void setVerticalScrollbarLayer(const LayerRepresentation&); 131 132 #if PLATFORM(MAC) 133 NSScrollerImp *verticalScrollerImp() const { return m_verticalScrollerImp.get(); } 134 NSScrollerImp *horizontalScrollerImp() const { return m_horizontalScrollerImp.get(); } 135 #endif 136 void setScrollerImpsFromScrollbars(Scrollbar* verticalScrollbar, Scrollbar* horizontalScrollbar); 137 119 138 protected: 120 139 ScrollingStateScrollingNode(ScrollingStateTree&, ScrollingNodeType, ScrollingNodeID); … … 133 152 FloatPoint m_requestedScrollPosition; 134 153 IntPoint m_scrollOrigin; 154 135 155 #if ENABLE(CSS_SCROLL_SNAP) 136 156 ScrollSnapOffsetsInfo<float> m_snapOffsetsInfo; … … 138 158 unsigned m_currentVerticalSnapPointIndex { 0 }; 139 159 #endif 140 ScrollableAreaParameters m_scrollableAreaParameters; 160 141 161 LayerRepresentation m_scrollContainerLayer; 142 162 LayerRepresentation m_scrolledContentsLayer; 163 LayerRepresentation m_horizontalScrollbarLayer; 164 LayerRepresentation m_verticalScrollbarLayer; 165 166 #if PLATFORM(MAC) 167 RetainPtr<NSScrollerImp> m_verticalScrollerImp; 168 RetainPtr<NSScrollerImp> m_horizontalScrollerImp; 169 #endif 170 171 ScrollableAreaParameters m_scrollableAreaParameters; 172 143 173 bool m_requestedScrollPositionRepresentsProgrammaticScroll { false }; 144 174 bool m_expectsWheelEventTestTrigger { false }; -
trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp
r242313 r242359 81 81 void ScrollingTree::setOrClearLatchedNode(const PlatformWheelEvent& wheelEvent, ScrollingNodeID nodeID) 82 82 { 83 if (wheelEvent.shouldConsiderLatching()) 83 if (wheelEvent.shouldConsiderLatching()) { 84 LOG_WITH_STREAM(Scrolling, stream << "ScrollingTree " << this << " setOrClearLatchedNode: setting latched node " << nodeID); 84 85 setLatchedNode(nodeID); 85 else if (wheelEvent.shouldResetLatching()) 86 } else if (wheelEvent.shouldResetLatching()) { 87 LOG_WITH_STREAM(Scrolling, stream << "ScrollingTree " << this << " setOrClearLatchedNode: clearing latched node (was " << latchedNode() << ")"); 86 88 clearLatchedNode(); 89 } 87 90 } 88 91 … … 98 101 99 102 if (hasLatchedNode()) { 103 LOG_WITH_STREAM(Scrolling, stream << " has latched node " << latchedNode()); 100 104 auto* node = nodeForID(latchedNode()); 101 105 if (is<ScrollingTreeScrollingNode>(node)) -
trunk/Source/WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm
r242358 r242359 1 1 /* 2 * Copyright (C) 201 3Apple Inc. All rights reserved.2 * Copyright (C) 2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 25 25 26 26 #include "config.h" 27 #include "ScrollingState FrameScrollingNode.h"27 #include "ScrollingStateScrollingNode.h" 28 28 29 29 #if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC) … … 36 36 namespace WebCore { 37 37 38 void ScrollingState FrameScrollingNode::setScrollerImpsFromScrollbars(Scrollbar* verticalScrollbar, Scrollbar* horizontalScrollbar)38 void ScrollingStateScrollingNode::setScrollerImpsFromScrollbars(Scrollbar* verticalScrollbar, Scrollbar* horizontalScrollbar) 39 39 { 40 40 ScrollbarTheme& scrollbarTheme = ScrollbarTheme::theme(); -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h
r242132 r242359 46 46 ScrollingTreeFrameScrollingNodeMac(ScrollingTree&, ScrollingNodeType, ScrollingNodeID); 47 47 48 void releaseReferencesToScrollerImpsOnTheMainThread();49 50 48 // ScrollingTreeNode member functions. 51 49 void commitStateBeforeChildren(const ScrollingStateNode&) override; … … 69 67 void repositionScrollingLayers() override; 70 68 69 ScrollingTreeScrollingNodeDelegateMac m_delegate; 70 71 71 RetainPtr<CALayer> m_rootContentsLayer; 72 72 RetainPtr<CALayer> m_counterScrollingLayer; … … 75 75 RetainPtr<CALayer> m_headerLayer; 76 76 RetainPtr<CALayer> m_footerLayer; 77 RetainPtr<NSScrollerImp> m_verticalScrollerImp;78 RetainPtr<NSScrollerImp> m_horizontalScrollerImp;79 80 ScrollingTreeScrollingNodeDelegateMac m_delegate;81 77 82 78 bool m_lastScrollHadUnfilledPixels { false }; -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm
r242132 r242359 39 39 #import "TileController.h" 40 40 #import "WebLayer.h" 41 #import <pal/spi/mac/NSScrollerImpSPI.h>42 #import <wtf/text/TextStream.h>43 44 41 #import <QuartzCore/QuartzCore.h> 45 42 #import <wtf/Deque.h> 46 43 #import <wtf/text/CString.h> 44 #import <wtf/text/TextStream.h> 47 45 48 46 namespace WebCore { … … 59 57 } 60 58 61 ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac() 62 { 63 releaseReferencesToScrollerImpsOnTheMainThread(); 64 } 65 66 void ScrollingTreeFrameScrollingNodeMac::releaseReferencesToScrollerImpsOnTheMainThread() 67 { 68 if (m_verticalScrollerImp || m_horizontalScrollerImp) { 69 // FIXME: This is a workaround in place for the time being since NSScrollerImps cannot be deallocated 70 // on a non-main thread. rdar://problem/24535055 71 WTF::callOnMainThread([verticalScrollerImp = WTFMove(m_verticalScrollerImp), horizontalScrollerImp = WTFMove(m_horizontalScrollerImp)] { 72 }); 73 } 74 } 59 ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac() = default; 75 60 76 61 #if ENABLE(CSS_SCROLL_SNAP) … … 119 104 m_footerLayer = scrollingStateNode.footerLayer(); 120 105 121 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::PainterForScrollbar)) {122 releaseReferencesToScrollerImpsOnTheMainThread();123 m_verticalScrollerImp = scrollingStateNode.verticalScrollerImp();124 m_horizontalScrollerImp = scrollingStateNode.horizontalScrollerImp();125 }126 127 106 bool logScrollingMode = !m_hadFirstUpdate; 128 107 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::ReasonsForSynchronousScrolling)) … … 132 111 scrollingTree().reportSynchronousScrollingReasonsChanged(MonotonicTime::now(), synchronousScrollingReasons()); 133 112 113 m_delegate.updateFromStateNode(scrollingStateNode); 114 134 115 #if ENABLE(CSS_SCROLL_SNAP) 116 // FIXME: this should move to the delegate and be shared with overflow. 135 117 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalSnapOffsets) || scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalSnapOffsetRanges)) 136 118 m_delegate.updateScrollSnapPoints(ScrollEventAxis::Horizontal, convertToLayoutUnits(scrollingStateNode.horizontalSnapOffsets()), convertToLayoutUnits(scrollingStateNode.horizontalSnapOffsetRanges())); … … 170 152 if (!canHaveScrollbars()) 171 153 return ScrollingEventResult::DidNotHandleEvent; 172 173 if (wheelEvent.momentumPhase() == PlatformWheelEventPhaseBegan) {174 [m_verticalScrollerImp setUsePresentationValue:YES];175 [m_horizontalScrollerImp setUsePresentationValue:YES];176 }177 if (wheelEvent.momentumPhase() == PlatformWheelEventPhaseEnded || wheelEvent.momentumPhase() == PlatformWheelEventPhaseCancelled) {178 [m_verticalScrollerImp setUsePresentationValue:NO];179 [m_horizontalScrollerImp setUsePresentationValue:NO];180 }181 182 #if ENABLE(CSS_SCROLL_SNAP) || ENABLE(RUBBER_BANDING)183 if (expectsWheelEventTestTrigger()) {184 if (scrollingTree().shouldHandleWheelEventSynchronously(wheelEvent))185 m_delegate.removeTestDeferralForReason(reinterpret_cast<WheelEventTestTrigger::ScrollableAreaIdentifier>(scrollingNodeID()), WheelEventTestTrigger::ScrollingThreadSyncNeeded);186 else187 m_delegate.deferTestsForReason(reinterpret_cast<WheelEventTestTrigger::ScrollableAreaIdentifier>(scrollingNodeID()), WheelEventTestTrigger::ScrollingThreadSyncNeeded);188 }189 #endif190 154 191 155 m_delegate.handleWheelEvent(wheelEvent); … … 267 231 } 268 232 269 if (m_verticalScrollerImp || m_horizontalScrollerImp) { 270 [CATransaction begin]; 271 [CATransaction lock]; 272 273 if ([m_verticalScrollerImp shouldUsePresentationValue]) { 274 float presentationValue; 275 float overhangAmount; 276 ScrollableArea::computeScrollbarValueAndOverhang(scrollPosition.y(), totalContentsSize().height(), visibleContentRect.height(), presentationValue, overhangAmount); 277 [m_verticalScrollerImp setPresentationValue:presentationValue]; 278 } 279 280 if ([m_horizontalScrollerImp shouldUsePresentationValue]) { 281 float presentationValue; 282 float overhangAmount; 283 ScrollableArea::computeScrollbarValueAndOverhang(scrollPosition.x(), totalContentsSize().width(), visibleContentRect.width(), presentationValue, overhangAmount); 284 [m_horizontalScrollerImp setPresentationValue:presentationValue]; 285 } 286 287 [CATransaction unlock]; 288 [CATransaction commit]; 289 } 233 m_delegate.updateScrollbarPainters(); 290 234 } 291 235 -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h
r242132 r242359 35 35 namespace WebCore { 36 36 37 class ScrollingTreeOverflowScrollingNodeMac : public ScrollingTreeOverflowScrollingNode {37 class WEBCORE_EXPORT ScrollingTreeOverflowScrollingNodeMac : public ScrollingTreeOverflowScrollingNode { 38 38 public: 39 39 static Ref<ScrollingTreeOverflowScrollingNodeMac> create(ScrollingTree&, ScrollingNodeID); 40 40 virtual ~ScrollingTreeOverflowScrollingNodeMac(); 41 41 42 pr ivate:42 protected: 43 43 ScrollingTreeOverflowScrollingNodeMac(ScrollingTree&, ScrollingNodeID); 44 44 … … 49 49 50 50 void repositionScrollingLayers() override; 51 void repositionRelatedLayers() override; 51 52 52 53 ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) override; 53 54 55 private: 54 56 ScrollingTreeScrollingNodeDelegateMac m_delegate; 55 57 }; -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm
r242132 r242359 52 52 { 53 53 ScrollingTreeOverflowScrollingNode::commitStateBeforeChildren(stateNode); 54 const auto& scrollingStateNode = downcast<ScrollingStateOverflowScrollingNode>(stateNode); 55 UNUSED_PARAM(scrollingStateNode); 56 // FIXME: Scroll snap data. 54 m_delegate.updateFromStateNode(downcast<ScrollingStateOverflowScrollingNode>(stateNode)); 57 55 } 58 56 … … 68 66 if (!canHaveScrollbars()) 69 67 return ScrollingEventResult::DidNotHandleEvent; 70 71 72 #if ENABLE(CSS_SCROLL_SNAP) || ENABLE(RUBBER_BANDING)73 if (expectsWheelEventTestTrigger()) {74 if (scrollingTree().shouldHandleWheelEventSynchronously(wheelEvent))75 m_delegate.removeTestDeferralForReason(reinterpret_cast<WheelEventTestTrigger::ScrollableAreaIdentifier>(scrollingNodeID()), WheelEventTestTrigger::ScrollingThreadSyncNeeded);76 else77 m_delegate.deferTestsForReason(reinterpret_cast<WheelEventTestTrigger::ScrollableAreaIdentifier>(scrollingNodeID()), WheelEventTestTrigger::ScrollingThreadSyncNeeded);78 }79 #endif80 68 81 69 m_delegate.handleWheelEvent(wheelEvent); … … 102 90 } 103 91 92 void ScrollingTreeOverflowScrollingNodeMac::repositionRelatedLayers() 93 { 94 m_delegate.updateScrollbarPainters(); 95 } 96 104 97 } // namespace WebCore 105 98 -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h
r240963 r242359 32 32 #include "ScrollController.h" 33 33 34 OBJC_CLASS NSScrollerImp; 35 34 36 namespace WebCore { 35 37 … … 37 39 class FloatSize; 38 40 class IntPoint; 41 class ScrollingStateScrollingNode; 39 42 class ScrollingTreeScrollingNode; 40 43 class ScrollingTree; … … 54 57 bool isScrollSnapInProgress() const; 55 58 #endif 59 60 void updateFromStateNode(const ScrollingStateScrollingNode&); 61 void updateScrollbarPainters(); 56 62 57 63 void deferTestsForReason(WheelEventTestTrigger::ScrollableAreaIdentifier, WheelEventTestTrigger::DeferTestTriggerReason) const override; … … 84 90 #endif 85 91 92 void releaseReferencesToScrollerImpsOnTheMainThread(); 93 86 94 ScrollController m_scrollController; 95 96 RetainPtr<NSScrollerImp> m_verticalScrollerImp; 97 RetainPtr<NSScrollerImp> m_horizontalScrollerImp; 87 98 }; 88 99 -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
r242132 r242359 30 30 31 31 #import "Logging.h" 32 #import "ScrollingStateScrollingNode.h" 32 33 #import "ScrollingTree.h" 33 34 #import "ScrollingTreeFrameScrollingNode.h" 34 35 #import "ScrollingTreeScrollingNode.h" 36 #import <QuartzCore/QuartzCore.h> 37 #import <pal/spi/mac/NSScrollerImpSPI.h> 35 38 36 39 namespace WebCore { … … 42 45 } 43 46 44 ScrollingTreeScrollingNodeDelegateMac::~ScrollingTreeScrollingNodeDelegateMac() = default; 47 ScrollingTreeScrollingNodeDelegateMac::~ScrollingTreeScrollingNodeDelegateMac() 48 { 49 releaseReferencesToScrollerImpsOnTheMainThread(); 50 } 51 52 void ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode(const ScrollingStateScrollingNode& scrollingStateNode) 53 { 54 if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::PainterForScrollbar)) { 55 releaseReferencesToScrollerImpsOnTheMainThread(); 56 m_verticalScrollerImp = scrollingStateNode.verticalScrollerImp(); 57 m_horizontalScrollerImp = scrollingStateNode.horizontalScrollerImp(); 58 } 59 } 45 60 46 61 void ScrollingTreeScrollingNodeDelegateMac::updateScrollSnapPoints(ScrollEventAxis axis, const Vector<LayoutUnit>& snapOffsets, const Vector<ScrollOffsetRange<LayoutUnit>>& snapRanges) … … 66 81 bool ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent(const PlatformWheelEvent& wheelEvent) 67 82 { 83 if (wheelEvent.momentumPhase() == PlatformWheelEventPhaseBegan) { 84 [m_verticalScrollerImp setUsePresentationValue:YES]; 85 [m_horizontalScrollerImp setUsePresentationValue:YES]; 86 } 87 if (wheelEvent.momentumPhase() == PlatformWheelEventPhaseEnded || wheelEvent.momentumPhase() == PlatformWheelEventPhaseCancelled) { 88 [m_verticalScrollerImp setUsePresentationValue:NO]; 89 [m_horizontalScrollerImp setUsePresentationValue:NO]; 90 } 91 92 #if ENABLE(CSS_SCROLL_SNAP) || ENABLE(RUBBER_BANDING) 93 if (scrollingNode().expectsWheelEventTestTrigger()) { 94 if (scrollingTree().shouldHandleWheelEventSynchronously(wheelEvent)) 95 removeTestDeferralForReason(reinterpret_cast<WheelEventTestTrigger::ScrollableAreaIdentifier>(scrollingNode().scrollingNodeID()), WheelEventTestTrigger::ScrollingThreadSyncNeeded); 96 else 97 deferTestsForReason(reinterpret_cast<WheelEventTestTrigger::ScrollableAreaIdentifier>(scrollingNode().scrollingNodeID()), WheelEventTestTrigger::ScrollingThreadSyncNeeded); 98 } 99 #endif 100 68 101 return m_scrollController.handleWheelEvent(wheelEvent); 69 102 } … … 292 325 } 293 326 327 void ScrollingTreeScrollingNodeDelegateMac::updateScrollbarPainters() 328 { 329 if (m_verticalScrollerImp || m_horizontalScrollerImp) { 330 auto scrollPosition = currentScrollPosition(); 331 332 [CATransaction begin]; 333 [CATransaction lock]; 334 335 if ([m_verticalScrollerImp shouldUsePresentationValue]) { 336 float presentationValue; 337 float overhangAmount; 338 ScrollableArea::computeScrollbarValueAndOverhang(scrollPosition.y(), totalContentsSize().height(), scrollableAreaSize().height(), presentationValue, overhangAmount); 339 [m_verticalScrollerImp setPresentationValue:presentationValue]; 340 } 341 342 if ([m_horizontalScrollerImp shouldUsePresentationValue]) { 343 float presentationValue; 344 float overhangAmount; 345 ScrollableArea::computeScrollbarValueAndOverhang(scrollPosition.x(), totalContentsSize().width(), scrollableAreaSize().width(), presentationValue, overhangAmount); 346 [m_horizontalScrollerImp setPresentationValue:presentationValue]; 347 } 348 349 [CATransaction unlock]; 350 [CATransaction commit]; 351 } 352 } 353 354 void ScrollingTreeScrollingNodeDelegateMac::releaseReferencesToScrollerImpsOnTheMainThread() 355 { 356 if (m_verticalScrollerImp || m_horizontalScrollerImp) { 357 // FIXME: This is a workaround in place for the time being since NSScrollerImps cannot be deallocated 358 // on a non-main thread. rdar://problem/24535055 359 WTF::callOnMainThread([verticalScrollerImp = WTFMove(m_verticalScrollerImp), horizontalScrollerImp = WTFMove(m_horizontalScrollerImp)] { 360 }); 361 } 362 } 363 294 364 } // namespace WebCore 295 365 -
trunk/Source/WebCore/platform/ScrollbarThemeComposite.h
r233116 r242359 24 24 */ 25 25 26 #ifndef ScrollbarThemeComposite_h 27 #define ScrollbarThemeComposite_h 26 #pragma once 28 27 29 28 #include "ScrollbarTheme.h" … … 72 71 73 72 } 74 #endif -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r242333 r242359 545 545 546 546 auto* backing = layer.backing(); 547 if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::Scrolling)) 548 updateScrollingNodeLayers(nodeID, layer, *scrollingCoordinator); 549 547 550 if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::ViewportConstrained)) 548 551 scrollingCoordinator->setNodeLayers(nodeID, { backing->graphicsLayer() }); 549 550 if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::Scrolling)) {551 // FIXME: would be nice to not have to special-case the root.552 ScrollingCoordinator::NodeLayers nodeLayers;553 if (layer.isRenderViewLayer())554 nodeLayers = { nullptr, scrollContainerLayer(), scrolledContentsLayer(), fixedRootBackgroundLayer(), clipLayer(), rootContentsLayer() };555 else556 nodeLayers = { layer.backing()->graphicsLayer(), backing->scrollContainerLayer(), backing->scrolledContentsLayer() };557 558 scrollingCoordinator->setNodeLayers(nodeID, nodeLayers);559 }560 552 561 553 if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::FrameHosting)) … … 3970 3962 } 3971 3963 3964 void RenderLayerCompositor::updateScrollingNodeLayers(ScrollingNodeID nodeID, RenderLayer& layer, ScrollingCoordinator& scrollingCoordinator) 3965 { 3966 if (layer.isRenderViewLayer()) { 3967 FrameView& frameView = m_renderView.frameView(); 3968 scrollingCoordinator.setNodeLayers(nodeID, { nullptr, 3969 scrollContainerLayer(), scrolledContentsLayer(), 3970 fixedRootBackgroundLayer(), clipLayer(), rootContentsLayer(), 3971 frameView.layerForHorizontalScrollbar(), frameView.layerForVerticalScrollbar() }); 3972 } else { 3973 scrollingCoordinator.setNodeLayers(nodeID, { layer.backing()->graphicsLayer(), 3974 layer.backing()->scrollContainerLayer(), layer.backing()->scrolledContentsLayer(), 3975 nullptr, nullptr, nullptr, 3976 layer.layerForHorizontalScrollbar(), layer.layerForVerticalScrollbar() }); 3977 } 3978 } 3979 3972 3980 ScrollingNodeID RenderLayerCompositor::updateScrollingNodeForScrollingRole(RenderLayer& layer, ScrollingTreeState& treeState, OptionSet<ScrollingNodeChangeFlags> changes) 3973 3981 { … … 3988 3996 3989 3997 if (changes & ScrollingNodeChangeFlags::Layer) 3990 scrollingCoordinator->setNodeLayers(newNodeID, { nullptr, scrollContainerLayer(), scrolledContentsLayer(), fixedRootBackgroundLayer(), clipLayer(), rootContentsLayer() });3998 updateScrollingNodeLayers(newNodeID, layer, *scrollingCoordinator); 3991 3999 3992 4000 if (changes & ScrollingNodeChangeFlags::LayerGeometry) { … … 4003 4011 4004 4012 if (changes & ScrollingNodeChangeFlags::Layer) 4005 scrollingCoordinator->setNodeLayers(newNodeID, { layer.backing()->graphicsLayer(), layer.backing()->scrollContainerLayer(), layer.backing()->scrolledContentsLayer() });4013 updateScrollingNodeLayers(newNodeID, layer, *scrollingCoordinator); 4006 4014 4007 4015 if (changes & ScrollingNodeChangeFlags::LayerGeometry && treeState.parentNodeID) { -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r242333 r242359 493 493 ScrollingNodeID updateScrollingNodeForFrameHostingRole(RenderLayer&, struct ScrollingTreeState&, OptionSet<ScrollingNodeChangeFlags>); 494 494 495 void updateScrollingNodeLayers(ScrollingNodeID, RenderLayer&, ScrollingCoordinator&); 496 495 497 void detachScrollCoordinatedLayer(RenderLayer&, OptionSet<ScrollCoordinationRole>); 496 498 void detachScrollCoordinatedLayerWithRole(RenderLayer&, ScrollingCoordinator&, ScrollCoordinationRole); -
trunk/Source/WebKit/ChangeLog
r242356 r242359 1 2019-03-04 Simon Fraser <simon.fraser@apple.com> 2 3 Share more code between overflow and frame scrolling nodes, fixing overflow scrollbar display 4 https://bugs.webkit.org/show_bug.cgi?id=195258 5 6 Reviewed by Antti Koivisto. 7 8 This patch moves management of scrollbar layers and scrollbar painters ("NSScrollerImp") down to 9 ScrollingStateScrollingNode to be shared between frame and overflow nodes, allowing for 10 scrolling thread updates of overflow scrollbars. It also moves some scrolling tree-side code 11 to ScrollingTreeScrollingNodeDelegateMac to be shared between the "tree" nodes for overflow and frames. 12 13 Layers for scrollbars are given to scrolling state nodes via setNodeLayers() now, and 14 RenderLayerCompositor::updateScrollingNodeLayers() is added to provide a bottleneck to call that. 15 At some point AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() should be relieved 16 of the responsibility of pushing scrollbar layers (but the scrolling state tree needs to hold 17 references to GraphicsLayers before that becomes safe). 18 19 The actual fix that allows overflow scrollbars to show is the change in 20 AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() that calls scrollableArea.*ScrollbarLayerDidChange() 21 for all ScrollableAreas. This ensures that the CALayer is pushed onto the NSScrollerImp. 22 23 * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: 24 (ArgumentCoder<ScrollingStateScrollingNode>::encode): 25 (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode): 26 (ArgumentCoder<ScrollingStateScrollingNode>::decode): 27 (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode): 28 * SourcesCocoa.txt: 29 * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: 30 (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): 31 * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: 32 (WebKit::RemoteScrollingTree::createScrollingTreeNode): 33 * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: 34 (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::commitStateBeforeChildren): 35 (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::repositionRelatedLayers): 36 (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::handleMouseEvent): 37 * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: Copied from Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp. 38 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::create): 39 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac): 40 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::~ScrollingTreeOverflowScrollingNodeRemoteMac): 41 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::commitStateBeforeChildren): 42 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::repositionRelatedLayers): 43 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::handleWheelEvent): 44 (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::handleMouseEvent): 45 * WebKit.xcodeproj/project.pbxproj: 46 1 47 2019-03-04 Andy Estes <aestes@apple.com> 2 48 -
trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp
r241934 r242359 144 144 if (node.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer)) 145 145 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.scrollContainerLayer()); 146 146 147 if (node.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) 147 148 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.scrolledContentsLayer()); 149 150 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalScrollbarLayer)) 151 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.horizontalScrollbarLayer()); 152 153 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer)) 154 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.verticalScrollbarLayer()); 148 155 } 149 156 … … 173 180 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::ContentShadowLayer)) 174 181 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.contentShadowLayer()); 175 176 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer))177 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.verticalScrollbarLayer());178 179 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalScrollbarLayer))180 encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.horizontalScrollbarLayer());181 182 182 183 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::RootContentsLayer)) … … 257 258 } 258 259 260 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalScrollbarLayer)) { 261 GraphicsLayer::PlatformLayerID layerID; 262 if (!decoder.decode(layerID)) 263 return false; 264 node.setHorizontalScrollbarLayer(layerID); 265 } 266 267 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer)) { 268 GraphicsLayer::PlatformLayerID layerID; 269 if (!decoder.decode(layerID)) 270 return false; 271 node.setVerticalScrollbarLayer(layerID); 272 } 273 259 274 return true; 260 275 } … … 297 312 return false; 298 313 node.setContentShadowLayer(layerID); 299 }300 301 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer)) {302 GraphicsLayer::PlatformLayerID layerID;303 if (!decoder.decode(layerID))304 return false;305 node.setVerticalScrollbarLayer(layerID);306 }307 308 if (node.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalScrollbarLayer)) {309 GraphicsLayer::PlatformLayerID layerID;310 if (!decoder.decode(layerID))311 return false;312 node.setHorizontalScrollbarLayer(layerID);313 314 } 314 315 -
trunk/Source/WebKit/SourcesCocoa.txt
r242356 r242359 454 454 UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm 455 455 UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp 456 UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp 456 457 457 458 UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp
r242132 r242359 147 147 if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) 148 148 scrollingStateNode.setScrolledContentsLayer(layerTreeHost.layerForID(scrollingStateNode.scrolledContentsLayer())); 149 150 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer)) 151 scrollingStateNode.setVerticalScrollbarLayer(layerTreeHost.layerForID(scrollingStateNode.verticalScrollbarLayer())); 152 153 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::HorizontalScrollbarLayer)) 154 scrollingStateNode.setHorizontalScrollbarLayer(layerTreeHost.layerForID(scrollingStateNode.horizontalScrollbarLayer())); 149 155 break; 150 156 } -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp
r242132 r242359 40 40 #else 41 41 #include "ScrollingTreeFrameScrollingNodeRemoteMac.h" 42 #include "ScrollingTreeOverflowScrollingNodeRemoteMac.h" 42 43 #endif 43 44 … … 126 127 return ScrollingTreeOverflowScrollingNodeIOS::create(*this, nodeID); 127 128 #else 128 ASSERT_NOT_REACHED(); 129 break; 129 return ScrollingTreeOverflowScrollingNodeRemoteMac::create(*this, nodeID); 130 130 #endif 131 131 case ScrollingNodeType::Fixed: -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp
r242132 r242359 55 55 const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode); 56 56 57 // FIXME: Push to ScrollingTreeScrollingNodeDelegateMac? 57 58 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer)) 58 59 m_scrollerPair->verticalScroller().setHostLayer(scrollingStateNode.verticalScrollbarLayer()); … … 68 69 ScrollingTreeFrameScrollingNodeMac::repositionRelatedLayers(); 69 70 70 m_scrollerPair->updateValues(); 71 if (m_scrollerPair) 72 m_scrollerPair->updateValues(); 71 73 } 72 74 … … 80 82 bool ScrollingTreeFrameScrollingNodeRemoteMac::handleMouseEvent(const PlatformMouseEvent& mouseEvent) 81 83 { 84 if (!m_scrollerPair) 85 return false; 82 86 return m_scrollerPair->handleMouseEvent(mouseEvent); 83 87 } -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp
r242358 r242359 25 25 26 26 #include "config.h" 27 #include "ScrollingTree FrameScrollingNodeRemoteMac.h"27 #include "ScrollingTreeOverflowScrollingNodeRemoteMac.h" 28 28 29 29 #if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC) … … 35 35 using namespace WebCore; 36 36 37 ScrollingTreeFrameScrollingNodeRemoteMac::ScrollingTreeFrameScrollingNodeRemoteMac(ScrollingTree& tree, ScrollingNodeType nodeType, ScrollingNodeID nodeID) 38 : ScrollingTreeFrameScrollingNodeMac(tree, nodeType, nodeID) 37 Ref<ScrollingTreeOverflowScrollingNodeRemoteMac> ScrollingTreeOverflowScrollingNodeRemoteMac::create(ScrollingTree& tree, ScrollingNodeID nodeID) 38 { 39 return adoptRef(*new ScrollingTreeOverflowScrollingNodeRemoteMac(tree, nodeID)); 40 } 41 42 ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac(ScrollingTree& tree, ScrollingNodeID nodeID) 43 : ScrollingTreeOverflowScrollingNodeMac(tree, nodeID) 39 44 , m_scrollerPair(std::make_unique<ScrollerPairMac>(*this)) 40 45 { 41 46 } 42 47 43 ScrollingTree FrameScrollingNodeRemoteMac::~ScrollingTreeFrameScrollingNodeRemoteMac()48 ScrollingTreeOverflowScrollingNodeRemoteMac::~ScrollingTreeOverflowScrollingNodeRemoteMac() 44 49 { 45 50 } 46 51 47 Ref<ScrollingTreeFrameScrollingNodeRemoteMac> ScrollingTreeFrameScrollingNodeRemoteMac::create(ScrollingTree& tree, ScrollingNodeType nodeType, ScrollingNodeID nodeID)52 void ScrollingTreeOverflowScrollingNodeRemoteMac::commitStateBeforeChildren(const ScrollingStateNode& stateNode) 48 53 { 49 return adoptRef(*new ScrollingTreeFrameScrollingNodeRemoteMac(tree, nodeType, nodeID));50 } 54 ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren(stateNode); 55 const auto& scrollingStateNode = downcast<ScrollingStateOverflowScrollingNode>(stateNode); 51 56 52 void ScrollingTreeFrameScrollingNodeRemoteMac::commitStateBeforeChildren(const ScrollingStateNode& stateNode) 53 { 54 ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren(stateNode); 55 const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode); 56 57 if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::VerticalScrollbarLayer)) 57 // FIXME: Push to ScrollingTreeScrollingNodeDelegateMac? 58 if (scrollingStateNode.hasChangedProperty(ScrollingStateOverflowScrollingNode::VerticalScrollbarLayer)) 58 59 m_scrollerPair->verticalScroller().setHostLayer(scrollingStateNode.verticalScrollbarLayer()); 59 60 60 if (scrollingStateNode.hasChangedProperty(ScrollingState FrameScrollingNode::HorizontalScrollbarLayer))61 if (scrollingStateNode.hasChangedProperty(ScrollingStateOverflowScrollingNode::HorizontalScrollbarLayer)) 61 62 m_scrollerPair->horizontalScroller().setHostLayer(scrollingStateNode.horizontalScrollbarLayer()); 62 63 … … 64 65 } 65 66 66 void ScrollingTree FrameScrollingNodeRemoteMac::repositionRelatedLayers()67 void ScrollingTreeOverflowScrollingNodeRemoteMac::repositionRelatedLayers() 67 68 { 68 ScrollingTree FrameScrollingNodeMac::repositionRelatedLayers();69 ScrollingTreeOverflowScrollingNodeMac::repositionRelatedLayers(); 69 70 70 71 m_scrollerPair->updateValues(); 71 72 } 72 73 73 ScrollingEventResult ScrollingTree FrameScrollingNodeRemoteMac::handleWheelEvent(const PlatformWheelEvent& wheelEvent)74 ScrollingEventResult ScrollingTreeOverflowScrollingNodeRemoteMac::handleWheelEvent(const PlatformWheelEvent& wheelEvent) 74 75 { 75 ScrollingTree FrameScrollingNodeMac::handleWheelEvent(wheelEvent);76 ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent(wheelEvent); 76 77 77 78 return m_scrollerPair->handleWheelEvent(wheelEvent) ? ScrollingEventResult::DidHandleEvent : ScrollingEventResult::DidNotHandleEvent; 78 79 } 79 80 80 bool ScrollingTree FrameScrollingNodeRemoteMac::handleMouseEvent(const PlatformMouseEvent& mouseEvent)81 bool ScrollingTreeOverflowScrollingNodeRemoteMac::handleMouseEvent(const PlatformMouseEvent& mouseEvent) 81 82 { 82 83 return m_scrollerPair->handleMouseEvent(mouseEvent); -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.h
r242358 r242359 28 28 #if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC) 29 29 30 #include "ScrollingTreeOverflowScrollingNode.h" 31 #include "ScrollingTreeScrollingNodeDelegateMac.h" 30 #include <WebCore/ScrollingTreeOverflowScrollingNodeMac.h> 32 31 33 OBJC_CLASS CALayer; 32 namespace WebKit { 34 33 35 namespace WebCore { 34 class ScrollerPairMac; 36 35 37 class ScrollingTreeOverflowScrollingNode Mac : public ScrollingTreeOverflowScrollingNode{36 class ScrollingTreeOverflowScrollingNodeRemoteMac : public WebCore::ScrollingTreeOverflowScrollingNodeMac { 38 37 public: 39 static Ref<ScrollingTreeOverflowScrollingNodeMac> create(ScrollingTree&, ScrollingNodeID); 40 virtual ~ScrollingTreeOverflowScrollingNodeMac(); 38 WEBCORE_EXPORT static Ref<ScrollingTreeOverflowScrollingNodeRemoteMac> create(WebCore::ScrollingTree&, WebCore::ScrollingNodeID); 39 virtual ~ScrollingTreeOverflowScrollingNodeRemoteMac(); 40 41 bool handleMouseEvent(const WebCore::PlatformMouseEvent&); 41 42 42 43 private: 43 ScrollingTreeOverflowScrollingNode Mac(ScrollingTree&,ScrollingNodeID);44 ScrollingTreeOverflowScrollingNodeRemoteMac(WebCore::ScrollingTree&, WebCore::ScrollingNodeID); 44 45 45 void commitStateBeforeChildren(const ScrollingStateNode&) override; 46 void commitStateAfterChildren(const ScrollingStateNode&) override; 47 48 FloatPoint adjustedScrollPosition(const FloatPoint&, ScrollPositionClamp) const override; 46 void commitStateBeforeChildren(const WebCore::ScrollingStateNode&) override; 47 WebCore::ScrollingEventResult handleWheelEvent(const WebCore::PlatformWheelEvent&) override; 48 void repositionRelatedLayers() override; 49 49 50 void repositionScrollingLayers() override; 51 52 ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) override; 53 54 ScrollingTreeScrollingNodeDelegateMac m_delegate; 50 std::unique_ptr<ScrollerPairMac> m_scrollerPair; 55 51 }; 56 52 57 } // namespace WebKit53 } 58 54 59 55 #endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC) -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r242356 r242359 1890 1890 0F707C771A1FEE8300DA7A45 /* RemoteLayerTreeScrollingPerformanceData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteLayerTreeScrollingPerformanceData.mm; sourceTree = "<group>"; }; 1891 1891 0F707C791A1FEEA300DA7A45 /* RemoteLayerTreeScrollingPerformanceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerTreeScrollingPerformanceData.h; sourceTree = "<group>"; }; 1892 0F73B767222B38C600805316 /* ScrollingTreeOverflowScrollingNodeRemoteMac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingTreeOverflowScrollingNodeRemoteMac.cpp; sourceTree = "<group>"; }; 1893 0F73B768222B38C600805316 /* ScrollingTreeOverflowScrollingNodeRemoteMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeOverflowScrollingNodeRemoteMac.h; sourceTree = "<group>"; }; 1892 1894 0F850FE41ED7C39F00FB77A7 /* WebPerformanceLoggingClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPerformanceLoggingClient.cpp; sourceTree = "<group>"; }; 1893 1895 0F850FE51ED7C39F00FB77A7 /* WebPerformanceLoggingClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPerformanceLoggingClient.h; sourceTree = "<group>"; }; … … 8767 8769 E404907121DE65F70037F0DB /* ScrollingTreeFrameScrollingNodeRemoteMac.cpp */, 8768 8770 E404907321DE65F70037F0DB /* ScrollingTreeFrameScrollingNodeRemoteMac.h */, 8771 0F73B767222B38C600805316 /* ScrollingTreeOverflowScrollingNodeRemoteMac.cpp */, 8772 0F73B768222B38C600805316 /* ScrollingTreeOverflowScrollingNodeRemoteMac.h */, 8769 8773 ); 8770 8774 path = mac;
Note:
See TracChangeset
for help on using the changeset viewer.