mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 823789 - Pass enableHighAccuracy geolocation changes to the chrome process. r=dougt
This commit is contained in:
parent
64b42e81b1
commit
2f408047ad
@ -80,6 +80,7 @@
|
|||||||
#include "StructuredCloneUtils.h"
|
#include "StructuredCloneUtils.h"
|
||||||
#include "TabParent.h"
|
#include "TabParent.h"
|
||||||
#include "URIUtils.h"
|
#include "URIUtils.h"
|
||||||
|
#include "nsGeolocation.h"
|
||||||
|
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
# include "gfxAndroidPlatform.h"
|
# include "gfxAndroidPlatform.h"
|
||||||
@ -1910,6 +1911,15 @@ ContentParent::RecvRemoveGeolocationListener()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ContentParent::RecvSetGeolocationHigherAccuracy(const bool& aEnable)
|
||||||
|
{
|
||||||
|
nsRefPtr<nsGeolocationService> geoSvc =
|
||||||
|
nsGeolocationService::GetGeolocationService();
|
||||||
|
geoSvc->SetHigherAccuracy(aEnable);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
ContentParent::HandleEvent(nsIDOMGeoPosition* postion)
|
ContentParent::HandleEvent(nsIDOMGeoPosition* postion)
|
||||||
{
|
{
|
||||||
|
@ -288,6 +288,7 @@ private:
|
|||||||
|
|
||||||
virtual bool RecvAddGeolocationListener();
|
virtual bool RecvAddGeolocationListener();
|
||||||
virtual bool RecvRemoveGeolocationListener();
|
virtual bool RecvRemoveGeolocationListener();
|
||||||
|
virtual bool RecvSetGeolocationHigherAccuracy(const bool& aEnable);
|
||||||
|
|
||||||
virtual bool RecvConsoleMessage(const nsString& aMessage);
|
virtual bool RecvConsoleMessage(const nsString& aMessage);
|
||||||
virtual bool RecvScriptError(const nsString& aMessage,
|
virtual bool RecvScriptError(const nsString& aMessage,
|
||||||
|
@ -81,6 +81,7 @@ LOCAL_INCLUDES += \
|
|||||||
-I$(topsrcdir)/uriloader/exthandler \
|
-I$(topsrcdir)/uriloader/exthandler \
|
||||||
-I$(srcdir)/../../netwerk/base/src \
|
-I$(srcdir)/../../netwerk/base/src \
|
||||||
-I$(srcdir)/../src/base \
|
-I$(srcdir)/../src/base \
|
||||||
|
-I$(srcdir)/../src/geolocation \
|
||||||
-I$(srcdir)/../src/storage \
|
-I$(srcdir)/../src/storage \
|
||||||
-I$(srcdir)/../../xpcom/base \
|
-I$(srcdir)/../../xpcom/base \
|
||||||
-I$(topsrcdir)/dom/indexedDB \
|
-I$(topsrcdir)/dom/indexedDB \
|
||||||
|
@ -397,6 +397,7 @@ parent:
|
|||||||
|
|
||||||
AddGeolocationListener();
|
AddGeolocationListener();
|
||||||
RemoveGeolocationListener();
|
RemoveGeolocationListener();
|
||||||
|
SetGeolocationHigherAccuracy(bool enable);
|
||||||
|
|
||||||
ConsoleMessage(nsString message);
|
ConsoleMessage(nsString message);
|
||||||
ScriptError(nsString message, nsString sourceName, nsString sourceLine,
|
ScriptError(nsString message, nsString sourceName, nsString sourceLine,
|
||||||
|
@ -996,6 +996,12 @@ nsGeolocationService::SetDisconnectTimer()
|
|||||||
void
|
void
|
||||||
nsGeolocationService::SetHigherAccuracy(bool aEnable)
|
nsGeolocationService::SetHigherAccuracy(bool aEnable)
|
||||||
{
|
{
|
||||||
|
if (XRE_GetProcessType() == GeckoProcessType_Content) {
|
||||||
|
ContentChild* cpc = ContentChild::GetSingleton();
|
||||||
|
cpc->SendSetGeolocationHigherAccuracy(aEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!mHigherAccuracy && aEnable) {
|
if (!mHigherAccuracy && aEnable) {
|
||||||
for (int32_t i = 0; i < mProviders.Count(); i++) {
|
for (int32_t i = 0; i < mProviders.Count(); i++) {
|
||||||
mProviders[i]->SetHighAccuracy(true);
|
mProviders[i]->SetHighAccuracy(true);
|
||||||
|
60
dom/tests/unit/test_geolocation_timeout.js
Normal file
60
dom/tests/unit/test_geolocation_timeout.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
const Cc = Components.classes;
|
||||||
|
const Ci = Components.interfaces;
|
||||||
|
const Cu = Components.utils;
|
||||||
|
const Cr = Components.results;
|
||||||
|
|
||||||
|
Cu.import("resource://testing-common/httpd.js");
|
||||||
|
|
||||||
|
var httpserver = null;
|
||||||
|
var geolocation = null;
|
||||||
|
var success = false;
|
||||||
|
var watchId = -1;
|
||||||
|
|
||||||
|
function geoHandler(metadata, response)
|
||||||
|
{
|
||||||
|
var georesponse = {
|
||||||
|
status: "OK",
|
||||||
|
location: {
|
||||||
|
lat: 42,
|
||||||
|
lng: 42,
|
||||||
|
},
|
||||||
|
accuracy: 42,
|
||||||
|
};
|
||||||
|
var position = JSON.stringify(georesponse);
|
||||||
|
response.processAsync();
|
||||||
|
response.setStatusLine("1.0", 200, "OK");
|
||||||
|
response.setHeader("Cache-Control", "no-cache", false);
|
||||||
|
response.setHeader("Content-Type", "aplication/x-javascript", false);
|
||||||
|
do_timeout(5000, function() {
|
||||||
|
response.write(position);
|
||||||
|
response.finish();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function successCallback() {
|
||||||
|
do_check_true(false);
|
||||||
|
do_test_finished();
|
||||||
|
}
|
||||||
|
|
||||||
|
function errorCallback() {
|
||||||
|
do_check_true(true);
|
||||||
|
do_test_finished();
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_test()
|
||||||
|
{
|
||||||
|
do_test_pending();
|
||||||
|
|
||||||
|
httpserver = new HttpServer();
|
||||||
|
httpserver.registerPathHandler("/geo", geoHandler);
|
||||||
|
httpserver.start(4444);
|
||||||
|
|
||||||
|
if (Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime)
|
||||||
|
.processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT) {
|
||||||
|
var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
|
||||||
|
prefs.setCharPref("geo.wifi.uri", "http://localhost:4444/geo");
|
||||||
|
}
|
||||||
|
|
||||||
|
geolocation = Cc["@mozilla.org/geolocation;1"].getService(Ci.nsIDOMGeoGeolocation);
|
||||||
|
geolocation.getCurrentPosition(successCallback, errorCallback, {timeout: 2000});
|
||||||
|
}
|
8
dom/tests/unit/test_geolocation_timeout_wrap.js
Normal file
8
dom/tests/unit/test_geolocation_timeout_wrap.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const Cc = Components.classes;
|
||||||
|
const Ci = Components.interfaces;
|
||||||
|
|
||||||
|
function run_test() {
|
||||||
|
var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
|
||||||
|
prefs.setCharPref("geo.wifi.uri", "http://localhost:4444/geo");
|
||||||
|
run_test_in_child("./test_geolocation_timeout.js");
|
||||||
|
}
|
@ -5,5 +5,8 @@ tail =
|
|||||||
[test_bug319968.js]
|
[test_bug319968.js]
|
||||||
[test_bug465752.js]
|
[test_bug465752.js]
|
||||||
[test_geolocation_provider.js]
|
[test_geolocation_provider.js]
|
||||||
|
[test_geolocation_timeout.js]
|
||||||
|
[test_geolocation_timeout_wrap.js]
|
||||||
|
skip-if = os == "mac"
|
||||||
# Bug 684962: test hangs consistently on Android
|
# Bug 684962: test hangs consistently on Android
|
||||||
skip-if = os == "android"
|
skip-if = os == "android"
|
||||||
|
Loading…
Reference in New Issue
Block a user