Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(261)

Side by Side Diff: chrome/browser/resources/options/cookies_list.js

Issue 2939273002: DO NOT SUBMIT: what chrome/browser/resources/ could eventually look like with clang-format (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
11 // This structure maps the various cookie type names from C++ (hence the 11 // This structure maps the various cookie type names from C++ (hence the
12 // underscores) to arrays of the different types of data each has, along with 12 // underscores) to arrays of the different types of data each has, along with
13 // the i18n name for the description of that data type. 13 // the i18n name for the description of that data type.
14 /** @const */ var cookieInfo = { 14 /** @const */ var cookieInfo = {
15 'cookie': [['name', 'label_cookie_name'], 15 'cookie': [
16 ['content', 'label_cookie_content'], 16 ['name', 'label_cookie_name'], ['content', 'label_cookie_content'],
17 ['domain', 'label_cookie_domain'], 17 ['domain', 'label_cookie_domain'], ['path', 'label_cookie_path'],
18 ['path', 'label_cookie_path'], 18 ['sendfor', 'label_cookie_send_for'],
19 ['sendfor', 'label_cookie_send_for'], 19 ['accessibleToScript', 'label_cookie_accessible_to_script'],
20 ['accessibleToScript', 'label_cookie_accessible_to_script'], 20 ['created', 'label_cookie_created'], ['expires', 'label_cookie_expires']
21 ['created', 'label_cookie_created'], 21 ],
22 ['expires', 'label_cookie_expires']], 22 'app_cache': [
23 'app_cache': [['manifest', 'label_app_cache_manifest'], 23 ['manifest', 'label_app_cache_manifest'],
24 ['size', 'label_local_storage_size'], 24 ['size', 'label_local_storage_size'], ['created', 'label_cookie_created'],
25 ['created', 'label_cookie_created'], 25 ['accessed', 'label_cookie_last_accessed']
26 ['accessed', 'label_cookie_last_accessed']], 26 ],
27 'database': [['name', 'label_cookie_name'], 27 'database': [
28 ['desc', 'label_webdb_desc'], 28 ['name', 'label_cookie_name'], ['desc', 'label_webdb_desc'],
29 ['size', 'label_local_storage_size'], 29 ['size', 'label_local_storage_size'],
30 ['modified', 'label_local_storage_last_modified']], 30 ['modified', 'label_local_storage_last_modified']
31 'local_storage': [['origin', 'label_local_storage_origin'], 31 ],
32 ['size', 'label_local_storage_size'], 32 'local_storage': [
33 ['modified', 'label_local_storage_last_modified']], 33 ['origin', 'label_local_storage_origin'],
34 'indexed_db': [['origin', 'label_indexed_db_origin'], 34 ['size', 'label_local_storage_size'],
35 ['size', 'label_indexed_db_size'], 35 ['modified', 'label_local_storage_last_modified']
36 ['modified', 'label_indexed_db_last_modified']], 36 ],
37 'file_system': [['origin', 'label_file_system_origin'], 37 'indexed_db': [
38 ['persistent', 'label_file_system_persistent_usage'], 38 ['origin', 'label_indexed_db_origin'], ['size', 'label_indexed_db_size'],
39 ['temporary', 'label_file_system_temporary_usage']], 39 ['modified', 'label_indexed_db_last_modified']
40 'channel_id': [['serverId', 'label_channel_id_server_id'], 40 ],
41 ['certType', 'label_channel_id_type'], 41 'file_system': [
42 ['created', 'label_channel_id_created']], 42 ['origin', 'label_file_system_origin'],
43 'service_worker': [['origin', 'label_service_worker_origin'], 43 ['persistent', 'label_file_system_persistent_usage'],
44 ['size', 'label_service_worker_size'], 44 ['temporary', 'label_file_system_temporary_usage']
45 ['scopes', 'label_service_worker_scopes']], 45 ],
46 'cache_storage': [['origin', 'label_cache_storage_origin'], 46 'channel_id': [
47 ['size', 'label_cache_storage_size'], 47 ['serverId', 'label_channel_id_server_id'],
48 ['modified', 'label_cache_storage_last_modified']], 48 ['certType', 'label_channel_id_type'],
49 ['created', 'label_channel_id_created']
50 ],
51 'service_worker': [
52 ['origin', 'label_service_worker_origin'],
53 ['size', 'label_service_worker_size'],
54 ['scopes', 'label_service_worker_scopes']
55 ],
56 'cache_storage': [
57 ['origin', 'label_cache_storage_origin'],
58 ['size', 'label_cache_storage_size'],
59 ['modified', 'label_cache_storage_last_modified']
60 ],
49 'flash_lso': [['domain', 'label_cookie_domain']], 61 'flash_lso': [['domain', 'label_cookie_domain']],
50 'media_license': [['origin', 'label_media_license_origin'], 62 'media_license': [
51 ['size', 'label_media_license_size'], 63 ['origin', 'label_media_license_origin'],
52 ['modified', 'label_media_license_last_modified']], 64 ['size', 'label_media_license_size'],
65 ['modified', 'label_media_license_last_modified']
66 ],
53 }; 67 };
54 68
55 /** 69 /**
56 * Returns the item's height, like offsetHeight but such that it works better 70 * Returns the item's height, like offsetHeight but such that it works better
57 * when the page is zoomed. See the similar calculation in @{code cr.ui.List}. 71 * when the page is zoomed. See the similar calculation in @{code cr.ui.List}.
58 * This version also accounts for the animation done in this file. 72 * This version also accounts for the animation done in this file.
59 * @param {Element} item The item to get the height of. 73 * @param {Element} item The item to get the height of.
60 * @return {number} The height of the item, calculated with zooming in mind. 74 * @return {number} The height of the item, calculated with zooming in mind.
61 */ 75 */
62 function getItemHeight(item) { 76 function getItemHeight(item) {
63 var height = item.style.height; 77 var height = item.style.height;
64 // Use the fixed animation target height if set, in case the element is 78 // Use the fixed animation target height if set, in case the element is
65 // currently being animated and we'd get an intermediate height below. 79 // currently being animated and we'd get an intermediate height below.
66 if (height && height.substr(-2) == 'px') 80 if (height && height.substr(-2) == 'px')
67 return parseInt(height.substr(0, height.length - 2), 10); 81 return parseInt(height.substr(0, height.length - 2), 10);
68 return item.getBoundingClientRect().height; 82 return item.getBoundingClientRect().height;
69 } 83 }
70 84
71 /** 85 /**
72 * Create tree nodes for the objects in the data array, and insert them all 86 * Create tree nodes for the objects in the data array, and insert them all
73 * into the given list using its @{code splice} method at the given index. 87 * into the given list using its @{code splice} method at the given index.
74 * @param {Array<Object>} data The data objects for the nodes to add. 88 * @param {Array<Object>} data The data objects for the nodes to add.
75 * @param {number} start The index at which to start inserting the nodes. 89 * @param {number} start The index at which to start inserting the nodes.
76 * @return {Array<options.CookieTreeNode>} An array of CookieTreeNodes added. 90 * @return {Array<options.CookieTreeNode>} An array of CookieTreeNodes added.
77 */ 91 */
78 function spliceTreeNodes(data, start, list) { 92 function spliceTreeNodes(data, start, list) {
79 var nodes = data.map(function(x) { return new CookieTreeNode(x); }); 93 var nodes = data.map(function(x) {
94 return new CookieTreeNode(x);
95 });
80 // Insert [start, 0] at the beginning of the array of nodes, making it 96 // Insert [start, 0] at the beginning of the array of nodes, making it
81 // into the arguments we want to pass to @{code list.splice} below. 97 // into the arguments we want to pass to @{code list.splice} below.
82 nodes.splice(0, 0, start, 0); 98 nodes.splice(0, 0, start, 0);
83 list.splice.apply(list, nodes); 99 list.splice.apply(list, nodes);
84 // Remove the [start, 0] prefix and return the array of nodes. 100 // Remove the [start, 0] prefix and return the array of nodes.
85 nodes.splice(0, 2); 101 nodes.splice(0, 2);
86 return nodes; 102 return nodes;
87 } 103 }
88 104
89 /** 105 /**
90 * Adds information about an app that protects this data item to the 106 * Adds information about an app that protects this data item to the
91 * |element|. 107 * |element|.
92 * @param {Element} element The DOM element the information should be 108 * @param {Element} element The DOM element the information should be
93 appended to. 109 appended to.
94 * @param {{id: string, name: string}} appInfo Information about an app. 110 * @param {{id: string, name: string}} appInfo Information about an app.
95 */ 111 */
96 function addAppInfo(element, appInfo) { 112 function addAppInfo(element, appInfo) {
97 var img = element.ownerDocument.createElement('img'); 113 var img = element.ownerDocument.createElement('img');
98 img.src = 'chrome://extension-icon/' + appInfo.id + '/16/1'; 114 img.src = 'chrome://extension-icon/' + appInfo.id + '/16/1';
99 element.title = loadTimeData.getString('label_protected_by_apps') + 115 element.title =
100 ' ' + appInfo.name; 116 loadTimeData.getString('label_protected_by_apps') + ' ' + appInfo.name;
101 img.className = 'protecting-app'; 117 img.className = 'protecting-app';
102 element.appendChild(img); 118 element.appendChild(img);
103 } 119 }
104 120
105 var parentLookup = {}; 121 var parentLookup = {};
106 var lookupRequests = {}; 122 var lookupRequests = {};
107 123
108 /** 124 /**
109 * Creates a new list item for sites data. Note that these are created and 125 * Creates a new list item for sites data. Note that these are created and
110 * destroyed lazily as they scroll into and out of view, so they must be 126 * destroyed lazily as they scroll into and out of view, so they must be
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 this.selectedIndex_ = -1; 391 this.selectedIndex_ = -1;
376 this.disableAnimation_(); 392 this.disableAnimation_();
377 this.infoChild.hidden = true; 393 this.infoChild.hidden = true;
378 this.enableAnimation_(); 394 this.enableAnimation_();
379 return; 395 return;
380 } 396 }
381 // Set the new selected item and show the item details for it. 397 // Set the new selected item and show the item details for it.
382 this.selectedIndex_ = itemIndex; 398 this.selectedIndex_ = itemIndex;
383 this.itemList_[itemIndex].div.setAttribute('selected', ''); 399 this.itemList_[itemIndex].div.setAttribute('selected', '');
384 this.disableAnimation_(); 400 this.disableAnimation_();
385 this.itemList_[itemIndex].node.setDetailText(this.infoChild, 401 this.itemList_[itemIndex].node.setDetailText(
386 this.list.infoNodes); 402 this.infoChild, this.list.infoNodes);
387 this.infoChild.hidden = false; 403 this.infoChild.hidden = false;
388 this.enableAnimation_(); 404 this.enableAnimation_();
389 // If we're near the bottom of the list this may cause the list item to go 405 // If we're near the bottom of the list this may cause the list item to go
390 // beyond the end of the visible area. Fix it after the animation is done. 406 // beyond the end of the visible area. Fix it after the animation is done.
391 var list = this.list; 407 var list = this.list;
392 window.setTimeout(function() { list.scrollIndexIntoView(index); }, 150); 408 window.setTimeout(function() {
409 list.scrollIndexIntoView(index);
410 }, 150);
393 }, 411 },
394 }; 412 };
395 413
396 /** 414 /**
397 * {@code CookieTreeNode}s mirror the structure of the cookie tree lazily, and 415 * {@code CookieTreeNode}s mirror the structure of the cookie tree lazily, and
398 * contain all the actual data used to generate the {@code CookieListItem}s. 416 * contain all the actual data used to generate the {@code CookieListItem}s.
399 * @param {Object} data The data object for this node. 417 * @param {Object} data The data object for this node.
400 * @constructor 418 * @constructor
401 */ 419 */
402 function CookieTreeNode(data) { 420 function CookieTreeNode(data) {
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 // List.getDefaultItemSize_ 657 // List.getDefaultItemSize_
640 // List.getDefaultItemHeight_ 658 // List.getDefaultItemHeight_
641 // List.getIndexForListOffset_ 659 // List.getIndexForListOffset_
642 // List.getItemsInViewPort 660 // List.getItemsInViewPort
643 // List.redraw 661 // List.redraw
644 // List.endBatchUpdates 662 // List.endBatchUpdates
645 // CookiesList.loadChildren 663 // CookiesList.loadChildren
646 this.parent_ = parent.listIndex; 664 this.parent_ = parent.listIndex;
647 } 665 }
648 this.list_ = parent.list; 666 this.list_ = parent.list;
649 parent.addEventListener('listIndexChange', 667 parent.addEventListener(
650 this.parentIndexChanged_.bind(this)); 668 'listIndexChange', this.parentIndexChanged_.bind(this));
651 } else { 669 } else {
652 this.parent_ = parent; 670 this.parent_ = parent;
653 } 671 }
654 672
655 if (this.data && this.data.id) { 673 if (this.data && this.data.id) {
656 if (parent) 674 if (parent)
657 parentLookup[this.data.id] = this; 675 parentLookup[this.data.id] = this;
658 else 676 else
659 delete parentLookup[this.data.id]; 677 delete parentLookup[this.data.id];
660 } 678 }
661 679
662 if (this.data && this.data.hasChildren && 680 if (this.data && this.data.hasChildren && !this.children.length &&
663 !this.children.length && !lookupRequests[this.data.id]) { 681 !lookupRequests[this.data.id]) {
664 lookupRequests[this.data.id] = true; 682 lookupRequests[this.data.id] = true;
665 chrome.send('loadCookie', [this.pathId]); 683 chrome.send('loadCookie', [this.pathId]);
666 } 684 }
667 }, 685 },
668 686
669 /** 687 /**
670 * Called when the parent is a CookieListItem whose index has changed. 688 * Called when the parent is a CookieListItem whose index has changed.
671 * See the code above that avoids keeping a direct reference to 689 * See the code above that avoids keeping a direct reference to
672 * CookieListItem parents, to allow them to be garbage collected. 690 * CookieListItem parents, to allow them to be garbage collected.
673 * @private 691 * @private
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 } 787 }
770 }, 788 },
771 789
772 /** 790 /**
773 * Called on selection model selection changes. 791 * Called on selection model selection changes.
774 * @param {Event} ce The selection change event. 792 * @param {Event} ce The selection change event.
775 * @private 793 * @private
776 */ 794 */
777 cookieSelectionChange_: function(ce) { 795 cookieSelectionChange_: function(ce) {
778 ce.changes.forEach(function(change) { 796 ce.changes.forEach(function(change) {
779 var listItem = this.getListItemByIndex(change.index); 797 var listItem = this.getListItemByIndex(change.index);
780 if (listItem) { 798 if (listItem) {
781 if (!change.selected) { 799 if (!change.selected) {
782 // We set a timeout here, rather than setting the item unexpanded 800 // We set a timeout here, rather than setting the item unexpanded
783 // immediately, so that if another item gets set expanded right 801 // immediately, so that if another item gets set expanded right
784 // away, it will be expanded before this item is unexpanded. It 802 // away, it will be expanded before this item is unexpanded. It
785 // will notice that, and unexpand this item in sync with its own 803 // will notice that, and unexpand this item in sync with its own
786 // expansion. Later, this callback will end up having no effect. 804 // expansion. Later, this callback will end up having no effect.
787 window.setTimeout(function() { 805 window.setTimeout(function() {
788 if (!listItem.selected || !listItem.lead) 806 if (!listItem.selected || !listItem.lead)
789 listItem.expanded = false; 807 listItem.expanded = false;
790 }, 0); 808 }, 0);
791 } else if (listItem.lead) { 809 } else if (listItem.lead) {
792 listItem.expanded = true; 810 listItem.expanded = true;
793 }
794 } 811 }
795 }, this); 812 }
813 }, this);
796 }, 814 },
797 815
798 /** 816 /**
799 * Called on selection model lead changes. 817 * Called on selection model lead changes.
800 * @param {Event} pe The lead change event. 818 * @param {Event} pe The lead change event.
801 * @private 819 * @private
802 */ 820 */
803 cookieLeadChange_: function(pe) { 821 cookieLeadChange_: function(pe) {
804 if (pe.oldValue != -1) { 822 if (pe.oldValue != -1) {
805 var listItem = this.getListItemByIndex(pe.oldValue); 823 var listItem = this.getListItemByIndex(pe.oldValue);
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 parent.endBatchUpdates(); 970 parent.endBatchUpdates();
953 }, 971 },
954 }; 972 };
955 973
956 return { 974 return {
957 CookiesList: CookiesList, 975 CookiesList: CookiesList,
958 CookieListItem: CookieListItem, 976 CookieListItem: CookieListItem,
959 CookieTreeNode: CookieTreeNode, 977 CookieTreeNode: CookieTreeNode,
960 }; 978 };
961 }); 979 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698