diff options
author | Steve Block <steveblock@google.com> | 2010-01-22 14:51:37 +0000 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-01-25 14:31:12 +0000 |
commit | 1c58588a98d412c23d74caf92991904fddbc9d49 (patch) | |
tree | 0f49e6f5746855fe20c70e6e9250159990b21f5f /WebCore/page | |
parent | daee1033b2624ef1e03be35756ea75afaa7ea501 (diff) | |
download | external_webkit-1c58588a98d412c23d74caf92991904fddbc9d49.zip external_webkit-1c58588a98d412c23d74caf92991904fddbc9d49.tar.gz external_webkit-1c58588a98d412c23d74caf92991904fddbc9d49.tar.bz2 |
Cherry-pick WebKit change 53441 to make changes to Geolocation
See http://trac.webkit.org/changeset/53441
This is required to bring Geolocation up-to-date with webkit.org to allow upstreaming of maximumAge code.
Change-Id: Ib69ddd4d1b0944c861ac6c35412936ec1209cff0
Diffstat (limited to 'WebCore/page')
-rw-r--r-- | WebCore/page/Geolocation.cpp | 10 | ||||
-rw-r--r-- | WebCore/page/GeolocationController.cpp | 3 |
2 files changed, 7 insertions, 6 deletions
diff --git a/WebCore/page/Geolocation.cpp b/WebCore/page/Geolocation.cpp index 231d57a..cc5cc93 100644 --- a/WebCore/page/Geolocation.cpp +++ b/WebCore/page/Geolocation.cpp @@ -121,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; } @@ -138,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; } @@ -146,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) diff --git a/WebCore/page/GeolocationController.cpp b/WebCore/page/GeolocationController.cpp index 44eba6e..968e854 100644 --- a/WebCore/page/GeolocationController.cpp +++ b/WebCore/page/GeolocationController.cpp @@ -54,7 +54,8 @@ void GeolocationController::addObserver(Geolocation* observer) void GeolocationController::removeObserver(Geolocation* observer) { - ASSERT(m_observers.contains(observer)); + if (!m_observers.contains(observer)) + return; m_observers.remove(observer); if (m_observers.isEmpty()) |