| 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 fb8ffc3fb4aa4e50b2d2cbfce43d8a3aafb33341..e3add3119bb69d3dc6b13d6169ef99b138f60c81 100644
|
| --- a/third_party/WebKit/Source/web/WebFrameSerializer.cpp
|
| +++ b/third_party/WebKit/Source/web/WebFrameSerializer.cpp
|
| @@ -43,6 +43,7 @@
|
| #include "core/html/HTMLInputElement.h"
|
| #include "core/html/HTMLTableElement.h"
|
| #include "core/loader/DocumentLoader.h"
|
| +#include "platform/Histogram.h"
|
| #include "platform/SerializedResource.h"
|
| #include "platform/SharedBuffer.h"
|
| #include "platform/TraceEvent.h"
|
| @@ -217,11 +218,14 @@ WebData WebFrameSerializer::generateMHTMLParts(
|
| : MHTMLArchive::EncodingPolicy::UseDefaultEncoding;
|
|
|
| // Serialize.
|
| - Vector<SerializedResource> resources;
|
| TRACE_EVENT_BEGIN0("page-serialization", "WebFrameSerializer::generateMHTMLParts serializing");
|
| - MHTMLFrameSerializerDelegate coreDelegate(*webDelegate);
|
| - FrameSerializer serializer(resources, coreDelegate);
|
| - serializer.serializeFrame(*frame);
|
| + Vector<SerializedResource> resources;
|
| + {
|
| + SCOPED_BLINK_UMA_HISTOGRAM_TIMER("MhtmlGeneration.FullFrameSerializationTime");
|
| + MHTMLFrameSerializerDelegate coreDelegate(*webDelegate);
|
| + FrameSerializer serializer(resources, coreDelegate);
|
| + serializer.serializeFrame(*frame);
|
| + }
|
| TRACE_EVENT_END1("page-serialization", "WebFrameSerializer::generateMHTMLParts serializing",
|
| "resource count", static_cast<unsigned long long>(resources.size()));
|
|
|
| @@ -230,17 +234,20 @@ WebData WebFrameSerializer::generateMHTMLParts(
|
|
|
| // Encode serializer's output as MHTML.
|
| RefPtr<SharedBuffer> output = SharedBuffer::create();
|
| - bool isFirstResource = true;
|
| - for (const SerializedResource& resource : resources) {
|
| - TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLParts encoding");
|
| - // Frame is the 1st resource (see FrameSerializer::serializeFrame doc
|
| - // comment). Frames get a Content-ID header.
|
| - String contentID = isFirstResource ? frameContentID : String();
|
| -
|
| - MHTMLArchive::generateMHTMLPart(
|
| - boundary, contentID, encodingPolicy, resource, *output);
|
| -
|
| - isFirstResource = false;
|
| + {
|
| + SCOPED_BLINK_UMA_HISTOGRAM_TIMER("MhtmlGeneration.FullFrameEncodingTime");
|
| + bool isFirstResource = true;
|
| + for (const SerializedResource& resource : resources) {
|
| + TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLParts encoding");
|
| + // Frame is the 1st resource (see FrameSerializer::serializeFrame doc
|
| + // comment). Frames get a Content-ID header.
|
| + String contentID = isFirstResource ? frameContentID : String();
|
| +
|
| + MHTMLArchive::generateMHTMLPart(
|
| + boundary, contentID, encodingPolicy, resource, *output);
|
| +
|
| + isFirstResource = false;
|
| + }
|
| }
|
| return output.release();
|
| }
|
|
|