- Revision
- 162662
- Author
- timothy_hor...@apple.com
- Date
- 2014-01-23 16:36:14 -0800 (Thu, 23 Jan 2014)
Log Message
[wk2] Page Overlays: Add API to clear the page overlay (and get rid of its backing store)
https://bugs.webkit.org/show_bug.cgi?id=127518
Reviewed by Anders Carlsson.
Add WKBundlePageOverlayClear, to allow clients of the page overlay API to
manually clear the page overlay's backing store, for memory, power, and performance gains.
* WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
(WKBundlePageOverlayClear):
* WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::clearPageOverlay):
* WebProcess/WebPage/PageOverlay.cpp:
(WebKit::PageOverlay::clear):
* WebProcess/WebPage/PageOverlay.h:
Add WKBundlePageOverlayClear and plumb it through PageOverlay to the DrawingArea.
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::clearPageOverlay):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::clearPageOverlay):
Set the layer to drawsContent=false and give it 0x0 size, effectively
removing its backing store.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (162661 => 162662)
--- trunk/Source/WebKit2/ChangeLog 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/ChangeLog 2014-01-24 00:36:14 UTC (rev 162662)
@@ -1,3 +1,32 @@
+2014-01-23 Tim Horton <timothy_hor...@apple.com>
+
+ [wk2] Page Overlays: Add API to clear the page overlay (and get rid of its backing store)
+ https://bugs.webkit.org/show_bug.cgi?id=127518
+
+ Reviewed by Anders Carlsson.
+
+ Add WKBundlePageOverlayClear, to allow clients of the page overlay API to
+ manually clear the page overlay's backing store, for memory, power, and performance gains.
+
+ * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
+ (WKBundlePageOverlayClear):
+ * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
+ * WebProcess/WebPage/DrawingArea.h:
+ (WebKit::DrawingArea::clearPageOverlay):
+ * WebProcess/WebPage/PageOverlay.cpp:
+ (WebKit::PageOverlay::clear):
+ * WebProcess/WebPage/PageOverlay.h:
+ Add WKBundlePageOverlayClear and plumb it through PageOverlay to the DrawingArea.
+
+ * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
+ * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
+ (WebKit::RemoteLayerTreeDrawingArea::clearPageOverlay):
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ (WebKit::TiledCoreAnimationDrawingArea::clearPageOverlay):
+ Set the layer to drawsContent=false and give it 0x0 size, effectively
+ removing its backing store.
+
2014-01-23 Anders Carlsson <ander...@apple.com>
Explicitly link XPC services with AppKit
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp 2014-01-24 00:36:14 UTC (rev 162662)
@@ -178,3 +178,8 @@
return 1;
}
+
+void WKBundlePageOverlayClear(WKBundlePageOverlayRef bundlePageOverlayRef)
+{
+ toImpl(bundlePageOverlayRef)->clear();
+}
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h 2014-01-24 00:36:14 UTC (rev 162662)
@@ -114,6 +114,7 @@
WK_EXPORT void WKBundlePageOverlaySetNeedsDisplay(WKBundlePageOverlayRef bundlePageOverlay, WKRect rect);
WK_EXPORT float WKBundlePageOverlayFractionFadedIn(WKBundlePageOverlayRef bundlePageOverlay);
WK_EXPORT void WKBundlePageOverlaySetAccessibilityClient(WKBundlePageOverlayRef bundlePageOverlay, WKBundlePageOverlayAccessibilityClientBase* client);
+WK_EXPORT void WKBundlePageOverlayClear(WKBundlePageOverlayRef bundlePageOverlay);
#ifdef __cplusplus
}
Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h 2014-01-24 00:36:14 UTC (rev 162662)
@@ -82,6 +82,7 @@
virtual void didUninstallPageOverlay(PageOverlay*) { }
virtual void setPageOverlayNeedsDisplay(PageOverlay*, const WebCore::IntRect&) { }
virtual void setPageOverlayOpacity(PageOverlay*, float) { }
+ virtual void clearPageOverlay(PageOverlay*) { }
virtual void setPaintingEnabled(bool) { }
virtual void updatePreferences(const WebPreferencesStore&) { }
Modified: trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp 2014-01-24 00:36:14 UTC (rev 162662)
@@ -191,4 +191,9 @@
}
}
+void PageOverlay::clear()
+{
+ m_webPage->drawingArea()->clearPageOverlay(this);
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.h (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.h 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/PageOverlay.h 2014-01-24 00:36:14 UTC (rev 162662)
@@ -76,6 +76,8 @@
void startFadeOutAnimation();
void stopFadeOutAnimation();
+ void clear();
+
Client* client() const { return m_client; }
protected:
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h 2014-01-24 00:36:14 UTC (rev 162662)
@@ -64,6 +64,7 @@
virtual void didUninstallPageOverlay(PageOverlay*) override;
virtual void setPageOverlayNeedsDisplay(PageOverlay*, const WebCore::IntRect&) override;
virtual void setPageOverlayOpacity(PageOverlay*, float) override;
+ virtual void clearPageOverlay(PageOverlay*) override;
virtual bool supportsAsyncScrolling() override { return true; }
virtual void setLayerTreeStateIsFrozen(bool) override;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm 2014-01-24 00:36:14 UTC (rev 162662)
@@ -177,6 +177,18 @@
scheduleCompositingLayerFlush();
}
+void RemoteLayerTreeDrawingArea::clearPageOverlay(PageOverlay* pageOverlay)
+{
+ GraphicsLayer* layer = m_pageOverlayLayers.get(pageOverlay);
+
+ if (!layer)
+ return;
+
+ layer->setDrawsContent(false);
+ layer->setSize(IntSize());
+ scheduleCompositingLayerFlush();
+}
+
void RemoteLayerTreeDrawingArea::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& graphicsContext, GraphicsLayerPaintingPhase, const IntRect& clipRect)
{
for (const auto& overlayAndLayer : m_pageOverlayLayers) {
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h 2014-01-24 00:36:14 UTC (rev 162662)
@@ -74,6 +74,7 @@
virtual void didUninstallPageOverlay(PageOverlay*) override;
virtual void setPageOverlayNeedsDisplay(PageOverlay*, const WebCore::IntRect&) override;
virtual void setPageOverlayOpacity(PageOverlay*, float) override;
+ virtual void clearPageOverlay(PageOverlay*) override;
virtual void updatePreferences(const WebPreferencesStore&) override;
virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) override;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (162661 => 162662)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2014-01-24 00:36:08 UTC (rev 162661)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2014-01-24 00:36:14 UTC (rev 162662)
@@ -239,6 +239,18 @@
scheduleCompositingLayerFlush();
}
+void TiledCoreAnimationDrawingArea::clearPageOverlay(PageOverlay* pageOverlay)
+{
+ GraphicsLayer* layer = m_pageOverlayLayers.get(pageOverlay);
+
+ if (!layer)
+ return;
+
+ layer->setDrawsContent(false);
+ layer->setSize(IntSize());
+ scheduleCompositingLayerFlush();
+}
+
void TiledCoreAnimationDrawingArea::updatePreferences(const WebPreferencesStore&)
{
Settings& settings = m_webPage->corePage()->settings();