mozilla-kde.patch
changeset 367 3fabd9f66322
parent 356 30a00f382aed
child 368 8891dd9439a1
--- a/mozilla-kde.patch	Fri Dec 23 18:44:50 2011 +0100
+++ b/mozilla-kde.patch	Sun Dec 25 10:36:35 2011 +0100
@@ -21,7 +21,7 @@
 diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferences.cpp
 --- a/modules/libpref/src/Preferences.cpp
 +++ b/modules/libpref/src/Preferences.cpp
-@@ -53,16 +53,17 @@
+@@ -56,16 +56,17 @@
  #include "nsIStringEnumerator.h"
  #include "nsIZipReader.h"
  #include "nsPrefBranch.h"
@@ -39,7 +39,7 @@
  #include "prefapi.h"
  #include "prefread.h"
  #include "prefapi_private_data.h"
-@@ -956,30 +957,48 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
+@@ -935,30 +936,48 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
  }
  
  static nsresult pref_LoadPrefsInDirList(const char *listId)
@@ -71,7 +71,7 @@
                NS_GET_IID(nsISimpleEnumerator),
                getter_AddRefs(dirList));
    if (dirList) {
-     PRBool hasMore;
+     bool hasMore;
      while (NS_SUCCEEDED(dirList->HasMoreElements(&hasMore)) && hasMore) {
        nsCOMPtr<nsISupports> elem;
        dirList->GetNext(getter_AddRefs(elem));
@@ -89,7 +89,7 @@
  }
  
  static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name)
