9d07a9155b2e0ecd9089aba710b729475b3613fa
[WebKit-https.git] / Source / WebKit / qt / WebCoreSupport / GeolocationClientQt.h
1 /*
2  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef GeolocationClientQt_h
27 #define GeolocationClientQt_h
28
29 #include "GeolocationClient.h"
30
31 #include <QObject>
32 #include <wtf/RefPtr.h>
33
34 #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
35 #include <QGeoPositionInfo>
36 namespace QtMobility {
37 class QGeoPositionInfoSource;
38 };
39 using namespace QtMobility;
40 #elif QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
41 #include <QtLocation/QGeoPositionInfo>
42 class QGeoPositionInfoSource;
43 #endif
44
45
46 class QWebPage;
47
48 namespace WebCore {
49
50 // This class provides an implementation of a GeolocationClient for QtWebkit.
51 class GeolocationClientQt : public QObject, public GeolocationClient {
52     Q_OBJECT
53
54 public:
55     GeolocationClientQt(const QWebPage*);
56     virtual ~GeolocationClientQt();
57
58     virtual void geolocationDestroyed();
59     virtual void startUpdating();
60     virtual void stopUpdating();
61
62     void setEnableHighAccuracy(bool);
63     virtual GeolocationPosition* lastPosition() { return m_lastPosition.get(); }
64
65     virtual void requestPermission(Geolocation*);
66     virtual void cancelPermissionRequest(Geolocation*);
67
68 private Q_SLOTS:
69     void positionUpdated(const QGeoPositionInfo&);
70
71 private:
72     const QWebPage* m_page;
73     RefPtr<GeolocationPosition> m_lastPosition;
74     QGeoPositionInfoSource* m_location;
75 };
76
77 } // namespace WebCore
78
79 #endif // GeolocationClientQt_h