• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html manifest=resources/online-fallback-layering.manifest>
2<head>
3<script>
4
5if (window.layoutTestController) {
6    layoutTestController.dumpAsText();
7    layoutTestController.waitUntilDone();
8}
9
10function log(message) {
11    document.getElementById("log").innerHTML += message + "<br>";
12}
13
14function testComplete(result) {
15    log(result);
16    if (window.layoutTestController)
17       layoutTestController.notifyDone();
18}
19
20function syncGet(url) {
21    var xhr = new XMLHttpRequest();
22    xhr.open("GET", url, false);
23    xhr.send();
24    if (xhr.status == 200)
25        return xhr.responseText;
26    if (xhr.status == 404)
27        return "404 not found";
28    log ("unexpected status code");
29    return "";
30}
31
32applicationCache.oncached = function() { setTimeout(startTest, 0); }
33applicationCache.onnoupdate = function() { setTimeout(startTest, 0); }
34applicationCache.onupdateready = function() { log('onupdateready'); location.reload(); }
35applicationCache.onerror = function() { testComplete('FAIL - onerror'); }
36applicationCache.onobsolete = function() { testComplete('FAIL - onobsolete'); }
37
38function startTest() {
39    applicationCache.oncached = null;
40    applicationCache.onnoupdate = null;
41
42    var response;
43
44    log('Sanity check the presence of the fallback namespace, should get the fallback resource.');
45    response = syncGet('resources/fallbacknamespace-nonexisting-resource');
46    if (!response.match('fallback resource'))
47        return testComplete('FAIL - did not get the fallback resource');
48
49    log('Getting a network namespace resource that exists on the server, should succeed.');
50    response = syncGet('resources/fallbacknamespace-networknamespace-existing-resource.html');
51    if (!response.match('hello'))
52        return testComplete('FAIL - did not get the existing resource');
53
54    log('Getting a network namespace resource that does not exist on the server, should get a 404.');
55    response = syncGet('resources/fallbacknamespace-networknamespace-nonexisting-resource');
56    if (response != "404 not found")
57        return testComplete('FAIL - did not get a 404 for the nonexisting resource');
58
59    log('Creating two iframes for an existing and non-existing page, one should say "hello" the other should 404.');
60    createFrame('resources/fallbacknamespace-networknamespace-existing-resource.html');
61    createFrame('resources/fallbacknamespace-networknamespace-nonexisting-resource');
62}
63
64function createFrame(src) {
65    var frame = document.createElement("iframe");
66    frame.setAttribute("src", src);
67    document.body.appendChild(frame);
68}
69
70function frameCreated() {
71    log('- hello heard');
72    setTimeout(waitFor404, 0);
73}
74
75function waitFor404() {
76  try {
77      var frameContent = frames[1].document.documentElement.innerHTML;
78      if (frameContent.match("Not Found")) {
79          log('- 404 detected');
80          testComplete('PASS');
81      } else if (frameContent.match("fallback resource"))
82          testComplete('FAIL - subframe was loaded with the fallback resource.');
83      else
84          throw "Try again";
85  } catch (ex) {
86      setTimeout(waitFor404, 100);
87  }
88}
89
90</script>
91</head>
92
93<body>
94<p>Test that a network namespace trumps a fallback namespace where they overlap.</p>
95<div id=log></div>
96</body>
97</html>
98