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

Unified Diff: ui/gfx/compositor/layer.h

Issue 8222028: Use WebKit compositor in ui::Layer (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: rebase Created 9 years, 2 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
« no previous file with comments | « ui/gfx/compositor/compositor_test_support.cc ('k') | ui/gfx/compositor/layer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/compositor/layer.h
diff --git a/ui/gfx/compositor/layer.h b/ui/gfx/compositor/layer.h
index 06b3d02b1f45fa591c8d09573f82824c037b33dd..91dc05f0650210ca5341d27c73beb68f882c4a55 100644
--- a/ui/gfx/compositor/layer.h
+++ b/ui/gfx/compositor/layer.h
@@ -12,6 +12,9 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebContentLayer.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebContentLayerClient.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebLayerClient.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/transform.h"
#include "ui/gfx/compositor/compositor.h"
@@ -35,7 +38,10 @@ class Texture;
// NOTE: unlike Views, each Layer does *not* own its children views. If you
// delete a Layer and it has children, the parent of each child layer is set to
// NULL, but the children are not deleted.
-class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate {
+class COMPOSITOR_EXPORT Layer :
+ public LayerAnimatorDelegate,
+ NON_EXPORTED_BASE(public WebKit::WebLayerClient),
+ NON_EXPORTED_BASE(public WebKit::WebContentLayerClient) {
public:
enum LayerType {
LAYER_HAS_NO_TEXTURE = 0,
@@ -118,7 +124,7 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate {
// Returns true if this layer can have a texture (has_texture_ is true)
// and is not completely obscured by a child.
- bool ShouldDraw();
+ bool ShouldDraw() const;
// Converts a point from the coordinates of |source| to the coordinates of
// |target|. Necessarily, |source| and |target| must inhabit the same Layer
@@ -166,6 +172,16 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate {
// (e.g. the GPU process on TOUCH_UI).
bool layer_updated_externally() const { return layer_updated_externally_; }
+ // WebLayerClient
+ virtual void notifyNeedsComposite();
+
+ // WebContentLayerClient
+ virtual void paintContents(WebKit::WebCanvas*, const WebKit::WebRect& clip);
+
+#if defined(USE_WEBKIT_COMPOSITOR)
+ WebKit::WebContentLayer web_layer() { return web_layer_; }
+#endif
+
private:
// TODO(vollick): Eventually, if a non-leaf node has an opacity of less than
// 1.0, we'll render to a separate texture, and then apply the alpha.
@@ -240,6 +256,12 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate {
virtual void SetTransformFromAnimator(const Transform& transform) OVERRIDE;
virtual void SetOpacityFromAnimator(float opacity) OVERRIDE;
+#if defined(USE_WEBKIT_COMPOSITOR)
+ void CreateWebLayer();
+ void RecomputeTransform();
+ void RecomputeDrawsContent();
+#endif
+
const LayerType type_;
Compositor* compositor_;
@@ -272,6 +294,10 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate {
scoped_ptr<LayerAnimator> animator_;
+#if defined(USE_WEBKIT_COMPOSITOR)
+ WebKit::WebContentLayer web_layer_;
+#endif
+
DISALLOW_COPY_AND_ASSIGN(Layer);
};
« no previous file with comments | « ui/gfx/compositor/compositor_test_support.cc ('k') | ui/gfx/compositor/layer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698