Index: content/common/frame_messages.h |
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h |
index b70017e2e1e381f3084c4533394d31fa61beb3f5..a9c34e472d815af3d40c54fc33552c229dfca697 100644 |
--- a/content/common/frame_messages.h |
+++ b/content/common/frame_messages.h |
@@ -5,6 +5,11 @@ |
// IPC messages for interacting with frames. |
// Multiply-included message file, hence no include guard. |
+#include <map> |
+#include <set> |
+#include <string> |
+#include <vector> |
+ |
#include "cc/surfaces/surface_id.h" |
#include "cc/surfaces/surface_sequence.h" |
#include "content/common/content_export.h" |
@@ -427,6 +432,44 @@ IPC_STRUCT_TRAITS_BEGIN(content::SavableSubframe) |
IPC_STRUCT_TRAITS_MEMBER(routing_id) |
IPC_STRUCT_TRAITS_END() |
+using FrameRoutingIdToContentIdMap = std::map<int, std::string>; |
+IPC_STRUCT_BEGIN(FrameMsg_SerializeAsMHTML_Params) |
+ // Job id - used to match responses to requests. |
+ IPC_STRUCT_MEMBER(int, job_id) |
+ |
+ // Destination file handle. |
+ IPC_STRUCT_MEMBER(IPC::PlatformFileForTransit, destination_file) |
+ |
+ // MHTML boundary marker. |
+ // |
+ // When serializing the first, main frame of an MHTML document, |
+ // |mhtml_boundary_marker| should be an empty string. Otherwise it needs to |
+ // be |
+ // the marker generated and reported back by the previous |
+ // FrameHostMsg_SerializeAsMHTMLResponse. |
+ IPC_STRUCT_MEMBER(std::string, mhtml_boundary_marker) |
+ |
+ // Frame to content-id map. |
+ // Keys are routing ids of either RenderFrames or RenderFrameProxies. |
+ // Values are MHTML content-ids - see WebPageSerializer::generateMHTMLParts. |
+ IPC_STRUCT_MEMBER(FrameRoutingIdToContentIdMap, |
+ frame_routing_id_to_content_id) |
+ |
+ // |digests_of_uris_to_skip| contains digests of uris of MHTML parts that |
+ // should be skipped. This helps deduplicate mhtml parts across frames. |
+ // SECURITY NOTE: Sha256 digests (rather than uris) are used to prevent |
+ // disclosing uris to other renderer processes; the digests should be |
+ // generated using SHA256HashString function from crypto/sha2.h and hashing |
+ // |salt + url.spec()|. |
+ IPC_STRUCT_MEMBER(std::set<std::string>, digests_of_uris_to_skip) |
+ |
+ // Salt used for |digests_of_uris_to_skip|. |
+ IPC_STRUCT_MEMBER(std::string, salt) |
+ |
+ // If |is_last_frame| is true, then an MHTML footer will be generated. |
+ IPC_STRUCT_MEMBER(bool, is_last_frame) |
+IPC_STRUCT_END() |
+ |
#if defined(OS_MACOSX) || defined(OS_ANDROID) |
// This message is used for supporting popup menus on Mac OS X and Android using |
// native controls. See the FrameHostMsg_ShowPopup message. |
@@ -720,28 +763,7 @@ IPC_MESSAGE_ROUTED3(FrameMsg_GetSerializedHtmlWithLocalLinks, |
// Serialize target frame and its resources into MHTML and write it into the |
// provided destination file handle. |
-// |
-// When starting generation of a new MHTML document, one needs to start by |
-// sending FrameMsg_SerializeAsMHTML for the *main* frame (when handling the |
-// main frame, the renderer generates MHTML header + mhtml boundary marker). |
-// |
-// When serializing the first, main frame of an MHTML document, |
-// |mhtml_boundary_marker| should be an empty string. Otherwise it needs to be |
-// the marker generated and reported back by the previous |
-// FrameHostMsg_SerializeAsMHTMLResponse. |
-// |
-// For more details about frame to content id map please see |
-// WebPageSerializer::generateMHTMLParts method. |
-// |
-// |is_last_frame| controls whether the serializer in the renderer will |
-// emit the MHTML footer. |
-using FrameRoutingIdToContentIdMap = std::map<int, std::string>; |
-IPC_MESSAGE_ROUTED5(FrameMsg_SerializeAsMHTML, |
- int /* job_id (used to match responses to requests) */, |
- IPC::PlatformFileForTransit /* destination file handle */, |
- std::string /* mhtml boundary marker */, |
- FrameRoutingIdToContentIdMap, |
- bool /* is last frame */) |
+IPC_MESSAGE_ROUTED1(FrameMsg_SerializeAsMHTML, FrameMsg_SerializeAsMHTML_Params) |
IPC_MESSAGE_ROUTED1(FrameMsg_SetFrameOwnerProperties, |
blink::WebFrameOwnerProperties /* frame_owner_properties */) |
@@ -1273,10 +1295,11 @@ IPC_MESSAGE_ROUTED2(FrameHostMsg_SerializedHtmlWithLocalLinksResponse, |
bool /* end of data? */) |
// Response to FrameMsg_SerializeAsMHTML. |
-IPC_MESSAGE_ROUTED3(FrameHostMsg_SerializeAsMHTMLResponse, |
+IPC_MESSAGE_ROUTED4(FrameHostMsg_SerializeAsMHTMLResponse, |
int /* job_id (used to match responses to requests) */, |
bool /* true if success, false if error */, |
- std::string /* mhtml boundary marker that was used */) |
+ std::string /* mhtml boundary marker that was used */, |
+ std::set<GURL> /* uris of generated mhtml parts */) |
// Sent when the renderer updates hint for importance of a tab. |
IPC_MESSAGE_ROUTED1(FrameHostMsg_UpdatePageImportanceSignals, |