| 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 'use strict'; | 6 'use strict'; |
| 7 | 7 |
| 8 /** | 8 /** |
| 9 * A lookup helper function to find the first node that has an id (starting | 9 * A lookup helper function to find the first node that has an id (starting |
| 10 * at |node| and going up the parent chain). | 10 * at |node| and going up the parent chain). |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 | 41 |
| 42 this.showExtensionNodes_(); | 42 this.showExtensionNodes_(); |
| 43 }, | 43 }, |
| 44 | 44 |
| 45 /** | 45 /** |
| 46 * Creates all extension items from scratch. | 46 * Creates all extension items from scratch. |
| 47 * @private | 47 * @private |
| 48 */ | 48 */ |
| 49 showExtensionNodes_: function() { | 49 showExtensionNodes_: function() { |
| 50 // Iterate over the extension data and add each item to the list. | 50 // Iterate over the extension data and add each item to the list. |
| 51 var list = this; | 51 this.data_.extensions.forEach(this.createNode_, this); |
| 52 this.data_.extensions.forEach(this.createNode_.bind(this)); | |
| 53 | 52 |
| 54 if (this.data_.extensions.length == 0) | 53 if (this.data_.extensions.length == 0) |
| 55 this.classList.add('empty-extension-list'); | 54 this.classList.add('empty-extension-list'); |
| 56 else | 55 else |
| 57 this.classList.remove('empty-extension-list'); | 56 this.classList.remove('empty-extension-list'); |
| 58 }, | 57 }, |
| 59 | 58 |
| 60 /** | 59 /** |
| 61 * Synthesizes and initializes an HTML element for the extension metadata | 60 * Synthesizes and initializes an HTML element for the extension metadata |
| 62 * given in |extension|. | 61 * given in |extension|. |
| 63 * @param {Object} extension A dictionary of extension metadata. | 62 * @param {Object} extension A dictionary of extension metadata. |
| 64 * @private | 63 * @private |
| 65 */ | 64 */ |
| 66 createNode_: function(extension) { | 65 createNode_: function(extension) { |
| 67 var template = $('template-collection').querySelector( | 66 var template = $('template-collection').querySelector( |
| 68 '.extension-list-item-wrapper'); | 67 '.extension-list-item-wrapper'); |
| 69 var node = template.cloneNode(true); | 68 var node = template.cloneNode(true); |
| 70 node.id = extension.id; | 69 node.id = extension.id; |
| 71 | 70 |
| 72 if (!extension.enabled || extension.terminated) | 71 if (!extension.enabled || extension.terminated) |
| 73 node.classList.add('inactive-extension'); | 72 node.classList.add('inactive-extension'); |
| 74 | 73 |
| 75 if (!extension.mayDisable) | 74 if (!extension.userModifiable) |
| 76 node.classList.add('may-not-disable'); | 75 node.classList.add('may-not-disable'); |
| 77 | 76 |
| 78 var item = node.querySelector('.extension-list-item'); | 77 var item = node.querySelector('.extension-list-item'); |
| 79 item.style.backgroundImage = 'url(' + extension.icon + ')'; | 78 item.style.backgroundImage = 'url(' + extension.icon + ')'; |
| 80 | 79 |
| 81 var title = node.querySelector('.extension-title'); | 80 var title = node.querySelector('.extension-title'); |
| 82 title.textContent = extension.name; | 81 title.textContent = extension.name; |
| 83 | 82 |
| 84 var version = node.querySelector('.extension-version'); | 83 var version = node.querySelector('.extension-version'); |
| 85 version.textContent = extension.version; | 84 version.textContent = extension.version; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 reload.addEventListener('click', function(e) { | 162 reload.addEventListener('click', function(e) { |
| 164 chrome.send('extensionSettingsReload', [extension.id]); | 163 chrome.send('extensionSettingsReload', [extension.id]); |
| 165 }); | 164 }); |
| 166 reload.hidden = false; | 165 reload.hidden = false; |
| 167 } | 166 } |
| 168 | 167 |
| 169 if (!extension.terminated) { | 168 if (!extension.terminated) { |
| 170 // The 'Enabled' checkbox. | 169 // The 'Enabled' checkbox. |
| 171 var enable = node.querySelector('.enable-checkbox'); | 170 var enable = node.querySelector('.enable-checkbox'); |
| 172 enable.hidden = false; | 171 enable.hidden = false; |
| 173 enable.querySelector('input').disabled = !extension.mayDisable; | 172 enable.querySelector('input').disabled = !extension.userModifiable; |
| 174 | 173 |
| 175 if (extension.mayDisable) { | 174 if (extension.userModifiable) { |
| 176 enable.addEventListener('click', function(e) { | 175 enable.addEventListener('click', function(e) { |
| 177 chrome.send('extensionSettingsEnable', | 176 chrome.send('extensionSettingsEnable', |
| 178 [extension.id, e.target.checked ? 'true' : 'false']); | 177 [extension.id, e.target.checked ? 'true' : 'false']); |
| 179 }); | 178 }); |
| 180 } | 179 } |
| 181 | 180 |
| 182 enable.querySelector('input').checked = extension.enabled; | 181 enable.querySelector('input').checked = extension.enabled; |
| 183 } else { | 182 } else { |
| 184 var terminated_reload = node.querySelector('.terminated-reload-link'); | 183 var terminated_reload = node.querySelector('.terminated-reload-link'); |
| 185 terminated_reload.hidden = false; | 184 terminated_reload.hidden = false; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 205 | 204 |
| 206 // Then the path, if provided by unpacked extension. | 205 // Then the path, if provided by unpacked extension. |
| 207 if (extension.isUnpacked) { | 206 if (extension.isUnpacked) { |
| 208 var loadPath = node.querySelector('.load-path'); | 207 var loadPath = node.querySelector('.load-path'); |
| 209 loadPath.hidden = false; | 208 loadPath.hidden = false; |
| 210 loadPath.querySelector('span:nth-of-type(2)').textContent = | 209 loadPath.querySelector('span:nth-of-type(2)').textContent = |
| 211 ' ' + extension.path; | 210 ' ' + extension.path; |
| 212 } | 211 } |
| 213 | 212 |
| 214 // Then the 'managed, cannot uninstall/disable' message. | 213 // Then the 'managed, cannot uninstall/disable' message. |
| 215 if (!extension.mayDisable) | 214 if (!extension.userModifiable) |
| 216 node.querySelector('.managed-message').hidden = false; | 215 node.querySelector('.managed-message').hidden = false; |
| 217 | 216 |
| 218 // Then active views. | 217 // Then active views. |
| 219 if (extension.views.length > 0) { | 218 if (extension.views.length > 0) { |
| 220 var activeViews = node.querySelector('.active-views'); | 219 var activeViews = node.querySelector('.active-views'); |
| 221 activeViews.hidden = false; | 220 activeViews.hidden = false; |
| 222 var link = activeViews.querySelector('a'); | 221 var link = activeViews.querySelector('a'); |
| 223 | 222 |
| 224 extension.views.forEach(function(view, i) { | 223 extension.views.forEach(function(view, i) { |
| 225 var label = view.path + | 224 var label = view.path + |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 if (extension.installWarnings) { | 258 if (extension.installWarnings) { |
| 260 var panel = node.querySelector('.install-warnings'); | 259 var panel = node.querySelector('.install-warnings'); |
| 261 panel.hidden = false; | 260 panel.hidden = false; |
| 262 var list = panel.querySelector('ul'); | 261 var list = panel.querySelector('ul'); |
| 263 extension.installWarnings.forEach(function(warning) { | 262 extension.installWarnings.forEach(function(warning) { |
| 264 list.appendChild(document.createElement('li')).innerText = warning; | 263 list.appendChild(document.createElement('li')).innerText = warning; |
| 265 }); | 264 }); |
| 266 } | 265 } |
| 267 | 266 |
| 268 this.appendChild(node); | 267 this.appendChild(node); |
| 269 }, | 268 } |
| 270 }; | 269 }; |
| 271 | 270 |
| 272 return { | 271 return { |
| 273 ExtensionsList: ExtensionsList | 272 ExtensionsList: ExtensionsList |
| 274 }; | 273 }; |
| 275 }); | 274 }); |
| OLD | NEW |