<html manifest=resources/online-fallback-layering.manifest>
<head>
<script>
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.waitUntilDone();
}
function log(message) {
document.getElementById("log").innerHTML += message + "<br>";
}
function testComplete(result) {
log(result);
if (window.layoutTestController)
layoutTestController.notifyDone();
}
function syncGet(url) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send();
if (xhr.status == 200)
return xhr.responseText;
if (xhr.status == 404)
return "404 not found";
log ("unexpected status code");
return "";
}
applicationCache.oncached = function() { setTimeout(startTest, 0); }
applicationCache.onnoupdate = function() { setTimeout(startTest, 0); }
applicationCache.onupdateready = function() { log('onupdateready'); location.reload(); }
applicationCache.onerror = function() { testComplete('FAIL - onerror'); }
applicationCache.onobsolete = function() { testComplete('FAIL - onobsolete'); }
function startTest() {
applicationCache.oncached = null;
applicationCache.onnoupdate = null;
var response;
log('Sanity check the presence of the fallback namespace, should get the fallback resource.');
response = syncGet('resources/fallbacknamespace-nonexisting-resource');
if (!response.match('fallback resource'))
return testComplete('FAIL - did not get the fallback resource');
log('Getting a network namespace resource that exists on the server, should succeed.');
response = syncGet('resources/fallbacknamespace-networknamespace-existing-resource.html');
if (!response.match('hello'))
return testComplete('FAIL - did not get the existing resource');
log('Getting a network namespace resource that does not exist on the server, should get a 404.');
response = syncGet('resources/fallbacknamespace-networknamespace-nonexisting-resource');
if (response != "404 not found")
return testComplete('FAIL - did not get a 404 for the nonexisting resource');
log('Creating two iframes for an existing and non-existing page, one should say "hello" the other should 404.');
createFrame('resources/fallbacknamespace-networknamespace-existing-resource.html');
createFrame('resources/fallbacknamespace-networknamespace-nonexisting-resource');
}
function createFrame(src) {
var frame = document.createElement("iframe");
frame.setAttribute("src", src);
document.body.appendChild(frame);
}
function frameCreated() {
log('- hello heard');
setTimeout(waitFor404, 0);
}
function waitFor404() {
try {
var frameContent = frames[1].document.documentElement.innerHTML;
if (frameContent.match("Not Found")) {
log('- 404 detected');
testComplete('PASS');
} else if (frameContent.match("fallback resource"))
testComplete('FAIL - subframe was loaded with the fallback resource.');
else
throw "Try again";
} catch (ex) {
setTimeout(waitFor404, 100);
}
}
</script>
</head>
<body>
<p>Test that a network namespace trumps a fallback namespace where they overlap.</p>
<div id=log></div>
</body>
</html>