summaryrefslogtreecommitdiffstats
path: root/WebCore/page/Geolocation.cpp
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-01-25 10:10:04 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-01-25 10:10:04 -0800
commitfc4f8486a2f2be92cdd4811c86aa9ee0a49ee576 (patch)
treef4b067956dc25f32a86b311307876de5dee1734e /WebCore/page/Geolocation.cpp
parentae1b04df679593f44b55779daac6ef70fc0ff8d0 (diff)
parent1c58588a98d412c23d74caf92991904fddbc9d49 (diff)
downloadexternal_webkit-fc4f8486a2f2be92cdd4811c86aa9ee0a49ee576.zip
external_webkit-fc4f8486a2f2be92cdd4811c86aa9ee0a49ee576.tar.gz
external_webkit-fc4f8486a2f2be92cdd4811c86aa9ee0a49ee576.tar.bz2
Merge changes Ib69ddd4d,Ib28c69a6,I342b9f6b
* changes: Cherry-pick WebKit change 53441 to make changes to Geolocation Bring Geolocation up-to-date with WebKit change 53342 to make suspend/resume public Cherry-pick WebKit change 52104 to make changes to Geolocation
Diffstat (limited to 'WebCore/page/Geolocation.cpp')
-rw-r--r--WebCore/page/Geolocation.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/WebCore/page/Geolocation.cpp b/WebCore/page/Geolocation.cpp
index f0578a8..cc5cc93 100644
--- a/WebCore/page/Geolocation.cpp
+++ b/WebCore/page/Geolocation.cpp
@@ -44,7 +44,6 @@
#include "GeolocationController.h"
#include "GeolocationError.h"
#include "GeolocationPosition.h"
-#include "Geoposition.h"
#include "PositionError.h"
#endif
@@ -122,15 +121,15 @@ void Geolocation::GeoNotifier::timerFired(Timer<GeoNotifier>*)
{
m_timer.stop();
- // Cache our pointer to the Geolocation object, as this GeoNotifier object
+ // Protect this GeoNotifier object, since it
// could be deleted by a call to clearWatch in a callback.
- Geolocation* geolocation = m_geolocation;
+ RefPtr<GeoNotifier> protect(this);
if (m_fatalError) {
if (m_errorCallback)
m_errorCallback->handleEvent(m_fatalError.get());
// This will cause this notifier to be deleted.
- geolocation->fatalErrorOccurred(this);
+ m_geolocation->fatalErrorOccurred(this);
return;
}
@@ -139,7 +138,7 @@ void Geolocation::GeoNotifier::timerFired(Timer<GeoNotifier>*)
// Clear the cached position in case this is a watch request, which
// will continue to run.
m_cachedPosition = 0;
- geolocation->requestReturnedCachedPosition(this);
+ m_geolocation->requestReturnedCachedPosition(this);
return;
}
@@ -147,7 +146,7 @@ void Geolocation::GeoNotifier::timerFired(Timer<GeoNotifier>*)
RefPtr<PositionError> error = PositionError::create(PositionError::TIMEOUT, "Timeout expired");
m_errorCallback->handleEvent(error.get());
}
- geolocation->requestTimedOut(this);
+ m_geolocation->requestTimedOut(this);
}
void Geolocation::Watchers::set(int id, PassRefPtr<GeoNotifier> prpNotifier)
@@ -496,14 +495,18 @@ void Geolocation::clearWatch(int watchId)
void Geolocation::suspend()
{
+#if !ENABLE(CLIENT_BASED_GEOLOCATION)
if (hasListeners())
m_service->suspend();
+#endif
}
void Geolocation::resume()
{
+#if !ENABLE(CLIENT_BASED_GEOLOCATION)
if (hasListeners())
m_service->resume();
+#endif
}
void Geolocation::setIsAllowed(bool allowed)