Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(723)

Unified Diff: third_party/WebKit/Source/platform/graphics/paint/ScrollPaintPropertyNode.h

Issue 2345403003: Add background attachment fixed main thread scrolling reason [spv2] (Closed)
Patch Set: Update test that was written for PaintArtifactCompositor's reasons update Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/graphics/paint/ScrollPaintPropertyNode.h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ScrollPaintPropertyNode.h b/third_party/WebKit/Source/platform/graphics/paint/ScrollPaintPropertyNode.h
index ce043ce2e8a411e156c0fe32d246d0d2142cc473..00d2d2cc27bf56b86c6186e2e8a534d50d3fc5f0 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ScrollPaintPropertyNode.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/ScrollPaintPropertyNode.h
@@ -8,6 +8,7 @@
#include "platform/PlatformExport.h"
#include "platform/geometry/FloatSize.h"
#include "platform/graphics/paint/TransformPaintPropertyNode.h"
+#include "platform/scroll/MainThreadScrollingReason.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
#include "wtf/RefPtr.h"
@@ -16,13 +17,19 @@
namespace blink {
-// A scroll node contains auxiliary scrolling information for compositor-thread
-// scrolling and includes how far an area can be scrolled, which
-// |TransformPaintPropertyNode| contains the scroll offset, etc.
+using MainThreadScrollingReasons = uint32_t;
+
+// A scroll node contains auxiliary scrolling information for threaded scrolling
+// which includes how far an area can be scrolled, which transform node contains
+// the scroll offset, etc.
+//
+// Main thread scrolling reasons force scroll updates to go to the main thread
+// and can have dependencies on other nodes. For example, all parents of a
+// scroll node with background attachment fixed set should also have it set.
class PLATFORM_EXPORT ScrollPaintPropertyNode : public RefCounted<ScrollPaintPropertyNode> {
public:
static PassRefPtr<ScrollPaintPropertyNode> create(
- PassRefPtr<const ScrollPaintPropertyNode> parent,
+ PassRefPtr<ScrollPaintPropertyNode> parent,
PassRefPtr<const TransformPaintPropertyNode> scrollOffsetTranslation,
const IntSize& clip,
const IntSize& bounds,
@@ -32,7 +39,7 @@ public:
return adoptRef(new ScrollPaintPropertyNode(std::move(parent), std::move(scrollOffsetTranslation), clip, bounds, userScrollableHorizontal, userScrollableVertical));
}
- void update(PassRefPtr<const ScrollPaintPropertyNode> parent, PassRefPtr<const TransformPaintPropertyNode> scrollOffsetTranslation, const IntSize& clip, const IntSize& bounds, bool userScrollableHorizontal, bool userScrollableVertical)
+ void update(PassRefPtr<ScrollPaintPropertyNode> parent, PassRefPtr<const TransformPaintPropertyNode> scrollOffsetTranslation, const IntSize& clip, const IntSize& bounds, bool userScrollableHorizontal, bool userScrollableVertical)
{
DCHECK(parent != this);
m_parent = parent;
@@ -42,9 +49,10 @@ public:
m_bounds = bounds;
m_userScrollableHorizontal = userScrollableHorizontal;
m_userScrollableVertical = userScrollableVertical;
+ m_mainThreadScrollingReasons = 0;
}
- const ScrollPaintPropertyNode* parent() const { return m_parent.get(); }
+ ScrollPaintPropertyNode* parent() const { return m_parent.get(); }
// Transform that the scroll is relative to.
const TransformPaintPropertyNode* scrollOffsetTranslation() const { return m_scrollOffsetTranslation.get(); }
@@ -58,9 +66,23 @@ public:
bool userScrollableHorizontal() const { return m_userScrollableHorizontal; }
bool userScrollableVertical() const { return m_userScrollableVertical; }
+ // Return reason bitfield with values from cc::MainThreadScrollingReason.
+ MainThreadScrollingReasons mainThreadScrollingReasons() const
+ {
+ return m_mainThreadScrollingReasons;
+ }
+ bool hasMainThreadScrollingReasons(MainThreadScrollingReasons reasons) const
+ {
+ return m_mainThreadScrollingReasons & reasons;
+ }
+ void addMainThreadScrollingReasons(MainThreadScrollingReasons reasons)
+ {
+ m_mainThreadScrollingReasons |= reasons;
+ }
+
private:
ScrollPaintPropertyNode(
- PassRefPtr<const ScrollPaintPropertyNode> parent,
+ PassRefPtr<ScrollPaintPropertyNode> parent,
PassRefPtr<const TransformPaintPropertyNode> scrollOffsetTranslation,
IntSize clip,
IntSize bounds,
@@ -72,17 +94,18 @@ private:
, m_bounds(bounds)
, m_userScrollableHorizontal(userScrollableHorizontal)
, m_userScrollableVertical(userScrollableVertical)
+ , m_mainThreadScrollingReasons(0)
{
DCHECK(m_scrollOffsetTranslation->matrix().isIdentityOr2DTranslation());
}
- RefPtr<const ScrollPaintPropertyNode> m_parent;
+ RefPtr<ScrollPaintPropertyNode> m_parent;
RefPtr<const TransformPaintPropertyNode> m_scrollOffsetTranslation;
IntSize m_clip;
IntSize m_bounds;
bool m_userScrollableHorizontal;
bool m_userScrollableVertical;
- // TODO(pdr): Add main thread scrolling reasons.
+ MainThreadScrollingReasons m_mainThreadScrollingReasons;
// TODO(pdr): Add an offset for the clip and bounds to the transform.
// TODO(pdr): Add 2 bits for whether this is a viewport scroll node.
// TODO(pdr): Add a bit for whether this is affected by page scale.
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698