-@@ -1072,28 +1091,40 @@ static nsresult pref_InitInitialObjects(
+@@ -1051,28 +1070,40 @@ static nsresult pref_InitInitialObjects(
    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -112,7 +112,7 @@
    };
  
 +  if(nsKDEUtils::kdeSession()) { // TODO what if some setup actually requires the helper?
-+    for( int i = 0;
++    for(int i = 0;
 +        i < NS_ARRAY_LENGTH(specialFiles);
 +        ++i ) {
 +      if( *specialFiles[ i ] == '\0' ) {
@@ -122,7 +122,7 @@
 +    }
 +  }
 +
-   rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
+   rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, ArrayLength(specialFiles));
    if (NS_FAILED(rv))
      NS_WARNING("Error parsing application default preferences.");
  
@@ -147,7 +147,7 @@
 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
 --- a/toolkit/components/downloads/nsDownloadManager.cpp
 +++ b/toolkit/components/downloads/nsDownloadManager.cpp
-@@ -71,16 +71,20 @@
+@@ -74,16 +74,20 @@
  
  #ifdef XP_WIN
  #include <shlobj.h>
@@ -168,22 +168,22 @@
  #include "AndroidBridge.h"
  #endif
  
-@@ -2203,16 +2207,25 @@ nsDownload::SetState(DownloadState aStat
+@@ -2214,16 +2218,25 @@ nsDownload::SetState(DownloadState aStat
        nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
  
        // Master pref to control this function.
-       PRBool showTaskbarAlert = PR_TRUE;
+       bool showTaskbarAlert = true;
        if (pref)
          pref->GetBoolPref(PREF_BDM_SHOWALERTONCOMPLETE, &showTaskbarAlert);
  
        if (showTaskbarAlert) {
 +        if( nsKDEUtils::kdeSupport()) {
-+            nsCStringArray command;
-+            command.AppendCString( NS_LITERAL_CSTRING( "DOWNLOADFINISHED" ));
-+            nsAutoString displayName;
-+            GetDisplayName( displayName );
-+            command.AppendCString( nsCAutoString( ToNewUTF8String( displayName )));
-+            nsKDEUtils::command( command );
++          nsTArray<nsCString> command;
++          command.AppendElement( NS_LITERAL_CSTRING( "DOWNLOADFINISHED" ));
++          nsAutoString displayName;
++          GetDisplayName( displayName );
++          command.AppendElement( nsCAutoString( ToNewUTF8String( displayName )));
++          nsKDEUtils::command( command );
 +        } else {
 +        // begin non-KDE block
          PRInt32 alertInterval = 2000;
@@ -194,7 +194,7 @@
          PRInt64 goat = PR_Now() - mStartTime;
          showTaskbarAlert = goat > alertIntervalUSec;
  
-@@ -2236,19 +2249,20 @@ nsDownload::SetState(DownloadState aStat
+@@ -2247,19 +2260,20 @@ nsDownload::SetState(DownloadState aStat
                // If downloads are automatically removed per the user's
                // retention policy, there's no reason to make the text clickable
                // because if it is, they'll click open the download manager and
@@ -2110,7 +2110,7 @@
    ~nsUnixSystemProxySettings() {}
    
    nsCOMPtr<nsIGConfService> mGConf;
-   PRBool IsProxyMode(const char* aMode);
+   bool IsProxyMode(const char* aMode);
    nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult);
    nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
 +  nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
@@ -2121,8 +2121,8 @@
  nsresult
  nsUnixSystemProxySettings::Init()
  {
-   // If this is a GNOME session, load gconf and try to use its preferences.
-@@ -407,16 +410,19 @@ nsUnixSystemProxySettings::GetProxyForUR
+   mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+@@ -408,16 +411,19 @@ nsUnixSystemProxySettings::GetProxyForUR
    nsCAutoString host;
    rv = aURI->GetHost(host);
    NS_ENSURE_SUCCESS(rv, rv);
@@ -2142,7 +2142,7 @@
  
  #define NS_UNIXSYSTEMPROXYSERVICE_CID  /* 0fa3158c-d5a7-43de-9181-a285e74cf1d4 */\
       { 0x0fa3158c, 0xd5a7, 0x43de, \
-@@ -437,8 +443,34 @@ static const mozilla::Module::ContractID
+@@ -438,8 +444,34 @@ static const mozilla::Module::ContractID
  
  static const mozilla::Module kUnixProxyModule = {
    mozilla::Module::kVersion,
@@ -2167,10 +2167,10 @@
 +    url += ":";
 +    url += nsPrintfCString("%d", aPort);
 +  }
-+  nsCStringArray command;
-+  command.AppendCString( NS_LITERAL_CSTRING( "GETPROXY" ));
-+  command.AppendCString( url );
-+  nsCStringArray result;
++  nsTArray<nsCString> command;
++  command.AppendElement( NS_LITERAL_CSTRING( "GETPROXY" ));
++  command.AppendElement( url );
++  nsTArray<nsCString> result;
 +  if( !nsKDEUtils::command( command, &result ) || result.Count() != 1 )
 +    return NS_ERROR_FAILURE;
 +  aResult = *result[ 0 ];
@@ -2180,10 +2180,10 @@
 diff --git a/toolkit/xre/Makefile.in b/toolkit/xre/Makefile.in
 --- a/toolkit/xre/Makefile.in
 +++ b/toolkit/xre/Makefile.in
-@@ -94,17 +94,18 @@ EXPORTS = nsWindowsDllInterceptor.h
- else
+@@ -95,17 +95,18 @@ else
  ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
  CMMSRCS = nsNativeAppSupportCocoa.mm
+ EXPORTS = MacQuirks.h
  else
  ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
  CPPSRCS += nsNativeAppSupportOS2.cpp
@@ -2195,16 +2195,16 @@
  else
  ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
  MOCSRCS += moc_nsNativeAppSupportQt.cpp
-   $(NULL)
  CPPSRCS += $(MOCSRCS)
  CPPSRCS += nsNativeAppSupportQt.cpp
  CPPSRCS += nsQAppInstance.cpp
  EXPORTS += nsQAppInstance.h
+ else
 diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/xre/nsKDEUtils.cpp
-@@ -0,0 +1,328 @@
+@@ -0,0 +1,330 @@
 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 +/* ***** BEGIN LICENSE BLOCK *****
 + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
@@ -2299,10 +2299,10 @@
 +
 +static bool getKdeSupport()
 +    {
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "CHECK" ));
-+    command.AppendCString( NS_LITERAL_CSTRING( MAKE_STR( KMOZILLAHELPER_VERSION )));
-+    bool kde = nsKDEUtils::command( command );
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "CHECK" ));
++    command.AppendElement( NS_LITERAL_CSTRING( MAKE_STR( KMOZILLAHELPER_VERSION )));
++    bool kde = nsKDEUtils::command( command.get() );
 +#ifdef DEBUG_KDE
 +    fprintf( stderr, "KDE RUNNING %d\n", kde );
 +#endif
@@ -2344,7 +2344,7 @@
 +struct nsKDECommandData
 +    {
 +    FILE* file;
-+    nsCStringArray* output;
++    nsTArray<nsCString>* output;
 +    GMainLoop* loop;
 +    bool success;
 +    };
@@ -2368,7 +2368,7 @@
 +        line.ReplaceSubstring( "\\n", "\n" );
 +        line.ReplaceSubstring( "\\" "\\", "\\" ); //  \\ -> \ , i.e. unescape
 +        if( p->output && !( command_done || command_failed ))
-+            p->output->AppendCString( nsCString( buf )); // TODO utf8?
++            p->output->AppendElement( nsCString( buf )); // TODO utf8?
 +        }
 +    bool quit = false;
 +    if( feof( p->file ) || command_failed )
@@ -2390,22 +2390,24 @@
 +    return TRUE;
 +    }
 +
-+bool nsKDEUtils::command( const nsCStringArray& command, nsCStringArray* output )
++bool nsKDEUtils::command( const nsTArray<nsCString>& command, nsTArray<nsCString>* output )
 +    {
 +    return self()->internalCommand( command, NULL, false, output );
 +    }
 +
-+bool nsKDEUtils::commandBlockUi( const nsCStringArray& command, const GtkWindow* parent, nsCStringArray* output )
++bool nsKDEUtils::commandBlockUi( const nsTArray<nsCString>& command, const GtkWindow* parent, nsTArray<nsCString>* output )
 +    {
 +    return self()->internalCommand( command, parent, true, output );
 +    }
 +
-+bool nsKDEUtils::internalCommand( const nsCStringArray& command, const GtkWindow* parent, bool blockUi,
-+    nsCStringArray* output )
++bool nsKDEUtils::internalCommand( const nsTArray<nsCString>& command, const GtkWindow* parent, bool blockUi,
++    nsTArray<nsCString>* output )
 +    {
++    nsCString internal_command;
++    internal_command.AssignLiteral(command);
 +    if( !startHelper())
 +        return false;
-+    feedCommand( command );
++    feedCommand(internal_command);
 +    // do not store the data in 'this' but in extra structure, just in case there
 +    // is reentrancy (can there be? the event loop is re-entered)
 +    nsKDECommandData data;
@@ -2515,13 +2517,13 @@
 +    helperRunning = false;
 +    }
 +
-+void nsKDEUtils::feedCommand( const nsCStringArray& command )
++void nsKDEUtils::feedCommand( const nsTArray<nsCString>& command )
 +    {
 +    for( int i = 0;
-+         i < command.Count();
++         i < command.Length();
 +         ++i )
 +        {
-+        nsCString line = *command[ i ];
++        nsCString line = command[ i ];
 +        line.ReplaceSubstring( "\\", "\\" "\\" ); // \ -> \\ , i.e. escape
 +        line.ReplaceSubstring( "\n", "\\n" );
 +#ifdef DEBUG_KDE
@@ -2537,7 +2539,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/xre/nsKDEUtils.h
-@@ -0,0 +1,77 @@
+@@ -0,0 +1,78 @@
 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 + *
 + * ***** BEGIN LICENSE BLOCK *****
@@ -2580,7 +2582,7 @@
 +#define nsKDEUtils_h__
 +
 +#include "nsStringGlue.h"
-+#include "nsVoidArray.h"
++#include "nsTArray.h"
 +#include <stdio.h>
 +
 +typedef struct _GtkWindow GtkWindow;
@@ -2596,20 +2598,21 @@
 +           for Firefox. This should be used everywhere where the external helper is needed. */
 +        static bool kdeSupport();
 +        /* Executes the given helper command, returns true if helper returned success. */
-+        static bool command( const nsCStringArray& command, nsCStringArray* output = NULL );
++        static bool command( const nsTArray<nsCString>& command, nsTArray<nsCString>* output = NULL );
 +        /* Like command(), but additionally blocks the parent widget like if there was
 +           a modal dialog shown and enters the event loop (i.e. there are still paint updates,
 +           this is for commands that take long). */
-+        static bool commandBlockUi( const nsCStringArray& command, const GtkWindow* parent, nsCStringArray* output = NULL );
++        static bool commandBlockUi( const nsTArray<nsCString>& command, const GtkWindow* parent, nsTArray<nsCString>* output = NULL );
++
 +    private:
 +        nsKDEUtils();
 +        ~nsKDEUtils();
 +        static nsKDEUtils* self();
 +        bool startHelper();
 +        void closeHelper();
-+        void feedCommand( const nsCStringArray& command );
-+        bool internalCommand( const nsCStringArray& command, const GtkWindow* parent, bool isParent,
-+            nsCStringArray* output );
++        void feedCommand( const nsTArray<nsCString>& command );
++        bool internalCommand( const nsTArray<nsCString>& command, const GtkWindow* parent, bool isParent,
++            nsTArray<nsCString>* output );
 +        FILE* commandFile;
 +        FILE* replyFile;
 +    };
@@ -2847,20 +2850,20 @@
 +/* static */ PRBool
 +nsKDERegistry::HandlerExists(const char *aProtocolScheme)
 +{
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "HANDLEREXISTS" ));
-+    command.AppendCString( nsCAutoString( aProtocolScheme ));
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "HANDLEREXISTS" ));
++    command.AppendElement( nsCAutoString( aProtocolScheme ));
 +    return nsKDEUtils::command( command );
 +}
 +
 +/* static */ nsresult
 +nsKDERegistry::LoadURL(nsIURI *aURL)
 +{
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
 +    nsCString url;
 +    aURL->GetSpec( url );
-+    command.AppendCString( url );
++    command.AppendElement( url );
 +    return nsKDEUtils::command( command );
 +}
 +
@@ -2868,12 +2871,12 @@
 +nsKDERegistry::GetAppDescForScheme(const nsACString& aScheme,
 +                                     nsAString& aDesc)
 +{
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "GETAPPDESCFORSCHEME" ));
-+    command.AppendCString( aScheme );
-+    nsCStringArray output;
-+    if( nsKDEUtils::command( command, &output ) && output.Count() == 1 )
-+        CopyUTF8toUTF16( *output[ 0 ], aDesc );
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "GETAPPDESCFORSCHEME" ));
++    command.AppendElement( aScheme );
++    nsTArray<nsCString> output;
++    if( nsKDEUtils::command( command, &output ) && output.Length() == 1 )
++        CopyUTF8toUTF16( output[ 0 ], aDesc );
 +}
 +
 +
