| 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 5e0e3fec455dbc5cec720af033f99c25a4b4ca0e..f9a3421ebde664b04d632785409aa68421a32d52 100644
|
| --- a/third_party/WebKit/Source/web/WebPageSerializer.cpp
|
| +++ b/third_party/WebKit/Source/web/WebPageSerializer.cpp
|
| @@ -173,9 +173,26 @@ WebData WebPageSerializer::generateMHTMLHeader(
|
| return PassRefPtr<SharedBuffer>(buffer);
|
| }
|
|
|
| +WebVector<WebURL> WebPageSerializer::enumerateMHTMLResources(WebLocalFrame* webFrame)
|
| +{
|
| + Vector<SerializedResource> resources;
|
| + PageSerializer serializer(resources, nullptr);
|
| + serializer.serializeFrame(*toWebLocalFrameImpl(webFrame)->frame());
|
| +
|
| + Vector<WebURL> result;
|
| + for (size_t i = 0; i < resources.size(); i++) {
|
| + const SerializedResource& resource = resources[i];
|
| + if (i != 0) // Report only resources, not the frame.
|
| + result.append(resource.url);
|
| + }
|
| +
|
| + return result;
|
| +}
|
| +
|
| WebData WebPageSerializer::generateMHTMLParts(
|
| const WebString& boundary, WebLocalFrame* webFrame, bool useBinaryEncoding,
|
| - const WebVector<std::pair<WebFrame*, WebString>>& webFrameToContentID)
|
| + const WebVector<std::pair<WebFrame*, WebString>>& webFrameToContentID,
|
| + const WebVector<WebURL>& resourcesToSkip)
|
| {
|
| // Translate arguments from public to internal blink APIs.
|
| LocalFrame* frame = toWebLocalFrameImpl(webFrame)->frame();
|
| @@ -199,6 +216,10 @@ WebData WebPageSerializer::generateMHTMLParts(
|
| // comment). Frames need a Content-ID header.
|
| String contentID = isFirstResource ? frameToContentID.get(frame) : String();
|
|
|
| + // Resources don't yet get a Content ID and are deduped based on URI.
|
| + if (contentID.isEmpty() && resourcesToSkip.contains(resource.url))
|
| + continue;
|
| +
|
| MHTMLArchive::generateMHTMLPart(
|
| boundary, contentID, encodingPolicy, resource, *output);
|
|
|
|
|