Title: [218173] trunk/Source/WebKit2
Revision
218173
Author
carlo...@webkit.org
Date
2017-06-13 03:34:55 -0700 (Tue, 13 Jun 2017)

Log Message

[GTK] Use API::GeolocationProvider in WebKitGeolocationProvider
https://bugs.webkit.org/show_bug.cgi?id=173151

Reviewed by Žan Doberšek.

Also cleanup a bit the WebKitGeolocationProvider implementation, it doesn't need to be refcounted.

* UIProcess/API/gtk/WebKitGeolocationProvider.cpp:
(WebKit::GeolocationProvider::GeolocationProvider):
(WebKit::WebKitGeolocationProvider::~WebKitGeolocationProvider):
(WebKit::WebKitGeolocationProvider::WebKitGeolocationProvider):
(toGeolocationProvider): Deleted.
(startUpdatingCallback): Deleted.
(stopUpdatingCallback): Deleted.
(WebKitGeolocationProvider::~WebKitGeolocationProvider): Deleted.
(WebKitGeolocationProvider::create): Deleted.
(WebKitGeolocationProvider::WebKitGeolocationProvider): Deleted.
(WebKitGeolocationProvider::startUpdating): Deleted.
(WebKitGeolocationProvider::stopUpdating): Deleted.
(WebKitGeolocationProvider::notifyPositionChanged): Deleted.
(WebKitGeolocationProvider::notifyErrorOccurred): Deleted.
* UIProcess/API/gtk/WebKitGeolocationProvider.h:
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (218172 => 218173)


--- trunk/Source/WebKit2/ChangeLog	2017-06-13 10:31:38 UTC (rev 218172)
+++ trunk/Source/WebKit2/ChangeLog	2017-06-13 10:34:55 UTC (rev 218173)
@@ -1,5 +1,32 @@
 2017-06-13  Carlos Garcia Campos  <cgar...@igalia.com>
 
+        [GTK] Use API::GeolocationProvider in WebKitGeolocationProvider
+        https://bugs.webkit.org/show_bug.cgi?id=173151
+
+        Reviewed by Žan Doberšek.
+
+        Also cleanup a bit the WebKitGeolocationProvider implementation, it doesn't need to be refcounted.
+
+        * UIProcess/API/gtk/WebKitGeolocationProvider.cpp:
+        (WebKit::GeolocationProvider::GeolocationProvider):
+        (WebKit::WebKitGeolocationProvider::~WebKitGeolocationProvider):
+        (WebKit::WebKitGeolocationProvider::WebKitGeolocationProvider):
+        (toGeolocationProvider): Deleted.
+        (startUpdatingCallback): Deleted.
+        (stopUpdatingCallback): Deleted.
+        (WebKitGeolocationProvider::~WebKitGeolocationProvider): Deleted.
+        (WebKitGeolocationProvider::create): Deleted.
+        (WebKitGeolocationProvider::WebKitGeolocationProvider): Deleted.
+        (WebKitGeolocationProvider::startUpdating): Deleted.
+        (WebKitGeolocationProvider::stopUpdating): Deleted.
+        (WebKitGeolocationProvider::notifyPositionChanged): Deleted.
+        (WebKitGeolocationProvider::notifyErrorOccurred): Deleted.
+        * UIProcess/API/gtk/WebKitGeolocationProvider.h:
+        * UIProcess/API/gtk/WebKitWebContext.cpp:
+        (webkitWebContextConstructed):
+
+2017-06-13  Carlos Garcia Campos  <cgar...@igalia.com>
+
         [GTK] Use API::IconDatabaseClient in WebKitFaviconDatabase
         https://bugs.webkit.org/show_bug.cgi?id=173146
 

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp (218172 => 218173)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp	2017-06-13 10:31:38 UTC (rev 218172)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp	2017-06-13 10:34:55 UTC (rev 218173)
@@ -26,55 +26,47 @@
 #include "config.h"
 #include "WebKitGeolocationProvider.h"
 
+#if ENABLE(GEOLOCATION)
+
+#include "APIGeolocationProvider.h"
 #include "WebGeolocationManagerProxy.h"
 #include "WebGeolocationPosition.h"
 
