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

Unified Diff: Source/web/PageOverlay.h

Issue 867063004: [Slimming Paint] Paint the inspector overlay with GraphicsLayer DisplayList. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/web/PageOverlay.h
diff --git a/Source/web/PageOverlay.h b/Source/web/PageOverlay.h
index f55fbc1dde1a1ade0bf301cc1dd678bb90efb426..52bd4d65151c422ff0f5647a86479ac09cd24348 100644
--- a/Source/web/PageOverlay.h
+++ b/Source/web/PageOverlay.h
@@ -29,8 +29,11 @@
#ifndef PageOverlay_h
#define PageOverlay_h
+#include "platform/graphics/GraphicsLayer.h"
+#include "platform/graphics/GraphicsLayerClient.h"
#include "wtf/OwnPtr.h"
#include "wtf/PassOwnPtr.h"
+#include "wtf/text/WTFString.h"
namespace blink {
@@ -40,14 +43,32 @@ class GraphicsLayerClient;
class WebPageOverlay;
class WebViewImpl;
-class PageOverlay {
+// Manages a layer than is overlaid on a WebView's content.
+//
+// Clients can paint by providing either exactly one of the following:
+// - WebPageOverlay (which paints using a WebCanvas)
+// - PageOverlay::Painter (which paints using a GraphicsContext)
+//
+// In particular, if a client expects to paint web content (which, when
+// Slimming Paint is enabled, uses a DisplayItemList attached to
+// GraphicsContext), it should provide the latter.
+class PageOverlay : public GraphicsLayerClient {
public:
+ class Painter {
+ public:
+ // The callee is responsible for saving the GraphicsContext,
+ // if it is required.
+ virtual void paintPageOverlay(GraphicsContext&) = 0;
+ };
+
static PassOwnPtr<PageOverlay> create(WebViewImpl*, WebPageOverlay*);
+ static PassOwnPtr<PageOverlay> create(WebViewImpl*, Painter*);
~PageOverlay() { }
+ // Exactly one of these should be non-null.
WebPageOverlay* overlay() const { return m_overlay; }
- void setOverlay(WebPageOverlay* overlay) { m_overlay = overlay; }
+ Painter* overlayPainter() const { return m_overlayPainter; }
int zOrder() const { return m_zOrder; }
void setZOrder(int zOrder) { m_zOrder = zOrder; }
@@ -58,13 +79,19 @@ public:
GraphicsLayer* graphicsLayer() const { return m_layer.get(); }
+ // GraphicsLayerClient implementation
+ void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const IntRect& inClip) override;
+ String debugName(const GraphicsLayer*) override;
+
private:
PageOverlay(WebViewImpl*, WebPageOverlay*);
+ PageOverlay(WebViewImpl*, Painter*);
+
void invalidateWebFrame();
WebViewImpl* m_viewImpl;
WebPageOverlay* m_overlay;
- OwnPtr<GraphicsLayerClient> m_layerClient;
+ Painter* m_overlayPainter;
OwnPtr<GraphicsLayer> m_layer;
int m_zOrder;
};

Powered by Google App Engine
This is Rietveld 408576698