146 lines
4.9 KiB
HTML
146 lines
4.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body onload="startTests()">
|
|
|
|
<form action="input-image-submit.html" method=GET id=form>
|
|
<input type=hidden name=state id=state value=step1>
|
|
<input type=image name=image id=image src=resources/apple.gif value=value>
|
|
</form>
|
|
|
|
<div id="console"></div>
|
|
<script>
|
|
function notifyDone() {
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
|
|
function failAndDone(message) {
|
|
testFailed(message);
|
|
notifyDone();
|
|
}
|
|
|
|
function handleSubmit() {
|
|
if (state.value == 'to-text-on-submit') {
|
|
image.type = 'text';
|
|
} else if (state.value == 'to-image-on-submit') {
|
|
image.type = 'image';
|
|
} else if (state.value == 'remove-input-on-submit') {
|
|
image.parentNode.removeChild(image);
|
|
image = null;
|
|
// Try to clear the reference count of the element.
|
|
gc();
|
|
}
|
|
}
|
|
|
|
function handleClick() {
|
|
if (state.value == 'to-image-on-click') {
|
|
image.type = 'image'
|
|
}
|
|
}
|
|
|
|
if (window.testRunner)
|
|
testRunner.waitUntilDone();
|
|
|
|
var state = document.getElementById('state');
|
|
var image = document.getElementById('image');
|
|
image.addEventListener('click', handleClick, false);
|
|
var form = document.getElementById('form');
|
|
form.addEventListener('submit', handleSubmit, false);
|
|
|
|
function startTests() {
|
|
var x = image.offsetLeft + 7;
|
|
var y = image.offsetTop + 11;
|
|
var clickEvent = document.createEvent('MouseEvent');
|
|
clickEvent.initMouseEvent('click', true, false, document.defaultView, 1, x, y, x, y, false, false, false, false, 0, document);
|
|
var enterEvent = document.createEvent('TextEvent');
|
|
enterEvent.initTextEvent("textInput", true, true, document.defaultView, "\n");
|
|
var query = window.location.search;
|
|
|
|
if (query.indexOf('state=') == -1) {
|
|
// Step 1a: Normal submission by mouse click with type=image
|
|
state.value = 'normal';
|
|
image.dispatchEvent(clickEvent);
|
|
} else if (query.indexOf('state=normal') != -1) {
|
|
// Should have image.x=7&image.y=11&image=value.
|
|
if (query.indexOf('image.x=7&image.y=11&image=value') == -1) {
|
|
failAndDone('Normal submission failed: ' + query);
|
|
return;
|
|
}
|
|
|
|
// Step 1b: Submission by element.click() method with type=image
|
|
state.value = 'click-method';
|
|
image.click();
|
|
} else if (query.indexOf('state=click-method') != -1) {
|
|
if (query.indexOf('image.x=0&image.y=0&image=value') == -1) {
|
|
failAndDone('Click method failed: ' + query);
|
|
return;
|
|
}
|
|
|
|
// Step 1c: Submission by keyboard activation with type=image
|
|
state.value = 'keyboard';
|
|
if (window.eventSender) {
|
|
image.focus();
|
|
eventSender.keyDown(' ');
|
|
} else {
|
|
failAndDone('This test requires eventSender');
|
|
return;
|
|
}
|
|
} else if (query.indexOf('state=keyboard') != -1) {
|
|
if (query.indexOf('image.x=0&image.y=0&image=value') == -1) {
|
|
failAndDone('Activating with keyboard failed: ' + query);
|
|
return;
|
|
}
|
|
|
|
// Step 2: Change the type to text on 'submit' event
|
|
state.value = 'to-text-on-submit';
|
|
image.dispatchEvent(clickEvent);
|
|
} else if (query.indexOf('state=to-text-on-submit') != -1) {
|
|
// Should have only image=value.
|
|
if (query.indexOf('image=value') == -1) {
|
|
failAndDone('Changing to text on submit failed: ' + query);
|
|
return;
|
|
}
|
|
|
|
// Step 3: Change the type to image on 'submit' event
|
|
state.value = 'to-image-on-submit';
|
|
image.type = 'text';
|
|
image.focus();
|
|
image.dispatchEvent(enterEvent);
|
|
} else if (query.indexOf('state=to-image-on-submit') != -1) {
|
|
// Should have image.x and image.y, but their values are 0.
|
|
if (query.indexOf('image.x=0&image.y=0&image=value') == -1) {
|
|
failAndDone('Changing to image on submit failed: ' + query);
|
|
return;
|
|
}
|
|
|
|
// Step 4: Change the type to image on 'click' event
|
|
state.value = 'to-image-on-click';
|
|
image.type = 'text';
|
|
image.dispatchEvent(clickEvent);
|
|
} else if (query.indexOf('state=to-image-on-click') != -1) {
|
|
// Same as the normal submission.
|
|
if (query.indexOf('image.x=7&image.y=11&image=value') == -1) {
|
|
failAndDone('Changing to image on click failed: ' + query);
|
|
return;
|
|
}
|
|
|
|
// Step 5: Removed the image button on 'submit' event
|
|
state.value = 'remove-input-on-submit';
|
|
image.dispatchEvent(clickEvent);
|
|
} else if (query.indexOf('state=remove-input-on-submit') != -1) {
|
|
// Should have nothing about image.
|
|
if (query.indexOf('image.x=') != -1 || query.indexOf('image=value') != -1)
|
|
testFailed('Removing the input on submit failed: ' + query);
|
|
else
|
|
testPassed('All tests passed.');
|
|
notifyDone();
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|