-using namespace WebKit;
+namespace WebKit {
 
-#if ENABLE(GEOLOCATION)
+class GeolocationProvider : public API::GeolocationProvider {
+public:
+    explicit GeolocationProvider(WebKitGeolocationProvider& provider)
+        : m_provider(provider)
+    {
+    }
 
-static inline WebKitGeolocationProvider* toGeolocationProvider(const void* clientInfo)
-{
-    return static_cast<WebKitGeolocationProvider*>(const_cast<void*>(clientInfo));
-}
+private:
+    void startUpdating(WebGeolocationManagerProxy&) override
+    {
+        m_provider.startUpdating();
+    }
 
-static void startUpdatingCallback(WKGeolocationManagerRef, const void* clientInfo)
-{
-    toGeolocationProvider(clientInfo)->startUpdating();
-}
+    void stopUpdating(WebGeolocationManagerProxy&) override
+    {
+        m_provider.stopUpdating();
+    }
 
-static void stopUpdatingCallback(WKGeolocationManagerRef, const void* clientInfo)
-{
-    toGeolocationProvider(clientInfo)->stopUpdating();
-}
+    WebKitGeolocationProvider& m_provider;
+};
 
 WebKitGeolocationProvider::~WebKitGeolocationProvider()
 {
     m_provider.stopUpdating();
-    WKGeolocationManagerSetProvider(toAPI(m_geolocationManager.get()), nullptr);
+    m_geolocationManager->setProvider(nullptr);
 }
 
-Ref<WebKitGeolocationProvider> WebKitGeolocationProvider::create(WebGeolocationManagerProxy* geolocationManager)
-{
-    return adoptRef(*new WebKitGeolocationProvider(geolocationManager));
-}
-
 WebKitGeolocationProvider::WebKitGeolocationProvider(WebGeolocationManagerProxy* geolocationManager)
     : m_geolocationManager(geolocationManager)
     , m_provider(this)
 {
     ASSERT(geolocationManager);
-
-    WKGeolocationProviderV1 wkGeolocationProvider = {
-        {
-            1, // version
-            this, // clientInfo
-        },
-        startUpdatingCallback,
-        stopUpdatingCallback,
-        0 // setEnableHighAccuracy
-    };
-    WKGeolocationManagerSetProvider(toAPI(geolocationManager), &wkGeolocationProvider.base);
+    geolocationManager->setProvider(std::make_unique<GeolocationProvider>(*this));
 }
 
 void WebKitGeolocationProvider::startUpdating()
@@ -98,4 +90,6 @@
     m_geolocationManager->providerDidFailToDeterminePosition();
 }
 
+} // namespace WebKit
+
 #endif // ENABLE(GEOLOCATION)

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h (218172 => 218173)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h	2017-06-13 10:31:38 UTC (rev 218172)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h	2017-06-13 10:34:55 UTC (rev 218173)
@@ -17,30 +17,25 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef WebKitGeolocationProvider_h
-#define WebKitGeolocationProvider_h
+#pragma once
 
 #if ENABLE(GEOLOCATION)
 
-#include "WebKitPrivate.h"
 #include <WebCore/GeolocationProviderGeoclue.h>
 #include <WebCore/GeolocationProviderGeoclueClient.h>
-#include <wtf/Ref.h>
-#include <wtf/RefCounted.h>
 
 namespace WebKit {
+class WebGeolocationManagerProxy;
 
-class WebKitGeolocationProvider : public RefCounted<WebKitGeolocationProvider>, public WebCore::GeolocationProviderGeoclueClient {
+class WebKitGeolocationProvider final : public WebCore::GeolocationProviderGeoclueClient {
 public:
-    virtual ~WebKitGeolocationProvider();
-    static Ref<WebKitGeolocationProvider> create(WebGeolocationManagerProxy*);
+    explicit WebKitGeolocationProvider(WebGeolocationManagerProxy*);
+    ~WebKitGeolocationProvider();
 
     void startUpdating();
     void stopUpdating();
 
 private:
-    WebKitGeolocationProvider(WebGeolocationManagerProxy*);
-
     // GeolocationProviderGeoclueClient interface.
     void notifyPositionChanged(int, double, double, double, double, double) override;
     void notifyErrorOccurred(const char*) override;
@@ -53,4 +48,3 @@
 
 #endif // ENABLE(GEOLOCATION)
 
-#endif // WebKitGeolocationProvider_h

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp (218172 => 218173)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp	2017-06-13 10:31:38 UTC (rev 218172)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp	2017-06-13 10:34:55 UTC (rev 218173)
@@ -165,7 +165,7 @@
     URISchemeHandlerMap uriSchemeHandlers;
     URISchemeRequestMap uriSchemeRequests;
 #if ENABLE(GEOLOCATION)
-    RefPtr<WebKitGeolocationProvider> geolocationProvider;
+    std::unique_ptr<WebKitGeolocationProvider> geolocationProvider;
 #endif
     RefPtr<WebKitNotificationProvider> notificationProvider;
     GRefPtr<WebKitWebsiteDataManager> websiteDataManager;
@@ -322,7 +322,7 @@
     attachCustomProtocolManagerClientToContext(webContext);
 
 #if ENABLE(GEOLOCATION)
-    priv->geolocationProvider = WebKitGeolocationProvider::create(priv->processPool->supplement<WebGeolocationManagerProxy>());
+    priv->geolocationProvider = std::make_unique<WebKitGeolocationProvider>(priv->processPool->supplement<WebGeolocationManagerProxy>());
 #endif
     priv->notificationProvider = WebKitNotificationProvider::create(priv->processPool->supplement<WebNotificationManagerProxy>(), webContext);
 #if ENABLE(REMOTE_INSPECTOR)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to