Bug 1197378 - Make docshell tests pass in e10s. r=billm

This commit is contained in:
Blake Kaplan 2015-08-21 16:21:23 -07:00
Родитель f94484fc9a
Коммит 69b300592b
3 изменённых файлов: 40 добавлений и 4 удалений

Просмотреть файл

@ -22,15 +22,15 @@ support-files =
parent.html
[test_bug13871.html]
skip-if = buildapp == 'b2g' || buildapp == 'mulet' || toolkit == 'android' || e10s #RANDOM # Bug 1136180 disabled on B2G Desktop and Mulet for intermittent failures
skip-if = buildapp == 'b2g' || buildapp == 'mulet' || toolkit == 'android' #RANDOM # Bug 1136180 disabled on B2G Desktop and Mulet for intermittent failures
[test_bug270414.html]
skip-if = buildapp == 'b2g' || buildapp == 'mulet' || toolkit == "android" || e10s # Bug 1136180 disabled on B2G Desktop and Mulet for intermittent failures
skip-if = buildapp == 'b2g' || buildapp == 'mulet' || toolkit == "android" # Bug 1136180 disabled on B2G Desktop and Mulet for intermittent failures
[test_bug278916.html]
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') #Bug 931116, b2g desktop specific, initial triage
[test_bug279495.html]
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') #Bug 931116, b2g desktop specific, initial triage
[test_bug344861.html]
skip-if = buildapp == 'mulet' || buildapp == 'b2g' || toolkit == 'android' || e10s
skip-if = buildapp == 'mulet' || buildapp == 'b2g' || toolkit == 'android'
[test_bug386782.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_bug430624.html]

Просмотреть файл

@ -5,6 +5,9 @@ This document contains a frame.
<div><iframe src="blank.html"></iframe></div>
<script>
frames[0].name = window.name + "_child0";
window.onload = function() {
opener.postMessage("ready", "*");
};
</script>
</body>
</html>

Просмотреть файл

@ -9,7 +9,7 @@
iframe { width: 90%; height: 50px; }
</style>
<script>
window.onload = function () {
function runTest() {
navigateByLocation(window0.frames[0]);
navigateByOpen("window1_child0");
navigateByForm("window2_child0");
@ -31,10 +31,43 @@ window.onload = function () {
}, 4);
}
// Because our open()'d windows are cross-origin, we can't wait for onload.
// We instead wait for a postMessage from parent.html.
var windows = new Map();
addEventListener("message", function windowLoaded(evt) {
// Because window.open spins the event loop in order to open new windows,
// we might receive the "ready" message before we call waitForLoad.
// In that case, windows won't contain evt.source and we just note that the
// window is ready. Otherwise, windows contains the "resolve" function for
// that window's promise and we just have to call it.
if (windows.has(evt.source)) {
windows.get(evt.source)();
} else {
windows.set(evt.source, true);
}
});
var window0 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window0", "width=10,height=10");
var window1 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window1", "width=10,height=10");
var window2 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window2", "width=10,height=10");
var window3 = window.open("http://test1.example.org:80/tests/docshell/test/navigation/parent.html", "window3", "width=10,height=10");
function waitForLoad(w) {
return new Promise(function(resolve, reject) {
// If we already got the "ready" message, resolve immediately.
if (windows.has(w)) {
resolve();
} else {
windows.set(w, resolve);
}
});
}
Promise.all([ waitForLoad(window0),
waitForLoad(window1),
waitForLoad(window2),
waitForLoad(window3) ])
.then(runTest);
</script>
</head>
<body>