| 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 <include src="extension_error.js"> | 5 <include src="extension_error.js"> |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * The type of the extension data object. The definition is based on | 8 * The type of the extension data object. The definition is based on |
| 9 * chrome/browser/ui/webui/extensions/extension_basic_info.cc | 9 * chrome/browser/ui/webui/extensions/extension_basic_info.cc |
| 10 * and | 10 * and |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 * Returns true if the element should only be shown in developer mode. | 190 * Returns true if the element should only be shown in developer mode. |
| 191 * @param {Element} element | 191 * @param {Element} element |
| 192 * @return {boolean} | 192 * @return {boolean} |
| 193 * @private | 193 * @private |
| 194 */ | 194 */ |
| 195 isDeveloperOption_: function(element) { | 195 isDeveloperOption_: function(element) { |
| 196 return /^dev-/.test(element.getAttribute('column-type')); | 196 return /^dev-/.test(element.getAttribute('column-type')); |
| 197 }, | 197 }, |
| 198 }; | 198 }; |
| 199 | 199 |
| 200 cr.define('options', function() { | 200 cr.define('extensions', function() { |
| 201 'use strict'; | 201 'use strict'; |
| 202 | 202 |
| 203 /** | 203 /** |
| 204 * Creates a new list of extensions. | 204 * Creates a new list of extensions. |
| 205 * @param {Object=} opt_propertyBag Optional properties. | 205 * @param {Object=} opt_propertyBag Optional properties. |
| 206 * @constructor | 206 * @constructor |
| 207 * @extends {HTMLDivElement} | 207 * @extends {HTMLDivElement} |
| 208 */ | 208 */ |
| 209 var ExtensionsList = cr.ui.define('div'); | 209 var ExtensionList = cr.ui.define('div'); |
| 210 | 210 |
| 211 /** | 211 /** |
| 212 * @type {Object<string, number>} A map from extension id to last reloaded | 212 * @type {Object<string, number>} A map from extension id to last reloaded |
| 213 * timestamp. The timestamp is recorded when the user click the 'Reload' | 213 * timestamp. The timestamp is recorded when the user click the 'Reload' |
| 214 * link. It is used to refresh the icon of an unpacked extension. | 214 * link. It is used to refresh the icon of an unpacked extension. |
| 215 * This persists between calls to decorate. | 215 * This persists between calls to decorate. |
| 216 */ | 216 */ |
| 217 var extensionReloadedTimestamp = {}; | 217 var extensionReloadedTimestamp = {}; |
| 218 | 218 |
| 219 ExtensionsList.prototype = { | 219 ExtensionList.prototype = { |
| 220 __proto__: HTMLDivElement.prototype, | 220 __proto__: HTMLDivElement.prototype, |
| 221 | 221 |
| 222 /** | 222 /** |
| 223 * Indicates whether an embedded options page that was navigated to through | 223 * Indicates whether an embedded options page that was navigated to through |
| 224 * the '?options=' URL query has been shown to the user. This is necessary | 224 * the '?options=' URL query has been shown to the user. This is necessary |
| 225 * to prevent showExtensionNodes_ from opening the options more than once. | 225 * to prevent showExtensionNodes_ from opening the options more than once. |
| 226 * @type {boolean} | 226 * @type {boolean} |
| 227 * @private | 227 * @private |
| 228 */ | 228 */ |
| 229 optionsShown_: false, | 229 optionsShown_: false, |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 e.preventDefault(); | 442 e.preventDefault(); |
| 443 }); | 443 }); |
| 444 | 444 |
| 445 // 'Remove' button. | 445 // 'Remove' button. |
| 446 var trashTemplate = $('template-collection').querySelector('.trash'); | 446 var trashTemplate = $('template-collection').querySelector('.trash'); |
| 447 var trash = trashTemplate.cloneNode(true); | 447 var trash = trashTemplate.cloneNode(true); |
| 448 trash.title = loadTimeData.getString('extensionUninstall'); | 448 trash.title = loadTimeData.getString('extensionUninstall'); |
| 449 trash.hidden = extension.managedInstall; | 449 trash.hidden = extension.managedInstall; |
| 450 trash.setAttribute('column-type', 'trash'); | 450 trash.setAttribute('column-type', 'trash'); |
| 451 trash.addEventListener('click', function(e) { | 451 trash.addEventListener('click', function(e) { |
| 452 trash.classList.add('open'); |
| 453 trash.classList.toggle('mouse-clicked', e.detail > 0); |
| 452 chrome.send('extensionSettingsUninstall', [extension.id]); | 454 chrome.send('extensionSettingsUninstall', [extension.id]); |
| 453 }); | 455 }); |
| 454 row.querySelector('.enable-controls').appendChild(trash); | 456 row.querySelector('.enable-controls').appendChild(trash); |
| 455 | 457 |
| 456 // Developer mode //////////////////////////////////////////////////////// | 458 // Developer mode //////////////////////////////////////////////////////// |
| 457 | 459 |
| 458 // The path, if provided by unpacked extension. | 460 // The path, if provided by unpacked extension. |
| 459 row.setupColumn('.load-path a:first-of-type', 'dev-loadPath', 'click', | 461 row.setupColumn('.load-path a:first-of-type', 'dev-loadPath', 'click', |
| 460 function(e) { | 462 function(e) { |
| 461 chrome.send('extensionSettingsShowPath', [String(extension.id)]); | 463 chrome.send('extensionSettingsShowPath', [String(extension.id)]); |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 self.optionsShown_ = false; | 877 self.optionsShown_ = false; |
| 876 $('overlay').removeEventListener('cancelOverlay', f); | 878 $('overlay').removeEventListener('cancelOverlay', f); |
| 877 }); | 879 }); |
| 878 | 880 |
| 879 // TODO(dbeam): why do we need to focus <extensionoptions> before and | 881 // TODO(dbeam): why do we need to focus <extensionoptions> before and |
| 880 // after its showing animation? Makes very little sense to me. | 882 // after its showing animation? Makes very little sense to me. |
| 881 overlay.setInitialFocus(); | 883 overlay.setInitialFocus(); |
| 882 }, | 884 }, |
| 883 }; | 885 }; |
| 884 | 886 |
| 887 ExtensionList.uninstallCancel = function() { |
| 888 var trash = document.querySelector('.trash.open'); |
| 889 if (trash.classList.contains('mouse-clicked')) |
| 890 trash.blur(); |
| 891 trash.classList.remove('open'); |
| 892 }; |
| 893 |
| 885 return { | 894 return { |
| 886 ExtensionsList: ExtensionsList | 895 ExtensionList: ExtensionList |
| 887 }; | 896 }; |
| 888 }); | 897 }); |
| OLD | NEW |