Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(218)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/callback-exception.js

Issue 1948033003: Convert most geolocation layout tests to use a JS mock implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission-disconnect
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 description("Tests that when an exception is thrown in the success callback, the error callback is not invoked. Note that this test throws an exception which is not caught."); 1 description("Tests that when an exception is thrown in the success callback, the error callback is not invoked. Note that this test throws an exception which is not caught.");
2 2
3 var mockLatitude = 51.478; 3 var mockLatitude = 51.478;
4 var mockLongitude = -0.166; 4 var mockLongitude = -0.166;
5 var mockAccuracy = 100; 5 var mockAccuracy = 100;
6 6
7 if (!window.testRunner || !window.internals) 7 if (!window.testRunner || !window.mojo)
8 debug('This test can not run without testRunner or internals'); 8 debug('This test can not run without testRunner or mojo');
9
10 internals.setGeolocationClientMock(document);
11 internals.setGeolocationPermission(document, true);
12 internals.setGeolocationPosition(document,
13 mockLatitude,
14 mockLongitude,
15 mockAccuracy);
16 9
17 var position; 10 var position;
18 navigator.geolocation.getCurrentPosition(function(p) {
19 position = p;
20 shouldBe('position.coords.latitude', 'mockLatitude');
21 shouldBe('position.coords.longitude', 'mockLongitude');
22 shouldBe('position.coords.accuracy', 'mockAccuracy');
23 11
24 // Yield to allow for the error callback to be invoked. The timer 12 geolocationServiceMock.then(mock => {
25 // must be started before the exception is thrown. 13 mock.setGeolocationPermission(true);
26 window.setTimeout(assertWeGotException, 0); 14 mock.setGeolocationPosition(mockLatitude,
27 expectError(); 15 mockLongitude,
28 throw new Error('Exception in success callback'); 16 mockAccuracy);
29 }, function(e) { 17 navigator.geolocation.getCurrentPosition(function(p) {
30 testFailed('Error callback invoked unexpectedly'); 18 position = p;
31 finishJSTest(); 19 shouldBe('position.coords.latitude', 'mockLatitude');
20 shouldBe('position.coords.longitude', 'mockLongitude');
21 shouldBe('position.coords.accuracy', 'mockAccuracy');
22
23 // Yield to allow for the error callback to be invoked. The timer
24 // must be started before the exception is thrown.
25 window.setTimeout(assertWeGotException, 0);
26 expectError();
27
28 throw new Error('Exception in success callback');
29 }, function(e) {
30 testFailed('Error callback invoked unexpectedly');
31 finishJSTest();
32 });
32 }); 33 });
33 34
34 function assertWeGotException() 35 function assertWeGotException()
35 { 36 {
36 shouldHaveHadError(); 37 shouldHaveHadError();
37 finishJSTest(); 38 finishJSTest();
38 } 39 }
39 40
40 window.jsTestIsAsync = true; 41 window.jsTestIsAsync = true;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698