| Index: LayoutTests/fast/forms/form-associated-element.html | 
| diff --git a/LayoutTests/fast/forms/form-associated-element.html b/LayoutTests/fast/forms/form-associated-element.html | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..882929589834ec86c98c9ad0af24c22bb5789256 | 
| --- /dev/null | 
| +++ b/LayoutTests/fast/forms/form-associated-element.html | 
| @@ -0,0 +1,70 @@ | 
| +<!doctype html> | 
| +<html> | 
| +<head> | 
| +<script src="../../resources/js-test.js"></script> | 
| +<script type="text/javascript"> | 
| +var formOwner; | 
| +function hasFormOwner(shouldHaveOwner, haveIt, event) | 
| +{ | 
| +    formOwner = haveIt || "not defined"; | 
| +    debug("Testing " + event.target.tagName); | 
| +    if (shouldHaveOwner) | 
| +        shouldBeEqualToString("formOwner", "defined"); | 
| +    else | 
| +        shouldBeEqualToString("formOwner", "not defined"); | 
| +} | 
| +</script> | 
| +</head> | 
| +<body> | 
| +<div style="display: none;"> | 
| +<form id=topForm> | 
| +<label form=topForm onerror="" onclick="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"><input type="button"/></label> | 
| +<!-- Form-associated elements per http://whatwg.org/specs/web-apps/current-work/#form-associated-element --> | 
| +<button onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></button> | 
| +<fieldset onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></fieldset> | 
| +<input type=radio onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"/> | 
| +<input type=number onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"/> | 
| +<keygen keytype=rsa onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></keygen> | 
| +<label onerror="" onclick="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"><input type="button"/></label> | 
| +<object onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></object> | 
| +<select onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></select> | 
| +<textarea onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></textarea> | 
| +<img onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></img> | 
| + | 
| +<!-- Elements that aren't associated. --> | 
| +<option onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></option> | 
| +<div onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></div> | 
| +<a onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></a> | 
| +<p onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></p> | 
| +</form> | 
| + | 
| +<!-- Elements that associated by 'form' reference rather than ancestor. --> | 
| +<input form=topForm type="number" onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"/> | 
| +<keygen form=topForm keytype=rsa onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></keygen> | 
| +<object form=topForm onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></object> | 
| +<select form=topForm onerror="hasFormOwner(true, typeof canary !== 'undefined' && canary, event);"></select> | 
| +<pre form=topForm onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></pre> | 
| +<span form=topForm onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></span> | 
| +<img form=topForm onerror="hasFormOwner(false, typeof canary !== 'undefined' && canary, event);"></img> | 
| +</div> | 
| +<script> | 
| +description("Verify that only elements that are 'form associatable' get a form owner."); | 
| + | 
| +var elements; | 
| +function testFormAssociation() | 
| +{ | 
| +   document.forms[0].canary = "defined"; | 
| +   elements = document.querySelectorAll("*[onerror]"); | 
| +   shouldBeTrue("elements.length > 0"); | 
| +   for (var i = 0; i < elements.length; ++i) { | 
| +        // <label/> won't handle 'error', use 'click'. | 
| +        var eventType = (elements[i] instanceof HTMLLabelElement) ? "click" : "error"; | 
| +        elements[i].dispatchEvent(new Event(eventType)); | 
| +   } | 
| +} | 
| +testFormAssociation(); | 
| +if (window.testRunner) | 
| +    testRunner.dumpAsText(); | 
| +</script> | 
| +</body> | 
| +</html> | 
|  |