Changeset 167152 in webkit
- Timestamp:
- Apr 11, 2014 2:41:28 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r167151 r167152 1 2014-04-11 Tim Horton <timothy_horton@apple.com> 2 3 Support document-relative and custom-frame page overlays 4 https://bugs.webkit.org/show_bug.cgi?id=131560 5 <rdar://problem/16595556> 6 7 Reviewed by Simon Fraser. 8 9 * WebCore.exp.in: 10 * rendering/RenderLayerCompositor.cpp: 11 (WebCore::RenderLayerCompositor::RenderLayerCompositor): 12 (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): 13 (WebCore::RenderLayerCompositor::setDocumentOverlayRootLayer): 14 * rendering/RenderLayerCompositor.h: 15 Add the concept of a document overlay layer, which is plugged in as the 16 last child of the root content layer. Expose it to WebKit2. 17 1 18 2014-04-09 Myles C. Maxfield <mmaxfield@apple.com> 2 19 -
trunk/Source/WebCore/WebCore.exp.in
r167138 r167152 869 869 __ZN7WebCore21PlatformKeyboardEvent24disambiguateKeyDownEventENS_13PlatformEvent4TypeEb 870 870 __ZN7WebCore21RemoteCommandListener6createERNS_27RemoteCommandListenerClientE 871 __ZN7WebCore21RenderLayerCompositor27setDocumentOverlayRootLayerEPNS_13GraphicsLayerE 871 872 __ZN7WebCore21ResourceLoadScheduler20servePendingRequestsENS_20ResourceLoadPriorityE 872 873 __ZN7WebCore21ResourceLoadScheduler20servePendingRequestsEPNS0_15HostInformationENS_20ResourceLoadPriorityE -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r167138 r167152 256 256 , m_layersWithTiledBackingCount(0) 257 257 , m_rootLayerAttachment(RootLayerUnattached) 258 , m_documentOverlayRootLayer(nullptr) 258 259 , m_layerFlushTimer(this, &RenderLayerCompositor::layerFlushTimerFired) 259 260 , m_layerFlushThrottlingEnabled(page() && page()->progress().isMainLoadProgressing()) … … 1461 1462 childLayersOfEnclosingLayer.append(layerBacking->childForSuperlayers()); 1462 1463 } 1464 1465 if (m_documentOverlayRootLayer) 1466 childLayersOfEnclosingLayer.append(m_documentOverlayRootLayer); 1463 1467 } 1464 1468 … … 3811 3815 } 3812 3816 3817 void RenderLayerCompositor::setDocumentOverlayRootLayer(GraphicsLayer* documentOverlayRootLayer) 3818 { 3819 if (m_documentOverlayRootLayer) 3820 m_documentOverlayRootLayer->removeFromParent(); 3821 m_documentOverlayRootLayer = documentOverlayRootLayer; 3822 scheduleCompositingLayerUpdate(); 3823 } 3824 3813 3825 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r167138 r167152 305 305 Color rootExtendedBackgroundColor() const { return m_rootExtendedBackgroundColor; } 306 306 307 void setDocumentOverlayRootLayer(GraphicsLayer*); 308 307 309 private: 308 310 class OverlapMap; … … 507 509 #endif 508 510 511 GraphicsLayer* m_documentOverlayRootLayer; 512 509 513 std::unique_ptr<GraphicsLayerUpdater> m_layerUpdater; // Updates tiled layer visible area periodically while animations are running. 510 514 -
trunk/Source/WebKit2/ChangeLog
r167143 r167152 1 2014-04-11 Tim Horton <timothy_horton@apple.com> 2 3 Support document-relative and custom-frame page overlays 4 https://bugs.webkit.org/show_bug.cgi?id=131560 5 <rdar://problem/16595556> 6 7 Reviewed by Simon Fraser. 8 9 Add "document-relative" overlays, which attach to (and scroll with) the document, 10 and can be given a frame rect within the document to avoid overallocation of backing store. 11 12 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 13 (WebKit::WebFrameLoaderClient::didChangeScrollOffset): 14 * WebProcess/WebPage/WebPage.cpp: 15 (WebKit::WebPage::mainFrame): 16 (WebKit::WebPage::mainFrameView): 17 (WebKit::WebPage::didChangeScrollOffsetForFrame): 18 * WebProcess/WebPage/WebPage.h: 19 Let the PageOverlayController know *which* frame scrolled, instead of "any frame". 20 21 * WebProcess/WebPage/FindController.cpp: 22 (WebKit::FindController::updateFindUIAfterPageScroll): 23 Factor out shared code. 24 25 (WebKit::FindController::willMoveToWebPage): 26 (WebKit::FindController::drawRect): 27 We can use clearRect() instead of a transparency layer and fillRect(). 28 I've looked through all the other overlay clients I know of and none of them 29 depend on having a transparency layer at the overlay level. 30 31 * WebProcess/WebPage/PageOverlay.cpp: 32 (WebKit::PageOverlay::create): 33 (WebKit::PageOverlay::PageOverlay): 34 (WebKit::PageOverlay::bounds): 35 (WebKit::PageOverlay::frame): 36 (WebKit::PageOverlay::setFrame): 37 (WebKit::PageOverlay::drawRect): 38 Add OverlayType, which allows creation of Document or View relative overlays. 39 All overlays up to this point are View relative, so we default to that. 40 Document-relative overlays scroll with the page instead of repainting as 41 the page scrolls. They can also be given an explicit frame, allowing them 42 to be smaller than the entire document. 43 44 * WebProcess/WebPage/PageOverlay.h: 45 (WebKit::PageOverlay::overlayType): 46 (WebKit::PageOverlay::webPage): 47 (WebKit::PageOverlay::client): Deleted. 48 * WebProcess/WebPage/PageOverlayController.cpp: 49 (WebKit::PageOverlayController::initialize): 50 (WebKit::PageOverlayController::installPageOverlay): 51 (WebKit::PageOverlayController::uninstallPageOverlay): 52 (WebKit::PageOverlayController::updateForceSynchronousScrollLayerPositionUpdates): 53 (WebKit::updateOverlayGeometry): 54 (WebKit::PageOverlayController::setPageOverlayNeedsDisplay): 55 (WebKit::PageOverlayController::didChangeViewSize): 56 (WebKit::PageOverlayController::didChangeDocumentSize): 57 (WebKit::PageOverlayController::didChangeDeviceScaleFactor): 58 (WebKit::PageOverlayController::didScrollFrame): 59 (WebKit::PageOverlayController::flushPageOverlayLayers): 60 (WebKit::PageOverlayController::didChangeOverlayFrame): 61 Keep two overlay root layers - one for view-relative 62 and one for document-relative overlays. 63 Don't force synchronous scrolling if we only have document-relative overlays. 64 Update the overlay's position as well as its size whenever necessary. 65 Update document-relative overlay geometry when the document size changes. 66 Only explicitly flush view-relative overlays; document-relative ones 67 are plugged into the WebCore layer tree and flushed along with the page. 68 69 * WebProcess/WebPage/PageOverlayController.h: 70 (WebKit::PageOverlayController::documentOverlayRootLayer): 71 (WebKit::PageOverlayController::viewOverlayRootLayer): 72 * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: 73 * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: 74 (WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer): 75 (WebKit::RemoteLayerTreeDrawingArea::mainFrameContentSizeChanged): 76 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 77 (WebKit::TiledCoreAnimationDrawingArea::mainFrameContentSizeChanged): 78 (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer): 79 Let the PageOverlay controller know when the document size changes. 80 When we set up compositing, push the document overlay root layer 81 down into WebCore. 82 1 83 2014-04-11 Pratik Solanki <psolanki@apple.com> 2 84 -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r166976 r167152 1580 1580 return; 1581 1581 1582 webPage->didChangeScrollOffsetForAnyFrame(); 1583 1584 if (!m_frame->isMainFrame()) 1585 return; 1586 1587 // If this is called when tearing down a FrameView, the WebCore::Frame's 1588 // current FrameView will be null. 1589 if (!m_frame->coreFrame()->view()) 1590 return; 1591 1592 webPage->updateMainFrameScrollOffsetPinning(); 1582 webPage->didChangeScrollOffsetForFrame(m_frame->coreFrame()); 1593 1583 } 1594 1584 -
trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp
r167099 r167152 163 163 m_findPageOverlay = findPageOverlay.get(); 164 164 m_webPage->installPageOverlay(findPageOverlay.release(), PageOverlay::FadeMode::Fade); 165 m_findPageOverlay->setNeedsDisplay(); 166 } else 167 m_findPageOverlay->setNeedsDisplay(); 165 } 166 m_findPageOverlay->setNeedsDisplay(); 168 167 } 169 168 } … … 395 394 static const float overlayBackgroundAlpha = 0.25; 396 395 397 void FindController::drawRect(PageOverlay* /*pageOverlay*/, GraphicsContext& graphicsContext, const IntRect& dirtyRect)396 void FindController::drawRect(PageOverlay*, GraphicsContext& graphicsContext, const IntRect& dirtyRect) 398 397 { 399 398 Color overlayBackgroundColor(overlayBackgroundRed, overlayBackgroundGreen, overlayBackgroundBlue, overlayBackgroundAlpha); … … 414 413 IntRect whiteFrameRect = rects[i]; 415 414 whiteFrameRect.inflate(1); 416 417 415 graphicsContext.fillRect(whiteFrameRect); 418 416 } 419 417 } 420 418 421 graphicsContext.setFillColor(Color::transparent, ColorSpaceSRGB);422 423 419 // Clear out the holes. 424 420 for (size_t i = 0; i < rects.size(); ++i) 425 graphicsContext. fillRect(rects[i]);421 graphicsContext.clearRect(rects[i]); 426 422 427 423 if (!m_isShowingFindIndicator) -
trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp
r166975 r167152 43 43 static const double fadeAnimationFrameRate = 30; 44 44 45 PassRefPtr<PageOverlay> PageOverlay::create(Client* client )46 { 47 return adoptRef(new PageOverlay(client ));48 } 49 50 PageOverlay::PageOverlay(Client* client )45 PassRefPtr<PageOverlay> PageOverlay::create(Client* client, OverlayType overlayType) 46 { 47 return adoptRef(new PageOverlay(client, overlayType)); 48 } 49 50 PageOverlay::PageOverlay(Client* client, OverlayType overlayType) 51 51 : m_client(client) 52 52 , m_webPage(0) … … 56 56 , m_fadeAnimationType(NoAnimation) 57 57 , m_fractionFadedIn(1.0) 58 , m_overlayType(overlayType) 58 59 { 59 60 } … … 65 66 IntRect PageOverlay::bounds() const 66 67 { 67 FrameView* frameView = m_webPage->corePage()->mainFrame().view(); 68 69 int width = frameView->width(); 70 int height = frameView->height(); 71 72 if (!ScrollbarTheme::theme()->usesOverlayScrollbars()) { 73 if (frameView->verticalScrollbar()) 74 width -= frameView->verticalScrollbar()->width(); 75 if (frameView->horizontalScrollbar()) 76 height -= frameView->horizontalScrollbar()->height(); 77 } 78 return IntRect(0, 0, width, height); 68 if (!m_overrideFrame.isEmpty()) 69 return IntRect(IntPoint(), m_overrideFrame.size()); 70 71 FrameView* frameView = m_webPage->mainFrameView(); 72 73 switch (m_overlayType) { 74 case OverlayType::View: { 75 int width = frameView->width(); 76 int height = frameView->height(); 77 78 if (!ScrollbarTheme::theme()->usesOverlayScrollbars()) { 79 if (frameView->verticalScrollbar()) 80 width -= frameView->verticalScrollbar()->width(); 81 if (frameView->horizontalScrollbar()) 82 height -= frameView->horizontalScrollbar()->height(); 83 } 84 return IntRect(0, 0, width, height); 85 } 86 case OverlayType::Document: 87 return IntRect(IntPoint(), frameView->contentsSize()); 88 }; 89 } 90 91 IntRect PageOverlay::frame() const 92 { 93 if (!m_overrideFrame.isEmpty()) 94 return m_overrideFrame; 95 96 return bounds(); 97 } 98 99 void PageOverlay::setFrame(IntRect frame) 100 { 101 m_overrideFrame = frame; 102 103 if (m_webPage) 104 m_webPage->pageOverlayController().didChangeOverlayFrame(this); 79 105 } 80 106 … … 109 135 110 136 GraphicsContextStateSaver stateSaver(graphicsContext); 111 graphicsContext.beginTransparencyLayer(1);112 graphicsContext.setCompositeOperation(CompositeCopy);113 114 137 m_client->drawRect(this, graphicsContext, paintRect); 115 116 graphicsContext.endTransparencyLayer();117 138 } 118 139 -
trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.h
r166975 r167152 29 29 #include "APIObject.h" 30 30 #include "WKBase.h" 31 #include <WebCore/IntRect.h> 31 32 #include <wtf/PassRefPtr.h> 32 33 #include <wtf/RunLoop.h> 33 34 34 35 namespace WebCore { 35 class GraphicsContext; 36 class IntPoint; 37 class IntRect; 36 class GraphicsContext; 38 37 } 39 38 … … 60 59 }; 61 60 62 static PassRefPtr<PageOverlay> create(Client*); 61 enum class OverlayType { 62 View, // Fixed to the view size; does not scale or scroll with the document, repaints on scroll. 63 Document, // Scales and scrolls with the document. 64 }; 65 66 static PassRefPtr<PageOverlay> create(Client*, OverlayType = OverlayType::View); 63 67 virtual ~PageOverlay(); 64 68 … … 82 86 83 87 enum class FadeMode { DoNotFade, Fade }; 88 89 OverlayType overlayType() { return m_overlayType; } 90 91 WebCore::IntRect bounds() const; 92 WebCore::IntRect frame() const; 93 void setFrame(WebCore::IntRect); 84 94 85 95 protected: 86 explicit PageOverlay(Client* );96 explicit PageOverlay(Client*, OverlayType); 87 97 88 98 private: 89 WebCore::IntRect bounds() const;90 91 99 void startFadeAnimation(); 92 100 void fadeAnimationTimerFired(); … … 107 115 FadeAnimationType m_fadeAnimationType; 108 116 float m_fractionFadedIn; 117 118 OverlayType m_overlayType; 119 WebCore::IntRect m_overrideFrame; 109 120 }; 110 121 -
trunk/Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp
r167002 r167152 30 30 #include "PageOverlay.h" 31 31 #include "WebPage.h" 32 #include <WebCore/Frame.h> 32 33 #include <WebCore/FrameView.h> 33 34 #include <WebCore/GraphicsContext.h> 34 35 #include <WebCore/GraphicsLayer.h> 36 #include <WebCore/MainFrame.h> 35 37 #include <WebCore/ScrollingCoordinator.h> 36 38 #include <WebCore/Settings.h> … … 48 50 void PageOverlayController::initialize() 49 51 { 50 ASSERT(!m_rootLayer); 51 52 m_rootLayer = GraphicsLayer::create(m_webPage->drawingArea()->graphicsLayerFactory(), this); 52 ASSERT(!m_documentOverlayRootLayer); 53 ASSERT(!m_viewOverlayRootLayer); 54 55 m_documentOverlayRootLayer = GraphicsLayer::create(m_webPage->drawingArea()->graphicsLayerFactory(), this); 56 m_viewOverlayRootLayer = GraphicsLayer::create(m_webPage->drawingArea()->graphicsLayerFactory(), this); 53 57 #ifndef NDEBUG 54 m_rootLayer->setName("Page Overlay container"); 58 m_documentOverlayRootLayer->setName("Page Overlay container (document-relative)"); 59 m_viewOverlayRootLayer->setName("Page Overlay container (view-relative)"); 55 60 #endif 56 61 } … … 58 63 void PageOverlayController::installPageOverlay(PassRefPtr<PageOverlay> pageOverlay, PageOverlay::FadeMode fadeMode) 59 64 { 60 ASSERT(m_rootLayer); 65 ASSERT(m_documentOverlayRootLayer); 66 ASSERT(m_viewOverlayRootLayer); 61 67 62 68 RefPtr<PageOverlay> overlay = pageOverlay; … … 72 78 73 79 std::unique_ptr<GraphicsLayer> layer = GraphicsLayer::create(m_webPage->drawingArea()->graphicsLayerFactory(), this); 80 layer->setAnchorPoint(FloatPoint3D()); 81 layer->setPosition(overlay->frame().location()); 74 82 #ifndef NDEBUG 75 83 layer->setName("Page Overlay content"); … … 77 85 78 86 updateSettingsForLayer(layer.get()); 79 m_rootLayer->addChild(layer.get()); 87 88 switch (overlay->overlayType()) { 89 case PageOverlay::OverlayType::View: 90 m_viewOverlayRootLayer->addChild(layer.get()); 91 break; 92 case PageOverlay::OverlayType::Document: 93 m_documentOverlayRootLayer->addChild(layer.get()); 94 break; 95 } 96 80 97 m_overlayGraphicsLayers.set(overlay.get(), std::move(layer)); 81 98 82 #if ENABLE(ASYNC_SCROLLING) 83 if (Page* page = m_webPage->corePage()) { 84 if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordinator()) 85 scrollingCoordinator->setForceSynchronousScrollLayerPositionUpdates(true); 86 } 87 #endif 99 updateForceSynchronousScrollLayerPositionUpdates(); 88 100 } 89 101 … … 103 115 m_pageOverlays.remove(overlayIndex); 104 116 105 if (!m_pageOverlays.isEmpty()) 106 return; 107 117 updateForceSynchronousScrollLayerPositionUpdates(); 118 } 119 120 void PageOverlayController::updateForceSynchronousScrollLayerPositionUpdates() 121 { 108 122 #if ENABLE(ASYNC_SCROLLING) 123 bool forceSynchronousScrollLayerPositionUpdates = false; 124 125 for (auto& overlay : m_pageOverlays) { 126 if (overlay->overlayType() == PageOverlay::OverlayType::View) 127 forceSynchronousScrollLayerPositionUpdates = true; 128 } 129 109 130 if (Page* page = m_webPage->corePage()) { 110 131 if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordinator()) 111 scrollingCoordinator->setForceSynchronousScrollLayerPositionUpdates(f alse);132 scrollingCoordinator->setForceSynchronousScrollLayerPositionUpdates(forceSynchronousScrollLayerPositionUpdates); 112 133 } 113 134 #endif 135 } 136 137 static void updateOverlayGeometry(PageOverlay* overlay, GraphicsLayer* graphicsLayer) 138 { 139 if (!graphicsLayer->drawsContent()) 140 return; 141 142 graphicsLayer->setPosition(overlay->frame().location()); 143 graphicsLayer->setSize(overlay->frame().size()); 144 graphicsLayer->setNeedsDisplay(); 114 145 } 115 146 … … 122 153 if (!graphicsLayer->drawsContent()) { 123 154 graphicsLayer->setDrawsContent(true); 124 graphicsLayer->setSize(m_webPage->size()); 125 } 155 updateOverlayGeometry(overlay, graphicsLayer); 156 } 157 126 158 graphicsLayer->setNeedsDisplayInRect(dirtyRect); 127 159 } … … 148 180 void PageOverlayController::didChangeViewSize() 149 181 { 150 for (auto& graphicsLayer : m_overlayGraphicsLayers.values()) { 151 if (!graphicsLayer->drawsContent()) 152 continue; 153 graphicsLayer->setSize(m_webPage->size()); 154 graphicsLayer->setNeedsDisplay(); 182 for (auto& overlayAndLayer : m_overlayGraphicsLayers) { 183 if (overlayAndLayer.key->overlayType() == PageOverlay::OverlayType::View) 184 updateOverlayGeometry(overlayAndLayer.key, overlayAndLayer.value.get()); 185 } 186 } 187 188 void PageOverlayController::didChangeDocumentSize() 189 { 190 for (auto& overlayAndLayer : m_overlayGraphicsLayers) { 191 if (overlayAndLayer.key->overlayType() == PageOverlay::OverlayType::Document) 192 updateOverlayGeometry(overlayAndLayer.key, overlayAndLayer.value.get()); 155 193 } 156 194 } … … 164 202 void PageOverlayController::didChangeDeviceScaleFactor() 165 203 { 166 m_rootLayer->noteDeviceOrPageScaleFactorChangedIncludingDescendants(); 167 invalidateAllPageOverlayLayers(); 168 } 169 170 void PageOverlayController::didChangeExposedRect() 171 { 172 m_webPage->drawingArea()->scheduleCompositingLayerFlush(); 173 } 174 175 void PageOverlayController::didScrollAnyFrame() 176 { 177 invalidateAllPageOverlayLayers(); 178 } 179 180 void PageOverlayController::invalidateAllPageOverlayLayers() 181 { 204 m_documentOverlayRootLayer->noteDeviceOrPageScaleFactorChangedIncludingDescendants(); 205 m_viewOverlayRootLayer->noteDeviceOrPageScaleFactorChangedIncludingDescendants(); 206 182 207 for (auto& graphicsLayer : m_overlayGraphicsLayers.values()) 183 208 graphicsLayer->setNeedsDisplay(); 184 209 } 185 210 211 void PageOverlayController::didChangeExposedRect() 212 { 213 m_webPage->drawingArea()->scheduleCompositingLayerFlush(); 214 } 215 216 void PageOverlayController::didScrollFrame(Frame* frame) 217 { 218 for (auto& overlayAndLayer : m_overlayGraphicsLayers) { 219 if (overlayAndLayer.key->overlayType() == PageOverlay::OverlayType::View || !frame->isMainFrame()) 220 overlayAndLayer.value->setNeedsDisplay(); 221 } 222 } 223 186 224 void PageOverlayController::flushPageOverlayLayers(FloatRect visibleRect) 187 225 { 188 m_ rootLayer->flushCompositingState(visibleRect);226 m_viewOverlayRootLayer->flushCompositingState(visibleRect); 189 227 } 190 228 … … 260 298 } 261 299 300 void PageOverlayController::didChangeOverlayFrame(PageOverlay* overlay) 301 { 302 ASSERT(m_pageOverlays.contains(overlay)); 303 304 GraphicsLayer* graphicsLayer = m_overlayGraphicsLayers.get(overlay); 305 306 if (!graphicsLayer->drawsContent()) 307 return; 308 309 updateOverlayGeometry(overlay, graphicsLayer); 310 } 311 262 312 } // namespace WebKit -
trunk/Source/WebKit2/WebProcess/WebPage/PageOverlayController.h
r166975 r167152 34 34 #include <wtf/Vector.h> 35 35 36 namespace WebCore { 37 class Frame; 38 } 39 36 40 namespace WebKit { 37 41 … … 45 49 void initialize(); 46 50 47 WebCore::GraphicsLayer* rootLayer() const { return m_rootLayer.get(); } 51 WebCore::GraphicsLayer* documentOverlayRootLayer() const { return m_documentOverlayRootLayer.get(); } 52 WebCore::GraphicsLayer* viewOverlayRootLayer() const { return m_viewOverlayRootLayer.get(); } 48 53 49 54 void installPageOverlay(PassRefPtr<PageOverlay>, PageOverlay::FadeMode); … … 55 60 56 61 void didChangeViewSize(); 62 void didChangeDocumentSize(); 57 63 void didChangePreferences(); 58 64 void didChangeDeviceScaleFactor(); 59 65 void didChangeExposedRect(); 60 void didScrollAnyFrame(); 66 void didScrollFrame(WebCore::Frame*); 67 void didChangeOverlayFrame(PageOverlay*); 61 68 62 69 void flushPageOverlayLayers(WebCore::FloatRect); … … 70 77 private: 71 78 void updateSettingsForLayer(WebCore::GraphicsLayer*); 72 void invalidateAllPageOverlayLayers();79 void updateForceSynchronousScrollLayerPositionUpdates(); 73 80 74 81 // WebCore::GraphicsLayerClient … … 79 86 virtual void didCommitChangesForLayer(const WebCore::GraphicsLayer*) const override { } 80 87 81 std::unique_ptr<WebCore::GraphicsLayer> m_rootLayer; 88 std::unique_ptr<WebCore::GraphicsLayer> m_documentOverlayRootLayer; 89 std::unique_ptr<WebCore::GraphicsLayer> m_viewOverlayRootLayer; 82 90 HashMap<PageOverlay*, std::unique_ptr<WebCore::GraphicsLayer>> m_overlayGraphicsLayers; 83 91 Vector<RefPtr<PageOverlay>> m_pageOverlays; -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r167099 r167152 3818 3818 Frame* WebPage::mainFrame() const 3819 3819 { 3820 return m_page ? &m_page->mainFrame() : 0;3820 return m_page ? &m_page->mainFrame() : nullptr; 3821 3821 } 3822 3822 … … 3826 3826 return frame->view(); 3827 3827 3828 return 0;3828 return nullptr; 3829 3829 } 3830 3830 … … 4507 4507 #endif 4508 4508 4509 void WebPage::didChangeScrollOffsetForAnyFrame() 4510 { 4511 m_pageOverlayController.didScrollAnyFrame(); 4509 void WebPage::didChangeScrollOffsetForFrame(Frame* frame) 4510 { 4511 m_pageOverlayController.didScrollFrame(frame); 4512 4513 if (!frame->isMainFrame()) 4514 return; 4515 4516 // If this is called when tearing down a FrameView, the WebCore::Frame's 4517 // current FrameView will be null. 4518 if (!frame->view()) 4519 return; 4520 4521 updateMainFrameScrollOffsetPinning(); 4512 4522 } 4513 4523 -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r167060 r167152 781 781 #endif 782 782 783 void didChangeScrollOffsetFor AnyFrame();783 void didChangeScrollOffsetForFrame(WebCore::Frame*); 784 784 785 785 private: -
trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h
r166975 r167152 82 82 #endif 83 83 84 virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) override; 85 84 86 void updateScrolledExposedRect(); 85 87 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm
r166975 r167152 39 39 #import <WebCore/FrameView.h> 40 40 #import <WebCore/MainFrame.h> 41 #import <WebCore/RenderLayerCompositor.h> 42 #import <WebCore/RenderView.h> 41 43 #import <WebCore/Settings.h> 42 44 #import <WebCore/TiledBacking.h> … … 90 92 if (rootLayer) { 91 93 children.append(rootLayer); 92 children.append(m_webPage->pageOverlayController(). rootLayer());94 children.append(m_webPage->pageOverlayController().viewOverlayRootLayer()); 93 95 } 94 96 m_rootLayer->setChildren(children); 97 98 m_webPage->mainFrameView()->renderView()->compositor().setDocumentOverlayRootLayer(m_webPage->pageOverlayController().documentOverlayRootLayer()); 95 99 } 96 100 … … 294 298 } 295 299 300 void RemoteLayerTreeDrawingArea::mainFrameContentSizeChanged(const IntSize&) 301 { 302 m_webPage->pageOverlayController().didChangeDocumentSize(); 303 } 304 296 305 } // namespace WebKit -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r166975 r167152 202 202 void TiledCoreAnimationDrawingArea::mainFrameContentSizeChanged(const IntSize&) 203 203 { 204 m_webPage->pageOverlayController().didChangeDocumentSize(); 205 204 206 if (!m_webPage->minimumLayoutSize().width()) 205 207 return; … … 446 448 [CATransaction setDisableActions:YES]; 447 449 448 [m_hostingLayer setSublayers:layer ? @[ layer, m_webPage->pageOverlayController().rootLayer()->platformLayer() ] : @[ ]]; 450 [m_hostingLayer setSublayers:layer ? @[ layer, m_webPage->pageOverlayController().viewOverlayRootLayer()->platformLayer() ] : @[ ]]; 451 452 m_webPage->mainFrameView()->renderView()->compositor().setDocumentOverlayRootLayer(m_webPage->pageOverlayController().documentOverlayRootLayer()); 449 453 450 454 bool hadRootLayer = !!m_rootLayer;
Note: See TracChangeset
for help on using the changeset viewer.