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

Unified Diff: chrome/browser/cookies_tree_model.cc

Issue 523139: Adds local storage nodes to cookie tree model and cookies view. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 10 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
« no previous file with comments | « chrome/browser/cookies_tree_model.h ('k') | chrome/browser/cookies_tree_model_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cookies_tree_model.cc
===================================================================
--- chrome/browser/cookies_tree_model.cc (revision 36995)
+++ chrome/browser/cookies_tree_model.cc (working copy)
@@ -14,6 +14,7 @@
#include "app/tree_node_model.h"
#include "base/linked_ptr.h"
#include "base/string_util.h"
+#include "chrome/browser/in_process_webkit/webkit_context.h"
#include "chrome/browser/net/chrome_url_request_context.h"
#include "chrome/browser/profile.h"
#include "grit/app_resources.h"
@@ -114,6 +115,22 @@
} // namespace
///////////////////////////////////////////////////////////////////////////////
+// CookieTreeLocalStorageNode, public:
+
+CookieTreeLocalStorageNode::CookieTreeLocalStorageNode(
+ BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info)
+ : CookieTreeNode(UTF8ToWide(
+ !local_storage_info->origin.empty() ?
+ local_storage_info->origin :
+ local_storage_info->database_identifier)),
+ local_storage_info_(local_storage_info) {
+}
+
+void CookieTreeLocalStorageNode::DeleteStoredObjects() {
+ GetModel()->DeleteLocalStorage(local_storage_info_->file_path);
+}
+
+///////////////////////////////////////////////////////////////////////////////
// CookieTreeRootNode, public:
CookieTreeOriginNode* CookieTreeRootNode::GetOrCreateOriginNode(
const std::wstring& origin) {
@@ -155,6 +172,17 @@
return retval;
}
+CookieTreeLocalStoragesNode*
+ CookieTreeOriginNode::GetOrCreateLocalStoragesNode() {
+ if (local_storages_child_)
+ return local_storages_child_;
+ // need to make a LocalStorages node, add it to the tree, and return it
+ CookieTreeLocalStoragesNode* retval = new CookieTreeLocalStoragesNode;
+ GetModel()->Add(this, cookies_child_ ? 1 : 0, retval);
+ local_storages_child_ = retval;
+ return retval;
+}
+
///////////////////////////////////////////////////////////////////////////////
// CookieTreeCookiesNode, public:
@@ -173,26 +201,69 @@
}
///////////////////////////////////////////////////////////////////////////////
+// CookieTreeLocalStoragesNode, public:
+
+CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode()
+ : CookieTreeNode(l10n_util::GetString(IDS_COOKIES_LOCAL_STORAGE)) {
+}
+
+void CookieTreeLocalStoragesNode::AddLocalStorageNode(
+ CookieTreeLocalStorageNode* new_child) {
+ std::vector<CookieTreeNode*>::iterator local_storage_iterator =
+ lower_bound(children().begin(),
+ children().end(),
+ new_child,
+ CookieTreeLocalStorageNode::CookieNodeComparator());
+ GetModel()->Add(this,
+ (local_storage_iterator - children().begin()),
+ new_child);
+}
+
+///////////////////////////////////////////////////////////////////////////////
// CookieTreeCookieNode, private
bool CookieTreeCookieNode::CookieNodeComparator::operator() (
const CookieTreeNode* lhs, const CookieTreeNode* rhs) {
- return (static_cast<const CookieTreeCookieNode*>(lhs)->
- cookie_->second.Name() <
- static_cast<const CookieTreeCookieNode*>(rhs)->
- cookie_->second.Name());
+ const CookieTreeCookieNode* left =
+ static_cast<const CookieTreeCookieNode*>(lhs);
+ const CookieTreeCookieNode* right =
+ static_cast<const CookieTreeCookieNode*>(rhs);
+ return (left->cookie_->second.Name() < right->cookie_->second.Name());
}
///////////////////////////////////////////////////////////////////////////////
+// CookieTreeLocalStorageNode, private
+
+bool CookieTreeLocalStorageNode::CookieNodeComparator::operator() (
+ const CookieTreeNode* lhs, const CookieTreeNode* rhs) {
+ const CookieTreeLocalStorageNode* left =
+ static_cast<const CookieTreeLocalStorageNode*>(lhs);
+ const CookieTreeLocalStorageNode* right =
+ static_cast<const CookieTreeLocalStorageNode*>(rhs);
+ return (left->local_storage_info_->origin <
+ right->local_storage_info_->origin);
+}
+
+///////////////////////////////////////////////////////////////////////////////
// CookiesTreeModel, public:
-CookiesTreeModel::CookiesTreeModel(Profile* profile)
+CookiesTreeModel::CookiesTreeModel(
+ Profile* profile,
+ BrowsingDataLocalStorageHelper* local_storage_helper)
: ALLOW_THIS_IN_INITIALIZER_LIST(TreeNodeModel<CookieTreeNode>(
new CookieTreeRootNode(this))),
- profile_(profile) {
+ profile_(profile),
+ local_storage_helper_(local_storage_helper) {
LoadCookies();
+ DCHECK(local_storage_helper_);
+ local_storage_helper_->StartFetching(NewCallback(
+ this, &CookiesTreeModel::OnStorageModelInfoLoaded));
}
+CookiesTreeModel::~CookiesTreeModel() {
+ local_storage_helper_->CancelNotification();
+}
+
///////////////////////////////////////////////////////////////////////////////
// CookiesTreeModel, TreeModel methods (public):
@@ -218,6 +289,8 @@
case CookieTreeNode::DetailedInfo::TYPE_COOKIE:
return COOKIE;
break;
+ case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE:
+ // TODO(bulach): add an icon for local storage.
default:
return -1;
}
@@ -283,11 +356,50 @@
delete Remove(parent_node, cookie_node_index);
}
+void CookiesTreeModel::DeleteLocalStorage(const FilePath& file_path) {
+ local_storage_helper_->DeleteLocalStorageFile(file_path);
+}
+
+void CookiesTreeModel::DeleteAllLocalStorage() {
+ local_storage_helper_->DeleteAllLocalStorageFiles();
+}
+
void CookiesTreeModel::UpdateSearchResults(const std::wstring& filter) {
CookieTreeNode* root = GetRoot();
int num_children = root->GetChildCount();
for (int i = num_children - 1; i >= 0; --i)
delete Remove(root, i);
LoadCookiesWithFilter(filter);
+ PopulateLocalStorageInfoWithFilter(filter);
NotifyObserverTreeNodeChanged(root);
}
+
+void CookiesTreeModel::OnStorageModelInfoLoaded(
+ const LocalStorageInfoList& local_storage_info) {
+ local_storage_info_list_ = local_storage_info;
+ PopulateLocalStorageInfoWithFilter(L"");
+}
+
+void CookiesTreeModel::PopulateLocalStorageInfoWithFilter(
+ const std::wstring& filter) {
+ CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
+ for (LocalStorageInfoList::iterator local_storage_info =
+ local_storage_info_list_.begin();
+ local_storage_info != local_storage_info_list_.end();
+ ++local_storage_info) {
+ std::string origin =
+ !local_storage_info->host.empty() ?
+ local_storage_info->host :
+ local_storage_info->database_identifier;
+ if (!filter.size() ||
+ (UTF8ToWide(origin).find(filter) != std::wstring::npos)) {
+ CookieTreeOriginNode* origin_node = root->GetOrCreateOriginNode(
+ UTF8ToWide(local_storage_info->host));
+ CookieTreeLocalStoragesNode* local_storages_node =
+ origin_node->GetOrCreateLocalStoragesNode();
+ local_storages_node->AddLocalStorageNode(
+ new CookieTreeLocalStorageNode(&(*local_storage_info)));
+ }
+ }
+ NotifyObserverTreeNodeChanged(root);
+}
« no previous file with comments | « chrome/browser/cookies_tree_model.h ('k') | chrome/browser/cookies_tree_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698