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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user