35 lines
1.2 KiB
HTML
35 lines
1.2 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<body>
|
||
|
<script src="../../resources/js-test.js"></script>
|
||
|
<iframe id="testFrame" src="about:blank"></iframe>
|
||
|
<script>
|
||
|
description("Tests that Navigator properties do not get GC'd before their Navigator object.");
|
||
|
jsTestIsAsync = true;
|
||
|
|
||
|
var navigatorProperties = [ "geolocation", "mimeTypes", "plugins" ];
|
||
|
if (navigator.serviceWorker)
|
||
|
navigatorProperties.push("serviceWorker");
|
||
|
|
||
|
onload = function() {
|
||
|
frameNavigator = document.getElementById("testFrame").contentWindow.navigator;
|
||
|
for (let navigatorProperty of navigatorProperties)
|
||
|
eval("frameNavigator." + navigatorProperty + ".foo = 1;");
|
||
|
document.getElementById("testFrame").remove();
|
||
|
for (let navigatorProperty of navigatorProperties)
|
||
|
shouldBe("frameNavigator." + navigatorProperty + ".foo", "1");
|
||
|
debug("");
|
||
|
gc();
|
||
|
for (let navigatorProperty of navigatorProperties)
|
||
|
shouldBe("frameNavigator." + navigatorProperty + ".foo", "1");
|
||
|
debug("");
|
||
|
setTimeout(() => {
|
||
|
gc();
|
||
|
for (let navigatorProperty of navigatorProperties)
|
||
|
shouldBe("frameNavigator." + navigatorProperty + ".foo", "1");
|
||
|
finishJSTest();
|
||
|
}, 10);
|
||
|
}
|
||
|
</script>
|
||
|
</body>
|