OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/browsing_data/cookies_tree_model.h" | 5 #include "chrome/browser/browsing_data/cookies_tree_model.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/memory/linked_ptr.h" | 12 #include "base/memory/linked_ptr.h" |
13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
15 #include "chrome/browser/browsing_data/browsing_data_channel_id_helper.h" | 15 #include "chrome/browser/browsing_data/browsing_data_channel_id_helper.h" |
16 #include "chrome/browser/browsing_data/browsing_data_cookie_helper.h" | 16 #include "chrome/browser/browsing_data/browsing_data_cookie_helper.h" |
17 #include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h" | 17 #include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h" |
18 #include "chrome/browser/content_settings/cookie_settings.h" | 18 #include "chrome/browser/content_settings/cookie_settings.h" |
19 #include "chrome/browser/extensions/extension_service.h" | |
20 #include "chrome/browser/extensions/extension_special_storage_policy.h" | |
21 #include "content/public/common/url_constants.h" | 19 #include "content/public/common/url_constants.h" |
22 #include "extensions/common/extension_set.h" | |
23 #include "grit/generated_resources.h" | 20 #include "grit/generated_resources.h" |
24 #include "grit/theme_resources.h" | 21 #include "grit/theme_resources.h" |
25 #include "grit/ui_resources.h" | 22 #include "grit/ui_resources.h" |
26 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 23 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
27 #include "net/cookies/canonical_cookie.h" | 24 #include "net/cookies/canonical_cookie.h" |
28 #include "net/url_request/url_request_context.h" | 25 #include "net/url_request/url_request_context.h" |
29 #include "ui/base/l10n/l10n_util.h" | 26 #include "ui/base/l10n/l10n_util.h" |
30 #include "ui/base/resource/resource_bundle.h" | 27 #include "ui/base/resource/resource_bundle.h" |
31 #include "ui/gfx/image/image_skia.h" | 28 #include "ui/gfx/image/image_skia.h" |
32 | 29 |
| 30 #if defined(ENABLE_EXTENSIONS) |
| 31 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
| 32 #include "extensions/common/extension_set.h" |
| 33 #endif |
| 34 |
33 namespace { | 35 namespace { |
34 | 36 |
35 struct NodeTitleComparator { | 37 struct NodeTitleComparator { |
36 bool operator()(const CookieTreeNode* lhs, const CookieTreeNode* rhs) { | 38 bool operator()(const CookieTreeNode* lhs, const CookieTreeNode* rhs) { |
37 return lhs->GetTitle() < rhs->GetTitle(); | 39 return lhs->GetTitle() < rhs->GetTitle(); |
38 } | 40 } |
39 }; | 41 }; |
40 | 42 |
41 // Comparison functor, for use in CookieTreeRootNode. | 43 // Comparison functor, for use in CookieTreeRootNode. |
42 struct HostNodeComparator { | 44 struct HostNodeComparator { |
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
860 } | 862 } |
861 | 863 |
862 /////////////////////////////////////////////////////////////////////////////// | 864 /////////////////////////////////////////////////////////////////////////////// |
863 // CookiesTreeModel, public: | 865 // CookiesTreeModel, public: |
864 CookiesTreeModel::CookiesTreeModel( | 866 CookiesTreeModel::CookiesTreeModel( |
865 LocalDataContainer* data_container, | 867 LocalDataContainer* data_container, |
866 ExtensionSpecialStoragePolicy* special_storage_policy, | 868 ExtensionSpecialStoragePolicy* special_storage_policy, |
867 bool group_by_cookie_source) | 869 bool group_by_cookie_source) |
868 : ui::TreeNodeModel<CookieTreeNode>(new CookieTreeRootNode(this)), | 870 : ui::TreeNodeModel<CookieTreeNode>(new CookieTreeRootNode(this)), |
869 data_container_(data_container), | 871 data_container_(data_container), |
| 872 #if defined(ENABLE_EXTENSIONS) |
870 special_storage_policy_(special_storage_policy), | 873 special_storage_policy_(special_storage_policy), |
| 874 #endif |
871 group_by_cookie_source_(group_by_cookie_source), | 875 group_by_cookie_source_(group_by_cookie_source), |
872 batch_update_(0) { | 876 batch_update_(0) { |
873 data_container_->Init(this); | 877 data_container_->Init(this); |
874 } | 878 } |
875 | 879 |
876 CookiesTreeModel::~CookiesTreeModel() { | 880 CookiesTreeModel::~CookiesTreeModel() { |
877 } | 881 } |
878 | 882 |
879 /////////////////////////////////////////////////////////////////////////////// | 883 /////////////////////////////////////////////////////////////////////////////// |
880 // CookiesTreeModel, TreeModel methods (public): | 884 // CookiesTreeModel, TreeModel methods (public): |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 PopulateDatabaseInfoWithFilter(data_container(), ¬ifier, filter); | 960 PopulateDatabaseInfoWithFilter(data_container(), ¬ifier, filter); |
957 PopulateLocalStorageInfoWithFilter(data_container(), ¬ifier, filter); | 961 PopulateLocalStorageInfoWithFilter(data_container(), ¬ifier, filter); |
958 PopulateSessionStorageInfoWithFilter(data_container(), ¬ifier, filter); | 962 PopulateSessionStorageInfoWithFilter(data_container(), ¬ifier, filter); |
959 PopulateAppCacheInfoWithFilter(data_container(), ¬ifier, filter); | 963 PopulateAppCacheInfoWithFilter(data_container(), ¬ifier, filter); |
960 PopulateIndexedDBInfoWithFilter(data_container(), ¬ifier, filter); | 964 PopulateIndexedDBInfoWithFilter(data_container(), ¬ifier, filter); |
961 PopulateFileSystemInfoWithFilter(data_container(), ¬ifier, filter); | 965 PopulateFileSystemInfoWithFilter(data_container(), ¬ifier, filter); |
962 PopulateQuotaInfoWithFilter(data_container(), ¬ifier, filter); | 966 PopulateQuotaInfoWithFilter(data_container(), ¬ifier, filter); |
963 PopulateChannelIDInfoWithFilter(data_container(), ¬ifier, filter); | 967 PopulateChannelIDInfoWithFilter(data_container(), ¬ifier, filter); |
964 } | 968 } |
965 | 969 |
| 970 #if defined(ENABLE_EXTENSIONS) |
966 const extensions::ExtensionSet* CookiesTreeModel::ExtensionsProtectingNode( | 971 const extensions::ExtensionSet* CookiesTreeModel::ExtensionsProtectingNode( |
967 const CookieTreeNode& cookie_node) { | 972 const CookieTreeNode& cookie_node) { |
968 if (!special_storage_policy_.get()) | 973 if (!special_storage_policy_) |
969 return NULL; | 974 return NULL; |
970 | 975 |
971 CookieTreeNode::DetailedInfo info = cookie_node.GetDetailedInfo(); | 976 CookieTreeNode::DetailedInfo info = cookie_node.GetDetailedInfo(); |
972 | 977 |
973 if (!TypeIsProtected(info.node_type)) | 978 if (!TypeIsProtected(info.node_type)) |
974 return NULL; | 979 return NULL; |
975 | 980 |
976 DCHECK(!info.origin.is_empty()); | 981 DCHECK(!info.origin.is_empty()); |
977 return special_storage_policy_->ExtensionsProtectingOrigin(info.origin); | 982 return special_storage_policy_->ExtensionsProtectingOrigin(info.origin); |
978 } | 983 } |
| 984 #endif |
979 | 985 |
980 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { | 986 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { |
981 cookies_observer_list_.AddObserver(observer); | 987 cookies_observer_list_.AddObserver(observer); |
982 // Call super so that TreeNodeModel can notify, too. | 988 // Call super so that TreeNodeModel can notify, too. |
983 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); | 989 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); |
984 } | 990 } |
985 | 991 |
986 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) { | 992 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) { |
987 cookies_observer_list_.RemoveObserver(observer); | 993 cookies_observer_list_.RemoveObserver(observer); |
988 // Call super so that TreeNodeModel doesn't have dead pointers. | 994 // Call super so that TreeNodeModel doesn't have dead pointers. |
(...skipping 19 matching lines...) Expand all Loading... |
1008 ScopedBatchUpdateNotifier notifier(this, GetRoot()); | 1014 ScopedBatchUpdateNotifier notifier(this, GetRoot()); |
1009 PopulateLocalStorageInfoWithFilter(container, ¬ifier, base::string16()); | 1015 PopulateLocalStorageInfoWithFilter(container, ¬ifier, base::string16()); |
1010 } | 1016 } |
1011 | 1017 |
1012 void CookiesTreeModel::PopulateSessionStorageInfo( | 1018 void CookiesTreeModel::PopulateSessionStorageInfo( |
1013 LocalDataContainer* container) { | 1019 LocalDataContainer* container) { |
1014 ScopedBatchUpdateNotifier notifier(this, GetRoot()); | 1020 ScopedBatchUpdateNotifier notifier(this, GetRoot()); |
1015 PopulateSessionStorageInfoWithFilter(container, ¬ifier, base::string16()); | 1021 PopulateSessionStorageInfoWithFilter(container, ¬ifier, base::string16()); |
1016 } | 1022 } |
1017 | 1023 |
1018 void CookiesTreeModel::PopulateIndexedDBInfo(LocalDataContainer* container){ | 1024 void CookiesTreeModel::PopulateIndexedDBInfo(LocalDataContainer* container) { |
1019 ScopedBatchUpdateNotifier notifier(this, GetRoot()); | 1025 ScopedBatchUpdateNotifier notifier(this, GetRoot()); |
1020 PopulateIndexedDBInfoWithFilter(container, ¬ifier, base::string16()); | 1026 PopulateIndexedDBInfoWithFilter(container, ¬ifier, base::string16()); |
1021 } | 1027 } |
1022 | 1028 |
1023 void CookiesTreeModel::PopulateFileSystemInfo(LocalDataContainer* container) { | 1029 void CookiesTreeModel::PopulateFileSystemInfo(LocalDataContainer* container) { |
1024 ScopedBatchUpdateNotifier notifier(this, GetRoot()); | 1030 ScopedBatchUpdateNotifier notifier(this, GetRoot()); |
1025 PopulateFileSystemInfoWithFilter(container, ¬ifier, base::string16()); | 1031 PopulateFileSystemInfoWithFilter(container, ¬ifier, base::string16()); |
1026 } | 1032 } |
1027 | 1033 |
1028 void CookiesTreeModel::PopulateQuotaInfo(LocalDataContainer* container) { | 1034 void CookiesTreeModel::PopulateQuotaInfo(LocalDataContainer* container) { |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1335 | 1341 |
1336 void CookiesTreeModel::NotifyObserverEndBatch() { | 1342 void CookiesTreeModel::NotifyObserverEndBatch() { |
1337 // Only notify the observers if this is the outermost call to EndBatch() if | 1343 // Only notify the observers if this is the outermost call to EndBatch() if |
1338 // called in a nested manner. | 1344 // called in a nested manner. |
1339 if (--batch_update_ == 0) { | 1345 if (--batch_update_ == 0) { |
1340 FOR_EACH_OBSERVER(Observer, | 1346 FOR_EACH_OBSERVER(Observer, |
1341 cookies_observer_list_, | 1347 cookies_observer_list_, |
1342 TreeModelEndBatch(this)); | 1348 TreeModelEndBatch(this)); |
1343 } | 1349 } |
1344 } | 1350 } |
OLD | NEW |