summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browsing_data_indexed_db_helper.cc
diff options
context:
space:
mode:
authormarkusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 12:53:34 +0000
committermarkusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 12:53:34 +0000
commite0ac3589f22e27e0b383d92070da53aa344cacfb (patch)
tree1dbca59801e7149fd385dc6f964cdd8219febd2c /chrome/browser/browsing_data_indexed_db_helper.cc
parentb9a967168926f14fb443dd6908772245628b93dc (diff)
downloadchromium_src-e0ac3589f22e27e0b383d92070da53aa344cacfb.zip
chromium_src-e0ac3589f22e27e0b383d92070da53aa344cacfb.tar.gz
chromium_src-e0ac3589f22e27e0b383d92070da53aa344cacfb.tar.bz2
Display third party cookies and site data counts in the Website Settings UI.
BUG=113688 TEST=BrowsingDataCookieHelperTest* Review URL: https://chromiumcodereview.appspot.com/10092013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137109 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browsing_data_indexed_db_helper.cc')
-rw-r--r--chrome/browser/browsing_data_indexed_db_helper.cc59
1 files changed, 31 insertions, 28 deletions
diff --git a/chrome/browser/browsing_data_indexed_db_helper.cc b/chrome/browser/browsing_data_indexed_db_helper.cc
index c123225..5b6ca56 100644
--- a/chrome/browser/browsing_data_indexed_db_helper.cc
+++ b/chrome/browser/browsing_data_indexed_db_helper.cc
@@ -47,7 +47,12 @@ class BrowsingDataIndexedDBHelperImpl : public BrowsingDataIndexedDBHelper {
scoped_refptr<IndexedDBContext> indexed_db_context_;
- // This only mutates in the WEBKIT thread.
+ // 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
+ // WEBKIT thread.
std::list<IndexedDBInfo> indexed_db_info_;
// This only mutates on the UI thread.
@@ -151,24 +156,29 @@ BrowsingDataIndexedDBHelper* BrowsingDataIndexedDBHelper::Create(
}
CannedBrowsingDataIndexedDBHelper::
-PendingIndexedDBInfo::PendingIndexedDBInfo() {
-}
-
-CannedBrowsingDataIndexedDBHelper::
PendingIndexedDBInfo::PendingIndexedDBInfo(const GURL& origin,
- const string16& description)
+ const string16& name)
: origin(origin),
- description(description) {
+ name(name) {
}
CannedBrowsingDataIndexedDBHelper::
PendingIndexedDBInfo::~PendingIndexedDBInfo() {
}
+bool CannedBrowsingDataIndexedDBHelper::PendingIndexedDBInfo::operator<(
+ const PendingIndexedDBInfo& other) const {
+ if (origin == other.origin)
+ return name < other.name;
+ return origin < other.origin;
+}
+
CannedBrowsingDataIndexedDBHelper::CannedBrowsingDataIndexedDBHelper()
: is_fetching_(false) {
}
+CannedBrowsingDataIndexedDBHelper::~CannedBrowsingDataIndexedDBHelper() {}
+
CannedBrowsingDataIndexedDBHelper* CannedBrowsingDataIndexedDBHelper::Clone() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
CannedBrowsingDataIndexedDBHelper* clone =
@@ -181,12 +191,12 @@ CannedBrowsingDataIndexedDBHelper* CannedBrowsingDataIndexedDBHelper::Clone() {
}
void CannedBrowsingDataIndexedDBHelper::AddIndexedDB(
- const GURL& origin, const string16& description) {
+ const GURL& origin, const string16& name) {
if (!BrowsingDataHelper::HasValidScheme(origin))
return; // Non-websafe state is not considered browsing data.
base::AutoLock auto_lock(lock_);
- pending_indexed_db_info_.push_back(PendingIndexedDBInfo(origin, description));
+ pending_indexed_db_info_.insert(PendingIndexedDBInfo(origin, name));
}
void CannedBrowsingDataIndexedDBHelper::Reset() {
@@ -201,9 +211,16 @@ bool CannedBrowsingDataIndexedDBHelper::empty() const {
}
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_;
+}
+
void CannedBrowsingDataIndexedDBHelper::StartFetching(
const base::Callback<void(const std::list<IndexedDBInfo>&)>& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
@@ -219,35 +236,21 @@ void CannedBrowsingDataIndexedDBHelper::StartFetching(
this));
}
-CannedBrowsingDataIndexedDBHelper::~CannedBrowsingDataIndexedDBHelper() {}
-
void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread() {
base::AutoLock auto_lock(lock_);
- for (std::list<PendingIndexedDBInfo>::const_iterator
+ indexed_db_info_.clear();
+ for (std::set<PendingIndexedDBInfo>::const_iterator
info = pending_indexed_db_info_.begin();
info != pending_indexed_db_info_.end(); ++info) {
- bool duplicate = false;
- for (std::list<IndexedDBInfo>::iterator
- indexed_db = indexed_db_info_.begin();
- indexed_db != indexed_db_info_.end(); ++indexed_db) {
- if (indexed_db->origin == info->origin) {
- duplicate = true;
- break;
- }
- }
- if (duplicate)
- continue;
-
indexed_db_info_.push_back(IndexedDBInfo(
info->origin,
0,
base::Time()));
}
- pending_indexed_db_info_.clear();
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&CannedBrowsingDataIndexedDBHelper::NotifyInUIThread, this));
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&CannedBrowsingDataIndexedDBHelper::NotifyInUIThread, this));
}
void CannedBrowsingDataIndexedDBHelper::NotifyInUIThread() {