Index: chrome/browser/browser_about_handler.cc |
=================================================================== |
--- chrome/browser/browser_about_handler.cc (revision 74394) |
+++ chrome/browser/browser_about_handler.cc (working copy) |
@@ -160,9 +160,6 @@ |
#endif |
}; |
-// Points to the singleton AboutSource object, if any. |
-ChromeURLDataManager::DataSource* about_source = NULL; |
- |
// When you type about:memory, it actually loads an intermediate URL that |
// redirects you to the final page. This avoids the problem where typing |
// "about:memory" on the new tab page or any other page where a process |
@@ -692,21 +689,9 @@ |
AboutSource::AboutSource() |
: DataSource(chrome::kAboutScheme, MessageLoop::current()) { |
- // This should be a singleton. |
- DCHECK(!about_source); |
- about_source = this; |
- |
- // Add us to the global URL handler on the IO thread. |
- BrowserThread::PostTask( |
- BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod( |
- ChromeURLDataManager::GetInstance(), |
- &ChromeURLDataManager::AddDataSource, |
- make_scoped_refptr(this))); |
} |
AboutSource::~AboutSource() { |
- about_source = NULL; |
} |
void AboutSource::StartDataRequest(const std::string& path_raw, |
@@ -1054,7 +1039,7 @@ |
return false; |
// Anything else requires our special handler; make sure it's initialized. |
- InitializeAboutDataSource(); |
+ InitializeAboutDataSource(profile); |
// Special case about:memory to go through a redirect before ending up on |
// the final page. See GetAboutMemoryRedirectResponse above for why. |
@@ -1072,14 +1057,8 @@ |
return true; |
} |
-void InitializeAboutDataSource() { |
- // We only need to register the AboutSource once and it is kept globally. |
- // There is currently no way to remove a data source. |
- static bool initialized = false; |
- if (!initialized) { |
- about_source = new AboutSource(); |
- initialized = true; |
- } |
+void InitializeAboutDataSource(Profile* profile) { |
+ profile->GetChromeURLDataManager()->AddDataSource(new AboutSource()); |
} |
// This function gets called with the fixed-up chrome: URLs, so we have to |