Index: components/webdata/common/web_database_service.cc |
diff --git a/components/webdata/common/web_database_service.cc b/components/webdata/common/web_database_service.cc |
index 6da199971ef137313bad7749c7534bb5f057b26e..0bd508b555213227fb2b50ed05204b99d2b1ccfb 100644 |
--- a/components/webdata/common/web_database_service.cc |
+++ b/components/webdata/common/web_database_service.cc |
@@ -13,7 +13,6 @@ |
using base::Bind; |
using base::FilePath; |
-using content::BrowserThread; |
// Receives messages from the backend on the DB thread, posts them to |
// WebDatabaseService on the UI thread. |
@@ -22,12 +21,12 @@ class WebDatabaseService::BackendDelegate : |
public: |
BackendDelegate( |
const base::WeakPtr<WebDatabaseService>& web_database_service) |
- : web_database_service_(web_database_service) { |
+ : web_database_service_(web_database_service), |
+ callback_thread_(base::MessageLoopProxy::current()) { |
} |
virtual void DBLoaded(sql::InitStatus status) OVERRIDE { |
- BrowserThread::PostTask( |
- BrowserThread::UI, |
+ callback_thread_->PostTask( |
FROM_HERE, |
base::Bind(&WebDatabaseService::OnDatabaseLoadDone, |
web_database_service_, |
@@ -35,19 +34,22 @@ class WebDatabaseService::BackendDelegate : |
} |
private: |
const base::WeakPtr<WebDatabaseService> web_database_service_; |
+ scoped_refptr<base::MessageLoopProxy> callback_thread_; |
}; |
WebDatabaseService::WebDatabaseService( |
const base::FilePath& path, |
- const scoped_refptr<base::MessageLoopProxy>& ui_thread) |
+ const scoped_refptr<base::MessageLoopProxy>& ui_thread, |
+ const scoped_refptr<base::MessageLoopProxy>& db_thread) |
: base::RefCountedDeleteOnMessageLoop<WebDatabaseService>(ui_thread), |
path_(path), |
weak_ptr_factory_(this), |
- db_loaded_(false) { |
+ db_loaded_(false), |
+ db_thread_(db_thread) { |
// WebDatabaseService should be instantiated on UI thread. |
DCHECK(ui_thread->BelongsToCurrentThread()); |
// WebDatabaseService requires DB thread if instantiated. |
- DCHECK(BrowserThread::IsWellKnownThread(BrowserThread::DB)); |
+ DCHECK(db_thread); |
} |
WebDatabaseService::~WebDatabaseService() { |
@@ -56,7 +58,8 @@ WebDatabaseService::~WebDatabaseService() { |
void WebDatabaseService::AddTable(scoped_ptr<WebDatabaseTable> table) { |
if (!wds_backend_.get()) { |
wds_backend_ = new WebDataServiceBackend( |
- path_, new BackendDelegate(weak_ptr_factory_.GetWeakPtr())); |
+ path_, new BackendDelegate(weak_ptr_factory_.GetWeakPtr()), |
+ db_thread_); |
} |
wds_backend_->AddTable(table.Pass()); |
} |
@@ -64,8 +67,7 @@ void WebDatabaseService::AddTable(scoped_ptr<WebDatabaseTable> table) { |
void WebDatabaseService::LoadDatabase() { |
DCHECK(wds_backend_.get()); |
- BrowserThread::PostTask( |
- BrowserThread::DB, |
+ db_thread_->PostTask( |
FROM_HERE, |
Bind(&WebDataServiceBackend::InitDatabase, wds_backend_)); |
} |
@@ -74,7 +76,7 @@ void WebDatabaseService::UnloadDatabase() { |
db_loaded_ = false; |
if (!wds_backend_.get()) |
return; |
- BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
+ db_thread_->PostTask(FROM_HERE, |
Bind(&WebDataServiceBackend::ShutdownDatabase, |
wds_backend_, true)); |
} |
@@ -86,13 +88,13 @@ void WebDatabaseService::ShutdownDatabase() { |
error_callbacks_.clear(); |
if (!wds_backend_.get()) |
return; |
- BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
+ db_thread_->PostTask(FROM_HERE, |
Bind(&WebDataServiceBackend::ShutdownDatabase, |
wds_backend_, false)); |
} |
WebDatabase* WebDatabaseService::GetDatabaseOnDB() const { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
+ DCHECK(db_thread_->BelongsToCurrentThread()); |
if (!wds_backend_.get()) |
return NULL; |
return wds_backend_->database(); |
@@ -113,7 +115,7 @@ void WebDatabaseService::ScheduleDBTask( |
scoped_ptr<WebDataRequest> request( |
new WebDataRequest(NULL, wds_backend_->request_manager().get())); |
- BrowserThread::PostTask(BrowserThread::DB, from_here, |
+ db_thread_->PostTask(from_here, |
Bind(&WebDataServiceBackend::DBWriteTaskWrapper, wds_backend_, |
task, base::Passed(&request))); |
} |
@@ -134,7 +136,7 @@ WebDataServiceBase::Handle WebDatabaseService::ScheduleDBTaskWithResult( |
new WebDataRequest(consumer, wds_backend_->request_manager().get())); |
handle = request->GetHandle(); |
- BrowserThread::PostTask(BrowserThread::DB, from_here, |
+ db_thread_->PostTask(from_here, |
Bind(&WebDataServiceBackend::DBReadTaskWrapper, wds_backend_, |
task, base::Passed(&request))); |