Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp |
| diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp b/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp |
| index c58604cddcba2c973a70bf50e5b9cffcf2e86fa8..f49494c46d9d20caa7c5918570dcbc85e71c9c64 100644 |
| --- a/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp |
| +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp |
| @@ -39,6 +39,7 @@ using namespace HTMLNames; |
| inline HTMLIFrameElement::HTMLIFrameElement(Document& document) |
| : HTMLFrameElementBase(iframeTag, document), |
| did_load_non_empty_document_(false), |
| + collapsed_by_client_(false), |
| sandbox_(HTMLIFrameElementSandbox::Create(this)), |
| allow_(HTMLIFrameElementAllow::Create(this)), |
| referrer_policy_(kReferrerPolicyDefault) {} |
| @@ -54,6 +55,17 @@ DEFINE_TRACE(HTMLIFrameElement) { |
| HTMLIFrameElement::~HTMLIFrameElement() {} |
| +void HTMLIFrameElement::SetCollapsedByClient(bool collapse) { |
| + if (collapsed_by_client_ == collapse) |
| + return; |
| + |
| + collapsed_by_client_ = collapse; |
| + if (GetDocument().InStyleRecalc()) |
|
dcheng
2017/05/10 06:59:46
As this happens as a response to an IPC, I don't s
engedy
2017/05/15 13:35:51
Done and added a DCHECK.
|
| + ReattachLayoutTree(); |
| + else |
| + LazyReattachIfAttached(); |
| +} |
| + |
| DOMTokenList* HTMLIFrameElement::sandbox() const { |
| return sandbox_.Get(); |
| } |
| @@ -168,7 +180,8 @@ void HTMLIFrameElement::ParseAttribute( |
| } |
| bool HTMLIFrameElement::LayoutObjectIsNeeded(const ComputedStyle& style) { |
| - return ContentFrame() && HTMLElement::LayoutObjectIsNeeded(style); |
| + return ContentFrame() && !collapsed_by_client_ && |
| + HTMLElement::LayoutObjectIsNeeded(style); |
| } |
| LayoutObject* HTMLIFrameElement::CreateLayoutObject(const ComputedStyle&) { |