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 CHROME_BROWSER_UI_WEBUI_APP_LAUNCHER_PAGE_UI_H_
6#define CHROME_BROWSER_UI_WEBUI_APP_LAUNCHER_PAGE_UI_H_
7
8#include "content/public/browser/url_data_source.h"
9#include "content/public/browser/web_ui_controller.h"
10#include "ui/base/layout.h"
11
12class Profile;
13
14namespace base {
15class RefCountedMemory;
16}
17
18// The WebUIController used for the app launcher page UI.
19class AppLauncherPageUI : public content::WebUIController {
20 public:
21  explicit AppLauncherPageUI(content::WebUI* web_ui);
22  virtual ~AppLauncherPageUI();
23
24  static base::RefCountedMemory* GetFaviconResourceBytes(
25      ui::ScaleFactor scale_factor);
26
27 private:
28  class HTMLSource : public content::URLDataSource {
29   public:
30    explicit HTMLSource(Profile* profile);
31    virtual ~HTMLSource();
32
33    // content::URLDataSource implementation.
34    virtual std::string GetSource() const OVERRIDE;
35    virtual void StartDataRequest(
36        const std::string& path,
37        int render_process_id,
38        int render_frame_id,
39        const content::URLDataSource::GotDataCallback& callback) OVERRIDE;
40    virtual std::string GetMimeType(const std::string&) const OVERRIDE;
41    virtual bool ShouldReplaceExistingSource() const OVERRIDE;
42    virtual bool ShouldAddContentSecurityPolicy() const OVERRIDE;
43
44   private:
45
46    // Pointer back to the original profile.
47    Profile* profile_;
48
49    DISALLOW_COPY_AND_ASSIGN(HTMLSource);
50  };
51
52  Profile* GetProfile() const;
53
54  DISALLOW_COPY_AND_ASSIGN(AppLauncherPageUI);
55};
56
57#endif  // CHROME_BROWSER_UI_WEBUI_APP_LAUNCHER_PAGE_UI_H_
58