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 * @typedef {{title: string, | 6 * @typedef {{title: string, |
7 * id: string, | 7 * id: string, |
8 * data: CookieDetails}} | 8 * data: CookieDetails}} |
9 */ | 9 */ |
10 var CookieDataItem; | 10 var CookieDataItem; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 */ | 52 */ |
53 function getCookieDataCategoryText(dataType, totalUsage) { | 53 function getCookieDataCategoryText(dataType, totalUsage) { |
54 if (dataType == 'quota') | 54 if (dataType == 'quota') |
55 return totalUsage; | 55 return totalUsage; |
56 return categoryLabels[dataType]; | 56 return categoryLabels[dataType]; |
57 } | 57 } |
58 | 58 |
59 cr.define('settings', function() { | 59 cr.define('settings', function() { |
60 'use strict'; | 60 'use strict'; |
61 | 61 |
62 /** | 62 class CookieTreeNode { |
63 * @constructor | 63 constructor(data) { |
64 */ | 64 /** |
65 function CookieTreeNode(data) { | 65 * The data for this cookie node. |
66 /** | 66 * @type {CookieDetails} |
67 * The data for this cookie node. | 67 */ |
68 * @type {CookieDetails} | 68 this.data = data; |
69 */ | |
70 this.data = data; | |
71 | 69 |
72 /** | 70 /** |
73 * The child cookie nodes. | 71 * The child cookie nodes. |
74 * @private {!Array<!settings.CookieTreeNode>} | 72 * @private {!Array<!settings.CookieTreeNode>} |
75 */ | 73 */ |
76 this.children_ = []; | 74 this.children_ = []; |
77 } | 75 } |
78 | 76 |
79 CookieTreeNode.prototype = { | |
80 /** | 77 /** |
81 * Converts a list of cookies and add them as CookieTreeNode children to | 78 * Converts a list of cookies and add them as CookieTreeNode children to |
82 * the given parent node. | 79 * the given parent node. |
83 * @param {!settings.CookieTreeNode} parentNode The parent node to add | 80 * @param {!settings.CookieTreeNode} parentNode The parent node to add |
84 * children to. | 81 * children to. |
85 * @param {!Array<!CookieDetails>} newNodes The list containing the data to | 82 * @param {!Array<!CookieDetails>} newNodes The list containing the data to |
86 * add. | 83 * add. |
87 */ | 84 */ |
88 addChildNodes: function(parentNode, newNodes) { | 85 addChildNodes(parentNode, newNodes) { |
89 var nodes = newNodes.map(function(x) { | 86 var nodes = newNodes.map(function(x) { |
90 return new settings.CookieTreeNode(x); | 87 return new settings.CookieTreeNode(x); |
91 }); | 88 }); |
92 parentNode.children_ = nodes; | 89 parentNode.children_ = nodes; |
93 }, | 90 } |
94 | 91 |
95 /** | 92 /** |
96 * Looks up a parent node and adds a list of CookieTreeNodes to them. | 93 * Looks up a parent node and adds a list of CookieTreeNodes to them. |
97 * @param {string} parentId The ID of the parent to add the nodes to. | 94 * @param {string} parentId The ID of the parent to add the nodes to. |
98 * @param {!settings.CookieTreeNode} startingNode The node to start with | 95 * @param {!settings.CookieTreeNode} startingNode The node to start with |
99 * when looking for the parent node to add the children to. | 96 * when looking for the parent node to add the children to. |
100 * @param {!Array<!CookieDetails>} newNodes The list containing the data to | 97 * @param {!Array<!CookieDetails>} newNodes The list containing the data to |
101 add. | 98 add. |
102 * @return {boolean} True if the parent node was found. | 99 * @return {boolean} True if the parent node was found. |
103 */ | 100 */ |
104 populateChildNodes: function(parentId, startingNode, newNodes) { | 101 populateChildNodes(parentId, startingNode, newNodes) { |
105 for (var i = 0; i < startingNode.children_.length; ++i) { | 102 for (var i = 0; i < startingNode.children_.length; ++i) { |
106 if (startingNode.children_[i].data.id == parentId) { | 103 if (startingNode.children_[i].data.id == parentId) { |
107 this.addChildNodes(startingNode.children_[i], newNodes); | 104 this.addChildNodes(startingNode.children_[i], newNodes); |
108 return true; | 105 return true; |
109 } | 106 } |
110 | 107 |
111 if (this.populateChildNodes( | 108 if (this.populateChildNodes( |
112 parentId, startingNode.children_[i], newNodes)) { | 109 parentId, startingNode.children_[i], newNodes)) { |
113 return true; | 110 return true; |
114 } | 111 } |
115 } | 112 } |
116 return false; | 113 return false; |
117 }, | 114 } |
118 | 115 |
119 /** | 116 /** |
120 * Removes child nodes from a node with a given id. | 117 * Removes child nodes from a node with a given id. |
121 * @param {string} id The id of the parent node to delete from. | 118 * @param {string} id The id of the parent node to delete from. |
122 * @param {number} firstChild The index of the first child to start deleting | 119 * @param {number} firstChild The index of the first child to start deleting |
123 * from. | 120 * from. |
124 * @param {number} count The number of children to delete. | 121 * @param {number} count The number of children to delete. |
125 */ | 122 */ |
126 removeByParentId: function(id, firstChild, count) { | 123 removeByParentId(id, firstChild, count) { |
127 var node = id == null ? this : this.fetchNodeById(id, true); | 124 var node = id == null ? this : this.fetchNodeById(id, true); |
128 node.children_.splice(firstChild, count); | 125 node.children_.splice(firstChild, count); |
129 }, | 126 } |
130 | 127 |
131 /** | 128 /** |
132 * Returns an array of cookies from the current node within the cookie tree. | 129 * Returns an array of cookies from the current node within the cookie tree. |
133 * @return {!Array<!CookieDataItem>} The Cookie List. | 130 * @return {!Array<!CookieDataItem>} The Cookie List. |
134 */ | 131 */ |
135 getCookieList: function() { | 132 getCookieList() { |
136 var list = []; | 133 var list = []; |
137 for (var i = 0; i < this.children_.length; i++) { | 134 for (var i = 0; i < this.children_.length; i++) { |
138 var child = this.children_[i]; | 135 var child = this.children_[i]; |
139 for (var j = 0; j < child.children_.length; j++) { | 136 for (var j = 0; j < child.children_.length; j++) { |
140 var cookie = child.children_[j]; | 137 var cookie = child.children_[j]; |
141 list.push({ | 138 list.push({ |
142 title: cookie.data.title, | 139 title: cookie.data.title, |
143 id: cookie.data.id, | 140 id: cookie.data.id, |
144 data: cookie.data | 141 data: cookie.data |
145 }); | 142 }); |
146 } | 143 } |
147 } | 144 } |
148 | 145 |
149 return list; | 146 return list; |
150 }, | 147 } |
151 | 148 |
152 /** | 149 /** |
153 * Get a summary list of all sites and their stored data. | 150 * Get a summary list of all sites and their stored data. |
154 * @return {!Array<!CookieDataSummaryItem>} The summary list. | 151 * @return {!Array<!CookieDataSummaryItem>} The summary list. |
155 */ | 152 */ |
156 getSummaryList: function() { | 153 getSummaryList() { |
157 var list = []; | 154 var list = []; |
158 for (var i = 0; i < this.children_.length; ++i) { | 155 for (var i = 0; i < this.children_.length; ++i) { |
159 var siteEntry = this.children_[i]; | 156 var siteEntry = this.children_[i]; |
160 var title = siteEntry.data.title; | 157 var title = siteEntry.data.title; |
161 var id = siteEntry.data.id; | 158 var id = siteEntry.data.id; |
162 var description = ''; | 159 var description = ''; |
163 | 160 |
164 if (siteEntry.children_.length == 0) | 161 if (siteEntry.children_.length == 0) |
165 continue; | 162 continue; |
166 | 163 |
(...skipping 20 matching lines...) Expand all Loading... |
187 description += getCookieDataCategoryText( | 184 description += getCookieDataCategoryText( |
188 dataType, descriptionNode.data.totalUsage); | 185 dataType, descriptionNode.data.totalUsage); |
189 } | 186 } |
190 } | 187 } |
191 list.push({site: title, id: id, localData: description}); | 188 list.push({site: title, id: id, localData: description}); |
192 } | 189 } |
193 list.sort(function(a, b) { | 190 list.sort(function(a, b) { |
194 return a.site.localeCompare(b.site); | 191 return a.site.localeCompare(b.site); |
195 }); | 192 }); |
196 return list; | 193 return list; |
197 }, | 194 } |
198 | 195 |
199 /** | 196 /** |
200 * Fetch a CookieTreeNode by ID. | 197 * Fetch a CookieTreeNode by ID. |
201 * @param {string} id The ID to look up. | 198 * @param {string} id The ID to look up. |
202 * @param {boolean} recursive Whether to search the children also. | 199 * @param {boolean} recursive Whether to search the children also. |
203 * @return {settings.CookieTreeNode} The node found, if any. | 200 * @return {settings.CookieTreeNode} The node found, if any. |
204 */ | 201 */ |
205 fetchNodeById: function(id, recursive) { | 202 fetchNodeById(id, recursive) { |
206 for (var i = 0; i < this.children_.length; ++i) { | 203 for (var i = 0; i < this.children_.length; ++i) { |
207 if (this.children_[i] == null) | 204 if (this.children_[i] == null) |
208 return null; | 205 return null; |
209 if (this.children_[i].data.id == id) | 206 if (this.children_[i].data.id == id) |
210 return this.children_[i]; | 207 return this.children_[i]; |
211 if (recursive) { | 208 if (recursive) { |
212 var node = this.children_[i].fetchNodeById(id, true); | 209 var node = this.children_[i].fetchNodeById(id, true); |
213 if (node != null) | 210 if (node != null) |
214 return node; | 211 return node; |
215 } | 212 } |
216 } | 213 } |
217 return null; | 214 return null; |
218 }, | 215 } |
219 | 216 |
220 /** | 217 /** |
221 * Fetch a CookieTreeNode by site. | 218 * Fetch a CookieTreeNode by site. |
222 * @param {string} site The web site to look up. | 219 * @param {string} site The web site to look up. |
223 * @return {?settings.CookieTreeNode} The node found, if any. | 220 * @return {?settings.CookieTreeNode} The node found, if any. |
224 */ | 221 */ |
225 fetchNodeBySite: function(site) { | 222 fetchNodeBySite(site) { |
226 for (var i = 0; i < this.children_.length; ++i) { | 223 for (var i = 0; i < this.children_.length; ++i) { |
227 if (this.children_[i].data.title == site) | 224 if (this.children_[i].data.title == site) |
228 return this.children_[i]; | 225 return this.children_[i]; |
229 } | 226 } |
230 return null; | 227 return null; |
231 }, | 228 } |
232 }; | 229 } |
233 | 230 |
234 return { | 231 return { |
235 CookieTreeNode: CookieTreeNode, | 232 CookieTreeNode: CookieTreeNode, |
236 }; | 233 }; |
237 }); | 234 }); |
OLD | NEW |