| Index: chrome/browser/resources/options/extension_settings.js
|
| ===================================================================
|
| --- chrome/browser/resources/options/extension_settings.js (revision 0)
|
| +++ chrome/browser/resources/options/extension_settings.js (revision 0)
|
| @@ -0,0 +1,179 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +cr.define('options', function() {
|
| + var OptionsPage = options.OptionsPage;
|
| + var ExtensionsList = options.ExtensionsList;
|
| +
|
| + /**
|
| + * ExtensionSettings class
|
| + * Encapsulated handling of the 'Manage Extensions' page.
|
| + * @class
|
| + */
|
| + function ExtensionSettings() {
|
| + OptionsPage.call(this,
|
| + 'extensionSettings',
|
| + templateData.extensionSettingsTitle,
|
| + 'extension-settings');
|
| + }
|
| +
|
| + cr.addSingletonGetter(ExtensionSettings);
|
| +
|
| + ExtensionSettings.prototype = {
|
| + __proto__: OptionsPage.prototype,
|
| +
|
| + /**
|
| + * Initialize the page.
|
| + */
|
| + initializePage: function() {
|
| + OptionsPage.prototype.initializePage.call(this);
|
| +
|
| + // This will request the data to show on the page and will get a response
|
| + // back in returnExtensionsData.
|
| + chrome.send('extensionSettingsRequestExtensionsData');
|
| +
|
| + // Set up the developer mode button.
|
| + var toggleDevMode = $('toggle-dev-on');
|
| + toggleDevMode.addEventListener('click',
|
| + this.handleToggleDevMode_.bind(this));
|
| +
|
| + // Setup the gallery related links and text.
|
| + $('suggest-gallery').innerHTML =
|
| + localStrings.getString('extensionSettingsSuggestGallery');
|
| + $('get-more-extensions').innerHTML =
|
| + localStrings.getString('extensionSettingsGetMoreExtensions');
|
| +
|
| + // Set up the three dev mode buttons (load unpacked, pack and update).
|
| + $('load-unpacked').addEventListener('click',
|
| + this.handleLoadUnpackedExtension_.bind(this));
|
| + $('pack-extension').addEventListener('click',
|
| + this.handlePackExtension_.bind(this));
|
| + $('update-extensions-now').addEventListener('click',
|
| + this.handleUpdateExtensionNow_.bind(this));
|
| + },
|
| +
|
| + /**
|
| + * Utility function which asks the C++ to show a platform-specific file
|
| + * select dialog, and fire |callback| with the |filePath| that resulted.
|
| + * |selectType| can be either 'file' or 'folder'. |operation| can be 'load',
|
| + * 'packRoot', or 'pem' which are signals to the C++ to do some
|
| + * operation-specific configuration.
|
| + * @private
|
| + */
|
| + showFileDialog_: function(selectType, operation, callback) {
|
| + handleFilePathSelected = function(filePath) {
|
| + callback(filePath);
|
| + handleFilePathSelected = function() {};
|
| + };
|
| +
|
| + chrome.send('extensionSettingsSelectFilePath', [selectType, operation]);
|
| + },
|
| +
|
| + /**
|
| + * Handles the Load Unpacked Extension button.
|
| + * @param {Event} e Change event.
|
| + * @private
|
| + */
|
| + handleLoadUnpackedExtension_: function(e) {
|
| + this.showFileDialog_('folder', 'load', function(filePath) {
|
| + chrome.send('extensionSettingsLoad', [String(filePath)]);
|
| + });
|
| +
|
| + chrome.send('coreOptionsUserMetricsAction',
|
| + ['Options_LoadUnpackedExtension']);
|
| + },
|
| +
|
| + /**
|
| + * Handles the Pack Extension button.
|
| + * @param {Event} e Change event.
|
| + * @private
|
| + */
|
| + handlePackExtension_: function(e) {
|
| + OptionsPage.navigateToPage('packExtensionOverlay');
|
| + chrome.send('coreOptionsUserMetricsAction', ['Options_PackExtension']);
|
| + },
|
| +
|
| + /**
|
| + * Handles the Update Extension Now button.
|
| + * @param {Event} e Change event.
|
| + * @private
|
| + */
|
| + handleUpdateExtensionNow_: function(e) {
|
| + chrome.send('extensionSettingsAutoupdate', []);
|
| + },
|
| +
|
| + /**
|
| + * Handles the Toggle Dev Mode button.
|
| + * @param {Event} e Change event.
|
| + * @private
|
| + */
|
| + handleToggleDevMode_: function(e) {
|
| + var dev = $('dev');
|
| + if (!dev.classList.contains('dev-open')) {
|
| + // Make the Dev section visible.
|
| + dev.classList.add('dev-open');
|
| + dev.classList.remove('dev-closed');
|
| +
|
| + $('load-unpacked').classList.add('dev-button-visible');
|
| + $('load-unpacked').classList.remove('dev-button-hidden');
|
| + $('pack-extension').classList.add('dev-button-visible');
|
| + $('pack-extension').classList.remove('dev-button-hidden');
|
| + $('update-extensions-now').classList.add('dev-button-visible');
|
| + $('update-extensions-now').classList.remove('dev-button-hidden');
|
| + } else {
|
| + // Hide the Dev section.
|
| + dev.classList.add('dev-closed');
|
| + dev.classList.remove('dev-open');
|
| +
|
| + $('load-unpacked').classList.add('dev-button-hidden');
|
| + $('load-unpacked').classList.remove('dev-button-visible');
|
| + $('pack-extension').classList.add('dev-button-hidden');
|
| + $('pack-extension').classList.remove('dev-button-visible');
|
| + $('update-extensions-now').classList.add('dev-button-hidden');
|
| + $('update-extensions-now').classList.remove('dev-button-visible');
|
| + }
|
| +
|
| + chrome.send('extensionSettingsToggleDeveloperMode', []);
|
| + },
|
| + };
|
| +
|
| + /**
|
| + * Called by the dom_ui_ to re-populate the page with data representing
|
| + * the current state of installed extensions.
|
| + */
|
| + ExtensionSettings.returnExtensionsData = function(extensionsData) {
|
| + $('no-extensions').hidden = true;
|
| + $('suggest-gallery').hidden = true;
|
| + $('get-more-extensions-container').hidden = true;
|
| +
|
| + if (extensionsData.extensions.length > 0) {
|
| + // Enforce order specified in the data or (if equal) then sort by
|
| + // extension name (case-insensitive).
|
| + extensionsData.extensions.sort(function(a, b) {
|
| + if (a.order == b.order) {
|
| + a = a.name.toLowerCase();
|
| + b = b.name.toLowerCase();
|
| + return a < b ? -1 : (a > b ? 1 : 0);
|
| + } else {
|
| + return a.order < b.order ? -1 : 1;
|
| + }
|
| + });
|
| +
|
| + $('get-more-extensions-container').hidden = false;
|
| + } else {
|
| + $('no-extensions').hidden = false;
|
| + $('suggest-gallery').hidden = false;
|
| + }
|
| +
|
| + ExtensionsList.prototype.data_ = extensionsData;
|
| +
|
| + var extensionList = $('extension-settings-list');
|
| + ExtensionsList.decorate(extensionList);
|
| + }
|
| +
|
| + // Export
|
| + return {
|
| + ExtensionSettings: ExtensionSettings
|
| + };
|
| +});
|
|
|
| Property changes on: chrome\browser\resources\options\extension_settings.js
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|