summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/blink/web_layer_impl.cc46
-rw-r--r--cc/blink/web_layer_impl.h4
-rw-r--r--cc/input/main_thread_scrolling_reason.h8
-rw-r--r--third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp25
-rw-r--r--third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h4
-rw-r--r--third_party/WebKit/Source/platform/blink_platform.gypi1
-rw-r--r--third_party/WebKit/Source/platform/scroll/DEPS4
-rw-r--r--third_party/WebKit/Source/platform/scroll/MainThreadScrollingReason.h18
-rw-r--r--third_party/WebKit/Source/web/PageOverlay.cpp3
-rw-r--r--third_party/WebKit/public/platform/DEPS2
-rw-r--r--third_party/WebKit/public/platform/WebLayer.h3
-rw-r--r--third_party/WebKit/public/platform/WebMainThreadScrollingReason.h26
12 files changed, 51 insertions, 93 deletions
diff --git a/cc/blink/web_layer_impl.cc b/cc/blink/web_layer_impl.cc
index 992157b..41efb47 100644
--- a/cc/blink/web_layer_impl.cc
+++ b/cc/blink/web_layer_impl.cc
@@ -343,51 +343,15 @@ bool WebLayerImpl::haveScrollEventHandlers() const {
return layer_->have_scroll_event_handlers();
}
-static_assert(static_cast<uint32_t>(
- blink::WebMainThreadScrollingReason::NotScrollingOnMain) ==
- cc::MainThreadScrollingReason::kNotScrollingOnMain,
- "MainThreadScrollingReason and "
- "WebMainThreadScrollingReason enums must match");
-static_assert(
- static_cast<uint32_t>(blink::WebMainThreadScrollingReason::
- HasBackgroundAttachmentFixedObjects) ==
- cc::MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects,
- "MainThreadScrollingReason and "
- "WebMainThreadScrollingReason enums must match");
-static_assert(
- static_cast<uint32_t>(blink::WebMainThreadScrollingReason::
- HasNonLayerViewportConstrainedObjects) ==
- cc::MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects,
- "MainThreadScrollingReason and "
- "WebMainThreadScrollingReason enums must match");
-static_assert(
- static_cast<uint32_t>(
- blink::WebMainThreadScrollingReason::ThreadedScrollingDisabled) ==
- cc::MainThreadScrollingReason::kThreadedScrollingDisabled,
- "MainThreadScrollingReason and "
- "WebMainThreadScrollingReason enums must match");
-static_assert(static_cast<uint32_t>(
- blink::WebMainThreadScrollingReason::ScrollBarScrolling) ==
- cc::MainThreadScrollingReason::kScrollbarScrolling,
- "MainThreadScrollingReason and "
- "WebMainThreadScrollingReason enums must match");
-static_assert(
- static_cast<uint32_t>(blink::WebMainThreadScrollingReason::PageOverlay) ==
- cc::MainThreadScrollingReason::kPageOverlay,
- "MainThreadScrollingReason and "
- "WebMainThreadScrollingReason enums must match");
-
void WebLayerImpl::addMainThreadScrollingReasons(
- blink::WebMainThreadScrollingReason::WebMainThreadScrollingReason
- main_thread_scrolling_reasons) {
+ uint32_t 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::MainThreadScrollingReason::kMaxNonTransientScrollingReason));
+ // TODO(tdresser): This is comparing less than a bit flag but that's not valid
+ // if there is more than one reason given in |main_thread_scrolling_reasons|.
+ DCHECK_LE(main_thread_scrolling_reasons,
+ cc::MainThreadScrollingReason::kMaxNonTransientScrollingReason);
layer_->AddMainThreadScrollingReasons(main_thread_scrolling_reasons);
}
diff --git a/cc/blink/web_layer_impl.h b/cc/blink/web_layer_impl.h
index 482c633..f63ba55 100644
--- a/cc/blink/web_layer_impl.h
+++ b/cc/blink/web_layer_impl.h
@@ -22,7 +22,6 @@
#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"
@@ -130,8 +129,7 @@ class WebLayerImpl : public blink::WebLayer {
void setHaveScrollEventHandlers(bool have_scroll_event_handlers) override;
bool haveScrollEventHandlers() const override;
void addMainThreadScrollingReasons(
- blink::WebMainThreadScrollingReason::WebMainThreadScrollingReason
- main_thread_scrolling_reasons) override;
+ uint32_t main_thread_scrolling_reasons) override;
void clearMainThreadScrollingReasons() override;
bool shouldScrollOnMainThread() const override;
void setNonFastScrollableRegion(
diff --git a/cc/input/main_thread_scrolling_reason.h b/cc/input/main_thread_scrolling_reason.h
index 6ab823c..4de70f7 100644
--- a/cc/input/main_thread_scrolling_reason.h
+++ b/cc/input/main_thread_scrolling_reason.h
@@ -7,11 +7,7 @@
namespace cc {
-// Ensure this stays in sync with MainThreadScrollingReason in histograms.xml,
-// and that this extends ScrollingCoordinator::MainThreadScrollingReason.
-// ScrollingCoordinator::MainThreadScrollingReason contains the flags
-// which are associated with a layer. The flags only contained in
-// MainThreadScrollingReason are computed for each scroll begin.
+// Ensure this stays in sync with MainThreadScrollingReason in histograms.xml.
struct MainThreadScrollingReason {
// Non-transient scrolling reasons.
enum : uint32_t { kNotScrollingOnMain = 0 };
@@ -22,7 +18,7 @@ struct MainThreadScrollingReason {
enum : uint32_t { kPageOverlay = 1 << 4 };
enum : uint32_t { kMaxNonTransientScrollingReason = kPageOverlay };
- // Transient scrolling reasons.
+ // Transient scrolling reasons. These are computed for each scroll begin.
enum : uint32_t { kNonFastScrollableRegion = 1 << 5 };
enum : uint32_t { kEventHandlers = 1 << 6 };
enum : uint32_t { kFailedHitTest = 1 << 7 };
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
index 4add053..8474484 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -51,6 +51,7 @@
#if OS(MACOSX)
#include "platform/mac/ScrollAnimatorMac.h"
#endif
+#include "platform/scroll/MainThreadScrollingReason.h"
#include "platform/scroll/ScrollAnimatorBase.h"
#include "platform/scroll/ScrollbarTheme.h"
#include "public/platform/Platform.h"
@@ -344,7 +345,7 @@ void ScrollingCoordinator::scrollableAreaScrollbarLayerDidChange(ScrollableArea*
if (!platformSupportsCoordinatedScrollbar) {
if (scrollbarGraphicsLayer) {
WebLayer* scrollbarLayer = toWebLayer(scrollbarGraphicsLayer);
- scrollbarLayer->addMainThreadScrollingReasons(WebMainThreadScrollingReason::ScrollBarScrolling);
+ scrollbarLayer->addMainThreadScrollingReasons(MainThreadScrollingReason::kScrollbarScrolling);
}
return;
}
@@ -399,7 +400,7 @@ bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc
// to set the WebLayer's scroll position at fractional precision otherwise the
// WebLayer's position after snapping to device pixel can be off with regard to
// fixed position elements.
- if (m_lastMainThreadScrollingReasons & WebMainThreadScrollingReason::HasNonLayerViewportConstrainedObjects) {
+ if (m_lastMainThreadScrollingReasons & MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects) {
webLayer->setScrollPositionDouble(DoublePoint(scrollableArea->scrollPosition() - scrollableArea->minimumScrollPosition()));
} else {
DoublePoint scrollPosition(scrollableArea->scrollPositionDouble() - scrollableArea->minimumScrollPositionDouble());
@@ -708,14 +709,14 @@ void ScrollingCoordinator::updateHaveScrollEventHandlers()
}
}
-void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainThreadScrollingReasons reasons)
+void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainThreadScrollingReasons mainThreadScrollingReasons)
{
if (!m_page->mainFrame()->isLocalFrame() || !m_page->deprecatedLocalMainFrame()->view())
return;
if (WebLayer* scrollLayer = toWebLayer(m_page->deprecatedLocalMainFrame()->view()->layerForScrolling())) {
- m_lastMainThreadScrollingReasons = reasons;
- if (reasons)
- scrollLayer->addMainThreadScrollingReasons(static_cast<WebMainThreadScrollingReason::WebMainThreadScrollingReason>(reasons));
+ m_lastMainThreadScrollingReasons = mainThreadScrollingReasons;
+ if (mainThreadScrollingReasons)
+ scrollLayer->addMainThreadScrollingReasons(mainThreadScrollingReasons);
else
scrollLayer->clearMainThreadScrollingReasons();
}
@@ -1018,7 +1019,7 @@ MainThreadScrollingReasons ScrollingCoordinator::mainThreadScrollingReasons() co
MainThreadScrollingReasons reasons = static_cast<MainThreadScrollingReasons>(0);
if (!m_page->settings().threadedScrollingEnabled())
- reasons |= WebMainThreadScrollingReason::ThreadedScrollingDisabled;
+ reasons |= MainThreadScrollingReason::kThreadedScrollingDisabled;
if (!m_page->mainFrame()->isLocalFrame())
return reasons;
@@ -1035,7 +1036,7 @@ MainThreadScrollingReasons ScrollingCoordinator::mainThreadScrollingReasons() co
continue;
if (frameView->hasBackgroundAttachmentFixedObjects())
- reasons |= WebMainThreadScrollingReason::HasBackgroundAttachmentFixedObjects;
+ reasons |= MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects;
FrameView::ScrollingReasons scrollingReasons = frameView->scrollingReasons();
const bool mayBeScrolledByInput = (scrollingReasons == FrameView::Scrollable);
const bool mayBeScrolledByScript = mayBeScrolledByInput || (scrollingReasons ==
@@ -1046,7 +1047,7 @@ MainThreadScrollingReasons ScrollingCoordinator::mainThreadScrollingReasons() co
// not let this move there path as an optimization, when we have slow-repaint
// elements.
if (mayBeScrolledByScript && hasVisibleSlowRepaintViewportConstrainedObjects(frameView)) {
- reasons |= WebMainThreadScrollingReason::HasNonLayerViewportConstrainedObjects;
+ reasons |= MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects;
}
}
@@ -1057,11 +1058,11 @@ String ScrollingCoordinator::mainThreadScrollingReasonsAsText(MainThreadScrollin
{
StringBuilder stringBuilder;
- if (reasons & WebMainThreadScrollingReason::HasBackgroundAttachmentFixedObjects)
+ if (reasons & MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects)
stringBuilder.appendLiteral("Has background-attachment:fixed, ");
- if (reasons & WebMainThreadScrollingReason::HasNonLayerViewportConstrainedObjects)
+ if (reasons & MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects)
stringBuilder.appendLiteral("Has non-layer viewport-constrained objects, ");
- if (reasons & WebMainThreadScrollingReason::ThreadedScrollingDisabled)
+ if (reasons & MainThreadScrollingReason::kThreadedScrollingDisabled)
stringBuilder.appendLiteral("Threaded scrolling is disabled, ");
if (stringBuilder.length())
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h
index fd48d40..882605d 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h
@@ -30,8 +30,8 @@
#include "core/layout/LayoutObject.h"
#include "platform/PlatformWheelEvent.h"
#include "platform/geometry/IntRect.h"
+#include "platform/scroll/MainThreadScrollingReason.h"
#include "platform/scroll/ScrollTypes.h"
-#include "public/platform/WebMainThreadScrollingReason.h"
#include "wtf/Noncopyable.h"
#include "wtf/text/WTFString.h"
@@ -41,7 +41,7 @@ class WebScrollbarLayer;
namespace blink {
-typedef unsigned MainThreadScrollingReasons;
+using MainThreadScrollingReasons = uint32_t;
class LocalFrame;
class FrameView;
diff --git a/third_party/WebKit/Source/platform/blink_platform.gypi b/third_party/WebKit/Source/platform/blink_platform.gypi
index bd43088..ecab3fc 100644
--- a/third_party/WebKit/Source/platform/blink_platform.gypi
+++ b/third_party/WebKit/Source/platform/blink_platform.gypi
@@ -852,6 +852,7 @@
'plugins/PluginListBuilder.h',
'scheduler/CancellableTaskFactory.cpp',
'scheduler/CancellableTaskFactory.h',
+ 'scroll/MainThreadScrollingReason.h',
'scroll/ProgrammaticScrollAnimator.cpp',
'scroll/ProgrammaticScrollAnimator.h',
'scroll/ScrollAnimatorBase.cpp',
diff --git a/third_party/WebKit/Source/platform/scroll/DEPS b/third_party/WebKit/Source/platform/scroll/DEPS
new file mode 100644
index 0000000..8d825ff
--- /dev/null
+++ b/third_party/WebKit/Source/platform/scroll/DEPS
@@ -0,0 +1,4 @@
+include_rules = [
+ "+cc",
+ "-cc/blink",
+]
diff --git a/third_party/WebKit/Source/platform/scroll/MainThreadScrollingReason.h b/third_party/WebKit/Source/platform/scroll/MainThreadScrollingReason.h
new file mode 100644
index 0000000..d043a42
--- /dev/null
+++ b/third_party/WebKit/Source/platform/scroll/MainThreadScrollingReason.h
@@ -0,0 +1,18 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MainThreadScrollingReason_h
+#define MainThreadScrollingReason_h
+
+#include "cc/input/main_thread_scrolling_reason.h"
+
+namespace blink {
+
+// A wrapper around cc's structure to expose it to core.
+struct MainThreadScrollingReason : public cc::MainThreadScrollingReason {
+};
+
+} // namespace blink
+
+#endif
diff --git a/third_party/WebKit/Source/web/PageOverlay.cpp b/third_party/WebKit/Source/web/PageOverlay.cpp
index 0bcd39e..f44e6ff 100644
--- a/third_party/WebKit/Source/web/PageOverlay.cpp
+++ b/third_party/WebKit/Source/web/PageOverlay.cpp
@@ -35,6 +35,7 @@
#include "platform/graphics/GraphicsContext.h"
#include "platform/graphics/GraphicsLayer.h"
#include "platform/graphics/GraphicsLayerClient.h"
+#include "platform/scroll/MainThreadScrollingReason.h"
#include "public/platform/WebLayer.h"
#include "public/web/WebViewClient.h"
#include "web/WebDevToolsAgentImpl.h"
@@ -85,7 +86,7 @@ void PageOverlay::update()
// This is required for contents of overlay to stay in sync with the page while scrolling.
WebLayer* platformLayer = m_layer->platformLayer();
- platformLayer->addMainThreadScrollingReasons(WebMainThreadScrollingReason::PageOverlay);
+ platformLayer->addMainThreadScrollingReasons(MainThreadScrollingReason::kPageOverlay);
page->frameHost().visualViewport().containerLayer()->addChild(m_layer.get());
}
diff --git a/third_party/WebKit/public/platform/DEPS b/third_party/WebKit/public/platform/DEPS
index b93c3b2..51f379c 100644
--- a/third_party/WebKit/public/platform/DEPS
+++ b/third_party/WebKit/public/platform/DEPS
@@ -1,5 +1,7 @@
include_rules = [
"-bindings",
+ "+cc",
+ "-cc/blink",
"-core",
"-modules",
"+platform",
diff --git a/third_party/WebKit/public/platform/WebLayer.h b/third_party/WebKit/public/platform/WebLayer.h
index 0d40182..617c869 100644
--- a/third_party/WebKit/public/platform/WebLayer.h
+++ b/third_party/WebKit/public/platform/WebLayer.h
@@ -32,7 +32,6 @@
#include "WebCompositorAnimation.h"
#include "WebDoublePoint.h"
#include "WebFloatPoint3D.h"
-#include "WebMainThreadScrollingReason.h"
#include "WebPoint.h"
#include "WebRect.h"
#include "WebScrollBlocksOn.h"
@@ -209,7 +208,7 @@ public:
virtual bool haveScrollEventHandlers() const = 0;
// Indicates that this layer will always scroll on the main thread for the provided reason.
- virtual void addMainThreadScrollingReasons(WebMainThreadScrollingReason::WebMainThreadScrollingReason) = 0;
+ virtual void addMainThreadScrollingReasons(uint32_t) = 0;
// Indicates that the layer could scroll on the compositor thread.
virtual void clearMainThreadScrollingReasons() = 0;
virtual bool shouldScrollOnMainThread() const = 0;
diff --git a/third_party/WebKit/public/platform/WebMainThreadScrollingReason.h b/third_party/WebKit/public/platform/WebMainThreadScrollingReason.h
deleted file mode 100644
index c430d66..0000000
--- a/third_party/WebKit/public/platform/WebMainThreadScrollingReason.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef WebMainThreadScrollingReason_h
-#define WebMainThreadScrollingReason_h
-
-#include "WebCommon.h"
-
-namespace blink {
-
-// Ensure this stays in sync with cc::MainThreadScrollingReason.
-namespace WebMainThreadScrollingReason {
-enum WebMainThreadScrollingReason {
- NotScrollingOnMain = 0,
- HasBackgroundAttachmentFixedObjects = 1 << 0,
- HasNonLayerViewportConstrainedObjects = 1 << 1,
- ThreadedScrollingDisabled = 1 << 2,
- ScrollBarScrolling = 1 << 3,
- PageOverlay = 1 << 4
-};
-} // namespace MainThreadScrollingReason
-
-} // namespace blink
-
-#endif