Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Unified Diff: chrome/browser/ui/webui/about_ui.cc

Issue 8623001: Move remaining about: handlers to webUI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/about_ui.cc
===================================================================
--- chrome/browser/ui/webui/about_ui.cc (revision 110966)
+++ chrome/browser/ui/webui/about_ui.cc (working copy)
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/browser_about_handler.h"
+#include "chrome/browser/ui/webui/about_ui.h"
#include <algorithm>
#include <string>
@@ -27,6 +27,7 @@
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/about_flags.h"
+#include "chrome/browser/browser_about_handler.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/defaults.h"
#include "chrome/browser/memory_details.h"
@@ -49,6 +50,7 @@
#include "content/browser/plugin_service.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/sensors/sensors_provider.h"
+#include "content/browser/tab_contents/tab_contents.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/common/content_client.h"
@@ -90,113 +92,8 @@
using base::TimeDelta;
using content::BrowserThread;
-#if defined(USE_TCMALLOC)
-// static
-AboutTcmallocOutputs* AboutTcmallocOutputs::GetInstance() {
- return Singleton<AboutTcmallocOutputs>::get();
-}
-
-AboutTcmallocOutputs::AboutTcmallocOutputs() {}
-
-AboutTcmallocOutputs::~AboutTcmallocOutputs() {}
-
-// Glue between the callback task and the method in the singleton.
-void AboutTcmallocRendererCallback(base::ProcessId pid,
- const std::string& output) {
- AboutTcmallocOutputs::GetInstance()->RendererCallback(pid, output);
-}
-#endif
-
namespace {
-// Add paths here to be included in chrome://chrome-urls (about:about).
-// These paths will also be suggested by BuiltinProvider.
-const char* const kChromePaths[] = {
- chrome::kChromeUIAppCacheInternalsHost,
- chrome::kChromeUIBlobInternalsHost,
- chrome::kChromeUIBookmarksHost,
- chrome::kChromeUICacheHost,
- chrome::kChromeUIChromeURLsHost,
- chrome::kChromeUICrashesHost,
- chrome::kChromeUICreditsHost,
- chrome::kChromeUIDNSHost,
- chrome::kChromeUIDownloadsHost,
- chrome::kChromeUIExtensionsHost,
- chrome::kChromeUIFlagsHost,
- chrome::kChromeUIFlashHost,
- chrome::kChromeUIGpuInternalsHost,
- chrome::kChromeUIHistogramsHost,
- chrome::kChromeUIHistoryHost,
- chrome::kChromeUIIPCHost,
- chrome::kChromeUIMediaInternalsHost,
- chrome::kChromeUIMemoryHost,
- chrome::kChromeUINetInternalsHost,
- chrome::kChromeUINetworkViewCacheHost,
- chrome::kChromeUINewTabHost,
- chrome::kChromeUIPluginsHost,
- chrome::kChromeUIPrintHost,
- chrome::kChromeUIProfilerHost,
- chrome::kChromeUIQuotaInternalsHost,
- chrome::kChromeUISessionsHost,
- chrome::kChromeUISettingsHost,
- chrome::kChromeUIStatsHost,
- chrome::kChromeUISyncInternalsHost,
- chrome::kChromeUITaskManagerHost,
- chrome::kChromeUITCMallocHost,
- chrome::kChromeUITermsHost,
- chrome::kChromeUITracingHost,
- chrome::kChromeUIVersionHost,
- chrome::kChromeUIWorkersHost,
-#if defined(OS_WIN)
- chrome::kChromeUIConflictsHost,
-#endif
-#if defined(OS_LINUX) || defined(OS_OPENBSD)
- chrome::kChromeUILinuxProxyConfigHost,
- chrome::kChromeUISandboxHost,
-#endif
-#if defined(OS_CHROMEOS)
- chrome::kChromeUIActiveDownloadsHost,
- chrome::kChromeUIChooseMobileNetworkHost,
- chrome::kChromeUICryptohomeHost,
- chrome::kChromeUIDiscardsHost,
- chrome::kChromeUIImageBurnerHost,
- chrome::kChromeUIKeyboardOverlayHost,
- chrome::kChromeUILoginHost,
- chrome::kChromeUINetworkHost,
- chrome::kChromeUIOobeHost,
- chrome::kChromeUIOSCreditsHost,
- chrome::kChromeUIProxySettingsHost,
- chrome::kChromeUISystemInfoHost,
-#endif
-};
-
-// AboutSource handles these chrome:// paths.
-const char* const kAboutSourceNames[] = {
- chrome::kChromeUIChromeURLsHost,
- chrome::kChromeUICreditsHost,
- chrome::kChromeUIDNSHost,
- chrome::kChromeUIHistogramsHost,
- chrome::kChromeUIMemoryHost,
- chrome::kChromeUIMemoryRedirectHost,
- chrome::kChromeUIStatsHost,
- chrome::kChromeUITaskManagerHost,
- chrome::kChromeUITermsHost,
- chrome::kChromeUIVersionHost,
-#if defined(USE_TCMALLOC)
- chrome::kChromeUITCMallocHost,
-#endif
-#if defined(OS_LINUX) || defined(OS_OPENBSD)
- chrome::kChromeUILinuxProxyConfigHost,
- chrome::kChromeUISandboxHost,
-#endif
-#if defined(OS_CHROMEOS)
- chrome::kChromeUICryptohomeHost,
- chrome::kChromeUIDiscardsHost,
- chrome::kChromeUINetworkHost,
- chrome::kChromeUIOSCreditsHost,
-#endif
-};
-
const char kCreditsJsPath[] = "credits.js";
const char kMemoryJsPath[] = "memory.js";
const char kStatsJsPath[] = "stats.js";
@@ -240,7 +137,6 @@
// redirect solves the problem by eliminating the process transition during the
// time that about memory is being computed.
std::string GetAboutMemoryRedirectResponse(Profile* profile) {
- InitializeAboutDataSource(chrome::kChromeUIMemoryRedirectHost, profile);
return StringPrintf("<meta http-equiv=\"refresh\" content=\"0;%s\">",
chrome::kChromeUIMemoryRedirectURL);
}
@@ -1499,128 +1395,10 @@
return "text/html";
}
-// -----------------------------------------------------------------------------
-
-void InitializeAboutDataSource(const std::string& name,
- content::BrowserContext* browser_context) {
- Profile* profile = static_cast<Profile*>(browser_context);
- ChromeURLDataManager* manager = profile->GetChromeURLDataManager();
- for (size_t i = 0; i < arraysize(kAboutSourceNames); i++) {
- if (name == kAboutSourceNames[i]) {
- manager->AddDataSource(new AboutSource(name, profile));
- return;
- }
- }
+AboutUI::AboutUI(TabContents* contents, const std::string& name)
+ : ChromeWebUI(contents) {
+ Profile* profile = Profile::FromBrowserContext(contents->browser_context());
+ ChromeURLDataManager::DataSource* source = new AboutSource(name, profile);
+ if (source)
+ profile->GetChromeURLDataManager()->AddDataSource(source);
}
-
-bool WillHandleBrowserAboutURL(GURL* url,
- content::BrowserContext* browser_context) {
- // TODO(msw): Eliminate "about:*" constants and literals from code and tests,
- // then hopefully we can remove this forced fixup.
- *url = URLFixerUpper::FixupURL(url->possibly_invalid_spec(), std::string());
-
- // Check that about: URLs are fixed up to chrome: by URLFixerUpper::FixupURL.
- DCHECK((*url == GURL(chrome::kAboutBlankURL)) ||
- !url->SchemeIs(chrome::kAboutScheme));
-
- // Only handle chrome://foo/, URLFixerUpper::FixupURL translates about:foo.
- // TAB_CONTENTS_WEB handles about:blank, which frames are allowed to access.
- if (!url->SchemeIs(chrome::kChromeUIScheme))
- return false;
-
- // Circumvent processing URLs that the renderer process will handle.
- if (chrome_about_handler::WillHandle(*url))
- return false;
-
- std::string host(url->host());
- std::string path;
- // Replace about with chrome-urls.
- if (host == chrome::kChromeUIAboutHost)
- host = chrome::kChromeUIChromeURLsHost;
- // Replace cache with view-http-cache.
- if (host == chrome::kChromeUICacheHost) {
- host = chrome::kChromeUINetworkViewCacheHost;
- // Replace gpu with gpu-internals.
- } else if (host == chrome::kChromeUIGpuHost) {
- host = chrome::kChromeUIGpuInternalsHost;
- // Replace sync with sync-internals (for legacy reasons).
- } else if (host == chrome::kChromeUISyncHost) {
- host = chrome::kChromeUISyncInternalsHost;
- // Redirect chrome://extensions to chrome://settings/extensions.
- } else if (host == chrome::kChromeUIExtensionsHost) {
- host = chrome::kChromeUISettingsHost;
- path = chrome::kExtensionsSubPage;
- }
- GURL::Replacements replacements;
- replacements.SetHostStr(host);
- if (!path.empty())
- replacements.SetPathStr(path);
- *url = url->ReplaceComponents(replacements);
-
- // Handle URLs to crash the browser or wreck the gpu process.
- if (host == chrome::kChromeUIBrowserCrashHost) {
- // Induce an intentional crash in the browser process.
- CHECK(false);
- } else if (host == chrome::kChromeUIGpuCleanHost) {
- GpuProcessHostUIShim* shim = GpuProcessHostUIShim::FromID(0);
- if (shim)
- shim->SimulateRemoveAllContext();
- } else if (host == chrome::kChromeUIGpuCrashHost) {
- GpuProcessHostUIShim* shim = GpuProcessHostUIShim::FromID(0);
- if (shim)
- shim->SimulateCrash();
- } else if (host == chrome::kChromeUIGpuHangHost) {
- GpuProcessHostUIShim* shim = GpuProcessHostUIShim::FromID(0);
- if (shim)
- shim->SimulateHang();
-#if defined(OS_CHROMEOS)
- } else if (host == chrome::kChromeUIRotateHost) {
- sensors::ScreenOrientation change;
- std::string query(url->query());
- if (query == "left") {
- change.upward = sensors::ScreenOrientation::LEFT;
- } else if (query == "right") {
- change.upward = sensors::ScreenOrientation::RIGHT;
- } else if (query == "top") {
- change.upward = sensors::ScreenOrientation::TOP;
- } else if (query == "bottom") {
- change.upward = sensors::ScreenOrientation::BOTTOM;
- } else {
- NOTREACHED() << "Unknown orientation";
- }
- sensors::Provider::GetInstance()->ScreenOrientationChanged(change);
- // Nothing to communicate to the user, so show a blank page.
- host = chrome::kChromeUIBlankHost;
- *url = GURL(chrome::kChromeUIBlankHost);
-#endif
- }
-
- // Initialize any potentially corresponding AboutSource handler.
- InitializeAboutDataSource(host, browser_context);
- return true;
-}
-
-bool HandleNonNavigationAboutURL(const GURL& url) {
- // chrome://ipc/ is currently buggy, so we disable it for official builds.
-#if !defined(OFFICIAL_BUILD)
-
-#if (defined(OS_MACOSX) || defined(OS_WIN)) && defined(IPC_MESSAGE_LOG_ENABLED)
- if (LowerCaseEqualsASCII(url.spec(), chrome::kChromeUIIPCURL)) {
- // Run the dialog. This will re-use the existing one if it's already up.
- browser::ShowAboutIPCDialog();
- return true;
- }
-#endif
-
-#endif // OFFICIAL_BUILD
-
- return false;
-}
-
-std::vector<std::string> ChromePaths() {
- std::vector<std::string> paths;
- paths.reserve(arraysize(kChromePaths));
- for (size_t i = 0; i < arraysize(kChromePaths); i++)
- paths.push_back(kChromePaths[i]);
- return paths;
-}

Powered by Google App Engine
This is Rietveld 408576698