Index: nsNSSDialogHelper.cpp =================================================================== RCS file: /cvsroot/mozilla/security/manager/pki/src/nsNSSDialogHelper.cpp,v retrieving revision 1.2 diff -u -p -r1.2 nsNSSDialogHelper.cpp --- nsNSSDialogHelper.cpp 25 Apr 2004 15:02:33 -0000 1.2 +++ nsNSSDialogHelper.cpp 10 Jul 2008 21:29:49 -0000 @@ -46,13 +46,15 @@ #include "nsIInterfaceRequestor.h" #include "nsIInterfaceRequestorUtils.h" -const char* nsNSSDialogHelper::kDefaultOpenWindowParam = "centerscreen,chrome,modal,titlebar"; +const char* kOpenDialogParam = "centerscreen,chrome,titlebar"; +const char* kOpenModalParam = "centerscreen,chrome,modal,titlebar"; nsresult nsNSSDialogHelper::openDialog( nsIDOMWindowInternal *window, const char *url, - nsISupports *params) + nsISupports *params, + PRBool modal) { nsresult rv; nsCOMPtr windowWatcher = @@ -75,7 +77,9 @@ nsNSSDialogHelper::openDialog( rv = windowWatcher->OpenWindow(parent, url, "_blank", - nsNSSDialogHelper::kDefaultOpenWindowParam, + modal + ? kOpenModalParam + : kOpenDialogParam, params, getter_AddRefs(newWindow)); return rv; Index: nsNSSDialogHelper.h =================================================================== RCS file: /cvsroot/mozilla/security/manager/pki/src/nsNSSDialogHelper.h,v retrieving revision 1.2 diff -u -p -r1.2 nsNSSDialogHelper.h --- nsNSSDialogHelper.h 25 Apr 2004 15:02:33 -0000 1.2 +++ nsNSSDialogHelper.h 10 Jul 2008 21:29:49 -0000 @@ -49,12 +49,12 @@ class nsNSSDialogHelper { public: - const static char *kDefaultOpenWindowParam; //The params is going to be either a nsIPKIParamBlock or //nsIDialogParamBlock static nsresult openDialog( nsIDOMWindowInternal *window, const char *url, - nsISupports *params); + nsISupports *params, + PRBool modal = PR_TRUE); }; Index: nsNSSDialogs.cpp =================================================================== RCS file: /cvsroot/mozilla/security/manager/pki/src/nsNSSDialogs.cpp,v retrieving revision 1.65 diff -u -p -r1.65 nsNSSDialogs.cpp --- nsNSSDialogs.cpp 8 Jul 2008 20:34:12 -0000 1.65 +++ nsNSSDialogs.cpp 10 Jul 2008 21:29:49 -0000 @@ -122,9 +122,11 @@ nsNSSDialogs::SetPassword(nsIInterfaceRe rv = block->SetString(1, tokenName); if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/changepassword.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/changepassword.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; @@ -155,9 +157,11 @@ nsNSSDialogs::GetPassword(nsIInterfaceRe rv = block->SetString(1, tokenName); if (NS_FAILED(rv)) return rv; // open up the window - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/getpassword.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/getpassword.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; // see if user canceled PRInt32 status; @@ -185,9 +189,11 @@ nsNSSDialogs::CrlImportStatusDialog(nsII if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(nsnull, - "chrome://pippki/content/crlImportDialog.xul", - block); + rv = nsNSSDialogHelper::openDialog( + nsnull, + "chrome://pippki/content/crlImportDialog.xul", + block, + PR_FALSE); return NS_OK; } @@ -213,9 +219,11 @@ nsNSSDialogs::ConfirmDownloadCACert(nsII if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/downloadcert.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/downloadcert.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; PRInt32 status; @@ -255,10 +263,11 @@ nsNSSDialogs::NotifyCACertExists(nsIInte do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID); if (!block) return NS_ERROR_FAILURE; - - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/cacertexists.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/cacertexists.xul", + block, + PR_FALSE); return rv; } @@ -303,9 +312,11 @@ nsNSSDialogs::ChooseCertificate(nsIInter rv = block->SetInt(0, count); if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(nsnull, - "chrome://pippki/content/clientauthask.xul", - block); + rv = nsNSSDialogHelper::openDialog( + nsnull, + "chrome://pippki/content/clientauthask.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; PRInt32 status; @@ -368,9 +379,11 @@ nsNSSDialogs::PickCertificate(nsIInterfa rv = block->SetInt(1, *selectedIndex); if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(nsnull, - "chrome://pippki/content/certpicker.xul", - block); + rv = nsNSSDialogHelper::openDialog( + nsnull, + "chrome://pippki/content/certpicker.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; PRInt32 status; @@ -399,9 +412,11 @@ nsNSSDialogs::SetPKCS12FilePassword(nsII do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID); if (!block) return NS_ERROR_FAILURE; // open up the window - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/setp12password.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/setp12password.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; // see if user canceled PRInt32 status; @@ -433,9 +448,11 @@ nsNSSDialogs::GetPKCS12FilePassword(nsII do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID); if (!block) return NS_ERROR_FAILURE; // open up the window - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/getp12password.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/getp12password.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; // see if user canceled PRInt32 status; @@ -473,9 +490,11 @@ nsNSSDialogs::ViewCert(nsIInterfaceReque // Get the parent window for the dialog nsCOMPtr parent = do_GetInterface(ctx); - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/certViewer.xul", - block); + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/certViewer.xul", + block, + PR_FALSE); return rv; } @@ -486,10 +505,15 @@ nsNSSDialogs::DisplayGeneratingKeypairIn // Get the parent window for the dialog nsCOMPtr parent = do_GetInterface(aCtx); - - rv = nsNSSDialogHelper::openDialog(parent, - "chrome://pippki/content/createCertInfo.xul", - runnable); + /* XXX this shouldn't be modal, it's modal because the caller + * blocks on another thread instead of using a thread to + * do its work and proxying the request to this method. + */ + rv = nsNSSDialogHelper::openDialog( + parent, + "chrome://pippki/content/createCertInfo.xul", + runnable, + PR_TRUE); return rv; } @@ -517,9 +541,11 @@ nsNSSDialogs::ChooseToken(nsIInterfaceRe rv = block->SetInt(0, aCount); if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(nsnull, - "chrome://pippki/content/choosetoken.xul", - block); + rv = nsNSSDialogHelper::openDialog( + nsnull, + "chrome://pippki/content/choosetoken.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv; PRInt32 status; @@ -553,9 +579,11 @@ nsNSSDialogs::ConfirmKeyEscrow(nsIX509Ce if (NS_FAILED(rv)) return rv; - rv = nsNSSDialogHelper::openDialog(nsnull, - "chrome://pippki/content/escrowWarn.xul", - block); + rv = nsNSSDialogHelper::openDialog( + nsnull, + "chrome://pippki/content/escrowWarn.xul", + block, + PR_TRUE); if (NS_FAILED(rv)) return rv;