Home | History | Annotate | Download | only in webui
      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 
     12 class Profile;
     13 
     14 namespace base {
     15 class RefCountedMemory;
     16 }
     17 
     18 // The WebUIController used for the app launcher page UI.
     19 class 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_view_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