Region¶
Firefox monitors the users region in order to show relevant local search engines and content. The region is tracked in 2 properties:
Region.current
- The most recent location we detected for the user.
Region.home
- Where we consider the users home location.
These are tracked separately as to avoid updating the users
experience repeatedly as they travel for example. In general
callers should use Region.home
.
If the user is detected in a current region that is not there home region for a continuous period (current 2 weeks) then their home region will be updated.
Testing¶
To set the users region for testing you can use Region._setHomeRegion("US", false)
, the second parameter notify
will send a notification that the region has changed and trigger a
reload of search engines and other content.
Updating test_Region_geocoding.js data¶
The test data used in this test is generated by running the MLS geocoding service locally:
Follow the Ichnaea location development guide @ https://ichnaea.readthedocs.io/en/latest/local_dev.html.
Make a list of test locations in a CSV format, for example:
23.7818724,38.0531587
23.7728138,38.0572369
1.6780180,48.5973431
1.7034801,48.5979913
1.6978640,48.5919751
You can use the MLS raw data files to get a large sample @ https://location.services.mozilla.com/downloads
Save a script to run the geocoding in ichnaea/ichnaea
import geocode
geocoder = geocode.Geocoder()
f = open("mls.csv", "r")
r = open("mls-lookup-results.csv", "a")
for x in f:
[lat, long] = x.strip().split(",")
region = geocoder.region(lat, long)
r.write("%s\n" % region)
Run the script
$ make shell
$ cd ichnaea
$ python run.py
If you want to commit the new test data ~500 seems to be a reasonable number of data points to test before running into issues with the test length.