From 308d72e2dace7c14cbaa2eff3f8b4b50c7bf0ed3 Mon Sep 17 00:00:00 2001 From: "gavin%gavinsharp.com" Date: Tue, 25 Jul 2006 20:47:08 +0000 Subject: [PATCH] Bug 345400: Password manager can't handle case insensitive user field names imported from IE, patch by Michael Wu , r=enndeakin, a=beltzner git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@203668 18797224-902f-48f8-a5cc-f745e15eee43 --- .../passwordmgr/base/nsPasswordManager.cpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mozilla/toolkit/components/passwordmgr/base/nsPasswordManager.cpp b/mozilla/toolkit/components/passwordmgr/base/nsPasswordManager.cpp index fe1afd4515d..a1079cbd255 100644 --- a/mozilla/toolkit/components/passwordmgr/base/nsPasswordManager.cpp +++ b/mozilla/toolkit/components/passwordmgr/base/nsPasswordManager.cpp @@ -1793,6 +1793,32 @@ nsPasswordManager::FillDocument(nsIDOMDocument* aDomDoc) temp->GetValue(oldUserValue); userField = temp; + } else if ((e->passField).IsEmpty()) { + // Happens sometimes when we import passwords from IE since + // their form name match is case insensitive. In this case, + // we'll just have to do a case insensitive search for the + // userField and hope we get something. + PRUint32 count; + form->GetElementCount(&count); + PRUint32 i; + nsCOMPtr formControl; + for (i = 0; i < count; i++) { + form->GetElementAt(i, getter_AddRefs(formControl)); + + if (formControl && + formControl->GetType() == NS_FORM_INPUT_TEXT) { + nsCOMPtr inputField = do_QueryInterface(formControl); + nsAutoString name; + inputField->GetName(name); + if (name.EqualsIgnoreCase(NS_ConvertUTF16toUTF8(e->userField).get())) { + inputField->GetValue(oldUserValue); + userField = inputField; + foundNode = inputField; + e->userField.Assign(name); + break; + } + } + } } if (!(e->passField).IsEmpty()) { @@ -1847,6 +1873,8 @@ nsPasswordManager::FillDocument(nsIDOMDocument* aDomDoc) temp->GetValue(oldPassValue); passField = temp; + if ((e->passField).IsEmpty()) + passField->GetName(e->passField); } else { continue; }