diff options
author | ycxiao@chromium.org <ycxiao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-12 17:09:17 +0000 |
---|---|---|
committer | ycxiao@chromium.org <ycxiao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-12 17:09:17 +0000 |
commit | 7dd2b87199f491e790d87451408de40021818e15 (patch) | |
tree | 4a84064785aeadca4c3439a533897d67980262a8 /chrome/browser/cookies_tree_model.cc | |
parent | 7799ffda6e3d514df19949502bdec717c1b629c4 (diff) | |
download | chromium_src-7dd2b87199f491e790d87451408de40021818e15.zip chromium_src-7dd2b87199f491e790d87451408de40021818e15.tar.gz chromium_src-7dd2b87199f491e790d87451408de40021818e15.tar.bz2 |
Creat BrowsingDataCookieHelper and CannedBrowsingDataCookieHelper for logging cookies at UI thread.
Moving from http://codereview.chromium.org/7355025/
BUG=XXXX
TEST=BrowsingDataCookieHelperTest
TBR=rdsmith
Review URL: http://codereview.chromium.org/7601018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96569 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cookies_tree_model.cc')
-rw-r--r-- | chrome/browser/cookies_tree_model.cc | 90 |
1 files changed, 49 insertions, 41 deletions
diff --git a/chrome/browser/cookies_tree_model.cc b/chrome/browser/cookies_tree_model.cc index e626f66..d198fa2 100644 --- a/chrome/browser/cookies_tree_model.cc +++ b/chrome/browser/cookies_tree_model.cc @@ -8,10 +8,12 @@ #include <functional> #include <vector> +#include "base/bind.h" #include "base/callback.h" #include "base/memory/linked_ptr.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" +#include "chrome/browser/browsing_data_cookie_helper.h" #include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/extensions/extension_service.h" #include "content/browser/in_process_webkit/webkit_context.h" @@ -62,7 +64,7 @@ void CookieTreeCookieNode::DeleteStoredObjects() { // vector storing the cookies in-tact and not delete from there (that would // invalidate our pointers), and the fact that it contains semi out-of-date // data is not problematic as we don't re-build the model based on that. - GetModel()->cookie_monster_->DeleteCanonicalCookie(*cookie_); + GetModel()->cookie_helper_->DeleteCookie(*cookie_); } CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { @@ -585,7 +587,7 @@ void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) { // CookiesTreeModel, public: CookiesTreeModel::CookiesTreeModel( - net::CookieMonster* cookie_monster, + BrowsingDataCookieHelper* cookie_helper, BrowsingDataDatabaseHelper* database_helper, BrowsingDataLocalStorageHelper* local_storage_helper, BrowsingDataLocalStorageHelper* session_storage_helper, @@ -596,8 +598,8 @@ CookiesTreeModel::CookiesTreeModel( bool use_cookie_source) : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( new CookieTreeRootNode(this))), - cookie_monster_(cookie_monster), appcache_helper_(appcache_helper), + cookie_helper_(cookie_helper), database_helper_(database_helper), local_storage_helper_(local_storage_helper), session_storage_helper_(session_storage_helper), @@ -606,7 +608,10 @@ CookiesTreeModel::CookiesTreeModel( quota_helper_(quota_helper), batch_update_(0), use_cookie_source_(use_cookie_source) { - LoadCookies(); + DCHECK(cookie_helper_); + cookie_helper_->StartFetching( + base::Bind(&CookiesTreeModel::OnCookiesModelInfoLoaded, + base::Unretained(this))); DCHECK(database_helper_); database_helper_->StartFetching(NewCallback( this, &CookiesTreeModel::OnDatabaseModelInfoLoaded)); @@ -642,6 +647,7 @@ CookiesTreeModel::CookiesTreeModel( } CookiesTreeModel::~CookiesTreeModel() { + cookie_helper_->CancelNotification(); database_helper_->CancelNotification(); local_storage_helper_->CancelNotification(); if (session_storage_helper_) @@ -701,42 +707,6 @@ int CookiesTreeModel::GetIconIndex(ui::TreeModelNode* node) { return -1; } -void CookiesTreeModel::LoadCookies() { - LoadCookiesWithFilter(std::wstring()); -} - -void CookiesTreeModel::LoadCookiesWithFilter(const std::wstring& filter) { - // mmargh mmargh mmargh! delicious! - - all_cookies_ = cookie_monster_->GetAllCookies(); - CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); - for (CookieList::iterator it = all_cookies_.begin(); - it != all_cookies_.end(); ++it) { - std::string source_string = it->Source(); - if (source_string.empty() || !use_cookie_source_) { - std::string domain = it->Domain(); - if (domain.length() > 1 && domain[0] == '.') - domain = domain.substr(1); - - // We treat secure cookies just the same as normal ones. - source_string = std::string(chrome::kHttpScheme) + - chrome::kStandardSchemeSeparator + domain + "/"; - } - - GURL source(source_string); - if (!filter.size() || - (CookieTreeOriginNode::TitleForUrl(source).find(filter) != - std::string::npos)) { - CookieTreeOriginNode* origin_node = - root->GetOrCreateOriginNode(source); - CookieTreeCookiesNode* cookies_node = - origin_node->GetOrCreateCookiesNode(); - CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(&*it); - cookies_node->AddCookieNode(new_cookie); - } - } -} - void CookiesTreeModel::DeleteAllStoredObjects() { NotifyObserverBeginBatch(); CookieTreeNode* root = GetRoot(); @@ -764,7 +734,7 @@ void CookiesTreeModel::UpdateSearchResults(const std::wstring& filter) { NotifyObserverBeginBatch(); for (int i = num_children - 1; i >= 0; --i) delete Remove(root, root->GetChild(i)); - LoadCookiesWithFilter(filter); + PopulateCookieInfoWithFilter(filter); PopulateDatabaseInfoWithFilter(filter); PopulateLocalStorageInfoWithFilter(filter); PopulateSessionStorageInfoWithFilter(filter); @@ -826,6 +796,44 @@ void CookiesTreeModel::PopulateAppCacheInfoWithFilter( NotifyObserverEndBatch(); } +void CookiesTreeModel::OnCookiesModelInfoLoaded( + const CookieList& cookie_list) { + cookie_list_ = cookie_list; + PopulateCookieInfoWithFilter(std::wstring()); +} + +void CookiesTreeModel::PopulateCookieInfoWithFilter( + const std::wstring& filter) { + // mmargh mmargh mmargh! delicious! + + CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); + for (CookieList::iterator it = cookie_list_.begin(); + it != cookie_list_.end(); ++it) { + std::string source_string = it->Source(); + if (source_string.empty() || !use_cookie_source_) { + std::string domain = it->Domain(); + if (domain.length() > 1 && domain[0] == '.') + domain = domain.substr(1); + + // We treat secure cookies just the same as normal ones. + source_string = std::string(chrome::kHttpScheme) + + chrome::kStandardSchemeSeparator + domain + "/"; + } + + GURL source(source_string); + if (!filter.size() || + (CookieTreeOriginNode::TitleForUrl(source).find(filter) != + std::string::npos)) { + CookieTreeOriginNode* origin_node = + root->GetOrCreateOriginNode(source); + CookieTreeCookiesNode* cookies_node = + origin_node->GetOrCreateCookiesNode(); + CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(&*it); + cookies_node->AddCookieNode(new_cookie); + } + } +} + void CookiesTreeModel::OnDatabaseModelInfoLoaded( const DatabaseInfoList& database_info) { database_info_list_ = database_info; |