| Index: third_party/WebKit/LayoutTests/fast/forms/radio/radio-group-keyboard-change-event.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/forms/radio/radio-group-keyboard-change-event.html b/third_party/WebKit/LayoutTests/fast/forms/radio/radio-group-keyboard-change-event.html
|
| index d88c9146ec6ffddaadf3a87c985496cae37d8465..153ac6dacbbe7275142eae47f24da4bc32be8d1e 100644
|
| --- a/third_party/WebKit/LayoutTests/fast/forms/radio/radio-group-keyboard-change-event.html
|
| +++ b/third_party/WebKit/LayoutTests/fast/forms/radio/radio-group-keyboard-change-event.html
|
| @@ -1,6 +1,9 @@
|
| <!DOCTYPE html>
|
| <html>
|
| <body>
|
| +<script src="../../../resources/testharness.js"></script>
|
| +<script src="../../../resources/testharnessreport.js"></script>
|
| +<div id="log"></div>
|
|
|
| <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=32013">https://bugs.webkit.org/show_bug.cgi?id=32013</a>.
|
|
|
| @@ -8,17 +11,17 @@
|
| radio button should fire change events.
|
|
|
| <p>
|
| -<input type=radio name=aaa value=a checked onchange="handleChange(event)" onclick="handleClick(event)">a
|
| -<input type=radio name=aaa value=b onchange="handleChange(event)" onclick="handleClick(event)">b
|
| -<input type=radio name=aaa value=c onchange="handleChange(event)" onclick="handleClick(event)">c
|
| +<input type=radio name=aaa value=a checked onchange="handleChange(event)">a
|
| +<input type=radio name=aaa value=b onchange="handleChange(event)">b
|
| +<input type=radio name=aaa value=c onchange="handleChange(event)">c
|
|
|
| <p>For manual testing, focus a radio button in the second group and use the arrow keys. Change events
|
| should still be dispatched but the checked radio should not change.
|
|
|
| <p>
|
| -<input type=radio name=bbb value=d checked onchange="handleChange(event)" onclick="handleClick(event)">d
|
| -<input type=radio name=bbb value=e onchange="handleChange(event)" onclick="handleClick(event)">e
|
| -<input type=radio name=bbb value=f onchange="handleChange(event)" onclick="handleClick(event)">f
|
| +<input type=radio name=bbb value=d checked onchange="handleChange(event)" onclick="preventClick(event)">d
|
| +<input type=radio name=bbb value=e onchange="handleChange(event)" onclick="preventClick(event)">e
|
| +<input type=radio name=bbb value=f onchange="handleChange(event)" onclick="preventClick(event)">f
|
|
|
| <p>Test for <a href="https://code.google.com/p/chromium/issues/detail?id=556677">https://code.google.com/p/chromium/issues/detail?id=556677</a>.
|
|
|
| @@ -31,36 +34,18 @@ radio button should fire change events in the direction of left to right.
|
| <input type=radio name=ccc value=y onchange="handleChange(event)"><span dir="rtl">y</span>
|
| <input type=radio name=ccc value=z onchange="handleChange(event)"><span dir="rtl">z</span>
|
| </div>
|
| -<pre id=out></pre>
|
|
|
| <script>
|
| -
|
| -var preventClickValues = 'def';
|
| +var lastChangeEventValue = null;
|
|
|
| function handleChange(e)
|
| {
|
| - var value = e.target.value;
|
| - print(value + ' dispatched change event');
|
| -}
|
| -
|
| -function handleClick(e)
|
| -{
|
| - var value = e.target.value;
|
| - if (preventClickValues.indexOf(value) !== -1)
|
| - e.preventDefault();
|
| + lastChangeEventValue = e.target.value;
|
| }
|
|
|
| -function print(s)
|
| +function preventClick(e)
|
| {
|
| - document.getElementById('out').textContent += s + '\n';
|
| -}
|
| -
|
| -function pass(s) {
|
| - print('PASS: ' + s);
|
| -}
|
| -
|
| -function fail(s) {
|
| - print('FAIL: ' + s);
|
| + e.preventDefault();
|
| }
|
|
|
| function getRadio(value)
|
| @@ -68,60 +53,52 @@ function getRadio(value)
|
| return document.querySelector('input[value="' + value + '"]');
|
| }
|
|
|
| -function assertChecked(value)
|
| -{
|
| - if (getRadio(value).checked)
|
| - pass(value + ' is checked');
|
| - else
|
| - fail(value + ' should be checked');
|
| -}
|
| -
|
| -function assertNotChecked(value)
|
| -{
|
| - if (!getRadio(value).checked)
|
| - pass(value + ' is not checked');
|
| - else
|
| - fail(value + ' should not be checked');
|
| -}
|
| -
|
| -if (window.testRunner)
|
| - testRunner.dumpAsText();
|
| -
|
| if (window.eventSender) {
|
| - getRadio('a').focus();
|
| - eventSender.keyDown('downArrow');
|
| - eventSender.keyDown('downArrow');
|
| -
|
| - getRadio('d').focus();
|
| - eventSender.keyDown('downArrow');
|
| - eventSender.keyDown('downArrow');
|
| -
|
| - assertNotChecked('a');
|
| - assertNotChecked('b');
|
| - assertChecked('c');
|
| -
|
| - assertChecked('d');
|
| - assertNotChecked('e');
|
| - assertNotChecked('f');
|
| -
|
| - getRadio('x').focus();
|
| - eventSender.keyDown('rightArrow');
|
| - eventSender.keyDown('rightArrow');
|
| -
|
| - assertNotChecked('x');
|
| - assertChecked('y');
|
| - assertNotChecked('z');
|
| -
|
| - getRadio('x').focus();
|
| - eventSender.keyDown('downArrow');
|
| -
|
| - assertNotChecked('x');
|
| - assertChecked('y');
|
| - assertNotChecked('z');
|
| -
|
| -
|
| + test(function() {
|
| + getRadio('a').focus();
|
| + eventSender.keyDown('downArrow');
|
| + assert_equals(lastChangeEventValue, 'b');
|
| + eventSender.keyDown('downArrow');
|
| + assert_equals(lastChangeEventValue, 'c');
|
| + assert_false(getRadio('a').checked);
|
| + assert_false(getRadio('b').checked);
|
| + assert_true(getRadio('c').checked);
|
| + }, 'Pressing an arrow key moves checked state in a radio button group.');
|
| +
|
| + test(function() {
|
| + getRadio('d').focus();
|
| + eventSender.keyDown('downArrow');
|
| + eventSender.keyDown('downArrow');
|
| + assert_true(getRadio('d').checked);
|
| + assert_false(getRadio('e').checked);
|
| + assert_false(getRadio('f').checked);
|
| + }, 'Pressing an arrow key doesn\'t move checked state in a radio button group if click events are prevented.');
|
| +
|
| + test(function() {
|
| + getRadio('x').focus();
|
| + eventSender.keyDown('rightArrow');
|
| + assert_equals(lastChangeEventValue, 'z');
|
| + assert_false(getRadio('x').checked);
|
| + assert_false(getRadio('y').checked);
|
| + assert_true(getRadio('z').checked);
|
| +
|
| + eventSender.keyDown('rightArrow');
|
| + assert_equals(lastChangeEventValue, 'y');
|
| + assert_false(getRadio('x').checked);
|
| + assert_true(getRadio('y').checked);
|
| + assert_false(getRadio('z').checked);
|
| + }, 'Right arrow key should move checked state backward in RTL.');
|
| +
|
| + test(function() {
|
| + getRadio('x').focus();
|
| + getRadio('x').checked = true;
|
| + eventSender.keyDown('downArrow');
|
| + assert_equals(lastChangeEventValue, 'y');
|
| + assert_false(getRadio('x').checked);
|
| + assert_true(getRadio('y').checked);
|
| + assert_false(getRadio('z').checked);
|
| + }, 'Down arrow key should move checked state forward regardless of RTL.');
|
| }
|
| -
|
| </script>
|
| </body>
|
| </html>
|
|
|