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 cr.define('options', function() { | 5 cr.define('options', function() { |
6 /** @const */ var DeletableItemList = options.DeletableItemList; | 6 /** @const */ var DeletableItemList = options.DeletableItemList; |
7 /** @const */ var DeletableItem = options.DeletableItem; | 7 /** @const */ var DeletableItem = options.DeletableItem; |
8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
9 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; | 9 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; |
10 | 10 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
215 this.itemsChild.style.height = itemsHeight + 'px'; | 215 this.itemsChild.style.height = itemsHeight + 'px'; |
216 this.style.height = fixedHeight + 'px'; | 216 this.style.height = fixedHeight + 'px'; |
217 }, | 217 }, |
218 | 218 |
219 /** | 219 /** |
220 * Updates the origin summary to reflect changes in its items. | 220 * Updates the origin summary to reflect changes in its items. |
221 * Both CookieListItem and CookieTreeNode implement this API. | 221 * Both CookieListItem and CookieTreeNode implement this API. |
222 * This implementation scans the descendants to update the text. | 222 * This implementation scans the descendants to update the text. |
223 */ | 223 */ |
224 updateOrigin: function() { | 224 updateOrigin: function() { |
225 var info = { | 225 var info = { |
Evan Stade
2012/07/10 07:53:08
surely the block of code between here and L271 des
Bernhard Bauer
2012/07/10 09:50:59
Done.
| |
226 cookies: 0, | 226 cookies: 0, |
227 database: false, | 227 database: false, |
228 localStorage: false, | 228 localStorage: false, |
229 appCache: false, | 229 appCache: false, |
230 indexedDb: false, | 230 indexedDb: false, |
231 fileSystem: false, | 231 fileSystem: false, |
232 serverBoundCerts: 0, | 232 serverBoundCerts: 0, |
233 }; | 233 }; |
234 if (this.origin) | 234 if (this.origin) |
235 this.origin.collectSummaryInfo(info); | 235 this.origin.collectSummaryInfo(info); |
(...skipping 12 matching lines...) Expand all Loading... | |
248 list.push(loadTimeData.getString('cookie_file_system')); | 248 list.push(loadTimeData.getString('cookie_file_system')); |
249 if (info.serverBoundCerts) | 249 if (info.serverBoundCerts) |
250 list.push(loadTimeData.getString('cookie_server_bound_cert')); | 250 list.push(loadTimeData.getString('cookie_server_bound_cert')); |
251 var text = ''; | 251 var text = ''; |
252 for (var i = 0; i < list.length; ++i) | 252 for (var i = 0; i < list.length; ++i) |
253 if (text.length > 0) | 253 if (text.length > 0) |
254 text += ', ' + list[i]; | 254 text += ', ' + list[i]; |
255 else | 255 else |
256 text = list[i]; | 256 text = list[i]; |
257 this.dataChild.textContent = text; | 257 this.dataChild.textContent = text; |
258 var apps = info.protectedByApps; | |
259 if (apps) { | |
260 for (var key in apps) { | |
261 var img = this.dataChild.ownerDocument.createElement('img'); | |
262 img.src = 'chrome://extension-icon/' + key + '/16/1'; | |
263 img.title = loadTimeData.getString('label_protected_by_apps') + | |
Evan Stade
2012/07/10 07:53:08
perhaps this is part of the TODO to use a better a
Bernhard Bauer
2012/07/10 09:50:59
Indeed! For this CL I'm just going with the existi
| |
264 ' ' + apps[key].name; | |
265 img.className = 'protecting-app'; | |
266 this.dataChild.appendChild(img); | |
267 } | |
268 } | |
258 if (info.quota && info.quota.totalUsage) { | 269 if (info.quota && info.quota.totalUsage) { |
259 this.sizeChild.textContent = info.quota.totalUsage; | 270 this.sizeChild.textContent = info.quota.totalUsage; |
260 } | 271 } |
Evan Stade
2012/07/10 07:53:08
no curlies.
Bernhard Bauer
2012/07/10 09:50:59
Done.
| |
261 | 272 |
262 if (this.expanded) | 273 if (this.expanded) |
263 this.updateItems_(); | 274 this.updateItems_(); |
264 }, | 275 }, |
265 | 276 |
266 /** | 277 /** |
267 * Updates the items section to reflect changes, animating to the new state. | 278 * Updates the items section to reflect changes, animating to the new state. |
268 * Removes existing contents and calls @{code CookieTreeNode.createItems}. | 279 * Removes existing contents and calls @{code CookieTreeNode.createItems}. |
269 * @private | 280 * @private |
270 */ | 281 */ |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
448 } else if (this.data.type == 'app_cache') { | 459 } else if (this.data.type == 'app_cache') { |
449 info.appCache = true; | 460 info.appCache = true; |
450 } else if (this.data.type == 'indexed_db') { | 461 } else if (this.data.type == 'indexed_db') { |
451 info.indexedDb = true; | 462 info.indexedDb = true; |
452 } else if (this.data.type == 'file_system') { | 463 } else if (this.data.type == 'file_system') { |
453 info.fileSystem = true; | 464 info.fileSystem = true; |
454 } else if (this.data.type == 'quota') { | 465 } else if (this.data.type == 'quota') { |
455 info.quota = this.data; | 466 info.quota = this.data; |
456 } else if (this.data.type == 'server_bound_cert') { | 467 } else if (this.data.type == 'server_bound_cert') { |
457 info.serverBoundCerts++; | 468 info.serverBoundCerts++; |
458 } | 469 } |
Evan Stade
2012/07/10 07:53:08
\n
Bernhard Bauer
2012/07/10 09:50:59
Done.
| |
470 var apps = this.data.protectedByApps; | |
471 if (apps) { | |
472 if (!info.protectedByApps) | |
473 info.protectedByApps = {}; | |
474 apps.forEach(function(appInfo) { | |
475 info.protectedByApps[appInfo.id] = appInfo; | |
476 }); | |
477 } | |
459 } | 478 } |
460 }, | 479 }, |
461 | 480 |
462 /** | 481 /** |
463 * Create the cookie "bubbles" for this node, recursing into children | 482 * Create the cookie "bubbles" for this node, recursing into children |
464 * if there are any. Append the cookie bubbles to @{code item}. | 483 * if there are any. Append the cookie bubbles to @{code item}. |
465 * @param {CookieListItem} item The cookie list item to create items in. | 484 * @param {CookieListItem} item The cookie list item to create items in. |
466 */ | 485 */ |
467 createItems: function(item) { | 486 createItems: function(item) { |
468 if (this.children.length > 0) { | 487 if (this.children.length > 0) { |
Evan Stade
2012/07/10 07:53:08
ditto in this function, needs vertical spacing.
Bernhard Bauer
2012/07/10 09:50:59
Done. I also flattened the nested if's a bit.
| |
469 for (var i = 0; i < this.children.length; ++i) | 488 for (var i = 0; i < this.children.length; ++i) |
470 this.children[i].createItems(item); | 489 this.children[i].createItems(item); |
471 } else if (this.data && !this.data.hasChildren) { | 490 } else if (this.data && !this.data.hasChildren) { |
472 var text = ''; | 491 var text = ''; |
473 switch (this.data.type) { | 492 switch (this.data.type) { |
474 case 'cookie': | 493 case 'cookie': |
475 case 'database': | 494 case 'database': |
476 text = this.data.name; | 495 text = this.data.name; |
477 break; | 496 break; |
478 case 'local_storage': | 497 case 'local_storage': |
(...skipping 12 matching lines...) Expand all Loading... | |
491 text = loadTimeData.getString('cookie_server_bound_cert'); | 510 text = loadTimeData.getString('cookie_server_bound_cert'); |
492 break; | 511 break; |
493 } | 512 } |
494 if (!text) | 513 if (!text) |
495 return; | 514 return; |
496 var div = item.ownerDocument.createElement('div'); | 515 var div = item.ownerDocument.createElement('div'); |
497 div.className = 'cookie-item'; | 516 div.className = 'cookie-item'; |
498 // Help out screen readers and such: this is a clickable thing. | 517 // Help out screen readers and such: this is a clickable thing. |
499 div.setAttribute('role', 'button'); | 518 div.setAttribute('role', 'button'); |
500 div.textContent = text; | 519 div.textContent = text; |
520 var apps = this.data.protectedByApps; | |
521 if (apps) { | |
522 apps.forEach(function(appInfo) { | |
Evan Stade
2012/07/10 07:53:08
hmm, this function looks oddly familiar
Bernhard Bauer
2012/07/10 09:50:59
Extracted a function.
| |
523 var img = div.ownerDocument.createElement('img'); | |
524 img.src = 'chrome://extension-icon/' + appInfo.id + '/16/1'; | |
525 img.title = loadTimeData.getString('label_protected_by_apps') + | |
526 ' ' + appInfo.name; | |
527 img.className = 'protecting-app'; | |
528 div.appendChild(img); | |
529 }); | |
530 } | |
501 var index = item.appendItem(this, div); | 531 var index = item.appendItem(this, div); |
502 div.onclick = function() { | 532 div.onclick = function() { |
503 if (item.selectedIndex == index) | 533 if (item.selectedIndex == index) |
504 item.selectedIndex = -1; | 534 item.selectedIndex = -1; |
505 else | 535 else |
506 item.selectedIndex = index; | 536 item.selectedIndex = index; |
507 }; | 537 }; |
508 } | 538 } |
509 }, | 539 }, |
510 | 540 |
511 /** | 541 /** |
512 * Set the detail text to be displayed to that of this cookie tree node. | 542 * Set the detail text to be displayed to that of this cookie tree node. |
513 * Uses preallocated DOM elements for each cookie node type from @{code | 543 * Uses preallocated DOM elements for each cookie node type from @{code |
514 * infoNodes}, and inserts the appropriate elements to @{code element}. | 544 * infoNodes}, and inserts the appropriate elements to @{code element}. |
515 * @param {Element} element The DOM element to insert elements to. | 545 * @param {Element} element The DOM element to insert elements to. |
516 * @param {Object.<string, {table: Element, info: Object.<string, | 546 * @param {Object.<string, {table: Element, info: Object.<string, |
517 * Element>}>} infoNodes The map from cookie node types to maps from | 547 * Element>}>} infoNodes The map from cookie node types to maps from |
518 * cookie attribute names to DOM elements to display cookie attribute | 548 * cookie attribute names to DOM elements to display cookie attribute |
519 * values, created by @{code CookiesList.decorate}. | 549 * values, created by @{code CookiesList.decorate}. |
520 */ | 550 */ |
521 setDetailText: function(element, infoNodes) { | 551 setDetailText: function(element, infoNodes) { |
522 var table; | 552 var table; |
Evan Stade
2012/07/10 07:53:08
ditto in this function, needs vertical spacing.
Bernhard Bauer
2012/07/10 09:50:59
Done.
| |
523 if (this.data && !this.data.hasChildren) { | 553 if (this.data && !this.data.hasChildren) { |
524 if (cookieInfo[this.data.type]) { | 554 if (cookieInfo[this.data.type]) { |
525 var info = cookieInfo[this.data.type]; | 555 var info = cookieInfo[this.data.type]; |
526 var nodes = infoNodes[this.data.type].info; | 556 var nodes = infoNodes[this.data.type].info; |
527 for (var i = 0; i < info.length; ++i) { | 557 for (var i = 0; i < info.length; ++i) { |
528 var name = info[i][0]; | 558 var name = info[i][0]; |
529 if (name != 'id' && this.data[name]) | 559 if (name != 'id' && this.data[name]) |
530 nodes[name].textContent = this.data[name]; | 560 nodes[name].textContent = this.data[name]; |
531 else | 561 else |
532 nodes[name].textContent = ''; | 562 nodes[name].textContent = ''; |
(...skipping 11 matching lines...) Expand all Loading... | |
544 * The parent of this cookie tree node. | 574 * The parent of this cookie tree node. |
545 * @type {?CookieTreeNode|CookieListItem} | 575 * @type {?CookieTreeNode|CookieListItem} |
546 */ | 576 */ |
547 get parent() { | 577 get parent() { |
548 // See below for an explanation of this special case. | 578 // See below for an explanation of this special case. |
549 if (typeof this.parent_ == 'number') | 579 if (typeof this.parent_ == 'number') |
550 return this.list_.getListItemByIndex(this.parent_); | 580 return this.list_.getListItemByIndex(this.parent_); |
551 return this.parent_; | 581 return this.parent_; |
552 }, | 582 }, |
553 set parent(parent) { | 583 set parent(parent) { |
554 if (parent == this.parent) | 584 if (parent == this.parent) |
Evan Stade
2012/07/10 07:53:08
ditto in this function, needs vertical spacing.
Bernhard Bauer
2012/07/10 09:50:59
Done.
| |
555 return; | 585 return; |
556 if (parent instanceof CookieListItem) { | 586 if (parent instanceof CookieListItem) { |
557 // If the parent is to be a CookieListItem, then we keep the reference | 587 // If the parent is to be a CookieListItem, then we keep the reference |
558 // to it by its containing list and list index, rather than directly. | 588 // to it by its containing list and list index, rather than directly. |
559 // This allows the list items to be garbage collected when they scroll | 589 // This allows the list items to be garbage collected when they scroll |
560 // out of view (except the expanded item, which we cache). This is | 590 // out of view (except the expanded item, which we cache). This is |
561 // transparent except in the setter and getter, where we handle it. | 591 // transparent except in the setter and getter, where we handle it. |
562 this.parent_ = parent.listIndex; | 592 this.parent_ = parent.listIndex; |
563 this.list_ = parent.list; | 593 this.list_ = parent.list; |
564 parent.addEventListener('listIndexChange', | 594 parent.addEventListener('listIndexChange', |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
854 parent.clear(); | 884 parent.clear(); |
855 this.addByParent_(parent, 0, children); | 885 this.addByParent_(parent, 0, children); |
856 parent.endBatchUpdates(); | 886 parent.endBatchUpdates(); |
857 }, | 887 }, |
858 }; | 888 }; |
859 | 889 |
860 return { | 890 return { |
861 CookiesList: CookiesList | 891 CookiesList: CookiesList |
862 }; | 892 }; |
863 }); | 893 }); |
OLD | NEW |