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

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc

Issue 2954953002: [LayoutNG] Abort a layout once the BFC offset is resolved. (Closed)
Patch Set: ./ Created 3 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
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 #include "core/layout/ng/ng_fragment_builder.h" 5 #include "core/layout/ng/ng_fragment_builder.h"
6 6
7 #include "core/layout/ng/inline/ng_physical_text_fragment.h" 7 #include "core/layout/ng/inline/ng_physical_text_fragment.h"
8 #include "core/layout/ng/ng_block_break_token.h" 8 #include "core/layout/ng/ng_block_break_token.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_break_token.h" 10 #include "core/layout/ng/ng_break_token.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 oof_positioned_candidates_.push_back(NGOutOfFlowPositionedCandidate{ 140 oof_positioned_candidates_.push_back(NGOutOfFlowPositionedCandidate{
141 NGOutOfFlowPositionedDescendant{ 141 NGOutOfFlowPositionedDescendant{
142 child, NGStaticPosition::Create(writing_mode_, direction_, 142 child, NGStaticPosition::Create(writing_mode_, direction_,
143 NGPhysicalOffset())}, 143 NGPhysicalOffset())},
144 child_offset}); 144 child_offset});
145 145
146 child.SaveStaticOffsetForLegacy(child_offset); 146 child.SaveStaticOffsetForLegacy(child_offset);
147 return *this; 147 return *this;
148 } 148 }
149 149
150 NGFragmentBuilder& NGFragmentBuilder::AddUnpositionedFloat(
151 RefPtr<NGUnpositionedFloat> unpositioned_float) {
152 unpositioned_floats_.push_back(std::move(unpositioned_float));
153 return *this;
154 }
155
156 void NGFragmentBuilder::GetAndClearOutOfFlowDescendantCandidates( 150 void NGFragmentBuilder::GetAndClearOutOfFlowDescendantCandidates(
157 Vector<NGOutOfFlowPositionedDescendant>* descendant_candidates) { 151 Vector<NGOutOfFlowPositionedDescendant>* descendant_candidates) {
158 DCHECK(descendant_candidates->IsEmpty()); 152 DCHECK(descendant_candidates->IsEmpty());
159 153
160 descendant_candidates->ReserveCapacity(oof_positioned_candidates_.size()); 154 descendant_candidates->ReserveCapacity(oof_positioned_candidates_.size());
161 155
162 DCHECK_GE(size_.inline_size, LayoutUnit()); 156 DCHECK_GE(size_.inline_size, LayoutUnit());
163 DCHECK_GE(size_.block_size, LayoutUnit()); 157 DCHECK_GE(size_.block_size, LayoutUnit());
164 NGPhysicalSize builder_physical_size{size_.ConvertToPhysical(writing_mode_)}; 158 NGPhysicalSize builder_physical_size{size_.ConvertToPhysical(writing_mode_)};
165 159
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 positioned_float.logical_offset.ConvertToPhysical( 219 positioned_float.logical_offset.ConvertToPhysical(
226 writing_mode_, direction_, physical_size, 220 writing_mode_, direction_, physical_size,
227 floating_fragment->Size())); 221 floating_fragment->Size()));
228 } 222 }
229 223
230 RefPtr<NGPhysicalBoxFragment> fragment = AdoptRef(new NGPhysicalBoxFragment( 224 RefPtr<NGPhysicalBoxFragment> fragment = AdoptRef(new NGPhysicalBoxFragment(
231 layout_object_, physical_size, overflow_.ConvertToPhysical(writing_mode_), 225 layout_object_, physical_size, overflow_.ConvertToPhysical(writing_mode_),
232 children_, positioned_floats_, border_edges_.ToPhysical(writing_mode_), 226 children_, positioned_floats_, border_edges_.ToPhysical(writing_mode_),
233 std::move(break_token))); 227 std::move(break_token)));
234 228
235 return AdoptRef( 229 return AdoptRef(new NGLayoutResult(
236 new NGLayoutResult(std::move(fragment), oof_positioned_descendants_, 230 std::move(fragment), oof_positioned_descendants_, unpositioned_floats_,
237 unpositioned_floats_, bfc_offset_, end_margin_strut_)); 231 bfc_offset_, end_margin_strut_, NGLayoutResult::kSuccess));
232 }
233
234 RefPtr<NGLayoutResult> NGFragmentBuilder::Abort(
235 NGLayoutResult::NGLayoutResultStatus status) {
236 return AdoptRef(new NGLayoutResult(
237 nullptr, Vector<NGOutOfFlowPositionedDescendant>(), unpositioned_floats_,
238 bfc_offset_, end_margin_strut_, status));
238 } 239 }
239 240
240 } // namespace blink 241 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698