| Index: chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc
|
| diff --git a/chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc b/chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc
|
| index b517ee63c24e8e587ef755f2689f8b1f1350024c..59e3625f2fbddbe22e743463dc970b76c2f2ba59 100644
|
| --- a/chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc
|
| +++ b/chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc
|
| @@ -16,12 +16,10 @@
|
| #include "chrome/browser/browsing_data/browsing_data_helper.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/indexed_db_context.h"
|
| -#include "webkit/browser/database/database_util.h"
|
|
|
| using content::BrowserThread;
|
| using content::IndexedDBContext;
|
| using content::IndexedDBInfo;
|
| -using webkit_database::DatabaseUtil;
|
|
|
| namespace {
|
|
|
| @@ -38,12 +36,12 @@ class BrowsingDataIndexedDBHelperImpl : public BrowsingDataIndexedDBHelper {
|
| private:
|
| virtual ~BrowsingDataIndexedDBHelperImpl();
|
|
|
| - // Enumerates all indexed database files in the WEBKIT thread.
|
| - void FetchIndexedDBInfoInWebKitThread();
|
| + // Enumerates all indexed database files in the IndexedDB thread.
|
| + void FetchIndexedDBInfoInIndexedDBThread();
|
| // Notifies the completion callback in the UI thread.
|
| void NotifyInUIThread();
|
| - // Delete a single indexed database in the WEBKIT thread.
|
| - void DeleteIndexedDBInWebKitThread(const GURL& origin);
|
| + // Delete a single indexed database in the IndexedDB thread.
|
| + void DeleteIndexedDBInIndexedDBThread(const GURL& origin);
|
|
|
| scoped_refptr<IndexedDBContext> indexed_db_context_;
|
|
|
| @@ -52,7 +50,7 @@ class BrowsingDataIndexedDBHelperImpl : public BrowsingDataIndexedDBHelper {
|
| // while |is_fetching_| is true. The flag |is_fetching_| is only accessed on
|
| // the UI thread.
|
| // In the context of this class |indexed_db_info_| is only accessed on the
|
| - // WEBKIT thread.
|
| + // context's IndexedDB thread.
|
| std::list<IndexedDBInfo> indexed_db_info_;
|
|
|
| // This only mutates on the UI thread.
|
| @@ -85,25 +83,26 @@ void BrowsingDataIndexedDBHelperImpl::StartFetching(
|
|
|
| is_fetching_ = true;
|
| completion_callback_ = callback;
|
| - BrowserThread::PostTask(
|
| - BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
|
| + indexed_db_context_->TaskRunner()->PostTask(
|
| + FROM_HERE,
|
| base::Bind(
|
| - &BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInWebKitThread,
|
| + &BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInIndexedDBThread,
|
| this));
|
| }
|
|
|
| void BrowsingDataIndexedDBHelperImpl::DeleteIndexedDB(
|
| const GURL& origin) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - BrowserThread::PostTask(
|
| - BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
|
| + indexed_db_context_->TaskRunner()->PostTask(
|
| + FROM_HERE,
|
| base::Bind(
|
| - &BrowsingDataIndexedDBHelperImpl::DeleteIndexedDBInWebKitThread, this,
|
| + &BrowsingDataIndexedDBHelperImpl::DeleteIndexedDBInIndexedDBThread,
|
| + this,
|
| origin));
|
| }
|
|
|
| -void BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInWebKitThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
|
| +void BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInIndexedDBThread() {
|
| + DCHECK(indexed_db_context_->TaskRunner()->RunsTasksOnCurrentThread());
|
| std::vector<IndexedDBInfo> origins = indexed_db_context_->GetAllOriginsInfo();
|
| for (std::vector<IndexedDBInfo>::const_iterator iter = origins.begin();
|
| iter != origins.end(); ++iter) {
|
| @@ -127,9 +126,9 @@ void BrowsingDataIndexedDBHelperImpl::NotifyInUIThread() {
|
| is_fetching_ = false;
|
| }
|
|
|
| -void BrowsingDataIndexedDBHelperImpl::DeleteIndexedDBInWebKitThread(
|
| +void BrowsingDataIndexedDBHelperImpl::DeleteIndexedDBInIndexedDBThread(
|
| const GURL& origin) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
|
| + DCHECK(indexed_db_context_->TaskRunner()->RunsTasksOnCurrentThread());
|
| indexed_db_context_->DeleteForOrigin(origin);
|
| }
|
|
|
| @@ -171,7 +170,6 @@ CannedBrowsingDataIndexedDBHelper* CannedBrowsingDataIndexedDBHelper::Clone() {
|
| CannedBrowsingDataIndexedDBHelper* clone =
|
| new CannedBrowsingDataIndexedDBHelper();
|
|
|
| - base::AutoLock auto_lock(lock_);
|
| clone->pending_indexed_db_info_ = pending_indexed_db_info_;
|
| clone->indexed_db_info_ = indexed_db_info_;
|
| return clone;
|
| @@ -182,29 +180,24 @@ void CannedBrowsingDataIndexedDBHelper::AddIndexedDB(
|
| if (!BrowsingDataHelper::HasWebScheme(origin))
|
| return; // Non-websafe state is not considered browsing data.
|
|
|
| - base::AutoLock auto_lock(lock_);
|
| pending_indexed_db_info_.insert(PendingIndexedDBInfo(origin, name));
|
| }
|
|
|
| void CannedBrowsingDataIndexedDBHelper::Reset() {
|
| - base::AutoLock auto_lock(lock_);
|
| indexed_db_info_.clear();
|
| pending_indexed_db_info_.clear();
|
| }
|
|
|
| bool CannedBrowsingDataIndexedDBHelper::empty() const {
|
| - base::AutoLock auto_lock(lock_);
|
| return indexed_db_info_.empty() && pending_indexed_db_info_.empty();
|
| }
|
|
|
| size_t CannedBrowsingDataIndexedDBHelper::GetIndexedDBCount() const {
|
| - base::AutoLock auto_lock(lock_);
|
| return pending_indexed_db_info_.size();
|
| }
|
|
|
| const std::set<CannedBrowsingDataIndexedDBHelper::PendingIndexedDBInfo>&
|
| CannedBrowsingDataIndexedDBHelper::GetIndexedDBInfo() const {
|
| - base::AutoLock auto_lock(lock_);
|
| return pending_indexed_db_info_;
|
| }
|
|
|
| @@ -216,15 +209,17 @@ void CannedBrowsingDataIndexedDBHelper::StartFetching(
|
|
|
| is_fetching_ = true;
|
| completion_callback_ = callback;
|
| - BrowserThread::PostTask(
|
| - BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
|
| - base::Bind(
|
| - &CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread,
|
| - this));
|
| +
|
| + // We post a task to emulate async fetching behavior.
|
| + base::MessageLoop::current()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&CannedBrowsingDataIndexedDBHelper::
|
| + ConvertPendingInfo,
|
| + this));
|
| }
|
|
|
| -void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread() {
|
| - base::AutoLock auto_lock(lock_);
|
| +void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfo() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| indexed_db_info_.clear();
|
| for (std::set<PendingIndexedDBInfo>::const_iterator
|
| pending_info = pending_indexed_db_info_.begin();
|
| @@ -233,15 +228,6 @@ void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread() {
|
| indexed_db_info_.push_back(info);
|
| }
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&CannedBrowsingDataIndexedDBHelper::NotifyInUIThread, this));
|
| -}
|
| -
|
| -void CannedBrowsingDataIndexedDBHelper::NotifyInUIThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - DCHECK(is_fetching_);
|
| -
|
| completion_callback_.Run(indexed_db_info_);
|
| completion_callback_.Reset();
|
| is_fetching_ = false;
|
|
|