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

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

Issue 7864029: Fix crash in extension settings when trying to enable/disable a crashed extension. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 /** 6 /**
7 * Creates a new list of extensions. 7 * Creates a new list of extensions.
8 * @param {Object=} opt_propertyBag Optional properties. 8 * @param {Object=} opt_propertyBag Optional properties.
9 * @constructor 9 * @constructor
10 * @extends {cr.ui.div} 10 * @extends {cr.ui.div}
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 title.classList.add('extension-title'); 177 title.classList.add('extension-title');
178 title.textContent = extension.name; 178 title.textContent = extension.name;
179 vbox.appendChild(title); 179 vbox.appendChild(title);
180 180
181 // Followed by version. 181 // Followed by version.
182 var version = this.ownerDocument.createElement('span'); 182 var version = this.ownerDocument.createElement('span');
183 version.classList.add('extension-version'); 183 version.classList.add('extension-version');
184 version.textContent = extension.version; 184 version.textContent = extension.version;
185 vbox.appendChild(version); 185 vbox.appendChild(version);
186 186
187 // And the additional info label (unpacked/crashed).
188 if (extension.terminated || extension.isUnpacked) {
189 var version = this.ownerDocument.createElement('span');
190 version.classList.add('extension-version');
191 version.textContent = extension.terminated ?
192 localStrings.getString('extensionSettingsCrashMessage') :
193 localStrings.getString('extensionSettingsInDevelopment');
194 vbox.appendChild(version);
195 }
196
187 div = this.ownerDocument.createElement('div'); 197 div = this.ownerDocument.createElement('div');
188 vbox.appendChild(div); 198 vbox.appendChild(div);
189 199
190 // And below that we have description (if provided). 200 // And below that we have description (if provided).
191 if (extension.description.length > 0) { 201 if (extension.description.length > 0) {
192 var description = this.ownerDocument.createElement('span'); 202 var description = this.ownerDocument.createElement('span');
193 description.classList.add('extension-description'); 203 description.classList.add('extension-description');
194 description.textContent = extension.description; 204 description.textContent = extension.description;
195 vbox.appendChild(description); 205 vbox.appendChild(description);
196 } 206 }
(...skipping 27 matching lines...) Expand all
224 this.decorateDetailsSection_(details, extension, expanded, butterbar); 234 this.decorateDetailsSection_(details, extension, expanded, butterbar);
225 235
226 // And on the right of the details we have the Enable/Enabled checkbox. 236 // And on the right of the details we have the Enable/Enabled checkbox.
227 div = this.ownerDocument.createElement('div'); 237 div = this.ownerDocument.createElement('div');
228 hbox.appendChild(div); 238 hbox.appendChild(div);
229 239
230 var section = this.ownerDocument.createElement('section'); 240 var section = this.ownerDocument.createElement('section');
231 section.classList.add('extension-enabling'); 241 section.classList.add('extension-enabling');
232 div.appendChild(section); 242 div.appendChild(section);
233 243
234 // The Enable checkbox. 244 if (!extension.terminated) {
235 var input = this.ownerDocument.createElement('input'); 245 // The Enable checkbox.
236 input.addEventListener('click', this.handleEnable_.bind(this)); 246 var input = this.ownerDocument.createElement('input');
237 input.type = 'checkbox'; 247 input.addEventListener('click', this.handleEnable_.bind(this));
238 input.name = 'toggle-' + id; 248 input.type = 'checkbox';
239 if (!extension.mayDisable) 249 input.name = 'toggle-' + id;
240 input.disabled = true; 250 if (!extension.mayDisable)
241 if (extension.enabled) 251 input.disabled = true;
242 input.checked = true; 252 if (extension.enabled)
243 input.id = 'toggle-' + id; 253 input.checked = true;
244 section.appendChild(input); 254 input.id = 'toggle-' + id;
245 var label = this.ownerDocument.createElement('label'); 255 section.appendChild(input);
246 label.classList.add('extension-enabling-label'); 256 var label = this.ownerDocument.createElement('label');
247 if (extension.enabled) 257 label.classList.add('extension-enabling-label');
248 label.classList.add('extension-enabling-label-bold'); 258 if (extension.enabled)
249 label.setAttribute('for', 'toggle-' + id); 259 label.classList.add('extension-enabling-label-bold');
250 label.id = 'toggle-' + id + '-label'; 260 label.setAttribute('for', 'toggle-' + id);
251 if (extension.enabled) { 261 label.id = 'toggle-' + id + '-label';
252 // Enabled (with a d). 262 if (extension.enabled) {
253 label.textContent = 263 // Enabled (with a d).
254 localStrings.getString('extensionSettingsEnabled'); 264 label.textContent =
265 localStrings.getString('extensionSettingsEnabled');
266 } else {
267 // Enable (no d).
268 label.textContent =
269 localStrings.getString('extensionSettingsEnable');
270 }
271 section.appendChild(label);
272
273 if (label.offsetWidth > maxCheckboxWidth)
274 maxCheckboxWidth = label.offsetWidth;
275 if (label.offsetWidth < minCheckboxWidth)
276 minCheckboxWidth = label.offsetWidth;
255 } else { 277 } else {
256 // Enable (no d). 278 // Extension has been terminated, show a Reload link.
257 label.textContent = localStrings.getString('extensionSettingsEnable'); 279 var link = this.ownerDocument.createElement('a');
280 link.classList.add('extension-links-trailing');
281 link.id = extension.id;
282 link.textContent =
283 localStrings.getString('extensionSettingsReload');
284 link.href = '#';
285 link.addEventListener('click', this.handleReload_.bind(this));
286 section.appendChild(link);
258 } 287 }
259 section.appendChild(label);
260
261 if (label.offsetWidth > maxCheckboxWidth)
262 maxCheckboxWidth = label.offsetWidth;
263 if (label.offsetWidth < minCheckboxWidth)
264 minCheckboxWidth = label.offsetWidth;
265 288
266 // And, on the far right we have the uninstall button. 289 // And, on the far right we have the uninstall button.
267 var button = this.ownerDocument.createElement('button'); 290 var button = this.ownerDocument.createElement('button');
268 button.classList.add('extension-delete'); 291 button.classList.add('extension-delete');
269 button.id = id; 292 button.id = id;
270 if (!extension.mayDisable) 293 if (!extension.mayDisable)
271 button.disabled = true; 294 button.disabled = true;
272 button.textContent = localStrings.getString('extensionSettingsRemove'); 295 button.textContent = localStrings.getString('extensionSettingsRemove');
273 button.addEventListener('click', this.handleUninstall_.bind(this)); 296 button.addEventListener('click', this.handleUninstall_.bind(this));
274 hbox.appendChild(button); 297 hbox.appendChild(button);
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 ]); 688 ]);
666 } 689 }
667 } 690 }
668 }, 691 },
669 }; 692 };
670 693
671 return { 694 return {
672 ExtensionsList: ExtensionsList 695 ExtensionsList: ExtensionsList
673 }; 696 };
674 }); 697 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698