| OLD | NEW | 
|    1 <html> |    1 <html> | 
|    2 <head> |    2 <head> | 
|    3 <script> |    3 <script> | 
|    4 function print(message, color) { |    4 function print(message, color) { | 
|    5     var paragraph = document.createElement("div"); |    5     var paragraph = document.createElement("div"); | 
|    6     paragraph.appendChild(document.createTextNode(message)); |    6     paragraph.appendChild(document.createTextNode(message)); | 
|    7     paragraph.style.fontFamily = "monospace"; |    7     paragraph.style.fontFamily = "monospace"; | 
|    8     if (color) |    8     if (color) | 
|    9         paragraph.style.color = color; |    9         paragraph.style.color = color; | 
|   10     document.getElementById("console").appendChild(paragraph); |   10     document.getElementById("console").appendChild(paragraph); | 
|   11 } |   11 } | 
|   12 function shouldBe(description, actual, expected) |   12 function shouldBe(description, actual, expected) | 
|   13 { |   13 { | 
|   14     if (expected === actual) { |   14     if (expected === actual) { | 
|   15         print("PASS: " + description + " should be " + expected + |   15         print("PASS: " + description + " should be " + expected + | 
|   16               " and is\n", |   16               " and is\n", | 
|   17               "green"); |   17               "green"); | 
|   18     } else { |   18     } else { | 
|   19         print("FAIL: " + description + " should be " + expected + |   19         print("FAIL: " + description + " should be " + expected + | 
|   20               " but instead is " + actual + "\n", |   20               " but instead is " + actual + "\n", | 
|   21               "red"); |   21               "red"); | 
|   22     } |   22     } | 
|   23 } |   23 } | 
|   24 function mouseeventverify(event, x, y, target, type) |   24 function testEvent(listener, offsetX, offsetY, target, type) | 
|   25 { |   25 { | 
|   26     shouldBe("event type", event.type, type); |   26     var rect = target.getBoundingClientRect(); | 
|   27     shouldBe("event target", event.target, target); |   27     var x = rect.left + offsetX; | 
|   28     shouldBe("event.pageX", event.pageX, x); |   28     var y = rect.top + offsetY; | 
|   29     shouldBe("event.pageY", event.pageY, y); |   29     listener.addEventListener(type, function () { | 
|   30     shouldBe("event.offsetX", event.offsetX, x); |   30         shouldBe("event type", event.type, type); | 
|   31     shouldBe("event.offsetY", event.offsetY, y); |   31         shouldBe("event target", event.target, target); | 
|   32     shouldBe("event.x", event.x, x); |   32         shouldBe("event.pageX", event.pageX, x); | 
|   33     shouldBe("event.y", event.y, y); |   33         shouldBe("event.pageY", event.pageY, y); | 
|   34 } |   34         shouldBe("event.offsetX", event.offsetX, offsetX); | 
|   35 function mouseeventverify2(event, x, y, offsetX, offsetY, target, type) |   35         shouldBe("event.offsetY", event.offsetY, offsetY); | 
|   36 { |   36         shouldBe("event.x", event.x, x); | 
|   37     shouldBe("event type", event.type, type); |   37         shouldBe("event.y", event.y, y); | 
|   38     shouldBe("event target", event.target, target); |   38     }, false); | 
|   39     shouldBe("event.pageX", event.pageX, x); |   39     eventSender.mouseMoveTo(x, y); | 
|   40     shouldBe("event.pageY", event.pageY, y); |   40     eventSender.mouseDown(); | 
|   41     shouldBe("event.offsetX", event.offsetX, offsetX); |   41     eventSender.mouseUp(); | 
|   42     shouldBe("event.offsetY", event.offsetY, offsetY); |   42     if (type == "dblclick") { | 
|   43     shouldBe("event.x", event.x, x); |   43         eventSender.mouseDown(); | 
|   44     shouldBe("event.y", event.y, y); |   44         eventSender.mouseUp(); | 
 |   45     } | 
|   45 } |   46 } | 
|   46 function test() { |   47 function test() { | 
|   47     if (window.testRunner) { |   48     if (window.testRunner) { | 
|   48         testRunner.dumpAsText(); |   49         testRunner.dumpAsText(); | 
|   49         testRunner.waitUntilDone(); |   50         testRunner.waitUntilDone(); | 
|   50     } |   51     } | 
|   51  |   52  | 
|   52     if (window.eventSender) { |   53     testEvent(document.getElementById('s1'), 11, 3, document.getElementById('o1'
     ), 'mousedown'); | 
|   53         eventSender.mouseMoveTo(22, 104); |   54     testEvent(document.getElementById('o1'), 11, 3, document.getElementById('o1'
     ), 'mousedown'); | 
|   54         eventSender.mouseDown(); |   55     testEvent(document.getElementById('s2'), 11, 3, document.getElementById('o2'
     ), 'mouseup'); | 
|   55         eventSender.mouseUp(); |   56     testEvent(document.getElementById('o2'), 11, 3, document.getElementById('o2'
     ), 'mouseup'); | 
|   56     } |   57     testEvent(document.getElementById('s3'), 11, 3, document.getElementById('o3'
     ), 'click'); | 
|   57  |   58     testEvent(document.getElementById('o3'), 11, 3, document.getElementById('o3'
     ), 'click'); | 
|   58     if (window.eventSender) { |   59     testEvent(document.getElementById('s3'), 11, 3, document.getElementById('o3'
     ), 'click'); | 
|   59         eventSender.mouseMoveTo(22, 184); |   60     testEvent(document.getElementById('o3'), 11, 3, document.getElementById('o3'
     ), 'click'); | 
|   60         eventSender.mouseDown(); |  | 
|   61         eventSender.mouseUp(); |  | 
|   62     } |  | 
|   63  |  | 
|   64     if (window.eventSender) { |  | 
|   65         eventSender.mouseMoveTo(22, 262); |  | 
|   66         eventSender.mouseDown(); |  | 
|   67         eventSender.mouseUp(); |  | 
|   68     } |  | 
|   69  |  | 
|   70     if (window.eventSender) { |  | 
|   71         eventSender.mouseMoveTo(22, 344); |  | 
|   72         eventSender.mouseDown(); |  | 
|   73         eventSender.mouseUp(); |  | 
|   74         eventSender.mouseDown(); |  | 
|   75         eventSender.mouseUp(); |  | 
|   76     } |  | 
|   77  |  | 
|   78     if (window.eventSender) { |  | 
|   79         eventSender.mouseMoveTo(22, 448); |  | 
|   80         eventSender.mouseDown(); |  | 
|   81         eventSender.mouseUp(); |  | 
|   82         eventSender.mouseDown(); |  | 
|   83         eventSender.mouseUp(); |  | 
|   84     } |  | 
|   85  |   61  | 
|   86     if (window.testRunner) |   62     if (window.testRunner) | 
|   87         testRunner.notifyDone(); |   63         testRunner.notifyDone(); | 
|   88 } |   64 } | 
|   89 </script> |   65 </script> | 
|   90 </head> |   66 </head> | 
|   91 <body onload="test();"> |   67 <body onload="test();"> | 
|   92 <p>This page tests whether a click event on a list box item propogates with the 
     correct target and positioning values.<br> |   68 <p>This page tests whether a click event on a list box item propogates with the 
     correct target and positioning values.<br> | 
|   93 Bug 3248: Mouse events on OPTION element seem to be ignored<br> |   69 Bug 3248: Mouse events on OPTION element seem to be ignored<br> | 
|   94 <a href="https://bugs.webkit.org/show_bug.cgi?id=3248">https://bugs.webkit.org/s
     how_bug.cgi?id=3248</a></p> |   70 <a href="https://bugs.webkit.org/show_bug.cgi?id=3248">https://bugs.webkit.org/s
     how_bug.cgi?id=3248</a></p> | 
|   95 <form action="" method="post"> |   71 <form action="" method="post"> | 
|   96 <select style="position:absolute; top: 84;" size="2" onmousedown="mouseeventveri
     fy(event, 22, 104, document.getElementById('o1'), 'mousedown')"> |   72 <select id="s1" style="position:absolute; top: 84;" size="2"> | 
|   97 <option>One |   73 <option>One | 
|   98 <option id="o1" onmousedown="mouseeventverify(event, 22, 104, this, 'mousedown')
     ">Two |   74 <option id="o1">Two | 
|   99 </select> |   75 </select> | 
|  100 </form> |   76 </form> | 
|  101 <form action="" method="post"> |   77 <form action="" method="post"> | 
|  102 <select style="position:absolute; top: 164;" size="2" onmouseup="mouseeventverif
     y(event, 22, 184, document.getElementById('o2'), 'mouseup')"> |   78 <select id="s2" style="position:absolute; top: 164;" size="2", 'mouseup')"> | 
|  103 <option>One |   79 <option>One | 
|  104 <option id="o2" onmouseup="mouseeventverify(event, 22, 184, this, 'mouseup')">Tw
     o |   80 <option id="o2">Two | 
|  105 </select> |   81 </select> | 
|  106 </form> |   82 </form> | 
|  107 <form action="" method="post"> |   83 <form action="" method="post"> | 
|  108 <select style="position:absolute; top: 242;" size="2" onclick="mouseeventverify(
     event, 22, 262, document.getElementById('o3'), 'click')"> |   84 <select id="s3" style="position:absolute; top: 242;" size="2", 'click')"> | 
|  109 <option>One |   85 <option>One | 
|  110 <option id="o3" onclick="mouseeventverify(event, 22, 262, this, 'click')">Two |   86 <option id="o3">Two | 
|  111 </select> |   87 </select> | 
|  112 </form> |   88 </form> | 
|  113 <form action="" method="post"> |   89 <form action="" method="post"> | 
|  114 <select style="position:absolute; top: 324;" size="2" ondblclick="mouseeventveri
     fy(event, 22, 344, document.getElementById('o4'), 'dblclick')"> |   90 <select style="position:absolute; top: 324;" size="2", 'dblclick')"> | 
|  115 <option>One |   91 <option>One | 
|  116 <option id="o4" ondblclick="mouseeventverify(event, 22, 344, this, 'dblclick')">
     Two |   92 <option id="o4">Two | 
|  117 </select> |   93 </select> | 
|  118 </form> |   94 </form> | 
|  119 <select style="position:absolute; top: 408;" size="3" onmousedown="mouseeventver
     ify2(event, 22, 448, 12, 38, this, 'mousedown')"> |   95 <select style="position:absolute; top: 408;" size="3"> | 
|  120 <option>One |   96 <option>One | 
|  121 <option id="o5" onmousedown="mouseeventverify2(event, 22, 448, 12, 38, this, 'mo
     usedown')">Two |   97 <option id="o5">Two | 
|  122 </select> |   98 </select> | 
|  123 </form> |   99 </form> | 
|  124 <div style="position:absolute; top: 550;" id='console'></div> |  100 <div style="position:absolute; top: 550;" id='console'></div> | 
|  125 </body> |  101 </body> | 
|  126 </html> |  102 </html> | 
| OLD | NEW |