Changeset 218173 in webkit


Ignore:
Timestamp:
Jun 13, 2017 3:34:55 AM (7 years ago)
Author:
Carlos Garcia Campos
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):

Location:
trunk/Source/WebKit2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r218172 r218173  
     12017-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
    1282017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>
    229
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp

    r185637 r218173  
    2727#include "WebKitGeolocationProvider.h"
    2828
     29#if ENABLE(GEOLOCATION)
     30
     31#include "APIGeolocationProvider.h"
    2932#include "WebGeolocationManagerProxy.h"
    3033#include "WebGeolocationPosition.h"
    3134
    32 using namespace WebKit;
     35namespace WebKit {
    3336
    34 #if ENABLE(GEOLOCATION)
     37class GeolocationProvider : public API::GeolocationProvider {
     38public:
     39    explicit GeolocationProvider(WebKitGeolocationProvider& provider)
     40        : m_provider(provider)
     41    {
     42    }
    3543
    36 static inline WebKitGeolocationProvider* toGeolocationProvider(const void* clientInfo)
    37 {
    38     return static_cast<WebKitGeolocationProvider*>(const_cast<void*>(clientInfo));
    39 }
     44private:
     45    void startUpdating(WebGeolocationManagerProxy&) override
     46    {
     47        m_provider.startUpdating();
     48    }
    4049
    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    }
    4554
    46 static void stopUpdatingCallback(WKGeolocationManagerRef, const void* clientInfo)
    47 {
    48     toGeolocationProvider(clientInfo)->stopUpdating();
    49 }
     55    WebKitGeolocationProvider& m_provider;
     56};
    5057
    5158WebKitGeolocationProvider::~WebKitGeolocationProvider()
    5259{
    5360    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);
    6062}
    6163
     
    6567{
    6668    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));
    7870}
    7971
     
    9991}
    10092
     93} // namespace WebKit
     94
    10195#endif // ENABLE(GEOLOCATION)
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h

    r209871 r218173  
    1818 */
    1919
    20 #ifndef WebKitGeolocationProvider_h
    21 #define WebKitGeolocationProvider_h
     20#pragma once
    2221
    2322#if ENABLE(GEOLOCATION)
    2423
    25 #include "WebKitPrivate.h"
    2624#include <WebCore/GeolocationProviderGeoclue.h>
    2725#include <WebCore/GeolocationProviderGeoclueClient.h>
    28 #include <wtf/Ref.h>
    29 #include <wtf/RefCounted.h>
    3026
    3127namespace WebKit {
     28class WebGeolocationManagerProxy;
    3229
    33 class WebKitGeolocationProvider : public RefCounted<WebKitGeolocationProvider>, public WebCore::GeolocationProviderGeoclueClient {
     30class WebKitGeolocationProvider final : public WebCore::GeolocationProviderGeoclueClient {
    3431public:
    35     virtual ~WebKitGeolocationProvider();
    36     static Ref<WebKitGeolocationProvider> create(WebGeolocationManagerProxy*);
     32    explicit WebKitGeolocationProvider(WebGeolocationManagerProxy*);
     33    ~WebKitGeolocationProvider();
    3734
    3835    void startUpdating();
     
    4037
    4138private:
    42     WebKitGeolocationProvider(WebGeolocationManagerProxy*);
    43 
    4439    // GeolocationProviderGeoclueClient interface.
    4540    void notifyPositionChanged(int, double, double, double, double, double) override;
     
    5449#endif // ENABLE(GEOLOCATION)
    5550
    56 #endif // WebKitGeolocationProvider_h
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp

    r218098 r218173  
    166166    URISchemeRequestMap uriSchemeRequests;
    167167#if ENABLE(GEOLOCATION)
    168     RefPtr<WebKitGeolocationProvider> geolocationProvider;
     168    std::unique_ptr<WebKitGeolocationProvider> geolocationProvider;
    169169#endif
    170170    RefPtr<WebKitNotificationProvider> notificationProvider;
     
    323323
    324324#if ENABLE(GEOLOCATION)
    325     priv->geolocationProvider = WebKitGeolocationProvider::create(priv->processPool->supplement<WebGeolocationManagerProxy>());
     325    priv->geolocationProvider = std::make_unique<WebKitGeolocationProvider>(priv->processPool->supplement<WebGeolocationManagerProxy>());
    326326#endif
    327327    priv->notificationProvider = WebKitNotificationProvider::create(priv->processPool->supplement<WebNotificationManagerProxy>(), webContext);
Note: See TracChangeset for help on using the changeset viewer.