@@ -2881,33 +2884,33 @@
 +nsKDERegistry::GetFromExtension(const nsACString& aFileExt)
 +{
 +    NS_ASSERTION(aFileExt[0] != '.', "aFileExt shouldn't start with a dot");
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "GETFROMEXTENSION" ));
-+    command.AppendCString( aFileExt );
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "GETFROMEXTENSION" ));
++    command.AppendElement( aFileExt );
 +    return GetFromHelper( command );
 +}
 +
 +/* static */ already_AddRefed<nsMIMEInfoBase>
 +nsKDERegistry::GetFromType(const nsACString& aMIMEType)
 +{
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "GETFROMTYPE" ));
-+    command.AppendCString( aMIMEType );
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "GETFROMTYPE" ));
++    command.AppendElement( aMIMEType );
 +    return GetFromHelper( command );
 +}
 +
 +/* static */ already_AddRefed<nsMIMEInfoBase>
-+nsKDERegistry::GetFromHelper(const nsCStringArray& command)
++nsKDERegistry::GetFromHelper(const nsTArray<nsCString>& command)
 +{
-+    nsCStringArray output;
-+    if( nsKDEUtils::command( command, &output ) && output.Count() == 3 )
++    nsTArray<nsCString> output;
++    if( nsKDEUtils::command( command, &output ) && output.Length() == 3 )
 +        {
-+        nsCString mimetype = *output[ 0 ];
++        nsCString mimetype = output[ 0 ];
 +        nsRefPtr<nsMIMEInfoUnix> mimeInfo = new nsMIMEInfoUnix( mimetype );
 +        NS_ENSURE_TRUE(mimeInfo, nsnull);
-+        nsCString description = *output[ 1 ];
++        nsCString description = output[ 1 ];
 +        mimeInfo->SetDescription(NS_ConvertUTF8toUTF16(description));
-+        nsCString handlerAppName = *output[ 2 ];
++        nsCString handlerAppName = output[ 2 ];
 +        mimeInfo->SetDefaultDescription(NS_ConvertUTF8toUTF16(handlerAppName));
 +        mimeInfo->SetPreferredAction(nsIMIMEInfo::useSystemDefault);
 +        nsMIMEInfoBase* retval;
@@ -2920,7 +2923,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/uriloader/exthandler/unix/nsKDERegistry.h
-@@ -0,0 +1,61 @@
+@@ -0,0 +1,62 @@
 +/* ***** BEGIN LICENSE BLOCK *****
 + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 + *
@@ -2960,10 +2963,11 @@
 +
 +#include "nsIURI.h"
 +#include "nsCOMPtr.h"
++#include "nsTArray.h"
 +
 +class nsMIMEInfoBase;
 +class nsCAutoString;
-+class nsCStringArray;
++class nsCString;
 +
 +class nsKDERegistry
 +{
@@ -2979,7 +2983,7 @@
 +
 +  static already_AddRefed<nsMIMEInfoBase> GetFromType(const nsACString& aMIMEType);
 + private:
-+  static already_AddRefed<nsMIMEInfoBase> GetFromHelper(const nsCStringArray& command);
++  static already_AddRefed<nsMIMEInfoBase> GetFromHelper(const nsTArray<nsCString>& command);
 +
 +};
 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
@@ -3027,9 +3031,9 @@
  }
  
  NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(PRBool *_retval)
+ nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval)
  {
-   *_retval = PR_FALSE;
+   *_retval = false;
 -  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType);
 +  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromType(mSchemeOrType);
    if (!mimeInfo) {
@@ -3041,7 +3045,7 @@
      }
    }
    if (mimeInfo)
-     *_retval = PR_TRUE;
+     *_retval = true;
  
    if (*_retval)
      return NS_OK;
@@ -3056,13 +3060,13 @@
  #endif
  
 +  if( nsKDEUtils::kdeSupport()) {
-+    PRBool supports;
++    bool supports;
 +    if( NS_SUCCEEDED( GetHasDefaultHandler( &supports )) && supports ) {
-+      nsCStringArray command;
-+      command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
-+      command.AppendCString( nativePath );
-+      command.AppendCString( NS_LITERAL_CSTRING( "MIMETYPE" ));
-+      command.AppendCString( mSchemeOrType );
++      nsTArray<nsCString> command;
++      command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
++      command.AppendElement( nativePath );
++      command.AppendElement( NS_LITERAL_CSTRING( "MIMETYPE" ));
++      command.AppendElement( mSchemeOrType );
 +      if( nsKDEUtils::command( command ))
 +        return NS_OK;
 +    }
@@ -3125,7 +3129,7 @@
      ContentAction::Action::defaultActionForScheme(QString(aProtocolScheme) + ':');
  
    if (action.isValid())
-     *aHandlerExists = PR_TRUE;
+     *aHandlerExists = true;
  #endif
  
  #ifdef MOZ_WIDGET_GTK2
@@ -3156,7 +3160,7 @@
 @@ -1299,17 +1299,17 @@ nsOSHelperAppService::GetFromExtension(c
                                           minorType,
                                           mime_types_description,
-                                          PR_TRUE);
+                                          true);
  
    if (NS_FAILED(rv) || majorType.IsEmpty()) {
      
@@ -3212,14 +3216,14 @@
 diff --git a/widget/src/gtk2/nsFilePicker.cpp b/widget/src/gtk2/nsFilePicker.cpp
 --- a/widget/src/gtk2/nsFilePicker.cpp
 +++ b/widget/src/gtk2/nsFilePicker.cpp
-@@ -31,16 +31,17 @@
-  * decision by deleting the provisions above and replace them with the notice
-  * and other provisions required by the GPL or the LGPL. If you do not delete
+@@ -33,16 +33,17 @@
   * the provisions above, a recipient may use your version of this file under
   * the terms of any one of the MPL, the GPL or the LGPL.
   *
   * ***** END LICENSE BLOCK ***** */
  
+ #include "mozilla/Util.h"
+ 
  #include <gtk/gtk.h>
 +#include <gdk/gdkx.h>
  
@@ -3230,7 +3234,7 @@
  #include "nsIStringBundle.h"
  
  #include "nsArrayEnumerator.h"
-@@ -49,16 +50,17 @@
+@@ -51,16 +52,17 @@
  #include "nsNetUtil.h"
  #include "nsReadableUtils.h"
  #include "mozcontainer.h"
@@ -3245,10 +3249,10 @@
  #include <hildon-fm-2/hildon/hildon-file-chooser-dialog.h>
  #endif
  
- #define MAX_PREVIEW_SIZE 180
+ using namespace mozilla;
  
- nsILocalFile *nsFilePicker::mPrevDisplayDirectory = nsnull;
-@@ -281,17 +283,19 @@ nsFilePicker::AppendFilters(PRInt32 aFil
+ #define MAX_PREVIEW_SIZE 180
+@@ -285,17 +287,19 @@ nsFilePicker::AppendFilters(PRInt32 aFil
    return nsBaseFilePicker::AppendFilters(aFilterMask);
  }
  
@@ -3269,7 +3273,7 @@
  
    mFilters.AppendElement(filter);
    mFilterNames.AppendElement(name);
-@@ -429,16 +433,19 @@ confirm_overwrite_file(GtkWidget *parent
+@@ -433,16 +437,19 @@ confirm_overwrite_file(GtkWidget *parent
    gtk_widget_destroy(dialog);
  
    return result;
@@ -3289,7 +3293,7 @@
    GtkWindow *parent_widget = get_gtk_window_for_nsiwidget(mParentWidget);
  
    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
-@@ -579,8 +586,234 @@ nsFilePicker::Show(PRInt16 *aReturn)
+@@ -583,8 +590,234 @@ nsFilePicker::Show(PRInt16 *aReturn)
      *aReturn = nsIFilePicker::returnCancel;
      break;
    }
@@ -3403,47 +3407,47 @@
 +            }
 +        }
 +
-+    nsCStringArray command;
-+    command.AppendCString( nsCAutoString( arg ));
-+    command.AppendCString( startdir );
++    nsTArray<nsCString> command;
++    command.AppendElement( nsCAutoString( arg ));
++    command.AppendElement( startdir );
 +    if( mMode != nsIFilePicker::modeGetFolder )
 +        {
-+        command.AppendCString( filters );
++        command.AppendElement( filters );
 +        nsCAutoString selected;
 +        selected.AppendInt( mSelectedType );
-+        command.AppendCString( selected );
++        command.AppendElement( selected );
 +        }
-+    command.AppendCString( title );
++    command.AppendElement( title );
 +    if( mMode == nsIFilePicker::modeOpenMultiple )
-+        command.AppendCString( NS_LITERAL_CSTRING( "MULTIPLE" ));
++        command.AppendElement( NS_LITERAL_CSTRING( "MULTIPLE" ));
 +    if( PRInt32 xid = windowToXid( mParentWidget ))
 +        {
-+        command.AppendCString( NS_LITERAL_CSTRING( "PARENT" ));
++        command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
 +        nsCAutoString parent;
 +        parent.AppendInt( xid );
-+        command.AppendCString( parent );
++        command.AppendElement( parent );
 +        }
 +
-+    nsCStringArray output;
++    nsTArray<nsCString> output;
 +    if( nsKDEUtils::commandBlockUi( command, get_gtk_window_for_nsiwidget( mParentWidget ), &output ))
 +        {
 +        *aReturn = nsIFilePicker::returnOK;
 +        mFiles.Clear();
 +        if( mMode != nsIFilePicker::modeGetFolder )
 +            {
-+            mSelectedType = atoi( output[ 0 ]->get());
-+            output.RemoveCStringAt( 0 );
++            mSelectedType = atoi( output[ 0 ].get());
++            output.RemoveElementAt( 0 );
 +            }
 +        if (mMode == nsIFilePicker::modeOpenMultiple)
 +            {
 +            mFileURL.Truncate();
-+            PRUint32 count = output.Count();
++            PRUint32 count = output.Length();
 +            for( PRUint32 i = 0;
 +                 i < count;
 +                 ++i )
 +                {
 +                nsCOMPtr<nsILocalFile> localfile;
-+                nsresult rv = NS_NewNativeLocalFile( *output[ i ],
++                nsresult rv = NS_NewNativeLocalFile( output[ i ],
 +                                      PR_FALSE,
 +                                      getter_AddRefs(localfile));
 +                if (NS_SUCCEEDED(rv))
@@ -3452,14 +3456,14 @@
 +            }
 +        else
 +            {
-+            if( output.Count() == 0 )
++            if( output.Length() == 0 )
 +                mFileURL = nsCString();
 +            else if( mAllowURLs )
-+                mFileURL = *output[ 0 ];
++                mFileURL = output[ 0 ];
 +            else // GetFile() actually requires it to be url even for local files :-/
 +                {
 +                mFileURL = nsCString( "file://" );
-+                mFileURL.Append( *output[ 0 ] );
++                mFileURL.Append( output[ 0 ] );
 +                }
 +            }
 +  // Remember last used directory.
@@ -3479,7 +3483,7 @@
 +            GetFile(getter_AddRefs(file));
 +            if (file)
 +                {
-+                PRBool exists = PR_FALSE;
++                bool exists = false;
 +                file->Exists(&exists);
 +                if (exists) // TODO do overwrite check in the helper app
 +                    *aReturn = nsIFilePicker::returnReplace;
@@ -3501,22 +3505,22 @@
 +    nsXPIDLCString title;
 +    title.Adopt(ToNewUTF8String(mTitle));
 +
-+    nsCStringArray command;
-+    command.AppendCString( NS_LITERAL_CSTRING( "APPSDIALOG" ));
-+    command.AppendCString( title );
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING( "APPSDIALOG" ));
++    command.AppendElement( title );
 +    if( PRInt32 xid = windowToXid( mParentWidget ))
 +        {
-+        command.AppendCString( NS_LITERAL_CSTRING( "PARENT" ));
++        command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
 +        nsCAutoString parent;
 +        parent.AppendInt( xid );
-+        command.AppendCString( parent );
++        command.AppendElement( parent );
 +        }
 +
-+    nsCStringArray output;
++    nsTArray<nsCString> output;
 +    if( nsKDEUtils::commandBlockUi( command, get_gtk_window_for_nsiwidget( mParentWidget ), &output ))
 +        {
 +        *aReturn = nsIFilePicker::returnOK;
-+        mFileURL = output.Count() > 0 ? *output[ 0 ] : nsCString();
++        mFileURL = output.Length() > 0 ? output[ 0 ] : nsCString();
 +        }
 +    else
 +        {
@@ -3563,7 +3567,7 @@
 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
 --- a/xpcom/components/ManifestParser.cpp
 +++ b/xpcom/components/ManifestParser.cpp
-@@ -60,16 +60,17 @@
+@@ -62,16 +62,17 @@
  #include "nsTextFormatter.h"
  #include "nsVersionComparator.h"
  #include "nsXPCOMCIDInternal.h"
@@ -3574,14 +3578,14 @@
  #include "nsIXULRuntime.h"
 +#include "nsKDEUtils.h"
  
+ using namespace mozilla;
+ 
  struct ManifestDirective
  {
    const char* directive;
    int argc;
  
-   // Some directives should only be delivered for NS_COMPONENT_LOCATION
-   // manifests.
-@@ -430,16 +431,17 @@ ParseManifestCommon(NSLocationType aType
+@@ -434,16 +435,17 @@ ParseManifestCommon(NSLocationType aType
    NS_NAMED_LITERAL_STRING(kPlatform, "platform");
    NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible");
    NS_NAMED_LITERAL_STRING(kApplication, "application");
@@ -3599,7 +3603,7 @@
    nsAutoString appVersion;
    nsAutoString geckoVersion;
    nsAutoString osTarget;
-@@ -474,39 +476,44 @@ ParseManifestCommon(NSLocationType aType
+@@ -478,39 +480,44 @@ ParseManifestCommon(NSLocationType aType
          CopyUTF8toUTF16(s, abi);
          abi.Insert(PRUnichar('_'), 0);
          abi.Insert(osTarget, 0);
@@ -3644,7 +3648,7 @@
  
    char *token;
    char *newline = buf;
-@@ -585,24 +592,26 @@ ParseManifestCommon(NSLocationType aType
+@@ -589,24 +596,26 @@ ParseManifestCommon(NSLocationType aType
      TriState stAppVersion = eUnspecified;
      TriState stGeckoVersion = eUnspecified;
      TriState stApp = eUnspecified;
@@ -3671,7 +3675,7 @@
        if (directive->contentflags &&
            (CheckFlag(kPlatform, wtoken, platform) ||
             CheckFlag(kContentAccessible, wtoken, contentAccessible)))
-@@ -623,16 +632,17 @@ ParseManifestCommon(NSLocationType aType
+@@ -627,16 +636,17 @@ ParseManifestCommon(NSLocationType aType
      }
  
      if (!ok ||
@@ -3714,11 +3718,11 @@
 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
 --- a/xpcom/io/nsLocalFileUnix.cpp
 +++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -87,16 +87,17 @@
- #include "nsXPIDLString.h"
+@@ -90,16 +90,17 @@
  #include "prproces.h"
  #include "nsIDirectoryEnumerator.h"
  #include "nsISimpleEnumerator.h"
+ #include "private/pprio.h"
  
  #ifdef MOZ_WIDGET_GTK2
  #include "nsIGIOService.h"
@@ -3726,13 +3730,13 @@
 +#include "nsKDEUtils.h"
  #endif
  
- #ifdef XP_MACOSX
+ #ifdef MOZ_WIDGET_COCOA
  #include <Carbon/Carbon.h>
  #include "CocoaFileUtils.h"
  #include "prmem.h"
  #include "plbase64.h"
  
-@@ -1785,44 +1786,50 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1795,44 +1796,51 @@ nsLocalFile::SetPersistentDescriptor(con
      return InitWithNativePath(aPersistentDescriptor);
  #endif
  }
@@ -3747,7 +3751,7 @@
 -        return NS_ERROR_FAILURE;
 -
 +    nsCAutoString url;
-     PRBool isDirectory;
+     bool isDirectory;
      if (NS_FAILED(IsDirectory(&isDirectory)))
          return NS_ERROR_FAILURE;
  
@@ -3774,9 +3778,9 @@
      }
 +
 +    if(nsKDEUtils::kdeSupport()) {
-+      nsCStringArray command;
-+      command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
-+      command.AppendCString( url );
++      nsTArray<nsCString> command;
++      command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
++      command.AppendElement( url );
 +      return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +
@@ -3789,7 +3793,8 @@
 +      return giovfs->ShowURIForInput(url);
 +    else
 +      return gnomevfs->ShowURIForInput(url);
- #elif defined(XP_MACOSX)
++
+ #elif defined(MOZ_WIDGET_COCOA)
      CFURLRef url;
      if (NS_SUCCEEDED(GetCFURL(&url))) {
        nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
@@ -3797,7 +3802,7 @@
        return rv;
      }
      return NS_ERROR_FAILURE;
-@@ -1848,16 +1855,23 @@ nsLocalFile::Launch()
+@@ -1858,16 +1866,23 @@ nsLocalFile::Launch()
  
      if (nsnull == connection)
        return NS_ERROR_FAILURE;
@@ -3807,9 +3812,9 @@
      return NS_OK;
  #else
 +    if( nsKDEUtils::kdeSupport()) {
-+      nsCStringArray command;
-+      command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
-+      command.AppendCString( mPath );
++      nsTArray<nsCString> command;
++      command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
++      command.AppendElement( mPath );
 +      return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +