2
modules/libpref/src/nsPrefService.cpp | 8 ++++++++
3
toolkit/xre/nsXREDirProvider.cpp | 4 ++++
4
xpcom/io/nsAppDirectoryServiceDefs.h | 1 +
5
xpcom/io/nsAppFileLocationProvider.cpp | 10 ++++++++++
6
4 files changed, 23 insertions(+)
8
Index: mozilla/toolkit/xre/nsXREDirProvider.cpp
9
===================================================================
10
--- mozilla.orig/toolkit/xre/nsXREDirProvider.cpp
11
+++ mozilla/toolkit/xre/nsXREDirProvider.cpp
13
nsCOMPtr<nsIFile> subdir;
14
while (NS_SUCCEEDED(files->GetNextFile(getter_AddRefs(subdir))) && subdir) {
15
mAppBundleDirectories.AppendObject(subdir);
16
LoadPlatformDirectory(subdir, mAppBundleDirectories);
20
static const char *const kAppendPrefDir[] = { "defaults", "preferences", nsnull };
21
+static const char *const kAppendSysPrefDir[] = { "defaults", "syspref", nsnull };
23
#ifdef DEBUG_bsmedberg
25
DumpFileArray(const char *key,
26
nsCOMArray<nsIFile> dirs)
28
fprintf(stderr, "nsXREDirProvider::GetFilesInternal(%s)\n", key);
31
else if (!strcmp(aProperty, NS_APP_PREFS_DEFAULTS_DIR_LIST)) {
32
nsCOMArray<nsIFile> directories;
34
LoadBundleDirectories();
36
LoadAppDirIntoArray(mXULAppDir, kAppendPrefDir, directories);
37
LoadDirsIntoArray(mAppBundleDirectories,
38
kAppendPrefDir, directories);
39
+ LoadAppDirIntoArray(mXULAppDir, kAppendSysPrefDir, directories);
40
+ LoadDirsIntoArray(mAppBundleDirectories,
41
+ kAppendSysPrefDir, directories);
43
rv = NS_NewArrayEnumerator(aResult, directories);
45
else if (!strcmp(aProperty, NS_EXT_PREFS_DEFAULTS_DIR_LIST)) {
46
nsCOMArray<nsIFile> directories;
48
LoadBundleDirectories();
49
LoadDirsIntoArray(mExtensionDirectories,
50
Index: mozilla/modules/libpref/src/nsPrefService.cpp
51
===================================================================
52
--- mozilla.orig/modules/libpref/src/nsPrefService.cpp
53
+++ mozilla/modules/libpref/src/nsPrefService.cpp
58
rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
60
NS_WARNING("Error parsing application default preferences.");
63
+ /* now, parse the "application" default system preferences */
64
+ rv = NS_GetSpecialDirectory(NS_APP_SYSPREF_DEFAULTS_50_DIR, getter_AddRefs(defaultPrefDir));
65
+ NS_ENSURE_SUCCESS(rv, rv);
66
+ rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
67
+ if (NS_FAILED(rv)) {
68
+ NS_WARNING("Error parsing application default preferences.");
71
rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST);
72
NS_ENSURE_SUCCESS(rv, rv);
74
NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
75
nsnull, NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID);
77
nsCOMPtr<nsIObserverService> observerService =
78
do_GetService("@mozilla.org/observer-service;1", &rv);
79
Index: mozilla/xpcom/io/nsAppDirectoryServiceDefs.h
80
===================================================================
81
--- mozilla.orig/xpcom/io/nsAppDirectoryServiceDefs.h
82
+++ mozilla/xpcom/io/nsAppDirectoryServiceDefs.h
84
// Files and directories which exist on a per-product basis
85
// --------------------------------------------------------------------------------------
87
#define NS_APP_APPLICATION_REGISTRY_FILE "AppRegF"
88
#define NS_APP_APPLICATION_REGISTRY_DIR "AppRegD"
90
#define NS_APP_DEFAULTS_50_DIR "DefRt" // The root dir of all defaults dirs
91
#define NS_APP_PREF_DEFAULTS_50_DIR "PrfDef"
92
+#define NS_APP_SYSPREF_DEFAULTS_50_DIR "SysPrfDef"
93
#define NS_APP_PROFILE_DEFAULTS_50_DIR "profDef" // The profile defaults of the "current"
94
// locale. Should be first choice.
95
#define NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR "ProfDefNoLoc" // The profile defaults of the "default"
96
// installed locale. Second choice
97
// when above is not available.
99
#define NS_APP_USER_PROFILES_ROOT_DIR "DefProfRt" // The dir where user profile dirs live.
100
#define NS_APP_USER_PROFILES_LOCAL_ROOT_DIR "DefProfLRt" // The dir where user profile temp dirs live.
101
Index: mozilla/xpcom/io/nsAppFileLocationProvider.cpp
102
===================================================================
103
--- mozilla.orig/xpcom/io/nsAppFileLocationProvider.cpp
104
+++ mozilla/xpcom/io/nsAppFileLocationProvider.cpp
106
#define NS_MACOSX_LOCAL_PLUGIN_DIR "OSXLocalPlugins"
107
#define NS_MAC_CLASSIC_PLUGIN_DIR "MacSysPlugins"
109
#define NS_SYSTEM_PLUGINS_DIR "SysPlugins"
112
#define DEFAULTS_DIR_NAME NS_LITERAL_CSTRING("defaults")
113
#define DEFAULTS_PREF_DIR_NAME NS_LITERAL_CSTRING("pref")
114
+#define DEFAULTS_SYSPREF_DIR_NAME NS_LITERAL_CSTRING("syspref")
115
#define DEFAULTS_PROFILE_DIR_NAME NS_LITERAL_CSTRING("profile")
116
#define RES_DIR_NAME NS_LITERAL_CSTRING("res")
117
#define CHROME_DIR_NAME NS_LITERAL_CSTRING("chrome")
118
#define PLUGINS_DIR_NAME NS_LITERAL_CSTRING("plugins")
119
#define SEARCH_DIR_NAME NS_LITERAL_CSTRING("searchplugins")
121
//*****************************************************************************
122
// nsAppFileLocationProvider::Constructor/Destructor
123
@@ -162,16 +163,25 @@
125
rv = CloneMozBinDirectory(getter_AddRefs(localFile));
126
if (NS_SUCCEEDED(rv)) {
127
rv = localFile->AppendRelativeNativePath(DEFAULTS_DIR_NAME);
128
if (NS_SUCCEEDED(rv))
129
rv = localFile->AppendRelativeNativePath(DEFAULTS_PREF_DIR_NAME);
132
+ else if (nsCRT::strcmp(prop, NS_APP_SYSPREF_DEFAULTS_50_DIR) == 0)
134
+ rv = CloneMozBinDirectory(getter_AddRefs(localFile));
135
+ if (NS_SUCCEEDED(rv)) {
136
+ rv = localFile->AppendRelativeNativePath(DEFAULTS_DIR_NAME);
137
+ if (NS_SUCCEEDED(rv))
138
+ rv = localFile->AppendRelativeNativePath(DEFAULTS_SYSPREF_DIR_NAME);
141
else if (nsCRT::strcmp(prop, NS_APP_PROFILE_DEFAULTS_50_DIR) == 0 ||
142
nsCRT::strcmp(prop, NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR) == 0)
144
rv = CloneMozBinDirectory(getter_AddRefs(localFile));
145
if (NS_SUCCEEDED(rv)) {
146
rv = localFile->AppendRelativeNativePath(DEFAULTS_DIR_NAME);
147
if (NS_SUCCEEDED(rv))
148
rv = localFile->AppendRelativeNativePath(DEFAULTS_PROFILE_DIR_NAME);