| <html manifest=resources/online-fallback-layering.manifest> | |
| <head> | |
| <script> | |
| if (window.testRunner) { | |
| testRunner.dumpAsText(); | |
| testRunner.waitUntilDone(); | |
| } | |
| function log(message) { | |
| document.getElementById("log").innerHTML += message + "<br>"; | |
| } | |
| function testComplete(result) { | |
| log(result); | |
| if (window.testRunner) | |
| testRunner.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> |