1f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickdescription("Tests that when a request is made on a Geolocation object after its frame has been disconnected, no callbacks are made and no crash occurs."); 2f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 3f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickif (window.layoutTestController) { 4f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick layoutTestController.setGeolocationPermission(true); 5f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick layoutTestController.setMockGeolocationPosition(51.478, -0.166, 100); 6f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 7f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 8f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickfunction onFirstIframeLoaded() { 9f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick iframeGeolocation = iframe.contentWindow.navigator.geolocation; 10f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick iframe.src = 'resources/disconnected-frame-already-inner2.html'; 11f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 12f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 13f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvar error; 14f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickfunction onSecondIframeLoaded() { 15f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick iframeGeolocation.getCurrentPosition(function () { 16f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick testFailed('Success callback invoked unexpectedly'); 17f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick finishJSTest(); 18f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick }, function(e) { 19f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick testFailed('Error callback invoked unexpectedly'); 20f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick finishJSTest(); 21f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick }); 22f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick setTimeout(finishTest, 1000); 23f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 24f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 25f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickfunction finishTest() { 26f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick debug('Method called on Geolocation object with disconnected Frame.'); 27f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick finishJSTest(); 28f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 29f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 30f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvar iframe = document.createElement('iframe'); 31f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickiframe.src = 'resources/disconnected-frame-already-inner1.html'; 32f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickdocument.body.appendChild(iframe); 33f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 34f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickwindow.jsTestIsAsync = true; 35f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickwindow.successfullyParsed = true; 36