diff options
Diffstat (limited to 'dom/tests/mochitest/storageevent')
15 files changed, 819 insertions, 0 deletions
diff --git a/dom/tests/mochitest/storageevent/frameLocalStorageMaster.html b/dom/tests/mochitest/storageevent/frameLocalStorageMaster.html new file mode 100644 index 000000000..b4f372d6c --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameLocalStorageMaster.html @@ -0,0 +1,63 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>master frame for event storage propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 1; +var gotEvent = false; + +window.addEventListener("storage", function(event) +{ + gotEvent = true; +}, false); + +function doStep() +{ + switch (currentStep) + { + case 1: + // Must not fire (storage must be clear!) + localStorage.clear(); + // Must fire X:null->'1' + localStorage.setItem("X", "1"); + // Must fire X:'1'->'2' + localStorage.setItem("X", "2"); + // Must not fire + localStorage.setItem("X", "2"); + // Must fire X:'2'->null + localStorage.removeItem("X"); + // Must not fire + localStorage.removeItem("X"); + // Must not fire + localStorage.removeItem("Y"); + // Must fire X:null->'2' (we need something in the storage) + localStorage.setItem("X", "2"); + // Must fire null:null->null (one item has been erased) + localStorage.clear(); + // Must not fire + localStorage.clear(); + break; + + // Wait some time to let the async event be propagated + case 11: + is(gotEvent, false, "Expected no events"); + return finishTest(); + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/frameLocalStorageSlaveEqual.html b/dom/tests/mochitest/storageevent/frameLocalStorageSlaveEqual.html new file mode 100644 index 000000000..3bde58c49 --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameLocalStorageSlaveEqual.html @@ -0,0 +1,55 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>slave for storage event propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 2; + +var events = []; + +window.addEventListener("storage", function(event) +{ + events.push(event); +}, false); + +function doStep() +{ + function checkEvent(expectedKey, expectedOldValue, expectedNewValue) + { + var event = events.shift(); + is(event.key, expectedKey, "key name check"); + is(event.oldValue, expectedOldValue, "old value check"); + is(event.newValue, expectedNewValue, "new value check"); + is(event.url, "http://example.com/tests/dom/tests/mochitest/storageevent/frameLocalStorageMaster.html"); + ok(event.storageArea); + } + + switch (currentStep) + { + case 10: + is(events.length, 5, "Expected 5 events"); + checkEvent("X", null, "1"); + checkEvent("X", "1", "2"); + checkEvent("X", "2", null); + checkEvent("X", null, "2"); + checkEvent(null, null, null); + break; + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/frameLocalStorageSlaveNotEqual.html b/dom/tests/mochitest/storageevent/frameLocalStorageSlaveNotEqual.html new file mode 100644 index 000000000..ba0e4ff98 --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameLocalStorageSlaveNotEqual.html @@ -0,0 +1,39 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>slave for storage event propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 2; +var gotEvent = false; + +window.addEventListener("storage", function(event) +{ + gotEvent = true; +}, false); + +function doStep() +{ + switch (currentStep) + { + case 10: + is(gotEvent, false, "Expected no events"); + break; + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/frameSessionStorageMasterEqual.html b/dom/tests/mochitest/storageevent/frameSessionStorageMasterEqual.html new file mode 100644 index 000000000..70e89f7e4 --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameSessionStorageMasterEqual.html @@ -0,0 +1,67 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>master frame for event storage propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 1; +var gotEvent = false; + +window.addEventListener("storage", function(event) +{ + gotEvent = true; +}, false); + +function doStep() +{ + switch (currentStep) + { + // In step 2 we instantiate sessionStorage in the other frame + case 1: + // Must not fire (storage must be clear!) + sessionStorage.clear(); + // Must fire X:null->'1' + sessionStorage.setItem("X", "1"); + // Must fire X:'1'->'2' + sessionStorage.setItem("X", "2"); + // Must not fire + sessionStorage.setItem("X", "2"); + // Must fire X:'2'->null + sessionStorage.removeItem("X"); + // Must not fire + sessionStorage.removeItem("X"); + // Must not fire + sessionStorage.removeItem("Y"); + // Must fire X:null->'2' (we need something in the storage) + sessionStorage.setItem("X", "2"); + // Must fire null:null->null (one item has been erased) + sessionStorage.clear(); + // Must not fire + sessionStorage.clear(); + break; + + // Wait some time to let the async event be propagated + case 11: + is(gotEvent, false, "Expected no events"); + return finishTest(); + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> + <iframe src="http://example.com:80/tests/dom/tests/mochitest/storageevent/frameSessionStorageSlaveEqual.html" + name="slaveFrame"> + </iframe> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/frameSessionStorageMasterNotEqual.html b/dom/tests/mochitest/storageevent/frameSessionStorageMasterNotEqual.html new file mode 100644 index 000000000..a101b8858 --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameSessionStorageMasterNotEqual.html @@ -0,0 +1,66 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>master frame for event storage propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 1; +var gotEvent = false; + +window.addEventListener("storage", function(event) +{ + gotEvent = true; +}, false); + +function doStep() +{ + switch (currentStep) + { + case 1: + // Must not fire (storage must be clear!) + sessionStorage.clear(); + // Must fire X:null->'1' + sessionStorage.setItem("X", "1"); + // Must fire X:'1'->'2' + sessionStorage.setItem("X", "2"); + // Must not fire + sessionStorage.setItem("X", "2"); + // Must fire X:'2'->null + sessionStorage.removeItem("X"); + // Must not fire + sessionStorage.removeItem("X"); + // Must not fire + sessionStorage.removeItem("Y"); + // Must fire X:null->'2' (we need something in the storage) + sessionStorage.setItem("X", "2"); + // Must fire null:null->null (one item has been erased) + sessionStorage.clear(); + // Must not fire + sessionStorage.clear(); + break; + + // Wait some time to let the async event be propagated + case 11: + is(gotEvent, false, "Expected no events"); + return finishTest(); + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> + <iframe src="http://example.com:80/tests/dom/tests/mochitest/storageevent/frameSessionStorageSlaveNotEqual.html" + name="slaveFrame"> + </iframe> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/frameSessionStorageSlaveEqual.html b/dom/tests/mochitest/storageevent/frameSessionStorageSlaveEqual.html new file mode 100644 index 000000000..287cb22f6 --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameSessionStorageSlaveEqual.html @@ -0,0 +1,59 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>slave for storage event propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 2; + +var events = []; + +window.addEventListener("storage", function(event) +{ + events.push(event); +}, false); + +function doStep() +{ + function checkEvent(expectedKey, expectedOldValue, expectedNewValue) + { + var event = events.shift(); + ok(event, "Event is present"); + if (!event) + return; + + is(event.key, expectedKey, "key name check"); + is(event.oldValue, expectedOldValue, "old value check"); + is(event.newValue, expectedNewValue, "new value check"); + is(event.url, "http://example.com/tests/dom/tests/mochitest/storageevent/frameSessionStorageMasterEqual.html"); + ok(event.storageArea); + } + + switch (currentStep) + { + case 10: + is(events.length, 5, "Expected 5 events"); + checkEvent("X", null, "1"); + checkEvent("X", "1", "2"); + checkEvent("X", "2", null); + checkEvent("X", null, "2"); + checkEvent(null, null, null); + break; + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/frameSessionStorageSlaveNotEqual.html b/dom/tests/mochitest/storageevent/frameSessionStorageSlaveNotEqual.html new file mode 100644 index 000000000..ba0e4ff98 --- /dev/null +++ b/dom/tests/mochitest/storageevent/frameSessionStorageSlaveNotEqual.html @@ -0,0 +1,39 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>slave for storage event propagation</title> + +<script type="text/javascript" src="interOriginFrame.js"></script> +<script type="text/javascript"> + +var currentStep = 2; +var gotEvent = false; + +window.addEventListener("storage", function(event) +{ + gotEvent = true; +}, false); + +function doStep() +{ + switch (currentStep) + { + case 10: + is(gotEvent, false, "Expected no events"); + break; + } + + // Increase by two to distinguish each test step order + // in both master doStep and slave doStep functions. + ++currentStep; + ++currentStep; + + return true; +} + +</script> + +</head> + +<body onload="postMsg('frame loaded');"> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/interOriginFrame.js b/dom/tests/mochitest/storageevent/interOriginFrame.js new file mode 100644 index 000000000..b1180c908 --- /dev/null +++ b/dom/tests/mochitest/storageevent/interOriginFrame.js @@ -0,0 +1,56 @@ +function postMsg(message) +{ + var l = SpecialPowers.wrap(parent.window.location); + parent.postMessage(message, l.protocol + "//" + l.host); +} + +window.addEventListener("message", onMessageReceived, false); + +function onMessageReceived(event) +{ + if (event.data == "step") { + var performed = false; + try { + performed = doStep(); + } + catch (ex) { + postMsg("FAILURE: exception threw at "+ location +":\n" + ex); + finishTest(); + } + + if (performed) + postMsg("perf"); + + return; + } + + if (parent) + postMsg(event.data); +} + +function ok(a, message) +{ + if (!a) + postMsg("FAILURE: " + message); + else + postMsg(message); +} + +function is(a, b, message) +{ + if (a != b) + postMsg("FAILURE: " + message + ", expected "+b+" got "+a); + else + postMsg(message + ", expected "+b+" got "+a); +} + +function todo(a, b, message) +{ + postMsg("TODO: " + message + ", expected "+b+" got "+a); +} + +function finishTest() +{ + postMsg("done"); + return false; +} diff --git a/dom/tests/mochitest/storageevent/interOriginTest2.js b/dom/tests/mochitest/storageevent/interOriginTest2.js new file mode 100644 index 000000000..939462a4c --- /dev/null +++ b/dom/tests/mochitest/storageevent/interOriginTest2.js @@ -0,0 +1,59 @@ +var frameLoadsPending = 2; + +var callMasterFrame = true; +var testDone = false; + +var masterFrameOrigin = ""; +var slaveFrameOrigin = ""; + +var failureRegExp = new RegExp("^FAILURE"); +var todoRegExp = new RegExp("^TODO"); + +const framePath = "/tests/dom/tests/mochitest/storageevent/"; + +window.addEventListener("message", onMessageReceived, false); + +function onMessageReceived(event) +{ + + switch (event.data) + { + // Indication of the frame onload event + case "frame loaded": + if (--frameLoadsPending) + break; + + // Just fall through... + + // Indication of successfully finished step of a test + case "perf": + if (callMasterFrame) + masterFrame.postMessage("step", "*"); + else if (slaveFrame) + slaveFrame.postMessage("step", "*"); + else if (SpecialPowers.wrap(masterFrame).slaveFrame) + SpecialPowers.wrap(masterFrame).slaveFrame.postMessage("step", "*"); + callMasterFrame = !callMasterFrame; + break; + + // Indication of all test parts finish (from any of the frames) + case "done": + if (testDone) + break; + + testDone = true; + SimpleTest.finish(); + break; + + // Any other message indicates error, succes or todo message of a test + default: + if (typeof event.data == "undefined") + break; // XXXkhuey this receives undefined values + // (which used to become empty strings) on occasion ... + if (event.data.match(todoRegExp)) + SimpleTest.todo(false, event.data); + else + SimpleTest.ok(!event.data.match(failureRegExp), event.data); + break; + } +} diff --git a/dom/tests/mochitest/storageevent/mochitest.ini b/dom/tests/mochitest/storageevent/mochitest.ini new file mode 100644 index 000000000..e16d9cd2e --- /dev/null +++ b/dom/tests/mochitest/storageevent/mochitest.ini @@ -0,0 +1,17 @@ +[DEFAULT] +support-files = + frameLocalStorageMaster.html + frameLocalStorageSlaveEqual.html + frameLocalStorageSlaveNotEqual.html + frameSessionStorageMasterEqual.html + frameSessionStorageMasterNotEqual.html + frameSessionStorageSlaveEqual.html + frameSessionStorageSlaveNotEqual.html + interOriginFrame.js + interOriginTest2.js + +[test_storageLocalStorageEventCheckNoPropagation.html] +[test_storageLocalStorageEventCheckPropagation.html] +[test_storageNotifications.html] +[test_storageSessionStorageEventCheckNoPropagation.html] +[test_storageSessionStorageEventCheckPropagation.html] diff --git a/dom/tests/mochitest/storageevent/test_storageLocalStorageEventCheckNoPropagation.html b/dom/tests/mochitest/storageevent/test_storageLocalStorageEventCheckNoPropagation.html new file mode 100644 index 000000000..0abfff454 --- /dev/null +++ b/dom/tests/mochitest/storageevent/test_storageLocalStorageEventCheckNoPropagation.html @@ -0,0 +1,43 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>storage event propagation test</title> + +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<script type="text/javascript" src="interOriginTest2.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<!-- + This test loads two frames from different + origins and checks that entries of localStorage + objects don't leak each between other. + + The subsystem is based on postMessage and addEventListener + to send messages among different origins. The subsystem waits + for both frames be loaded and then alternately calls each frames' + doStep() function that on each call proceeds with a single step + of the test on its side. This way the subsystem alternate between + both frames until both sequences completely finish. +--> + +<script type="text/javascript"> + +function startTest() +{ + masterFrameOrigin = "http://example.com:80"; + slaveFrameOrigin = "http://example.org:80"; + + masterFrame.location = masterFrameOrigin + framePath + "frameLocalStorageMaster.html"; + slaveFrame.location = slaveFrameOrigin + framePath + "frameLocalStorageSlaveNotEqual.html"; +} + +SimpleTest.waitForExplicitFinish(); + +</script> + +</head> + +<body onload="startTest();"> + <iframe src="" name="masterFrame"></iframe> + <iframe src="" name="slaveFrame"></iframe> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/test_storageLocalStorageEventCheckPropagation.html b/dom/tests/mochitest/storageevent/test_storageLocalStorageEventCheckPropagation.html new file mode 100644 index 000000000..3ac4ac879 --- /dev/null +++ b/dom/tests/mochitest/storageevent/test_storageLocalStorageEventCheckPropagation.html @@ -0,0 +1,43 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>storage event propagation test</title> + +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<script type="text/javascript" src="interOriginTest2.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<!-- + This test loads two frames from different + origins and checks that entries of localStorage + objects don't leak each between other. + + The subsystem is based on postMessage and addEventListener + to send messages among different origins. The subsystem waits + for both frames be loaded and then alternately calls each frames' + doStep() function that on each call proceeds with a single step + of the test on its side. This way the subsystem alternate between + both frames until both sequences completely finish. +--> + +<script type="text/javascript"> + +function startTest() +{ + masterFrameOrigin = "http://example.com:80"; + slaveFrameOrigin = "http://example.com:80"; + + masterFrame.location = masterFrameOrigin + framePath + "frameLocalStorageMaster.html"; + slaveFrame.location = slaveFrameOrigin + framePath + "frameLocalStorageSlaveEqual.html"; +} + +SimpleTest.waitForExplicitFinish(); + +</script> + +</head> + +<body onload="startTest();"> + <iframe src="" name="masterFrame"></iframe> + <iframe src="" name="slaveFrame"></iframe> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/test_storageNotifications.html b/dom/tests/mochitest/storageevent/test_storageNotifications.html new file mode 100644 index 000000000..8d11a5a77 --- /dev/null +++ b/dom/tests/mochitest/storageevent/test_storageNotifications.html @@ -0,0 +1,127 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>sessionStorage basic test</title> + +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<script type="application/javascript;version=1.7"> + +var expectedTypes = [ + "localStorage", + "localStorage", + "sessionStorage", + "localStorage", + "sessionStorage", + "sessionStorage", + "localStorage", + "sessionStorage", + "localStorage", + "sessionStorage", + "localStorage", + "sessionStorage", + "sessionStorage", + "localStorage", + "sessionStorage", + "localStorage", +]; + +var tests = Tests(); +function setup() { + sessionStorage.clear(); + SimpleTest.executeSoon(function() { + tests.next(); + }); +} + +function Tests() +{ + // Initially check the both storages are empty + is(sessionStorage.length, 0, "Session storage is empty [1]"); + is(localStorage.length, 0, "Local storage is empty [1]"); + + var onStorageChanged = { + observe: function(subject, topic, type) { + if (topic == "dom-storage2-changed") { + ok(expectedTypes.length > 0, "Not more then expected events encountered"); + is(type, expectedTypes.shift(), "Expected type of the storage notificaiton"); + tests.next(); + } + } + } + + // Listen for dom-storage2-changed notification + SpecialPowers.Services.obs.addObserver(onStorageChanged, + "dom-storage2-changed", false); + + // add an empty-value key + localStorage.setItem("empty", ""); + yield undefined; + + localStorage.setItem("empty", "value-1"); + yield undefined; + + sessionStorage.setItem("empty", ""); + yield undefined; + + localStorage.removeItem("empty"); + yield undefined; + + sessionStorage.setItem("empty", "value-1"); + yield undefined; + + sessionStorage.removeItem("empty"); + yield undefined; + + localStorage.setItem("key1", "value-1"); + yield undefined; + + sessionStorage.setItem("key2", "value-2"); + yield undefined; + + localStorage.setItem("key1", "value-1-2"); + yield undefined; + + sessionStorage.setItem("key2", "value-2-2"); + yield undefined; + + localStorage.setItem("key3", "value-3"); + yield undefined; + + sessionStorage.setItem("key4", "value-4"); + yield undefined; + + sessionStorage.removeItem("key4"); + yield undefined; + + localStorage.setItem("key4", "value-4"); + yield undefined; + + sessionStorage.clear(); + yield undefined; + + localStorage.clear(); + yield undefined; + + SimpleTest.executeSoon(function () { + SpecialPowers.Services.obs.removeObserver(onStorageChanged, + "dom-storage2-changed", false); + is(expectedTypes.length, 0, "received the correct number of events"); + + sessionStorage.clear(); + localStorage.clear(); + tests = null; + SimpleTest.finish(); + }); +} + +SimpleTest.waitForExplicitFinish(); + +</script> + +</head> + +<body onload="setup();"> + +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/test_storageSessionStorageEventCheckNoPropagation.html b/dom/tests/mochitest/storageevent/test_storageSessionStorageEventCheckNoPropagation.html new file mode 100644 index 000000000..0b7f3ea67 --- /dev/null +++ b/dom/tests/mochitest/storageevent/test_storageSessionStorageEventCheckNoPropagation.html @@ -0,0 +1,43 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>storage event propagation test</title> + +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<script type="text/javascript" src="interOriginTest2.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<!-- + This test loads two frames from different + origins and checks that entries of localStorage + objects don't leak each between other. + + The subsystem is based on postMessage and addEventListener + to send messages among different origins. The subsystem waits + for both frames be loaded and then alternately calls each frames' + doStep() function that on each call proceeds with a single step + of the test on its side. This way the subsystem alternate between + both frames until both sequences completely finish. +--> + +<script type="text/javascript"> + +var slaveFrame = null; + +function startTest() +{ + masterFrameOrigin = "http://example.org:80"; + slaveFrameOrigin = "http://example.com:80"; + + masterFrame.location = masterFrameOrigin + framePath + "frameSessionStorageMasterNotEqual.html"; +} + +SimpleTest.waitForExplicitFinish(); + +</script> + +</head> + +<body onload="startTest();"> + <iframe src="" name="masterFrame"></iframe> +</body> +</html> diff --git a/dom/tests/mochitest/storageevent/test_storageSessionStorageEventCheckPropagation.html b/dom/tests/mochitest/storageevent/test_storageSessionStorageEventCheckPropagation.html new file mode 100644 index 000000000..86c8ea348 --- /dev/null +++ b/dom/tests/mochitest/storageevent/test_storageSessionStorageEventCheckPropagation.html @@ -0,0 +1,43 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>storage event propagation test</title> + +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<script type="text/javascript" src="interOriginTest2.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<!-- + This test loads two frames from different + origins and checks that entries of localStorage + objects don't leak each between other. + + The subsystem is based on postMessage and addEventListener + to send messages among different origins. The subsystem waits + for both frames be loaded and then alternately calls each frames' + doStep() function that on each call proceeds with a single step + of the test on its side. This way the subsystem alternate between + both frames until both sequences completely finish. +--> + +<script type="text/javascript"> + +var slaveFrame = null; + +function startTest() +{ + masterFrameOrigin = "http://example.com:80"; + slaveFrameOrigin = "http://example.com:80"; + + masterFrame.location = masterFrameOrigin + framePath + "frameSessionStorageMasterEqual.html"; +} + +SimpleTest.waitForExplicitFinish(); + +</script> + +</head> + +<body onload="startTest();"> + <iframe src="" name="masterFrame"></iframe> +</body> +</html> |