summaryrefslogtreecommitdiffstats
path: root/WebCore/page/Geolocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/page/Geolocation.cpp')
-rw-r--r--WebCore/page/Geolocation.cpp49
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