summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cookies_tree_model.cc
diff options
context:
space:
mode:
authormkwst@chromium.org <mkwst@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-27 11:07:44 +0000
committermkwst@chromium.org <mkwst@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-27 11:07:44 +0000
commit763d91fe15ecbcde91e34892280881bbab7c20a8 (patch)
treea82cfbc7ad4ea2b08e79c1a859f070d747de67fe /chrome/browser/cookies_tree_model.cc
parent74ec7e6780d4d7489d3ad1cbbac7c6a17e0beed7 (diff)
downloadchromium_src-763d91fe15ecbcde91e34892280881bbab7c20a8.zip
chromium_src-763d91fe15ecbcde91e34892280881bbab7c20a8.tar.gz
chromium_src-763d91fe15ecbcde91e34892280881bbab7c20a8.tar.bz2
Wrapping blocked filesystems into TabSpecificContentSettings
BUG=63703 TEST=TabSpecificContentSettings* in `unit_tests` Review URL: http://codereview.chromium.org/6966036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87006 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cookies_tree_model.cc')
-rw-r--r--chrome/browser/cookies_tree_model.cc122
1 files changed, 108 insertions, 14 deletions
diff --git a/chrome/browser/cookies_tree_model.cc b/chrome/browser/cookies_tree_model.cc
index 2760059..695ea8b 100644
--- a/chrome/browser/cookies_tree_model.cc
+++ b/chrome/browser/cookies_tree_model.cc
@@ -68,7 +68,7 @@ void CookieTreeCookieNode::DeleteStoredObjects() {
CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_COOKIE,
- cookie_, NULL, NULL, NULL, NULL, NULL);
+ cookie_, NULL, NULL, NULL, NULL, NULL, NULL);
}
namespace {
@@ -148,7 +148,7 @@ void CookieTreeAppCacheNode::DeleteStoredObjects() {
CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_APPCACHE,
- NULL, NULL, NULL, NULL, appcache_info_, NULL);
+ NULL, NULL, NULL, NULL, appcache_info_, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -172,7 +172,7 @@ void CookieTreeDatabaseNode::DeleteStoredObjects() {
CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_DATABASE,
- NULL, database_info_, NULL, NULL, NULL, NULL);
+ NULL, database_info_, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -198,7 +198,7 @@ CookieTreeNode::DetailedInfo
CookieTreeLocalStorageNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_LOCAL_STORAGE,
- NULL, NULL, local_storage_info_, NULL, NULL, NULL);
+ NULL, NULL, local_storage_info_, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -219,7 +219,8 @@ CookieTreeNode::DetailedInfo
CookieTreeSessionStorageNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_SESSION_STORAGE,
- NULL, NULL, NULL, session_storage_info_, NULL, NULL);
+ NULL, NULL, NULL, session_storage_info_, NULL, NULL,
+ NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -244,7 +245,30 @@ void CookieTreeIndexedDBNode::DeleteStoredObjects() {
CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_INDEXED_DB,
- NULL, NULL, NULL, NULL, NULL, indexed_db_info_);
+ NULL, NULL, NULL, NULL, NULL, indexed_db_info_, NULL);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// CookieTreeFileSystemNode, public:
+
+CookieTreeFileSystemNode::CookieTreeFileSystemNode(
+ BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info)
+ : CookieTreeNode(UTF8ToUTF16(
+ file_system_info->origin.spec())),
+ file_system_info_(file_system_info) {
+}
+
+CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {}
+
+void CookieTreeFileSystemNode::DeleteStoredObjects() {
+ GetModel()->file_system_helper_->DeleteFileSystemOrigin(
+ file_system_info_->origin);
+}
+
+CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const {
+ return DetailedInfo(parent()->parent()->GetTitle(),
+ DetailedInfo::TYPE_FILE_SYSTEM,
+ NULL, NULL, NULL, NULL, NULL, NULL, file_system_info_);
}
///////////////////////////////////////////////////////////////////////////////
@@ -286,7 +310,7 @@ CookiesTreeModel* CookieTreeRootNode::GetModel() const {
CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const {
return DetailedInfo(string16(),
DetailedInfo::TYPE_ROOT,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -306,6 +330,7 @@ CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url)
session_storages_child_(NULL),
appcaches_child_(NULL),
indexed_dbs_child_(NULL),
+ file_systems_child_(NULL),
url_(url) {}
CookieTreeOriginNode::~CookieTreeOriginNode() {}
@@ -313,7 +338,7 @@ CookieTreeOriginNode::~CookieTreeOriginNode() {}
CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const {
return DetailedInfo(GetTitle(),
DetailedInfo::TYPE_ORIGIN,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() {
@@ -366,6 +391,14 @@ CookieTreeIndexedDBsNode* CookieTreeOriginNode::GetOrCreateIndexedDBsNode() {
return indexed_dbs_child_;
}
+CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() {
+ if (file_systems_child_)
+ return file_systems_child_;
+ file_systems_child_ = new CookieTreeFileSystemsNode;
+ AddChildSortedByTitle(file_systems_child_);
+ return file_systems_child_;
+}
+
void CookieTreeOriginNode::CreateContentException(
HostContentSettingsMap* content_settings, ContentSetting setting) const {
if (CanCreateContentException()) {
@@ -393,7 +426,7 @@ CookieTreeCookiesNode::~CookieTreeCookiesNode() {
CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const {
return DetailedInfo(parent()->GetTitle(),
DetailedInfo::TYPE_COOKIES,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -409,7 +442,7 @@ CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {}
CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const {
return DetailedInfo(parent()->GetTitle(),
DetailedInfo::TYPE_APPCACHES,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -424,7 +457,7 @@ CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {}
CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const {
return DetailedInfo(parent()->GetTitle(),
DetailedInfo::TYPE_DATABASES,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -440,7 +473,7 @@ CookieTreeNode::DetailedInfo
CookieTreeLocalStoragesNode::GetDetailedInfo() const {
return DetailedInfo(parent()->GetTitle(),
DetailedInfo::TYPE_LOCAL_STORAGES,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -456,7 +489,7 @@ CookieTreeNode::DetailedInfo
CookieTreeSessionStoragesNode::GetDetailedInfo() const {
return DetailedInfo(parent()->GetTitle(),
DetailedInfo::TYPE_SESSION_STORAGES,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -472,7 +505,23 @@ CookieTreeNode::DetailedInfo
CookieTreeIndexedDBsNode::GetDetailedInfo() const {
return DetailedInfo(parent()->GetTitle(),
DetailedInfo::TYPE_INDEXED_DBS,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// CookieTreeFileSystemsNode, public:
+
+CookieTreeFileSystemsNode::CookieTreeFileSystemsNode()
+ : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_FILE_SYSTEMS)) {
+}
+
+CookieTreeFileSystemsNode::~CookieTreeFileSystemsNode() {}
+
+CookieTreeNode::DetailedInfo
+CookieTreeFileSystemsNode::GetDetailedInfo() const {
+ return DetailedInfo(parent()->GetTitle(),
+ DetailedInfo::TYPE_FILE_SYSTEMS,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
@@ -488,6 +537,7 @@ bool CookieTreeNode::NodeTitleComparator::operator() (
}
void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) {
+ DCHECK(new_child);
std::vector<CookieTreeNode*>::iterator iter =
lower_bound(children().begin(),
children().end(),
@@ -506,6 +556,7 @@ CookiesTreeModel::CookiesTreeModel(
BrowsingDataLocalStorageHelper* session_storage_helper,
BrowsingDataAppCacheHelper* appcache_helper,
BrowsingDataIndexedDBHelper* indexed_db_helper,
+ BrowsingDataFileSystemHelper* file_system_helper,
bool use_cookie_source)
: ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>(
new CookieTreeRootNode(this))),
@@ -515,6 +566,7 @@ CookiesTreeModel::CookiesTreeModel(
local_storage_helper_(local_storage_helper),
session_storage_helper_(session_storage_helper),
indexed_db_helper_(indexed_db_helper),
+ file_system_helper_(file_system_helper),
batch_update_(0),
use_cookie_source_(use_cookie_source) {
LoadCookies();
@@ -540,6 +592,11 @@ CookiesTreeModel::CookiesTreeModel(
indexed_db_helper_->StartFetching(NewCallback(
this, &CookiesTreeModel::OnIndexedDBModelInfoLoaded));
}
+
+ if (file_system_helper_) {
+ file_system_helper_->StartFetching(NewCallback(
+ this, &CookiesTreeModel::OnFileSystemModelInfoLoaded));
+ }
}
CookiesTreeModel::~CookiesTreeModel() {
@@ -551,6 +608,8 @@ CookiesTreeModel::~CookiesTreeModel() {
appcache_helper_->CancelNotification();
if (indexed_db_helper_)
indexed_db_helper_->CancelNotification();
+ if (file_system_helper_)
+ file_system_helper_->CancelNotification();
}
///////////////////////////////////////////////////////////////////////////////
@@ -588,6 +647,8 @@ int CookiesTreeModel::GetIconIndex(ui::TreeModelNode* node) {
return DATABASE; // ditto
case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB:
return DATABASE; // ditto
+ case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM:
+ return DATABASE; // ditto
default:
break;
}
@@ -848,6 +909,39 @@ void CookiesTreeModel::PopulateIndexedDBInfoWithFilter(
NotifyObserverEndBatch();
}
+void CookiesTreeModel::OnFileSystemModelInfoLoaded(
+ const FileSystemInfoList& file_system_info) {
+ file_system_info_list_ = file_system_info;
+ PopulateFileSystemInfoWithFilter(std::wstring());
+}
+
+void CookiesTreeModel::PopulateFileSystemInfoWithFilter(
+ const std::wstring& filter) {
+ if (file_system_info_list_.empty())
+ return;
+ CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
+ NotifyObserverBeginBatch();
+ for (FileSystemInfoList::iterator file_system_info =
+ file_system_info_list_.begin();
+ file_system_info != file_system_info_list_.end();
+ ++file_system_info) {
+ GURL origin(file_system_info->origin);
+
+ if (!filter.size() ||
+ (CookieTreeOriginNode::TitleForUrl(origin).find(filter) !=
+ std::wstring::npos)) {
+ CookieTreeOriginNode* origin_node =
+ root->GetOrCreateOriginNode(origin);
+ CookieTreeFileSystemsNode* file_systems_node =
+ origin_node->GetOrCreateFileSystemsNode();
+ file_systems_node->AddFileSystemNode(
+ new CookieTreeFileSystemNode(&(*file_system_info)));
+ }
+ }
+ NotifyObserverTreeNodeChanged(root);
+ NotifyObserverEndBatch();
+}
+
void CookiesTreeModel::NotifyObserverBeginBatch() {
// Only notify the model once if we're batching in a nested manner.
if (batch_update_++ == 0) {