Changeset 218173 in webkit
- Timestamp:
- Jun 13, 2017 3:34:55 AM (7 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r218172 r218173 1 2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Use API::GeolocationProvider in WebKitGeolocationProvider 4 https://bugs.webkit.org/show_bug.cgi?id=173151 5 6 Reviewed by Žan Doberšek. 7 8 Also cleanup a bit the WebKitGeolocationProvider implementation, it doesn't need to be refcounted. 9 10 * UIProcess/API/gtk/WebKitGeolocationProvider.cpp: 11 (WebKit::GeolocationProvider::GeolocationProvider): 12 (WebKit::WebKitGeolocationProvider::~WebKitGeolocationProvider): 13 (WebKit::WebKitGeolocationProvider::WebKitGeolocationProvider): 14 (toGeolocationProvider): Deleted. 15 (startUpdatingCallback): Deleted. 16 (stopUpdatingCallback): Deleted. 17 (WebKitGeolocationProvider::~WebKitGeolocationProvider): Deleted. 18 (WebKitGeolocationProvider::create): Deleted. 19 (WebKitGeolocationProvider::WebKitGeolocationProvider): Deleted. 20 (WebKitGeolocationProvider::startUpdating): Deleted. 21 (WebKitGeolocationProvider::stopUpdating): Deleted. 22 (WebKitGeolocationProvider::notifyPositionChanged): Deleted. 23 (WebKitGeolocationProvider::notifyErrorOccurred): Deleted. 24 * UIProcess/API/gtk/WebKitGeolocationProvider.h: 25 * UIProcess/API/gtk/WebKitWebContext.cpp: 26 (webkitWebContextConstructed): 27 1 28 2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com> 2 29 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp
r185637 r218173 27 27 #include "WebKitGeolocationProvider.h" 28 28 29 #if ENABLE(GEOLOCATION) 30 31 #include "APIGeolocationProvider.h" 29 32 #include "WebGeolocationManagerProxy.h" 30 33 #include "WebGeolocationPosition.h" 31 34 32 using namespace WebKit; 35 namespace WebKit { 33 36 34 #if ENABLE(GEOLOCATION) 37 class GeolocationProvider : public API::GeolocationProvider { 38 public: 39 explicit GeolocationProvider(WebKitGeolocationProvider& provider) 40 : m_provider(provider) 41 { 42 } 35 43 36 static inline WebKitGeolocationProvider* toGeolocationProvider(const void* clientInfo) 37 { 38 return static_cast<WebKitGeolocationProvider*>(const_cast<void*>(clientInfo)); 39 } 44 private: 45 void startUpdating(WebGeolocationManagerProxy&) override 46 { 47 m_provider.startUpdating(); 48 } 40 49 41 static void startUpdatingCallback(WKGeolocationManagerRef, const void* clientInfo) 42 {43 toGeolocationProvider(clientInfo)->startUpdating();44 }50 void stopUpdating(WebGeolocationManagerProxy&) override 51 { 52 m_provider.stopUpdating(); 53 } 45 54 46 static void stopUpdatingCallback(WKGeolocationManagerRef, const void* clientInfo) 47 { 48 toGeolocationProvider(clientInfo)->stopUpdating(); 49 } 55 WebKitGeolocationProvider& m_provider; 56 }; 50 57 51 58 WebKitGeolocationProvider::~WebKitGeolocationProvider() 52 59 { 53 60 m_provider.stopUpdating(); 54 WKGeolocationManagerSetProvider(toAPI(m_geolocationManager.get()), nullptr); 55 } 56 57 Ref<WebKitGeolocationProvider> WebKitGeolocationProvider::create(WebGeolocationManagerProxy* geolocationManager) 58 { 59 return adoptRef(*new WebKitGeolocationProvider(geolocationManager)); 61 m_geolocationManager->setProvider(nullptr); 60 62 } 61 63 … … 65 67 { 66 68 ASSERT(geolocationManager); 67 68 WKGeolocationProviderV1 wkGeolocationProvider = { 69 { 70 1, // version 71 this, // clientInfo 72 }, 73 startUpdatingCallback, 74 stopUpdatingCallback, 75 0 // setEnableHighAccuracy 76 }; 77 WKGeolocationManagerSetProvider(toAPI(geolocationManager), &wkGeolocationProvider.base); 69 geolocationManager->setProvider(std::make_unique<GeolocationProvider>(*this)); 78 70 } 79 71 … … 99 91 } 100 92 93 } // namespace WebKit 94 101 95 #endif // ENABLE(GEOLOCATION) -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h
r209871 r218173 18 18 */ 19 19 20 #ifndef WebKitGeolocationProvider_h 21 #define WebKitGeolocationProvider_h 20 #pragma once 22 21 23 22 #if ENABLE(GEOLOCATION) 24 23 25 #include "WebKitPrivate.h"26 24 #include <WebCore/GeolocationProviderGeoclue.h> 27 25 #include <WebCore/GeolocationProviderGeoclueClient.h> 28 #include <wtf/Ref.h>29 #include <wtf/RefCounted.h>30 26 31 27 namespace WebKit { 28 class WebGeolocationManagerProxy; 32 29 33 class WebKitGeolocationProvider : public RefCounted<WebKitGeolocationProvider>,public WebCore::GeolocationProviderGeoclueClient {30 class WebKitGeolocationProvider final : public WebCore::GeolocationProviderGeoclueClient { 34 31 public: 35 virtual ~WebKitGeolocationProvider();36 static Ref<WebKitGeolocationProvider> create(WebGeolocationManagerProxy*);32 explicit WebKitGeolocationProvider(WebGeolocationManagerProxy*); 33 ~WebKitGeolocationProvider(); 37 34 38 35 void startUpdating(); … … 40 37 41 38 private: 42 WebKitGeolocationProvider(WebGeolocationManagerProxy*);43 44 39 // GeolocationProviderGeoclueClient interface. 45 40 void notifyPositionChanged(int, double, double, double, double, double) override; … … 54 49 #endif // ENABLE(GEOLOCATION) 55 50 56 #endif // WebKitGeolocationProvider_h -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp
r218098 r218173 166 166 URISchemeRequestMap uriSchemeRequests; 167 167 #if ENABLE(GEOLOCATION) 168 RefPtr<WebKitGeolocationProvider> geolocationProvider;168 std::unique_ptr<WebKitGeolocationProvider> geolocationProvider; 169 169 #endif 170 170 RefPtr<WebKitNotificationProvider> notificationProvider; … … 323 323 324 324 #if ENABLE(GEOLOCATION) 325 priv->geolocationProvider = WebKitGeolocationProvider::create(priv->processPool->supplement<WebGeolocationManagerProxy>());325 priv->geolocationProvider = std::make_unique<WebKitGeolocationProvider>(priv->processPool->supplement<WebGeolocationManagerProxy>()); 326 326 #endif 327 327 priv->notificationProvider = WebKitNotificationProvider::create(priv->processPool->supplement<WebNotificationManagerProxy>(), webContext);
Note: See TracChangeset
for help on using the changeset viewer.