mozilla-kde.patch
changeset 881 1268ddc9dc16
parent 869 0dd25a92df97
child 885 ee3c462047d5
equal deleted inserted replaced
880:349bcaa18df4 881:1268ddc9dc16
     1 # HG changeset patch
     1 # HG changeset patch
     2 # Parent  5f8cbb078ab0d5696255c2f514c6333666b47da9
     2 # Parent  3f3d1e5db92a45cf3758ee5ba77c577fcfb364c9
     3 Description: Add KDE integration to Firefox (toolkit parts)
     3 Description: Add KDE integration to Firefox (toolkit parts)
     4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
     4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
     5 Author: Lubos Lunak <lunak@suse.com>
     5 Author: Lubos Lunak <lunak@suse.com>
     6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
     6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
     7      https://bugzilla.novell.com/show_bug.cgi?id=170055
     7      https://bugzilla.novell.com/show_bug.cgi?id=170055
    44  
    44  
    45  #include "prefapi.h"
    45  #include "prefapi.h"
    46  #include "prefread.h"
    46  #include "prefread.h"
    47  #include "prefapi_private_data.h"
    47  #include "prefapi_private_data.h"
    48  
    48  
    49 @@ -1154,16 +1155,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
    49 @@ -1153,16 +1154,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
    50  
    50  
    51  static nsresult pref_LoadPrefsInDirList(const char *listId)
    51  static nsresult pref_LoadPrefsInDirList(const char *listId)
    52  {
    52  {
    53    nsresult rv;
    53    nsresult rv;
    54    nsCOMPtr<nsIProperties> dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
    54    nsCOMPtr<nsIProperties> dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
    79                getter_AddRefs(list));
    79                getter_AddRefs(list));
    80    if (!list)
    80    if (!list)
    81      return NS_OK;
    81      return NS_OK;
    82  
    82  
    83    bool hasMore;
    83    bool hasMore;
    84 @@ -1179,17 +1198,17 @@ static nsresult pref_LoadPrefsInDirList(
    84 @@ -1178,17 +1197,17 @@ static nsresult pref_LoadPrefsInDirList(
    85  
    85  
    86      nsAutoCString leaf;
    86      nsAutoCString leaf;
    87      path->GetNativeLeafName(leaf);
    87      path->GetNativeLeafName(leaf);
    88  
    88  
    89      // Do we care if a file provided by this process fails to load?
    89      // Do we care if a file provided by this process fails to load?
    98  
    98  
    99  static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name)
    99  static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name)
   100  {
   100  {
   101    nsZipItemPtr<char> manifest(jarReader, name, true);
   101    nsZipItemPtr<char> manifest(jarReader, name, true);
   102    NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
   102    NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
   103 @@ -1283,26 +1302,38 @@ static nsresult pref_InitInitialObjects(
   103 @@ -1282,26 +1301,38 @@ static nsresult pref_InitInitialObjects(
   104    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
   104    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
   105    static const char* specialFiles[] = {
   105    static const char* specialFiles[] = {
   106  #if defined(XP_MACOSX)
   106  #if defined(XP_MACOSX)
   107      "macprefs.js"
   107      "macprefs.js"
   108  #elif defined(XP_WIN)
   108  #elif defined(XP_WIN)
   140    nsRefPtr<nsZipArchive> appJarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::APP);
   140    nsRefPtr<nsZipArchive> appJarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::APP);
   141    // GetReader(mozilla::Omnijar::APP) returns null when $app == $gre, in which
   141    // GetReader(mozilla::Omnijar::APP) returns null when $app == $gre, in which
   142 diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
   142 diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
   143 --- a/python/mozbuild/mozpack/chrome/flags.py
   143 --- a/python/mozbuild/mozpack/chrome/flags.py
   144 +++ b/python/mozbuild/mozpack/chrome/flags.py
   144 +++ b/python/mozbuild/mozpack/chrome/flags.py
   145 @@ -209,16 +209,17 @@ class Flags(OrderedDict):
   145 @@ -211,16 +211,17 @@ class Flags(OrderedDict):
   146          'contentaccessible': Flag,
   146          'contentaccessible': Flag,
   147          'os': StringFlag,
   147          'os': StringFlag,
   148          'osversion': VersionFlag,
   148          'osversion': VersionFlag,
   149          'abi': StringFlag,
   149          'abi': StringFlag,
   150          'platform': Flag,
   150          'platform': Flag,
   161             flags = Flags('contentaccessible=yes', 'appversion>=3.5')
   161             flags = Flags('contentaccessible=yes', 'appversion>=3.5')
   162          '''
   162          '''
   163 diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
   163 diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
   164 --- a/python/mozbuild/mozpack/chrome/manifest.py
   164 --- a/python/mozbuild/mozpack/chrome/manifest.py
   165 +++ b/python/mozbuild/mozpack/chrome/manifest.py
   165 +++ b/python/mozbuild/mozpack/chrome/manifest.py
   166 @@ -31,16 +31,17 @@ class ManifestEntry(object):
   166 @@ -33,16 +33,17 @@ class ManifestEntry(object):
   167          'application',
   167          'application',
   168          'platformversion',
   168          'platformversion',
   169          'os',
   169          'os',
   170          'osversion',
   170          'osversion',
   171          'abi',
   171          'abi',
   182          self.base = base
   182          self.base = base
   183          self.flags = Flags(*flags)
   183          self.flags = Flags(*flags)
   184 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
   184 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
   185 --- a/toolkit/components/downloads/moz.build
   185 --- a/toolkit/components/downloads/moz.build
   186 +++ b/toolkit/components/downloads/moz.build
   186 +++ b/toolkit/components/downloads/moz.build
   187 @@ -67,14 +67,15 @@ if not CONFIG['MOZ_SUITE']:
   187 @@ -67,15 +67,16 @@ if not CONFIG['MOZ_SUITE']:
   188      ]
   188      ]
   189  
   189  
   190  FAIL_ON_WARNINGS = True
   190  FAIL_ON_WARNINGS = True
   191  
   191  
   192  FINAL_LIBRARY = 'xul'
   192  FINAL_LIBRARY = 'xul'
   197 +    '/ipc/chromium/src',
   197 +    '/ipc/chromium/src',
   198 +    '/toolkit/xre'
   198 +    '/toolkit/xre'
   199  ]
   199  ]
   200  
   200  
   201  DEFINES['GOOGLE_PROTOBUF_NO_RTTI'] = True
   201  DEFINES['GOOGLE_PROTOBUF_NO_RTTI'] = True
       
   202  DEFINES['GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER'] = True
   202  
   203  
   203  CXXFLAGS += CONFIG['TK_CFLAGS']
   204  CXXFLAGS += CONFIG['TK_CFLAGS']
   204 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
   205 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
   205 --- a/toolkit/components/downloads/nsDownloadManager.cpp
   206 --- a/toolkit/components/downloads/nsDownloadManager.cpp
   206 +++ b/toolkit/components/downloads/nsDownloadManager.cpp
   207 +++ b/toolkit/components/downloads/nsDownloadManager.cpp
   773 +</bindings>
   774 +</bindings>
   774 diff --git a/toolkit/content/widgets/preferences-kde.xml b/toolkit/content/widgets/preferences-kde.xml
   775 diff --git a/toolkit/content/widgets/preferences-kde.xml b/toolkit/content/widgets/preferences-kde.xml
   775 new file mode 100644
   776 new file mode 100644
   776 --- /dev/null
   777 --- /dev/null
   777 +++ b/toolkit/content/widgets/preferences-kde.xml
   778 +++ b/toolkit/content/widgets/preferences-kde.xml
   778 @@ -0,0 +1,1357 @@
   779 @@ -0,0 +1,1403 @@
   779 +<?xml version="1.0"?>
   780 +<?xml version="1.0"?>
   780 +
   781 +
   781 +<!DOCTYPE bindings [
   782 +<!DOCTYPE bindings [
   782 +  <!ENTITY % preferencesDTD SYSTEM "chrome://global/locale/preferences.dtd">
   783 +  <!ENTITY % preferencesDTD SYSTEM "chrome://global/locale/preferences.dtd">
   783 +  %preferencesDTD;
   784 +  %preferencesDTD;
  1959 +      <method name="writePreferences">
  1960 +      <method name="writePreferences">
  1960 +        <parameter name="aFlushToDisk"/>
  1961 +        <parameter name="aFlushToDisk"/>
  1961 +        <body>
  1962 +        <body>
  1962 +        <![CDATA[
  1963 +        <![CDATA[
  1963 +          // Write all values to preferences.
  1964 +          // Write all values to preferences.
       
  1965 +          if (this._deferredValueUpdateElements.size) {
       
  1966 +            this._finalizeDeferredElements();
       
  1967 +          }
       
  1968 +
  1964 +          var preferences = this.preferences;
  1969 +          var preferences = this.preferences;
  1965 +          for (var i = 0; i < preferences.length; ++i) {
  1970 +          for (var i = 0; i < preferences.length; ++i) {
  1966 +            var preference = preferences[i];
  1971 +            var preference = preferences[i];
  1967 +            preference.batching = true;
  1972 +            preference.batching = true;
  1968 +            preference.valueFromPreferences = preference.value;
  1973 +            preference.valueFromPreferences = preference.value;
  2035 +          return temp.nodeType == Node.ELEMENT_NODE ? temp : aStartElement;
  2040 +          return temp.nodeType == Node.ELEMENT_NODE ? temp : aStartElement;
  2036 +        ]]>
  2041 +        ]]>
  2037 +        </body>
  2042 +        </body>
  2038 +      </method>
  2043 +      </method>
  2039 +      
  2044 +      
       
  2045 +      <field name="DeferredTask" readonly="true">
       
  2046 +        let targetObj = {};
       
  2047 +        Components.utils.import("resource://gre/modules/DeferredTask.jsm", targetObj);
       
  2048 +        targetObj.DeferredTask;
       
  2049 +      </field>
       
  2050 +      <method name="_deferredValueUpdate">
       
  2051 +        <parameter name="aElement"/>
       
  2052 +        <body>
       
  2053 +        <![CDATA[
       
  2054 +          delete aElement._deferredValueUpdateTask;
       
  2055 +          let preference = document.getElementById(aElement.getAttribute("preference"));
       
  2056 +          let prefVal = preference.getElementValue(aElement);
       
  2057 +          preference.value = prefVal;
       
  2058 +          this._deferredValueUpdateElements.delete(aElement);
       
  2059 +        ]]>
       
  2060 +        </body>
       
  2061 +      </method>
       
  2062 +      <field name="_deferredValueUpdateElements">
       
  2063 +        new Set();
       
  2064 +      </field>
       
  2065 +      <method name="_finalizeDeferredElements">
       
  2066 +        <body>
       
  2067 +        <![CDATA[
       
  2068 +          for (let el of this._deferredValueUpdateElements) {
       
  2069 +            if (el._deferredValueUpdateTask) {
       
  2070 +              el._deferredValueUpdateTask.finalize();
       
  2071 +            }
       
  2072 +          }
       
  2073 +        ]]>
       
  2074 +        </body>
       
  2075 +      </method>
  2040 +      <method name="userChangedValue">
  2076 +      <method name="userChangedValue">
  2041 +        <parameter name="aElement"/>
  2077 +        <parameter name="aElement"/>
  2042 +        <body>
  2078 +        <body>
  2043 +        <![CDATA[
  2079 +        <![CDATA[
  2044 +          var element = this.getPreferenceElement(aElement);
  2080 +          let element = this.getPreferenceElement(aElement);
  2045 +          if (element.hasAttribute("preference")) {
  2081 +          if (element.hasAttribute("preference")) {
  2046 +            var preference = document.getElementById(element.getAttribute("preference"));
  2082 +            if (element.getAttribute("delayprefsave") != "true") {
  2047 +            var prefVal = preference.getElementValue(element);
  2083 +              var preference = document.getElementById(element.getAttribute("preference"));
  2048 +            preference.value = prefVal;
  2084 +              var prefVal = preference.getElementValue(element);
       
  2085 +              preference.value = prefVal;
       
  2086 +            } else {
       
  2087 +              if (!element._deferredValueUpdateTask) {
       
  2088 +                element._deferredValueUpdateTask = new this.DeferredTask(this._deferredValueUpdate.bind(this, element), 1000);
       
  2089 +                this._deferredValueUpdateElements.add(element);
       
  2090 +              } else {
       
  2091 +                // Each time the preference is changed, restart the delay.
       
  2092 +                element._deferredValueUpdateTask.disarm();
       
  2093 +              }
       
  2094 +              element._deferredValueUpdateTask.arm();
       
  2095 +            }
  2049 +          }
  2096 +          }
  2050 +        ]]>
  2097 +        ]]>
  2051 +        </body>
  2098 +        </body>
  2052 +      </method>
  2099 +      </method>
  2053 +      
  2100 +      
  2228 +}
  2275 +}
  2229 +
  2276 +
  2230 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
  2277 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
  2231 --- a/toolkit/xre/moz.build
  2278 --- a/toolkit/xre/moz.build
  2232 +++ b/toolkit/xre/moz.build
  2279 +++ b/toolkit/xre/moz.build
  2233 @@ -45,17 +45,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
  2280 @@ -43,17 +43,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
  2234      GENERATED_SOURCES += [
  2281  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
  2235          'moc_nsNativeAppSupportQt.cpp',
  2282      EXPORTS += ['nsQAppInstance.h']
  2236      ]
       
  2237      SOURCES += [
  2283      SOURCES += [
       
  2284          '!moc_nsNativeAppSupportQt.cpp',
  2238          'nsNativeAppSupportQt.cpp',
  2285          'nsNativeAppSupportQt.cpp',
  2239          'nsQAppInstance.cpp',
  2286          'nsQAppInstance.cpp',
  2240      ]
  2287      ]
  2241  elif CONFIG['MOZ_ENABLE_GTK']:
  2288  elif CONFIG['MOZ_ENABLE_GTK']:
  2242 +    EXPORTS += ['nsKDEUtils.h']
  2289 +    EXPORTS += ['nsKDEUtils.h']
  3104        return gnomeInfo.forget();
  3151        return gnomeInfo.forget();
  3105      }
  3152      }
  3106 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
  3153 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
  3107 --- a/widget/gtk/moz.build
  3154 --- a/widget/gtk/moz.build
  3108 +++ b/widget/gtk/moz.build
  3155 +++ b/widget/gtk/moz.build
  3109 @@ -79,16 +79,17 @@ else:
  3156 @@ -80,16 +80,17 @@ else:
  3110  include('/ipc/chromium/chromium-config.mozbuild')
  3157  include('/ipc/chromium/chromium-config.mozbuild')
  3111  
  3158  
  3112  FINAL_LIBRARY = 'xul'
  3159  FINAL_LIBRARY = 'xul'
  3113  
  3160  
  3114  LOCAL_INCLUDES += [
  3161  LOCAL_INCLUDES += [
  3156 +#include "nsKDEUtils.h"
  3203 +#include "nsKDEUtils.h"
  3157  
  3204  
  3158  using namespace mozilla;
  3205  using namespace mozilla;
  3159  
  3206  
  3160  #define MAX_PREVIEW_SIZE 180
  3207  #define MAX_PREVIEW_SIZE 180
       
  3208  // bug 1184009
       
  3209  #define MAX_PREVIEW_SOURCE_SIZE 4096
  3161  
  3210  
  3162  nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
  3211  nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
  3163  
  3212 @@ -246,17 +248,19 @@ nsFilePicker::AppendFilters(int32_t aFil
  3164  void
       
  3165 @@ -238,17 +240,19 @@ nsFilePicker::AppendFilters(int32_t aFil
       
  3166    return nsBaseFilePicker::AppendFilters(aFilterMask);
  3213    return nsBaseFilePicker::AppendFilters(aFilterMask);
  3167  }
  3214  }
  3168  
  3215  
  3169  NS_IMETHODIMP
  3216  NS_IMETHODIMP
  3170  nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
  3217  nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
  3181    CopyUTF16toUTF8(aFilter, filter);
  3228    CopyUTF16toUTF8(aFilter, filter);
  3182    CopyUTF16toUTF8(aTitle, name);
  3229    CopyUTF16toUTF8(aTitle, name);
  3183  
  3230  
  3184    mFilters.AppendElement(filter);
  3231    mFilters.AppendElement(filter);
  3185    mFilterNames.AppendElement(name);
  3232    mFilterNames.AppendElement(name);
  3186 @@ -363,16 +367,32 @@ nsFilePicker::Show(int16_t *aReturn)
  3233 @@ -371,16 +375,32 @@ nsFilePicker::Show(int16_t *aReturn)
  3187  
  3234  
  3188  NS_IMETHODIMP
  3235  NS_IMETHODIMP
  3189  nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
  3236  nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
  3190  {
  3237  {
  3191    // Can't show two dialogs concurrently with the same filepicker
  3238    // Can't show two dialogs concurrently with the same filepicker
  3214    GtkWindow *parent_widget =
  3261    GtkWindow *parent_widget =
  3215      GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  3262      GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  3216  
  3263  
  3217    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  3264    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  3218    const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
  3265    const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
  3219 @@ -551,8 +571,235 @@ nsFilePicker::Done(GtkWidget* file_choos
  3266 @@ -595,8 +615,235 @@ nsFilePicker::Done(GtkWidget* file_choos
  3220    if (mCallback) {
  3267    if (mCallback) {
  3221      mCallback->Done(result);
  3268      mCallback->Done(result);
  3222      mCallback = nullptr;
  3269      mCallback = nullptr;
  3223    } else {
  3270    } else {
  3224      mResult = result;
  3271      mResult = result;
  3453 +    }
  3500 +    }
  3454 +
  3501 +
  3455 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
  3502 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
  3456 --- a/widget/gtk/nsFilePicker.h
  3503 --- a/widget/gtk/nsFilePicker.h
  3457 +++ b/widget/gtk/nsFilePicker.h
  3504 +++ b/widget/gtk/nsFilePicker.h
  3458 @@ -68,11 +68,17 @@ protected:
  3505 @@ -69,14 +69,20 @@ protected:
  3459    nsString  mDefault;
       
  3460    nsString  mDefaultExtension;
  3506    nsString  mDefaultExtension;
  3461  
  3507  
  3462    nsTArray<nsCString> mFilters;
  3508    nsTArray<nsCString> mFilters;
  3463    nsTArray<nsCString> mFilterNames;
  3509    nsTArray<nsCString> mFilterNames;
  3464  
  3510  
  3465  private:
  3511  private:
  3466    static nsIFile *mPrevDisplayDirectory;
  3512    static nsIFile *mPrevDisplayDirectory;
  3467 +
  3513  
  3468 +  bool kdeRunning();
  3514 +  bool kdeRunning();
  3469 +  bool getKdeRunning();
  3515 +  bool getKdeRunning();
  3470 +  NS_IMETHODIMP kdeFileDialog(PRInt16 *aReturn);
  3516 +  NS_IMETHODIMP kdeFileDialog(PRInt16 *aReturn);
  3471 +  NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
  3517 +  NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
  3472 +  nsCString kdeMakeFilter( int index );
  3518 +  nsCString kdeMakeFilter( int index );
       
  3519 +
       
  3520  #if (MOZ_WIDGET_GTK == 3)
       
  3521    GtkFileChooserWidget *mFileChooserDelegate;
       
  3522  #endif
  3473  };
  3523  };
  3474  
  3524  
  3475  #endif
  3525  #endif
  3476 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
  3526 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
  3477 --- a/xpcom/components/ManifestParser.cpp
  3527 --- a/xpcom/components/ManifestParser.cpp
  3626  if CONFIG['MOZ_WIDGET_GTK']:
  3676  if CONFIG['MOZ_WIDGET_GTK']:
  3627      CXXFLAGS += CONFIG['TK_CFLAGS']
  3677      CXXFLAGS += CONFIG['TK_CFLAGS']
  3628 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
  3678 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
  3629 --- a/xpcom/io/nsLocalFileUnix.cpp
  3679 --- a/xpcom/io/nsLocalFileUnix.cpp
  3630 +++ b/xpcom/io/nsLocalFileUnix.cpp
  3680 +++ b/xpcom/io/nsLocalFileUnix.cpp
  3631 @@ -44,16 +44,17 @@
  3681 @@ -47,16 +47,17 @@
  3632  #include "prproces.h"
  3682  #include "prproces.h"
  3633  #include "nsIDirectoryEnumerator.h"
  3683  #include "nsIDirectoryEnumerator.h"
  3634  #include "nsISimpleEnumerator.h"
  3684  #include "nsISimpleEnumerator.h"
  3635  #include "private/pprio.h"
  3685  #include "private/pprio.h"
  3636  #include "prlink.h"
  3686  #include "prlink.h"
  3644  #include <Carbon/Carbon.h>
  3694  #include <Carbon/Carbon.h>
  3645  #include "CocoaFileUtils.h"
  3695  #include "CocoaFileUtils.h"
  3646  #include "prmem.h"
  3696  #include "prmem.h"
  3647  #include "plbase64.h"
  3697  #include "plbase64.h"
  3648  
  3698  
  3649 @@ -1960,42 +1961,52 @@ nsLocalFile::SetPersistentDescriptor(con
  3699 @@ -1963,42 +1964,52 @@ nsLocalFile::SetPersistentDescriptor(con
  3650    return InitWithNativePath(aPersistentDescriptor);
  3700    return InitWithNativePath(aPersistentDescriptor);
  3651  #endif
  3701  #endif
  3652  }
  3702  }
  3653  
  3703  
  3654  NS_IMETHODIMP
  3704  NS_IMETHODIMP
  3703      nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
  3753      nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
  3704      ::CFRelease(url);
  3754      ::CFRelease(url);
  3705      return rv;
  3755      return rv;
  3706    }
  3756    }
  3707    return NS_ERROR_FAILURE;
  3757    return NS_ERROR_FAILURE;
  3708 @@ -2003,16 +2014,22 @@ nsLocalFile::Reveal()
  3758 @@ -2006,16 +2017,22 @@ nsLocalFile::Reveal()
  3709    return NS_ERROR_FAILURE;
  3759    return NS_ERROR_FAILURE;
  3710  #endif
  3760  #endif
  3711  }
  3761  }
  3712  
  3762  
  3713  NS_IMETHODIMP
  3763  NS_IMETHODIMP