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

Unified Diff: chrome/browser/resources/options/extension_settings.js

Issue 7794023: Convert chrome://extensions to a settings page within the options pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698