mozilla-kde.patch
branchfirefox112
changeset 1188 a2caa2a2494f
parent 1184 1c3d3217d679
child 1189 ba0c97b018a6
equal deleted inserted replaced
1187:17bc5a064ab4 1188:a2caa2a2494f
     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
    29  #endif
    29  #endif
    30  
    30  
    31  #ifdef MOZ_MEMORY
    31  #ifdef MOZ_MEMORY
    32  #  include "mozmemory.h"
    32  #  include "mozmemory.h"
    33  #endif
    33  #endif
    34 @@ -4882,16 +4883,27 @@ nsresult Preferences::InitInitialObjects
    34 @@ -4908,16 +4909,27 @@ nsresult Preferences::InitInitialObjects
    35      "unix.js"
    35      "unix.js"
    36  #  if defined(_AIX)
    36  #  if defined(_AIX)
    37      ,
    37      ,
    38      "aix.js"
    38      "aix.js"
    39  #  endif
    39  #  endif
    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 );
  1567 +        }
  1569 +        }
  1568 +    return NS_OK;
  1570 +    return NS_OK;
  1569 +    }
  1571 +    }
  1570 +
  1572 +
  1571 +
  1573 +
  1572 +NS_IMETHODIMP nsFilePicker::kdeAppsDialog(PRInt16 *aReturn)
  1574 +NS_IMETHODIMP nsFilePicker::kdeAppsDialog(nsIFilePicker::ResultCode *aReturn)
  1573 +    {
  1575 +    {
  1574 +    NS_ENSURE_ARG_POINTER(aReturn);
  1576 +    NS_ENSURE_ARG_POINTER(aReturn);
  1575 +
  1577 +
  1576 +    nsCString title;
  1578 +    nsCString title;
  1577 +    title.Adopt(ToNewUTF8String(mTitle));
  1579 +    title.Adopt(ToNewUTF8String(mTitle));
  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;