Create string tightly when retrive string from cbhm callback event
[framework/web/webkit-efl.git] / Source / WebKit2 / UIProcess / API / efl / ewk_view_geolocation_provider.cpp
1 /*
2    Copyright (C) 2012 Samsung Electronics
3
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19
20 #include "config.h"
21 #include "ewk_view_geolocation_provider.h"
22
23 #if ENABLE(TIZEN_GEOLOCATION)
24 #include "WKGeolocationManager.h"
25 #include "ewk_view_private.h"
26
27 static void startUpdating(WKGeolocationManagerRef geolocationManager, const void* clientInfo)
28 {
29     Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
30     Ewk_Geolocation* ewkGeolocation = ewkGeolocationCreateGeolocation(geolocationManager);
31
32     ewkViewSetGeolocation(ewkView, ewkGeolocation);
33     if (!ewkViewIsValidLocationService(ewkView) || !ewkGeolocationStartLocationManager(ewkGeolocation))
34         WKGeolocationManagerProviderDidFailToDeterminePosition(geolocationManager);
35 }
36
37 static void stopUpdating(WKGeolocationManagerRef geolocationManager, const void* clientInfo)
38 {
39     Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
40     ewkGeolocationStopLocationManager(ewkViewGetGeolocation(ewkView));
41 }
42
43 void ewkViewGeolocationProviderAttachProvider(Evas_Object* ewkView, WKContextRef contextRef)
44 {
45     EINA_SAFETY_ON_NULL_RETURN(ewkView);
46
47     WKGeolocationProvider provider = {
48         kWKGeolocationProviderCurrentVersion,
49         ewkView, // clientInfo
50         startUpdating,
51         stopUpdating
52     };
53
54     WKGeolocationManagerRef geolocationManager = WKContextGetGeolocationManager(contextRef);
55     WKGeolocationManagerSetProvider(geolocationManager, &provider);
56 }
57 #endif // ENABLE(TIZEN_GEOLOCATION)