1 // Copyright (c) 2011 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_ABOUT_UI_H_ 6 #define CHROME_BROWSER_UI_WEBUI_ABOUT_UI_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "content/public/browser/url_data_source.h" 13 #include "content/public/browser/web_ui_controller.h" 14 15 class Profile; 16 17 // We expose this class because the OOBE flow may need to explicitly add the 18 // chrome://terms source outside of the normal flow. 19 class AboutUIHTMLSource : public content::URLDataSource { 20 public: 21 // Construct a data source for the specified |source_name|. 22 AboutUIHTMLSource(const std::string& source_name, Profile* profile); 23 24 // content::URLDataSource implementation. 25 virtual std::string GetSource() const OVERRIDE; 26 virtual void StartDataRequest( 27 const std::string& path, 28 int render_process_id, 29 int render_view_id, 30 const content::URLDataSource::GotDataCallback& callback) OVERRIDE; 31 virtual std::string GetMimeType(const std::string& path) const OVERRIDE; 32 virtual bool ShouldAddContentSecurityPolicy() const OVERRIDE; 33 virtual bool ShouldDenyXFrameOptions() const OVERRIDE; 34 35 // Send the response data. 36 void FinishDataRequest( 37 const std::string& html, 38 const content::URLDataSource::GotDataCallback& callback); 39 40 Profile* profile() { return profile_; } 41 42 private: 43 virtual ~AboutUIHTMLSource(); 44 45 std::string source_name_; 46 Profile* profile_; 47 48 DISALLOW_COPY_AND_ASSIGN(AboutUIHTMLSource); 49 }; 50 51 class AboutUI : public content::WebUIController { 52 public: 53 explicit AboutUI(content::WebUI* web_ui, const std::string& host); 54 virtual ~AboutUI() {} 55 56 private: 57 DISALLOW_COPY_AND_ASSIGN(AboutUI); 58 }; 59 60 namespace about_ui { 61 62 // Helper functions 63 void AppendHeader(std::string* output, int refresh, 64 const std::string& unescaped_title); 65 void AppendBody(std::string *output); 66 void AppendFooter(std::string *output); 67 68 } // namespace about_ui 69 70 #endif // CHROME_BROWSER_UI_WEBUI_ABOUT_UI_H_ 71