Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 0dc464c1bc274c55117472dd537dbd3f714be017..7576ac0c6cf6517e967e6f23e4404a546bdb34a7 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -1593,19 +1593,23 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) { |
} |
} else if (!params.base_url_for_data_url.is_empty()) { |
// A loadData request with a specified base URL. |
- std::string mime_type, charset, data; |
- if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { |
- frame->loadData( |
- WebData(data.c_str(), data.length()), |
- WebString::fromUTF8(mime_type), |
- WebString::fromUTF8(charset), |
- params.base_url_for_data_url, |
- params.history_url_for_data_url, |
- false); |
- } else { |
+ std::string mime_type, charset; |
+ if (!net::DataURL::Parse(params.url, &mime_type, &charset, NULL)) { |
CHECK(false) << |
"Invalid URL passed: " << params.url.possibly_invalid_spec(); |
} |
+ WebData data; |
+ if (params.data_for_data_url.get()) { |
+ data.assign( |
+ reinterpret_cast<const char*>(params.data_for_data_url->front()), |
+ params.data_for_data_url->size()); |
+ } |
+ frame->loadData(data, |
+ WebString::fromUTF8(mime_type), |
+ WebString::fromUTF8(charset), |
+ params.base_url_for_data_url, |
+ params.history_url_for_data_url, |
+ false); |
} else { |
// Navigate to the given URL. |
WebURLRequest request(params.url); |