From 04f4b5e3d037f6916c1b7aface70d98eef8ddc0b Mon Sep 17 00:00:00 2001 From: "javi%netscape.com" Date: Wed, 14 Feb 2001 01:45:28 +0000 Subject: [PATCH] Whenever we get the NSS Dialogs, make it a proxied service to avoid all the assertions and eventual abort my JavaScript when we try to open a window on a thread other than the UI thread. git-svn-id: svn://10.0.0.236/trunk@86963 18797224-902f-48f8-a5cc-f745e15eee43 --- .../security/manager/ssl/src/nsNSSComponent.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mozilla/security/manager/ssl/src/nsNSSComponent.cpp b/mozilla/security/manager/ssl/src/nsNSSComponent.cpp index eefbf3628b1..02d41b8da13 100644 --- a/mozilla/security/manager/ssl/src/nsNSSComponent.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSComponent.cpp @@ -34,6 +34,7 @@ #include "nsIStringBundle.h" #include "nsIDirectoryService.h" #include "nsDirectoryServiceDefs.h" +#include "nsIProxyObjectManager.h" #include "nsINSSDialogs.h" #include "prlog.h" @@ -499,13 +500,23 @@ getNSSDialogs(void **_result, REFNSIID aIID) { nsresult rv; nsISupports *result; + nsCOMPtr proxiedResult; rv = nsServiceManager::GetService(kNSSDialogsContractId, NS_GET_IID(nsINSSDialogs), &result); - if (NS_FAILED(rv)) return rv; + if (NS_FAILED(rv)) + return rv; - rv = result->QueryInterface(aIID, _result); + nsCOMPtr proxyman(do_GetService(NS_XPCOMPROXY_CONTRACTID)); + if (!proxyman) + return NS_ERROR_FAILURE; + + proxyman->GetProxyForObject(NS_UI_THREAD_EVENTQ, + aIID, result, PROXY_SYNC, + getter_AddRefs(proxiedResult)); + + rv = proxiedResult->QueryInterface(aIID, _result); NS_RELEASE(result);