diff --git a/dom/system/NetworkGeolocationProvider.js b/dom/system/NetworkGeolocationProvider.js index 149cba2ee800..6cb0678e42ca 100755 --- a/dom/system/NetworkGeolocationProvider.js +++ b/dom/system/NetworkGeolocationProvider.js @@ -213,10 +213,15 @@ WifiGeoPositionProvider.prototype = { if (accessToken !== "") providerUrl = providerUrl + "&access_token="+accessToken; - function sort(a, b) { + function bySignal(a, b) { return b.signal - a.signal; }; + function noOptOut(ap) { + let optOut = (ap.ssid === "" || ap.ssid.endsWith("_nomap")); + return !optOut; + }; + function encode(ap) { // make sure that the ssid doesn't contain any | chars. ap.ssid = ap.ssid.replace("|", "\\|"); @@ -225,7 +230,10 @@ WifiGeoPositionProvider.prototype = { }; if (accessPoints) { - providerUrl = providerUrl + accessPoints.sort(sort).map(encode).join(""); + providerUrl += accessPoints.filter(noOptOut) + .sort(bySignal) + .map(encode) + .join(""); } providerUrl = encodeURI(providerUrl);