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

Side by Side Diff: Source/core/page/scrolling/ScrollingConstraints.h

Issue 346603007: Remove position: sticky (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/frame/FrameView.h ('k') | Source/core/page/scrolling/ScrollingConstraints.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 13 matching lines...) Expand all
24 */ 24 */
25 25
26 #ifndef ScrollingConstraints_h 26 #ifndef ScrollingConstraints_h
27 #define ScrollingConstraints_h 27 #define ScrollingConstraints_h
28 28
29 #include "platform/geometry/FloatRect.h" 29 #include "platform/geometry/FloatRect.h"
30 30
31 namespace WebCore { 31 namespace WebCore {
32 32
33 // ViewportConstraints classes encapsulate data and logic required to reposition elements whose layout 33 // ViewportConstraints classes encapsulate data and logic required to reposition elements whose layout
34 // depends on the viewport rect (positions fixed and sticky), when scrolling and zooming. 34 // depends on the viewport rect (i.e., position fixed), when scrolling and zoomi ng.
35 class ViewportConstraints { 35 class ViewportConstraints {
36 public: 36 public:
37 // FIXME: Simplify this code now that position: sticky doesn't exist.
37 enum ConstraintType { 38 enum ConstraintType {
38 FixedPositionConstaint, 39 FixedPositionConstaint,
39 StickyPositionConstraint
40 }; 40 };
41 41
42 enum AnchorEdgeFlags { 42 enum AnchorEdgeFlags {
43 AnchorEdgeLeft = 1 << 0, 43 AnchorEdgeLeft = 1 << 0,
44 AnchorEdgeRight = 1 << 1, 44 AnchorEdgeRight = 1 << 1,
45 AnchorEdgeTop = 1 << 2, 45 AnchorEdgeTop = 1 << 2,
46 AnchorEdgeBottom = 1 << 3 46 AnchorEdgeBottom = 1 << 3
47 }; 47 };
48 typedef unsigned AnchorEdges; 48 typedef unsigned AnchorEdges;
49 49
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 bool operator!=(const FixedPositionViewportConstraints& other) const { retur n !(*this == other); } 104 bool operator!=(const FixedPositionViewportConstraints& other) const { retur n !(*this == other); }
105 105
106 private: 106 private:
107 virtual ConstraintType constraintType() const OVERRIDE { return FixedPositio nConstaint; } 107 virtual ConstraintType constraintType() const OVERRIDE { return FixedPositio nConstaint; }
108 108
109 FloatRect m_viewportRectAtLastLayout; 109 FloatRect m_viewportRectAtLastLayout;
110 FloatPoint m_layerPositionAtLastLayout; 110 FloatPoint m_layerPositionAtLastLayout;
111 }; 111 };
112 112
113 class StickyPositionViewportConstraints FINAL : public ViewportConstraints {
114 public:
115 StickyPositionViewportConstraints()
116 : m_leftOffset(0)
117 , m_rightOffset(0)
118 , m_topOffset(0)
119 , m_bottomOffset(0)
120 { }
121
122 StickyPositionViewportConstraints(const StickyPositionViewportConstraints& o ther)
123 : ViewportConstraints(other)
124 , m_leftOffset(other.m_leftOffset)
125 , m_rightOffset(other.m_rightOffset)
126 , m_topOffset(other.m_topOffset)
127 , m_bottomOffset(other.m_bottomOffset)
128 , m_absoluteContainingBlockRect(other.m_absoluteContainingBlockRect)
129 , m_absoluteStickyBoxRect(other.m_absoluteStickyBoxRect)
130 , m_stickyOffsetAtLastLayout(other.m_stickyOffsetAtLastLayout)
131 , m_layerPositionAtLastLayout(other.m_layerPositionAtLastLayout)
132 { }
133
134 FloatSize computeStickyOffset(const FloatRect& viewportRect) const;
135
136 const FloatSize stickyOffsetAtLastLayout() const { return m_stickyOffsetAtLa stLayout; }
137 void setStickyOffsetAtLastLayout(const FloatSize& offset) { m_stickyOffsetAt LastLayout = offset; }
138
139 FloatPoint layerPositionForViewportRect(const FloatRect& viewportRect) const ;
140
141 const FloatPoint& layerPositionAtLastLayout() const { return m_layerPosition AtLastLayout; }
142 void setLayerPositionAtLastLayout(const FloatPoint& point) { m_layerPosition AtLastLayout = point; }
143
144 float leftOffset() const { return m_leftOffset; }
145 float rightOffset() const { return m_rightOffset; }
146 float topOffset() const { return m_topOffset; }
147 float bottomOffset() const { return m_bottomOffset; }
148
149 void setLeftOffset(float offset) { m_leftOffset = offset; }
150 void setRightOffset(float offset) { m_rightOffset = offset; }
151 void setTopOffset(float offset) { m_topOffset = offset; }
152 void setBottomOffset(float offset) { m_bottomOffset = offset; }
153
154 FloatRect absoluteContainingBlockRect() const { return m_absoluteContainingB lockRect; }
155 void setAbsoluteContainingBlockRect(const FloatRect& rect) { m_absoluteConta iningBlockRect = rect; }
156
157 FloatRect absoluteStickyBoxRect() const { return m_absoluteStickyBoxRect; }
158 void setAbsoluteStickyBoxRect(const FloatRect& rect) { m_absoluteStickyBoxRe ct = rect; }
159
160 bool operator==(const StickyPositionViewportConstraints& other) const
161 {
162 return m_leftOffset == other.m_leftOffset
163 && m_rightOffset == other.m_rightOffset
164 && m_topOffset == other.m_topOffset
165 && m_bottomOffset == other.m_bottomOffset
166 && m_absoluteContainingBlockRect == other.m_absoluteContainingBlockR ect
167 && m_absoluteStickyBoxRect == other.m_absoluteStickyBoxRect
168 && m_stickyOffsetAtLastLayout == other.m_stickyOffsetAtLastLayout
169 && m_layerPositionAtLastLayout == other.m_layerPositionAtLastLayout;
170 }
171
172 bool operator!=(const StickyPositionViewportConstraints& other) const { retu rn !(*this == other); }
173
174 private:
175 virtual ConstraintType constraintType() const OVERRIDE { return StickyPositi onConstraint; }
176
177 float m_leftOffset;
178 float m_rightOffset;
179 float m_topOffset;
180 float m_bottomOffset;
181 FloatRect m_absoluteContainingBlockRect;
182 FloatRect m_absoluteStickyBoxRect;
183 FloatSize m_stickyOffsetAtLastLayout;
184 FloatPoint m_layerPositionAtLastLayout;
185 };
186
187 } // namespace WebCore 113 } // namespace WebCore
188 114
189 #endif // ScrollingConstraints_h 115 #endif // ScrollingConstraints_h
OLDNEW
« no previous file with comments | « Source/core/frame/FrameView.h ('k') | Source/core/page/scrolling/ScrollingConstraints.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698