Chromium Code Reviews| 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 5ae9b75c24659cbfe022424e8fb66b0041688498..184d1dd5a883335be1ea6964c7d1ce60ce31b77d 100644 |
| --- a/third_party/WebKit/Source/web/WebFrameSerializer.cpp |
| +++ b/third_party/WebKit/Source/web/WebFrameSerializer.cpp |
| @@ -61,6 +61,7 @@ |
| #include "platform/wtf/HashMap.h" |
| #include "platform/wtf/HashSet.h" |
| #include "platform/wtf/Noncopyable.h" |
| +#include "platform/wtf/PtrUtil.h" |
| #include "platform/wtf/Vector.h" |
| #include "platform/wtf/text/StringConcatenate.h" |
| #include "public/platform/WebString.h" |
| @@ -73,6 +74,9 @@ |
| #include "public/web/WebFrameSerializerCacheControlPolicy.h" |
| #include "public/web/WebFrameSerializerClient.h" |
| #include "web/WebFrameSerializerImpl.h" |
| +#include "web/WebPageMissingCSSDetector.h" |
| +#include "web/WebPageMissingImageDetector.h" |
| +#include "web/WebPageProblemDetector.h" |
| #include "web/WebRemoteFrameImpl.h" |
| namespace blink { |
| @@ -95,6 +99,7 @@ class MHTMLFrameSerializerDelegate final : public FrameSerializer::Delegate { |
| bool ShouldSkipResource( |
| FrameSerializer::ResourceHasCacheControlNoStoreHeader) override; |
| Vector<Attribute> GetCustomAttributes(const Element&) override; |
| + void VisitNode(const Node*) override; |
|
fgorski
2017/05/30 17:37:50
should we also have visiting done here?
romax
2017/06/01 20:00:06
Done.
|
| private: |
| bool ShouldIgnoreHiddenElement(const Element&); |
| @@ -107,11 +112,17 @@ class MHTMLFrameSerializerDelegate final : public FrameSerializer::Delegate { |
| WebFrameSerializer::MHTMLPartsGenerationDelegate& web_delegate_; |
| bool popup_overlays_skipped_; |
| + WebPageProblemDetectorCollection problem_detectors_; |
| }; |
| MHTMLFrameSerializerDelegate::MHTMLFrameSerializerDelegate( |
| WebFrameSerializer::MHTMLPartsGenerationDelegate& web_delegate) |
| - : web_delegate_(web_delegate), popup_overlays_skipped_(false) {} |
| + : web_delegate_(web_delegate), popup_overlays_skipped_(false) { |
| + if (web_delegate.UsePageProblemDetectors()) { |
| + problem_detectors_.AddDetector(WTF::MakeUnique<MissingCSSDetector>()); |
| + problem_detectors_.AddDetector(WTF::MakeUnique<MissingImageDetector>()); |
| + } |
| +} |
| MHTMLFrameSerializerDelegate::~MHTMLFrameSerializerDelegate() { |
| if (web_delegate_.RemovePopupOverlay()) { |
| @@ -280,6 +291,10 @@ Vector<Attribute> MHTMLFrameSerializerDelegate::GetCustomAttributes( |
| return attributes; |
| } |
| +void MHTMLFrameSerializerDelegate::VisitNode(const Node* node) { |
| + problem_detectors_.VisitNode(node); |
| +} |
| + |
| void MHTMLFrameSerializerDelegate::GetCustomAttributesForImageElement( |
| const HTMLImageElement& element, |
| Vector<Attribute>* attributes) { |