зеркало из https://github.com/mozilla/pjs.git
Fix for bug 132140. Clean up prefs backend. r=dveditz, sr=alecf.
This commit is contained in:
Родитель
179f0c06c3
Коммит
76e2f653aa
|
@ -131,10 +131,6 @@ sub InstallDefaultsFiles()
|
|||
my($default_pref_dir) = "$defaults_dir"."Pref:";
|
||||
mkdir($default_pref_dir, 0);
|
||||
InstallResources(":mozilla:xpinstall:public:MANIFEST_PREFS", "$default_pref_dir", 0);
|
||||
InstallResources(":mozilla:modules:libpref:src:MANIFEST_PREFS", "$default_pref_dir", 0);
|
||||
if ($main::DEBUG) {
|
||||
InstallResources(":mozilla:modules:libpref:src:MANIFEST_DEBUG_PREFS", "$default_pref_dir", 0);
|
||||
}
|
||||
InstallResources(":mozilla:modules:libpref:src:init:MANIFEST", "$default_pref_dir", 0);
|
||||
InstallResources(":mozilla:modules:libpref:src:mac:MANIFEST", "$default_pref_dir", 0);
|
||||
InstallResources(":mozilla:netwerk:base:public:MANIFEST_PREFS", "$default_pref_dir", 0);
|
||||
|
@ -153,6 +149,7 @@ sub InstallDefaultsFiles()
|
|||
my($default_autoconfig_dir) = "$defaults_dir"."autoconfig:";
|
||||
mkdir($default_autoconfig_dir, 0);
|
||||
InstallResources(":mozilla:extensions:pref:autoconfig:src:MANIFEST", "$default_autoconfig_dir");
|
||||
InstallResources(":mozilla:extensions:pref:autoconfig:src:mac:MANIFEST", "$default_autoconfig_dir");
|
||||
}
|
||||
|
||||
print("--- Defaults copying complete ----\n");
|
||||
|
|
|
@ -44,11 +44,11 @@ pref("editor.active_link_color", "#000088");
|
|||
pref("editor.followed_link_color", "#FF0000");
|
||||
pref("editor.background_color", "#FFFFFF");
|
||||
pref("editor.use_background_image", false);
|
||||
localDefPref("editor.background_image", "");
|
||||
pref("editor.background_image", "");
|
||||
pref("editor.use_custom_default_colors", 1);
|
||||
|
||||
localDefPref("editor.hrule.height", 2);
|
||||
localDefPref("editor.hrule.width", 100);
|
||||
pref("editor.hrule.height", 2);
|
||||
pref("editor.hrule.width", 100);
|
||||
pref("editor.hrule.width_percent", true);
|
||||
pref("editor.hrule.shading", true);
|
||||
pref("editor.hrule.align", 1); // center
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#
|
||||
# Contributor(s):
|
||||
# Mitesh Shah <mitesh@netscape.com>
|
||||
# Brian Nesse <bnesse@netscape.com>
|
||||
#
|
||||
# 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
|
||||
|
@ -70,7 +71,27 @@ EXTRA_DSO_LDOPTS = \
|
|||
$(MOZ_COMPONENT_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
AUTOCFG_JS_EXPORTS = prefcalls.js
|
||||
AUTOCFG_JS_EXPORTS = \
|
||||
$(srcdir)/prefcalls.js \
|
||||
$(NULL)
|
||||
|
||||
ifneq (,filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||
AUTOCFG_JS_EXPORTS += $(srcdir)/mac/platform.js
|
||||
else
|
||||
ifeq ($(MOZ_WIDGET_TOOLKIT), windows)
|
||||
AUTOCFG_JS_EXPORTS += $(srcdir)/win/platform.js
|
||||
else
|
||||
ifeq ($(MOZ_WIDGET_TOOLKIT), os2)
|
||||
AUTOCFG_JS_EXPORTS += $(srcdir)/os2/platform.js
|
||||
else
|
||||
ifeq ($(MOZ_WIDGET_TOOLKIT), beos)
|
||||
AUTOCFG_JS_EXPORTS += $(srcdir)/beos/platform.js
|
||||
else
|
||||
AUTOCFG_JS_EXPORTS += $(srcdir)/unix/platform.js
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#
|
||||
# Contributor(s):
|
||||
# Mitesh Shah <mitesh@netscape.com>
|
||||
# Brian Nesse <bnesse@netscape.com>
|
||||
#
|
||||
# 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
|
||||
|
@ -106,3 +107,4 @@ OBJS = .\$(OBJDIR)\nsConfigFactory.obj \
|
|||
include <$(DEPTH)\config\rules.mak>
|
||||
libs::
|
||||
$(MAKE_INSTALL) .\prefcalls.js $(DIST)\bin\defaults\autoconfig
|
||||
$(MAKE_INSTALL) .\win\platform.js $(DIST)\bin\defaults\autoconfig
|
||||
|
|
|
@ -140,11 +140,15 @@ nsresult nsReadConfig::readConfigFile()
|
|||
return rv;
|
||||
|
||||
// Open and evaluate function calls to set/lock/unlock prefs
|
||||
|
||||
rv = openAndEvaluateJSFile("prefcalls.js", PR_FALSE, PR_FALSE);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
// Evaluate platform specific directives
|
||||
rv = openAndEvaluateJSFile("platform.js", PR_FALSE, PR_FALSE);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
mRead = PR_TRUE;
|
||||
}
|
||||
// If the lockFileName is NULL return ok, because no lockFile will be used
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*
|
||||
* Contributor(s):
|
||||
* Mitesh Shah <mitesh@netscape.com>
|
||||
* Brian Nesse <bnesse@netscape.com>
|
||||
*
|
||||
* 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
|
||||
|
@ -43,6 +44,10 @@ const LDAPSyncQueryContractID = "@mozilla.org/ldapsyncquery;1";
|
|||
const nsIPrefService = Components.interfaces.nsIPrefService;
|
||||
const PrefServiceContractID = "@mozilla.org/preferences-service;1";
|
||||
|
||||
// set on a platform specific basis in platform.js
|
||||
platform = { value: "" };
|
||||
|
||||
|
||||
function getPrefBranch() {
|
||||
|
||||
var prefService = Components.classes[PrefServiceContractID]
|
||||
|
|
|
@ -118,7 +118,7 @@ pref("mail.addr_book.displayName.lastnamefirst", false); // generate display nam
|
|||
pref("mail.attach_vcard", false);
|
||||
pref("mail.html_compose", true);
|
||||
pref("mail.compose.other.header", "");
|
||||
localDefPref("mail.fcc_folder", "");
|
||||
pref("mail.fcc_folder", "");
|
||||
pref("mail.encrypt_outgoing_mail", false);
|
||||
pref("mail.crypto_sign_outgoing_mail", false);
|
||||
pref("mail.default_html_action", 0); // 0=ask, 1=plain, 2=html, 3=both
|
||||
|
|
|
@ -54,16 +54,14 @@ CPPSRCS = nsPref.cpp \
|
|||
$(NULL)
|
||||
|
||||
PREF_JS_EXPORTS = \
|
||||
$(srcdir)/initpref.js \
|
||||
$(srcdir)/init/all.js \
|
||||
$(srcdir)/init/mailnews.js \
|
||||
$(srcdir)/init/editor.js \
|
||||
$(srcdir)/init/config.js \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_DEBUG
|
||||
PREF_JS_EXPORTS += $(srcdir)/debug-developer.js
|
||||
endif
|
||||
ifneq (,filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||
PREF_JS_EXPORTS += $(srcdir)/mac/macpref.js
|
||||
else
|
||||
ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
|
||||
PREF_JS_EXPORTS += $(srcdir)/win/winpref.js
|
||||
else
|
||||
|
@ -80,6 +78,7 @@ PREF_JS_EXPORTS += $(srcdir)/unix/unix.js
|
|||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),OpenVMS)
|
||||
PREF_JS_EXPORTS += $(srcdir)/unix/openvms.js
|
||||
|
@ -96,7 +95,6 @@ include $(topsrcdir)/config/rules.mk
|
|||
DEFINES += -DB_ONE_M
|
||||
|
||||
GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, \
|
||||
debug-developer.js \
|
||||
initpref.js all.js mailnews.js editor.js config.js \
|
||||
all.js mailnews.js editor.js \
|
||||
beos.js unix.js winpref.js os2prefs.js openvms.js photon.js)
|
||||
|
||||
|
|
|
@ -35,8 +35,6 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
platform.beos = true;
|
||||
|
||||
pref("intl.font_charset", "");
|
||||
pref("intl.font_spec_list", "");
|
||||
pref("mail.signature_date", 0);
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
all.js
|
||||
config.js
|
||||
editor.js
|
||||
mailnews.js
|
|
@ -38,6 +38,9 @@
|
|||
// SYNTAX HINTS: dashes are delimiters. Use underscores instead.
|
||||
// The first character after a period must be alphabetic.
|
||||
|
||||
pref("startup.homepage_override_url","chrome://navigator-region/locale/region.properties");
|
||||
pref("browser.chromeURL","chrome://navigator/content/navigator.xul");
|
||||
|
||||
pref("network.search.url","http://cgi.netscape.com/cgi-bin/url_search.cgi?search=");
|
||||
|
||||
pref("keyword.URL", "http://keyword.netscape.com/keyword/");
|
||||
|
@ -559,12 +562,12 @@ pref("intl.locale.matchOS", false);
|
|||
pref("font.language.group", "chrome://navigator/locale/navigator.properties");
|
||||
|
||||
// -- folders (Mac: these are binary aliases.)
|
||||
localDefPref("mail.signature_file", "");
|
||||
localDefPref("mail.directory", "");
|
||||
pref("mail.signature_file", "");
|
||||
pref("mail.directory", "");
|
||||
|
||||
pref("images.dither", "auto");
|
||||
localDefPref("news.directory", "");
|
||||
localDefPref("security.directory", "");
|
||||
pref("news.directory", "");
|
||||
pref("security.directory", "");
|
||||
|
||||
pref("autoupdate.enabled", true);
|
||||
|
||||
|
|
|
@ -44,11 +44,11 @@ pref("editor.active_link_color", "#000088");
|
|||
pref("editor.followed_link_color", "#FF0000");
|
||||
pref("editor.background_color", "#FFFFFF");
|
||||
pref("editor.use_background_image", false);
|
||||
localDefPref("editor.background_image", "");
|
||||
pref("editor.background_image", "");
|
||||
pref("editor.use_custom_default_colors", 1);
|
||||
|
||||
localDefPref("editor.hrule.height", 2);
|
||||
localDefPref("editor.hrule.width", 100);
|
||||
pref("editor.hrule.height", 2);
|
||||
pref("editor.hrule.width", 100);
|
||||
pref("editor.hrule.width_percent", true);
|
||||
pref("editor.hrule.shading", true);
|
||||
pref("editor.hrule.align", 1); // center
|
||||
|
|
|
@ -118,7 +118,7 @@ pref("mail.addr_book.displayName.lastnamefirst", false); // generate display nam
|
|||
pref("mail.attach_vcard", false);
|
||||
pref("mail.html_compose", true);
|
||||
pref("mail.compose.other.header", "");
|
||||
localDefPref("mail.fcc_folder", "");
|
||||
pref("mail.fcc_folder", "");
|
||||
pref("mail.encrypt_outgoing_mail", false);
|
||||
pref("mail.crypto_sign_outgoing_mail", false);
|
||||
pref("mail.default_html_action", 0); // 0=ask, 1=plain, 2=html, 3=both
|
||||
|
|
|
@ -36,8 +36,6 @@
|
|||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
// Mac specific preference defaults
|
||||
platform.mac = true;
|
||||
|
||||
pref("browser.drag_out_of_frame_style", 1);
|
||||
pref("ui.key.saveLink.shift", false); // true = shift, false = meta
|
||||
|
||||
|
@ -186,52 +184,6 @@ pref("font.size.fixed.zh-TW", 16);
|
|||
pref("ui.key.menuAccessKey", 0);
|
||||
pref("ui.key.accelKey", 224);
|
||||
|
||||
mime_type("mime.image_gif", "image/gif", "gif", 2, "JPEGView", "JVWR", "GIFf");
|
||||
mime_type("mime.image_jpeg", "image/jpeg", "jpg,jpeg,jpe", 2, "JPEGView", "JVWR", "JPEG");
|
||||
mime_type("mime.image_pict", "image/pict", "pic,pict", 1, "SimpleText", "ttxt", "PICT");
|
||||
mime_type("mime.image_tiff", "image/tiff", "tif,tiff", 1, "JPEGView", "JVWR", "TIFF");
|
||||
mime_type("mime.image_x_xbitmap", "image/x-xbitmap", "xbm", 2, "Unknown", "ttxt", "????");
|
||||
|
||||
mime_type("mime.audio_basic", "audio/basic", "au,snd", 1, "Sound Machine", "SNDM", "ULAW");
|
||||
mime_type("mime.audio_aiff", "audio/aiff", "aiff,aif", 1, "Sound Machine", "SNDM", "AIFF");
|
||||
mime_type("mime.audio_x_wav", "audio/x-wav", "wav", 1, "Sound Machine", "SNDM", "WAVE");
|
||||
|
||||
mime_type("mime.video_quicktime", "video/quicktime", "qt,mov", 1, "Simple Player", "TVOD", "MooV");
|
||||
mime_type("mime.video_mpeg", "video/mpeg", "mpg,mpeg,mpe", 1, "Sparkle", "mMPG", "MPEG");
|
||||
mime_type("mime.video_x_msvideo", "video/x-msvideo", "avi", 1, "AVI to QT Utility", "AVIC", "????");
|
||||
mime_type("mime.video_x_qtc", "video/x-qtc", "qtc", 1, "Conferencing Helper Application", "mtwh", ".qtc");
|
||||
|
||||
mime_type("mime.application_mac_binhex40", "application/mac-binhex40", "hqx", 1, "Stuffit Expander", "SITx", "TEXT");
|
||||
mime_type("mime.application_x_stuffit", "application/x-stuffit", "sit", 1, "Stuffit Expander", "SITx", "SITD");
|
||||
mime_type("mime.application_x_macbinary", "application/x-macbinary", "bin", 1, "Stuffit Expander", "SITx", "TEXT");
|
||||
mime_type("mime.application_x_conference", "application/x-conference", "nsc", 1, "Netscape Conference", "Ncq¹", "TEXT");
|
||||
|
||||
mime_type("mime.application_zip", "application/zip", "z,zip", 1, "ZipIt", "ZIP ", "ZIP ");
|
||||
mime_type("mime.application_gzip", "application/gzip", "gz", 1, "MacGzip", "Gzip", "Gzip");
|
||||
mime_type("mime.application_msword", "application/msword", "doc", 0, "MS Word", "MSWD", "W6BN");
|
||||
mime_type("mime.application_x_excel", "application/x-excel", "xls", 0, "MS Excel", "XCEL", "XLS5");
|
||||
|
||||
mime_type("mime.application_octet_stream", "application/octet-stream", "exe", 3, "", "", "");
|
||||
mime_type("mime.application_postscript", "application/postscript", "ai,eps,ps", 3, "SimpleText", "ttxt", "TEXT");
|
||||
mime_type("mime.application_rtf", "application/rtf", "rtf", 0, "MS Word", "MSWD", "TEXT");
|
||||
mime_type("mime.application_x_compressed", "application/x-compressed", ".Z", 1, "MacCompress", "LZIV", "ZIVM");
|
||||
mime_type("mime.application_x_tar", "application/x-tar", "tar", 1, "tar", "TAR ", "TARF");
|
||||
|
||||
mime_type("mime.Netscape_Source", "Netscape/Source", "", 2, "SimpleText", "ttxt", "TEXT");
|
||||
pref("mime.Netscape_Source.description", "View Source");
|
||||
mime_type("mime.Netscape_Telnet", "Netscape/Telnet", "", 1, "NCSA Telnet", "NCSA", "CONF");
|
||||
mime_type("mime.Netscape_tn3270", "Netscape/tn3270", "", 1, "tn3270", "GFTM", "GFTS");
|
||||
|
||||
mime_type("mime.image_x_cmu_raster", "image/x-cmu-raster", "ras", 3, "Unknown", "ttxt", "????");
|
||||
mime_type("mime.image_x_portable_anymap", "image/x-portable-anymap", "pnm", 3, "Unknown", "ttxt", "????");
|
||||
mime_type("mime.image_x_portable_bitmap", "image/x-portable-bitmap", "pbm", 3, "Unknown", "ttxt", "????");
|
||||
mime_type("mime.image_x_portable_graymap", "image/x-portable-graymap", "pgm", 3, "Unknown", "ttxt", "????");
|
||||
mime_type("mime.image_x_rgb", "image/x-rgb", "rgb", 3, "Unknown", "ttxt", "????");
|
||||
mime_type("mime.image_x_xpixmap", "image/x-xpixmap", "xpm", 2, "Unknown", "ttxt", "????");
|
||||
|
||||
// Add mime type for SimpleText read only files
|
||||
mime_type("mime.SimpleText_ReadOnly", "text/plain", "", 2, "SimpleText", "ttxt", "ttro");
|
||||
|
||||
// print_extra_margin enables platforms to specify an extra gap or margin
|
||||
// around the content of the page for Print Preview only
|
||||
pref("print.print_extra_margin", 90); // twips (90 twips is an eigth of an inch)
|
||||
|
|
|
@ -87,12 +87,7 @@ OBJS = \
|
|||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
libs::
|
||||
$(MAKE_INSTALL) .\initpref.js $(DIST)\bin\defaults\pref
|
||||
$(MAKE_INSTALL) .\init\all.js $(DIST)\bin\defaults\pref
|
||||
$(MAKE_INSTALL) .\init\mailnews.js $(DIST)\bin\defaults\pref
|
||||
$(MAKE_INSTALL) .\init\editor.js $(DIST)\bin\defaults\pref
|
||||
$(MAKE_INSTALL) .\init\config.js $(DIST)\bin\defaults\pref
|
||||
$(MAKE_INSTALL) .\win\winpref.js $(DIST)\bin\defaults\pref
|
||||
!ifdef MOZ_DEBUG
|
||||
$(MAKE_INSTALL) .\debug-developer.js $(DIST)\bin\defaults\pref
|
||||
!endif
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "nsAppDirectoryServiceDefs.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsICategoryManager.h"
|
||||
#include "nsIFile.h"
|
||||
#include "nsIFileStreams.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsPrefBranch.h"
|
||||
|
@ -51,29 +52,20 @@
|
|||
#include "pldhash.h"
|
||||
|
||||
#include "prefapi.h"
|
||||
class nsIFileSpec; // needed for prefapi_private_data.h inclusion
|
||||
#include "prefapi_private_data.h"
|
||||
|
||||
// supporting PREF_Init()
|
||||
#include "nsIJSRuntimeService.h"
|
||||
|
||||
// lose these if possible (supporting nsIFileToFileSpec)
|
||||
#include "nsIFileSpec.h"
|
||||
#include "nsFileStream.h"
|
||||
|
||||
#include "nsITimelineService.h"
|
||||
|
||||
// Definitions
|
||||
#define PREFS_HEADER_LINE_1 "# Mozilla User Preferences"
|
||||
#define PREFS_HEADER_LINE_2 "// This is a generated file!"
|
||||
#define INITIAL_MAX_DEFAULT_PREF_FILES 10
|
||||
|
||||
|
||||
// Prototypes
|
||||
static nsresult nsIFileToFileSpec(nsIFile* inFile, nsIFileSpec **aFileSpec);
|
||||
static nsresult openPrefFile(nsIFile* aFile, PRBool aIsErrorFatal,
|
||||
PRBool aIsGlobalContext, PRBool aSkipFirstLine);
|
||||
static nsresult savePrefFile(nsIFile* aFile);
|
||||
|
||||
|
||||
// needed so we can still get the JS Runtime Service during XPCOM shutdown
|
||||
|
@ -184,11 +176,11 @@ NS_IMETHODIMP nsPrefService::ReadUserPrefs(nsIFile *aFile)
|
|||
nsresult rv;
|
||||
|
||||
if (nsnull == aFile) {
|
||||
rv = useDefaultPrefFile(); // really should return a value...
|
||||
rv = UseDefaultPrefFile(); // really should return a value...
|
||||
if (NS_SUCCEEDED(rv))
|
||||
useUserPrefFile();
|
||||
UseUserPrefFile();
|
||||
|
||||
notifyObservers(NS_PREFSERVICE_READ_TOPIC_ID);
|
||||
NotifyServiceObservers(NS_PREFSERVICE_READ_TOPIC_ID);
|
||||
|
||||
JS_MaybeGC(gMochaContext);
|
||||
} else {
|
||||
|
@ -208,7 +200,7 @@ NS_IMETHODIMP nsPrefService::ReadUserPrefs(nsIFile *aFile)
|
|||
|
||||
NS_IMETHODIMP nsPrefService::ResetPrefs()
|
||||
{
|
||||
notifyObservers(NS_PREFSERVICE_RESET_TOPIC_ID);
|
||||
NotifyServiceObservers(NS_PREFSERVICE_RESET_TOPIC_ID);
|
||||
PREF_CleanupPrefs();
|
||||
|
||||
if (!PREF_Init(nsnull))
|
||||
|
@ -223,14 +215,13 @@ NS_IMETHODIMP nsPrefService::ResetUserPrefs()
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void savePrefFile (in nsIFile filename); */
|
||||
NS_IMETHODIMP nsPrefService::SavePrefFile(nsIFile *aFile)
|
||||
{
|
||||
if (nsnull == aFile) {
|
||||
// It's possible that we never got a prefs file.
|
||||
return mCurrentFile ? savePrefFile(mCurrentFile) : NS_OK;
|
||||
return mCurrentFile ? WritePrefFile(mCurrentFile) : NS_OK;
|
||||
} else {
|
||||
return savePrefFile(aFile);
|
||||
return WritePrefFile(aFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -289,7 +280,7 @@ NS_IMETHODIMP nsPrefService::RemoveObserver(const char *aDomain, nsIObserver *aO
|
|||
}
|
||||
|
||||
|
||||
nsresult nsPrefService::notifyObservers(const char *aTopic)
|
||||
nsresult nsPrefService::NotifyServiceObservers(const char *aTopic)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIObserverService> observerService =
|
||||
|
@ -304,8 +295,7 @@ nsresult nsPrefService::notifyObservers(const char *aTopic)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsPrefService::useDefaultPrefFile()
|
||||
nsresult nsPrefService::UseDefaultPrefFile()
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIFile> aFile;
|
||||
|
@ -333,7 +323,7 @@ nsresult nsPrefService::useDefaultPrefFile()
|
|||
return rv;
|
||||
}
|
||||
|
||||
nsresult nsPrefService::useUserPrefFile()
|
||||
nsresult nsPrefService::UseUserPrefFile()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIFile> aFile;
|
||||
|
@ -350,6 +340,59 @@ nsresult nsPrefService::useUserPrefFile()
|
|||
return rv;
|
||||
}
|
||||
|
||||
nsresult nsPrefService::WritePrefFile(nsIFile* aFile)
|
||||
{
|
||||
const char outHeader[] = "# Mozilla User Preferences"
|
||||
NS_LINEBREAK
|
||||
"// This is a generated file!"
|
||||
NS_LINEBREAK
|
||||
NS_LINEBREAK;
|
||||
nsCOMPtr<nsIOutputStream> outStream;
|
||||
PRUint32 writeAmount;
|
||||
nsresult rv;
|
||||
|
||||
if (!gHashTable.ops)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
/* ?! Don't save (blank) user prefs if there was an error reading them */
|
||||
if (gErrorOpeningUserPrefs)
|
||||
return NS_OK;
|
||||
|
||||
char** valueArray = (char**) PR_Calloc(sizeof(char*), gHashTable.entryCount);
|
||||
if (!valueArray)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
rv = NS_NewLocalFileOutputStream(getter_AddRefs(outStream), aFile);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
// write out the file header
|
||||
rv = outStream->Write(outHeader, sizeof(outHeader) - 1, &writeAmount);
|
||||
|
||||
// get the lines that we're supposed to be writing to the file
|
||||
PL_DHashTableEnumerate(&gHashTable, pref_savePref, valueArray);
|
||||
|
||||
/* Sort the preferences to make a readable file on disk */
|
||||
NS_QuickSort(valueArray, gHashTable.entryCount, sizeof(char*), pref_CompareStrings, NULL);
|
||||
char** walker = valueArray;
|
||||
for (PRUint32 valueIdx = 0; valueIdx < gHashTable.entryCount; valueIdx++, walker++) {
|
||||
if (*walker) {
|
||||
// skip writing if an has error occurred
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = outStream->Write(*walker, strlen(*walker), &writeAmount);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = outStream->Write(NS_LINEBREAK, NS_LINEBREAK_LEN, &writeAmount);
|
||||
}
|
||||
// always free though...
|
||||
PR_Free(*walker);
|
||||
}
|
||||
}
|
||||
PR_Free(valueArray);
|
||||
outStream->Close();
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
static nsresult openPrefFile(nsIFile* aFile, PRBool aIsErrorFatal,
|
||||
PRBool aIsGlobalContext, PRBool aSkipFirstLine)
|
||||
{
|
||||
|
@ -402,74 +445,6 @@ static nsresult openPrefFile(nsIFile* aFile, PRBool aIsErrorFatal,
|
|||
return rv;
|
||||
}
|
||||
|
||||
static nsresult savePrefFile(nsIFile* aFile)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIFileSpec> fileSpec;
|
||||
|
||||
if (!gHashTable.ops)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
/* ?! Don't save (blank) user prefs if there was an error reading them */
|
||||
if (gErrorOpeningUserPrefs)
|
||||
return NS_OK;
|
||||
|
||||
// TODO: Convert the rest of this code to nsIFile and avoid this conversion to nsIFileSpec
|
||||
rv = nsIFileToFileSpec(aFile, getter_AddRefs(fileSpec));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
char** valueArray = (char**) PR_Calloc(sizeof(char*), gHashTable.entryCount);
|
||||
if (!valueArray)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsOutputFileStream stream(fileSpec);
|
||||
if (!stream.is_open())
|
||||
return NS_BASE_STREAM_OSERROR;
|
||||
|
||||
stream << PREFS_HEADER_LINE_1 << nsEndl << PREFS_HEADER_LINE_2 << nsEndl << nsEndl;
|
||||
|
||||
// get the lines that we're supposed to be writing to the file
|
||||
PL_DHashTableEnumerate(&gHashTable, pref_savePref, valueArray);
|
||||
|
||||
/* Sort the preferences to make a readable file on disk */
|
||||
NS_QuickSort(valueArray, gHashTable.entryCount, sizeof(char*), pref_CompareStrings, NULL);
|
||||
char** walker = valueArray;
|
||||
for (PRUint32 valueIdx = 0; valueIdx < gHashTable.entryCount; valueIdx++, walker++) {
|
||||
if (*walker) {
|
||||
stream << *walker << nsEndl;
|
||||
PR_Free(*walker);
|
||||
}
|
||||
}
|
||||
PR_Free(valueArray);
|
||||
fileSpec->CloseStream();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
// So discouraged is the use of nsIFileSpec, nobody wanted to have this routine be
|
||||
// public - It might lead to continued use of nsIFileSpec. Right now, this code has
|
||||
// such a need for it, here it is. Let's stop having to use it though.
|
||||
static nsresult nsIFileToFileSpec(nsIFile* inFile, nsIFileSpec **aFileSpec)
|
||||
//----------------------------------------------------------------------------------------
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIFileSpec> newFileSpec;
|
||||
nsXPIDLCString pathBuf;
|
||||
|
||||
rv = inFile->GetPath(getter_Copies(pathBuf));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = NS_NewFileSpec(getter_AddRefs(newFileSpec));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = newFileSpec->SetNativePath((const char *)pathBuf);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
*aFileSpec = newFileSpec;
|
||||
NS_ADDREF(*aFileSpec);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* some stuff that gets called from Pref_Init()
|
||||
|
@ -518,19 +493,15 @@ JSBool pref_InitInitialObjects()
|
|||
PRBool hasMoreElements;
|
||||
|
||||
static const char* specialFiles[] = {
|
||||
"initpref.js"
|
||||
#ifdef NS_DEBUG
|
||||
, "debug-developer.js"
|
||||
#endif
|
||||
#ifdef XP_MAC
|
||||
, "macprefs.js"
|
||||
"macprefs.js"
|
||||
#if defined (TARGET_CARBON)
|
||||
, "macxprefs.js"
|
||||
#endif
|
||||
#elif defined(XP_WIN)
|
||||
, "winpref.js"
|
||||
"winpref.js"
|
||||
#elif defined(XP_UNIX)
|
||||
, "unix.js"
|
||||
"unix.js"
|
||||
#if defined(VMS)
|
||||
, "openvms.js"
|
||||
#endif
|
||||
|
@ -538,7 +509,9 @@ JSBool pref_InitInitialObjects()
|
|||
, "photon.js"
|
||||
#endif
|
||||
#elif defined(XP_OS2)
|
||||
, "os2pref.js"
|
||||
"os2pref.js"
|
||||
#elif defined(XP_BEOS)
|
||||
"beos.js"
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -564,21 +537,6 @@ JSBool pref_InitInitialObjects()
|
|||
return JS_FALSE;
|
||||
}
|
||||
|
||||
// Read in initpref.js.
|
||||
// Warning: aliases get resolved, so SetLeafName will not work here.
|
||||
rv = defaultPrefDir->Clone(getter_AddRefs(aFile));
|
||||
if (NS_FAILED(rv))
|
||||
return JS_FALSE;
|
||||
|
||||
rv = aFile->Append((char *)specialFiles[0]);
|
||||
if (NS_FAILED(rv))
|
||||
return JS_FALSE;
|
||||
|
||||
rv = openPrefFile(aFile, PR_FALSE, PR_FALSE, PR_FALSE);
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "initpref.js not parsed successfully");
|
||||
|
||||
// Keep this child
|
||||
|
||||
while (hasMoreElements) {
|
||||
PRBool shouldParse = PR_TRUE;
|
||||
char* leafName;
|
||||
|
@ -624,7 +582,7 @@ JSBool pref_InitInitialObjects()
|
|||
nsMemory::Free(defaultPrefFiles);
|
||||
|
||||
// Finally, parse any other special files (platform-specific ones).
|
||||
for (k = 1; k < (int) (sizeof(specialFiles) / sizeof(char *)); k++) {
|
||||
for (k = 0; k < (int) (sizeof(specialFiles) / sizeof(char *)); k++) {
|
||||
// we must get the directory every time so we can append the child
|
||||
// because SetLeafName will not work here.
|
||||
rv = defaultPrefDir->Clone(getter_AddRefs(aFile));
|
||||
|
|
|
@ -64,9 +64,10 @@ public:
|
|||
nsresult Init();
|
||||
|
||||
protected:
|
||||
nsresult notifyObservers(const char *aSubject);
|
||||
nsresult useDefaultPrefFile();
|
||||
nsresult useUserPrefFile();
|
||||
nsresult NotifyServiceObservers(const char *aSubject);
|
||||
nsresult UseDefaultPrefFile();
|
||||
nsresult UseUserPrefFile();
|
||||
nsresult WritePrefFile(nsIFile* aFile);
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIPrefBranch> mRootBranch;
|
||||
|
|
|
@ -35,8 +35,6 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
platform.windows = true;
|
||||
|
||||
pref("ui.key.menuAccessKeyFocuses", true);
|
||||
pref("browser.display.screen_resolution", 0); // System setting
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "prefapi.h"
|
||||
#include "prefapi_private_data.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "jsapi.h"
|
||||
|
||||
#if defined(XP_MAC)
|
||||
|
@ -104,10 +106,7 @@ matchPrefEntry(PLDHashTable*, const PLDHashEntryHdr* entry,
|
|||
|
||||
PR_STATIC_CALLBACK(JSBool) pref_NativeDefaultPref(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval);
|
||||
PR_STATIC_CALLBACK(JSBool) pref_NativeUserPref(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval);
|
||||
PR_STATIC_CALLBACK(JSBool) pref_NativeSetConfig(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval);
|
||||
PR_STATIC_CALLBACK(JSBool) pref_NativeGetPref(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval);
|
||||
/*----------------------------------------------------------------------------------------*/
|
||||
#include "prefapi_private_data.h"
|
||||
|
||||
JS_STATIC_DLL_CALLBACK(JSBool)
|
||||
global_enumerate(JSContext *cx, JSObject *obj)
|
||||
|
@ -147,13 +146,7 @@ static JSPropertySpec autoconf_props[] = {
|
|||
};
|
||||
static JSFunctionSpec autoconf_methods[] = {
|
||||
{ "pref", pref_NativeDefaultPref, 2,0,0 },
|
||||
{ "defaultPref", pref_NativeDefaultPref, 2,0,0 },
|
||||
{ "user_pref", pref_NativeUserPref, 2,0,0 },
|
||||
{ "config", pref_NativeSetConfig, 2,0,0 },
|
||||
{ "getPref", pref_NativeGetPref, 1,0,0 },
|
||||
{ "localPref", pref_NativeDefaultPref, 1,0,0 },
|
||||
{ "localUserPref", pref_NativeUserPref, 2,0,0 },
|
||||
{ "localDefPref", pref_NativeDefaultPref, 2,0,0 },
|
||||
{ NULL, NULL, 0,0,0 }
|
||||
};
|
||||
|
||||
|
@ -1149,43 +1142,6 @@ PR_STATIC_CALLBACK(JSBool) pref_NativeUserPref
|
|||
return pref_HashJSPref(argc, argv, PREF_SETUSER);
|
||||
}
|
||||
|
||||
PR_STATIC_CALLBACK(JSBool) pref_NativeSetConfig
|
||||
(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval)
|
||||
{
|
||||
return pref_HashJSPref(argc, argv, PREF_SETCONFIG);
|
||||
}
|
||||
|
||||
PR_STATIC_CALLBACK(JSBool) pref_NativeGetPref
|
||||
(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval)
|
||||
{
|
||||
/*void* value = NULL;*/
|
||||
PrefHashEntry* pref;
|
||||
/*PRBool prefExists = PR_TRUE;*/
|
||||
|
||||
if (argc >= 1 && JSVAL_IS_STRING(argv[0]))
|
||||
{
|
||||
const char *key = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
|
||||
pref = pref_HashTableLookup(key);
|
||||
|
||||
if (pref)
|
||||
{
|
||||
PRBool use_default = (PREF_IS_LOCKED(pref) || !PREF_HAS_USER_VALUE(pref));
|
||||
if (pref->flags & PREF_STRING)
|
||||
{
|
||||
char* str = use_default ? pref->defaultPref.stringVal : pref->userPref.stringVal;
|
||||
JSString* jsstr = JS_NewStringCopyZ(cx, str);
|
||||
*rval = STRING_TO_JSVAL(jsstr);
|
||||
}
|
||||
else if (pref->flags & PREF_INT)
|
||||
*rval = INT_TO_JSVAL(use_default ?
|
||||
pref->defaultPref.intVal : pref->userPref.intVal);
|
||||
else if (pref->flags & PREF_BOOL)
|
||||
*rval = BOOLEAN_TO_JSVAL(use_default ?
|
||||
pref->defaultPref.boolVal : pref->userPref.boolVal);
|
||||
}
|
||||
}
|
||||
return JS_TRUE;
|
||||
}
|
||||
/* -- */
|
||||
|
||||
PRBool
|
||||
|
@ -1388,7 +1344,7 @@ pref_ErrorReporter(JSContext *cx, const char *message,
|
|||
/* StandardAlert doesn't handle linefeeds. Use spaces to avoid garbage characters. */
|
||||
last = PR_sprintf_append(last, " ");
|
||||
#else
|
||||
last = PR_sprintf_append(last, LINEBREAK LINEBREAK);
|
||||
last = PR_sprintf_append(last, NS_LINEBREAK NS_LINEBREAK);
|
||||
#endif
|
||||
if (!report)
|
||||
last = PR_sprintf_append(last, "%s\n", message);
|
||||
|
@ -1461,10 +1417,7 @@ void pref_Alert(char* msg)
|
|||
static JSBool pref_HashJSPref(unsigned int argc, jsval *argv, PrefAction action)
|
||||
/* Native implementations of JavaScript functions
|
||||
pref -> pref_NativeDefaultPref
|
||||
defaultPref -> "
|
||||
userPref -> pref_NativeUserPref
|
||||
getPref -> pref_NativeGetPref
|
||||
config -> pref_NativeSetConfig
|
||||
*--------------------------------------------------------------------------------------*/
|
||||
{
|
||||
if (argc >= 2 && JSVAL_IS_STRING(argv[0]))
|
||||
|
|
|
@ -44,14 +44,3 @@ PLDHashOperator PR_CALLBACK pref_savePref(PLDHashTable*, PLDHashEntryHdr *, PRUi
|
|||
|
||||
int PR_CALLBACK pref_CompareStrings(const void *v1, const void *v2, void* unused);
|
||||
extern JSBool pref_InitInitialObjects(void);
|
||||
|
||||
#include "nsIFileSpec.h"
|
||||
|
||||
#ifdef XP_MAC
|
||||
# define LINEBREAK "\012"
|
||||
#elif defined(XP_WIN) || defined(XP_OS2)
|
||||
# define LINEBREAK "\015\012"
|
||||
#elif defined(XP_UNIX) || defined(XP_BEOS)
|
||||
# define LINEBREAK "\012"
|
||||
#endif /* XP_MAC */
|
||||
|
||||
|
|
|
@ -35,8 +35,6 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
platform.windows = true;
|
||||
|
||||
pref("ui.key.menuAccessKeyFocuses", true);
|
||||
|
||||
pref("font.name.serif.ar", "Times New Roman");
|
||||
|
|
|
@ -5,6 +5,8 @@ function upgradeCleanup()
|
|||
deleteThisFile("Components", "DOMDataSource.shlb");
|
||||
deleteThisFile("Components", "PSMGlue.shlb");
|
||||
deleteThisFile("Components", "ucth.shlb");
|
||||
deleteThisFile("Program", "defaults/pref/config.js");
|
||||
deleteThisFile("Program", "defaults/pref/initpref.js");
|
||||
deleteThisFile("Program", "defaults/wallet/URLFieldSchema.tbl");
|
||||
deleteThisFile("Program", "Essential Files/PSM.shlb");
|
||||
deleteThisFolder("Program", "psmdata");
|
||||
|
|
|
@ -6,6 +6,8 @@ function upgradeCleanup()
|
|||
deleteThisFile("Components", "libpsmglue.so");
|
||||
deleteThisFile("Components", "libsample.so");
|
||||
deleteThisFile("Components", "nsSample.js");
|
||||
deleteThisFile("Program", "defaults/pref/config.js");
|
||||
deleteThisFile("Program", "defaults/pref/initpref.js");
|
||||
deleteThisFile("Program", "defaults/wallet/URLFieldSchema.tbl");
|
||||
deleteThisFile("Program", "libcmt.so");
|
||||
deleteThisFile("Program", "libjpeg.so");
|
||||
|
|
|
@ -389,6 +389,8 @@ function upgradeCleanup()
|
|||
deleteThisFile("Program", "img3250.dll");
|
||||
deleteThisFile("Program", "gkgfxwin.dll");
|
||||
deleteThisFile("Program", "gkwidget.dll");
|
||||
deleteThisFile("Program", "defaults/pref/config.js");
|
||||
deleteThisFile("Program", "defaults/pref/initpref.js");
|
||||
deleteThisFile("Program", "defaults/pref/psm-glue.js");
|
||||
deleteThisFile("Program", "defaults/wallet/URLFieldSchema.tbl");
|
||||
deleteThisFile("Components", "gkhtml.dll");
|
||||
|
|
Загрузка…
Ссылка в новой задаче