Chromium Code Reviews| 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()) { |