Chromium Code Reviews| Index: chrome/browser/resources/extensions/extensions.js |
| diff --git a/chrome/browser/resources/extensions/extensions.js b/chrome/browser/resources/extensions/extensions.js |
| index e6dceddbbc59a068aa8895b9f9272706c93581df..a865028cd0dec483e6e1f61ad0cb148b6186a56a 100644 |
| --- a/chrome/browser/resources/extensions/extensions.js |
| +++ b/chrome/browser/resources/extensions/extensions.js |
| @@ -18,18 +18,6 @@ |
| <include src="chromeos/kiosk_apps.js"> |
| </if> |
| -/** |
| - * The type of the extension data object. The definition is based on |
| - * chrome/browser/ui/webui/extensions/extension_settings_handler.cc: |
| - * ExtensionSettingsHandler::HandleRequestExtensionsData() |
| - * @typedef {{developerMode: boolean, |
| - * enableAppInfoDialog: boolean, |
| - * incognitoAvailable: boolean, |
| - * loadUnpackedDisabled: boolean, |
| - * profileIsSupervised: boolean}} |
| - */ |
| -var ExtensionDataResponse; |
| - |
| // Used for observing function of the backend datasource for this page by |
| // tests. |
| var webuiResponded = false; |
| @@ -150,17 +138,15 @@ cr.define('extensions', function() { |
| var wrapper = $('extension-list-wrapper'); |
| wrapper.insertBefore(extensionList, wrapper.firstChild); |
| - // This will request the data to show on the page and will get a response |
| - // back in returnExtensionsData. |
| - chrome.send('extensionSettingsRequestExtensionsData'); |
| + this.update_(); |
| var extensionLoader = extensions.ExtensionLoader.getInstance(); |
| $('toggle-dev-on').addEventListener('change', function(e) { |
| this.updateDevControlsVisibility_(true); |
| extensionList.updateFocusableElements(); |
| - chrome.send('extensionSettingsToggleDeveloperMode', |
| - [$('toggle-dev-on').checked]); |
| + chrome.developerPrivate.updateProfileConfiguration( |
| + {inDeveloperMode: e.target.checked}); |
| }.bind(this)); |
| window.addEventListener('resize', function() { |
| @@ -226,6 +212,57 @@ cr.define('extensions', function() { |
| }, |
| /** |
| + * Updates the extensions page to the latest profile and extensions |
| + * configuration. |
| + * @private |
| + */ |
| + update_: function() { |
| + chrome.developerPrivate.getProfileConfiguration( |
| + this.returnProfileConfiguration_.bind(this)); |
| + }, |
| + |
| + /** |
| + * [Re]-Populates the page with data representing the current state of |
| + * installed extensions. |
| + * @param {ProfileInfo} profileInfo |
| + * @private |
| + */ |
| + returnProfileConfiguration_: function(profileInfo) { |
| + webuiResponded = true; |
| + var supervised = profileInfo.isSupervised; |
|
Dan Beam
2015/04/10 02:48:06
nit: when it fits: /** @const */
Devlin
2015/04/10 16:30:38
Done.
|
| + |
| + var pageDiv = $('extension-settings'); |
| + pageDiv.classList.toggle('profile-is-supervised', supervised); |
| + pageDiv.classList.toggle('showing-banner', supervised); |
| + |
| + var devControlsCheckbox = $('toggle-dev-on'); |
| + devControlsCheckbox.checked = profileInfo.inDeveloperMode; |
| + devControlsCheckbox.disabled = supervised; |
| + |
| + this.updateDevControlsVisibility_(false); |
| + |
| + $('load-unpacked').disabled = !profileInfo.canLoadUnpacked; |
| + var extensionList = $('extension-settings-list'); |
| + extensionList.updateExtensionsData( |
| + profileInfo.isIncognitoAvailable, |
| + profileInfo.appInfoDialogEnabled).then(function() { |
| + // We can get called many times in short order, thus we need to |
| + // be careful to remove the 'finished loading' timeout. |
| + if (this.loadingTimeout_) |
| + window.clearTimeout(this.loadingTimeout_); |
| + document.documentElement.classList.add('loading'); |
| + this.loadingTimeout_ = window.setTimeout(function() { |
| + document.documentElement.classList.remove('loading'); |
| + }, 0); |
| + |
| + var hasExtensions = extensionList.getNumExtensions() != 0; |
| + $('no-extensions').hidden = hasExtensions; |
| + $('extension-list-wrapper').hidden = !hasExtensions; |
| + $('extension-settings-list').updateFocusableElements(); |
| + }.bind(this)); |
| + }, |
| + |
| + /** |
| * Handles the Pack Extension button. |
| * @param {Event} e Change event. |
| * @private |
| @@ -291,44 +328,8 @@ cr.define('extensions', function() { |
| }, |
| }; |
| - /** |
| - * Called by the dom_ui_ to re-populate the page with data representing |
| - * the current state of installed extensions. |
| - * @param {ExtensionDataResponse} extensionsData |
| - */ |
| - ExtensionSettings.returnExtensionsData = function(extensionsData) { |
| - webuiResponded = true; |
| - |
| - var supervised = extensionsData.profileIsSupervised; |
| - |
| - var pageDiv = $('extension-settings'); |
| - pageDiv.classList.toggle('profile-is-supervised', supervised); |
| - pageDiv.classList.toggle('showing-banner', supervised); |
| - |
| - var devControlsCheckbox = $('toggle-dev-on'); |
| - devControlsCheckbox.checked = extensionsData.developerMode; |
| - devControlsCheckbox.disabled = supervised; |
| - |
| - ExtensionSettings.getInstance().updateDevControlsVisibility_(false); |
| - |
| - $('load-unpacked').disabled = extensionsData.loadUnpackedDisabled; |
| - var extensionList = $('extension-settings-list'); |
| - extensionList.updateExtensionsData( |
| - extensionsData.incognitoAvailable, |
| - extensionsData.enableAppInfoDialog).then(function() { |
| - // We can get called many times in short order, thus we need to |
| - // be careful to remove the 'finished loading' timeout. |
| - if (this.loadingTimeout_) |
| - window.clearTimeout(this.loadingTimeout_); |
| - this.loadingTimeout_ = window.setTimeout(function() { |
| - document.documentElement.classList.remove('loading'); |
| - }, 0); |
| - |
| - var hasExtensions = extensionList.getNumExtensions() != 0; |
| - $('no-extensions').hidden = hasExtensions; |
| - $('extension-list-wrapper').hidden = !hasExtensions; |
| - $('extension-settings-list').updateFocusableElements(); |
| - }.bind(this)); |
| + ExtensionSettings.onExtensionsChanged = function() { |
| + ExtensionSettings.getInstance().update_(); |
| }; |
| /** |