summaryrefslogtreecommitdiffstats
path: root/cc/blink
diff options
context:
space:
mode:
authortdresser <tdresser@chromium.org>2016-01-18 15:21:22 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-18 23:22:21 +0000
commit81e84c67c444571b63a2d3992af61561e9935230 (patch)
treed91fb9064d73fa8b8694b730b996bcd1b580b294 /cc/blink
parent14a140b3b802c95a0f685420df0055334ebbacc6 (diff)
downloadchromium_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.cc55
-rw-r--r--cc/blink/web_layer_impl.h6
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;