Index: content/browser/webui/url_data_manager_backend.cc |
diff --git a/content/browser/webui/url_data_manager_backend.cc b/content/browser/webui/url_data_manager_backend.cc |
index 72c035a202690072a8a5789af9f8033c0245e167..8ed474b5d6a405432290989c26c9c390ffcef771 100644 |
--- a/content/browser/webui/url_data_manager_backend.cc |
+++ b/content/browser/webui/url_data_manager_backend.cc |
@@ -31,6 +31,7 @@ |
#include "content/browser/net/view_blob_internals_job_factory.h" |
#include "content/browser/net/view_http_cache_job_factory.h" |
#include "content/browser/resource_context_impl.h" |
+#include "content/browser/webui/i18n_source_stream.h" |
#include "content/browser/webui/shared_resources_data_source.h" |
#include "content/browser/webui/url_data_source_impl.h" |
#include "content/public/browser/browser_context.h" |
@@ -51,6 +52,7 @@ |
#include "net/url_request/url_request_error_job.h" |
#include "net/url_request/url_request_job.h" |
#include "net/url_request/url_request_job_factory.h" |
+#include "ui/base/template_expressions.h" |
#include "url/url_util.h" |
namespace content { |
@@ -209,6 +211,10 @@ class URLRequestChromeJob : public net::URLRequestJob { |
is_gzipped_ = is_gzipped; |
} |
+ void SetReplacements(const ui::TemplateReplacements* replacements) { |
+ replacements_ = replacements; |
+ } |
+ |
// Returns true when job was generated from an incognito profile. |
bool is_incognito() const { |
return is_incognito_; |
@@ -279,6 +285,9 @@ class URLRequestChromeJob : public net::URLRequestJob { |
// resources in resources.pak use compress="gzip". |
bool is_gzipped_; |
+ // Replacement dictionary for i18n. |
+ const ui::TemplateReplacements* replacements_; |
+ |
// The backend is owned by net::URLRequestContext and always outlives us. |
URLDataManagerBackend* const backend_; |
@@ -395,11 +404,20 @@ void URLRequestChromeJob::GetResponseInfo(net::HttpResponseInfo* info) { |
} |
std::unique_ptr<net::SourceStream> URLRequestChromeJob::SetUpSourceStream() { |
- std::unique_ptr<net::SourceStream> source = |
+ std::unique_ptr<net::SourceStream> source_stream = |
net::URLRequestJob::SetUpSourceStream(); |
Dan Beam
2016/12/01 05:57:22
i THINK this will fix your compile error
std::uni
dschuyler
2016/12/01 23:07:26
It's problematic to use std::move on a return beca
|
- return is_gzipped_ ? net::GzipSourceStream::Create( |
- std::move(source), net::SourceStream::TYPE_GZIP) |
- : std::move(source); |
+ source_stream = |
+ is_gzipped_ ? net::GzipSourceStream::Create(std::move(source_stream), |
+ net::SourceStream::TYPE_GZIP) |
+ : std::move(source_stream); |
+ if (!replacements_) |
+ return source_stream; |
+ |
+ std::unique_ptr<content::I18nSourceStream> i18n_stream = |
+ content::I18nSourceStream::Create(std::move(source_stream), |
+ net::SourceStream::TYPE_NONE); |
+ i18n_stream->SetReplacements(replacements_); |
+ return i18n_stream; |
} |
void URLRequestChromeJob::MimeTypeAvailable(const std::string& mime_type) { |
@@ -698,6 +716,7 @@ bool URLDataManagerBackend::StartRequest(const net::URLRequest* request, |
job->set_send_content_type_header( |
source->source()->ShouldServeMimeTypeAsContentTypeHeader()); |
job->set_is_gzipped(source->source()->IsGzipped(path)); |
+ job->SetReplacements(source->GetReplacements()); |
std::string origin = GetOriginHeaderValue(request); |
if (!origin.empty()) { |