* dependentExtensions: Array,
* description: string,
* detailsUrl: string,
+ * enableExtensionInfoDialog: boolean,
* enable_show_button: boolean,
* enabled: boolean,
* enabledIncognito: boolean,
* manifestErrors: (Array.<RuntimeError>|undefined),
* name: string,
* offlineEnabled: boolean,
+ * optionsOpenInTab: boolean,
+ * optionsPageHref: string,
* optionsUrl: string,
* order: number,
* packagedApp: boolean,
* path: (string|undefined),
* prettifiedPath: (string|undefined),
+ * recommendedInstall: boolean,
* runtimeErrors: (Array.<RuntimeError>|undefined),
* suspiciousInstall: boolean,
* terminated: boolean,
extension.dependentExtensions.length > 0) {
node.classList.add('may-not-modify');
node.classList.add('may-not-remove');
+ } else if (extension.recommendedInstall) {
+ node.classList.add('may-not-remove');
} else if (extension.suspiciousInstall || extension.corruptInstall) {
node.classList.add('may-not-modify');
}
fileAccess.hidden = false;
}
- // The 'Options' link.
+ // The 'Options' button or link, depending on its behaviour.
if (extension.enabled && extension.optionsUrl) {
- var options = node.querySelector('.options-link');
- options.addEventListener('click', function(e) {
- if (!extension.optionsOpenInTab) {
- this.showEmbeddedExtensionOptions_(extension.id, false);
- } else {
+ var options, optionsClickListener;
+ if (extension.optionsOpenInTab) {
+ options = node.querySelector('.options-link');
+ // Set an href to get the correct mouse-over appearance (link,
+ // footer) - but the actual link opening is done through chrome.send
+ // with a preventDefault().
+ options.setAttribute('href', extension.optionsPageHref);
+ optionsClickListener = function() {
chrome.send('extensionSettingsOptions', [extension.id]);
- }
+ };
+ } else {
+ options = node.querySelector('.options-button');
+ optionsClickListener = function() {
+ this.showEmbeddedExtensionOptions_(extension.id, false);
+ }.bind(this);
+ }
+ options.addEventListener('click', function(e) {
+ optionsClickListener();
e.preventDefault();
- }.bind(this));
+ });
options.hidden = false;
}
});
// The 'View in Web Store/View Web Site' link.
- if (extension.homepageUrl) {
+ if (extension.homepageUrl && !extension.enableExtensionInfoDialog) {
var siteLink = node.querySelector('.site-link');
siteLink.href = extension.homepageUrl;
siteLink.textContent = loadTimeData.getString(
}
// Then the 'managed, cannot uninstall/disable' message.
- if (extension.managedInstall) {
+ if (extension.managedInstall || extension.recommendedInstall) {
node.querySelector('.managed-message').hidden = false;
} else {
if (extension.suspiciousInstall) {
// Get the extension from the given id.
var extension = this.data_.extensions.filter(function(extension) {
- return extension.id == extensionId;
+ return extension.enabled && extension.id == extensionId;
})[0];
if (!extension)