| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 /** | 5 /** |
| 6 * @fileoverview | 6 * @fileoverview |
| 7 * 'site-data' handles showing the local storage summary list for all sites. | 7 * 'site-data' handles showing the local storage summary list for all sites. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 Polymer({ | 10 Polymer({ |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 /** | 22 /** |
| 23 * The cookie tree with the details needed to display individual sites and | 23 * The cookie tree with the details needed to display individual sites and |
| 24 * their contained data. | 24 * their contained data. |
| 25 * @type {!settings.CookieTreeNode} | 25 * @type {!settings.CookieTreeNode} |
| 26 * @private | 26 * @private |
| 27 */ | 27 */ |
| 28 treeNodes_: Object, | 28 treeNodes_: Object, |
| 29 | 29 |
| 30 /** | 30 /** |
| 31 * Keeps track of how many outstanding requests for more data there are. | |
| 32 * @private | |
| 33 */ | |
| 34 requests_: Number, | |
| 35 | |
| 36 /** | |
| 37 * The current filter applied to the cookie data list. | 31 * The current filter applied to the cookie data list. |
| 38 * @private | 32 * @private |
| 39 */ | 33 */ |
| 40 filterString_: { | 34 filterString_: { |
| 41 type: String, | 35 type: String, |
| 42 value: '', | 36 value: '', |
| 43 }, | 37 }, |
| 44 | 38 |
| 45 /** @private */ | 39 /** @private */ |
| 46 confirmationDeleteMsg_: String, | 40 confirmationDeleteMsg_: String, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 return loadTimeData.getString('siteSettingsCookieRemoveAll'); | 95 return loadTimeData.getString('siteSettingsCookieRemoveAll'); |
| 102 return loadTimeData.getString('siteSettingsCookieRemoveAllShown'); | 96 return loadTimeData.getString('siteSettingsCookieRemoveAllShown'); |
| 103 }, | 97 }, |
| 104 | 98 |
| 105 /** | 99 /** |
| 106 * Called when the cookie list is ready to be shown. | 100 * Called when the cookie list is ready to be shown. |
| 107 * @param {!CookieList} list The cookie list to show. | 101 * @param {!CookieList} list The cookie list to show. |
| 108 * @private | 102 * @private |
| 109 */ | 103 */ |
| 110 loadChildren_: function(list) { | 104 loadChildren_: function(list) { |
| 111 var parentId = list.id; | 105 var loadChildrenRecurse = function(list) { |
| 112 var data = list.children; | 106 var parentId = list.id; |
| 107 var children = list.children; |
| 108 var prefix = ''; |
| 109 if (parentId !== null) { |
| 110 this.treeNodes_.populateChildNodes(parentId, this.treeNodes_, children); |
| 111 prefix = parentId + ', '; |
| 112 } |
| 113 var promises = []; |
| 114 for (let child of children) { |
| 115 if (child.hasChildren) { |
| 116 promises.push(this.browserProxy.loadCookieChildren( |
| 117 prefix + child.id).then(loadChildrenRecurse.bind(this))); |
| 118 } |
| 119 } |
| 120 return Promise.all(promises); |
| 121 }.bind(this); |
| 113 | 122 |
| 114 if (parentId == null) { | 123 // New root being added, clear the list and add the nodes. |
| 115 // New root being added, clear the list and add the nodes. | 124 this.sites = []; |
| 116 this.sites = []; | 125 this.treeNodes_.addChildNodes(this.treeNodes_, list.children); |
| 117 this.requests_ = 0; | 126 loadChildrenRecurse(list).then(function() { |
| 118 this.treeNodes_.addChildNodes(this.treeNodes_, data); | |
| 119 } else { | |
| 120 this.treeNodes_.populateChildNodes(parentId, this.treeNodes_, data); | |
| 121 } | |
| 122 | |
| 123 for (var i = 0; i < data.length; ++i) { | |
| 124 var prefix = parentId == null ? '' : parentId + ', '; | |
| 125 if (data[i].hasChildren) { | |
| 126 ++this.requests_; | |
| 127 this.browserProxy.loadCookieChildren( | |
| 128 prefix + data[i].id).then(function(list) { | |
| 129 --this.requests_; | |
| 130 this.loadChildren_(list); | |
| 131 }.bind(this)); | |
| 132 } | |
| 133 } | |
| 134 | |
| 135 if (this.requests_ == 0) | |
| 136 this.sites = this.treeNodes_.getSummaryList(); | 127 this.sites = this.treeNodes_.getSummaryList(); |
| 137 | 128 }.bind(this)); |
| 138 // If this reaches below zero then we're forgetting to increase the | |
| 139 // outstanding request count and the summary list won't be updated at the | |
| 140 // end. | |
| 141 assert(this.requests_ >= 0); | |
| 142 }, | 129 }, |
| 143 | 130 |
| 144 /** | 131 /** |
| 145 * Called when a single item has been removed (not during delete all). | 132 * Called when a single item has been removed (not during delete all). |
| 146 * @param {!CookieRemovePacket} args The details about what to remove. | 133 * @param {!CookieRemovePacket} args The details about what to remove. |
| 147 * @private | 134 * @private |
| 148 */ | 135 */ |
| 149 onTreeItemRemoved_: function(args) { | 136 onTreeItemRemoved_: function(args) { |
| 150 this.treeNodes_.removeByParentId(args.id, args.start, args.count); | 137 this.treeNodes_.removeByParentId(args.id, args.start, args.count); |
| 151 this.sites = this.treeNodes_.getSummaryList(); | 138 this.sites = this.treeNodes_.getSummaryList(); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 this.shadowRoot.appendChild(dialog); | 202 this.shadowRoot.appendChild(dialog); |
| 216 | 203 |
| 217 var node = this.treeNodes_.fetchNodeById(event.model.item.id, false); | 204 var node = this.treeNodes_.fetchNodeById(event.model.item.id, false); |
| 218 dialog.open(node); | 205 dialog.open(node); |
| 219 | 206 |
| 220 dialog.addEventListener('close', function(event) { | 207 dialog.addEventListener('close', function(event) { |
| 221 dialog.remove(); | 208 dialog.remove(); |
| 222 }); | 209 }); |
| 223 }, | 210 }, |
| 224 }); | 211 }); |
| OLD | NEW |