Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: content/browser/webui/web_ui_data_source_impl.cc

Issue 2544683002: [MD settings] i18n source stream filtering (Closed)
Patch Set: review nits Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/browser/webui/web_ui_data_source_impl.h ('k') | content/test/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/webui/web_ui_data_source_impl.h" 5 #include "content/browser/webui/web_ui_data_source_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 } 217 }
218 218
219 void WebUIDataSourceImpl::DisableDenyXFrameOptions() { 219 void WebUIDataSourceImpl::DisableDenyXFrameOptions() {
220 deny_xframe_options_ = false; 220 deny_xframe_options_ = false;
221 } 221 }
222 222
223 void WebUIDataSourceImpl::DisableI18nAndUseGzipForAllPaths() { 223 void WebUIDataSourceImpl::DisableI18nAndUseGzipForAllPaths() {
224 use_gzip_for_all_paths_ = true; 224 use_gzip_for_all_paths_ = true;
225 } 225 }
226 226
227 const ui::TemplateReplacements* WebUIDataSourceImpl::GetReplacements() const {
228 return &replacements_;
229 }
230
231 void WebUIDataSourceImpl::EnsureLoadTimeDataDefaultsAdded() {
232 if (!add_load_time_data_defaults_)
233 return;
234
235 add_load_time_data_defaults_ = false;
236 std::string locale = GetContentClient()->browser()->GetApplicationLocale();
237 base::DictionaryValue defaults;
238 webui::SetLoadTimeDataDefaults(locale, &defaults);
239 AddLocalizedStrings(defaults);
240 }
241
227 std::string WebUIDataSourceImpl::GetSource() const { 242 std::string WebUIDataSourceImpl::GetSource() const {
228 return source_name_; 243 return source_name_;
229 } 244 }
230 245
231 std::string WebUIDataSourceImpl::GetMimeType(const std::string& path) const { 246 std::string WebUIDataSourceImpl::GetMimeType(const std::string& path) const {
232 // Remove the query string for to determine the mime type. 247 // Remove the query string for to determine the mime type.
233 std::string file_path = path.substr(0, path.find_first_of('?')); 248 std::string file_path = path.substr(0, path.find_first_of('?'));
234 249
235 if (base::EndsWith(file_path, ".css", base::CompareCase::INSENSITIVE_ASCII)) 250 if (base::EndsWith(file_path, ".css", base::CompareCase::INSENSITIVE_ASCII))
236 return "text/css"; 251 return "text/css";
(...skipping 15 matching lines...) Expand all
252 267
253 void WebUIDataSourceImpl::StartDataRequest( 268 void WebUIDataSourceImpl::StartDataRequest(
254 const std::string& path, 269 const std::string& path,
255 const ResourceRequestInfo::WebContentsGetter& wc_getter, 270 const ResourceRequestInfo::WebContentsGetter& wc_getter,
256 const URLDataSource::GotDataCallback& callback) { 271 const URLDataSource::GotDataCallback& callback) {
257 if (!filter_callback_.is_null() && 272 if (!filter_callback_.is_null() &&
258 filter_callback_.Run(path, callback)) { 273 filter_callback_.Run(path, callback)) {
259 return; 274 return;
260 } 275 }
261 276
262 if (add_load_time_data_defaults_) { 277 EnsureLoadTimeDataDefaultsAdded();
263 std::string locale = GetContentClient()->browser()->GetApplicationLocale();
264 base::DictionaryValue defaults;
265 webui::SetLoadTimeDataDefaults(locale, &defaults);
266 AddLocalizedStrings(defaults);
267 add_load_time_data_defaults_ = false;
268 }
269 278
270 if (!json_path_.empty() && path == json_path_) { 279 if (!json_path_.empty() && path == json_path_) {
271 SendLocalizedStringsAsJSON(callback); 280 SendLocalizedStringsAsJSON(callback);
272 return; 281 return;
273 } 282 }
274 283
275 int resource_id = default_resource_; 284 int resource_id = default_resource_;
276 std::map<std::string, int>::iterator result; 285 std::map<std::string, int>::iterator result;
277 // Remove the query string for named resource lookups. 286 // Remove the query string for named resource lookups.
278 std::string file_path = path.substr(0, path.find_first_of('?')); 287 std::string file_path = path.substr(0, path.find_first_of('?'));
279 result = path_to_idr_map_.find(file_path); 288 result = path_to_idr_map_.find(file_path);
280 if (result != path_to_idr_map_.end()) 289 if (result != path_to_idr_map_.end())
281 resource_id = result->second; 290 resource_id = result->second;
282 DCHECK_NE(resource_id, -1); 291 DCHECK_NE(resource_id, -1);
283 scoped_refptr<base::RefCountedMemory> response( 292 scoped_refptr<base::RefCountedMemory> response(
284 GetContentClient()->GetDataResourceBytes(resource_id)); 293 GetContentClient()->GetDataResourceBytes(resource_id));
285
286 // TODO(dschuyler): improve filtering of which resource to run template
287 // expansion upon. TODO(dbeam): make a streaming filter that works on gzipped
288 // content.
289 if (response.get() && GetMimeType(path) == "text/html" &&
290 !source()->IsGzipped(path)) {
291 std::string replaced = ui::ReplaceTemplateExpressions(
292 base::StringPiece(response->front_as<char>(), response->size()),
293 replacements_);
294 response = base::RefCountedString::TakeString(&replaced);
295 }
296
297 callback.Run(response.get()); 294 callback.Run(response.get());
298 } 295 }
299 296
300 void WebUIDataSourceImpl::SendLocalizedStringsAsJSON( 297 void WebUIDataSourceImpl::SendLocalizedStringsAsJSON(
301 const URLDataSource::GotDataCallback& callback) { 298 const URLDataSource::GotDataCallback& callback) {
302 std::string template_data; 299 std::string template_data;
303 webui::AppendJsonJS(&localized_strings_, &template_data); 300 webui::AppendJsonJS(&localized_strings_, &template_data);
304 callback.Run(base::RefCountedString::TakeString(&template_data)); 301 callback.Run(base::RefCountedString::TakeString(&template_data));
305 } 302 }
306 303
307 } // namespace content 304 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/webui/web_ui_data_source_impl.h ('k') | content/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698