• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 Google Inc. All rights reserved.
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  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #include "config.h"
27 #include "GeolocationClientProxy.h"
28 
29 #include "Geolocation.h"
30 #include "GeolocationPosition.h"
31 #include "WebGeolocationClient.h"
32 #include "WebGeolocationController.h"
33 #include "WebGeolocationPermissionRequest.h"
34 #include "WebGeolocationPosition.h"
35 
36 namespace WebKit {
37 
GeolocationClientProxy(WebGeolocationClient * client)38 GeolocationClientProxy::GeolocationClientProxy(WebGeolocationClient* client)
39     : m_client(client)
40 {
41 }
42 
~GeolocationClientProxy()43 GeolocationClientProxy::~GeolocationClientProxy()
44 {
45 }
46 
setController(WebCore::GeolocationController * controller)47 void GeolocationClientProxy::setController(WebCore::GeolocationController* controller)
48 {
49     // We support there not being a client, provided we don't do any Geolocation.
50     if (m_client) {
51         // Ownership of the WebGeolocationController is transferred to the client.
52         m_client->setController(new WebGeolocationController(controller));
53     }
54 }
55 
geolocationDestroyed()56 void GeolocationClientProxy::geolocationDestroyed()
57 {
58     if (m_client)
59         m_client->geolocationDestroyed();
60 }
61 
startUpdating()62 void GeolocationClientProxy::startUpdating()
63 {
64     m_client->startUpdating();
65 }
66 
stopUpdating()67 void GeolocationClientProxy::stopUpdating()
68 {
69     m_client->stopUpdating();
70 }
71 
setEnableHighAccuracy(bool highAccuracy)72 void GeolocationClientProxy::setEnableHighAccuracy(bool highAccuracy)
73 {
74     m_client->setEnableHighAccuracy(highAccuracy);
75 }
76 
lastPosition()77 WebCore::GeolocationPosition* GeolocationClientProxy::lastPosition()
78 {
79     WebGeolocationPosition webPosition;
80     if (m_client->lastPosition(webPosition))
81         m_lastPosition = webPosition;
82     else
83         m_lastPosition.clear();
84 
85     return m_lastPosition.get();
86 }
87 
requestPermission(WebCore::Geolocation * geolocation)88 void GeolocationClientProxy::requestPermission(WebCore::Geolocation* geolocation)
89 {
90     m_client->requestPermission(WebGeolocationPermissionRequest(geolocation));
91 }
92 
cancelPermissionRequest(WebCore::Geolocation * geolocation)93 void GeolocationClientProxy::cancelPermissionRequest(WebCore::Geolocation* geolocation)
94 {
95     m_client->cancelPermissionRequest(WebGeolocationPermissionRequest(geolocation));
96 }
97 
98 }
99