| <!DOCTYPE html> |
| <html> |
| <head> |
| <script> |
| function startTest() |
| { |
| t = window.top; |
| t.shouldBe("window", "self"); |
| t.shouldBe("window", "frames"); |
| t.shouldBe("parent", "top"); |
| t.savedClosure = () => { |
| // The normal shouldBeNull() helpers don't work well here, since they don't |
| // eval in the right context. |
| function shouldBeNull(value, name) |
| { |
| if (value === null) |
| t.testPassed(name + " is null."); |
| else |
| t.testFailed(name + " should be null. Was " + value); |
| } |
| function shouldBeNonNull(value, name) { |
| if (value != null) |
| t.testPassed(name + " is non-null."); |
| else |
| t.testFailed(name + " should be non-null. Was " + value); |
| } |
| |
| // window, self and frames never be null. |
| // https://html.spec.whatwg.org/multipage/browsers.html#dom-window |
| shouldBeNonNull(window, "window"); |
| shouldBeNonNull(self, "self"); |
| shouldBeNonNull(frames, "frames"); |
| |
| // top and parent are null if there is no browsing context with the |
| // WindowProxy. |
| // https://html.spec.whatwg.org/multipage/browsers.html#dom-top |
| // https://html.spec.whatwg.org/multipage/browsers.html#dom-parent |
| // However, when navigated, the WindowProxy's browsing context still exists. |
| // When the iframe is removed, |parent| and |top| are null. |
| shouldBeNonNull(parent, "parent"); |
| shouldBeNonNull(top, "top"); |
| }; |
| location = 'data:text/html,<body>Testing...</body>'; |
| } |
| </script> |
| </head> |
| <body onload="startTest()"> |
| </body> |
| </html> |