| Index: third_party/WebKit/Source/web/WebFrameSerializer.cpp
|
| diff --git a/third_party/WebKit/Source/web/WebFrameSerializer.cpp b/third_party/WebKit/Source/web/WebFrameSerializer.cpp
|
| index 08bb2044d4172f0023cc5bf3a4b64cc5ec7ed859..7b5b8b7b0964efb233eeb50d294f1f7704b4962e 100644
|
| --- a/third_party/WebKit/Source/web/WebFrameSerializer.cpp
|
| +++ b/third_party/WebKit/Source/web/WebFrameSerializer.cpp
|
| @@ -81,6 +81,7 @@ class MHTMLFrameSerializerDelegate final : public FrameSerializer::Delegate {
|
| public:
|
| explicit MHTMLFrameSerializerDelegate(
|
| WebFrameSerializer::MHTMLPartsGenerationDelegate&);
|
| + bool shouldIgnoreElement(const Element&) override;
|
| bool shouldIgnoreAttribute(const Element&, const Attribute&) override;
|
| bool rewriteLink(const Element&, String& rewrittenLink) override;
|
| bool shouldSkipResourceWithURL(const KURL&) override;
|
| @@ -96,6 +97,23 @@ MHTMLFrameSerializerDelegate::MHTMLFrameSerializerDelegate(
|
| WebFrameSerializer::MHTMLPartsGenerationDelegate& webDelegate)
|
| : m_webDelegate(webDelegate) {}
|
|
|
| +bool MHTMLFrameSerializerDelegate::shouldIgnoreElement(const Element& element) {
|
| + // Do not include elements that are are set to hidden without affecting layout
|
| + // by the page. For those elements that are hidden by default, they will not
|
| + // be excluded:
|
| + // 1) All elements that are head or part of head, including head, meta, style,
|
| + // link and etc.
|
| + // 2) Some specific elements in body: meta, datalist, option and etc.
|
| + if (element.layoutObject())
|
| + return false;
|
| + if (isHTMLHeadElement(element) || isHTMLMetaElement(element) ||
|
| + isHTMLDataListElement(element) || isHTMLOptionElement(element)) {
|
| + return false;
|
| + }
|
| + Element* parent = element.parentElement();
|
| + return parent && !isHTMLHeadElement(parent);
|
| +}
|
| +
|
| bool MHTMLFrameSerializerDelegate::shouldIgnoreAttribute(
|
| const Element& element,
|
| const Attribute& attribute) {
|
|
|