diff options
author | yusufo@chromium.org <yusufo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-08 00:33:34 +0000 |
---|---|---|
committer | yusufo@chromium.org <yusufo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-08 00:33:34 +0000 |
commit | 23d56bea2a9d000577a8fc7a51776a189a8750e1 (patch) | |
tree | 8c7f5e6d5dc5dd609e9826e3c76b06c20dd0c87b /webkit | |
parent | 719b781e1977238c141dfbfac732b251b19f5f6e (diff) | |
download | chromium_src-23d56bea2a9d000577a8fc7a51776a189a8750e1.zip chromium_src-23d56bea2a9d000577a8fc7a51776a189a8750e1.tar.gz chromium_src-23d56bea2a9d000577a8fc7a51776a189a8750e1.tar.bz2 |
Add touchEventHandlerRegion to Layer and LayerImpl
These will be used to keep track of JavaScript touch event handler on the compositor thread
and will be updated accordingly when there is a change involving adding/removing or changing
the layout of the nodes that contain the touch event handlers.
BUG=135818
Review URL: https://chromiumcodereview.appspot.com/11377013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166561 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/compositor_bindings/web_layer_impl.cc | 18 | ||||
-rw-r--r-- | webkit/compositor_bindings/web_layer_impl.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/webkit/compositor_bindings/web_layer_impl.cc b/webkit/compositor_bindings/web_layer_impl.cc index 0fcb74f..9d3f137 100644 --- a/webkit/compositor_bindings/web_layer_impl.cc +++ b/webkit/compositor_bindings/web_layer_impl.cc @@ -410,6 +410,24 @@ WebVector<WebRect> WebLayerImpl::nonFastScrollableRegion() const return result; } +void WebLayerImpl::setTouchEventHandlerRegion(const WebVector<WebRect>& rects) +{ + cc::Region region; + for (size_t i = 0; i < rects.size(); ++i) + region.Union(rects[i]); + m_layer->setTouchEventHandlerRegion(region); + +} + +WebVector<WebRect> WebLayerImpl::touchEventHandlerRegion() const +{ + cc::Region::Iterator regionRects(m_layer->touchEventHandlerRegion()); + WebVector<WebRect> result(regionRects.size()); + for (size_t i = 0; regionRects.has_rect(); regionRects.next(), ++i) + result[i] = regionRects.rect(); + return result; +} + void WebLayerImpl::setIsContainerForFixedPositionLayers(bool enable) { m_layer->setIsContainerForFixedPositionLayers(enable); diff --git a/webkit/compositor_bindings/web_layer_impl.h b/webkit/compositor_bindings/web_layer_impl.h index 24304b3..639baf1 100644 --- a/webkit/compositor_bindings/web_layer_impl.h +++ b/webkit/compositor_bindings/web_layer_impl.h @@ -88,6 +88,8 @@ public: virtual bool shouldScrollOnMainThread() const; virtual void setNonFastScrollableRegion(const WebVector<WebRect>&) OVERRIDE; virtual WebVector<WebRect> nonFastScrollableRegion() const; + virtual void setTouchEventHandlerRegion(const WebVector<WebRect>&); + virtual WebVector<WebRect> touchEventHandlerRegion() const; virtual void setIsContainerForFixedPositionLayers(bool) OVERRIDE; virtual bool isContainerForFixedPositionLayers() const; virtual void setFixedToContainerLayer(bool) OVERRIDE; |