Index: content/browser/webui/web_ui_factory.h |
=================================================================== |
--- content/browser/webui/web_ui_factory.h (revision 79692) |
+++ content/browser/webui/web_ui_factory.h (working copy) |
@@ -6,51 +6,62 @@ |
#define CONTENT_BROWSER_WEBUI_WEB_UI_FACTORY_H_ |
#pragma once |
-#include "content/browser/webui/web_ui.h" |
+#include "base/basictypes.h" |
+#include "chrome/browser/favicon_service.h" |
+class WebUI; |
+class GURL; |
class Profile; |
+class RefCountedMemory; |
class TabContents; |
-class GURL; |
-namespace content { |
+// An opaque identifier used to identify a WebUI. This can only be compared to |
+// kNoWebUI or other WebUI types. See GetWebUIType. |
+typedef void* WebUITypeID; |
-// Interface for an object which controls which URLs are considered WebUI URLs |
-// and creates WebUI instances for given URLs. |
class WebUIFactory { |
public: |
- // Returns a WebUI instance for the given URL, or NULL if the URL doesn't |
- // correspond to a WebUI. |
- virtual WebUI* CreateWebUIForURL(TabContents* source, |
- const GURL& url) const = 0; |
+ // A special WebUI type that signifies that a given page would not use the |
+ // Web UI system. |
+ static const WebUITypeID kNoWebUI; |
- // Gets the WebUI type for the given URL. This will return kNoWebUI if the |
- // corresponding call to CreateWebUIForURL would fail, or something non-NULL |
- // if CreateWebUIForURL would succeed. |
- virtual WebUI::TypeID GetWebUIType(Profile* profile, |
- const GURL& url) const = 0; |
+ // Returns a type identifier indicating what WebUI we would use for the |
+ // given URL. This is useful for comparing the potential WebUIs for two URLs. |
+ // Returns kNoWebUI if the given URL will not use the Web UI system. |
+ static WebUITypeID GetWebUIType(Profile* profile, const GURL& url); |
- // Shorthand for the above, but returns a simple yes/no. |
- virtual bool UseWebUIForURL(Profile* profile, const GURL& url) const = 0; |
+ // Returns true if the given URL's scheme would trigger the Web UI system. |
+ // This is a less precise test than UseDONUIForURL, which tells you whether |
+ // that specific URL matches a known one. This one is faster and can be used |
+ // to determine security policy. |
+ static bool HasWebUIScheme(const GURL& url); |
- // Returns true if the url has a scheme for WebUI. This differs from the above |
- // in that it only checks the scheme; it is faster and can be used to |
- // determine security policy. |
- virtual bool HasWebUIScheme(const GURL& url) const = 0; |
+ // Returns true if the given URL must use the Web UI system. |
+ static bool UseWebUIForURL(Profile* profile, const GURL& url); |
- // Returns true if the given URL can be loaded by Web UI system. This allows |
- // URLs with WebUI types (as above) and also URLs that can be loaded by |
- // normal tabs such as javascript: URLs or about:hang. |
- virtual bool IsURLAcceptableForWebUI(Profile* profile, |
- const GURL& url) const = 0; |
+ // Returns true if the given URL can be loaded by Web UI system. This |
+ // includes URLs that can be loaded by normal tabs as well, such as |
+ // javascript: URLs or about:hang. |
+ static bool IsURLAcceptableForWebUI(Profile* profile, const GURL& url); |
- virtual ~WebUIFactory() {} |
+ // Allocates a new WebUI object for the given URL, and returns it. If the URL |
+ // is not a Web UI URL, then it will return NULL. When non-NULL, ownership of |
+ // the returned pointer is passed to the caller. |
+ static WebUI* CreateWebUIForURL(TabContents* tab_contents, const GURL& url); |
- // Helper function to streamline retrieval of the current WebUIFactory. Only |
- // to be used in content/. |
- static WebUIFactory* Get(); |
-}; |
+ // Get the favicon for |page_url| and forward the result to the |request| |
+ // when loaded. |
+ static void GetFaviconForURL(Profile* profile, |
+ FaviconService::GetFaviconRequest* request, |
+ const GURL& page_url); |
+ private: |
+ // Gets the data for the favicon for a WebUI page. Returns NULL if the WebUI |
+ // does not have a favicon. |
+ static RefCountedMemory* GetFaviconResourceBytes(Profile* profile, |
+ const GURL& page_url); |
-} // namespace content |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(WebUIFactory); |
+}; |
#endif // CONTENT_BROWSER_WEBUI_WEB_UI_FACTORY_H_ |