diff options
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_location.js')
-rw-r--r-- | toolkit/components/search/tests/xpcshell/test_location.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_location.js b/toolkit/components/search/tests/xpcshell/test_location.js new file mode 100644 index 000000000..93e6139f6 --- /dev/null +++ b/toolkit/components/search/tests/xpcshell/test_location.js @@ -0,0 +1,66 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +function run_test() { + installTestEngine(); + + Services.prefs.setCharPref("browser.search.geoip.url", 'data:application/json,{"country_code": "AU"}'); + Services.search.init(() => { + equal(Services.prefs.getCharPref("browser.search.countryCode"), "AU", "got the correct country code."); + equal(Services.prefs.getCharPref("browser.search.region"), "AU", "region pref also set to the countryCode.") + // No isUS pref is ever written + ok(!Services.prefs.prefHasUserValue("browser.search.isUS"), "no isUS pref") + // check we have "success" recorded in telemetry + checkCountryResultTelemetry(TELEMETRY_RESULT_ENUM.SUCCESS); + // a false value for each of SEARCH_SERVICE_COUNTRY_TIMEOUT and SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT + for (let hid of ["SEARCH_SERVICE_COUNTRY_TIMEOUT", + "SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT"]) { + let histogram = Services.telemetry.getHistogramById(hid); + let snapshot = histogram.snapshot(); + deepEqual(snapshot.counts, [1, 0, 0]); // boolean probe so 3 buckets, expect 1 result for |0|. + + } + + // simple checks for our platform-specific telemetry. We can't influence + // what they return (as we can't influence the countryCode the platform + // thinks we are in), but we can check the values are correct given reality. + let probeUSMismatched, probeNonUSMismatched; + switch (Services.appinfo.OS) { + case "Darwin": + probeUSMismatched = "SEARCH_SERVICE_US_COUNTRY_MISMATCHED_PLATFORM_OSX"; + probeNonUSMismatched = "SEARCH_SERVICE_NONUS_COUNTRY_MISMATCHED_PLATFORM_OSX"; + break; + case "WINNT": + probeUSMismatched = "SEARCH_SERVICE_US_COUNTRY_MISMATCHED_PLATFORM_WIN"; + probeNonUSMismatched = "SEARCH_SERVICE_NONUS_COUNTRY_MISMATCHED_PLATFORM_WIN"; + break; + default: + break; + } + + if (probeUSMismatched && probeNonUSMismatched) { + let countryCode = Services.sysinfo.get("countryCode"); + print("Platform says the country-code is", countryCode); + let expectedResult; + let hid; + // We know geoip said AU - if the platform thinks US then we expect + // probeUSMismatched with true (ie, a mismatch) + if (countryCode == "US") { + hid = probeUSMismatched; + expectedResult = [0, 1, 0]; // boolean probe so 3 buckets, expect 1 result for |1|. + } else { + // We are expecting probeNonUSMismatched with false if the platform + // says AU (not a mismatch) and true otherwise. + hid = probeNonUSMismatched; + expectedResult = countryCode == "AU" ? [1, 0, 0] : [0, 1, 0]; + } + + let histogram = Services.telemetry.getHistogramById(hid); + let snapshot = histogram.snapshot(); + deepEqual(snapshot.counts, expectedResult); + } + do_test_finished(); + run_next_test(); + }); + do_test_pending(); +} |