Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/tests/mochitest/geolocation/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  geolocation_common.js   Sprache: JAVA

 
"use strict";

var harness =
  SimpleTest.harnessParameters.testRoot == "chrome" ? "chrome" : "tests";
var BASE_URL =
  "http://mochi.test:8888/" +
  harness +
  "/dom/tests/mochitest/geolocation/network_geolocation.sjs";

function set_geo_wifi_uri(uri, callback) {
  // Disable NetworkGeolocationProvider.js request cache because the cache
  // does not remember from which location service it came from. We expect
  // different results when we change the provider URL (geo.provider.network.url).
  set_network_request_cache_enabled(false, () => {
    SpecialPowers.pushPrefEnv(
      { set: [["geo.provider.network.url", uri]] },
      callback
    );
  });
}

function sleep(delay) {
  var start = Date.now();
  while (Date.now() < start + delay) {}
}

function force_prompt(allow, callback) {
  SpecialPowers.pushPrefEnv(
    {
      set: [
        ["geo.prompt.testing"true],
        ["geo.prompt.testing.allow", allow],
      ],
    },
    callback
  );
}

function start_sending_garbage(callback) {
  set_geo_wifi_uri(BASE_URL + "?action=respond-garbage", () => {
    // we need to be sure that all location data has been purged/set.
    sleep(1000);
    callback.call();
  });
}

function stop_sending_garbage(callback) {
  set_geo_wifi_uri(BASE_URL + "", () => {
    // we need to be sure that all location data has been purged/set.
    sleep(1000);
    callback.call();
  });
}

function stop_geolocationProvider(callback) {
  set_geo_wifi_uri(BASE_URL + "?action=stop-responding", () => {
    // we need to be sure that all location data has been purged/set.
    sleep(1000);
    callback.call();
  });
}

function set_network_request_cache_enabled(enabled, callback) {
  SpecialPowers.pushPrefEnv(
    { set: [["geo.provider.network.debug.requestCache.enabled", enabled]] },
    callback
  );
}

function worse_geolocationProvider(callback) {
  set_geo_wifi_uri(BASE_URL + "?action=worse-accuracy", callback);
}

function resume_geolocationProvider(callback) {
  set_geo_wifi_uri(BASE_URL + "", callback);
}

function delay_geolocationProvider(delay, callback) {
  set_geo_wifi_uri(BASE_URL + "?delay=" + delay, callback);
}

function send404_geolocationProvider(callback) {
  set_geo_wifi_uri(BASE_URL + "?action=send404", callback);
}

function check_geolocation(location) {
  ok(location, "Check to see if this location is non-null");

  const timestamp = location.timestamp;
  dump(`timestamp=${timestamp}\n`);
  ok(IsNumber(timestamp), "check timestamp type");
  ok(timestamp > 0, "check timestamp range");

  // eventually, coords may be optional (eg, when civic addresses are supported)
  ok("coords" in location, "Check to see if this location has a coords");

  const {
    latitude,
    longitude,
    accuracy,
    altitude,
    altitudeAccuracy,
    speed,
    heading,
  } = location.coords;

  dump(`latitude=${latitude}\n`);
  dump(`longitude=${longitude}\n`);
  dump(`accuracy=${accuracy}\n`);
  dump(`altitude=${altitude}\n`);
  dump(`altitudeAccuracy=${altitudeAccuracy}\n`);
  dump(`speed=${speed}\n`);
  dump(`heading=${heading}\n`);

  ok(IsNumber(latitude), "check latitude type");
  ok(IsNumber(longitude), "check longitude type");

  ok(
    Math.abs(latitude - 37.41857) < 0.001,
    "latitude matches hard-coded value"
  );
  ok(
    Math.abs(longitude + 122.08769) < 0.001,
    "longitude matches hard-coded value"
  );

  ok(IsNonNegativeNumber(accuracy), "check accuracy type and range");
  ok(IsNumber(altitude) || altitude === null"check accuracy type");

  ok(
    (IsNonNegativeNumber(altitudeAccuracy) && IsNumber(altitude)) ||
      altitudeAccuracy === null,
    "check altitudeAccuracy type and range"
  );

  ok(
    IsNonNegativeNumber(speed) || speed === null,
    "check speed type and range"
  );

  ok(
    (IsNonNegativeNumber(heading) && heading < 360 && speed > 0) ||
      heading === null,
    "check heading type and range"
  );
}

function IsNumber(x) {
  return typeof x === "number" && !Number.isNaN(x);
}

function IsNonNegativeNumber(x) {
  return IsNumber(x) && x >= 0;
}

Messung V0.5
C=92 H=95 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.