| OLD | NEW |
| 1 description("Tests that reentrant calls to Geolocation methods from the error ca
llback are OK."); | 1 description("Tests that reentrant calls to Geolocation methods from the error ca
llback are OK."); |
| 2 | 2 |
| 3 var mockMessage = 'test'; | 3 var mockMessage = 'test'; |
| 4 | 4 |
| 5 if (!window.testRunner || !window.internals) | 5 if (!window.testRunner || !window.mojo) |
| 6 debug('This test can not run without testRunner or internals'); | 6 debug('This test can not run without testRunner or mojo'); |
| 7 | |
| 8 internals.setGeolocationClientMock(document); | |
| 9 internals.setGeolocationPermission(document, true); | |
| 10 internals.setGeolocationPositionUnavailableError(document, mockMessage); | |
| 11 | 7 |
| 12 var error; | 8 var error; |
| 13 var errorCallbackInvoked = false; | |
| 14 navigator.geolocation.getCurrentPosition(function(p) { | |
| 15 testFailed('Success callback invoked unexpectedly'); | |
| 16 finishJSTest(); | |
| 17 }, function(e) { | |
| 18 if (errorCallbackInvoked) { | |
| 19 testFailed('Error callback invoked unexpectedly'); | |
| 20 finishJSTest(); | |
| 21 } | |
| 22 errorCallbackInvoked = true; | |
| 23 | 9 |
| 24 error = e; | 10 geolocationServiceMock.then(mock => { |
| 25 shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); | 11 mock.setGeolocationPermission(true); |
| 26 shouldBe('error.message', 'mockMessage'); | 12 mock.setGeolocationPositionUnavailableError(mockMessage); |
| 27 debug(''); | |
| 28 continueTest(); | |
| 29 }); | |
| 30 | 13 |
| 31 function continueTest() { | 14 var errorCallbackInvoked = false; |
| 32 mockMessage += ' repeat'; | |
| 33 | |
| 34 internals.setGeolocationPositionUnavailableError(document, mockMessage); | |
| 35 | |
| 36 navigator.geolocation.getCurrentPosition(function(p) { | 15 navigator.geolocation.getCurrentPosition(function(p) { |
| 37 testFailed('Success callback invoked unexpectedly'); | 16 testFailed('Success callback invoked unexpectedly'); |
| 38 finishJSTest(); | 17 finishJSTest(); |
| 39 }, function(e) { | 18 }, function(e) { |
| 19 if (errorCallbackInvoked) { |
| 20 testFailed('Error callback invoked unexpectedly'); |
| 21 finishJSTest(); |
| 22 } |
| 23 errorCallbackInvoked = true; |
| 24 |
| 40 error = e; | 25 error = e; |
| 41 shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); | 26 shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); |
| 42 shouldBe('error.message', 'mockMessage'); | 27 shouldBe('error.message', 'mockMessage'); |
| 43 finishJSTest(); | 28 debug(''); |
| 29 continueTest(); |
| 44 }); | 30 }); |
| 45 } | 31 |
| 32 function continueTest() { |
| 33 mockMessage += ' repeat'; |
| 34 |
| 35 mock.setGeolocationPositionUnavailableError(mockMessage); |
| 36 |
| 37 navigator.geolocation.getCurrentPosition(function(p) { |
| 38 testFailed('Success callback invoked unexpectedly'); |
| 39 finishJSTest(); |
| 40 }, function(e) { |
| 41 error = e; |
| 42 shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); |
| 43 shouldBe('error.message', 'mockMessage'); |
| 44 finishJSTest(); |
| 45 }); |
| 46 } |
| 47 }); |
| 46 | 48 |
| 47 window.jsTestIsAsync = true; | 49 window.jsTestIsAsync = true; |
| OLD | NEW |