Home | History | Annotate | Download | only in browser
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_FACTORY_H_
      6 #define CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_FACTORY_H_
      7 
      8 #include "content/common/content_export.h"
      9 #include "content/public/browser/web_ui.h"
     10 
     11 class GURL;
     12 
     13 namespace content {
     14 
     15 class BrowserContext;
     16 class WebContents;
     17 class WebUIController;
     18 
     19 // Interface for an object which controls which URLs are considered WebUI URLs
     20 // and creates WebUIController instances for given URLs.
     21 class CONTENT_EXPORT WebUIControllerFactory {
     22  public:
     23   virtual ~WebUIControllerFactory() {}
     24 
     25   // Call to register a factory.
     26   static void RegisterFactory(WebUIControllerFactory* factory);
     27 
     28   static void UnregisterFactoryForTesting(WebUIControllerFactory* factory);
     29 
     30   // Returns a WebUIController instance for the given URL, or NULL if the URL
     31   // doesn't correspond to a WebUI.
     32   virtual WebUIController* CreateWebUIControllerForURL(
     33       WebUI* web_ui, const GURL& url) const = 0;
     34 
     35   // Gets the WebUI type for the given URL. This will return kNoWebUI if the
     36   // corresponding call to CreateWebUIForURL would fail, or something non-NULL
     37   // if CreateWebUIForURL would succeed.
     38   virtual WebUI::TypeID GetWebUIType(BrowserContext* browser_context,
     39                                      const GURL& url) const = 0;
     40 
     41   // Shorthand for the above, but returns a simple yes/no.
     42   // See also ContentClient::HasWebUIScheme, which only checks the scheme
     43   // (faster) and can be used to determine security policy.
     44   virtual bool UseWebUIForURL(BrowserContext* browser_context,
     45                               const GURL& url) const = 0;
     46 
     47   // Returns true for the subset of WebUIs that actually need WebUI bindings.
     48   virtual bool UseWebUIBindingsForURL(BrowserContext* browser_context,
     49                                       const GURL& url) const = 0;
     50 };
     51 
     52 }  // namespace content
     53 
     54 #endif  // CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_FACTORY_H_
     55