diff -r 997d2e729a8c -r c7b8a6aede34 firefox-kde.patch --- 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 command; -+ command.AppendElement( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" )); ++ mCheckedThisSession = true; ++ ++ nsCOMPtr command = do_CreateInstance( NS_ARRAY_CONTRACTID ); ++ if (!command) ++ return NS_ERROR_FAILURE; ++ ++ nsCOMPtr 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 command; -+ command.AppendElement( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" )); -+ command.AppendElement( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" )); ++ nsCOMPtr command = do_CreateInstance( NS_ARRAY_CONTRACTID ); ++ if (!command) ++ return NS_ERROR_FAILURE; ++ ++ nsCOMPtr cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); ++ nsCOMPtr 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 command; ++ nsCOMPtr command = do_CreateInstance( NS_ARRAY_CONTRACTID ); ++ if (!command) ++ return NS_ERROR_FAILURE; ++ ++ nsCOMPtr 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 command; -+ command.AppendElement( NS_LITERAL_CSTRING( "RUN" )); -+ nsCString app; ++ nsCOMPtr command = do_CreateInstance( NS_ARRAY_CONTRACTID ); ++ if (!command) ++ return NS_ERROR_FAILURE; ++ ++ nsCOMPtr cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); ++ nsCOMPtr appstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); ++ nsCOMPtr 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 command; -+ command.AppendElement( NS_LITERAL_CSTRING( "GETDEFAULTFEEDREADER" )); -+ nsTArray output; -+ if( !nsKDEUtils::command( command, &output ) || output.Length() != 1 ) ++ nsCOMPtr command = do_CreateInstance( NS_ARRAY_CONTRACTID ); ++ if( !command ) ++ return NS_ERROR_FAILURE; ++ ++ nsCOMPtr 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 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 resstr = do_QueryElementAt( output, 0 ); ++ if( !resstr ) ++ return NS_ERROR_FAILURE; ++ ++ nsCAutoString path; ++ resstr->GetData( path ); + if (path.IsEmpty()) + return NS_ERROR_FAILURE; +