firefox-kde.patch
branchfirefox10
changeset 396 c7b8a6aede34
parent 367 3fabd9f66322
child 399 20f8b5f0aea6
--- a/firefox-kde.patch	Sat Feb 18 22:28:33 2012 +0100
+++ b/firefox-kde.patch	Tue Feb 21 20:51:21 2012 +0100
@@ -1270,7 +1270,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/browser/components/shell/src/nsKDEShellService.cpp
-@@ -0,0 +1,193 @@
+@@ -0,0 +1,257 @@
 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 +/* ***** BEGIN LICENSE BLOCK *****
 + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
@@ -1316,6 +1316,9 @@
 +#include "nsILocalFile.h"
 +#include "nsServiceManagerUtils.h"
 +#include "nsComponentManagerUtils.h"
++#include "nsIMutableArray.h"
++#include "nsISupportsPrimitives.h"
++#include "nsArrayUtils.h"
 +
 +nsresult
 +nsKDEShellService::Init()
@@ -1331,13 +1334,23 @@
 +nsKDEShellService::IsDefaultBrowser(bool aStartupCheck,
 +                                    bool* aIsDefaultBrowser)
 +    {
-+    *aIsDefaultBrowser = PR_FALSE;
++    *aIsDefaultBrowser = false;
 +    if (aStartupCheck)
-+        mCheckedThisSession = PR_TRUE;
-+    nsTArray<nsCString> command;
-+    command.AppendElement( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" ));
++        mCheckedThisSession = true;
++
++    nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
++    if (!command)
++        return NS_ERROR_FAILURE;
++
++    nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    if (!str)
++        return NS_ERROR_FAILURE;
++
++    str->SetData( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" ));
++    command->AppendElement( str, false );
++
 +    if( nsKDEUtils::command( command ))
-+        *aIsDefaultBrowser = PR_TRUE;
++        *aIsDefaultBrowser = true;
 +    return NS_OK;
 +    }
 +
@@ -1345,9 +1358,21 @@
 +nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes,
 +                                     bool aForAllUsers)
 +    {
-+    nsTArray<nsCString> command;
-+    command.AppendElement( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" ));
-+    command.AppendElement( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
++    nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
++    if (!command)
++        return NS_ERROR_FAILURE;
++
++    nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    if (!cmdstr || !paramstr)
++        return NS_ERROR_FAILURE;
++
++    cmdstr->SetData( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" ));
++    command->AppendElement( cmdstr, false );
++
++    paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
++    command->AppendElement( paramstr, false );
++
 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +
@@ -1357,7 +1382,7 @@
 +  // If we've already checked, the browser has been started and this is a
 +  // new window open, and we don't want to check again.
 +  if (mCheckedThisSession) {
-+    *aResult = PR_FALSE;
++    *aResult = false;
 +    return NS_OK;
 +  }
 +
@@ -1387,7 +1412,7 @@
 +}
 +
 +NS_IMETHODIMP
-+nsKDEShellService::SetDesktopBackground(nsIDOMElement* aElement, 
++nsKDEShellService::SetDesktopBackground(nsIDOMElement* aElement,
 +                                          PRInt32 aPosition)
 +    {
 +    return NS_ERROR_NOT_IMPLEMENTED;
@@ -1408,26 +1433,47 @@
 +NS_IMETHODIMP
 +nsKDEShellService::OpenApplication(PRInt32 aApplication)
 +    {
-+    nsTArray<nsCString> command;
++    nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
++    if (!command)
++        return NS_ERROR_FAILURE;
++
++    nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    if (!str)
++        return NS_ERROR_FAILURE;
++
 +    if( aApplication == APPLICATION_MAIL )
-+        command.AppendElement( NS_LITERAL_CSTRING( "OPENMAIL" ));
++        str->SetData( NS_LITERAL_CSTRING( "OPENMAIL" ));
 +    else if( aApplication == APPLICATION_NEWS )
-+        command.AppendElement( NS_LITERAL_CSTRING( "OPENNEWS" ));
++        str->SetData( NS_LITERAL_CSTRING( "OPENNEWS" ));
 +    else
 +        return NS_ERROR_NOT_IMPLEMENTED;
++
++    command->AppendElement( str, false );
 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +
 +NS_IMETHODIMP
 +nsKDEShellService::OpenApplicationWithURI(nsILocalFile* aApplication, const nsACString& aURI)
 +    {
-+    nsTArray<nsCString> command;
-+    command.AppendElement( NS_LITERAL_CSTRING( "RUN" ));
-+    nsCString app;
++    nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
++    if (!command)
++        return NS_ERROR_FAILURE;
++
++    nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    nsCOMPtr<nsISupportsCString> appstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    nsCOMPtr<nsISupportsCString> uristr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    if (!cmdstr || !appstr || !uristr)
++        return NS_ERROR_FAILURE;
++
++    cmdstr->SetData( NS_LITERAL_CSTRING( "RUN" ));
++    command->AppendElement( cmdstr, false );
++    nsCAutoString app;
 +    nsresult rv = aApplication->GetNativePath( app );
 +    NS_ENSURE_SUCCESS( rv, rv );
-+    command.AppendElement( app );
-+    command.AppendElement( aURI );
++    appstr->SetData( app );
++    command->AppendElement( appstr, false );
++    uristr->SetData( aURI );
++    command->AppendElement( uristr, false );
 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +
@@ -1436,14 +1482,32 @@
 +    {
 +    *_retval = nsnull;
 +
-+    nsTArray<nsCString> command;
-+    command.AppendElement( NS_LITERAL_CSTRING( "GETDEFAULTFEEDREADER" ));
-+    nsTArray<nsCString> output;
-+    if( !nsKDEUtils::command( command, &output ) || output.Length() != 1 )
++    nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
++    if( !command )
++        return NS_ERROR_FAILURE;
++
++    nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
++    if( !str )
 +        return NS_ERROR_FAILURE;
 +
-+    nsCString path;
-+    path = output[ 0 ];
++    str->SetData( NS_LITERAL_CSTRING( "GETDEFAULTFEEDREADER" ));
++    command->AppendElement( str, false );
++
++    nsCOMPtr<nsIArray> output;
++    if( !nsKDEUtils::command( command, getter_AddRefs( output ) ) )
++        return NS_ERROR_FAILURE;
++
++    PRUint32 length;
++    output->GetLength( &length );
++    if( length != 1 )
++        return NS_ERROR_FAILURE;
++
++    nsCOMPtr<nsISupportsCString> resstr = do_QueryElementAt( output, 0 );
++    if( !resstr )
++        return NS_ERROR_FAILURE;
++
++    nsCAutoString path;
++    resstr->GetData( path );
 +    if (path.IsEmpty())
 +        return NS_ERROR_FAILURE;
 +