1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/tests/mochitest/geolocation/network_geolocation.sjs Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,78 @@ 1.4 +function parseQueryString(str) 1.5 +{ 1.6 + if (str == "") 1.7 + return {}; 1.8 + 1.9 + var paramArray = str.split("&"); 1.10 + var regex = /^([^=]+)=(.*)$/; 1.11 + var params = {}; 1.12 + for (var i = 0, sz = paramArray.length; i < sz; i++) 1.13 + { 1.14 + var match = regex.exec(paramArray[i]); 1.15 + if (!match) 1.16 + throw "Bad parameter in queryString! '" + paramArray[i] + "'"; 1.17 + params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]); 1.18 + } 1.19 + 1.20 + return params; 1.21 +} 1.22 + 1.23 +function getPosition(action) 1.24 +{ 1.25 + var response = { 1.26 + status: "OK", 1.27 + location: { 1.28 + lat: 37.41857, 1.29 + lng: -122.08769, 1.30 + }, 1.31 + accuracy: (action == "worse-accuracy") ? 100 : 42, 1.32 + }; 1.33 + 1.34 + return JSON.stringify(response); 1.35 +} 1.36 + 1.37 +var timer; 1.38 +function handleRequest(request, response) 1.39 +{ 1.40 + var params = parseQueryString(request.queryString); 1.41 + 1.42 + if (params.action == "stop-responding") { 1.43 + response.processAsync(); 1.44 + return; 1.45 + } 1.46 + 1.47 + var position = getPosition(params.action); 1.48 + 1.49 + if (params.action == "respond-garbage") { 1.50 + // better way? 1.51 + var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"; 1.52 + position = ""; 1.53 + var len = Math.floor(Math.random() * 5000); 1.54 + 1.55 + for (var i=0; i< len; i++) { 1.56 + var c = Math.floor(Math.random() * chars.length); 1.57 + position += chars.substring(c, c+1); 1.58 + } 1.59 + } 1.60 + 1.61 + var response; 1.62 + response.processAsync(); 1.63 + response.setStatusLine("1.0", 200, "OK"); 1.64 + response.setHeader("Cache-Control", "no-cache", false); 1.65 + response.setHeader("Content-Type", "aplication/x-javascript", false); 1.66 + 1.67 + var delay = 0; 1.68 + if ('delay' in params) { 1.69 + delay = params.delay; 1.70 + } 1.71 + if (params.action === "send404") { 1.72 + response.setStatusLine("1.0", 404, "Not Found"); 1.73 + position = ''; 1.74 + } 1.75 + timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); 1.76 + timer.initWithCallback(function() { 1.77 + response.write(position); 1.78 + response.finish(); 1.79 + }, delay, timer.TYPE_ONE_SHOT); 1.80 +} 1.81 +