Chromium Code Reviews| Index: chrome/browser/browsing_data/cookies_tree_model.cc | 
| diff --git a/chrome/browser/browsing_data/cookies_tree_model.cc b/chrome/browser/browsing_data/cookies_tree_model.cc | 
| index ad13ac3f22229eb315e09afc6c44515196ed6d8b..b05aa8dceafef6c2fe218de5a93304f5978dc9ae 100644 | 
| --- a/chrome/browser/browsing_data/cookies_tree_model.cc | 
| +++ b/chrome/browser/browsing_data/cookies_tree_model.cc | 
| @@ -129,6 +129,7 @@ bool TypeIsProtected(CookieTreeNode::DetailedInfo::NodeType type) { | 
| case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM: | 
| case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER: | 
| case CookieTreeNode::DetailedInfo::TYPE_CACHE_STORAGE: | 
| + case CookieTreeNode::DetailedInfo::TYPE_MEDIA_LICENSE: | 
| 
 
msramek
2016/09/26 18:28:06
Hmm... it seems that media licenses are not protec
 
jrummell
2016/09/27 18:21:15
Done 1. Will follow up off-line about 2.
 
msramek
2016/09/28 12:28:59
Acknowledged, discussed this off-line.
 
 | 
| return true; | 
| // Fall through each below cases to return false. | 
| @@ -271,6 +272,15 @@ CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitFlashLSO( | 
| return *this; | 
| } | 
| +CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitMediaLicense( | 
| + const BrowsingDataMediaLicenseHelper::MediaLicenseInfo* | 
| + media_license_info) { | 
| + Init(TYPE_MEDIA_LICENSE); | 
| + this->media_license_info = media_license_info; | 
| + this->origin = media_license_info->origin; | 
| + return *this; | 
| +} | 
| + | 
| /////////////////////////////////////////////////////////////////////////////// | 
| // CookieTreeNode, public: | 
| @@ -575,6 +585,32 @@ CookieTreeNode::DetailedInfo CookieTreeCacheStorageNode::GetDetailedInfo() | 
| } | 
| /////////////////////////////////////////////////////////////////////////////// | 
| +// CookieTreeMediaLicenseNode, public: | 
| + | 
| +CookieTreeMediaLicenseNode::CookieTreeMediaLicenseNode( | 
| + const std::list<BrowsingDataMediaLicenseHelper::MediaLicenseInfo>::iterator | 
| + media_license_info) | 
| + : CookieTreeNode(base::UTF8ToUTF16(media_license_info->origin.spec())), | 
| + media_license_info_(media_license_info) {} | 
| + | 
| +CookieTreeMediaLicenseNode::~CookieTreeMediaLicenseNode() {} | 
| + | 
| +void CookieTreeMediaLicenseNode::DeleteStoredObjects() { | 
| + LocalDataContainer* container = GetLocalDataContainerForNode(this); | 
| + | 
| + if (container) { | 
| + container->media_license_helper_->DeleteMediaLicenseOrigin( | 
| + media_license_info_->origin); | 
| + container->media_license_info_list_.erase(media_license_info_); | 
| + } | 
| +} | 
| + | 
| +CookieTreeNode::DetailedInfo CookieTreeMediaLicenseNode::GetDetailedInfo() | 
| + const { | 
| + return DetailedInfo().InitMediaLicense(&*media_license_info_); | 
| +} | 
| + | 
| +/////////////////////////////////////////////////////////////////////////////// | 
| // CookieTreeRootNode, public: | 
| CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) | 
| @@ -741,6 +777,15 @@ CookieTreeFlashLSONode* CookieTreeHostNode::GetOrCreateFlashLSONode( | 
| return flash_lso_child_; | 
| } | 
| +CookieTreeMediaLicensesNode* | 
| +CookieTreeHostNode::GetOrCreateMediaLicensesNode() { | 
| + if (media_licenses_child_) | 
| + return media_licenses_child_; | 
| + media_licenses_child_ = new CookieTreeMediaLicensesNode(); | 
| + AddChildSortedByTitle(media_licenses_child_); | 
| + return media_licenses_child_; | 
| +} | 
| + | 
| void CookieTreeHostNode::CreateContentException( | 
| content_settings::CookieSettings* cookie_settings, | 
| ContentSetting setting) const { | 
| @@ -927,6 +972,18 @@ CookieTreeNode::DetailedInfo CookieTreeFlashLSONode::GetDetailedInfo() const { | 
| } | 
| /////////////////////////////////////////////////////////////////////////////// | 
| +// CookieTreeMediaLicensesNode | 
| +CookieTreeMediaLicensesNode::CookieTreeMediaLicensesNode() | 
| + : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_MEDIA_LICENSES)) {} | 
| + | 
| +CookieTreeMediaLicensesNode::~CookieTreeMediaLicensesNode() {} | 
| + | 
| +CookieTreeNode::DetailedInfo CookieTreeMediaLicensesNode::GetDetailedInfo() | 
| + const { | 
| + return DetailedInfo().Init(DetailedInfo::TYPE_MEDIA_LICENSES); | 
| +} | 
| + | 
| +/////////////////////////////////////////////////////////////////////////////// | 
| // ScopedBatchUpdateNotifier | 
| CookiesTreeModel::ScopedBatchUpdateNotifier::ScopedBatchUpdateNotifier( | 
| CookiesTreeModel* model, | 
| @@ -1019,6 +1076,7 @@ int CookiesTreeModel::GetIconIndex(ui::TreeModelNode* node) { | 
| case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM: | 
| case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER: | 
| case CookieTreeNode::DetailedInfo::TYPE_CACHE_STORAGE: | 
| + case CookieTreeNode::DetailedInfo::TYPE_MEDIA_LICENSE: | 
| return DATABASE; | 
| case CookieTreeNode::DetailedInfo::TYPE_QUOTA: | 
| return -1; | 
| @@ -1166,6 +1224,11 @@ void CookiesTreeModel::PopulateFlashLSOInfo( | 
| PopulateFlashLSOInfoWithFilter(container, ¬ifier, base::string16()); | 
| } | 
| +void CookiesTreeModel::PopulateMediaLicenseInfo(LocalDataContainer* container) { | 
| + ScopedBatchUpdateNotifier notifier(this, GetRoot()); | 
| + PopulateMediaLicenseInfoWithFilter(container, ¬ifier, base::string16()); | 
| +} | 
| + | 
| void CookiesTreeModel::PopulateAppCacheInfoWithFilter( | 
| LocalDataContainer* container, | 
| ScopedBatchUpdateNotifier* notifier, | 
| @@ -1489,6 +1552,33 @@ void CookiesTreeModel::PopulateFlashLSOInfoWithFilter( | 
| } | 
| } | 
| +void CookiesTreeModel::PopulateMediaLicenseInfoWithFilter( | 
| + LocalDataContainer* container, | 
| + ScopedBatchUpdateNotifier* notifier, | 
| + const base::string16& filter) { | 
| + CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 
| + | 
| + if (container->media_license_info_list_.empty()) | 
| + return; | 
| + | 
| + notifier->StartBatchUpdate(); | 
| + for (MediaLicenseInfoList::iterator media_license_info = | 
| + container->media_license_info_list_.begin(); | 
| + media_license_info != container->media_license_info_list_.end(); | 
| + ++media_license_info) { | 
| + GURL origin(media_license_info->origin); | 
| + | 
| + if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin).find( | 
| + filter) != base::string16::npos)) { | 
| + CookieTreeHostNode* host_node = root->GetOrCreateHostNode(origin); | 
| + CookieTreeMediaLicensesNode* media_license_node = | 
| 
 
msramek
2016/09/26 18:28:06
nit: license*s*
(this file is full of singular vs
 
jrummell
2016/09/27 18:21:15
Done.
 
 | 
| + host_node->GetOrCreateMediaLicensesNode(); | 
| + media_license_node->AddMediaLicenseNode( | 
| + new CookieTreeMediaLicenseNode(media_license_info)); | 
| + } | 
| + } | 
| +} | 
| + | 
| void CookiesTreeModel::SetBatchExpectation(int batches_expected, bool reset) { | 
| batches_expected_ = batches_expected; | 
| if (reset) { |