Index: third_party/WebKit/Source/web/WebPageSerializer.cpp |
diff --git a/third_party/WebKit/Source/web/WebPageSerializer.cpp b/third_party/WebKit/Source/web/WebPageSerializer.cpp |
index 193da0a60ca134135d630398d24c567b403cd21d..c6954126ab227b4c3426e95364bc56011dc3c294 100644 |
--- a/third_party/WebKit/Source/web/WebPageSerializer.cpp |
+++ b/third_party/WebKit/Source/web/WebPageSerializer.cpp |
@@ -88,9 +88,31 @@ static PassRefPtr<SharedBuffer> serializePageToMHTML(Page* page, MHTMLArchive::E |
{ |
Vector<SerializedResource> resources; |
PageSerializer serializer(&resources, adoptPtr(new MHTMLPageSerializerDelegate)); |
- serializer.serialize(page); |
+ |
+ RefPtr<SharedBuffer> output = SharedBuffer::create(); |
+ String boundary = MHTMLArchive::generateMHTMLBoundary(); |
+ |
Document* document = page->deprecatedLocalMainFrame()->document(); |
- return MHTMLArchive::generateMHTMLData(resources, encodingPolicy, document->title(), document->suggestedMIMEType()); |
+ MHTMLArchive::generateMHTMLHeader( |
+ boundary, document->title(), document->suggestedMIMEType(), *output); |
+ |
+ for (Frame* frame = page->deprecatedLocalMainFrame(); frame; frame = frame->tree().traverseNext()) { |
+ // TODO(lukasza): This causes incomplete MHTML for OOPIFs. |
+ // (crbug.com/538766) |
+ if (!frame->isLocalFrame()) |
+ continue; |
+ |
+ resources.clear(); |
+ serializer.serializeFrame(*toLocalFrame(frame)); |
+ |
+ for (const auto& resource : resources) { |
+ MHTMLArchive::generateMHTMLPart( |
+ boundary, encodingPolicy, resource, *output); |
+ } |
+ } |
+ |
+ MHTMLArchive::generateMHTMLFooter(boundary, *output); |
+ return output.release(); |
} |
WebCString WebPageSerializer::serializeToMHTML(WebView* view) |