mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Bug 600551 - Password manager not working with input type=email. r=dolske, a=blocking
This commit is contained in:
parent
86a74972b4
commit
c855497a35
@ -711,8 +711,16 @@ LoginManager.prototype = {
|
||||
// username. We might not find a username field if the user is
|
||||
// already logged in to the site.
|
||||
for (var i = pwFields[0].index - 1; i >= 0; i--) {
|
||||
if (form.elements[i].type == "text") {
|
||||
usernameField = form.elements[i];
|
||||
var element = form.elements[i];
|
||||
var fieldType = (element.hasAttribute("type") ?
|
||||
element.getAttribute("type").toLowerCase() :
|
||||
element.type);
|
||||
if (fieldType == "text" ||
|
||||
fieldType == "email" ||
|
||||
fieldType == "url" ||
|
||||
fieldType == "tel" ||
|
||||
fieldType == "number") {
|
||||
usernameField = element;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ MODULE = test_passwordmgr
|
||||
# Mochitest tests
|
||||
MOCHI_TESTS = \
|
||||
test_basic_form.html \
|
||||
test_basic_form_html5.html \
|
||||
test_basic_form_2.html \
|
||||
test_basic_form_0pw.html \
|
||||
test_basic_form_1pw.html \
|
||||
|
176
toolkit/components/passwordmgr/test/test_basic_form_html5.html
Normal file
176
toolkit/components/passwordmgr/test/test_basic_form_html5.html
Normal file
@ -0,0 +1,176 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test for Login Manager</title>
|
||||
<script type="text/javascript" src="/MochiKit/packed.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="text/javascript" src="pwmgr_common.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
Login Manager test: html5 input types (email, tel, url, etc.)
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
<form id="form1" action="http://bug600551-1">
|
||||
<input type="email" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form2" action="http://bug600551-2">
|
||||
<input type="tel" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form3" action="http://bug600551-3">
|
||||
<input type="url" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
|
||||
<form id="form4" action="http://bug600551-4">
|
||||
<input type="number" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<!-- The following forms should not be filled with usernames -->
|
||||
<form id="form5" action="formtest.js">
|
||||
<input type="search" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form6" action="formtest.js">
|
||||
<input type="datetime" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form7" action="formtest.js">
|
||||
<input type="date" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form8" action="formtest.js">
|
||||
<input type="month" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form9" action="formtest.js">
|
||||
<input type="week" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form10" action="formtest.js">
|
||||
<input type="time" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form11" action="formtest.js">
|
||||
<input type="datetime-local" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form12" action="formtest.js">
|
||||
<input type="range" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<form id="form13" action="formtest.js">
|
||||
<input type="color" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
/* Test for Login Manager: 600551
|
||||
(Password manager not working with input type=email)
|
||||
*/
|
||||
commonInit();
|
||||
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
const Cc = Components.classes;
|
||||
pwmgr = Cc["@mozilla.org/login-manager;1"].
|
||||
getService(Ci.nsILoginManager);
|
||||
|
||||
login1 = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
||||
createInstance(Ci.nsILoginInfo);
|
||||
login2 = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
||||
createInstance(Ci.nsILoginInfo);
|
||||
login3 = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
||||
createInstance(Ci.nsILoginInfo);
|
||||
login4 = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
||||
createInstance(Ci.nsILoginInfo);
|
||||
|
||||
login1.init("http://mochi.test:8888", "http://bug600551-1", null,
|
||||
"testuser@example.com", "testpass1", "", "");
|
||||
login2.init("http://mochi.test:8888", "http://bug600551-2", null,
|
||||
"555-555-5555", "testpass2", "", "");
|
||||
login3.init("http://mochi.test:8888", "http://bug600551-3", null,
|
||||
"http://mozilla.org", "testpass3", "", "");
|
||||
login4.init("http://mochi.test:8888", "http://bug600551-4", null,
|
||||
"123456789", "testpass4", "", "");
|
||||
|
||||
pwmgr.addLogin(login1);
|
||||
pwmgr.addLogin(login2);
|
||||
pwmgr.addLogin(login3);
|
||||
pwmgr.addLogin(login4);
|
||||
|
||||
function startTest() {
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
|
||||
checkForm(1, "testuser@example.com", "testpass1");
|
||||
checkForm(2, "555-555-5555", "testpass2");
|
||||
checkForm(3, "http://mozilla.org", "testpass3");
|
||||
checkForm(4, "123456789", "testpass4");
|
||||
|
||||
is($_(5, "uname").value, "", "type=search should not be considered a username");
|
||||
|
||||
is($_(6, "uname").value, "", "type=datetime should not be considered a username");
|
||||
|
||||
is($_(7, "uname").value, "", "type=date should not be considered a username");
|
||||
|
||||
is($_(8, "uname").value, "", "type=month should not be considered a username");
|
||||
|
||||
is($_(9, "uname").value, "", "type=week should not be considered a username");
|
||||
|
||||
is($_(10, "uname").value, "", "type=time should not be considered a username");
|
||||
|
||||
is($_(11, "uname").value, "", "type=datetime-local should not be considered a username");
|
||||
|
||||
is($_(12, "uname").value, "", "type=range should not be considered a username");
|
||||
|
||||
is($_(13, "uname").value, "", "type=color should not be considered a username");
|
||||
|
||||
pwmgr.removeLogin(login1);
|
||||
pwmgr.removeLogin(login2);
|
||||
pwmgr.removeLogin(login3);
|
||||
pwmgr.removeLogin(login4);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
window.onload = startTest;
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user