| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Clicking with primary vs non-primary buttons</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-actions.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| </head> |
| <body> |
| <h1>Clicking on input type=text element when placeholder changes</h1> |
| <input id="target" onfocus="this.placeholder = ++focusCount;" placeholder="initial"> |
| <input id="other"> |
| <script> |
| var focusCount = 0; |
| var target = document.querySelector('#target'); |
| document.addEventListener('contextmenu', event => { event.preventDefault(); }); |
| |
| var test_click = async_test("Test click and auxclick on input element"); |
| |
| // The test is on purpose rather vague, since auxclick handling on |
| // touchscreens isn't well defined. |
| // But at least there should be 'click' |
| var didGetClick = false; |
| async function testClick(type, mouseButton) { |
| return new Promise((resolve) => { |
| target.addEventListener(type, event => { |
| event.preventDefault(); |
| didGetClick = didGetClick || event.type == "click"; |
| test_click.step(() => { |
| assert_equals(event.type, type, 'Should have got an event.'); |
| }); |
| }, {once: true}); |
| |
| // Inject mouse click events. |
| var actions = new test_driver.Actions(); |
| document.getElementById("other").focus(); |
| actions.pointerMove(0, 0, {origin: target}) |
| .pointerDown({button: mouseButton}) |
| .pointerUp({button: mouseButton}) |
| .send() |
| .then(resolve); |
| }); |
| } |
| |
| async function testClicks() { |
| var buttonType = test_driver.Actions.prototype.ButtonType; |
| await testClick("click", buttonType.LEFT); |
| await testClick("auxclick", buttonType.MIDDLE); |
| await testClick("auxclick", buttonType.RIGHT); |
| test_click.step(() => { |
| assert_true(didGetClick, 'Should have got at least "click".'); |
| }); |
| test_click.done(); |
| } |
| |
| testClicks(); |
| </script> |
| </body> |
| </html> |