blob: c7b955c10196545d17a4c3e693d0f16e97c308c6 [file] [log] [blame]
<!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>