diff --git a/Allow-.js-preference-files-to-set-locked-prefs-with-.patch b/Allow-.js-preference-files-to-set-locked-prefs-with-.patch deleted file mode 100644 index 5fd4ed1..0000000 --- a/Allow-.js-preference-files-to-set-locked-prefs-with-.patch +++ /dev/null @@ -1,120 +0,0 @@ -From: Mike Hommey -Date: Sat, 21 Jun 2008 02:48:46 +0200 -Subject: Allow .js preference files to set locked prefs with lockPref() - ---- - modules/libpref/prefapi.cpp | 5 ++++- - modules/libpref/prefapi.h | 3 ++- - modules/libpref/prefread.cpp | 12 +++++++++--- - modules/libpref/prefread.h | 4 +++- - 4 files changed, 18 insertions(+), 6 deletions(-) - -diff --git a/modules/libpref/prefapi.cpp b/modules/libpref/prefapi.cpp -index dd27769..bd3f8ea 100644 ---- a/modules/libpref/prefapi.cpp -+++ b/modules/libpref/prefapi.cpp -@@ -967,11 +967,14 @@ void PREF_ReaderCallback(void *closure, - PrefValue value, - PrefType type, - bool isDefault, -- bool isStickyDefault) -+ bool isStickyDefault, -+ bool isLocked) - { - uint32_t flags = isDefault ? kPrefSetDefault : kPrefForceSet; - if (isDefault && isStickyDefault) { - flags |= kPrefStickyDefault; - } - pref_HashPref(pref, value, type, flags); -+ if (isLocked) -+ PREF_LockPref(pref, true); - } -diff --git a/modules/libpref/prefapi.h b/modules/libpref/prefapi.h -index 5bd8c43..0ab0d7c 100644 ---- a/modules/libpref/prefapi.h -+++ b/modules/libpref/prefapi.h -@@ -186,7 +186,8 @@ void PREF_ReaderCallback( void *closure, - PrefValue value, - PrefType type, - bool isDefault, -- bool isStickyDefault); -+ bool isStickyDefault, -+ bool isLocked); - - #ifdef __cplusplus - } -diff --git a/modules/libpref/prefread.cpp b/modules/libpref/prefread.cpp -index 6c4d339..16c5057 100644 ---- a/modules/libpref/prefread.cpp -+++ b/modules/libpref/prefread.cpp -@@ -43,6 +43,7 @@ enum { - #define BITS_PER_HEX_DIGIT 4 - - static const char kUserPref[] = "user_pref"; -+static const char kLockPref[] = "lockPref"; - static const char kPref[] = "pref"; - static const char kPrefSticky[] = "sticky_pref"; - static const char kTrue[] = "true"; -@@ -131,7 +132,7 @@ pref_DoCallback(PrefParseState *ps) - break; - } - (*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault, -- ps->fstickydefault); -+ ps->fstickydefault, ps->flock); - return true; - } - -@@ -191,6 +192,7 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen) - ps->vtype = PREF_INVALID; - ps->fdefault = false; - ps->fstickydefault = false; -+ ps->flock = false; - } - switch (c) { - case '/': /* begin comment block or line? */ -@@ -202,8 +204,10 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen) - case 'u': /* indicating user_pref */ - case 'p': /* indicating pref */ - case 's': /* indicating sticky_pref */ -+ case 'l': /* indicating lockPref */ - ps->smatch = (c == 'u' ? kUserPref : -- (c == 's' ? kPrefSticky : kPref)); -+ (c == 's' ? kPrefSticky : -+ (c == 'p' ? kPref : kLockPref))); - ps->sindex = 1; - ps->nextstate = PREF_PARSE_UNTIL_OPEN_PAREN; - state = PREF_PARSE_MATCH_STRING; -@@ -247,8 +251,10 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen) - /* name parsing */ - case PREF_PARSE_UNTIL_NAME: - if (c == '\"' || c == '\'') { -- ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky); -+ ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky -+ || ps->smatch == kLockPref); - ps->fstickydefault = (ps->smatch == kPrefSticky); -+ ps->flock = (ps->smatch == kLockPref); - ps->quotechar = c; - ps->nextstate = PREF_PARSE_UNTIL_COMMA; /* return here when done */ - state = PREF_PARSE_QUOTED_STRING; -diff --git a/modules/libpref/prefread.h b/modules/libpref/prefread.h -index 3c317ff..0c13057 100644 ---- a/modules/libpref/prefread.h -+++ b/modules/libpref/prefread.h -@@ -34,7 +34,8 @@ typedef void (*PrefReader)(void *closure, - PrefValue val, - PrefType type, - bool defPref, -- bool stickyPref); -+ bool stickyPref, -+ bool lockPref); - - /* structure fields are private */ - typedef struct PrefParseState { -@@ -56,6 +57,7 @@ typedef struct PrefParseState { - PrefType vtype; /* PREF_STRING,INT,BOOL */ - bool fdefault; /* true if (default) pref */ - bool fstickydefault; /* true if (sticky) pref */ -+ bool flock; /* true if pref to be locked */ - } PrefParseState; - - /** diff --git a/firefox.spec b/firefox.spec index 7b70e01..f8bc29e 100644 --- a/firefox.spec +++ b/firefox.spec @@ -87,7 +87,7 @@ Summary: Mozilla Firefox Web browser Name: firefox Version: 45.0.1 -Release: 2%{?pre_tag}%{?dist} +Release: 3%{?pre_tag}%{?dist} URL: https://www.mozilla.org/projects/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet @@ -280,7 +280,7 @@ cd %{tarballdir} %patch301 -p1 -b .1205199 %patch302 -p1 -b .1228540 %patch303 -p1 -b .1228540-1 -#%patch224 -p1 -b .1170092 +%patch224 -p1 -b .1170092 %if 0%{?fedora} > 23 %patch304 -p2 -b .1253216 @@ -289,7 +289,7 @@ cd %{tarballdir} # Debian extension patch %patch400 -p1 -b .debian-addon -#%patch401 -p1 -b .js-pref-lock +%patch401 -p1 -b .js-pref-lock %patch500 -p1 @@ -794,6 +794,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Mon Mar 21 2016 Martin Stransky - 45.0.1-3 +- Provide system wide config dir (mozbz#1170092) +- Allow lock preferences from .js files (mozbz#440908) + * Mon Mar 21 2016 Martin Stransky - 45.0.1-2 - Fixed rhbz#1293874 - use a Debian patch for disabled extension signing diff --git a/mozilla-1170092.patch b/mozilla-1170092.patch index ed4d3ce..2b10f06 100644 --- a/mozilla-1170092.patch +++ b/mozilla-1170092.patch @@ -1,17 +1,7 @@ -# HG changeset patch -# User Jan Horak -# Parent f986e55c4e0b41c6b50bd74d287614b564d7895f -# Bug 1170092 - Read default prefs also from /etc/firefox/defaults/pref - -diff --git a/extensions/pref/autoconfig/src/nsReadConfig.cpp b/extensions/pref/autoconfig/src/nsReadConfig.cpp ---- a/extensions/pref/autoconfig/src/nsReadConfig.cpp -+++ b/extensions/pref/autoconfig/src/nsReadConfig.cpp -@@ -240,18 +240,30 @@ nsresult nsReadConfig::openAndEvaluateJS - if (NS_FAILED(rv)) - return rv; - - rv = jsFile->AppendNative(nsDependentCString(aFileName)); - if (NS_FAILED(rv)) +diff -up firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp +--- firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2016-03-15 23:37:54.000000000 +0100 ++++ firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp 2016-03-21 16:10:42.540417899 +0100 +@@ -245,8 +245,20 @@ nsresult nsReadConfig::openAndEvaluateJS return rv; rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); @@ -34,20 +24,10 @@ diff --git a/extensions/pref/autoconfig/src/nsReadConfig.cpp b/extensions/pref/a } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); - location += aFileName; - - nsCOMPtr uri; - rv = NS_NewURI(getter_AddRefs(uri), location); - NS_ENSURE_SUCCESS(rv, rv); -diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp ---- a/modules/libpref/Preferences.cpp -+++ b/modules/libpref/Preferences.cpp -@@ -1228,16 +1228,18 @@ static nsresult pref_InitInitialObjects( - // - jar:$app/omni.jar!/defaults/preferences/*.js - // - $app/defaults/preferences/*.js - // and in non omni.jar case: - // - $app/defaults/preferences/*.js - // When $app == $gre, we additionally load, in omni.jar case: +diff -up firefox-45.0.1/modules/libpref/Preferences.cpp.1170092 firefox-45.0.1/modules/libpref/Preferences.cpp +--- firefox-45.0.1/modules/libpref/Preferences.cpp.1170092 2016-03-21 16:10:42.540417899 +0100 ++++ firefox-45.0.1/modules/libpref/Preferences.cpp 2016-03-21 16:13:29.145888710 +0100 +@@ -1214,6 +1214,8 @@ static nsresult pref_InitInitialObjects( // - jar:$gre/omni.jar!/defaults/preferences/*.js // Thus, in omni.jar case, we always load app-specific default preferences // from omni.jar, whether or not $app == $gre. @@ -56,38 +36,18 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp nsZipFind *findPtr; nsAutoPtr find; - nsTArray prefEntries; - const char *entryName; - uint16_t entryNameLen; - - nsRefPtr jarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE); -diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp ---- a/toolkit/xre/nsXREDirProvider.cpp -+++ b/toolkit/xre/nsXREDirProvider.cpp -@@ -47,16 +47,17 @@ - #ifdef XP_MACOSX - #include "nsILocalFileMac.h" - // for chflags() - #include - #include +diff -up firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp +--- firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp.1170092 2016-03-15 23:37:46.000000000 +0100 ++++ firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp 2016-03-21 16:12:06.498655156 +0100 +@@ -51,6 +51,7 @@ #endif #ifdef XP_UNIX #include +#include "nsIXULAppInfo.h" #endif - - #if defined(XP_MACOSX) - #define APP_REGISTRY_NAME "Application Registry" - #elif defined(XP_WIN) - #define APP_REGISTRY_NAME "registry.dat" - #else - #define APP_REGISTRY_NAME "appreg" -@@ -438,16 +439,30 @@ nsXREDirProvider::GetFile(const char* aP - rv = tmp; - } - tmp = EnsureDirectoryExists(file); - if (NS_FAILED(tmp)) { - rv = tmp; + #ifdef XP_IOS + #include "UIKitDirProvider.h" +@@ -457,6 +458,20 @@ nsXREDirProvider::GetFile(const char* aP } } } @@ -108,17 +68,7 @@ diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE; - if (ensureFilePermissions) { - bool fileToEnsureExists; - bool isWritable; - if (NS_SUCCEEDED(file->Exists(&fileToEnsureExists)) && fileToEnsureExists - && NS_SUCCEEDED(file->IsWritable(&isWritable)) && !isWritable) { -@@ -713,16 +728,24 @@ nsXREDirProvider::GetFilesInternal(const - rv = NS_NewArrayEnumerator(aResult, directories); - } - else if (!strcmp(aProperty, NS_APP_PREFS_DEFAULTS_DIR_LIST)) { - nsCOMArray directories; - +@@ -753,6 +768,14 @@ nsXREDirProvider::GetFilesInternal(const LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories); LoadDirsIntoArray(mAppBundleDirectories, kAppendPrefDir, directories); @@ -133,20 +83,10 @@ diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp rv = NS_NewArrayEnumerator(aResult, directories); } - else if (!strcmp(aProperty, NS_EXT_PREFS_DEFAULTS_DIR_LIST)) { - nsCOMArray directories; - - LoadDirsIntoArray(mExtensionDirectories, - kAppendPrefDir, directories); -diff --git a/xpcom/io/nsAppDirectoryServiceDefs.h b/xpcom/io/nsAppDirectoryServiceDefs.h ---- a/xpcom/io/nsAppDirectoryServiceDefs.h -+++ b/xpcom/io/nsAppDirectoryServiceDefs.h -@@ -61,16 +61,17 @@ - - #define NS_SHARED "SHARED" - - #define NS_APP_PREFS_50_DIR "PrefD" // Directory which contains user prefs - #define NS_APP_PREFS_50_FILE "PrefF" +diff -up firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2016-03-15 23:37:47.000000000 +0100 ++++ firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h 2016-03-21 16:10:42.541417902 +0100 +@@ -67,6 +67,7 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_EXT_PREFS_DEFAULTS_DIR_LIST "ExtPrefDL" #define NS_APP_PREFS_OVERRIDE_DIR "PrefDOverride" // Directory for per-profile defaults @@ -154,8 +94,3 @@ diff --git a/xpcom/io/nsAppDirectoryServiceDefs.h b/xpcom/io/nsAppDirectoryServi #define NS_APP_USER_PROFILE_50_DIR "ProfD" #define NS_APP_USER_PROFILE_LOCAL_50_DIR "ProfLD" - - #define NS_APP_USER_CHROME_DIR "UChrm" - #define NS_APP_USER_SEARCH_DIR "UsrSrchPlugns" - - #define NS_APP_LOCALSTORE_50_FILE "LclSt" diff --git a/mozilla-440908.patch b/mozilla-440908.patch new file mode 100644 index 0000000..5fd4ed1 --- /dev/null +++ b/mozilla-440908.patch @@ -0,0 +1,120 @@ +From: Mike Hommey +Date: Sat, 21 Jun 2008 02:48:46 +0200 +Subject: Allow .js preference files to set locked prefs with lockPref() + +--- + modules/libpref/prefapi.cpp | 5 ++++- + modules/libpref/prefapi.h | 3 ++- + modules/libpref/prefread.cpp | 12 +++++++++--- + modules/libpref/prefread.h | 4 +++- + 4 files changed, 18 insertions(+), 6 deletions(-) + +diff --git a/modules/libpref/prefapi.cpp b/modules/libpref/prefapi.cpp +index dd27769..bd3f8ea 100644 +--- a/modules/libpref/prefapi.cpp ++++ b/modules/libpref/prefapi.cpp +@@ -967,11 +967,14 @@ void PREF_ReaderCallback(void *closure, + PrefValue value, + PrefType type, + bool isDefault, +- bool isStickyDefault) ++ bool isStickyDefault, ++ bool isLocked) + { + uint32_t flags = isDefault ? kPrefSetDefault : kPrefForceSet; + if (isDefault && isStickyDefault) { + flags |= kPrefStickyDefault; + } + pref_HashPref(pref, value, type, flags); ++ if (isLocked) ++ PREF_LockPref(pref, true); + } +diff --git a/modules/libpref/prefapi.h b/modules/libpref/prefapi.h +index 5bd8c43..0ab0d7c 100644 +--- a/modules/libpref/prefapi.h ++++ b/modules/libpref/prefapi.h +@@ -186,7 +186,8 @@ void PREF_ReaderCallback( void *closure, + PrefValue value, + PrefType type, + bool isDefault, +- bool isStickyDefault); ++ bool isStickyDefault, ++ bool isLocked); + + #ifdef __cplusplus + } +diff --git a/modules/libpref/prefread.cpp b/modules/libpref/prefread.cpp +index 6c4d339..16c5057 100644 +--- a/modules/libpref/prefread.cpp ++++ b/modules/libpref/prefread.cpp +@@ -43,6 +43,7 @@ enum { + #define BITS_PER_HEX_DIGIT 4 + + static const char kUserPref[] = "user_pref"; ++static const char kLockPref[] = "lockPref"; + static const char kPref[] = "pref"; + static const char kPrefSticky[] = "sticky_pref"; + static const char kTrue[] = "true"; +@@ -131,7 +132,7 @@ pref_DoCallback(PrefParseState *ps) + break; + } + (*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault, +- ps->fstickydefault); ++ ps->fstickydefault, ps->flock); + return true; + } + +@@ -191,6 +192,7 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen) + ps->vtype = PREF_INVALID; + ps->fdefault = false; + ps->fstickydefault = false; ++ ps->flock = false; + } + switch (c) { + case '/': /* begin comment block or line? */ +@@ -202,8 +204,10 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen) + case 'u': /* indicating user_pref */ + case 'p': /* indicating pref */ + case 's': /* indicating sticky_pref */ ++ case 'l': /* indicating lockPref */ + ps->smatch = (c == 'u' ? kUserPref : +- (c == 's' ? kPrefSticky : kPref)); ++ (c == 's' ? kPrefSticky : ++ (c == 'p' ? kPref : kLockPref))); + ps->sindex = 1; + ps->nextstate = PREF_PARSE_UNTIL_OPEN_PAREN; + state = PREF_PARSE_MATCH_STRING; +@@ -247,8 +251,10 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen) + /* name parsing */ + case PREF_PARSE_UNTIL_NAME: + if (c == '\"' || c == '\'') { +- ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky); ++ ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky ++ || ps->smatch == kLockPref); + ps->fstickydefault = (ps->smatch == kPrefSticky); ++ ps->flock = (ps->smatch == kLockPref); + ps->quotechar = c; + ps->nextstate = PREF_PARSE_UNTIL_COMMA; /* return here when done */ + state = PREF_PARSE_QUOTED_STRING; +diff --git a/modules/libpref/prefread.h b/modules/libpref/prefread.h +index 3c317ff..0c13057 100644 +--- a/modules/libpref/prefread.h ++++ b/modules/libpref/prefread.h +@@ -34,7 +34,8 @@ typedef void (*PrefReader)(void *closure, + PrefValue val, + PrefType type, + bool defPref, +- bool stickyPref); ++ bool stickyPref, ++ bool lockPref); + + /* structure fields are private */ + typedef struct PrefParseState { +@@ -56,6 +57,7 @@ typedef struct PrefParseState { + PrefType vtype; /* PREF_STRING,INT,BOOL */ + bool fdefault; /* true if (default) pref */ + bool fstickydefault; /* true if (sticky) pref */ ++ bool flock; /* true if pref to be locked */ + } PrefParseState; + + /**