diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-04 00:51:53 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-04 00:51:53 +0000 |
commit | 7cdf718fc246843a381a48041c697355e314a563 (patch) | |
tree | 2bdb4ced9699cdca875d24ce56f3909d401fdcf7 /webkit | |
parent | 537c638dda080c54fa2e650e3da3ea0ceeeb5427 (diff) | |
download | chromium_src-7cdf718fc246843a381a48041c697355e314a563.zip chromium_src-7cdf718fc246843a381a48041c697355e314a563.tar.gz chromium_src-7cdf718fc246843a381a48041c697355e314a563.tar.bz2 |
Allow unsetting scroll client
Currently in Blink every GraphicsLayer sets the scroll client of its
platform layer to be itself. This works because
LayerTreeHost::ApplyScrollAndScaleSet doesn't end up calling the scroll
client callback for root scroll layer scrolls and the callback is never
used.
I am going to change Blink to only set the scroll client for non-root
scrollable layers so that the compositor can just always call the
callback if it exists and doesn't have to be smart.
In order to do this, it'd be nice to be able to unset the scroll client
from Blink.
R=jamesr@chromium.org
BUG=256381
Review URL: https://chromiumcodereview.appspot.com/18348021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210089 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/renderer/compositor_bindings/web_layer_impl.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/webkit/renderer/compositor_bindings/web_layer_impl.cc b/webkit/renderer/compositor_bindings/web_layer_impl.cc index c8ea7c3..b984ce8 100644 --- a/webkit/renderer/compositor_bindings/web_layer_impl.cc +++ b/webkit/renderer/compositor_bindings/web_layer_impl.cc @@ -356,9 +356,13 @@ WebKit::WebLayerPositionConstraint WebLayerImpl::positionConstraint() const { void WebLayerImpl::setScrollClient( WebKit::WebLayerScrollClient* scroll_client) { - layer_->set_did_scroll_callback( - base::Bind(&WebKit::WebLayerScrollClient::didScroll, - base::Unretained(scroll_client))); + if (scroll_client) { + layer_->set_did_scroll_callback( + base::Bind(&WebKit::WebLayerScrollClient::didScroll, + base::Unretained(scroll_client))); + } else { + layer_->set_did_scroll_callback(base::Closure()); + } } bool WebLayerImpl::isOrphan() const { return !layer_->layer_tree_host(); } |