summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-04 00:51:53 +0000
committerenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-04 00:51:53 +0000
commit7cdf718fc246843a381a48041c697355e314a563 (patch)
tree2bdb4ced9699cdca875d24ce56f3909d401fdcf7 /webkit
parent537c638dda080c54fa2e650e3da3ea0ceeeb5427 (diff)
downloadchromium_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.cc10
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(); }