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) { |