| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/browser_about_handler.h" | 5 #include "chrome/browser/browser_about_handler.h" | 
| 6 | 6 | 
| 7 #include <algorithm> | 7 #include <algorithm> | 
| 8 #include <string> | 8 #include <string> | 
| 9 #include <vector> | 9 #include <vector> | 
| 10 | 10 | 
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 79 // Glue between the callback task and the method in the singleton. | 79 // Glue between the callback task and the method in the singleton. | 
| 80 void AboutTcmallocRendererCallback(base::ProcessId pid, std::string output) { | 80 void AboutTcmallocRendererCallback(base::ProcessId pid, std::string output) { | 
| 81   Singleton<AboutTcmallocOutputs>::get()->RendererCallback(pid, output); | 81   Singleton<AboutTcmallocOutputs>::get()->RendererCallback(pid, output); | 
| 82 } | 82 } | 
| 83 #endif | 83 #endif | 
| 84 | 84 | 
| 85 namespace { | 85 namespace { | 
| 86 | 86 | 
| 87 // The (alphabetized) paths used for the about pages. | 87 // The (alphabetized) paths used for the about pages. | 
| 88 const char kCreditsPath[] = "credits"; | 88 const char kCreditsPath[] = "credits"; | 
|  | 89 const char kCachePath[] = "cache"; | 
| 89 const char kDnsPath[] = "dns"; | 90 const char kDnsPath[] = "dns"; | 
| 90 const char kHistogramsPath[] = "histograms"; | 91 const char kHistogramsPath[] = "histograms"; | 
| 91 const char kMemoryRedirectPath[] = "memory-redirect"; | 92 const char kMemoryRedirectPath[] = "memory-redirect"; | 
| 92 const char kMemoryPath[] = "memory"; | 93 const char kMemoryPath[] = "memory"; | 
| 93 const char kStatsPath[] = "stats"; | 94 const char kStatsPath[] = "stats"; | 
| 94 const char kSyncPath[] = "sync"; | 95 const char kSyncPath[] = "sync"; | 
| 95 const char kTasksPath[] = "tasks"; | 96 const char kTasksPath[] = "tasks"; | 
| 96 const char kTcmallocPath[] = "tcmalloc"; | 97 const char kTcmallocPath[] = "tcmalloc"; | 
| 97 const char kTermsPath[] = "terms"; | 98 const char kTermsPath[] = "terms"; | 
| 98 const char kVersionPath[] = "version"; | 99 const char kVersionPath[] = "version"; | 
|  | 100 const char kAboutPath[] = "about"; | 
|  | 101 // Not about:* pages, but included to make about:about look nicer | 
|  | 102 const char kNetInternalsPath[] = "net-internals"; | 
|  | 103 const char kPluginsPath[] = "plugins"; | 
| 99 | 104 | 
| 100 #if defined(OS_LINUX) | 105 #if defined(OS_LINUX) | 
| 101 const char kLinuxProxyConfigPath[] = "linux-proxy-config"; | 106 const char kLinuxProxyConfigPath[] = "linux-proxy-config"; | 
| 102 #endif | 107 #endif | 
| 103 | 108 | 
| 104 #if defined(OS_CHROMEOS) | 109 #if defined(OS_CHROMEOS) | 
| 105 const char kNetworkPath[] = "network"; | 110 const char kNetworkPath[] = "network"; | 
| 106 const char kOSCreditsPath[] = "os-credits"; | 111 const char kOSCreditsPath[] = "os-credits"; | 
| 107 const char kSysPath[] = "system"; | 112 const char kSysPath[] = "system"; | 
| 108 #endif | 113 #endif | 
| 109 | 114 | 
|  | 115 // Add path here to be included in about:about | 
|  | 116 const char *kAllAboutPaths[] = { | 
|  | 117   kCachePath, | 
|  | 118   kCreditsPath, | 
|  | 119   kDnsPath, | 
|  | 120   kHistogramsPath, | 
|  | 121   kMemoryPath, | 
|  | 122   kNetInternalsPath, | 
|  | 123   kPluginsPath, | 
|  | 124   kStatsPath, | 
|  | 125   kSyncPath, | 
|  | 126   kTasksPath, | 
|  | 127   kTcmallocPath, | 
|  | 128   kTermsPath, | 
|  | 129   kVersionPath, | 
|  | 130 #if defined(OS_LINUX) | 
|  | 131   kLinuxProxyConfigPath, | 
|  | 132 #endif | 
|  | 133 #if defined(OS_CHROMEOS) | 
|  | 134   kNetworkPath, | 
|  | 135   kOSCreditsPath, | 
|  | 136   kSysPath, | 
|  | 137 #endif | 
|  | 138   }; | 
|  | 139 | 
| 110 // Points to the singleton AboutSource object, if any. | 140 // Points to the singleton AboutSource object, if any. | 
| 111 ChromeURLDataManager::DataSource* about_source = NULL; | 141 ChromeURLDataManager::DataSource* about_source = NULL; | 
| 112 | 142 | 
| 113 // When you type about:memory, it actually loads an intermediate URL that | 143 // When you type about:memory, it actually loads an intermediate URL that | 
| 114 // redirects you to the final page. This avoids the problem where typing | 144 // redirects you to the final page. This avoids the problem where typing | 
| 115 // "about:memory" on the new tab page or any other page where a process | 145 // "about:memory" on the new tab page or any other page where a process | 
| 116 // transition would occur to the about URL will cause some confusion. | 146 // transition would occur to the about URL will cause some confusion. | 
| 117 // | 147 // | 
| 118 // The problem is that during the processing of the memory page, there are two | 148 // The problem is that during the processing of the memory page, there are two | 
| 119 // processes active, the original and the destination one. This can create the | 149 // processes active, the original and the destination one. This can create the | 
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 198 | 228 | 
| 199   // Used to request the version. | 229   // Used to request the version. | 
| 200   CancelableRequestConsumer consumer_; | 230   CancelableRequestConsumer consumer_; | 
| 201 | 231 | 
| 202   DISALLOW_COPY_AND_ASSIGN(ChromeOSAboutVersionHandler); | 232   DISALLOW_COPY_AND_ASSIGN(ChromeOSAboutVersionHandler); | 
| 203 }; | 233 }; | 
| 204 #endif | 234 #endif | 
| 205 | 235 | 
| 206 // Individual about handlers --------------------------------------------------- | 236 // Individual about handlers --------------------------------------------------- | 
| 207 | 237 | 
|  | 238 std::string AboutAbout() { | 
|  | 239   std::string html; | 
|  | 240   html.append("<html><head><title>About Pages</title></head><body>\n"); | 
|  | 241   html.append("<h2>List of About pages</h2><ul>\n"); | 
|  | 242   for (size_t i = 0; i < arraysize(kAllAboutPaths); i++) { | 
|  | 243     if (kAllAboutPaths[i] == kNetInternalsPath || | 
|  | 244         kAllAboutPaths[i] == kPluginsPath) | 
|  | 245       html.append("<li><a href='chrome://"); | 
|  | 246     else | 
|  | 247       html.append("<li><a href='chrome://about/"); | 
|  | 248     html.append(kAllAboutPaths[i]); | 
|  | 249     html.append("/'>about:"); | 
|  | 250     html.append(kAllAboutPaths[i]); | 
|  | 251     html.append("</a>\n"); | 
|  | 252   } | 
|  | 253   const char *debug[] = { "crash", "hang", "shorthang" }; | 
|  | 254   html.append("</ul><h2>For Debug</h2>"); | 
|  | 255   html.append("</ul><p>The following pages are for debugging purposes only. " | 
|  | 256               "Because they crash or hang the renderer, they're not linked " | 
|  | 257               "directly; you can type them into the address bar if you need " | 
|  | 258               "them.</p><ul>"); | 
|  | 259   for (size_t i = 0; i < arraysize(debug); i++) { | 
|  | 260     html.append("<li>"); | 
|  | 261     html.append("about:"); | 
|  | 262     html.append(debug[i]); | 
|  | 263     html.append("\n"); | 
|  | 264   } | 
|  | 265   html.append("</ul></body></html>"); | 
|  | 266   return html; | 
|  | 267 } | 
|  | 268 | 
| 208 #if defined(OS_CHROMEOS) | 269 #if defined(OS_CHROMEOS) | 
| 209 std::string AboutNetwork(const std::string& query) { | 270 std::string AboutNetwork(const std::string& query) { | 
| 210   int refresh; | 271   int refresh; | 
| 211   StringToInt(query, &refresh); | 272   StringToInt(query, &refresh); | 
| 212   return chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> | 273   return chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> | 
| 213       GetHtmlInfo(refresh); | 274       GetHtmlInfo(refresh); | 
| 214 } | 275 } | 
| 215 #endif | 276 #endif | 
| 216 | 277 | 
| 217 // AboutDnsHandler bounces the request back to the IO thread to collect | 278 // AboutDnsHandler bounces the request back to the IO thread to collect | 
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 733 #if defined(OS_CHROMEOS) | 794 #if defined(OS_CHROMEOS) | 
| 734     new ChromeOSAboutVersionHandler(this, request_id); | 795     new ChromeOSAboutVersionHandler(this, request_id); | 
| 735     return; | 796     return; | 
| 736 #else | 797 #else | 
| 737     DictionaryValue value; | 798     DictionaryValue value; | 
| 738     response = AboutVersion(&value); | 799     response = AboutVersion(&value); | 
| 739 #endif | 800 #endif | 
| 740   } else if (path == kCreditsPath) { | 801   } else if (path == kCreditsPath) { | 
| 741     response = ResourceBundle::GetSharedInstance().GetRawDataResource( | 802     response = ResourceBundle::GetSharedInstance().GetRawDataResource( | 
| 742         IDR_CREDITS_HTML).as_string(); | 803         IDR_CREDITS_HTML).as_string(); | 
|  | 804   } else if (path == kAboutPath) { | 
|  | 805     response = AboutAbout(); | 
| 743 #if defined(OS_CHROMEOS) | 806 #if defined(OS_CHROMEOS) | 
| 744   } else if (path == kOSCreditsPath) { | 807   } else if (path == kOSCreditsPath) { | 
| 745     response = ResourceBundle::GetSharedInstance().GetRawDataResource( | 808     response = ResourceBundle::GetSharedInstance().GetRawDataResource( | 
| 746         IDR_OS_CREDITS_HTML).as_string(); | 809         IDR_OS_CREDITS_HTML).as_string(); | 
| 747   } else if (path == kNetworkPath) { | 810   } else if (path == kNetworkPath) { | 
| 748     response = AboutNetwork(info); | 811     response = AboutNetwork(info); | 
| 749 #endif | 812 #endif | 
| 750   } else if (path == kTermsPath) { | 813   } else if (path == kTermsPath) { | 
| 751     response = ResourceBundle::GetSharedInstance().GetRawDataResource( | 814     response = ResourceBundle::GetSharedInstance().GetRawDataResource( | 
| 752         IDR_TERMS_HTML).as_string(); | 815         IDR_TERMS_HTML).as_string(); | 
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1043     // Run the dialog. This will re-use the existing one if it's already up. | 1106     // Run the dialog. This will re-use the existing one if it's already up. | 
| 1044     AboutIPCDialog::RunDialog(); | 1107     AboutIPCDialog::RunDialog(); | 
| 1045     return true; | 1108     return true; | 
| 1046   } | 1109   } | 
| 1047 #endif | 1110 #endif | 
| 1048 | 1111 | 
| 1049 #endif  // OFFICIAL_BUILD | 1112 #endif  // OFFICIAL_BUILD | 
| 1050 | 1113 | 
| 1051   return false; | 1114   return false; | 
| 1052 } | 1115 } | 
| OLD | NEW | 
|---|