123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <!DOCTYPE HTML>
- <html>
- <head>
- <title>Test click event on input</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- </head>
- <body>
- <p id="display">
- <input id="input"
- style="position: absolute; top: 5px; left: 5px; border: solid 15px blue; width: 100px; height: 20px;"
- onclick="gClickCount++;">
- </p>
- <div id="content" style="display: none">
-
- </div>
- <pre id="test">
- <script type="application/javascript">
- var gClickCount = 0;
- SimpleTest.waitForExplicitFinish();
- SimpleTest.waitForFocus(runTests);
- var input = document.getElementById("input");
- function runTests()
- {
- for (var i = 0; i < 3; i++) {
- doTest(i);
- }
- // Re-test left clicking when the input element has some text.
- gClickCount = 0;
- input.value = "Long text Long text Long text Long text Long text Long text";
- doTest(0);
- input.style.display = "none";
- SimpleTest.finish();
- }
- function isEnabledMiddleClickPaste()
- {
- try {
- return SpecialPowers.getBoolPref("middlemouse.paste");
- } catch (e) {
- return false;
- }
- }
- function isEnabledAccessibleCaret()
- {
- try {
- return SpecialPowers.getBoolPref("layout.accessiblecaret.enabled");
- } catch (e) {
- return false;
- }
- }
- function doTest(aButton)
- {
- // NOTE #1: Right click causes a context menu to popup, then, the click event
- // isn't generated.
- // NOTE #2: If middle click causes text to be pasted, then, the click event
- // isn't generated.
- // NOTE #3: If touch caret is enabled, touch caret would ovelap input element,
- // then, the click event isn't generated.
- if (aButton != 2 &&
- (aButton != 1 || !isEnabledMiddleClickPaste()) &&
- (aButton != 0 || !isEnabledAccessibleCaret())) {
- gClickCount = 0;
- // click on border of input
- synthesizeMouse(input, 5, 5, { button: aButton });
- is(gClickCount, 1,
- "click event doesn't fired on input element (button is " +
- aButton + ")");
- gClickCount = 0;
- // down on border
- synthesizeMouse(input, 5, 5, { type: "mousedown", button: aButton });
- // up on anonymous div of input
- synthesizeMouse(input, 20, 20, { type: "mouseup", button: aButton });
- is(gClickCount, 1,
- "click event doesn't fired on input element (button is " +
- aButton + ")");
- gClickCount = 0;
- // down on anonymous div of input
- synthesizeMouse(input, 20, 20, { type: "mousedown", button: aButton });
- // up on border
- synthesizeMouse(input, 5, 5, { type: "mouseup", button: aButton });
- is(gClickCount, 1,
- "click event doesn't fired on input element (button is " +
- aButton + ")");
- }
- gClickCount = 0;
- // down on outside of input
- synthesizeMouse(input, -3, -3, { type: "mousedown", button: aButton });
- // up on border
- synthesizeMouse(input, 5, 5, { type: "mouseup", button: aButton });
- is(gClickCount, 0,
- "click event is fired on input element unexpectedly (button is " +
- aButton + ")");
- }
- </script>
- </pre>
- </body>
- </html>
|