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

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: 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.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
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
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
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 });
OLDNEW
« no previous file with comments | « chrome/browser/extensions/test_management_policy.cc ('k') | chrome/browser/ui/views/ash/app_list/extension_app_item.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698