Summary: | text field element fails to match :checked (Acid3 bug) | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> | ||||
Component: | CSS | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | ||||||
Priority: | P2 | ||||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | Mac | ||||||
OS: | OS X 10.4 | ||||||
Attachments: |
|
Description
Eric Seidel (no email)
2008-01-05 14:18:55 PST
Test 43: FAIL (expected 0, got 1 - text field matched :checked) The full test: function () { // test 43: :enabled, :disabled, :checked, etc selectorTest(function (doc, add, expect) { var input = doc.createElement('input'); input.type = 'checkbox'; doc.body.appendChild(input); var neither = 0; var both = add(":checked:enabled"); var checked = add(":checked"); var enabled = add(":enabled"); expect(doc.body, neither, "control failure"); expect(input, enabled, "input element didn't match :enabled"); input.click(); expect(input, both, "input element didn't match :checked"); input.disabled = true; expect(input, checked, "failure 3"); input.checked = false; expect(input, neither, "failure 4"); expect(doc.body, neither, "failure 5"); }); selectorTest(function (doc, add, expect) { var input1 = doc.createElement('input'); input1.type = 'radio'; input1.name = 'radio'; doc.body.appendChild(input1); var input2 = doc.createElement('input'); input2.type = 'radio'; input2.name = 'radio'; doc.body.appendChild(input2); var checked = add(":checked"); expect(input1, 0, "failure 6"); expect(input2, 0, "failure 7"); input2.checked = true; expect(input1, 0, "failure 6"); expect(input2, checked, "failure 7"); input1.checked = true; expect(input1, checked, "failure 8"); expect(input2, 0, "failure 9"); input2.setAttribute("checked", "checked"); // sets defaultChecked, doesn't change actual state expect(input1, checked, "failure 9"); expect(input2, 0, "failure 10"); input1.type = "text"; expect(input1, 0, "text field matched :checked"); }); selectorTest(function (doc, add, expect) { var input = doc.createElement('input'); input.type = 'button'; doc.body.appendChild(input); var neither = 0; var enabled = add(":enabled"); var disabled = add(":disabled"); add(":enabled:disabled"); expect(input, enabled, "failure 12"); input.disabled = true; expect(input, disabled, "failure 13"); input.removeAttribute("disabled"); expect(input, enabled, "failure 14"); expect(doc.body, neither, "failure 15"); }); return 3; }, Working on this. Created attachment 18296 [details]
Fix :checked matching type='text' and add test case
.../checked-pseudo-selector-expected.txt | 6 ++++++
.../HTMLInputElement/checked-pseudo-selector.html | 13 +++++++++++++
.../dom/HTMLInputElement/resources/TEMPLATE.html | 13 +++++++++++++
.../resources/checked-pseudo-selector.js | 19 +++++++++++++++++++
WebCore/html/HTMLInputElement.h | 3 ++-
5 files changed, 53 insertions(+), 1 deletions(-)
Comment on attachment 18296 [details]
Fix :checked matching type='text' and add test case
This looks good. I think the test might benefit from being a rendering test (or maybe have one in addition) but it's not a show-stopper. ChangeLog needed as well.
|