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

Unified Diff: chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc

Issue 124183002: Implement delete methods for the various CannedBrowsingDataHelpers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 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/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 afbd30d60fceaf50a0e7d0b958333416fa1c5cc1..5b95e6d0e0f53cdbe8470de9a6b0818954270046 100644
--- a/chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc
+++ b/chrome/browser/browsing_data/browsing_data_indexed_db_helper.cc
@@ -10,7 +10,6 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browsing_data/browsing_data_helper.h"
@@ -21,61 +20,17 @@ using content::BrowserThread;
using content::IndexedDBContext;
using content::IndexedDBInfo;
-namespace {
-
-class BrowsingDataIndexedDBHelperImpl : public BrowsingDataIndexedDBHelper {
- public:
- explicit BrowsingDataIndexedDBHelperImpl(
- IndexedDBContext* indexed_db_context);
-
- virtual void StartFetching(
- const base::Callback<void(const std::list<IndexedDBInfo>&)>&
- callback) OVERRIDE;
- virtual void DeleteIndexedDB(const GURL& origin) OVERRIDE;
-
- private:
- virtual ~BrowsingDataIndexedDBHelperImpl();
-
- // 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 IndexedDB thread.
- void DeleteIndexedDBInIndexedDBThread(const GURL& origin);
-
- scoped_refptr<IndexedDBContext> indexed_db_context_;
-
- // Access to |indexed_db_info_| is triggered indirectly via the UI thread and
- // guarded by |is_fetching_|. This means |indexed_db_info_| is only accessed
- // 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
- // context's IndexedDB thread.
- std::list<IndexedDBInfo> indexed_db_info_;
-
- // This only mutates on the UI thread.
- base::Callback<void(const std::list<IndexedDBInfo>&)> completion_callback_;
-
- // Indicates whether or not we're currently fetching information:
- // it's true when StartFetching() is called in the UI thread, and it's reset
- // after we notified the callback in the UI thread.
- // This only mutates on the UI thread.
- bool is_fetching_;
-
- DISALLOW_COPY_AND_ASSIGN(BrowsingDataIndexedDBHelperImpl);
-};
-
-BrowsingDataIndexedDBHelperImpl::BrowsingDataIndexedDBHelperImpl(
+BrowsingDataIndexedDBHelper::BrowsingDataIndexedDBHelper(
IndexedDBContext* indexed_db_context)
: indexed_db_context_(indexed_db_context),
is_fetching_(false) {
DCHECK(indexed_db_context_.get());
}
-BrowsingDataIndexedDBHelperImpl::~BrowsingDataIndexedDBHelperImpl() {
+BrowsingDataIndexedDBHelper::~BrowsingDataIndexedDBHelper() {
}
-void BrowsingDataIndexedDBHelperImpl::StartFetching(
+void BrowsingDataIndexedDBHelper::StartFetching(
const base::Callback<void(const std::list<IndexedDBInfo>&)>& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!is_fetching_);
@@ -86,22 +41,22 @@ void BrowsingDataIndexedDBHelperImpl::StartFetching(
indexed_db_context_->TaskRunner()->PostTask(
FROM_HERE,
base::Bind(
- &BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInIndexedDBThread,
+ &BrowsingDataIndexedDBHelper::FetchIndexedDBInfoInIndexedDBThread,
this));
}
-void BrowsingDataIndexedDBHelperImpl::DeleteIndexedDB(
+void BrowsingDataIndexedDBHelper::DeleteIndexedDB(
const GURL& origin) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
indexed_db_context_->TaskRunner()->PostTask(
FROM_HERE,
base::Bind(
- &BrowsingDataIndexedDBHelperImpl::DeleteIndexedDBInIndexedDBThread,
+ &BrowsingDataIndexedDBHelper::DeleteIndexedDBInIndexedDBThread,
this,
origin));
}
-void BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInIndexedDBThread() {
+void BrowsingDataIndexedDBHelper::FetchIndexedDBInfoInIndexedDBThread() {
DCHECK(indexed_db_context_->TaskRunner()->RunsTasksOnCurrentThread());
std::vector<IndexedDBInfo> origins = indexed_db_context_->GetAllOriginsInfo();
for (std::vector<IndexedDBInfo>::const_iterator iter = origins.begin();
@@ -115,10 +70,10 @@ void BrowsingDataIndexedDBHelperImpl::FetchIndexedDBInfoInIndexedDBThread() {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
- base::Bind(&BrowsingDataIndexedDBHelperImpl::NotifyInUIThread, this));
+ base::Bind(&BrowsingDataIndexedDBHelper::NotifyInUIThread, this));
}
-void BrowsingDataIndexedDBHelperImpl::NotifyInUIThread() {
+void BrowsingDataIndexedDBHelper::NotifyInUIThread() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(is_fetching_);
completion_callback_.Run(indexed_db_info_);
@@ -126,21 +81,12 @@ void BrowsingDataIndexedDBHelperImpl::NotifyInUIThread() {
is_fetching_ = false;
}
-void BrowsingDataIndexedDBHelperImpl::DeleteIndexedDBInIndexedDBThread(
+void BrowsingDataIndexedDBHelper::DeleteIndexedDBInIndexedDBThread(
const GURL& origin) {
DCHECK(indexed_db_context_->TaskRunner()->RunsTasksOnCurrentThread());
indexed_db_context_->DeleteForOrigin(origin);
}
-} // namespace
-
-
-// static
-BrowsingDataIndexedDBHelper* BrowsingDataIndexedDBHelper::Create(
- IndexedDBContext* indexed_db_context) {
- return new BrowsingDataIndexedDBHelperImpl(indexed_db_context);
-}
-
CannedBrowsingDataIndexedDBHelper::
PendingIndexedDBInfo::PendingIndexedDBInfo(const GURL& origin,
const base::string16& name)
@@ -159,8 +105,9 @@ bool CannedBrowsingDataIndexedDBHelper::PendingIndexedDBInfo::operator<(
return origin < other.origin;
}
-CannedBrowsingDataIndexedDBHelper::CannedBrowsingDataIndexedDBHelper()
- : is_fetching_(false) {
+CannedBrowsingDataIndexedDBHelper::CannedBrowsingDataIndexedDBHelper(
+ content::IndexedDBContext* context)
+ : BrowsingDataIndexedDBHelper(context) {
}
CannedBrowsingDataIndexedDBHelper::~CannedBrowsingDataIndexedDBHelper() {}
@@ -168,7 +115,7 @@ CannedBrowsingDataIndexedDBHelper::~CannedBrowsingDataIndexedDBHelper() {}
CannedBrowsingDataIndexedDBHelper* CannedBrowsingDataIndexedDBHelper::Clone() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
CannedBrowsingDataIndexedDBHelper* clone =
- new CannedBrowsingDataIndexedDBHelper();
+ new CannedBrowsingDataIndexedDBHelper(indexed_db_context_);
clone->pending_indexed_db_info_ = pending_indexed_db_info_;
clone->indexed_db_info_ = indexed_db_info_;
@@ -204,32 +151,30 @@ CannedBrowsingDataIndexedDBHelper::GetIndexedDBInfo() const {
void CannedBrowsingDataIndexedDBHelper::StartFetching(
const base::Callback<void(const std::list<IndexedDBInfo>&)>& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(!is_fetching_);
- DCHECK_EQ(false, callback.is_null());
+ DCHECK(!callback.is_null());
- is_fetching_ = true;
- completion_callback_ = callback;
-
- // We post a task to emulate async fetching behavior.
- base::MessageLoop::current()->PostTask(
- FROM_HERE,
- base::Bind(&CannedBrowsingDataIndexedDBHelper::
- ConvertPendingInfo,
- this));
-}
-
-void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfo() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- indexed_db_info_.clear();
+ std::list<IndexedDBInfo> result;
for (std::set<PendingIndexedDBInfo>::const_iterator
pending_info = pending_indexed_db_info_.begin();
pending_info != pending_indexed_db_info_.end(); ++pending_info) {
IndexedDBInfo info(
pending_info->origin, 0, base::Time(), base::FilePath(), 0);
- indexed_db_info_.push_back(info);
+ result.push_back(info);
}
- completion_callback_.Run(indexed_db_info_);
- completion_callback_.Reset();
- is_fetching_ = false;
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE, base::Bind(callback, result));
+}
+
+void CannedBrowsingDataIndexedDBHelper::DeleteIndexedDB(
+ const GURL& origin) {
+ for (std::set<PendingIndexedDBInfo>::iterator it =
+ pending_indexed_db_info_.begin();
+ it != pending_indexed_db_info_.end(); ) {
+ if (it->origin == origin)
+ pending_indexed_db_info_.erase(it++);
+ else
+ ++it;
+ }
+ BrowsingDataIndexedDBHelper::DeleteIndexedDB(origin);
}

Powered by Google App Engine
This is Rietveld 408576698