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

Side by Side Diff: third_party/WebKit/Source/core/page/scrolling/StickyPositionScrollingConstraints.h

Issue 2911463002: Unify the calculation of main thread offset of sticky element (Closed)
Patch Set: Move sticky offset computation into method in StickyPositionScrollingConstraints Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef StickyPositionScrollingConstraints_h 5 #ifndef StickyPositionScrollingConstraints_h
6 #define StickyPositionScrollingConstraints_h 6 #define StickyPositionScrollingConstraints_h
7 7
8 #include "platform/geometry/FloatRect.h" 8 #include "platform/geometry/FloatRect.h"
9 #include "platform/geometry/FloatSize.h" 9 #include "platform/geometry/FloatSize.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 class LayoutBoxModelObject; 13 class LayoutBoxModelObject;
14 class PaintLayer;
14 15
15 class StickyPositionScrollingConstraints final { 16 class StickyPositionScrollingConstraints final {
16 public: 17 public:
17 enum AnchorEdgeFlags { 18 enum AnchorEdgeFlags {
18 kAnchorEdgeLeft = 1 << 0, 19 kAnchorEdgeLeft = 1 << 0,
19 kAnchorEdgeRight = 1 << 1, 20 kAnchorEdgeRight = 1 << 1,
20 kAnchorEdgeTop = 1 << 2, 21 kAnchorEdgeTop = 1 << 2,
21 kAnchorEdgeBottom = 1 << 3 22 kAnchorEdgeBottom = 1 << 3
22 }; 23 };
23 typedef unsigned AnchorEdges; 24 typedef unsigned AnchorEdges;
(...skipping 25 matching lines...) Expand all
49 total_sticky_box_sticky_offset_(other.total_sticky_box_sticky_offset_), 50 total_sticky_box_sticky_offset_(other.total_sticky_box_sticky_offset_),
50 total_containing_block_sticky_offset_( 51 total_containing_block_sticky_offset_(
51 other.total_containing_block_sticky_offset_) {} 52 other.total_containing_block_sticky_offset_) {}
52 53
53 FloatSize ComputeStickyOffset( 54 FloatSize ComputeStickyOffset(
54 const FloatRect& viewport_rect, 55 const FloatRect& viewport_rect,
55 const StickyPositionScrollingConstraints* ancestor_sticky_box_constraints, 56 const StickyPositionScrollingConstraints* ancestor_sticky_box_constraints,
56 const StickyPositionScrollingConstraints* 57 const StickyPositionScrollingConstraints*
57 ancestor_containing_block_constraints); 58 ancestor_containing_block_constraints);
58 59
60 FloatSize ComputeMainThreadStickyOffset(
flackr 2017/06/02 15:33:58 Let's make this like GetTotalStickyBoxStickyOffset
yigu 2017/06/02 17:59:56 Done.
61 const PaintLayer& ancestor_overflow_layer) const;
62
59 bool HasAncestorStickyElement() const { 63 bool HasAncestorStickyElement() const {
60 return nearest_sticky_box_shifting_sticky_box_ || 64 return nearest_sticky_box_shifting_sticky_box_ ||
61 nearest_sticky_box_shifting_containing_block_; 65 nearest_sticky_box_shifting_containing_block_;
62 } 66 }
63 67
64 AnchorEdges GetAnchorEdges() const { return anchor_edges_; } 68 AnchorEdges GetAnchorEdges() const { return anchor_edges_; }
65 bool HasAnchorEdge(AnchorEdgeFlags flag) const { 69 bool HasAnchorEdge(AnchorEdgeFlags flag) const {
66 return anchor_edges_ & flag; 70 return anchor_edges_ & flag;
67 } 71 }
68 void AddAnchorEdge(AnchorEdgeFlags edge_flag) { anchor_edges_ |= edge_flag; } 72 void AddAnchorEdge(AnchorEdgeFlags edge_flag) { anchor_edges_ |= edge_flag; }
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // constraining block constriant rect for different sticky descendants is 181 // constraining block constriant rect for different sticky descendants is
178 // quite complex. See the StickyPositionComplexTableNesting test in 182 // quite complex. See the StickyPositionComplexTableNesting test in
179 // LayoutBoxModelObjectTest.cpp. 183 // LayoutBoxModelObjectTest.cpp.
180 FloatSize total_sticky_box_sticky_offset_; 184 FloatSize total_sticky_box_sticky_offset_;
181 FloatSize total_containing_block_sticky_offset_; 185 FloatSize total_containing_block_sticky_offset_;
182 }; 186 };
183 187
184 } // namespace blink 188 } // namespace blink
185 189
186 #endif // StickyPositionScrollingConstraints_h 190 #endif // StickyPositionScrollingConstraints_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698