4 <script src=
"../../resources/testharness.js"></script>
5 <script src=
"../../resources/testharnessreport.js"></script>
8 <iframe id=
"subframe" src=
"about:blank"></iframe>
11 var testNavigatorOnLoad
= async_test("Accessing a navigator object that just got removed does not crash.")
12 var testNavigatorLater
= async_test("Accessing a navigator object that got removed some time before does not crash.")
14 // Reference to the removed navigator object.
18 if (window
.GCController
) {
19 GCController
.collect();
21 for (var i
= 0; i
< 10000; i
++) {
22 var s
= new String("abc");
28 // Keep a reference of the navigator and remove the frame.
29 oldNav
= window
.frames
[0].navigator
;
30 var frame
= document
.getElementById("subframe");
31 frame
.parentNode
.removeChild(frame
);
33 if (window
.GCController
)
34 window
.GCController
.collect();
36 // Check once immediately.
37 testNavigatorOnLoad
.step(function() {
40 testNavigatorOnLoad
.done();
44 // Check one more time later, when the frame is likely to be destroyed.
45 setTimeout(function() {
46 testNavigatorLater
.step(function() {
49 testNavigatorLater
.done();
53 function check_navigator() {
55 if (typeof oldNav
[p
] == 'function') {
58 assert_true(true, "navigator."+p
+"() is OK");
60 // Some function call will asserts, the assert shouldn't make the test fail.
61 assert_true(true, "navigator."+p
+"() threw err "+err
);
65 assert_true(true, "navigator."+p
+" is OK");
70 window
.addEventListener('load', test
);