From 020daee0acfa49a96d332801acf4e587b4b933fc Mon Sep 17 00:00:00 2001 From: "morse%netscape.com" Date: Fri, 27 Aug 1999 06:40:33 +0000 Subject: [PATCH] more code for browser-generated forms git-svn-id: svn://10.0.0.236/trunk@44772 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/extensions/wallet/src/singsign.cpp | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/mozilla/extensions/wallet/src/singsign.cpp b/mozilla/extensions/wallet/src/singsign.cpp index 5f1b4db8256..50957623736 100644 --- a/mozilla/extensions/wallet/src/singsign.cpp +++ b/mozilla/extensions/wallet/src/singsign.cpp @@ -2357,6 +2357,41 @@ PUBLIC nsresult SINGSIGN_PromptUsernameAndPassword (const PRUnichar *text, PRUnichar **user, PRUnichar **pwd, PRBool *returnValue, char* urlname) { + + nsresult res; + NS_WITH_SERVICE(nsIPrompt, dialog, kNetSupportDialogCID, &res); + if (NS_FAILED(res)) { + return res; + } + + /* do only the dialog if signon preference is not enabled */ + if (!si_GetSignonRememberingPref()){ + return dialog->PromptUsernameAndPassword(text, user, pwd, returnValue); + } + + /* prefill with previous username/password if any */ + char *password=0, *username=0; + si_RestoreOldSignonDataFromBrowser(urlname, PR_FALSE, &username, &password); + *user = nsAutoString(username).ToNewUnicode(); + *pwd = nsAutoString(password).ToNewUnicode(); + + /* get new username/password from user */ + res = dialog->PromptUsernameAndPassword(text, user, pwd, returnValue); + if (NS_FAILED(res) || !(*returnValue)) { + /* user pressed Cancel */ + return res; + } + + /* remember these values for next time */ + username = nsString(*user).ToNewCString(); + password = nsString(*pwd).ToNewCString(); + if (si_OkToSave(urlname, username)) { + si_RememberSignonDataFromBrowser (urlname, username, password); + } + + /* cleanup and return */ + PR_FREEIF(username); + PR_FREEIF(password); return NS_OK; }