Chromium Code Reviews| 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.mayModifySettings) |
| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 149 | 148 |
| 150 // The 'Reload' checkbox. | 149 // The 'Reload' checkbox. |
| 151 if (extension.allow_reload) { | 150 if (extension.allow_reload) { |
| 152 var reload = node.querySelector('.reload-link'); | 151 var reload = node.querySelector('.reload-link'); |
| 153 reload.addEventListener('click', function(e) { | 152 reload.addEventListener('click', function(e) { |
| 154 chrome.send('extensionSettingsReload', [extension.id]); | 153 chrome.send('extensionSettingsReload', [extension.id]); |
| 155 }); | 154 }); |
| 156 reload.hidden = false; | 155 reload.hidden = false; |
| 157 } | 156 } |
| 158 | 157 |
| 158 // Disable optional controls if they cannot be used. | |
| 159 node.querySelector('.optional-controls').hidden = | |
| 160 !extension.mayModifySettings; | |
|
Evan Stade
2012/05/30 21:20:01
.may-not-disable .optional-controls {
display: n
| |
| 161 | |
| 159 if (!extension.terminated) { | 162 if (!extension.terminated) { |
| 160 // The 'Enabled' checkbox. | 163 // The 'Enabled' checkbox. |
| 161 var enable = node.querySelector('.enable-checkbox'); | 164 var enable = node.querySelector('.enable-checkbox'); |
| 162 enable.hidden = false; | 165 enable.hidden = false; |
| 163 enable.querySelector('input').disabled = !extension.mayDisable; | 166 enable.querySelector('input').disabled = !extension.mayModifySettings; |
| 164 | 167 |
| 165 if (extension.mayDisable) { | 168 if (extension.mayModifySettings) { |
| 166 enable.addEventListener('click', function(e) { | 169 enable.addEventListener('click', function(e) { |
| 167 chrome.send('extensionSettingsEnable', | 170 chrome.send('extensionSettingsEnable', |
| 168 [extension.id, e.target.checked ? 'true' : 'false']); | 171 [extension.id, e.target.checked ? 'true' : 'false']); |
| 169 }); | 172 }); |
| 170 } | 173 } |
| 171 | 174 |
| 172 enable.querySelector('input').checked = extension.enabled; | 175 enable.querySelector('input').checked = extension.enabled; |
| 173 } else { | 176 } else { |
| 174 var terminated_reload = node.querySelector('.terminated-reload-link'); | 177 var terminated_reload = node.querySelector('.terminated-reload-link'); |
| 175 terminated_reload.hidden = false; | 178 terminated_reload.hidden = false; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 195 | 198 |
| 196 // Then the path, if provided by unpacked extension. | 199 // Then the path, if provided by unpacked extension. |
| 197 if (extension.isUnpacked) { | 200 if (extension.isUnpacked) { |
| 198 var loadPath = node.querySelector('.load-path'); | 201 var loadPath = node.querySelector('.load-path'); |
| 199 loadPath.hidden = false; | 202 loadPath.hidden = false; |
| 200 loadPath.querySelector('span:nth-of-type(2)').textContent = | 203 loadPath.querySelector('span:nth-of-type(2)').textContent = |
| 201 ' ' + extension.path; | 204 ' ' + extension.path; |
| 202 } | 205 } |
| 203 | 206 |
| 204 // Then the 'managed, cannot uninstall/disable' message. | 207 // Then the 'managed, cannot uninstall/disable' message. |
| 205 if (!extension.mayDisable) | 208 if (!extension.mayModifySettings) |
| 206 node.querySelector('.managed-message').hidden = false; | 209 node.querySelector('.managed-message').hidden = false; |
| 207 | 210 |
| 208 // Then active views. | 211 // Then active views. |
| 209 if (extension.views.length > 0) { | 212 if (extension.views.length > 0) { |
| 210 var activeViews = node.querySelector('.active-views'); | 213 var activeViews = node.querySelector('.active-views'); |
| 211 activeViews.hidden = false; | 214 activeViews.hidden = false; |
| 212 var link = activeViews.querySelector('a'); | 215 var link = activeViews.querySelector('a'); |
| 213 | 216 |
| 214 extension.views.forEach(function(view, i) { | 217 extension.views.forEach(function(view, i) { |
| 215 var label = view.path + | 218 var label = view.path + |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 249 if (extension.installWarnings) { | 252 if (extension.installWarnings) { |
| 250 var panel = node.querySelector('.install-warnings'); | 253 var panel = node.querySelector('.install-warnings'); |
| 251 panel.hidden = false; | 254 panel.hidden = false; |
| 252 var list = panel.querySelector('ul'); | 255 var list = panel.querySelector('ul'); |
| 253 extension.installWarnings.forEach(function(warning) { | 256 extension.installWarnings.forEach(function(warning) { |
| 254 list.appendChild(document.createElement('li')).innerText = warning; | 257 list.appendChild(document.createElement('li')).innerText = warning; |
| 255 }); | 258 }); |
| 256 } | 259 } |
| 257 | 260 |
| 258 this.appendChild(node); | 261 this.appendChild(node); |
| 259 }, | 262 } |
| 260 }; | 263 }; |
| 261 | 264 |
| 262 return { | 265 return { |
| 263 ExtensionsList: ExtensionsList | 266 ExtensionsList: ExtensionsList |
| 264 }; | 267 }; |
| 265 }); | 268 }); |
| OLD | NEW |