1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_BROWSER_WEBUI_WEB_UI_CONTROLLER_FACTORY_REGISTRY_H_ 6 #define CONTENT_BROWSER_WEBUI_WEB_UI_CONTROLLER_FACTORY_REGISTRY_H_ 7 8 #include "base/memory/singleton.h" 9 #include "content/public/browser/web_ui_controller_factory.h" 10 11 namespace content { 12 13 // A singleton which holds on to all the registered WebUIControllerFactory 14 // instances. 15 class CONTENT_EXPORT WebUIControllerFactoryRegistry 16 : public WebUIControllerFactory { 17 public: 18 static WebUIControllerFactoryRegistry* GetInstance(); 19 20 // WebUIControllerFactory implementation. Each method loops through the same 21 // method on all the factories. 22 virtual WebUIController* CreateWebUIControllerForURL( 23 WebUI* web_ui, const GURL& url) const OVERRIDE; 24 virtual WebUI::TypeID GetWebUIType(BrowserContext* browser_context, 25 const GURL& url) const OVERRIDE; 26 virtual bool UseWebUIForURL(BrowserContext* browser_context, 27 const GURL& url) const OVERRIDE; 28 virtual bool UseWebUIBindingsForURL(BrowserContext* browser_context, 29 const GURL& url) const OVERRIDE; 30 31 // Returns true if the given URL can be loaded by Web UI system. This allows 32 // URLs that UseWebUIForURL returns true for, and also URLs that can be loaded 33 // by normal tabs such as javascript: URLs or about:hang. 34 bool IsURLAcceptableForWebUI(BrowserContext* browser_context, 35 const GURL& url) const; 36 37 private: 38 friend struct DefaultSingletonTraits<WebUIControllerFactoryRegistry>; 39 40 WebUIControllerFactoryRegistry(); 41 virtual ~WebUIControllerFactoryRegistry(); 42 43 DISALLOW_COPY_AND_ASSIGN(WebUIControllerFactoryRegistry); 44 }; 45 46 } // namespace content 47 48 #endif // CONTENT_BROWSER_WEBUI_WEB_UI_CONTROLLER_FACTORY_REGISTRY_H_ 49