const char *passwordRealm, nsIPrompt* dialog, PRBool *pressedOK, PRBool persistPassword) {
const char *passwordRealm, nsIPrompt* dialog, PRBool *pressedOK, PRUint32 savePassword) {
SINGSIGN_PromptUsernameAndPassword    (const PRUnichar *dialogTitle, const PRUnichar *text, PRUnichar **user, PRUnichar **pwd,     const char *passwordRealm, nsIPrompt* dialog, PRBool *pressedOK, PRBool persistPassword) {  nsresult res;  /* do only the dialog if signon preference is not enabled */  if (!si_GetSignonRememberingPref()){    nsString realm = NS_ConvertToString(passwordRealm);   // XXX hack    return dialog->PromptUsernameAndPassword(dialogTitle, text, realm.GetUnicode(),                                              persistPassword, user, pwd, pressedOK);  }  /* prefill with previous username/password if any */  nsAutoString username, password;  si_RestoreOldSignonDataFromBrowser(passwordRealm, PR_FALSE, username, password);  /* get new username/password from user */  *user = username.ToNewUnicode();  *pwd = password.ToNewUnicode();  PRBool checked = PR_FALSE;  res = si_CheckGetUsernamePassword(user, pwd, text, &checked);  if (NS_FAILED(res)) {    /* user pressed Cancel */    PR_FREEIF(*user);    PR_FREEIF(*pwd);    *pressedOK = PR_FALSE;    return NS_OK;  }  if (checked) {    si_RememberSignonDataFromBrowser (passwordRealm, nsAutoString(*user), nsAutoString(*pwd));  }  /* cleanup and return */  *pressedOK = PR_TRUE;  return NS_OK;}