OLD | NEW |
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 "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" | 5 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "chrome/browser/about_flags.h" | 8 #include "chrome/browser/about_flags.h" |
9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 // Extensions are rendered via WebUI in tabs, but don't actually need WebUI | 387 // Extensions are rendered via WebUI in tabs, but don't actually need WebUI |
388 // bindings (see the ExtensionWebUI constructor). | 388 // bindings (see the ExtensionWebUI constructor). |
389 return !NeedsExtensionWebUI(NULL, | 389 return !NeedsExtensionWebUI(NULL, |
390 Profile::FromBrowserContext(browser_context), | 390 Profile::FromBrowserContext(browser_context), |
391 url) && | 391 url) && |
392 UseWebUIForURL(browser_context, url); | 392 UseWebUIForURL(browser_context, url); |
393 } | 393 } |
394 | 394 |
395 bool ChromeWebUIControllerFactory::IsURLAcceptableForWebUI( | 395 bool ChromeWebUIControllerFactory::IsURLAcceptableForWebUI( |
396 content::BrowserContext* browser_context, | 396 content::BrowserContext* browser_context, |
397 const GURL& url) const { | 397 const GURL& url, |
| 398 bool data_urls_allowed) const { |
398 return UseWebUIForURL(browser_context, url) || | 399 return UseWebUIForURL(browser_context, url) || |
399 // javacsript: URLs are allowed to run in Web UI pages | 400 // javacsript: URLs are allowed to run in Web UI pages |
400 url.SchemeIs(chrome::kJavaScriptScheme) || | 401 url.SchemeIs(chrome::kJavaScriptScheme) || |
401 // It's possible to load about:blank in a Web UI renderer. | 402 // It's possible to load about:blank in a Web UI renderer. |
402 // See http://crbug.com/42547 | 403 // See http://crbug.com/42547 |
403 url.spec() == chrome::kAboutBlankURL || | 404 url.spec() == chrome::kAboutBlankURL || |
404 // Chrome URLs crash, kill, hang, and shorthang are allowed. | 405 // Chrome URLs crash, kill, hang, and shorthang are allowed. |
405 url == GURL(chrome::kChromeUICrashURL) || | 406 url == GURL(chrome::kChromeUICrashURL) || |
406 url == GURL(chrome::kChromeUIKillURL) || | 407 url == GURL(chrome::kChromeUIKillURL) || |
407 url == GURL(chrome::kChromeUIHangURL) || | 408 url == GURL(chrome::kChromeUIHangURL) || |
408 url == GURL(chrome::kChromeUIShorthangURL); | 409 url == GURL(chrome::kChromeUIShorthangURL) || |
| 410 // Data URLs are usually not allowed in WebUI for security reasons. |
| 411 // BalloonHosts are one exception needed by ChromeOS, and are safe because |
| 412 // they cannot be scripted by other pages. |
| 413 (data_urls_allowed && url.SchemeIs(chrome::kDataScheme)); |
409 } | 414 } |
410 | 415 |
411 WebUIController* ChromeWebUIControllerFactory::CreateWebUIControllerForURL( | 416 WebUIController* ChromeWebUIControllerFactory::CreateWebUIControllerForURL( |
412 content::WebUI* web_ui, | 417 content::WebUI* web_ui, |
413 const GURL& url) const { | 418 const GURL& url) const { |
414 Profile* profile = Profile::FromWebUI(web_ui); | 419 Profile* profile = Profile::FromWebUI(web_ui); |
415 WebUIFactoryFunction function = GetWebUIFactoryFunction(web_ui, profile, url); | 420 WebUIFactoryFunction function = GetWebUIFactoryFunction(web_ui, profile, url); |
416 if (!function) | 421 if (!function) |
417 return NULL; | 422 return NULL; |
418 | 423 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 if (page_url.host() == chrome::kChromeUISettingsFrameHost) | 505 if (page_url.host() == chrome::kChromeUISettingsFrameHost) |
501 return options2::OptionsUI::GetFaviconResourceBytes(); | 506 return options2::OptionsUI::GetFaviconResourceBytes(); |
502 | 507 |
503 // Android doesn't use the plugins pages. | 508 // Android doesn't use the plugins pages. |
504 if (page_url.host() == chrome::kChromeUIPluginsHost) | 509 if (page_url.host() == chrome::kChromeUIPluginsHost) |
505 return PluginsUI::GetFaviconResourceBytes(); | 510 return PluginsUI::GetFaviconResourceBytes(); |
506 #endif | 511 #endif |
507 | 512 |
508 return NULL; | 513 return NULL; |
509 } | 514 } |
OLD | NEW |