зеркало из https://github.com/mozilla/gecko-dev.git
Bug 565775 - The editor will not be correctly initialized for <input type=tel> on user events; r=roc
This commit is contained in:
Родитель
083ba1cffe
Коммит
3403a0ab1a
|
@ -1622,13 +1622,12 @@ nsHTMLInputElement::Click()
|
||||||
PRBool
|
PRBool
|
||||||
nsHTMLInputElement::NeedToInitializeEditorForEvent(nsEventChainPreVisitor& aVisitor) const
|
nsHTMLInputElement::NeedToInitializeEditorForEvent(nsEventChainPreVisitor& aVisitor) const
|
||||||
{
|
{
|
||||||
// We only need to initialize the editor for text input controls because they
|
// We only need to initialize the editor for single line input controls because they
|
||||||
// are lazily initialized. We don't need to initialize the control for
|
// are lazily initialized. We don't need to initialize the control for
|
||||||
// certain types of events, because we know that those events are safe to be
|
// certain types of events, because we know that those events are safe to be
|
||||||
// handled without the editor being initialized. These events include:
|
// handled without the editor being initialized. These events include:
|
||||||
// mousein/move/out, and DOM mutation events.
|
// mousein/move/out, and DOM mutation events.
|
||||||
if ((mType == NS_FORM_INPUT_TEXT ||
|
if (IsSingleLineTextControl(PR_FALSE) &&
|
||||||
mType == NS_FORM_INPUT_PASSWORD) &&
|
|
||||||
aVisitor.mEvent->eventStructType != NS_MUTATION_EVENT) {
|
aVisitor.mEvent->eventStructType != NS_MUTATION_EVENT) {
|
||||||
|
|
||||||
switch (aVisitor.mEvent->message) {
|
switch (aVisitor.mEvent->message) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=542914
|
||||||
|
|
||||||
/** Test for Bug 542914 **/
|
/** Test for Bug 542914 **/
|
||||||
SimpleTest.waitForExplicitFinish();
|
SimpleTest.waitForExplicitFinish();
|
||||||
addLoadEvent(function() {
|
function runTests(callback, type) {
|
||||||
var a = $("a");
|
var a = $("a");
|
||||||
|
|
||||||
// Test that the initial value of the control is available to script
|
// Test that the initial value of the control is available to script
|
||||||
|
@ -70,7 +70,7 @@ addLoadEvent(function() {
|
||||||
is(c.value, "ab", "Control retains caret position after being re-focused");
|
is(c.value, "ab", "Control retains caret position after being re-focused");
|
||||||
|
|
||||||
var d = document.createElement("input");
|
var d = document.createElement("input");
|
||||||
d.setAttribute("type", "text");
|
d.setAttribute("type", type);
|
||||||
$("display").appendChild(d);
|
$("display").appendChild(d);
|
||||||
document.body.offsetHeight;
|
document.body.offsetHeight;
|
||||||
|
|
||||||
|
@ -83,7 +83,29 @@ addLoadEvent(function() {
|
||||||
$("display").removeChild(d);
|
$("display").removeChild(d);
|
||||||
is(d.value, "newx", "Dynamic control retains value after being removed from the document");
|
is(d.value, "newx", "Dynamic control retains value after being removed from the document");
|
||||||
|
|
||||||
SimpleTest.finish();
|
callback();
|
||||||
|
}
|
||||||
|
|
||||||
|
var gPreviousType = "text";
|
||||||
|
function setTypes(aType) {
|
||||||
|
var content = document.getElementById("display");
|
||||||
|
content.innerHTML = content.innerHTML.replace(gPreviousType, aType);
|
||||||
|
gPreviousType = aType;
|
||||||
|
}
|
||||||
|
|
||||||
|
addLoadEvent(function() {
|
||||||
|
ok(true, "Running tests on <input type=text>");
|
||||||
|
runTests(function() {
|
||||||
|
ok(true, "Running tests on <input type=password>");
|
||||||
|
setTypes("password");
|
||||||
|
runTests(function() {
|
||||||
|
ok(true, "Running tests on <input type=tel>");
|
||||||
|
setTypes("tel");
|
||||||
|
runTests(function() {
|
||||||
|
SimpleTest.finish();
|
||||||
|
}, "tel");
|
||||||
|
}, "password");
|
||||||
|
}, "text");
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче