Make `JSGlobalObject*` threading change more stabilized by adding tests and assertions
[WebKit-https.git] / LayoutTests / fast / events / page-scaled-mouse-click.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../../resources/js-test-pre.js"></script>
5 </head>
6 <body style="margin:0px">
7 <script>
8 description("This tests that page scaling does not affect mouse event pageX and pageY coordinates.");
9
10 var html = document.documentElement;
11
12 var div = document.createElement("div");
13 div.style.width = "100px";
14 div.style.height = "100px";
15 div.style.backgroundColor = "blue";
16
17 var eventLog = "";
18
19 function appendEventLog() {
20     var msg = event.type + "(" + event.pageX + ", " + event.pageY + ")";
21
22     if (window.eventSender) {
23         eventLog += msg;
24     } else {
25         debug(msg);
26     }
27 }
28
29 function clearEventLog() {
30     eventLog = "";
31 }
32
33 div.addEventListener("click", appendEventLog, false);
34 document.body.insertBefore(div, document.body.firstChild);
35
36 function sendEvents(button) {
37     if (!window.eventSender) {
38         debug("This test requires DumpRenderTree.  Click on the blue rect with the left mouse button to log the mouse coordinates.")
39         return;
40     }
41     eventSender.mouseDown(button);
42     eventSender.mouseUp(button);
43 }
44
45 function testEvents(button, description, expectedString) {
46     sendEvents(button);
47     debug(description);
48     shouldBeEqualToString("eventLog", expectedString);
49     debug("");
50     clearEventLog();
51 }
52
53 if (window.eventSender && window.internals) {
54     eventSender.mouseMoveTo(10, 10);
55     // We are clicking in the same position on screen. As we scale or transform the page,
56     // we expect the pageX and pageY event coordinates to change because different
57     // parts of the document are under the mouse.
58     testEvents(0, "Unscaled", "click(10, 10)");
59
60     window.internals.setPageScaleFactor(0.5, 0, 0);
61     testEvents(0, "setPageScale(0.5)", "click(20, 20)");
62 }
63 </script>
64 <script src="../../resources/js-test-post.js"></script>
65 </body>
66 </html>