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