test_geolocation_timeout.js (1418B)
1 const { HttpServer } = ChromeUtils.importESModule( 2 "resource://testing-common/httpd.sys.mjs" 3 ); 4 5 var httpserver = null; 6 var geolocation = null; 7 8 function geoHandler(metadata, response) { 9 var georesponse = { 10 status: "OK", 11 location: { 12 lat: 42, 13 lng: 42, 14 }, 15 accuracy: 42, 16 }; 17 var position = JSON.stringify(georesponse); 18 response.processAsync(); 19 response.setStatusLine("1.0", 200, "OK"); 20 response.setHeader("Cache-Control", "no-cache", false); 21 response.setHeader("Content-Type", "aplication/x-javascript", false); 22 do_timeout(5000, function () { 23 response.write(position); 24 response.finish(); 25 }); 26 } 27 28 function successCallback() { 29 Assert.ok(false); 30 do_test_finished(); 31 } 32 33 function errorCallback() { 34 Assert.ok(true); 35 do_test_finished(); 36 } 37 38 function run_test() { 39 do_test_pending(); 40 41 if (Services.appinfo.processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT) { 42 httpserver = new HttpServer(); 43 httpserver.registerPathHandler("/geo", geoHandler); 44 httpserver.start(-1); 45 Services.prefs.setBoolPref("geo.provider.network.scan", false); 46 Services.prefs.setCharPref( 47 "geo.provider.network.url", 48 "http://localhost:" + httpserver.identity.primaryPort + "/geo" 49 ); 50 } 51 52 geolocation = Cc["@mozilla.org/geolocation;1"].getService(Ci.nsISupports); 53 geolocation.getCurrentPosition(successCallback, errorCallback, { 54 timeout: 2000, 55 }); 56 }