<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>