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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc

Issue 2752123002: [LayoutNG] Move NGFloatingObject off Oilpan (Closed)
Patch Set: more comments Created 3 years, 9 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 | « no previous file | third_party/WebKit/Source/core/layout/ng/ng_block_node.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
index d752903010b5d5e138176f9608baa08d5a05ce5c..548653cc53791769e06c5724175ec75e0f7b55e5 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
@@ -163,6 +163,7 @@ NGLogicalOffset CalculateLogicalOffsetForOpportunity(
const LayoutUnit float_offset,
const NGLogicalOffset& from_offset,
NGFloatingObject* floating_object) {
+ DCHECK(floating_object);
auto margins = floating_object->margins;
// Adjust to child's margin.
LayoutUnit inline_offset = margins.inline_start;
@@ -187,6 +188,7 @@ NGLogicalOffset PositionFloat(const NGLogicalOffset& origin_point,
const NGLogicalOffset& from_offset,
NGFloatingObject* floating_object,
NGConstraintSpace* new_parent_space) {
+ DCHECK(floating_object);
const auto* float_space = floating_object->space.get();
DCHECK(floating_object->fragment) << "Fragment cannot be null here";
@@ -220,10 +222,10 @@ NGLogicalOffset PositionFloat(const NGLogicalOffset& origin_point,
// Updates the Floating Object's left offset from the provided parent_space
// and {@code floating_object}'s space and margins.
-void UpdateFloatingObjectLeftOffset(
- const NGConstraintSpace& new_parent_space,
- const Persistent<NGFloatingObject>& floating_object,
- const NGLogicalOffset& float_logical_offset) {
+void UpdateFloatingObjectLeftOffset(const NGConstraintSpace& new_parent_space,
+ const NGLogicalOffset& float_logical_offset,
+ NGFloatingObject* floating_object) {
+ DCHECK(floating_object);
// TODO(glebl): We should use physical offset here.
floating_object->left_offset =
floating_object->original_parent_space->BfcOffset().inline_offset -
@@ -250,10 +252,10 @@ void PositionPendingFloats(const LayoutUnit origin_point_block_offset,
original_parent_space->BfcOffset().inline_offset, bfc_block_offset};
NGLogicalOffset float_fragment_offset = PositionFloat(
- origin_point, from_offset, floating_object, new_parent_space);
+ origin_point, from_offset, floating_object.get(), new_parent_space);
builder->AddFloatingObject(floating_object, float_fragment_offset);
- UpdateFloatingObjectLeftOffset(*new_parent_space, floating_object,
- float_fragment_offset);
+ UpdateFloatingObjectLeftOffset(*new_parent_space, float_fragment_offset,
+ floating_object.get());
}
builder->MutableUnpositionedFloats().clear();
}
@@ -534,7 +536,7 @@ void NGBlockLayoutAlgorithm::FinishChildLayout(
if (child->Type() == NGLayoutInputNode::kLegacyBlock &&
toNGBlockNode(child)->Style().isFloating()) {
- NGFloatingObject* floating_object = new NGFloatingObject(
+ RefPtr<NGFloatingObject> floating_object = NGFloatingObject::Create(
child_space, constraint_space_, toNGBlockNode(child)->Style(),
curr_child_margins_, layout_result->PhysicalFragment().get());
builder_.AddUnpositionedFloat(floating_object);
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/ng/ng_block_node.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698