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

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

Issue 11885021: Don't derive from ChromeURLDataManager::DataSource, and instead have these classes implement a dele… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix WebUISourcesTest unittest Created 7 years, 11 months 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/chrome_url_data_manager.cc
===================================================================
--- chrome/browser/ui/webui/chrome_url_data_manager.cc (revision 176443)
+++ chrome/browser/ui/webui/chrome_url_data_manager.cc (working copy)
@@ -20,6 +20,7 @@
#include "chrome/browser/ui/webui/chrome_url_data_manager_factory.h"
#include "chrome/browser/ui/webui/chrome_url_data_manager_backend.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/url_data_source_delegate.h"
#include "grit/platform_locale_settings.h"
#include "ui/base/l10n/l10n_util.h"
@@ -38,12 +39,12 @@
g_delete_lock = LAZY_INSTANCE_INITIALIZER;
// static
-ChromeURLDataManager::DataSources* ChromeURLDataManager::data_sources_ = NULL;
+ChromeURLDataManager::URLDataSources* ChromeURLDataManager::data_sources_ = NULL;
// Invoked on the IO thread to do the actual adding of the DataSource.
static void AddDataSourceOnIOThread(
const base::Callback<ChromeURLDataManagerBackend*(void)>& backend,
- scoped_refptr<ChromeURLDataManager::DataSource> data_source) {
+ scoped_refptr<URLDataSource> data_source) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
backend.Run()->AddDataSource(data_source.get());
}
@@ -56,7 +57,7 @@
ChromeURLDataManager::~ChromeURLDataManager() {
}
-void ChromeURLDataManager::AddDataSource(DataSource* source) {
+void ChromeURLDataManager::AddDataSource(URLDataSource* source) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
@@ -67,7 +68,7 @@
// static
void ChromeURLDataManager::DeleteDataSources() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DataSources sources;
+ URLDataSources sources;
{
base::AutoLock lock(g_delete_lock.Get());
if (!data_sources_)
@@ -79,7 +80,7 @@
}
// static
-void ChromeURLDataManager::DeleteDataSource(const DataSource* data_source) {
+void ChromeURLDataManager::DeleteDataSource(const URLDataSource* data_source) {
// Invoked when a DataSource is no longer referenced and needs to be deleted.
if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
// We're on the UI thread, delete right away.
@@ -93,7 +94,7 @@
{
base::AutoLock lock(g_delete_lock.Get());
if (!data_sources_)
- data_sources_ = new DataSources();
+ data_sources_ = new URLDataSources();
schedule_delete = data_sources_->empty();
data_sources_->push_back(data_source);
}
@@ -106,13 +107,20 @@
}
// static
-void ChromeURLDataManager::AddDataSource(Profile* profile, DataSource* source) {
- ChromeURLDataManagerFactory::GetForProfile(profile)->AddDataSource(source);
+void ChromeURLDataManager::AddDataSource(
+ Profile* profile,
+ content::URLDataSourceDelegate* delegate) {
+ if (!delegate->url_data_source_) {
+ delegate->url_data_source_ = new URLDataSource(
+ delegate->GetSource(), delegate);
+ }
+ ChromeURLDataManagerFactory::GetForProfile(profile)->AddDataSource(
+ delegate->url_data_source_);
}
// static
bool ChromeURLDataManager::IsScheduledForDeletion(
- const DataSource* data_source) {
+ const URLDataSource* data_source) {
base::AutoLock lock(g_delete_lock.Get());
if (!data_sources_)
return false;
@@ -120,22 +128,22 @@
data_sources_->end();
}
-ChromeURLDataManager::DataSource::DataSource(const std::string& source_name,
- MessageLoop* message_loop)
+URLDataSource::URLDataSource(const std::string& source_name,
+ content::URLDataSourceDelegate* delegate)
: source_name_(source_name),
- message_loop_(message_loop),
- backend_(NULL) {
+ backend_(NULL),
+ delegate_(delegate) {
}
-ChromeURLDataManager::DataSource::~DataSource() {
+URLDataSource::~URLDataSource() {
}
-void ChromeURLDataManager::DataSource::SendResponse(
+void URLDataSource::SendResponse(
int request_id,
base::RefCountedMemory* bytes) {
// Take a ref-pointer on entry so byte->Release() will always get called.
scoped_refptr<base::RefCountedMemory> bytes_ptr(bytes);
- if (IsScheduledForDeletion(this)) {
+ if (ChromeURLDataManager::IsScheduledForDeletion(this)) {
// We're scheduled for deletion. Servicing the request would result in
// this->AddRef being invoked, even though the ref count is 0 and 'this' is
// about to be deleted. If the AddRef were allowed through, when 'this' is
@@ -151,23 +159,12 @@
}
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
- base::Bind(&DataSource::SendResponseOnIOThread, this, request_id,
+ base::Bind(&URLDataSource::SendResponseOnIOThread, this, request_id,
bytes_ptr));
}
-MessageLoop* ChromeURLDataManager::DataSource::MessageLoopForRequestPath(
- const std::string& path) const {
- return message_loop_;
-}
-
-bool ChromeURLDataManager::DataSource::ShouldReplaceExistingSource() const {
- return true;
-}
-
-bool ChromeURLDataManager::DataSource::AllowCaching() const { return true; }
-
// static
-void ChromeURLDataManager::DataSource::SetFontAndTextDirection(
+void URLDataSource::SetFontAndTextDirection(
DictionaryValue* localized_strings) {
int web_font_family_id = IDS_WEB_FONT_FAMILY;
int web_font_size_id = IDS_WEB_FONT_SIZE;
@@ -195,7 +192,7 @@
base::i18n::IsRTL() ? "rtl" : "ltr");
}
-void ChromeURLDataManager::DataSource::SendResponseOnIOThread(
+void URLDataSource::SendResponseOnIOThread(
int request_id,
scoped_refptr<base::RefCountedMemory> bytes) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));

Powered by Google App Engine
This is Rietveld 408576698