diff --git a/browser/app/nsBrowserApp.cpp b/browser/app/nsBrowserApp.cpp index 78cb08a47e3b..54532f7f8e99 100644 --- a/browser/app/nsBrowserApp.cpp +++ b/browser/app/nsBrowserApp.cpp @@ -45,7 +45,7 @@ static const nsXREAppData kAppData = { "Mozilla", - "Firefox", + "Firefox Debug", NS_STRINGIFY(APP_VERSION), NS_STRINGIFY(BUILD_ID), // ec8030f7-c20a-464f-9b0e-13a3a9e97384 diff --git a/browser/app/profile/extensions/Extensions.rdf b/browser/app/profile/extensions/Extensions.rdf index a2a8d97c5077..5b98f5dacefc 100644 --- a/browser/app/profile/extensions/Extensions.rdf +++ b/browser/app/profile/extensions/Extensions.rdf @@ -3,7 +3,6 @@ - - + diff --git a/browser/app/profile/extensions/Makefile.in b/browser/app/profile/extensions/Makefile.in index a3817783132a..7ddb0b96184b 100644 --- a/browser/app/profile/extensions/Makefile.in +++ b/browser/app/profile/extensions/Makefile.in @@ -54,8 +54,6 @@ FILES := $(addprefix $(srcdir)/, $(FILES)) libs:: $(INSTALL) $(FILES) $(DIST)/bin/defaults/profile/extensions - $(INSTALL) $(srcdir)/"installed-extensions.txt" $(DIST)/bin/defaults/profile/extensions install:: $(SYSINSTALL) $(IFLAGS1) $(FILES) $(DESTDIR)$(mozappdir)/defaults/profile/extensions - $(SYSINSTALL) $(IFLAGS1) $(srcdir)/"installed-extensions.txt" $(DESTDIR)$(mozappdir)/defaults/profile/extensions diff --git a/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in b/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in index 5ecc52ec942d..9c9eccc40e17 100644 --- a/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in +++ b/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in @@ -49,7 +49,7 @@ FILES := \ libs:: $(PERL) $(MOZILLA_DIR)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $(srcdir)/install.rdf.in > install.rdf - $(INSTALL) $(FILES) $(DIST)/bin/defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} + $(INSTALL) $(FILES) $(DIST)/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} install:: - $(SYSINSTALL) $(IFLAGS1) $(FILES) $(DESTDIR)$(mozappdir)/defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} + $(SYSINSTALL) $(IFLAGS1) $(FILES) $(DESTDIR)$(mozappdir)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} diff --git a/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in b/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in index 580666907ee1..d25336ace2b2 100644 --- a/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in +++ b/browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in @@ -12,8 +12,8 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - 1.0 - 1.0 + 1.1 + 1.1 diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index acdefd38813f..34e604a94d15 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -66,6 +66,13 @@ pref("update.extensions.enabled", true); pref("update.extensions.wsdl", "chrome://mozapps/locale/extensions/extensions.properties"); pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties"); pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties"); +// Developers can set this to |true| if they are constantly changing files in their +// extensions directory so that the extension system does not constantly think that +// their extensions are being updated and thus reregistered every time the app is +// started. +pref("extensions.ignoreMTimeChanges", false); +// Enables some extra Extension System Logging (can reduce performance) +pref("extensions.logging.enabled", false); // App-specific update preferences pref("app.update.enabled", true); // Whether or not app updates are enabled diff --git a/browser/installer/unix/packages-static b/browser/installer/unix/packages-static index dc7c54a66443..756111927610 100644 --- a/browser/installer/unix/packages-static +++ b/browser/installer/unix/packages-static @@ -24,9 +24,6 @@ bin/defaults/profile/localstore.rdf bin/defaults/profile/prefs.js bin/defaults/profile/search.rdf bin/defaults/profile/mimeTypes.rdf -bin/defaults/profile/extensions/Extensions.rdf -bin/defaults/profile/extensions/installed-extensions.txt -bin/defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf bin/defaults/profile/chrome/* [xpcom] @@ -204,6 +201,7 @@ bin/components/mozgnome.xpt ; [Browser Chrome Files] bin/chrome/browser.jar bin/chrome/classic.jar +bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf bin/chrome/comm.jar bin/chrome/toolkit.jar bin/chrome/toolkit.manifest diff --git a/browser/installer/windows/packages-static b/browser/installer/windows/packages-static index 7bf5df026321..cbbdddedd4fd 100644 --- a/browser/installer/windows/packages-static +++ b/browser/installer/windows/packages-static @@ -23,10 +23,6 @@ bin\defaults\profile\localstore.rdf bin\defaults\profile\prefs.js bin\defaults\profile\search.rdf bin\defaults\profile\mimeTypes.rdf -bin\defaults\profile\extensions\Extensions.rdf -bin\defaults\profile\extensions\installed-extensions.txt -bin\defaults\profile\extensions\{641d8d09-7dda-4850-8228-ac0ab65e2ac9}\install.rdf -bin\defaults\profile\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\install.rdf bin\defaults\profile\chrome\* [xpcom] @@ -199,6 +195,7 @@ bin\components\update.xpt ; [Browser Chrome Files] bin\chrome\browser.jar bin\chrome\classic.jar +bin\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\install.rdf bin\chrome\comm.jar bin\chrome\toolkit.jar bin\chrome\toolkit.manifest diff --git a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd index 1372a7a79813..9e2de292d1b1 100644 --- a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd +++ b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd @@ -46,14 +46,6 @@ - - - - - - - - diff --git a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties index 38213488110b..1143839953f5 100644 --- a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties +++ b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties @@ -8,9 +8,15 @@ restartBeforeEnableMessage=%S will be enabled the next time you restart %S. restartBeforeDisableMessage=%S will be disabled the next time you restart %S. restartBeforeUninstallTitle=Uninstall restartBeforeUninstallMessage=%S will be uninstalled the next time you restart %S. +restartBeforeInstallMessage=%S will be installed the next time you restart %S. +restartBeforeUpgradeMessage=%S will be upgraded the next time you restart %S. queryUninstallExtensionMessage=If you uninstall %S, the functionality it offers will no longer be available. Do you want to uninstall %S? queryUninstallThemeMessage=Do you want to uninstall %S? queryUninstallTitle=Uninstall %S +installSuccess=Install completed successfully +installWaiting=Waiting... +installInstalling=Installing... +droppedInWarning=The following items were found in your Extensions folder. Do you want to install them? extensions.update.url=https://addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS% extensions.getMoreExtensionsURL=https://addons.mozilla.org/extensions/?application=%APPID% @@ -24,8 +30,6 @@ globalItemList=The following items are available to all users. \nYou can start F globalItemListExtensions=\n\nGlobally Available Extensions:\n==============================\n\n globalItemListThemes=\n\nGlobally Available Themes:\n==========================\n\n -installSuccess=Installed Successfully - statusFormatKBKB=#1 of #2 KB statusFormatKBMB=#1 KB of #2 MB statusFormatMBMB=#1 of #2 MB @@ -33,30 +37,27 @@ statusFormatMBMB=#1 of #2 MB disabledObsoleteTitle=Old Extensions disabledObsoleteMessage=Any old extensions that you have installed have been disabled. -theme=Theme -extension=Extension +type-4=Theme +type-2=Extension incompatibleTitle=Incompatible %S incompatibleMsg=%S %S could not be installed because it is not compatible with %S %S. (%S %S will only work with %S versions from %S to %S) -incompatibleMsgSingleAppVersion=%S %S could not be installed because it is not compatible %S %S. (%S %S will only work with %S %S) +incompatibleMsgSingleAppVersion=%S %S could not be installed because it is not compatible with %S %S. (%S %S will only work with %S %S) incompatibleMessageNoApp=%S %S could not be installed because it is not compatible with %S. incompatibleOlder=versions 0.8 or older. incompatibleThemeName=this Theme incompatibleExtension=Disabled - not compatible with %S %S +invalidGUIDMessage="%S" could not be installed because of an error in its Install Manifest ("%S" is not a valid GUID). Please contact the author of this item about the problem. +invalidVersionMessage="%S" could not be installed because of an error in its Install Manifest ("%S" is not a valid Version String). Please contact the author of this item about the problem. missingFileTitle=Missing File missingFileMessage=%S could not load this item because the file %S was missing. missingFileConsoleMessage=Failed to install from %S because %S was not provided at the top level of the jar/xpi file. -malformedMessage=%S could not install this item because "%S" (provided by the item) is malformed. Please contact the author about this problem. +malformedMessage=%S could not install this item because "%S" (provided by the item) is not well-formed or does not exist. Please contact the author about this problem. malformedTitle=Malformed File malformedRegistrationTitle=Chrome Registration Failed -malformedRegistrationMessage=%S could not install this item because of a failure in Chrome Registration. Please contact the author about this problem, or click View Details for more information. -malformedRegistrationConsoleMessage=Chrome Registration failed for Extension '%S' when calling nsIXULChromeRegistry::%S with this chrome path: %S (profile extension = %S). Perhaps this path does not exist within the chrome JAR file, or the contents.rdf file at that location is malformed? -malformedRegistrationDetailsButton=View Details - -invalidVersionMessage=%S could not install "%S" because its version information ("%S") is invalid. Please contact the author about this problem. -invalidVersionTitle=Invalid Version +malformedRegistrationMessage=%S could not install this item because of a failure in Chrome Registration. Please contact the author about this problem.. errorInstallTitle=Error errorInstallMessage=%S could not download the file at \n\n%S\n\nbecause: %S diff --git a/toolkit/locales/en-US/chrome/mozapps/xpinstall/xpinstallConfirm.properties b/toolkit/locales/en-US/chrome/mozapps/xpinstall/xpinstallConfirm.properties index c1903d566e63..ed8e3a46d0e7 100644 --- a/toolkit/locales/en-US/chrome/mozapps/xpinstall/xpinstallConfirm.properties +++ b/toolkit/locales/en-US/chrome/mozapps/xpinstall/xpinstallConfirm.properties @@ -6,4 +6,6 @@ installButtonDisabledLabel=Install (%S) installButtonLabel=Install Now installComplete=Software Installation is complete. You will have to restart %S for changes to take effect. -installCompleteTitle=Installation Complete \ No newline at end of file +installCompleteTitle=Installation Complete + +error-203=Error Installing Item diff --git a/toolkit/mozapps/extensions/content/extensions.css b/toolkit/mozapps/extensions/content/extensions.css index 28b434dbb129..db938cf64ade 100644 --- a/toolkit/mozapps/extensions/content/extensions.css +++ b/toolkit/mozapps/extensions/content/extensions.css @@ -8,60 +8,18 @@ extension { -moz-box-orient: vertical; } -extension[state="waiting"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-waiting"); -} - extension[state="downloading"] { -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-downloading"); } -extension[state="installing"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-installing"); -} - -extension[state="done"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-done"); -} - -extension[toBeDisabled="true"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-tobedisabled"); -} - -extension[toBeEnabled="true"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-tobeenabled"); -} - -extension[toBeInstalled="true"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-tobeinstalled"); -} - -extension[toBeUninstalled="true"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension-tobeuninstalled"); -} - - - extension[itemType="theme"] { -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#theme"); } -extension[itemType="theme"][state="waiting"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#theme-waiting"); -} - extension[itemType="theme"][state="downloading"] { -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#theme-downloading"); } -extension[itemType="theme"][state="installing"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#theme-installing"); -} - -extension[itemType="theme"][state="done"] { - -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#theme-done"); -} - .themePreviewArea { width: 0px; } diff --git a/toolkit/mozapps/extensions/content/extensions.js b/toolkit/mozapps/extensions/content/extensions.js index 06df5d73f493..24d2bd1b1aea 100644 --- a/toolkit/mozapps/extensions/content/extensions.js +++ b/toolkit/mozapps/extensions/content/extensions.js @@ -19,7 +19,7 @@ # the Initial Developer. All Rights Reserved. # # Contributor(s): -# Ben Goodger +# Ben Goodger # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or @@ -44,8 +44,6 @@ const nsIUpdateItem = Components.interfaces.nsIUpdateItem; var gExtensionManager = null; var gExtensionsView = null; var gWindowState = ""; -var gURIPrefix = ""; // extension or theme prefix -var gDSRoot = ""; // extension or theme root var gGetMoreURL = ""; var gCurrentTheme = ""; var gDownloadManager = null; @@ -61,33 +59,17 @@ const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; const KEY_DEFAULT_THEME = "classic/1.0"; +const RDFURI_ITEM_ROOT = "urn:mozilla:item:root"; +const PREFIX_ITEM_URI = "urn:mozilla:item:"; + /////////////////////////////////////////////////////////////////////////////// // Utility Functions -const PREFIX_EXTENSION = "urn:mozilla:extension:"; -const PREFIX_THEME = "urn:mozilla:theme:"; - -function getItemPrefix(aItemType) +function getIDFromResourceURI(aURI) { - var prefix = ""; - if (aItemType & nsIUpdateItem.TYPE_EXTENSION) - prefix = PREFIX_EXTENSION; - else if (aItemType & nsIUpdateItem.TYPE_THEME) - prefix = PREFIX_THEME; - return prefix; -} - -function stripPrefix(aURI, aItemType) -{ - var val = aURI; - if (aItemType == nsIUpdateItem.TYPE_ADDON) - val = stripPrefix(aURI, getItemType(aURI)); - else { - var prefix = getItemPrefix(aItemType); - if (prefix && aURI.substr(0, prefix.length) == prefix) - val = aURI.substr(prefix.length, aURI.length); - } - return val; + if (aURI.substring(0, PREFIX_ITEM_URI.length) == PREFIX_ITEM_URI) + return aURI.substring(PREFIX_ITEM_URI.length); + return aURI; } function openURL(aURL) @@ -124,7 +106,15 @@ function setRestartMessage(aItem) var themeName = aItem.getAttribute("name"); var restartMessage = extensionStrings.formatStringFromName("dssSwitchAfterRestart", [brandShortName], 1); - aItem.setAttribute("creator", restartMessage); + for (var i = 0; i < gExtensionsView.childNodes.length; ++i) { + var item = gExtensionsView.childNodes[i]; + if (item.hasAttribute("oldDescription")) { + item.setAttribute("description", item.getAttribute("oldDescription")); + item.removeAttribute("oldDescription"); + } + } + aItem.setAttribute("oldDescription", aItem.getAttribute("description")); + aItem.setAttribute("description", restartMessage); } /////////////////////////////////////////////////////////////////////////////// @@ -144,9 +134,9 @@ function Startup() gWindowState = window.location.search.substr("?type=".length, window.location.search.length); var isExtensions = gWindowState == "extensions"; - gURIPrefix = isExtensions ? "urn:mozilla:extension:" : "urn:mozilla:theme:"; - gDSRoot = isExtensions ? "urn:mozilla:extension:root" : "urn:mozilla:theme:root"; gItemType = isExtensions ? nsIUpdateItem.TYPE_EXTENSION : nsIUpdateItem.TYPE_THEME; + var typeCondition = document.getElementById("typeCondition"); + typeCondition.setAttribute("object", gItemType); document.documentElement.setAttribute("windowtype", document.documentElement.getAttribute("windowtype") + "-" + gWindowState); @@ -163,7 +153,7 @@ function Startup() // Finally, update the UI. gExtensionsView.database.AddDataSource(gExtensionManager.datasource); - gExtensionsView.setAttribute("ref", gDSRoot); + gExtensionsView.setAttribute("ref", RDFURI_ITEM_ROOT); gExtensionsView.focus(); var pref = Components.classes["@mozilla.org/preferences-service;1"] @@ -171,11 +161,13 @@ function Startup() if (!isExtensions) { gExtensionsView.addEventListener("richview-select", onThemeSelect, false); - if (pref.prefHasUserValue(PREF_GENERAL_SKINS_SELECTEDSKIN)) + if (pref.prefHasUserValue(PREF_EM_LAST_SELECTED_SKIN)) + gCurrentTheme = pref.getCharPref(PREF_EM_LAST_SELECTED_SKIN); + else if (pref.prefHasUserValue(PREF_GENERAL_SKINS_SELECTEDSKIN)) gCurrentTheme = pref.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN); - else + if (!gCurrentTheme) gCurrentTheme = KEY_DEFAULT_THEME; - + var useThemeButton = document.getElementById("useThemeButton"); useThemeButton.hidden = false; @@ -185,15 +177,15 @@ function Startup() var pref = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); if (!pref.getBoolPref(PREF_EXTENSIONS_DSS_ENABLED) && - pref.getBoolPref(PREF_EXTENSIONS_DSS_SWITCHPENDING)) { + pref.getBoolPref(PREF_EXTENSIONS_DSS_SWITCHPENDING) && + pref.prefHasUserValue(PREF_EM_LAST_SELECTED_SKIN)) { var lastSelectedSkin = pref.getCharPref(PREF_EM_LAST_SELECTED_SKIN); for (var i = 0; i < gExtensionsView.childNodes.length; ++i) { var item = gExtensionsView.childNodes[i]; - if (item.getAttribute("internalName") == lastSelectedSkin) { - setRestartMessage(item); + if (item.getAttribute("internalName") == lastSelectedSkin) break; - } } + setRestartMessage(item); } } @@ -333,7 +325,7 @@ XPInstallDownloadManager.prototype = { // gExtensionManager.addDownload(displayName, url, iconURL, type); var item = Components.classes["@mozilla.org/updates/item;1"] .createInstance(Components.interfaces.nsIUpdateItem); - item.init(url, " ", "", "", displayName, -1, url, iconURL, "", type); + item.init(url, " ", "app-profile", "", "", displayName, url, iconURL, "", type); items.push(item); // Advance the enumerator @@ -349,7 +341,7 @@ XPInstallDownloadManager.prototype = { }, ///////////////////////////////////////////////////////////////////////////// - // nsIExtensionDownloadProgressListener + // nsIExtensionDownloadListener onStateChange: function (aURL, aState, aValue) { const nsIXPIProgressDialog = Components.interfaces.nsIXPIProgressDialog; @@ -358,6 +350,11 @@ XPInstallDownloadManager.prototype = { switch (aState) { case nsIXPIProgressDialog.DOWNLOAD_START: element.setAttribute("state", "waiting"); + + var extensionsStrings = document.getElementById("extensionsStrings"); + element.setAttribute("description", + extensionsStrings.getString("installWaiting")); + element.setAttribute("progress", "0"); break; case nsIXPIProgressDialog.DOWNLOAD_DONE: @@ -365,10 +362,17 @@ XPInstallDownloadManager.prototype = { break; case nsIXPIProgressDialog.INSTALL_START: element.setAttribute("state", "installing"); + + var extensionsStrings = document.getElementById("extensionsStrings"); + element.setAttribute("description", + extensionsStrings.getString("installInstalling")); break; case nsIXPIProgressDialog.INSTALL_DONE: dump("*** state change = " + aURL + ", state = " + aState + ", value = " + aValue + "\n"); element.setAttribute("state", "done"); + var extensionsStrings = document.getElementById("extensionsStrings"); + element.setAttribute("description", + extensionsStrings.getString("installSuccess")); var msg; if (aValue != 0) { var xpinstallStrings = document.getElementById("xpinstallStrings"); @@ -392,12 +396,11 @@ XPInstallDownloadManager.prototype = { .getService(Components.interfaces.nsIPromptService); ps.alert(window, title, message); element.setAttribute("status", msg); - } // Remove the dummy, since we installed successfully var type = gWindowState == "extensions" ? nsIUpdateItem.TYPE_EXTENSION : nsIUpdateItem.TYPE_THEME; - gExtensionManager.removeDownload(aURL, type); + gExtensionManager.removeDownload(aURL); break; case nsIXPIProgressDialog.DIALOG_CLOSE: break; @@ -466,7 +469,7 @@ XPInstallDownloadManager.prototype = { // nsISupports QueryInterface: function (aIID) { - if (!aIID.equals(Components.interfaces.nsIExtensionDownloadProgressListener) && + if (!aIID.equals(Components.interfaces.nsIExtensionDownloadListener) && !aIID.equals(Components.interfaces.nsISupports)) throw Components.results.NS_ERROR_NO_INTERFACE; return this; @@ -673,6 +676,17 @@ var gExtensionsDNDObserver = /////////////////////////////////////////////////////////////////////////////// // Command Updating and Command Handlers +function canWriteToLocation(element) +{ + var installLocation = null; + if (element) { + var id = getIDFromResourceURI(element.id) + installLocation = gExtensionManager.getInstallLocation(id); + } + return installLocation ? installLocation.canAccess : false; +} + + var gExtensionsViewController = { supportsCommand: function (aCommand) { @@ -697,7 +711,9 @@ var gExtensionsViewController = { selectedItem.getAttribute("toBeUninstalled") != "true" && selectedItem.getAttribute("optionsURL") != ""; case "cmd_about": - return selectedItem && (selectedItem.disabled ? selectedItem.getAttribute("aboutURL") == "" : true); + return selectedItem && + selectedItem.getAttribute("toBeInstalled") != "true" && + (selectedItem.disabled ? selectedItem.getAttribute("aboutURL") == "" : true); case "cmd_homepage": return selectedItem && selectedItem.getAttribute("homepageURL") != ""; case "cmd_uninstall": @@ -709,12 +725,15 @@ var gExtensionsViewController = { } return selectedItem && selectedItem.getAttribute("toBeUninstalled") != "true" && - selectedItem.getAttribute("locked") != "true"; + selectedItem.getAttribute("toBeInstalled") != "true" && + selectedItem.getAttribute("locked") != "true" && + canWriteToLocation(selectedItem); case "cmd_update": return !selectedItem || (selectedItem && selectedItem.getAttribute("toBeUninstalled") != "true" && - selectedItem.getAttribute("toBeInstalled") != "true"); + selectedItem.getAttribute("toBeInstalled") != "true") && + canWriteToLocation(selectedItem); case "cmd_reallyEnable": // controls whether to show Enable or Disable in extensions' context menu return selectedItem && @@ -730,8 +749,8 @@ var gExtensionsViewController = { case "cmd_disable": return selectedItem && !selectedItem.disabled && - selectedItem.getAttribute("toBeUninstalled") != "true" && - selectedItem.getAttribute("locked") != "true"; + selectedItem.getAttribute("toBeUninstalled") != "true" && + selectedItem.getAttribute("toBeInstalled") != "true"; case "cmd_movetop": return selectedItem && (gExtensionsView.children[0] != selectedItem); case "cmd_moveup": @@ -825,29 +844,29 @@ var gExtensionsViewController = { cmd_movetop: function (aSelectedItem) { var movingID = aSelectedItem.id; - gExtensionManager.moveTop(stripPrefix(movingID, gItemType)); + gExtensionManager.moveTop(getIDFromResourceURI(movingID)); gExtensionsView.selected = document.getElementById(movingID); }, cmd_moveup: function (aSelectedItem) { var movingID = aSelectedItem.id; - gExtensionManager.moveUp(stripPrefix(movingID, gItemType)); + gExtensionManager.moveUp(getIDFromResourceURI(movingID)); gExtensionsView.selected = document.getElementById(movingID); }, cmd_movedn: function (aSelectedItem) { var movingID = aSelectedItem.id; - gExtensionManager.moveDown(stripPrefix(movingID, gItemType)); + gExtensionManager.moveDown(getIDFromResourceURI(movingID)); gExtensionsView.selected = document.getElementById(movingID); }, cmd_update: function (aSelectedItem) { - var id = aSelectedItem ? stripPrefix(aSelectedItem.id, gItemType) : null; + var id = aSelectedItem ? getIDFromResourceURI(aSelectedItem.id) : null; var itemType = gWindowState == "extensions" ? nsIUpdateItem.TYPE_EXTENSION : nsIUpdateItem.TYPE_THEME; - var items = gExtensionManager.getItemList(id, itemType, { }); + var items = id ? [gExtensionManager.getItemForID(id)] : []; var updates = Components.classes["@mozilla.org/updates/update-service;1"] .getService(Components.interfaces.nsIUpdateService); updates.checkForUpdates(items, items.length, itemType, @@ -881,9 +900,7 @@ var gExtensionsViewController = { nextElement = selectedElement.previousSibling; nextElement = nextElement.id; - if (gWindowState == "extensions") - gExtensionManager.uninstallExtension(stripPrefix(selectedID, gItemType)); - else if (gWindowState == "themes") { + if (gWindowState == "themes") { // If the theme being uninstalled is the current theme, we need to reselect // the default. var pref = Components.classes["@mozilla.org/preferences-service;1"] @@ -891,27 +908,20 @@ var gExtensionsViewController = { var currentTheme = pref.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN); if (aSelectedItem.getAttribute("internalName") == currentTheme) this.cmd_useTheme(document.getElementById("urn:mozilla:theme:{972ce4c6-7e08-4474-a285-3208198ce6fd}")); - gExtensionManager.uninstallTheme(stripPrefix(selectedID, gItemType)); - } + gExtensionManager.uninstallItem(getIDFromResourceURI(selectedID)); gExtensionsView.selected = document.getElementById(nextElement); }, cmd_disable: function (aSelectedItem) { - if (gWindowState == "extensions") - gExtensionManager.disableExtension(stripPrefix(aSelectedItem.id, gItemType)); - else - gExtensionManager.disableTheme(stripPrefix(aSelectedItem.id, gItemType)); + gExtensionManager.disableItem(getIDFromResourceURI(aSelectedItem.id)); }, cmd_enable: function (aSelectedItem) { - if (gWindowState == "extensions") - gExtensionManager.enableExtension(stripPrefix(aSelectedItem.id, gItemType)); - else - gExtensionManager.enableTheme(stripPrefix(aSelectedItem.id, gItemType)); + gExtensionManager.enableItem(getIDFromResourceURI(aSelectedItem.id)); #ifdef MOZ_PHOENIX } } diff --git a/toolkit/mozapps/extensions/content/extensions.xml b/toolkit/mozapps/extensions/content/extensions.xml index 1863adf4ebb3..597ab9f72117 100644 --- a/toolkit/mozapps/extensions/content/extensions.xml +++ b/toolkit/mozapps/extensions/content/extensions.xml @@ -72,137 +72,6 @@ - - - - - - - - - - - - - - - - &extensionItem.toBeDisabled.label; - - - - - - "extension-" - - - - - - - - - - - - - - - - - - - &extensionItem.toBeEnabled.label; - - - - - - "extension-" - - - - - - - - - - - - - - - - - - - &extensionItem.toBeInstalled.label; - - - - - - "extension-" - - - - - - - - - - - - - - - - - - - &extensionItem.toBeUninstalled.label; - - - - - - "extension-" - - - - - - - - - - - - - - - - - - - &extensionItem.waiting.label; - - - - - - - "extension-" - - - @@ -228,178 +97,5 @@ - - - - - - - - - - - - - - - - &extensionItem.installing.label; - - - - - - - "extension-" - - - - - - - - - - - - - - - - - - - - - - - - "extension-" - - - - - - - - - - - - - - - - - - - - - - - "extension-" - - - - - - - - - - - - - - - - - - &extensionItem.waiting.label; - - - - - "extension-" - - - - - - - - - - - - - - - - - - - - - - - "extension-" - - - - - - - - - - - - - - - - - - &extensionItem.installing.label; - - - - - "extension-" - - - - - - - - - - - - - - - - - - &extensionItem.done.label; - - - - - "extension-" - - - diff --git a/toolkit/mozapps/extensions/content/extensions.xul b/toolkit/mozapps/extensions/content/extensions.xul index 018c79afb37a..21f98cfe70b6 100644 --- a/toolkit/mozapps/extensions/content/extensions.xul +++ b/toolkit/mozapps/extensions/content/extensions.xul @@ -153,74 +153,77 @@ + + predicate="http://www.mozilla.org/2004/em-rdf#iconURL" + object="?icon"/> + predicate="http://www.mozilla.org/2004/em-rdf#previewImage" + object="?previewImage"/> + predicate="http://www.mozilla.org/2004/em-rdf#optionsURL" + object="?options-url"/> + predicate="http://www.mozilla.org/2004/em-rdf#aboutURL" + object="?about-url"/> + predicate="http://www.mozilla.org/2004/em-rdf#updateURL" + object="?update-url"/> + predicate="http://www.mozilla.org/2004/em-rdf#disabled" + object="?disabled"/> + predicate="http://www.mozilla.org/2004/em-rdf#compatible" + object="?compatible"/> + predicate="http://www.mozilla.org/2004/em-rdf#homepageURL" + object="?homepage-url"/> + predicate="http://www.mozilla.org/2004/em-rdf#description" + object="?description"/> + predicate="http://www.mozilla.org/2004/em-rdf#displayDescription" + object="?displayDescription"/> + predicate="http://www.mozilla.org/2004/em-rdf#locked" + object="?locked"/> + predicate="http://www.mozilla.org/2004/em-rdf#toBeInstalled" + object="?toBeInstalled"/> + predicate="http://www.mozilla.org/2004/em-rdf#toBeUpgraded" + object="?toBeUpgraded"/> + predicate="http://www.mozilla.org/2004/em-rdf#toBeUninstalled" + object="?toBeUninstalled"/> + predicate="http://www.mozilla.org/2004/em-rdf#toBeEnabled" + object="?toBeEnabled"/> + predicate="http://www.mozilla.org/2004/em-rdf#toBeDisabled" + object="?toBeDisabled"/> + predicate="http://www.mozilla.org/2004/em-rdf#internalName" + object="?internalName"/> + predicate="http://www.mozilla.org/2004/em-rdf#downloadURL" + object="?downloadURL"/> + predicate="http://www.mozilla.org/2004/em-rdf#state" + object="?state"/> + predicate="http://www.mozilla.org/2004/em-rdf#progress" + object="?progress"/> + predicate="http://www.mozilla.org/2004/em-rdf#status" + object="?status"/> + predicate="http://www.mozilla.org/2004/em-rdf#hidden" + object="?hidden"/>