Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 9e01406593394ecf970e84632b087772fde715ad..bb9929d1abfdb1ff32032c1c9a7bd8b2e7fe6754 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -4761,7 +4761,8 @@ void RenderFrameImpl::OnGetSavableResourceLinks() { |
} |
void RenderFrameImpl::OnGetSerializedHtmlWithLocalLinks( |
- const std::map<GURL, base::FilePath>& url_to_local_path) { |
+ const std::map<GURL, base::FilePath>& url_to_local_path, |
+ const std::map<int, base::FilePath>& frame_routing_id_to_local_path) { |
// Convert input to the canonical way of passing a map into a Blink API. |
std::vector<std::pair<WebURL, WebString>> weburl_to_local_path; |
for (const auto& it : url_to_local_path) { |
@@ -4770,11 +4771,22 @@ void RenderFrameImpl::OnGetSerializedHtmlWithLocalLinks( |
weburl_to_local_path.push_back(std::make_pair( |
WebURL(url), ConvertRelativePathToHtmlAttribute(local_path))); |
} |
+ std::vector<std::pair<WebFrame*, WebString>> webframe_to_local_path; |
+ for (const auto& it : frame_routing_id_to_local_path) { |
+ int routing_id = it.first; |
+ const base::FilePath& local_path = it.second; |
+ |
+ WebFrame* web_frame = GetWebFrameFromRoutingIdForFrameOrProxy(routing_id); |
+ if (web_frame) { |
+ webframe_to_local_path.push_back(std::make_pair( |
+ web_frame, ConvertRelativePathToHtmlAttribute(local_path))); |
+ } |
+ } |
// Serialize the frame (without recursing into subframes). |
WebPageSerializer::serialize(GetWebFrame(), |
this, // WebPageSerializerClient. |
- weburl_to_local_path); |
+ weburl_to_local_path, webframe_to_local_path); |
} |
void RenderFrameImpl::OnSerializeAsMHTML( |