summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/geolocation/network_geolocation.sjs
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /dom/tests/mochitest/geolocation/network_geolocation.sjs
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'dom/tests/mochitest/geolocation/network_geolocation.sjs')
-rw-r--r--dom/tests/mochitest/geolocation/network_geolocation.sjs78
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 000000000..6c7ca47be
--- /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);
+}
+