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

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

Issue 2365083002: Make NGFragment to own NGPhysicalFragment (Closed)
Patch Set: Created 4 years, 3 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
Index: third_party/WebKit/Source/core/layout/ng/ng_box.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_box.cc b/third_party/WebKit/Source/core/layout/ng/ng_box.cc
index 3c9667beefb82b6b1d7eaa7eda8b6b979216f057..9c48f611a9dc8cba1307fe4b46dcf26739819567 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_box.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_box.cc
@@ -24,10 +24,11 @@ NGBox::NGBox(ComputedStyle* style) : layout_box_(nullptr), style_(style) {
DCHECK(style_);
}
-bool NGBox::Layout(const NGConstraintSpace* constraint_space,
- NGFragment** out) {
+bool NGBox::Layout(const NGConstraintSpace* constraint_space) {
if (layout_box_ && layout_box_->isOutOfFlowPositioned())
layout_box_->containingBlock()->insertPositionedObject(layout_box_);
+
+ NGPhysicalFragment* physical_fragment = nullptr;
// We can either use the new layout code to do the layout and then copy the
// resulting size to the LayoutObject, or use the old layout code and
// synthesize a fragment.
@@ -35,32 +36,30 @@ bool NGBox::Layout(const NGConstraintSpace* constraint_space,
if (!algorithm_)
algorithm_ = new NGBlockLayoutAlgorithm(Style(), FirstChild());
// Change the coordinate system of the constraint space.
- NGConstraintSpace* child_constraint_space = new NGConstraintSpace(
+ NGConstraintSpace child_constraint_space(
FromPlatformWritingMode(Style()->getWritingMode()),
FromPlatformDirection(Style()->direction()), constraint_space);
- NGPhysicalFragment* fragment = nullptr;
- if (!algorithm_->Layout(child_constraint_space, &fragment))
+ if (!algorithm_->Layout(child_constraint_space, &physical_fragment))
return false;
- fragment_ = fragment;
if (layout_box_) {
- layout_box_->setWidth(fragment_->Width());
- layout_box_->setHeight(fragment_->Height());
+ layout_box_->setWidth(physical_fragment->Width());
+ layout_box_->setHeight(physical_fragment->Height());
NGBoxStrut border_and_padding =
computeBorders(*Style()) +
computePadding(*constraint_space, *Style());
LayoutUnit intrinsic_logical_height =
layout_box_->style()->isHorizontalWritingMode()
- ? fragment_->HeightOverflow()
- : fragment_->WidthOverflow();
+ ? physical_fragment->HeightOverflow()
+ : physical_fragment->WidthOverflow();
intrinsic_logical_height -= border_and_padding.BlockSum();
layout_box_->setIntrinsicContentLogicalHeight(intrinsic_logical_height);
// Ensure the position of the children are copied across to the
// LayoutObject tree.
for (NGBox* box = FirstChild(); box; box = box->NextSibling()) {
- if (box->fragment_)
+ if (box->Fragment())
box->PositionUpdated();
}
@@ -96,11 +95,11 @@ bool NGBox::Layout(const NGConstraintSpace* constraint_space,
FromPlatformWritingMode(layout_box_->styleRef().getWritingMode()))
.SetInlineOverflow(overflow.width())
.SetBlockOverflow(overflow.height());
- fragment_ = builder.ToFragment();
+ physical_fragment = builder.ToFragment();
}
- *out = new NGFragment(constraint_space->WritingMode(),
- FromPlatformDirection(Style()->direction()),
- fragment_.get());
+ fragment_ = new NGFragment(constraint_space->WritingMode(),
+ FromPlatformDirection(Style()->direction()),
+ physical_fragment);
// Reset algorithm for future use
algorithm_ = nullptr;
return true;
@@ -141,9 +140,9 @@ void NGBox::SetFirstChild(NGBox* child) {
}
void NGBox::PositionUpdated() {
- if (layout_box_) {
- layout_box_->setX(fragment_->LeftOffset());
- layout_box_->setY(fragment_->TopOffset());
+ if (layout_box_ && fragment_->PhysicalFragment()) {
cbiesinger 2016/09/26 17:17:55 Can PhysicalFragment() ever be null?
+ layout_box_->setX(fragment_->PhysicalFragment()->LeftOffset());
+ layout_box_->setY(fragment_->PhysicalFragment()->TopOffset());
}
}

Powered by Google App Engine
This is Rietveld 408576698