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

Side by Side Diff: chrome/browser/resources/extensions/extension_list.js

Issue 10382149: Refactor the various ways to control what users can do to extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Updated checkout Created 8 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 | Annotate | Revision Log
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 '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
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
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
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
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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698