Commit 3d9faf5e authored by Ian Kilpatrick's avatar Ian Kilpatrick Committed by Commit Bot

Remove ComputedStyle ref/deref within LayoutTreeBuilder.

As the LayoutTreeBuilder is only allowed to be stack-allocated, and
doesn't take direct ownership of the ComputedStyle, we can just store a
pointer to the ComputedStyle, instead of a scoped_refptr.

There should be no behaviour change.

Change-Id: Id70a0df625831aaf516b5b2c11537d9fd38498f4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1638617Reviewed-by: default avatarRune Lillesveen <futhark@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#665308}
parent 6b8b3c76
...@@ -47,7 +47,7 @@ namespace blink { ...@@ -47,7 +47,7 @@ namespace blink {
LayoutTreeBuilderForElement::LayoutTreeBuilderForElement(Element& element, LayoutTreeBuilderForElement::LayoutTreeBuilderForElement(Element& element,
ComputedStyle* style) ComputedStyle* style)
: LayoutTreeBuilder(element, nullptr), style_(style) { : LayoutTreeBuilder(element, nullptr, style) {
DCHECK(element.CanParticipateInFlatTree()); DCHECK(element.CanParticipateInFlatTree());
DCHECK(style_); DCHECK(style_);
DCHECK(!style_->IsEnsuredInDisplayNone()); DCHECK(!style_->IsEnsuredInDisplayNone());
......
...@@ -59,8 +59,12 @@ class LayoutTreeBuilder { ...@@ -59,8 +59,12 @@ class LayoutTreeBuilder {
STACK_ALLOCATED(); STACK_ALLOCATED();
protected: protected:
LayoutTreeBuilder(NodeType& node, LayoutObject* layout_object_parent) LayoutTreeBuilder(NodeType& node,
: node_(node), layout_object_parent_(layout_object_parent) { LayoutObject* layout_object_parent,
ComputedStyle* style)
: node_(node),
layout_object_parent_(layout_object_parent),
style_(style) {
DCHECK(!node.GetLayoutObject()); DCHECK(!node.GetLayoutObject());
DCHECK(node.GetDocument().InStyleRecalc()); DCHECK(node.GetDocument().InStyleRecalc());
DCHECK(node.InActiveDocument()); DCHECK(node.InActiveDocument());
...@@ -92,6 +96,7 @@ class LayoutTreeBuilder { ...@@ -92,6 +96,7 @@ class LayoutTreeBuilder {
Member<NodeType> node_; Member<NodeType> node_;
LayoutObject* layout_object_parent_; LayoutObject* layout_object_parent_;
ComputedStyle* style_;
}; };
class LayoutTreeBuilderForElement : public LayoutTreeBuilder<Element> { class LayoutTreeBuilderForElement : public LayoutTreeBuilder<Element> {
...@@ -108,8 +113,6 @@ class LayoutTreeBuilderForElement : public LayoutTreeBuilder<Element> { ...@@ -108,8 +113,6 @@ class LayoutTreeBuilderForElement : public LayoutTreeBuilder<Element> {
LayoutObject* NextLayoutObject() const; LayoutObject* NextLayoutObject() const;
bool ShouldCreateLayoutObject() const; bool ShouldCreateLayoutObject() const;
void CreateLayoutObject(LegacyLayout); void CreateLayoutObject(LegacyLayout);
scoped_refptr<ComputedStyle> style_;
}; };
class LayoutTreeBuilderForText : public LayoutTreeBuilder<Text> { class LayoutTreeBuilderForText : public LayoutTreeBuilder<Text> {
...@@ -117,14 +120,12 @@ class LayoutTreeBuilderForText : public LayoutTreeBuilder<Text> { ...@@ -117,14 +120,12 @@ class LayoutTreeBuilderForText : public LayoutTreeBuilder<Text> {
LayoutTreeBuilderForText(Text& text, LayoutTreeBuilderForText(Text& text,
LayoutObject* layout_parent, LayoutObject* layout_parent,
ComputedStyle* style_from_parent) ComputedStyle* style_from_parent)
: LayoutTreeBuilder(text, layout_parent), style_(style_from_parent) {} : LayoutTreeBuilder(text, layout_parent, style_from_parent) {}
void CreateLayoutObject(); void CreateLayoutObject();
private: private:
LayoutObject* CreateInlineWrapperForDisplayContentsIfNeeded(); LayoutObject* CreateInlineWrapperForDisplayContentsIfNeeded();
scoped_refptr<ComputedStyle> style_;
}; };
} // namespace blink } // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment