diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/tests/mochitest/geolocation/network_geolocation.sjs | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/tests/mochitest/geolocation/network_geolocation.sjs')
-rw-r--r-- | dom/tests/mochitest/geolocation/network_geolocation.sjs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/dom/tests/mochitest/geolocation/network_geolocation.sjs b/dom/tests/mochitest/geolocation/network_geolocation.sjs new file mode 100644 index 0000000000..6c7ca47bed --- /dev/null +++ b/dom/tests/mochitest/geolocation/network_geolocation.sjs @@ -0,0 +1,78 @@ +function parseQueryString(str) +{ + if (str == "") + return {}; + + var paramArray = str.split("&"); + var regex = /^([^=]+)=(.*)$/; + var params = {}; + for (var i = 0, sz = paramArray.length; i < sz; i++) + { + var match = regex.exec(paramArray[i]); + if (!match) + throw "Bad parameter in queryString! '" + paramArray[i] + "'"; + params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]); + } + + return params; +} + +function getPosition(action) +{ + var response = { + status: "OK", + location: { + lat: 37.41857, + lng: -122.08769, + }, + accuracy: (action == "worse-accuracy") ? 100 : 42, + }; + + return JSON.stringify(response); +} + +var timer; +function handleRequest(request, response) +{ + var params = parseQueryString(request.queryString); + + if (params.action == "stop-responding") { + response.processAsync(); + return; + } + + var position = getPosition(params.action); + + if (params.action == "respond-garbage") { + // better way? + var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"; + position = ""; + var len = Math.floor(Math.random() * 5000); + + for (var i=0; i< len; i++) { + var c = Math.floor(Math.random() * chars.length); + position += chars.substring(c, c+1); + } + } + + var response; + response.processAsync(); + response.setStatusLine("1.0", 200, "OK"); + response.setHeader("Cache-Control", "no-cache", false); + response.setHeader("Content-Type", "aplication/x-javascript", false); + + var delay = 0; + if ('delay' in params) { + delay = params.delay; + } + if (params.action === "send404") { + response.setStatusLine("1.0", 404, "Not Found"); + position = ''; + } + timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); + timer.initWithCallback(function() { + response.write(position); + response.finish(); + }, delay, timer.TYPE_ONE_SHOT); +} + |