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

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h

Issue 2644933005: Fix google.com rendering: UpdatePosition for descendants (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 NGBlockLayoutAlgorithm_h 5 #ifndef NGBlockLayoutAlgorithm_h
6 #define NGBlockLayoutAlgorithm_h 6 #define NGBlockLayoutAlgorithm_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/layout/ng/ng_block_node.h" 9 #include "core/layout/ng/ng_block_node.h"
10 #include "core/layout/ng/ng_layout_algorithm.h" 10 #include "core/layout/ng/ng_layout_algorithm.h"
11 #include "core/layout/ng/ng_units.h" 11 #include "core/layout/ng/ng_units.h"
12 #include "wtf/RefPtr.h" 12 #include "wtf/RefPtr.h"
13 13
14 namespace blink { 14 namespace blink {
15 15
16 class ComputedStyle; 16 class ComputedStyle;
17 class NGBlockBreakToken; 17 class NGBlockBreakToken;
18 class NGBreakToken; 18 class NGBreakToken;
19 class NGColumnMapper; 19 class NGColumnMapper;
20 class NGConstraintSpace; 20 class NGConstraintSpace;
21 class NGConstraintSpaceBuilder; 21 class NGConstraintSpaceBuilder;
22 class NGBoxFragment; 22 class NGBoxFragment;
23 class NGFragmentBuilder; 23 class NGFragmentBuilder;
24 class NGOutOfFlowLayoutPart;
25 class NGPhysicalFragment; 24 class NGPhysicalFragment;
26 25
27 // A class for general block layout (e.g. a <div> with no special style). 26 // A class for general block layout (e.g. a <div> with no special style).
28 // Lays out the children in sequence. 27 // Lays out the children in sequence.
29 class CORE_EXPORT NGBlockLayoutAlgorithm : public NGLayoutAlgorithm { 28 class CORE_EXPORT NGBlockLayoutAlgorithm : public NGLayoutAlgorithm {
30 public: 29 public:
31 // Default constructor. 30 // Default constructor.
32 // @param style Style reference of the block that is being laid out. 31 // @param style Style reference of the block that is being laid out.
33 // @param first_child Our first child; the algorithm will use its NextSibling 32 // @param first_child Our first child; the algorithm will use its NextSibling
34 // method to access all the children. 33 // method to access all the children.
35 // @param space The constraint space which the algorithm should generate a 34 // @param space The constraint space which the algorithm should generate a
36 // fragment within. 35 // fragment within.
37 NGBlockLayoutAlgorithm(PassRefPtr<const ComputedStyle>, 36 NGBlockLayoutAlgorithm(PassRefPtr<const ComputedStyle>,
38 NGBlockNode* first_child, 37 NGBlockNode* first_child,
39 NGConstraintSpace* space, 38 NGConstraintSpace* space,
40 NGBreakToken* break_token = nullptr); 39 NGBreakToken* break_token = nullptr);
41 40
42 bool ComputeMinAndMaxContentSizes(MinAndMaxContentSizes*) override; 41 bool ComputeMinAndMaxContentSizes(MinAndMaxContentSizes*) override;
43 NGLayoutStatus Layout(NGPhysicalFragment*, 42 NGLayoutStatus Layout(NGPhysicalFragment*,
44 NGPhysicalFragment**, 43 NGPhysicalFragment**,
45 NGLayoutAlgorithm**) override; 44 NGLayoutAlgorithm**) override;
46 45
47 DECLARE_VIRTUAL_TRACE(); 46 DECLARE_VIRTUAL_TRACE();
48 47
49 private: 48 private:
50 // Creates a new constraint space for the current child. 49 // Creates a new constraint space for the current child.
51 NGConstraintSpace* CreateConstraintSpaceForCurrentChild() const; 50 NGConstraintSpace* CreateConstraintSpaceForCurrentChild() const;
52 void FinishCurrentChildLayout(NGFragment* fragment); 51 void FinishCurrentChildLayout(NGFragment* fragment);
53 bool LayoutOutOfFlowChild(); 52 HeapLinkedHashSet<WeakMember<NGBlockNode>> LayoutOutOfFlowChildren();
54 53
55 // Proceed to the next sibling that still needs layout. 54 // Proceed to the next sibling that still needs layout.
56 // 55 //
57 // @param child_fragment The newly created fragment for the current child. 56 // @param child_fragment The newly created fragment for the current child.
58 // @return true if we can continue to lay out, or false if we need to abort 57 // @return true if we can continue to lay out, or false if we need to abort
59 // due to a fragmentainer break. 58 // due to a fragmentainer break.
60 bool ProceedToNextUnfinishedSibling(NGPhysicalFragment* child_fragment); 59 bool ProceedToNextUnfinishedSibling(NGPhysicalFragment* child_fragment);
61 60
62 // Set a break token which contains enough information to be able to resume 61 // Set a break token which contains enough information to be able to resume
63 // layout in the next fragmentainer. 62 // layout in the next fragmentainer.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 Member<NGConstraintSpace> constraint_space_; 151 Member<NGConstraintSpace> constraint_space_;
153 152
154 // The break token from which we are currently resuming layout. 153 // The break token from which we are currently resuming layout.
155 Member<NGBreakToken> break_token_; 154 Member<NGBreakToken> break_token_;
156 155
157 Member<NGFragmentBuilder> builder_; 156 Member<NGFragmentBuilder> builder_;
158 Member<NGConstraintSpaceBuilder> space_builder_; 157 Member<NGConstraintSpaceBuilder> space_builder_;
159 Member<NGConstraintSpace> space_for_current_child_; 158 Member<NGConstraintSpace> space_for_current_child_;
160 Member<NGBlockNode> current_child_; 159 Member<NGBlockNode> current_child_;
161 160
162 Member<NGOutOfFlowLayoutPart> out_of_flow_layout_;
163 HeapLinkedHashSet<WeakMember<NGBlockNode>> out_of_flow_candidates_;
164 Vector<NGStaticPosition> out_of_flow_candidate_positions_;
165 size_t out_of_flow_candidate_positions_index_;
166
167 // Mapper from the fragmented flow coordinate space coordinates to visual 161 // Mapper from the fragmented flow coordinate space coordinates to visual
168 // coordinates. Only set on fragmentation context roots, such as multicol 162 // coordinates. Only set on fragmentation context roots, such as multicol
169 // containers. Keeps track of the current fragmentainer. 163 // containers. Keeps track of the current fragmentainer.
170 Member<NGColumnMapper> fragmentainer_mapper_; 164 Member<NGColumnMapper> fragmentainer_mapper_;
171 165
172 NGBoxStrut border_and_padding_; 166 NGBoxStrut border_and_padding_;
173 LayoutUnit content_size_; 167 LayoutUnit content_size_;
174 LayoutUnit max_inline_size_; 168 LayoutUnit max_inline_size_;
175 // MarginStrut for the previous child. 169 // MarginStrut for the previous child.
176 NGMarginStrut prev_child_margin_strut_; 170 NGMarginStrut prev_child_margin_strut_;
177 // Whether the block-start was set for the currently built 171 // Whether the block-start was set for the currently built
178 // fragment's margin strut. 172 // fragment's margin strut.
179 bool is_fragment_margin_strut_block_start_updated_ : 1; 173 bool is_fragment_margin_strut_block_start_updated_ : 1;
180 }; 174 };
181 175
182 } // namespace blink 176 } // namespace blink
183 177
184 #endif // NGBlockLayoutAlgorithm_h 178 #endif // NGBlockLayoutAlgorithm_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698