Index: chrome/browser/resources/options2/certificate_tree.js |
diff --git a/chrome/browser/resources/options2/certificate_tree.js b/chrome/browser/resources/options2/certificate_tree.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ee5d0755879578c339339bb7acd09f06be1df017 |
--- /dev/null |
+++ b/chrome/browser/resources/options2/certificate_tree.js |
@@ -0,0 +1,128 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+cr.define('options', function() { |
+ const Tree = cr.ui.Tree; |
+ const TreeItem = cr.ui.TreeItem; |
+ |
+ /** |
+ * Creates a new tree item for certificate data. |
+ * @param {Object=} data Data used to create a certificate tree item. |
+ * @constructor |
+ * @extends {TreeItem} |
+ */ |
+ function CertificateTreeItem(data) { |
+ // TODO(mattm): other columns |
+ var treeItem = new TreeItem({ |
+ label: data.name, |
+ data: data |
+ }); |
+ treeItem.__proto__ = CertificateTreeItem.prototype; |
+ |
+ if (data.icon) { |
+ treeItem.icon = data.icon; |
+ } |
+ |
+ if (data.untrusted) { |
+ var badge = document.createElement('span'); |
+ badge.setAttribute('class', 'certUntrusted'); |
+ badge.textContent = localStrings.getString("badgeCertUntrusted"); |
+ treeItem.labelElement.insertBefore( |
+ badge, treeItem.labelElement.firstChild); |
+ } |
+ |
+ return treeItem; |
+ } |
+ |
+ CertificateTreeItem.prototype = { |
+ __proto__: TreeItem.prototype, |
+ |
+ /** |
+ * The tree path id/. |
+ * @type {string} |
+ */ |
+ get pathId() { |
+ var parent = this.parentItem; |
+ if (parent && parent instanceof CertificateTreeItem) { |
+ return parent.pathId + ',' + this.data.id; |
+ } else { |
+ return this.data.id; |
+ } |
+ } |
+ }; |
+ |
+ /** |
+ * Creates a new cookies tree. |
+ * @param {Object=} opt_propertyBag Optional properties. |
+ * @constructor |
+ * @extends {Tree} |
+ */ |
+ var CertificatesTree = cr.ui.define('tree'); |
+ |
+ CertificatesTree.prototype = { |
+ __proto__: Tree.prototype, |
+ |
+ /** @inheritDoc */ |
+ decorate: function() { |
+ Tree.prototype.decorate.call(this); |
+ this.treeLookup_ = {}; |
+ }, |
+ |
+ /** @inheritDoc */ |
+ addAt: function(child, index) { |
+ Tree.prototype.addAt.call(this, child, index); |
+ if (child.data && child.data.id) |
+ this.treeLookup_[child.data.id] = child; |
+ }, |
+ |
+ /** @inheritDoc */ |
+ remove: function(child) { |
+ Tree.prototype.remove.call(this, child); |
+ if (child.data && child.data.id) |
+ delete this.treeLookup_[child.data.id]; |
+ }, |
+ |
+ /** |
+ * Clears the tree. |
+ */ |
+ clear: function() { |
+ // Remove all fields without recreating the object since other code |
+ // references it. |
+ for (var id in this.treeLookup_){ |
+ delete this.treeLookup_[id]; |
+ } |
+ this.textContent = ''; |
+ }, |
+ |
+ /** |
+ * Populate the tree. |
+ * @param {Array} nodesData Nodes data array. |
+ */ |
+ populate: function(nodesData) { |
+ this.clear(); |
+ |
+ for (var i = 0; i < nodesData.length; ++i) { |
+ var subnodes = nodesData[i]['subnodes']; |
+ delete nodesData[i]['subnodes']; |
+ |
+ var item = new CertificateTreeItem(nodesData[i]); |
+ this.addAt(item, i); |
+ |
+ for (var j = 0; j < subnodes.length; ++j) { |
+ var subitem = new CertificateTreeItem(subnodes[j]); |
+ item.addAt(subitem, j); |
+ } |
+ // Make tree expanded by default. |
+ item.expanded = true; |
+ } |
+ |
+ cr.dispatchSimpleEvent(this, 'change'); |
+ }, |
+ }; |
+ |
+ return { |
+ CertificatesTree: CertificatesTree |
+ }; |
+}); |
+ |