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..cca47d781256158e68050728bcee29e40aa93091 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_; |
| @@ -301,6 +310,7 @@ URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request, |
| send_content_type_header_(false), |
| is_incognito_(is_incognito), |
| is_gzipped_(false), |
| + replacements_(nullptr), |
| backend_(backend), |
| weak_factory_(this) { |
| DCHECK(backend); |
| @@ -395,11 +405,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(); |
| - return is_gzipped_ ? net::GzipSourceStream::Create( |
| - std::move(source), net::SourceStream::TYPE_GZIP) |
| - : std::move(source); |
| + |
| + if (is_gzipped_) { |
| + source_stream = net::GzipSourceStream::Create(std::move(source_stream), |
| + net::SourceStream::TYPE_GZIP); |
| + } |
| + |
| + if (replacements_) { |
| + source_stream = content::I18nSourceStream::Create( |
| + std::move(source_stream), net::SourceStream::TYPE_NONE, replacements_); |
| + } |
| + |
| + return source_stream; |
| } |
| void URLRequestChromeJob::MimeTypeAvailable(const std::string& mime_type) { |
| @@ -698,6 +717,8 @@ bool URLDataManagerBackend::StartRequest(const net::URLRequest* request, |
| job->set_send_content_type_header( |
| source->source()->ShouldServeMimeTypeAsContentTypeHeader()); |
| job->set_is_gzipped(source->source()->IsGzipped(path)); |
| + if (source->source()->GetMimeType(path) == "text/html") |
|
Dan Beam
2016/12/03 02:25:28
maybe transfer your TODO about this from the old m
dschuyler
2016/12/03 02:44:57
Done.
|
| + job->SetReplacements(source->GetReplacements()); |
| std::string origin = GetOriginHeaderValue(request); |
| if (!origin.empty()) { |