summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorhinoka@chromium.org <hinoka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-28 20:25:59 +0000
committerhinoka@chromium.org <hinoka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-28 20:25:59 +0000
commit4895ce80a2312de7b3a53176edddd9f7b676d402 (patch)
tree653575e9ce74346dd4a7f9d50f52d0a314faba7c /chrome
parentd2bfb9a347378e06cf0b750bbabc3b6606bb83db (diff)
downloadchromium_src-4895ce80a2312de7b3a53176edddd9f7b676d402.zip
chromium_src-4895ce80a2312de7b3a53176edddd9f7b676d402.tar.gz
chromium_src-4895ce80a2312de7b3a53176edddd9f7b676d402.tar.bz2
Added about:about page.
BUG=44699 TEST=Go to about:about, and see if About page loads. Check if links work. Review URL: http://codereview.chromium.org/2845027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51038 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/browser_about_handler.cc63
-rw-r--r--chrome/common/url_constants.cc4
-rw-r--r--chrome/common/url_constants.h4
-rw-r--r--chrome/test/functional/special_tabs.py1
4 files changed, 72 insertions, 0 deletions
diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc
index a7f0bcf..d76b048 100644
--- a/chrome/browser/browser_about_handler.cc
+++ b/chrome/browser/browser_about_handler.cc
@@ -86,6 +86,7 @@ namespace {
// The (alphabetized) paths used for the about pages.
const char kCreditsPath[] = "credits";
+const char kCachePath[] = "cache";
const char kDnsPath[] = "dns";
const char kHistogramsPath[] = "histograms";
const char kMemoryRedirectPath[] = "memory-redirect";
@@ -96,6 +97,10 @@ const char kTasksPath[] = "tasks";
const char kTcmallocPath[] = "tcmalloc";
const char kTermsPath[] = "terms";
const char kVersionPath[] = "version";
+const char kAboutPath[] = "about";
+// Not about:* pages, but included to make about:about look nicer
+const char kNetInternalsPath[] = "net-internals";
+const char kPluginsPath[] = "plugins";
#if defined(OS_LINUX)
const char kLinuxProxyConfigPath[] = "linux-proxy-config";
@@ -107,6 +112,31 @@ const char kOSCreditsPath[] = "os-credits";
const char kSysPath[] = "system";
#endif
+// Add path here to be included in about:about
+const char *kAllAboutPaths[] = {
+ kCachePath,
+ kCreditsPath,
+ kDnsPath,
+ kHistogramsPath,
+ kMemoryPath,
+ kNetInternalsPath,
+ kPluginsPath,
+ kStatsPath,
+ kSyncPath,
+ kTasksPath,
+ kTcmallocPath,
+ kTermsPath,
+ kVersionPath,
+#if defined(OS_LINUX)
+ kLinuxProxyConfigPath,
+#endif
+#if defined(OS_CHROMEOS)
+ kNetworkPath,
+ kOSCreditsPath,
+ kSysPath,
+#endif
+ };
+
// Points to the singleton AboutSource object, if any.
ChromeURLDataManager::DataSource* about_source = NULL;
@@ -205,6 +235,37 @@ class ChromeOSAboutVersionHandler {
// Individual about handlers ---------------------------------------------------
+std::string AboutAbout() {
+ std::string html;
+ html.append("<html><head><title>About Pages</title></head><body>\n");
+ html.append("<h2>List of About pages</h2><ul>\n");
+ for (size_t i = 0; i < arraysize(kAllAboutPaths); i++) {
+ if (kAllAboutPaths[i] == kNetInternalsPath ||
+ kAllAboutPaths[i] == kPluginsPath)
+ html.append("<li><a href='chrome://");
+ else
+ html.append("<li><a href='chrome://about/");
+ html.append(kAllAboutPaths[i]);
+ html.append("/'>about:");
+ html.append(kAllAboutPaths[i]);
+ html.append("</a>\n");
+ }
+ const char *debug[] = { "crash", "hang", "shorthang" };
+ html.append("</ul><h2>For Debug</h2>");
+ html.append("</ul><p>The following pages are for debugging purposes only. "
+ "Because they crash or hang the renderer, they're not linked "
+ "directly; you can type them into the address bar if you need "
+ "them.</p><ul>");
+ for (size_t i = 0; i < arraysize(debug); i++) {
+ html.append("<li>");
+ html.append("about:");
+ html.append(debug[i]);
+ html.append("\n");
+ }
+ html.append("</ul></body></html>");
+ return html;
+}
+
#if defined(OS_CHROMEOS)
std::string AboutNetwork(const std::string& query) {
int refresh;
@@ -740,6 +801,8 @@ void AboutSource::StartDataRequest(const std::string& path_raw,
} else if (path == kCreditsPath) {
response = ResourceBundle::GetSharedInstance().GetRawDataResource(
IDR_CREDITS_HTML).as_string();
+ } else if (path == kAboutPath) {
+ response = AboutAbout();
#if defined(OS_CHROMEOS)
} else if (path == kOSCreditsPath) {
response = ResourceBundle::GetSharedInstance().GetRawDataResource(
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc
index 5bb6ba8..5b625d1 100644
--- a/chrome/common/url_constants.cc
+++ b/chrome/common/url_constants.cc
@@ -51,6 +51,10 @@ const char kAboutNetInternalsURL[] = "about:net-internals";
const char kAboutPluginsURL[] = "about:plugins";
const char kAboutShorthangURL[] = "about:shorthang";
const char kAboutTermsURL[] = "about:terms";
+const char kAboutAboutURL[] = "about:about";
+const char kAboutDNSURL[] = "about:dns";
+const char kAboutHistogramsURL[] = "about:histograms";
+const char kAboutVersionURL[] = "about:version";
// Use an obfuscated URL to make this nondiscoverable, we only want this
// to be used for testing.
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
index b83c928..1972fce 100644
--- a/chrome/common/url_constants.h
+++ b/chrome/common/url_constants.h
@@ -46,6 +46,10 @@ extern const char kAboutMemoryURL[];
extern const char kAboutPluginsURL[];
extern const char kAboutShorthangURL[];
extern const char kAboutTermsURL[];
+extern const char kAboutAboutURL[];
+extern const char kAboutDNSURL[];
+extern const char kAboutHistogramsURL[];
+extern const char kAboutVersionURL[];
// chrome: URLs (including schemes). Should be kept in sync with the
// components below.
diff --git a/chrome/test/functional/special_tabs.py b/chrome/test/functional/special_tabs.py
index 0edc858..954f937 100644
--- a/chrome/test/functional/special_tabs.py
+++ b/chrome/test/functional/special_tabs.py
@@ -18,6 +18,7 @@ class SpecialTabsTest(pyauto.PyUITest):
special_url_tabs = {
'about:': 'About Version',
+ 'about:about': 'About Pages',
'about:appcache-internals': 'AppCache Internals',
'about:credits': 'Credits',
'about:dns': 'About DNS',