1 # HG changeset patch |
1 # HG changeset patch |
2 # User msirringhaus@suse.de |
2 # User msirringhaus@suse.de |
3 # Date 1559294891 -7200 |
3 # Date 1559294891 -7200 |
4 # Fri May 31 11:28:11 2019 +0200 |
4 # Fri May 31 11:28:11 2019 +0200 |
5 # Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112 |
5 # Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112 |
6 # Parent 191cd9e24a9e0812f74c808ceef611c8b10141e1 |
6 # Parent b6b4d42b51c6a815116505bf7e9b34a5e2f0c65b |
7 Description: Add KDE integration to Firefox (toolkit parts) |
7 Description: Add KDE integration to Firefox (toolkit parts) |
8 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
8 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
9 Author: Lubos Lunak <lunak@suse.com> |
9 Author: Lubos Lunak <lunak@suse.com> |
10 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
10 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
11 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
11 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
55 ArrayLength(specialFiles)); |
55 ArrayLength(specialFiles)); |
56 if (NS_FAILED(rv)) { |
56 if (NS_FAILED(rv)) { |
57 NS_WARNING("Error parsing application default preferences."); |
57 NS_WARNING("Error parsing application default preferences."); |
58 } |
58 } |
59 |
59 |
60 #if defined(MOZ_WIDGET_GTK) |
60 // Load jar:$app/omni.jar!/defaults/preferences/*.js |
61 // Under Flatpak/Snap package, load /etc/firefox/defaults/pref/*.js. |
61 // or jar:$gre/omni.jar!/defaults/preferences/*.js. |
62 @@ -4973,17 +4985,17 @@ nsresult Preferences::InitInitialObjects |
62 @@ -4982,17 +4994,17 @@ nsresult Preferences::InitInitialObjects |
63 } |
63 } |
64 |
64 |
65 nsCOMPtr<nsIFile> path = do_QueryInterface(elem); |
65 nsCOMPtr<nsIFile> path = do_QueryInterface(elem); |
66 if (!path) { |
66 if (!path) { |
67 continue; |
67 continue; |
71 - pref_LoadPrefsInDir(path, nullptr, 0); |
71 - pref_LoadPrefsInDir(path, nullptr, 0); |
72 + pref_LoadPrefsInDir(path, specialFiles, ArrayLength(specialFiles)); |
72 + pref_LoadPrefsInDir(path, specialFiles, ArrayLength(specialFiles)); |
73 } |
73 } |
74 } |
74 } |
75 |
75 |
76 if (XRE_IsParentProcess()) { |
76 #if defined(MOZ_WIDGET_GTK) |
77 SetupTelemetryPref(); |
77 // To ensure the system-wide preferences are not overwritten by |
78 } |
78 // firefox/browser/defauts/preferences/*.js we need to load |
79 |
79 // the /etc/firefox/defaults/pref/*.js settings as last. |
80 if (aIsStartup) { |
80 // Under Flatpak, the NS_OS_SYSTEM_CONFIG_DIR points to /app/etc/firefox |
81 diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build |
81 diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build |
82 --- a/modules/libpref/moz.build |
82 --- a/modules/libpref/moz.build |
83 +++ b/modules/libpref/moz.build |
83 +++ b/modules/libpref/moz.build |
84 @@ -122,16 +122,20 @@ EXPORTS.mozilla += [ |
84 @@ -122,16 +122,20 @@ EXPORTS.mozilla += [ |
85 ] |
85 ] |
163 with Files("**"): |
163 with Files("**"): |
164 BUG_COMPONENT = ("Toolkit", "Downloads API") |
164 BUG_COMPONENT = ("Toolkit", "Downloads API") |
165 diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm |
165 diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm |
166 --- a/toolkit/mozapps/downloads/HelperAppDlg.jsm |
166 --- a/toolkit/mozapps/downloads/HelperAppDlg.jsm |
167 +++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm |
167 +++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm |
168 @@ -1240,36 +1240,66 @@ nsUnknownContentTypeDialog.prototype = { |
168 @@ -1250,36 +1250,66 @@ nsUnknownContentTypeDialog.prototype = { |
169 params.handlerApp && |
169 params.handlerApp && |
170 params.handlerApp.executable && |
170 params.handlerApp.executable && |
171 params.handlerApp.executable.isFile() |
171 params.handlerApp.executable.isFile() |
172 ) { |
172 ) { |
173 // Remember the file they chose to run. |
173 // Remember the file they chose to run. |
345 return result.forget().downcast<nsISupports>(); |
345 return result.forget().downcast<nsISupports>(); |
346 } |
346 } |
347 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build |
347 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build |
348 --- a/toolkit/xre/moz.build |
348 --- a/toolkit/xre/moz.build |
349 +++ b/toolkit/xre/moz.build |
349 +++ b/toolkit/xre/moz.build |
350 @@ -92,17 +92,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "co |
350 @@ -91,17 +91,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "co |
351 "../components/printingui", |
351 "../components/printingui", |
352 ] |
352 ] |
353 elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit": |
353 elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit": |
354 UNIFIED_SOURCES += [ |
354 UNIFIED_SOURCES += [ |
355 "nsNativeAppSupportDefault.cpp", |
355 "nsNativeAppSupportDefault.cpp", |
1053 + |
1053 + |
1054 +#endif //nsKDERegistry_h__ |
1054 +#endif //nsKDERegistry_h__ |
1055 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
1055 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
1056 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
1056 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
1057 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
1057 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
1058 @@ -1,46 +1,49 @@ |
1058 @@ -1,48 +1,51 @@ |
1059 /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
1059 /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
1060 * |
1060 * |
1061 * This Source Code Form is subject to the terms of the Mozilla Public |
1061 * This Source Code Form is subject to the terms of the Mozilla Public |
1062 * License, v. 2.0. If a copy of the MPL was not distributed with this |
1062 * License, v. 2.0. If a copy of the MPL was not distributed with this |
1063 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
1063 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
1080 + return nsCommonRegistry::LoadURL(aURI); |
1080 + return nsCommonRegistry::LoadURL(aURI); |
1081 } |
1081 } |
1082 |
1082 |
1083 NS_IMETHODIMP |
1083 NS_IMETHODIMP |
1084 nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) { |
1084 nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) { |
1085 // if mDefaultApplication is set, it means the application has been set from |
1085 // if a default app is set, it means the application has been set from |
1086 // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to |
1086 // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to |
1087 // give the GNOME answer. |
1087 // give the GNOME answer. |
1088 if (mDefaultApplication) return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); |
1088 if (GetDefaultApplication()) { |
|
1089 return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); |
|
1090 } |
1089 |
1091 |
1090 *_retval = false; |
1092 *_retval = false; |
1091 |
1093 |
1092 if (mClass == eProtocolInfo) { |
1094 if (mClass == eProtocolInfo) { |
1093 - *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get()); |
1095 - *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get()); |
1108 } |
1110 } |
1109 |
1111 |
1110 if (*_retval) return NS_OK; |
1112 if (*_retval) return NS_OK; |
1111 |
1113 |
1112 return NS_OK; |
1114 return NS_OK; |
1113 @@ -50,16 +53,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi |
1115 @@ -54,16 +57,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi |
1114 // if mDefaultApplication is set, it means the application has been set from |
|
1115 // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to |
|
1116 // give the GNOME answer. |
1116 // give the GNOME answer. |
1117 if (mDefaultApplication) return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile); |
1117 if (GetDefaultApplication()) { |
|
1118 return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile); |
|
1119 } |
1118 |
1120 |
1119 nsAutoCString nativePath; |
1121 nsAutoCString nativePath; |
1120 aFile->GetNativePath(nativePath); |
1122 aFile->GetNativePath(nativePath); |
1121 |
1123 |
1122 + if( nsKDEUtils::kdeSupport()) { |
1124 + if( nsKDEUtils::kdeSupport()) { |
1128 + command.AppendElement( "MIMETYPE"_ns ); |
1130 + command.AppendElement( "MIMETYPE"_ns ); |
1129 + command.AppendElement( mSchemeOrType ); |
1131 + command.AppendElement( mSchemeOrType ); |
1130 + if( nsKDEUtils::command( command )) |
1132 + if( nsKDEUtils::command( command )) |
1131 + return NS_OK; |
1133 + return NS_OK; |
1132 + } |
1134 + } |
1133 + if (!mDefaultApplication) |
1135 + if (!GetDefaultApplication()) |
1134 + return NS_ERROR_FILE_NOT_FOUND; |
1136 + return NS_ERROR_FILE_NOT_FOUND; |
1135 + |
1137 + |
1136 + return LaunchWithIProcess(mDefaultApplication, nativePath); |
1138 + return LaunchWithIProcess(GetDefaultApplication(), nativePath); |
1137 + } |
1139 + } |
1138 + |
1140 + |
1139 nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); |
1141 nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); |
1140 if (!giovfs) { |
1142 if (!giovfs) { |
1141 return NS_ERROR_FAILURE; |
1143 return NS_ERROR_FAILURE; |
1243 gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions)); |
1245 gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions)); |
1244 return gnomeInfo.forget(); |
1246 return gnomeInfo.forget(); |
1245 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build |
1247 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build |
1246 --- a/widget/gtk/moz.build |
1248 --- a/widget/gtk/moz.build |
1247 +++ b/widget/gtk/moz.build |
1249 +++ b/widget/gtk/moz.build |
1248 @@ -147,16 +147,17 @@ FINAL_LIBRARY = "xul" |
1250 @@ -142,16 +142,17 @@ FINAL_LIBRARY = "xul" |
1249 |
1251 |
1250 LOCAL_INCLUDES += [ |
1252 LOCAL_INCLUDES += [ |
1251 "/layout/base", |
1253 "/layout/base", |
1252 "/layout/forms", |
1254 "/layout/forms", |
1253 "/layout/generic", |
1255 "/layout/generic", |
1281 |
1283 |
1282 #include "mozilla/Types.h" |
1284 #include "mozilla/Types.h" |
1283 #include "nsGtkUtils.h" |
1285 #include "nsGtkUtils.h" |
1284 #include "nsIFileURL.h" |
1286 #include "nsIFileURL.h" |
1285 #include "nsIGIOService.h" |
1287 #include "nsIGIOService.h" |
1286 @@ -21,16 +22,18 @@ |
1288 @@ -23,16 +24,18 @@ |
1287 #include "nsArrayEnumerator.h" |
1289 #include "nsArrayEnumerator.h" |
1288 #include "nsEnumeratorUtils.h" |
1290 #include "nsEnumeratorUtils.h" |
1289 #include "nsNetUtil.h" |
1291 #include "nsNetUtil.h" |
1290 #include "nsReadableUtils.h" |
1292 #include "nsReadableUtils.h" |
1291 #include "MozContainer.h" |
1293 #include "MozContainer.h" |
1300 # include "mozilla/Logging.h" |
1302 # include "mozilla/Logging.h" |
1301 # include "nsTArray.h" |
1303 # include "nsTArray.h" |
1302 # include "Units.h" |
1304 # include "Units.h" |
1303 extern mozilla::LazyLogModule gWidgetLog; |
1305 extern mozilla::LazyLogModule gWidgetLog; |
1304 # define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args) |
1306 # define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args) |
1305 @@ -235,17 +238,19 @@ nsFilePicker::AppendFilters(int32_t aFil |
1307 @@ -237,17 +240,19 @@ nsFilePicker::AppendFilters(int32_t aFil |
1306 mAllowURLs = !!(aFilterMask & filterAllowURLs); |
1308 mAllowURLs = !!(aFilterMask & filterAllowURLs); |
1307 return nsBaseFilePicker::AppendFilters(aFilterMask); |
1309 return nsBaseFilePicker::AppendFilters(aFilterMask); |
1308 } |
1310 } |
1309 |
1311 |
1310 NS_IMETHODIMP |
1312 NS_IMETHODIMP |
1321 CopyUTF16toUTF8(aFilter, filter); |
1323 CopyUTF16toUTF8(aFilter, filter); |
1322 CopyUTF16toUTF8(aTitle, name); |
1324 CopyUTF16toUTF8(aTitle, name); |
1323 |
1325 |
1324 mFilters.AppendElement(filter); |
1326 mFilters.AppendElement(filter); |
1325 mFilterNames.AppendElement(name); |
1327 mFilterNames.AppendElement(name); |
1326 @@ -345,16 +350,39 @@ nsresult nsFilePicker::Show(int16_t* aRe |
1328 @@ -347,16 +352,39 @@ nsresult nsFilePicker::Show(nsIFilePicke |
1327 return NS_OK; |
1329 return NS_OK; |
1328 } |
1330 } |
1329 |
1331 |
1330 NS_IMETHODIMP |
1332 NS_IMETHODIMP |
1331 nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) { |
1333 nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) { |
1337 + mCallback = aCallback; |
1339 + mCallback = aCallback; |
1338 + mRunning = true; |
1340 + mRunning = true; |
1339 + NS_ADDREF_THIS(); |
1341 + NS_ADDREF_THIS(); |
1340 + g_idle_add([](gpointer data) -> gboolean { |
1342 + g_idle_add([](gpointer data) -> gboolean { |
1341 + nsFilePicker* queuedPicker = (nsFilePicker*) data; |
1343 + nsFilePicker* queuedPicker = (nsFilePicker*) data; |
1342 + int16_t result; |
1344 + nsIFilePicker::ResultCode result; |
1343 + queuedPicker->kdeFileDialog(&result); |
1345 + queuedPicker->kdeFileDialog(&result); |
1344 + if (queuedPicker->mCallback) { |
1346 + if (queuedPicker->mCallback) { |
1345 + queuedPicker->mCallback->Done(result); |
1347 + queuedPicker->mCallback->Done(result); |
1346 + queuedPicker->mCallback = nullptr; |
1348 + queuedPicker->mCallback = nullptr; |
1347 + } else { |
1349 + } else { |
1361 GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
1363 GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
1362 |
1364 |
1363 GtkFileChooserAction action = GetGtkFileChooserAction(mMode); |
1365 GtkFileChooserAction action = GetGtkFileChooserAction(mMode); |
1364 |
1366 |
1365 const gchar* accept_button; |
1367 const gchar* accept_button; |
1366 @@ -574,16 +602,244 @@ void nsFilePicker::Done(void* file_choos |
1368 @@ -628,16 +656,244 @@ void nsFilePicker::Done(void* file_choos |
1367 mCallback->Done(result); |
1369 mCallback->Done(result); |
1368 mCallback = nullptr; |
1370 mCallback = nullptr; |
1369 } else { |
1371 } else { |
1370 mResult = result; |
1372 mResult = result; |
1371 } |
1373 } |
1393 + GtkWindow *parent_widget = GTK_WINDOW(widget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
1395 + GtkWindow *parent_widget = GTK_WINDOW(widget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
1394 + GdkWindow* gdk_window = gtk_widget_get_window( gtk_widget_get_toplevel( GTK_WIDGET( parent_widget ))); |
1396 + GdkWindow* gdk_window = gtk_widget_get_window( gtk_widget_get_toplevel( GTK_WIDGET( parent_widget ))); |
1395 + return GDK_WINDOW_XID( gdk_window ); |
1397 + return GDK_WINDOW_XID( gdk_window ); |
1396 + } |
1398 + } |
1397 + |
1399 + |
1398 +NS_IMETHODIMP nsFilePicker::kdeFileDialog(PRInt16 *aReturn) |
1400 +NS_IMETHODIMP nsFilePicker::kdeFileDialog(nsIFilePicker::ResultCode *aReturn) |
1399 + { |
1401 + { |
1400 + NS_ENSURE_ARG_POINTER(aReturn); |
1402 + NS_ENSURE_ARG_POINTER(aReturn); |
1401 + |
1403 + |
1402 + if( mMode == modeOpen && mFilters.Length() == 1 && mFilters[ 0 ].EqualsLiteral( "..apps" )) |
1404 + if( mMode == modeOpen && mFilters.Length() == 1 && mFilters[ 0 ].EqualsLiteral( "..apps" )) |
1403 + return kdeAppsDialog( aReturn ); |
1405 + return kdeAppsDialog( aReturn ); |
1609 const gchar*))dlsym(RTLD_DEFAULT, |
1611 const gchar*))dlsym(RTLD_DEFAULT, |
1610 "gtk_file_chooser_native_new"); |
1612 "gtk_file_chooser_native_new"); |
1611 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h |
1613 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h |
1612 --- a/widget/gtk/nsFilePicker.h |
1614 --- a/widget/gtk/nsFilePicker.h |
1613 +++ b/widget/gtk/nsFilePicker.h |
1615 +++ b/widget/gtk/nsFilePicker.h |
1614 @@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi |
1616 @@ -69,16 +69,22 @@ class nsFilePicker : public nsBaseFilePi |
1615 nsString mDefaultExtension; |
1617 nsString mDefaultExtension; |
1616 |
1618 |
1617 nsTArray<nsCString> mFilters; |
1619 nsTArray<nsCString> mFilters; |
1618 nsTArray<nsCString> mFilterNames; |
1620 nsTArray<nsCString> mFilterNames; |
1619 |
1621 |
1620 private: |
1622 private: |
1621 static nsIFile* mPrevDisplayDirectory; |
1623 static nsIFile* mPrevDisplayDirectory; |
1622 |
1624 |
1623 + bool kdeRunning(); |
1625 + bool kdeRunning(); |
1624 + bool getKdeRunning(); |
1626 + bool getKdeRunning(); |
1625 + NS_IMETHODIMP kdeFileDialog(PRInt16 *aReturn); |
1627 + NS_IMETHODIMP kdeFileDialog(nsIFilePicker::ResultCode *aReturn); |
1626 + NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn); |
1628 + NS_IMETHODIMP kdeAppsDialog(nsIFilePicker::ResultCode *aReturn); |
1627 + nsCString kdeMakeFilter( int index ); |
1629 + nsCString kdeMakeFilter( int index ); |
1628 + |
1630 + |
1629 void* GtkFileChooserNew(const gchar* title, GtkWindow* parent, |
1631 void* GtkFileChooserNew(const gchar* title, GtkWindow* parent, |
1630 GtkFileChooserAction action, |
1632 GtkFileChooserAction action, |
1631 const gchar* accept_label); |
1633 const gchar* accept_label); |
1805 # include <Carbon/Carbon.h> |
1807 # include <Carbon/Carbon.h> |
1806 # include "CocoaFileUtils.h" |
1808 # include "CocoaFileUtils.h" |
1807 # include "prmem.h" |
1809 # include "prmem.h" |
1808 # include "plbase64.h" |
1810 # include "plbase64.h" |
1809 |
1811 |
1810 @@ -2157,20 +2158,29 @@ nsLocalFile::SetPersistentDescriptor(con |
1812 @@ -2167,20 +2168,29 @@ nsLocalFile::SetPersistentDescriptor(con |
1811 |
1813 |
1812 NS_IMETHODIMP |
1814 NS_IMETHODIMP |
1813 nsLocalFile::Reveal() { |
1815 nsLocalFile::Reveal() { |
1814 if (!FilePreferences::IsAllowedPath(mPath)) { |
1816 if (!FilePreferences::IsAllowedPath(mPath)) { |
1815 return NS_ERROR_FILE_ACCESS_DENIED; |
1817 return NS_ERROR_FILE_ACCESS_DENIED; |
1837 if (NS_SUCCEEDED(GetCFURL(&url))) { |
1839 if (NS_SUCCEEDED(GetCFURL(&url))) { |
1838 nsresult rv = CocoaFileUtils::RevealFileInFinder(url); |
1840 nsresult rv = CocoaFileUtils::RevealFileInFinder(url); |
1839 ::CFRelease(url); |
1841 ::CFRelease(url); |
1840 return rv; |
1842 return rv; |
1841 } |
1843 } |
1842 @@ -2182,16 +2192,23 @@ nsLocalFile::Reveal() { |
1844 @@ -2192,16 +2202,23 @@ nsLocalFile::Reveal() { |
1843 |
1845 |
1844 NS_IMETHODIMP |
1846 NS_IMETHODIMP |
1845 nsLocalFile::Launch() { |
1847 nsLocalFile::Launch() { |
1846 if (!FilePreferences::IsAllowedPath(mPath)) { |
1848 if (!FilePreferences::IsAllowedPath(mPath)) { |
1847 return NS_ERROR_FILE_ACCESS_DENIED; |
1849 return NS_ERROR_FILE_ACCESS_DENIED; |