reentrant-success.js revision e78cbe89e6f337f2f1fe40315be88f742b547151
1cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockdescription("Tests that reentrant calls to Geolocation methods from the success callback are OK."); 2cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 3cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockvar mockLatitude = 51.478; 4cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockvar mockLongitude = -0.166; 5cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockvar mockAccuracy = 100.0; 6cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 7cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockwindow.layoutTestController.setGeolocationPermission(true); 8cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockwindow.layoutTestController.setMockGeolocationPosition(mockLatitude, 9cfb0617749a64f2e177386b030d46007b8c4b179Steve Block mockLongitude, 10cfb0617749a64f2e177386b030d46007b8c4b179Steve Block mockAccuracy); 11cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 12cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockvar position; 13cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockvar successCallbackInvoked = false; 14cfb0617749a64f2e177386b030d46007b8c4b179Steve Blocknavigator.geolocation.getCurrentPosition(function(p) { 15cfb0617749a64f2e177386b030d46007b8c4b179Steve Block if (successCallbackInvoked) { 16cfb0617749a64f2e177386b030d46007b8c4b179Steve Block testFailed('Success callback invoked unexpectedly'); 17e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block finishJSTest(); 18cfb0617749a64f2e177386b030d46007b8c4b179Steve Block } 19cfb0617749a64f2e177386b030d46007b8c4b179Steve Block successCallbackInvoked = true; 20cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 21cfb0617749a64f2e177386b030d46007b8c4b179Steve Block position = p; 22cfb0617749a64f2e177386b030d46007b8c4b179Steve Block shouldBe('position.coords.latitude', 'mockLatitude'); 23cfb0617749a64f2e177386b030d46007b8c4b179Steve Block shouldBe('position.coords.longitude', 'mockLongitude'); 24cfb0617749a64f2e177386b030d46007b8c4b179Steve Block shouldBe('position.coords.accuracy', 'mockAccuracy'); 25cfb0617749a64f2e177386b030d46007b8c4b179Steve Block debug(''); 26cfb0617749a64f2e177386b030d46007b8c4b179Steve Block continueTest(); 27cfb0617749a64f2e177386b030d46007b8c4b179Steve Block}, function(e) { 28cfb0617749a64f2e177386b030d46007b8c4b179Steve Block testFailed('Error callback invoked unexpectedly'); 29e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block finishJSTest(); 30cfb0617749a64f2e177386b030d46007b8c4b179Steve Block}); 31cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 32cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockfunction continueTest() { 33cfb0617749a64f2e177386b030d46007b8c4b179Steve Block window.layoutTestController.setMockGeolocationPosition(++mockLatitude, 34cfb0617749a64f2e177386b030d46007b8c4b179Steve Block ++mockLongitude, 35cfb0617749a64f2e177386b030d46007b8c4b179Steve Block ++mockAccuracy); 36cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 37cfb0617749a64f2e177386b030d46007b8c4b179Steve Block navigator.geolocation.getCurrentPosition(function(p) { 38cfb0617749a64f2e177386b030d46007b8c4b179Steve Block position = p; 39cfb0617749a64f2e177386b030d46007b8c4b179Steve Block shouldBe('position.coords.latitude', 'mockLatitude'); 40cfb0617749a64f2e177386b030d46007b8c4b179Steve Block shouldBe('position.coords.longitude', 'mockLongitude'); 41cfb0617749a64f2e177386b030d46007b8c4b179Steve Block shouldBe('position.coords.accuracy', 'mockAccuracy'); 42e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block finishJSTest(); 43cfb0617749a64f2e177386b030d46007b8c4b179Steve Block }, function(e) { 44cfb0617749a64f2e177386b030d46007b8c4b179Steve Block testFailed('Error callback invoked unexpectedly'); 45e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block finishJSTest(); 46cfb0617749a64f2e177386b030d46007b8c4b179Steve Block }); 47cfb0617749a64f2e177386b030d46007b8c4b179Steve Block} 48cfb0617749a64f2e177386b030d46007b8c4b179Steve Blockwindow.layoutTestController.waitUntilDone(); 49cfb0617749a64f2e177386b030d46007b8c4b179Steve Block 50e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockwindow.jsTestIsAsync = true; 51e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockwindow.successfullyParsed = true; 52