129 lines
3.8 KiB
HTML
129 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script src="resources/common.js"></script>
|
|
</head>
|
|
<body>
|
|
<input id="search_input" type="search" />
|
|
<div id="console">
|
|
<p>
|
|
This tests the behavior of a cancel button in search input forms.
|
|
</p>
|
|
</div>
|
|
<script>
|
|
function click(position) {
|
|
if (!eventSender)
|
|
return;
|
|
eventSender.mouseMoveTo(position.x, position.y);
|
|
eventSender.mouseDown();
|
|
eventSender.mouseMoveTo(position.x, position.y);
|
|
eventSender.mouseUp();
|
|
eventSender.leapForward(1000);
|
|
}
|
|
|
|
function keydown(character) {
|
|
if (!eventSender)
|
|
return;
|
|
eventSender.keyDown(character);
|
|
eventSender.leapForward(1000);
|
|
}
|
|
|
|
function setInputAttributes(input, value, disabled, readonly) {
|
|
input.value = value;
|
|
input.disabled = disabled;
|
|
input.readOnly = !!readonly;
|
|
}
|
|
|
|
if (window.testRunner) {
|
|
var input = $("search_input");
|
|
var cancelButtonPosition = searchCancelButtonPosition(input);
|
|
var middleButtonPosition = {};
|
|
middleButtonPosition.x = input.offsetLeft + input.offsetWidth / 2;
|
|
middleButtonPosition.y = input.offsetTop + input.offsetHeight / 2;
|
|
var enabled = false;
|
|
var disabled = true;
|
|
var readonly = true;
|
|
|
|
debug("Test on the input form with disabled=false and readonly=false");
|
|
|
|
setInputAttributes(input, "foo", enabled);
|
|
debug("Click the cancel button:");
|
|
click(cancelButtonPosition);
|
|
shouldBe('input.value', '""');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"b"');
|
|
|
|
setInputAttributes(input, "foo", enabled);
|
|
debug("Click the center of the form:");
|
|
click(middleButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foob"');
|
|
|
|
debug("");
|
|
debug("Test on the input form with disabled=false and readonly=true");
|
|
|
|
setInputAttributes(input, "foo", enabled, readonly);
|
|
debug("Click the cancel button:");
|
|
click(cancelButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foo"');
|
|
|
|
setInputAttributes(input, "foo", enabled, readonly);
|
|
debug("Click the center of the form:");
|
|
click(middleButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foo"');
|
|
|
|
debug("");
|
|
debug("Test on the input form with disabled=true and readonly=false");
|
|
|
|
setInputAttributes(input, "foo", disabled);
|
|
debug("Click the cancel button:");
|
|
click(cancelButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foo"');
|
|
|
|
setInputAttributes(input, "foo", disabled);
|
|
debug("Click the center of the form:");
|
|
click(middleButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foo"');
|
|
|
|
debug("");
|
|
debug("Test on the input form with disabled=true and readonly=true");
|
|
|
|
setInputAttributes(input, "foo", disabled, readonly);
|
|
debug("Click the cancel button:");
|
|
click(cancelButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foo"');
|
|
|
|
setInputAttributes(input, "foo", disabled, readonly);
|
|
debug("Click the center of the form:");
|
|
click(middleButtonPosition);
|
|
shouldBe('input.value', '"foo"');
|
|
debug("... and then input one character:");
|
|
keydown("b");
|
|
shouldBe('input.value', '"foo"');
|
|
|
|
debug("");
|
|
}
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|