--- mozilla/browser/app/profile/firefox.js.extensions-dir 2006-10-28 23:59:07 +0400 +++ mozilla/browser/app/profile/firefox.js 2006-10-29 00:18:28 +0400 @@ -53,16 +53,21 @@ pref("general.startup.browser", true); pref("browser.chromeURL","chrome://browser/content/"); pref("browser.hiddenWindowChromeURL", "chrome://browser/content/hiddenWindow.xul"); pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul"); pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul"); pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul"); pref("xpinstall.dialog.progress.type.skin", "Extension:Manager"); pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager"); +#ifdef XP_UNIX +// XXXlegion: ALTLinux specific option +pref("extensions.dir.extensions", "/usr/share/@MOZ_APP_NAME@/extensions"); +#endif + // 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); // Hides the install button in the add-ons mgr --- mozilla/browser/app/Makefile.in.extensions-dir 2006-10-28 22:56:48 +0400 +++ mozilla/browser/app/Makefile.in 2006-10-29 00:19:19 +0400 @@ -55,16 +55,17 @@ PREF_JS_EXPORTS = $(srcdir)/profile/fire ifndef MOZ_BRANDING_DIRECTORY PREF_JS_EXPORTS += $(srcdir)/firefox-branding.js endif # hardcode en-US for the moment AB_CD = en-US DEFINES += -DAB_CD=$(AB_CD) +DEFINES += -DMOZ_APP_NAME=$(MOZ_APP_NAME) -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) ifeq ($(USE_SHORT_LIBNAME), 1) PROGRAM = firefox$(BIN_SUFFIX) else PROGRAM = firefox-bin$(BIN_SUFFIX) endif REQUIRES = \ --- mozilla/toolkit/mozapps/extensions/src/nsExtensionManager.js.in.extensions-dir 2006-10-28 22:56:48 +0400 +++ mozilla/toolkit/mozapps/extensions/src/nsExtensionManager.js.in 2006-10-29 00:20:51 +0400 @@ -62,16 +62,17 @@ const PREF_UPDATE_DEFAULT_URL = const PREF_EM_IGNOREMTIMECHANGES = "extensions.ignoreMTimeChanges"; const PREF_EM_DISABLEDOBSOLETE = "extensions.disabledObsolete"; const PREF_EM_LAST_SELECTED_SKIN = "extensions.lastSelectedSkin"; const PREF_EM_EXTENSION_FORMAT = "extensions.%UUID%."; const PREF_EM_ITEM_UPDATE_ENABLED = "extensions.%UUID%.update.enabled"; const PREF_EM_UPDATE_ENABLED = "extensions.update.enabled"; const PREF_EM_ITEM_UPDATE_URL = "extensions.%UUID%.update.url"; const PREF_EM_DSS_ENABLED = "extensions.dss.enabled"; +const PREF_EM_DIR_EXTENSIONS = "extensions.dir.extensions"; const PREF_DSS_SWITCHPENDING = "extensions.dss.switchPending"; const PREF_DSS_SKIN_TO_SELECT = "extensions.lastSelectedSkin"; const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; const PREF_EM_LOGGING_ENABLED = "extensions.logging.enabled"; const PREF_EM_UPDATE_INTERVAL = "extensions.update.interval"; const PREF_BLOCKLIST_URL = "extensions.blocklist.url"; const PREF_BLOCKLIST_DETAILS_URL = "extensions.blocklist.detailsURL"; const PREF_BLOCKLIST_ENABLED = "extensions.blocklist.enabled"; @@ -96,16 +97,17 @@ const FILE_LOGFILE = const FILE_DEFAULT_THEME_JAR = "classic.jar"; const TOOLKIT_ID = "toolkit@mozilla.org" const KEY_PROFILEDIR = "ProfD"; const KEY_PROFILEDS = "ProfDS"; const KEY_APPDIR = "XCurProcD"; const KEY_TEMPDIR = "TmpD"; +const KEY_DRIVEDIR = "DrvD"; const EM_ACTION_REQUESTED_TOPIC = "em-action-requested"; const EM_ITEM_INSTALLED = "item-installed"; const EM_ITEM_UPGRADED = "item-upgraded"; const EM_ITEM_UNINSTALLED = "item-uninstalled"; const EM_ITEM_ENABLED = "item-enabled"; const EM_ITEM_DISABLED = "item-disabled"; const EM_ITEM_CANCEL = "item-cancel-action"; @@ -2663,16 +2665,35 @@ function ExtensionManager() { // Register Global Install Location var appGlobalExtensions = getDirNoCreate(KEY_APPDIR, [DIR_EXTENSIONS]); var priority = nsIInstallLocation.PRIORITY_APP_SYSTEM_GLOBAL; var globalLocation = new DirectoryInstallLocation(KEY_APP_GLOBAL, appGlobalExtensions, true, priority); InstallLocations.put(globalLocation); + try { + var gDirExtensions = getPref("getCharPref", PREF_EM_DIR_EXTENSIONS, + "/usr/share/firefox/extensions").split("/"); + + var ds = Components.classes["@mozilla.org/file/directory_service;1"] + .getService(Components.interfaces.nsIProperties); + var dir = ds.get(KEY_DRIVEDIR, Components.interfaces.nsIFile); + + for (var i = 0; i < gDirExtensions.length; ++i) + dir.append(gDirExtensions[i]); + + if (dir && dir.exists() && dir.isDirectory()) { + var shareLocation = new DirectoryInstallLocation("app-altlinux", dir, true, priority); + InstallLocations.put(shareLocation); + } + } catch(e) { + dump("XXXlegion: Something wrong: " + e + "\n"); + } + // Register App-Profile Install Location var appProfileExtensions = getDirNoCreate(KEY_PROFILEDS, [DIR_EXTENSIONS]); var priority = nsIInstallLocation.PRIORITY_APP_PROFILE; var profileLocation = new DirectoryInstallLocation(KEY_APP_PROFILE, appProfileExtensions, false, priority); InstallLocations.put(profileLocation);