NS_IMETHODIMP nsSmtpServer::GetUsernamePasswordWithUI(const PRUnichar * aPromptMessage, const PRUnichar *aPromptTitle, nsIAuthPrompt* aDialog, nsACString &aUsername, nsACString &aPassword) { nsresult rv; if (!m_password.IsEmpty()) { rv = GetUsername(aUsername); NS_ENSURE_SUCCESS(rv, rv); return GetPassword(aPassword); } NS_ENSURE_ARG_POINTER(aDialog); nsCString serverUri; rv = GetServerURI(serverUri); NS_ENSURE_SUCCESS(rv, rv); nsString uniUsername; nsString uniPassword; bool okayValue = true; rv = aDialog->PromptUsernameAndPassword(aPromptTitle, aPromptMessage, NS_ConvertASCIItoUTF16(serverUri).get(), nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, getter_Copies(uniUsername), getter_Copies(uniPassword), &okayValue); NS_ENSURE_SUCCESS(rv, rv); // If the user pressed cancel, just return emtpy strings. if (!okayValue) { aUsername.Truncate(); aPassword.Truncate(); return rv; } // We got a username and password back...so remember them. NS_LossyConvertUTF16toASCII username(uniUsername); rv = SetUsername(username); NS_ENSURE_SUCCESS(rv, rv); NS_LossyConvertUTF16toASCII password(uniPassword); rv = SetPassword(password); NS_ENSURE_SUCCESS(rv, rv); aUsername = username; aPassword = password; return NS_OK; }
NS_IMETHODIMP nsSmtpServer::GetPasswordWithUI(const PRUnichar *aPromptMessage, const PRUnichar *aPromptTitle, nsIAuthPrompt* aDialog, nsACString &aPassword) { if (!m_password.IsEmpty()) return GetPassword(aPassword); NS_ENSURE_ARG_POINTER(aDialog); nsCString serverUri; nsresult rv = GetServerURI(serverUri); NS_ENSURE_SUCCESS(rv, rv); PRBool okayValue = PR_TRUE; nsString uniPassword; rv = aDialog->PromptPassword(aPromptTitle, aPromptMessage, NS_ConvertASCIItoUTF16(serverUri).get(), nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, getter_Copies(uniPassword), &okayValue); NS_ENSURE_SUCCESS(rv, rv); // If the user pressed cancel, just return an empty string. if (!okayValue) { aPassword.Truncate(); return rv; } NS_LossyConvertUTF16toASCII password(uniPassword); rv = SetPassword(password); NS_ENSURE_SUCCESS(rv, rv); aPassword = password; return NS_OK; }