diff options
author | tdresser <tdresser@chromium.org> | 2016-01-18 15:21:22 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-18 23:22:21 +0000 |
commit | 81e84c67c444571b63a2d3992af61561e9935230 (patch) | |
tree | d91fb9064d73fa8b8694b730b996bcd1b580b294 /cc/blink | |
parent | 14a140b3b802c95a0f685420df0055334ebbacc6 (diff) | |
download | chromium_src-81e84c67c444571b63a2d3992af61561e9935230.zip chromium_src-81e84c67c444571b63a2d3992af61561e9935230.tar.gz chromium_src-81e84c67c444571b63a2d3992af61561e9935230.tar.bz2 |
Add histogram attributing cause of main thread scrolling.
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
BUG=569077
Review URL: https://codereview.chromium.org/1484913002
Cr-Commit-Position: refs/heads/master@{#370057}
Diffstat (limited to 'cc/blink')
-rw-r--r-- | cc/blink/web_layer_impl.cc | 55 | ||||
-rw-r--r-- | cc/blink/web_layer_impl.h | 6 |
2 files changed, 57 insertions, 4 deletions
diff --git a/cc/blink/web_layer_impl.cc b/cc/blink/web_layer_impl.cc index 88601b5..56c2af9 100644 --- a/cc/blink/web_layer_impl.cc +++ b/cc/blink/web_layer_impl.cc @@ -345,9 +345,58 @@ bool WebLayerImpl::haveScrollEventHandlers() const { return layer_->have_scroll_event_handlers(); } -void WebLayerImpl::setShouldScrollOnMainThread( - bool should_scroll_on_main_thread) { - layer_->SetShouldScrollOnMainThread(should_scroll_on_main_thread); +static_assert(static_cast<cc::InputHandler::MainThreadScrollingReason>( + blink::WebMainThreadScrollingReason::NotScrollingOnMain) == + cc::InputHandler::NOT_SCROLLING_ON_MAIN, + "InputHandler::MainThreadScrollingReason and " + "WebMainThreadScrollingReason enums must match"); +static_assert(static_cast<cc::InputHandler::MainThreadScrollingReason>( + blink::WebMainThreadScrollingReason:: + HasBackgroundAttachmentFixedObjects) == + cc::InputHandler::HAS_BACKGROUND_ATTACHMENT_FIXED_OBJECTS, + "InputHandler::MainThreadScrollingReason and " + "WebMainThreadScrollingReason enums must match"); +static_assert(static_cast<cc::InputHandler::MainThreadScrollingReason>( + blink::WebMainThreadScrollingReason:: + HasNonLayerViewportConstrainedObjects) == + cc::InputHandler::HAS_NON_LAYER_VIEWPORT_CONSTRAINED_OBJECTS, + "InputHandler::MainThreadScrollingReason and " + "WebMainThreadScrollingReason enums must match"); +static_assert( + static_cast<cc::InputHandler::MainThreadScrollingReason>( + blink::WebMainThreadScrollingReason::ThreadedScrollingDisabled) == + cc::InputHandler::THREADED_SCROLLING_DISABLED, + "InputHandler::MainThreadScrollingReason and " + "WebMainThreadScrollingReason enums must match"); +static_assert(static_cast<cc::InputHandler::MainThreadScrollingReason>( + blink::WebMainThreadScrollingReason::ScrollBarScrolling) == + cc::InputHandler::SCROLL_BAR_SCROLLING, + "InputHandler::MainThreadScrollingReason and " + "WebMainThreadScrollingReason enums must match"); +static_assert(static_cast<cc::InputHandler::MainThreadScrollingReason>( + blink::WebMainThreadScrollingReason::PageOverlay) == + cc::InputHandler::PAGE_OVERLAY, + "InputHandler::MainThreadScrollingReason and " + "WebMainThreadScrollingReason enums must match"); + +void WebLayerImpl::addMainThreadScrollingReasons( + blink::WebMainThreadScrollingReason::WebMainThreadScrollingReason + main_thread_scrolling_reasons) { + DCHECK(main_thread_scrolling_reasons); + // WebLayerImpl should only know about non-transient scrolling + // reasons. Transient scrolling reasons are computed per hit test. + DCHECK_LE( + main_thread_scrolling_reasons, + static_cast< + blink::WebMainThreadScrollingReason::WebMainThreadScrollingReason>( + cc::InputHandler::MaxNonTransientScrollingReason)); + layer_->AddMainThreadScrollingReasons( + static_cast<cc::InputHandler::MainThreadScrollingReason>( + main_thread_scrolling_reasons)); +} + +void WebLayerImpl::clearMainThreadScrollingReasons() { + layer_->ClearMainThreadScrollingReasons(); } bool WebLayerImpl::shouldScrollOnMainThread() const { diff --git a/cc/blink/web_layer_impl.h b/cc/blink/web_layer_impl.h index 3fd0bcc..482c633 100644 --- a/cc/blink/web_layer_impl.h +++ b/cc/blink/web_layer_impl.h @@ -22,6 +22,7 @@ #include "third_party/WebKit/public/platform/WebDoublePoint.h" #include "third_party/WebKit/public/platform/WebFloatPoint.h" #include "third_party/WebKit/public/platform/WebLayer.h" +#include "third_party/WebKit/public/platform/WebMainThreadScrollingReason.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" @@ -128,7 +129,10 @@ class WebLayerImpl : public blink::WebLayer { bool haveWheelEventHandlers() const override; void setHaveScrollEventHandlers(bool have_scroll_event_handlers) override; bool haveScrollEventHandlers() const override; - void setShouldScrollOnMainThread(bool scroll_on_main) override; + void addMainThreadScrollingReasons( + blink::WebMainThreadScrollingReason::WebMainThreadScrollingReason + main_thread_scrolling_reasons) override; + void clearMainThreadScrollingReasons() override; bool shouldScrollOnMainThread() const override; void setNonFastScrollableRegion( const blink::WebVector<blink::WebRect>& region) override; |