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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 #endif // !defined(OS_CHROMEOS) | 278 #endif // !defined(OS_CHROMEOS) |
279 #endif // !defined(OS_ANDROID) | 279 #endif // !defined(OS_ANDROID) |
280 | 280 |
281 #if defined(OS_WIN) | 281 #if defined(OS_WIN) |
282 template <> | 282 template <> |
283 WebUIController* NewWebUI<WelcomeWin10UI>(WebUI* web_ui, const GURL& url) { | 283 WebUIController* NewWebUI<WelcomeWin10UI>(WebUI* web_ui, const GURL& url) { |
284 return new WelcomeWin10UI(web_ui, url); | 284 return new WelcomeWin10UI(web_ui, url); |
285 } | 285 } |
286 #endif // defined(OS_WIN) | 286 #endif // defined(OS_WIN) |
287 | 287 |
288 #if defined(ENABLE_EXTENSIONS) | |
289 // Only create ExtensionWebUI for URLs that are allowed extension bindings, | |
290 // hosted by actual tabs. | |
291 bool NeedsExtensionWebUI(Profile* profile, const GURL& url) { | |
292 if (!profile) | |
293 return false; | |
294 | |
295 const extensions::Extension* extension = | |
296 extensions::ExtensionRegistry::Get(profile)->enabled_extensions(). | |
297 GetExtensionOrAppByURL(url); | |
298 // Allow bindings for all packaged extensions and component hosted apps. | |
299 return extension && | |
300 (!extension->is_hosted_app() || | |
301 extension->location() == extensions::Manifest::COMPONENT); | |
302 } | |
303 #endif | |
304 | |
305 bool IsAboutUI(const GURL& url) { | 288 bool IsAboutUI(const GURL& url) { |
306 return (url.host() == chrome::kChromeUIChromeURLsHost || | 289 return (url.host() == chrome::kChromeUIChromeURLsHost || |
307 url.host() == chrome::kChromeUICreditsHost || | 290 url.host() == chrome::kChromeUICreditsHost || |
308 url.host() == chrome::kChromeUIDNSHost | 291 url.host() == chrome::kChromeUIDNSHost |
309 #if !defined(OS_ANDROID) | 292 #if !defined(OS_ANDROID) |
310 || url.host() == chrome::kChromeUITermsHost | 293 || url.host() == chrome::kChromeUITermsHost |
311 #endif | 294 #endif |
312 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 295 #if defined(OS_LINUX) || defined(OS_OPENBSD) |
313 || url.host() == chrome::kChromeUILinuxProxyConfigHost || | 296 || url.host() == chrome::kChromeUILinuxProxyConfigHost || |
314 url.host() == chrome::kChromeUISandboxHost | 297 url.host() == chrome::kChromeUISandboxHost |
315 #endif | 298 #endif |
316 #if defined(OS_CHROMEOS) | 299 #if defined(OS_CHROMEOS) |
317 || url.host() == chrome::kChromeUIOSCreditsHost | 300 || url.host() == chrome::kChromeUIOSCreditsHost |
318 #endif | 301 #endif |
319 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) | 302 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
320 || url.host() == chrome::kChromeUIDiscardsHost | 303 || url.host() == chrome::kChromeUIDiscardsHost |
321 #endif | 304 #endif |
322 ); // NOLINT | 305 ); // NOLINT |
323 } | 306 } |
324 | 307 |
325 // Returns a function that can be used to create the right type of WebUI for a | 308 // Returns a function that can be used to create the right type of WebUI for a |
326 // tab, based on its URL. Returns NULL if the URL doesn't have WebUI associated | 309 // tab, based on its URL. Returns NULL if the URL doesn't have WebUI associated |
327 // with it. | 310 // with it. |
328 WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, | 311 WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, |
329 Profile* profile, | 312 Profile* profile, |
330 const GURL& url) { | 313 const GURL& url) { |
331 #if defined(ENABLE_EXTENSIONS) | 314 #if defined(ENABLE_EXTENSIONS) |
332 if (NeedsExtensionWebUI(profile, url)) | 315 if (ExtensionWebUI::NeedsExtensionWebUI(profile, url)) |
333 return &NewWebUI<ExtensionWebUI>; | 316 return &NewWebUI<ExtensionWebUI>; |
334 #endif | 317 #endif |
335 | 318 |
336 // This will get called a lot to check all URLs, so do a quick check of other | 319 // This will get called a lot to check all URLs, so do a quick check of other |
337 // schemes to filter out most URLs. | 320 // schemes to filter out most URLs. |
338 if (!url.SchemeIs(content::kChromeDevToolsScheme) && | 321 if (!url.SchemeIs(content::kChromeDevToolsScheme) && |
339 !url.SchemeIs(content::kChromeUIScheme)) { | 322 !url.SchemeIs(content::kChromeUIScheme)) { |
340 return NULL; | 323 return NULL; |
341 } | 324 } |
342 | 325 |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 return GetWebUIType(browser_context, url) != WebUI::kNoWebUI; | 668 return GetWebUIType(browser_context, url) != WebUI::kNoWebUI; |
686 } | 669 } |
687 | 670 |
688 bool ChromeWebUIControllerFactory::UseWebUIBindingsForURL( | 671 bool ChromeWebUIControllerFactory::UseWebUIBindingsForURL( |
689 content::BrowserContext* browser_context, const GURL& url) const { | 672 content::BrowserContext* browser_context, const GURL& url) const { |
690 bool needs_extensions_web_ui = false; | 673 bool needs_extensions_web_ui = false; |
691 #if defined(ENABLE_EXTENSIONS) | 674 #if defined(ENABLE_EXTENSIONS) |
692 // Extensions are rendered via WebUI in tabs, but don't actually need WebUI | 675 // Extensions are rendered via WebUI in tabs, but don't actually need WebUI |
693 // bindings (see the ExtensionWebUI constructor). | 676 // bindings (see the ExtensionWebUI constructor). |
694 needs_extensions_web_ui = | 677 needs_extensions_web_ui = |
695 NeedsExtensionWebUI(Profile::FromBrowserContext(browser_context), url); | 678 ExtensionWebUI::NeedsExtensionWebUI(browser_context, url); |
696 #endif | 679 #endif |
697 return !needs_extensions_web_ui && UseWebUIForURL(browser_context, url); | 680 return !needs_extensions_web_ui && UseWebUIForURL(browser_context, url); |
698 } | 681 } |
699 | 682 |
700 WebUIController* ChromeWebUIControllerFactory::CreateWebUIControllerForURL( | 683 WebUIController* ChromeWebUIControllerFactory::CreateWebUIControllerForURL( |
701 WebUI* web_ui, | 684 WebUI* web_ui, |
702 const GURL& url) const { | 685 const GURL& url) const { |
703 Profile* profile = Profile::FromWebUI(web_ui); | 686 Profile* profile = Profile::FromWebUI(web_ui); |
704 WebUIFactoryFunction function = GetWebUIFactoryFunction(web_ui, profile, url); | 687 WebUIFactoryFunction function = GetWebUIFactoryFunction(web_ui, profile, url); |
705 if (!function) | 688 if (!function) |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 #endif | 831 #endif |
849 | 832 |
850 // Android doesn't use the plugins pages. | 833 // Android doesn't use the plugins pages. |
851 if (page_url.host() == chrome::kChromeUIPluginsHost) | 834 if (page_url.host() == chrome::kChromeUIPluginsHost) |
852 return PluginsUI::GetFaviconResourceBytes(scale_factor); | 835 return PluginsUI::GetFaviconResourceBytes(scale_factor); |
853 | 836 |
854 #endif | 837 #endif |
855 | 838 |
856 return NULL; | 839 return NULL; |
857 } | 840 } |
OLD | NEW |