| <!DOCTYPE html> |
| <html> |
| <head> |
| <p>This is a test for https://bugs.webkit.org/show_bug.cgi?id=71229 (V8MessageEvent::dataAccessorGetter does not return a reference to its caller). If it succeeds, DONE will appear below. If it fails, you should see messages containing unexpected strings that were received and/or a renderer crash. |
| <hr> |
| <pre id=log></pre> |
| <script> |
| function log(message) |
| { |
| document.getElementById("log").innerHTML += message + "<br>"; |
| } |
| |
| var eventTarget; |
| |
| // Make a long prefix string. This seems to make it more likely that a use- |
| // after-free problem will cause an observable error. |
| var kPrefix = "Hello"; |
| for (var i = 0; i < 10; ++i) |
| kPrefix += kPrefix; |
| var num = 0; |
| var endNum = 1000; |
| function HandleMessage(message_event) { |
| if (message_event.data !== kPrefix + num.toString()) { |
| log("Expected '" + num + "', Got: '" + message_event.data + "'"); |
| } |
| if (num == endNum) { |
| testRunner.notifyDone(); |
| } |
| else { |
| ++num; |
| setTimeout(SendString, 0); |
| } |
| } |
| |
| function SendString() { |
| var target = document.getElementById("event_target"); |
| var message_event = window.document.createEvent('MessageEvent'); |
| message_event.initMessageEvent('message', // type |
| false, // canBubble |
| false, // cancelable |
| kPrefix + num.toString(), // data |
| '', // origin [*] |
| '', // lastEventId |
| null, // source [*] |
| []); // ports |
| target.dispatchEvent(message_event); |
| } |
| |
| function AddListener() { |
| var target = document.getElementById("event_target"); |
| target.addEventListener("message", HandleMessage, false); |
| SendString(); |
| } |
| document.addEventListener("DOMContentLoaded", AddListener, false); |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| log("DONE"); |
| |
| </script> |
| </head> |
| <body> |
| <div id="event_target"></div> |
| </body> |
| </html> |