| Index: chrome/browser/browsing_data/cookies_tree_model.h
 | 
| diff --git a/chrome/browser/browsing_data/cookies_tree_model.h b/chrome/browser/browsing_data/cookies_tree_model.h
 | 
| index c693ce79973bc898a04906d61ce61be918e039ce..2b802e34879fe2a293d5d123357c715b95466f8d 100644
 | 
| --- a/chrome/browser/browsing_data/cookies_tree_model.h
 | 
| +++ b/chrome/browser/browsing_data/cookies_tree_model.h
 | 
| @@ -41,6 +41,8 @@ class CookieTreeCacheStorageNode;
 | 
|  class CookieTreeCacheStoragesNode;
 | 
|  class CookieTreeChannelIDNode;
 | 
|  class CookieTreeChannelIDsNode;
 | 
| +class CookieTreeMediaLicenseNode;
 | 
| +class CookieTreeMediaLicensesNode;
 | 
|  class CookieTreeCookieNode;
 | 
|  class CookieTreeCookiesNode;
 | 
|  class CookieTreeDatabaseNode;
 | 
| @@ -109,6 +111,8 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
 | 
|        TYPE_CACHE_STORAGES,    // This is used for CookieTreeCacheStoragesNode.
 | 
|        TYPE_CACHE_STORAGE,     // This is used for CookieTreeCacheStorageNode.
 | 
|        TYPE_FLASH_LSO,         // This is used for CookieTreeFlashLSONode.
 | 
| +      TYPE_MEDIA_LICENSES,    // This is used for CookieTreeMediaLicensesNode.
 | 
| +      TYPE_MEDIA_LICENSE,     // This is used for CookieTreeMediaLicenseNode.
 | 
|      };
 | 
|  
 | 
|      DetailedInfo();
 | 
| @@ -141,6 +145,9 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
 | 
|      DetailedInfo& InitCacheStorage(
 | 
|          const content::CacheStorageUsageInfo* cache_storage_info);
 | 
|      DetailedInfo& InitFlashLSO(const std::string& flash_lso_domain);
 | 
| +    DetailedInfo& InitMediaLicense(
 | 
| +        const BrowsingDataMediaLicenseHelper::MediaLicenseInfo*
 | 
| +            media_license_info);
 | 
|  
 | 
|      NodeType node_type;
 | 
|      GURL origin;
 | 
| @@ -159,6 +166,8 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
 | 
|      const content::ServiceWorkerUsageInfo* service_worker_info = nullptr;
 | 
|      const content::CacheStorageUsageInfo* cache_storage_info = nullptr;
 | 
|      std::string flash_lso_domain;
 | 
| +    const BrowsingDataMediaLicenseHelper::MediaLicenseInfo* media_license_info =
 | 
| +        nullptr;
 | 
|    };
 | 
|  
 | 
|    CookieTreeNode() {}
 | 
| @@ -229,6 +238,7 @@ class CookieTreeHostNode : public CookieTreeNode {
 | 
|    CookieTreeQuotaNode* UpdateOrCreateQuotaNode(
 | 
|        std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info);
 | 
|    CookieTreeFlashLSONode* GetOrCreateFlashLSONode(const std::string& domain);
 | 
| +  CookieTreeMediaLicensesNode* GetOrCreateMediaLicensesNode();
 | 
|  
 | 
|    std::string canonicalized_host() const { return canonicalized_host_; }
 | 
|  
 | 
| @@ -260,6 +270,7 @@ class CookieTreeHostNode : public CookieTreeNode {
 | 
|    CookieTreeServiceWorkersNode* service_workers_child_ = nullptr;
 | 
|    CookieTreeCacheStoragesNode* cache_storages_child_ = nullptr;
 | 
|    CookieTreeFlashLSONode* flash_lso_child_ = nullptr;
 | 
| +  CookieTreeMediaLicensesNode* media_licenses_child_ = nullptr;
 | 
|  
 | 
|    // The URL for which this node was initially created.
 | 
|    GURL url_;
 | 
| @@ -682,6 +693,45 @@ class CookieTreeFlashLSONode : public CookieTreeNode {
 | 
|    DISALLOW_COPY_AND_ASSIGN(CookieTreeFlashLSONode);
 | 
|  };
 | 
|  
 | 
| +// CookieTreeMediaLicenseNode -----------------------------------------------
 | 
| +class CookieTreeMediaLicenseNode : public CookieTreeNode {
 | 
| + public:
 | 
| +  friend class CookieTreeMediaLicensesNode;
 | 
| +
 | 
| +  // |media_license_info| is expected to remain valid as long as the
 | 
| +  // CookieTreeMediaLicenseNode is valid.
 | 
| +  explicit CookieTreeMediaLicenseNode(
 | 
| +      const std::list<BrowsingDataMediaLicenseHelper::MediaLicenseInfo>::
 | 
| +          iterator media_license_info);
 | 
| +  ~CookieTreeMediaLicenseNode() override;
 | 
| +
 | 
| +  void DeleteStoredObjects() override;
 | 
| +  DetailedInfo GetDetailedInfo() const override;
 | 
| +
 | 
| + private:
 | 
| +  // |media_license_info_| is expected to remain valid as long as the
 | 
| +  // CookieTreeMediaLicenseNode is valid.
 | 
| +  std::list<BrowsingDataMediaLicenseHelper::MediaLicenseInfo>::iterator
 | 
| +      media_license_info_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(CookieTreeMediaLicenseNode);
 | 
| +};
 | 
| +
 | 
| +class CookieTreeMediaLicensesNode : public CookieTreeNode {
 | 
| + public:
 | 
| +  CookieTreeMediaLicensesNode();
 | 
| +  ~CookieTreeMediaLicensesNode() override;
 | 
| +
 | 
| +  DetailedInfo GetDetailedInfo() const override;
 | 
| +
 | 
| +  void AddMediaLicenseNode(CookieTreeMediaLicenseNode* child) {
 | 
| +    AddChildSortedByTitle(child);
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  DISALLOW_COPY_AND_ASSIGN(CookieTreeMediaLicensesNode);
 | 
| +};
 | 
| +
 | 
|  // CookiesTreeModel -----------------------------------------------------------
 | 
|  class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
 | 
|   public:
 | 
| @@ -771,6 +821,7 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
 | 
|    void PopulateServiceWorkerUsageInfo(LocalDataContainer* container);
 | 
|    void PopulateCacheStorageUsageInfo(LocalDataContainer* container);
 | 
|    void PopulateFlashLSOInfo(LocalDataContainer* container);
 | 
| +  void PopulateMediaLicenseInfo(LocalDataContainer* container);
 | 
|  
 | 
|    BrowsingDataCookieHelper* GetCookieHelper(const std::string& app_id);
 | 
|    LocalDataContainer* data_container() {
 | 
| @@ -847,6 +898,9 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
 | 
|    void PopulateFlashLSOInfoWithFilter(LocalDataContainer* container,
 | 
|                                        ScopedBatchUpdateNotifier* notifier,
 | 
|                                        const base::string16& filter);
 | 
| +  void PopulateMediaLicenseInfoWithFilter(LocalDataContainer* container,
 | 
| +                                          ScopedBatchUpdateNotifier* notifier,
 | 
| +                                          const base::string16& filter);
 | 
|  
 | 
|  #if defined(ENABLE_EXTENSIONS)
 | 
|    // The extension special storage policy; see ExtensionsProtectingNode() above.
 | 
| 
 |