diff options
Diffstat (limited to 'WebCore/page/Geolocation.cpp')
-rw-r--r-- | WebCore/page/Geolocation.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/WebCore/page/Geolocation.cpp b/WebCore/page/Geolocation.cpp index 237ceaf..0843e81 100644 --- a/WebCore/page/Geolocation.cpp +++ b/WebCore/page/Geolocation.cpp @@ -44,6 +44,14 @@ #include "PositionError.h" #endif +#if ENABLE(CLIENT_BASED_GEOLOCATION) +#include "Coordinates.h" +#include "GeolocationController.h" +#include "GeolocationError.h" +#include "GeolocationPosition.h" +#include "PositionError.h" +#endif + namespace WebCore { static const char permissionDeniedErrorMessage[] = "User denied Geolocation"; @@ -134,6 +142,7 @@ void Geolocation::GeoNotifier::timerFired(Timer<GeoNotifier>*) m_errorCallback->handleEvent(m_fatalError.get()); // This will cause this notifier to be deleted. m_geolocation->fatalErrorOccurred(this); +<<<<<<< HEAD return; } @@ -142,6 +151,8 @@ void Geolocation::GeoNotifier::timerFired(Timer<GeoNotifier>*) // will continue to run. m_useCachedPosition = false; m_geolocation->requestUsesCachedPosition(this); +======= +>>>>>>> webkit.org at r54127 return; } @@ -200,8 +211,12 @@ void Geolocation::Watchers::getNotifiersVector(Vector<RefPtr<GeoNotifier> >& cop } Geolocation::Geolocation(Frame* frame) +<<<<<<< HEAD : EventListener(GeolocationEventListenerType) , m_frame(frame) +======= + : m_frame(frame) +>>>>>>> webkit.org at r54127 #if !ENABLE(CLIENT_BASED_GEOLOCATION) , m_service(GeolocationService::create(this)) #endif @@ -224,6 +239,10 @@ Geolocation::~Geolocation() m_frame->domWindow()->removeEventListener(eventNames().unloadEvent, this, false); } +Geolocation::~Geolocation() +{ +} + void Geolocation::disconnectFrame() { stopUpdating(); @@ -280,6 +299,7 @@ PassRefPtr<Geolocation::GeoNotifier> Geolocation::startRequest(PassRefPtr<Positi if (isDenied()) notifier->setFatalError(PositionError::create(PositionError::PERMISSION_DENIED, permissionDeniedErrorMessage)); else { +<<<<<<< HEAD if (haveSuitableCachedPosition(notifier->m_options.get())) notifier->setUseCachedPosition(); else { @@ -292,6 +312,16 @@ PassRefPtr<Geolocation::GeoNotifier> Geolocation::startRequest(PassRefPtr<Positi } else notifier->setFatalError(PositionError::create(PositionError::POSITION_UNAVAILABLE, "Failed to start Geolocation service")); } +======= + if (notifier->hasZeroTimeout() || startUpdating(notifier.get())) { +#if ENABLE(CLIENT_BASED_GEOLOCATION) + // Only start timer if we're not waiting for user permission. + if (!m_startRequestPermissionNotifier) +#endif + notifier->startTimerIfNeeded(); + } else + notifier->setFatalError(PositionError::create(PositionError::POSITION_UNAVAILABLE, "Failed to start Geolocation service")); +>>>>>>> webkit.org at r54127 } return notifier.release(); @@ -314,6 +344,7 @@ void Geolocation::requestTimedOut(GeoNotifier* notifier) if (!hasListeners()) stopUpdating(); +<<<<<<< HEAD } void Geolocation::requestUsesCachedPosition(GeoNotifier* notifier) @@ -375,6 +406,8 @@ bool Geolocation::haveSuitableCachedPosition(PositionOptions* options) return false; DOMTimeStamp currentTimeMillis = currentTime() * 1000.0; return m_positionCache->cachedPosition()->timestamp() > currentTimeMillis - options->maximumAge(); +======= +>>>>>>> webkit.org at r54127 } void Geolocation::clearWatch(int watchId) @@ -427,8 +460,15 @@ void Geolocation::setIsAllowed(bool allowed) return; } #endif +<<<<<<< HEAD if (!isAllowed()) { +======= + + if (isAllowed()) + makeSuccessCallbacks(); + else { +>>>>>>> webkit.org at r54127 RefPtr<PositionError> error = PositionError::create(PositionError::PERMISSION_DENIED, permissionDeniedErrorMessage); error->setIsFatal(true); handleError(error.get()); @@ -543,8 +583,11 @@ void Geolocation::requestPermission() void Geolocation::positionChanged(PassRefPtr<Geoposition> newPosition) { m_currentPosition = newPosition; +<<<<<<< HEAD m_positionCache->setCachedPosition(m_currentPosition.get()); +======= +>>>>>>> webkit.org at r54127 // Stop all currently running timers. stopTimers(); @@ -611,9 +654,12 @@ void Geolocation::geolocationServiceErrorOccurred(GeolocationService* service) { ASSERT(service->lastError()); +<<<<<<< HEAD // Note that we do not stop timers here. For one-shots, the request is // cleared in handleError. For watchers, the spec requires that the timer is // not cleared. +======= +>>>>>>> webkit.org at r54127 handleError(service->lastError()); } @@ -661,6 +707,7 @@ void Geolocation::stopUpdating() } +<<<<<<< HEAD bool Geolocation::operator==(const EventListener& listener) { if (listener.type() != GeolocationEventListenerType) @@ -679,4 +726,6 @@ void Geolocation::handleEvent(ScriptExecutionContext*, Event* event) m_watchers.clear(); } +======= +>>>>>>> webkit.org at r54127 } // namespace WebCore |