File: about_ui.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (135 lines) | stat: -rw-r--r-- 3,499 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Copyright 2011 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_UI_WEBUI_ABOUT_ABOUT_UI_H_
#define CHROME_BROWSER_UI_WEBUI_ABOUT_ABOUT_UI_H_

#include <memory>
#include <string>
#include <string_view>

#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "content/public/browser/url_data_source.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/webui_config.h"

class AboutUI;
class Profile;

namespace content {
class WebUI;
}  // namespace content

// AboutUI is used by multiple chrome:// pages.

class AboutUIConfigBase : public content::DefaultWebUIConfig<AboutUI> {
 public:
  explicit AboutUIConfigBase(std::string_view host);
};

// chrome://credits.
class CreditsUIConfig : public AboutUIConfigBase {
 public:
  CreditsUIConfig();
};

#if !BUILDFLAG(IS_ANDROID)
// chrome://terms
class TermsUIConfig : public AboutUIConfigBase {
 public:
  TermsUIConfig();
};
#endif

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
// chrome://linux-proxy-config
class LinuxProxyConfigUI : public AboutUIConfigBase {
 public:
  LinuxProxyConfigUI();
};
#endif

#if BUILDFLAG(IS_CHROMEOS)
// chrome://os-credits
class OSCreditsUI : public AboutUIConfigBase {
 public:
  OSCreditsUI();
};

// chrome://borealis-credits
class BorealisCreditsUI : public AboutUIConfigBase {
 public:
  BorealisCreditsUI();
};

// chrome://crostini-credits
class CrostiniCreditsUI : public AboutUIConfigBase {
 public:
  CrostiniCreditsUI();
};
#endif

// We expose this class because the OOBE flow may need to explicitly add the
// chrome://terms source outside of the normal flow.
class AboutUIHTMLSource : public content::URLDataSource {
 public:
  // Construct a data source for the specified |source_name|.
  AboutUIHTMLSource(const std::string& source_name, Profile* profile);

  AboutUIHTMLSource(const AboutUIHTMLSource&) = delete;
  AboutUIHTMLSource& operator=(const AboutUIHTMLSource&) = delete;

  ~AboutUIHTMLSource() override;

  // content::URLDataSource implementation.
  std::string GetSource() override;
  void StartDataRequest(
      const GURL& url,
      const content::WebContents::Getter& wc_getter,
      content::URLDataSource::GotDataCallback callback) override;
  std::string GetMimeType(const GURL& url) override;
  std::string GetAccessControlAllowOriginForOrigin(
      const std::string& origin) override;

  // Send the response data.
  void FinishDataRequest(const std::string& html,
                         content::URLDataSource::GotDataCallback callback);

#if BUILDFLAG(IS_CHROMEOS)
  void SetOSCreditsPrefixForTesting(const base::FilePath& prefix) {
    os_credits_prefix_ = prefix;
  }
#endif

  Profile* profile() { return profile_; }

 private:
  std::string source_name_;
  raw_ptr<Profile> profile_;
#if BUILDFLAG(IS_CHROMEOS)
  base::FilePath os_credits_prefix_;
#endif
};

class AboutUI : public content::WebUIController {
 public:
  explicit AboutUI(content::WebUI* web_ui, const GURL& url);

  AboutUI(const AboutUI&) = delete;
  AboutUI& operator=(const AboutUI&) = delete;

  ~AboutUI() override = default;
};

namespace about_ui {

// Helper functions
void AppendHeader(std::string* output, const std::string& unescaped_title);
void AppendBody(std::string* output);
void AppendFooter(std::string* output);

}  // namespace about_ui

#endif  // CHROME_BROWSER_UI_WEBUI_ABOUT_ABOUT_UI_H_