diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 02:47:18 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 02:48:29 +0000 |
commit | 38564621b3363efe786f4f24000e663d832e4b9b (patch) | |
tree | 24e1efd151b4c718682a6cc3dc6a30cc829889cd /cc/blink/web_layer_impl.h | |
parent | 5d19fee72e4c6147fee799406b6b438002162b1f (diff) | |
download | chromium_src-38564621b3363efe786f4f24000e663d832e4b9b.zip chromium_src-38564621b3363efe786f4f24000e663d832e4b9b.tar.gz chromium_src-38564621b3363efe786f4f24000e663d832e4b9b.tar.bz2 |
Move blink<->cc bindings to cc/blink
These files provide the implementations of the public Blink API that
bind to the cc implementation. This moves them out of content/ into a
subdirectory of cc/ so that we can reuse these files in mojo which
can depend on cc/ and on blink but not on content/. To make sure we
don't introduce dependencies from cc/ on blink proper, cc/DEPS forbids
including cc/blink/ and cc/blink/DEPS allows using the blink headers.
cc_blink is built as a separate component to avoid linking anything from
blink into targets that don't care about the blink bindings (such as
the browser compositor).
R=darin@chromium.org
Review URL: https://codereview.chromium.org/470983004
Cr-Commit-Position: refs/heads/master@{#290464}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290464 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/blink/web_layer_impl.h')
-rw-r--r-- | cc/blink/web_layer_impl.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/cc/blink/web_layer_impl.h b/cc/blink/web_layer_impl.h new file mode 100644 index 0000000..3a8130e --- /dev/null +++ b/cc/blink/web_layer_impl.h @@ -0,0 +1,152 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_BLINK_WEB_LAYER_IMPL_H_ +#define CC_BLINK_WEB_LAYER_IMPL_H_ + +#include <string> + +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "cc/blink/cc_blink_export.h" +#include "cc/layers/layer_client.h" +#include "third_party/WebKit/public/platform/WebCString.h" +#include "third_party/WebKit/public/platform/WebColor.h" +#include "third_party/WebKit/public/platform/WebCompositorAnimation.h" +#include "third_party/WebKit/public/platform/WebFloatPoint.h" +#include "third_party/WebKit/public/platform/WebLayer.h" +#include "third_party/WebKit/public/platform/WebPoint.h" +#include "third_party/WebKit/public/platform/WebRect.h" +#include "third_party/WebKit/public/platform/WebSize.h" +#include "third_party/WebKit/public/platform/WebString.h" +#include "third_party/WebKit/public/platform/WebVector.h" +#include "third_party/skia/include/utils/SkMatrix44.h" + +namespace blink { +class WebFilterOperations; +class WebLayerClient; +struct WebFloatRect; +} + +namespace base { +namespace debug { +class ConvertableToTraceFormat; +} +} + +namespace cc { +class Layer; +} + +namespace cc_blink { + +class WebToCCAnimationDelegateAdapter; + +class WebLayerImpl : public blink::WebLayer, public cc::LayerClient { + public: + CC_BLINK_EXPORT WebLayerImpl(); + CC_BLINK_EXPORT explicit WebLayerImpl(scoped_refptr<cc::Layer>); + virtual ~WebLayerImpl(); + + static bool UsingPictureLayer(); + CC_BLINK_EXPORT static void SetImplSidePaintingEnabled(bool enabled); + + CC_BLINK_EXPORT cc::Layer* layer() const; + + // WebLayer implementation. + virtual int id() const; + virtual void invalidateRect(const blink::WebFloatRect&); + virtual void invalidate(); + virtual void addChild(blink::WebLayer* child); + virtual void insertChild(blink::WebLayer* child, size_t index); + virtual void replaceChild(blink::WebLayer* reference, + blink::WebLayer* new_layer); + virtual void removeFromParent(); + virtual void removeAllChildren(); + virtual void setBounds(const blink::WebSize& bounds); + virtual blink::WebSize bounds() const; + virtual void setMasksToBounds(bool masks_to_bounds); + virtual bool masksToBounds() const; + virtual void setMaskLayer(blink::WebLayer* mask); + virtual void setReplicaLayer(blink::WebLayer* replica); + virtual void setOpacity(float opacity); + virtual float opacity() const; + virtual void setBlendMode(blink::WebBlendMode blend_mode); + virtual blink::WebBlendMode blendMode() const; + virtual void setIsRootForIsolatedGroup(bool root); + virtual bool isRootForIsolatedGroup(); + virtual void setOpaque(bool opaque); + virtual bool opaque() const; + virtual void setPosition(const blink::WebFloatPoint& position); + virtual blink::WebFloatPoint position() const; + virtual void setTransform(const SkMatrix44& transform); + virtual void setTransformOrigin(const blink::WebFloatPoint3D& point); + virtual blink::WebFloatPoint3D transformOrigin() const; + virtual SkMatrix44 transform() const; + virtual void setDrawsContent(bool draws_content); + virtual bool drawsContent() const; + virtual void setShouldFlattenTransform(bool flatten); + virtual void setRenderingContext(int context); + virtual void setUseParentBackfaceVisibility(bool visible); + virtual void setBackgroundColor(blink::WebColor color); + virtual blink::WebColor backgroundColor() const; + virtual void setFilters(const blink::WebFilterOperations& filters); + virtual void setBackgroundFilters(const blink::WebFilterOperations& filters); + virtual void setAnimationDelegate( + blink::WebCompositorAnimationDelegate* delegate); + virtual bool addAnimation(blink::WebCompositorAnimation* animation); + virtual void removeAnimation(int animation_id); + virtual void removeAnimation(int animation_id, + blink::WebCompositorAnimation::TargetProperty); + virtual void pauseAnimation(int animation_id, double time_offset); + virtual bool hasActiveAnimation(); + virtual void setForceRenderSurface(bool force); + virtual void setScrollPosition(blink::WebPoint position); + virtual blink::WebPoint scrollPosition() const; + virtual void setScrollClipLayer(blink::WebLayer* clip_layer); + virtual bool scrollable() const; + virtual void setUserScrollable(bool horizontal, bool vertical); + virtual bool userScrollableHorizontal() const; + virtual bool userScrollableVertical() const; + virtual void setHaveWheelEventHandlers(bool have_wheel_event_handlers); + virtual bool haveWheelEventHandlers() const; + virtual void setHaveScrollEventHandlers(bool have_scroll_event_handlers); + virtual bool haveScrollEventHandlers() const; + virtual void setShouldScrollOnMainThread(bool scroll_on_main); + virtual bool shouldScrollOnMainThread() const; + virtual void setNonFastScrollableRegion( + const blink::WebVector<blink::WebRect>& region); + virtual blink::WebVector<blink::WebRect> nonFastScrollableRegion() const; + virtual void setTouchEventHandlerRegion( + const blink::WebVector<blink::WebRect>& region); + virtual blink::WebVector<blink::WebRect> touchEventHandlerRegion() const; + virtual void setIsContainerForFixedPositionLayers(bool is_container); + virtual bool isContainerForFixedPositionLayers() const; + virtual void setPositionConstraint( + const blink::WebLayerPositionConstraint& constraint); + virtual blink::WebLayerPositionConstraint positionConstraint() const; + virtual void setScrollClient(blink::WebLayerScrollClient* client); + virtual bool isOrphan() const; + virtual void setWebLayerClient(blink::WebLayerClient* client); + + // LayerClient implementation. + virtual scoped_refptr<base::debug::ConvertableToTraceFormat> TakeDebugInfo() + OVERRIDE; + + virtual void setScrollParent(blink::WebLayer* parent); + virtual void setClipParent(blink::WebLayer* parent); + + protected: + scoped_refptr<cc::Layer> layer_; + blink::WebLayerClient* web_layer_client_; + + private: + scoped_ptr<WebToCCAnimationDelegateAdapter> animation_delegate_adapter_; + + DISALLOW_COPY_AND_ASSIGN(WebLayerImpl); +}; + +} // namespace cc_blink + +#endif // CC_BLINK_WEB_LAYER_IMPL_H_ |