chrome_web_ui_controller_factory.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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 CHROME_BROWSER_UI_WEBUI_CHROME_WEB_UI_CONTROLLER_FACTORY_H_
6#define CHROME_BROWSER_UI_WEBUI_CHROME_WEB_UI_CONTROLLER_FACTORY_H_
7
8#include "base/basictypes.h"
9#include "base/memory/singleton.h"
10#include "components/favicon_base/favicon_callback.h"
11#include "content/public/browser/web_ui.h"
12#include "content/public/browser/web_ui_controller_factory.h"
13#include "ui/base/layout.h"
14
15class Profile;
16
17namespace base {
18class RefCountedMemory;
19}
20
21class ChromeWebUIControllerFactory : public content::WebUIControllerFactory {
22 public:
23  virtual content::WebUI::TypeID GetWebUIType(
24      content::BrowserContext* browser_context,
25      const GURL& url) const OVERRIDE;
26  virtual bool UseWebUIForURL(content::BrowserContext* browser_context,
27                              const GURL& url) const OVERRIDE;
28  virtual bool UseWebUIBindingsForURL(content::BrowserContext* browser_context,
29                                      const GURL& url) const OVERRIDE;
30  virtual content::WebUIController* CreateWebUIControllerForURL(
31      content::WebUI* web_ui,
32      const GURL& url) const OVERRIDE;
33
34  // Get the favicon for |page_url| and run |callback| with result when loaded.
35  // Note. |callback| is always run asynchronously.
36  void GetFaviconForURL(
37      Profile* profile,
38      const GURL& page_url,
39      const std::vector<ui::ScaleFactor>& scale_factors,
40      const favicon_base::FaviconResultsCallback& callback) const;
41
42  static ChromeWebUIControllerFactory* GetInstance();
43
44 protected:
45  ChromeWebUIControllerFactory();
46  virtual ~ChromeWebUIControllerFactory();
47
48 private:
49  friend struct DefaultSingletonTraits<ChromeWebUIControllerFactory>;
50
51  // Gets the data for the favicon for a WebUI page. Returns NULL if the WebUI
52  // does not have a favicon.
53  // The returned favicon data must be
54  // |gfx::kFaviconSize| x |gfx::kFaviconSize| DIP. GetFaviconForURL() should
55  // be updated if this changes.
56  base::RefCountedMemory* GetFaviconResourceBytes(
57      const GURL& page_url, ui::ScaleFactor scale_factor) const;
58
59  DISALLOW_COPY_AND_ASSIGN(ChromeWebUIControllerFactory);
60};
61
62#endif  // CHROME_BROWSER_UI_WEBUI_CHROME_WEB_UI_CONTROLLER_FACTORY_H_
63