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