A label element not in a document should not label an element in a document
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Oct 2015 17:47:49 +0000 (17:47 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Oct 2015 17:47:49 +0000 (17:47 +0000)
commit188b45ed664cc98daca602ba04c9adcb93b49094
tree027e65fe401f518a6dd5134ad6cceb1150bad496
parent76c9d374ee5fc7aebd9715a598a5bc787e4a9da9
A label element not in a document should not label an element in a document
https://bugs.webkit.org/show_bug.cgi?id=148863
<rdar://problem/22589300>

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C HTML test now that one more check is passing.

* web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt:

Source/WebCore:

As per the HTML specification, a label element's 'for' attribute may be
specified to indicate a form control with which the caption is to be
associated. If the attribute is specified, the attribute's value must
be the ID of a labelable element in the same Document as the label
element:
https://html.spec.whatwg.org/multipage/forms.html#attr-label-for

However, our code was failing to check if the label element was actually
in the document before calling document.getElementById(). In such case,
we would potentially return a labelable Element that is not in the same
document as the label Element. This patch fixes the problem.

The new behavior is consistent with Firefox.

No new tests, already covered by existing test.

* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::control):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191497 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/html/HTMLLabelElement.cpp