Index: LayoutTests/fast/events/event-isolated-world-clone.html |
diff --git a/LayoutTests/fast/events/event-isolated-world-clone.html b/LayoutTests/fast/events/event-isolated-world-clone.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c7b955c10196545d17a4c3e693d0f16e97c308c6 |
--- /dev/null |
+++ b/LayoutTests/fast/events/event-isolated-world-clone.html |
@@ -0,0 +1,40 @@ |
+<!DOCTYPE html> |
+<p>Tests that properties of various events are cloned between isolated worlds.</p> |
+<div id="main"></div> |
+<div id="isolated"></div> |
+<script> |
+testRunner.dumpAsText(); |
+ |
+function addListener(eventType, prop, worldType) { |
+ document.getElementById(worldType).addEventListener(eventType, function(event) { |
+ console.log(eventType + " received in " + worldType + " world"); |
+ console.log(prop + " was " + JSON.stringify(event[prop])); |
+ }); |
+} |
+ |
+function sendCloneableObject(eventType, prop, targetWorldType) { |
+ var newEvent = eval("new " + eventType + "('" + eventType + "', { " + prop + ": { foo: 5, bar: 'hello', targetWorld: targetWorldType } })"); |
+ document.getElementById(targetWorldType).dispatchEvent(newEvent); |
+} |
+ |
+function runScript(eventType, prop) { |
+ var sendScript = "(" + sendCloneableObject.toString() + ")('" + eventType + "', '" + prop + "', 'main');"; |
+ addListener(eventType, prop, "main"); |
+ testRunner.evaluateScriptInIsolatedWorld(1, sendScript); |
+ var receiveScript = "(" + addListener.toString() + ")('" + eventType + "', '" + prop + "', 'isolated');"; |
+ testRunner.evaluateScriptInIsolatedWorld(1, receiveScript); |
+ sendCloneableObject(eventType, prop, "isolated"); |
+ |
+} |
+ |
+// The events that we want to test, with the properties that each one uses. |
+var events = [ |
+ { eventType: "CustomEvent", prop: "detail" }, |
+ { eventType: "MessageEvent", prop: "data" }, |
+ { eventType: "PopStateEvent", prop: "state" } |
+]; |
+ |
+for (var i = 0; i < events.length; ++i) { |
+ runScript(events[i].eventType, events[i].prop); |
+} |
+</script> |