bug 44146, get parent window for modal dialogs

git-svn-id: svn://10.0.0.236/trunk@74308 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
morse%netscape.com
2000-07-17 01:37:15 +00:00
parent 41b78e469d
commit 2b7dbd27f5
5 changed files with 44 additions and 30 deletions

View File

@@ -165,7 +165,7 @@ NS_IMETHODIMP nsWalletlibService::Notify(nsIContent* formNode, nsIDOMWindow* win
if (!formNode) {
return NS_ERROR_FAILURE;
}
::WLLT_OnSubmit(formNode);
::WLLT_OnSubmit(formNode, window);
return NS_OK;
}

View File

@@ -335,13 +335,13 @@ SI_InitSignonFileName() {
***********/
PRIVATE PRBool
si_ConfirmYN(PRUnichar * szMessage) {
return Wallet_ConfirmYN(szMessage);
si_ConfirmYN(PRUnichar * szMessage, nsIDOMWindow* window) {
return Wallet_ConfirmYN(szMessage, window);
}
PRIVATE PRInt32
si_3ButtonConfirm(PRUnichar * szMessage) {
return Wallet_3ButtonConfirm(szMessage);
si_3ButtonConfirm(PRUnichar * szMessage, nsIDOMWindow* window) {
return Wallet_3ButtonConfirm(szMessage, window);
}
// This will go away once select is passed a prompter interface
@@ -1824,7 +1824,7 @@ si_SaveSignonDataLocked() {
/* Ask user if it is ok to save the signon data */
PRIVATE PRBool
si_OkToSave(const char *passwordRealm, const nsString& userName) {
si_OkToSave(const char *passwordRealm, const nsString& userName, nsIDOMWindow* window) {
/* if url/user already exists, then it is safe to save it again */
if (si_CheckForUser(passwordRealm, userName)) {
@@ -1835,7 +1835,7 @@ si_OkToSave(const char *passwordRealm, const nsString& userName) {
if (!si_RememberSignons && !si_GetNotificationPref()) {
PRUnichar * notification = Wallet_Localize("PasswordNotification");
si_SetNotificationPref(PR_TRUE);
if (!si_ConfirmYN(notification)) {
if (!si_ConfirmYN(notification, window)) {
Recycle(notification);
SI_SetBoolPref(pref_rememberSignons, PR_FALSE);
return PR_FALSE;
@@ -1856,7 +1856,7 @@ si_OkToSave(const char *passwordRealm, const nsString& userName) {
message = Wallet_Localize("WantToSavePasswordObscured?");
}
PRInt32 button = si_3ButtonConfirm(message);
PRInt32 button = si_3ButtonConfirm(message, window);
if (button == NEVER_BUTTON) {
si_PutReject(passwordRealm, userName, PR_TRUE);
}
@@ -1868,7 +1868,9 @@ si_OkToSave(const char *passwordRealm, const nsString& userName) {
* Check for a signon submission and remember the data if so
*/
PRIVATE void
si_RememberSignonData (nsIPrompt* dialog, const char* passwordRealm, nsVoidArray * signonData)
si_RememberSignonData
(nsIPrompt* dialog, const char* passwordRealm, nsVoidArray * signonData,
nsIDOMWindow* window)
{
int passwordCount = 0;
int pswd[3];
@@ -1909,7 +1911,7 @@ si_RememberSignonData (nsIPrompt* dialog, const char* passwordRealm, nsVoidArray
if (j<signonData->Count()) {
data2 = NS_STATIC_CAST(si_SignonDataStruct*, signonData->ElementAt(j));
if (si_OkToSave(passwordRealm, data2->value)) {
if (si_OkToSave(passwordRealm, data2->value, window)) {
for (j=0; j<signonData->Count(); j++) {
data2 = NS_STATIC_CAST(si_SignonDataStruct*, signonData->ElementAt(j));
nsAutoString value = data2->value;
@@ -1979,7 +1981,9 @@ si_RememberSignonData (nsIPrompt* dialog, const char* passwordRealm, nsVoidArray
}
PUBLIC void
SINGSIGN_RememberSignonData (nsIPrompt* dialog, const char* passwordRealm, nsVoidArray * signonData)
SINGSIGN_RememberSignonData
(nsIPrompt* dialog, const char* passwordRealm, nsVoidArray * signonData,
nsIDOMWindow* window)
{
nsresult rv;
NS_WITH_SERVICE(nsIURL, uri, "component://netscape/network/standard-url", &rv);
@@ -1995,7 +1999,7 @@ SINGSIGN_RememberSignonData (nsIPrompt* dialog, const char* passwordRealm, nsVoi
if (NS_FAILED(rv)) {
return;
}
si_RememberSignonData(dialog, strippedRealm, signonData);
si_RememberSignonData(dialog, strippedRealm, signonData, window);
PR_Free(strippedRealm);
}

View File

@@ -33,6 +33,7 @@
#include "nsString.h"
#include "nsVoidArray.h"
#include "nsIPref.h"
#include "nsIDOMWindow.h"
/* Duplicates defines as in nsIPrompt.idl -- keep in sync! */
#define SINGSIGN_SAVE_PASSWORD_NEVER 0
@@ -116,7 +117,8 @@ extern PRBool
SINGSIGN_ReencryptAll();
extern void
SINGSIGN_RememberSignonData(nsIPrompt* dialog, const char* URLName, nsVoidArray * signonData);
SINGSIGN_RememberSignonData
(nsIPrompt* dialog, const char* URLName, nsVoidArray * signonData, nsIDOMWindow* window);
XP_END_PROTOS

View File

@@ -38,6 +38,7 @@
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLSelectElement.h"
#include "nsIDOMHTMLOptionElement.h"
#include "nsICommonDialogs.h"
#include "nsIURL.h"
#include "nsFileStream.h"
@@ -72,6 +73,7 @@ static NS_DEFINE_IID(kIDOMHTMLOptionElementIID, NS_IDOMHTMLOPTIONELEMENT_IID);
static NS_DEFINE_IID(kIIOServiceIID, NS_IIOSERVICE_IID);
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
static NS_DEFINE_CID(kCommonDialogsCID, NS_CommonDialog_CID );
static NS_DEFINE_CID(kNetSupportDialogCID, NS_NETSUPPORTDIALOG_CID);
static NS_DEFINE_CID(kProfileCID, NS_PROFILE_CID);
@@ -737,26 +739,26 @@ Wallet_Localize(char* genericString) {
/**********************/
PUBLIC PRBool
Wallet_Confirm(PRUnichar * szMessage)
Wallet_Confirm(PRUnichar * szMessage, nsIDOMWindow* window)
{
PRBool retval = PR_TRUE; /* default value */
nsresult res;
NS_WITH_SERVICE(nsIPrompt, dialog, kNetSupportDialogCID, &res);
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &res);
if (NS_FAILED(res)) {
return retval;
}
const nsAutoString message = szMessage;
retval = PR_FALSE; /* in case user exits dialog by clicking X */
res = dialog->Confirm(nsnull, message.GetUnicode(), &retval);
res = dialog->Confirm(window, nsnull, message.GetUnicode(), &retval);
return retval;
}
PUBLIC PRBool
Wallet_ConfirmYN(PRUnichar * szMessage) {
Wallet_ConfirmYN(PRUnichar * szMessage, nsIDOMWindow* window) {
nsresult res;
NS_WITH_SERVICE(nsIPrompt, dialog, kNetSupportDialogCID, &res);
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &res);
if (NS_FAILED(res)) {
return PR_FALSE;
}
@@ -767,6 +769,7 @@ Wallet_ConfirmYN(PRUnichar * szMessage) {
PRUnichar * confirm_string = Wallet_Localize("Confirm");
res = dialog->UniversalDialog(
window, /* parent window */
NULL, /* title message */
confirm_string, /* title text in top line of window */
szMessage, /* this is the main message */
@@ -793,10 +796,10 @@ Wallet_ConfirmYN(PRUnichar * szMessage) {
}
PUBLIC PRInt32
Wallet_3ButtonConfirm(PRUnichar * szMessage)
Wallet_3ButtonConfirm(PRUnichar * szMessage, nsIDOMWindow* window)
{
nsresult res;
NS_WITH_SERVICE(nsIPrompt, dialog, kNetSupportDialogCID, &res);
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &res);
if (NS_FAILED(res)) {
return 0; /* default value is NO */
}
@@ -808,6 +811,7 @@ Wallet_3ButtonConfirm(PRUnichar * szMessage)
PRUnichar * confirm_string = Wallet_Localize("Confirm");
res = dialog->UniversalDialog(
window, /* parent window */
NULL, /* title message */
confirm_string, /* title text in top line of window */
szMessage, /* this is the main message */
@@ -851,9 +855,11 @@ Wallet_Alert(PRUnichar * szMessage)
}
PUBLIC PRBool
Wallet_CheckConfirmYN(PRUnichar * szMessage, PRUnichar * szCheckMessage, PRBool* checkValue) {
Wallet_CheckConfirmYN
(PRUnichar * szMessage, PRUnichar * szCheckMessage, PRBool* checkValue,
nsIDOMWindow* window) {
nsresult res;
NS_WITH_SERVICE(nsIPrompt, dialog, kNetSupportDialogCID, &res);
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &res);
if (NS_FAILED(res)) {
*checkValue = 0;
return PR_FALSE;
@@ -865,6 +871,7 @@ Wallet_CheckConfirmYN(PRUnichar * szMessage, PRUnichar * szCheckMessage, PRBool*
PRUnichar * confirm_string = Wallet_Localize("Confirm");
res = dialog->UniversalDialog(
window, /* parent window */
NULL, /* title message */
confirm_string, /* title text in top line of window */
szMessage, /* this is the main message */
@@ -2583,7 +2590,7 @@ Wallet_SignonViewerReturn(const nsString& results)
* see if user wants to capture data on current page
*/
PRIVATE PRBool
wallet_OKToCapture(char* urlName) {
wallet_OKToCapture(char* urlName, nsIDOMWindow* window) {
nsAutoString url; url.AssignWithConversion(urlName);
/* exit if pref is not set */
@@ -2604,7 +2611,7 @@ wallet_OKToCapture(char* urlName) {
/* ask user if we should capture the values on this form */
PRUnichar * message = Wallet_Localize("WantToCaptureForm?");
PRInt32 button = Wallet_3ButtonConfirm(message);
PRInt32 button = Wallet_3ButtonConfirm(message, window);
if (button == NEVER_BUTTON) {
/* add URL to list with NO_CAPTURE indicator set */
value.SetCharAt('y', NO_CAPTURE);
@@ -3355,7 +3362,7 @@ public:
};
PUBLIC void
WLLT_OnSubmit(nsIContent* currentForm) {
WLLT_OnSubmit(nsIContent* currentForm, nsIDOMWindow* window) {
nsCOMPtr<nsIDOMHTMLFormElement> currentFormNode(do_QueryInterface(currentForm));
@@ -3503,7 +3510,7 @@ WLLT_OnSubmit(nsIContent* currentForm) {
if (currentFormNode == formNode) {
NS_WITH_SERVICE(nsIPrompt, dialog, kNetSupportDialogCID, &rv);
if (NS_SUCCEEDED(rv)) {
SINGSIGN_RememberSignonData(dialog, URLName, signonData);
SINGSIGN_RememberSignonData(dialog, URLName, signonData, window);
}
}
PRInt32 count2 = signonData->Count();
@@ -3525,7 +3532,8 @@ WLLT_OnSubmit(nsIContent* currentForm) {
}
#else
/* save form if it meets all necessary conditions */
if (wallet_GetFormsCapturingPref() && (OKToPrompt) && wallet_OKToCapture(URLName)) {
if (wallet_GetFormsCapturingPref() &&
(OKToPrompt) && wallet_OKToCapture(URLName, window)) {
/* conditions all met, now save it */
for (PRUint32 elementY = 0; elementY < numElements; elementY++) {

View File

@@ -75,7 +75,7 @@ extern void
WLLT_GetPrefillListForViewer(nsString& aPrefillList);
extern void
WLLT_OnSubmit(nsIContent* formNode);
WLLT_OnSubmit(nsIContent* formNode, nsIDOMWindow* window);
extern void
WLLT_FetchFromNetCenter();
@@ -98,9 +98,9 @@ extern PRUnichar * Wallet_Localize(char * genericString);
extern char* Wallet_RandomName(char* suffix);
extern PRBool Wallet_ConfirmYN(PRUnichar * szMessage);
extern PRBool Wallet_ConfirmYN(PRUnichar * szMessage, nsIDOMWindow* window);
extern PRInt32 Wallet_3ButtonConfirm(PRUnichar * szMessage);
extern PRInt32 Wallet_3ButtonConfirm(PRUnichar * szMessage, nsIDOMWindow* window);
extern nsresult
Wallet_Encrypt2(const nsString& text, nsString& crypt);