diff options
Diffstat (limited to 'dom/tests/unit/test_geolocation_reset_accuracy_wrap.js')
-rw-r--r-- | dom/tests/unit/test_geolocation_reset_accuracy_wrap.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dom/tests/unit/test_geolocation_reset_accuracy_wrap.js b/dom/tests/unit/test_geolocation_reset_accuracy_wrap.js new file mode 100644 index 0000000000..4160fda14a --- /dev/null +++ b/dom/tests/unit/test_geolocation_reset_accuracy_wrap.js @@ -0,0 +1,61 @@ +const providerCID = Components.ID("{14aa4b81-e266-45cb-88f8-89595dece114}"); +const providerContract = "@mozilla.org/geolocation/provider;1"; + +const categoryName = "geolocation-provider"; + +var provider = { + QueryInterface: ChromeUtils.generateQI([ + "nsIFactory", + "nsIGeolocationProvider", + ]), + createInstance: function eventsink_ci(iid) { + return this.QueryInterface(iid); + }, + startup() {}, + watch() {}, + shutdown() {}, + setHighAccuracy(enable) { + this._isHigh = enable; + if (enable) { + this._seenHigh = true; + do_send_remote_message("high_acc_enabled"); + } + }, + _isHigh: false, + _seenHigh: false, +}; + +function run_test() { + // XPCShell does not get a profile by default. The geolocation service + // depends on the settings service which uses IndexedDB and IndexedDB + // needs a place where it can store databases. + do_get_profile(); + + Components.manager.nsIComponentRegistrar.registerFactory( + providerCID, + "Unit test geo provider", + providerContract, + provider + ); + + Services.catMan.addCategoryEntry( + categoryName, + "unit test", + providerContract, + false, + true + ); + + Services.prefs.setBoolPref("geo.provider.network.scan", false); + + run_test_in_child("test_geolocation_reset_accuracy.js", check_results); +} + +function check_results() { + // check the provider was set to high accuracy during the test + Assert.ok(provider._seenHigh); + // check the provider is not currently set to high accuracy + Assert.ok(!provider._isHigh); + + do_test_finished(); +} |