diff options
Diffstat (limited to 'LayoutTests/fast/dom/Geolocation')
6 files changed, 75 insertions, 9 deletions
diff --git a/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt new file mode 100644 index 0000000..c7f2d2b --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt @@ -0,0 +1,10 @@ +Tests that when a page is reloaded, the frame is properly detached from the Geolocation object to ensure that no permission requests are in progress. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS numPendingRequests is 0 +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html new file mode 100644 index 0000000..5b6aa5c --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../js/resources/js-test-style.css">
+<script src="../../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/page-reload-cancel-permission-requests.js"></script>
+<script src="../../js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html b/LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html new file mode 100644 index 0000000..4a4a715 --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + </head> + <body onload="window.parent.onIframeReady()"> + </body> +</html> diff --git a/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html b/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html index cfeabae..5370b4c 100644 --- a/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html +++ b/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html @@ -11,9 +11,7 @@ function loadNext() { layoutTestController.setMockGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); } - navigator.geolocation.watchPosition( - function(p) { window.opener.gotPosition(); }, - function(e) { window.opener.failedToCreateWatch(e); }); + navigator.geolocation.watchPosition(window.opener.gotPosition); } </script> <body onload="loadNext()"></body> diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js b/LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js new file mode 100644 index 0000000..7ac291b --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js @@ -0,0 +1,44 @@ +description("Tests that when a page is reloaded, the frame is properly detached from the Geolocation object " + + "to ensure that no permission requests are in progress."); + +window.jsTestIsAsync = true; + +var numPendingRequests; +var isReload = false; + +if ("#reload" == location.hash) + isReload = true; + +if (window.layoutTestController) { + numPendingRequests = layoutTestController.numberOfPendingGeolocationPermissionRequests(); + shouldBe('numPendingRequests', '0'); + + if (isReload) + finishJSTest(); +} + +if (!isReload) { + // Kick off a position request and then reload the page, this should set up + // a permission request. Permission should be undecided at this point, so the + // permission request should still be outstanding by page reload. + + function onIframeReady() + { + // Make request on remote frame's Geolocation object. + iframe.contentWindow.navigator.geolocation.getCurrentPosition( + function(p) { + testFailed('Permission should not be determined for this page: ' + p); + finishJSTest(); + }); + + location.hash = '#reload'; + location.reload(); + } + + debug("Create IFrame"); + var iframe = document.createElement('iframe'); + iframe.src = 'resources/page-reload-cancel-permission-requests-inner.html'; + document.body.appendChild(iframe); +} + +window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js b/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js index b27df61..a8f2bda 100644 --- a/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js +++ b/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js @@ -28,12 +28,6 @@ function waitForWindowToClose() finishJSTest(); } -function failedToCreateWatch(e) -{ - testFailed("Failed to create watch: " + e); - finishJSTest(); -} - debug("Main page opening resources/window-close-popup.html"); otherWindow = window.open("resources/window-close-popup.html"); |