summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanakj <danakj@chromium.org>2016-01-23 15:24:50 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-23 23:27:01 +0000
commit0536dbbcab956b879d2bee49f7e4629cf753a9fa (patch)
treeb9aa4a6f53a37a1a4b84e6914278c556653d62aa
parent5a0fcb946fdfed53928aba52fb08d18452e4e78c (diff)
downloadchromium_src-0536dbbcab956b879d2bee49f7e4629cf753a9fa.zip
chromium_src-0536dbbcab956b879d2bee49f7e4629cf753a9fa.tar.gz
chromium_src-0536dbbcab956b879d2bee49f7e4629cf753a9fa.tar.bz2
blink: Make WebMainThreadScrollingReason wrap the cc enum.
This moves the WebMainThreadScrollingReason from public/platform/ to platform/scroll/, as it is no longer used in the WebLayer API explicitly, and renames it to just MainThreadScrollingReason. We change the type to be an alias for the cc type instead of maintaining static asserts that they match. Depends on: https://codereview.chromium.org/1604053002/ CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1602773006 Cr-Commit-Position: refs/heads/master@{#371151}
-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