Changeset 162449 in webkit


Ignore:
Timestamp:
Jan 21, 2014 10:30:18 AM (10 years ago)
Author:
Carlos Garcia Campos
Message:

[SOUP] Implement CUSTOM PROTOCOLS
https://bugs.webkit.org/show_bug.cgi?id=125583

Reviewed by Anders Carlsson.

Add new classes to implement CustomProtocols for soup. The
implementation is the same, but using the CustomProtocol API and
messages. The current implementation can be removed once all ports
using soup switch to using CustomProtocols.

  • GNUmakefile.am: Add new include paths.
  • GNUmakefile.list.am: Add new files to compilation.
  • PlatformGTK.cmake: Add new files to compilation.
  • Shared/API/c/soup/WKBaseSoup.h:
  • Shared/APIObject.h:
  • Shared/Network/CustomProtocols/CustomProtocolManager.h:
  • Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp: Added.

(WebKit::generateCustomProtocolID):
(WebKit::WebSoupRequestAsyncData::WebSoupRequestAsyncData):
(WebKit::WebSoupRequestAsyncData::~WebSoupRequestAsyncData):
(WebKit::WebSoupRequestAsyncData::requestFailed):
(WebKit::WebSoupRequestAsyncData::releaseTask):
(WebKit::CustomProtocolManagerImpl::CustomProtocolManagerImpl):
(WebKit::CustomProtocolManagerImpl::~CustomProtocolManagerImpl):
(WebKit::CustomProtocolManagerImpl::registerScheme):
(WebKit::CustomProtocolManagerImpl::supportsScheme):
(WebKit::CustomProtocolManagerImpl::didFailWithError):
(WebKit::CustomProtocolManagerImpl::didLoadData):
(WebKit::CustomProtocolManagerImpl::didReceiveResponse):
(WebKit::CustomProtocolManagerImpl::didFinishLoading):
(WebKit::CustomProtocolManagerImpl::send):
(WebKit::CustomProtocolManagerImpl::finish):

  • Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h: Added.
  • Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:

(WebKit::CustomProtocolManager::CustomProtocolManager):
(WebKit::CustomProtocolManager::initialize):
(WebKit::CustomProtocolManager::registerScheme):
(WebKit::CustomProtocolManager::supportsScheme):
(WebKit::CustomProtocolManager::didFailWithError):
(WebKit::CustomProtocolManager::didLoadData):
(WebKit::CustomProtocolManager::didReceiveResponse):
(WebKit::CustomProtocolManager::didFinishLoading):

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/C/soup/WKAPICastSoup.h:
  • UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.cpp: Copied from Source/WebKit2/UIProcess/soup/WebContextSoup.cpp.

(WKSoupCustomProtocolRequestManagerGetTypeID):
(WKSoupCustomProtocolRequestManagerSetClient):

  • UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.h: Added.
  • UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
  • UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:

(WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):

  • UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp:

(WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
(WebKit::CustomProtocolManagerProxy::startLoading):
(WebKit::CustomProtocolManagerProxy::stopLoading):

  • UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp: Added.

(WebKit::WebSoupCustomProtocolRequestManager::supplementName):
(WebKit::WebSoupCustomProtocolRequestManager::create):
(WebKit::WebSoupCustomProtocolRequestManager::WebSoupCustomProtocolRequestManager):
(WebKit::WebSoupCustomProtocolRequestManager::~WebSoupCustomProtocolRequestManager):
(WebKit::WebSoupCustomProtocolRequestManager::initializeClient):
(WebKit::WebSoupCustomProtocolRequestManager::contextDestroyed):
(WebKit::WebSoupCustomProtocolRequestManager::processDidClose):
(WebKit::WebSoupCustomProtocolRequestManager::refWebContextSupplement):
(WebKit::WebSoupCustomProtocolRequestManager::derefWebContextSupplement):
(WebKit::WebSoupCustomProtocolRequestManager::registerSchemeForCustomProtocol):
(WebKit::WebSoupCustomProtocolRequestManager::unregisterSchemeForCustomProtocol):
(WebKit::WebSoupCustomProtocolRequestManager::startLoading):
(WebKit::WebSoupCustomProtocolRequestManager::stopLoading):
(WebKit::WebSoupCustomProtocolRequestManager::didReceiveResponse):
(WebKit::WebSoupCustomProtocolRequestManager::didLoadData):
(WebKit::WebSoupCustomProtocolRequestManager::didFailWithError):
(WebKit::WebSoupCustomProtocolRequestManager::didFinishLoading):

  • UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.h: Added.

(WebKit::WebSoupCustomProtocolRequestManager::registeredSchemesForCustomProtocols):

  • UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.cpp: Added.

(WebKit::WebSoupCustomProtocolRequestManagerClient::startLoading):
(WebKit::WebSoupCustomProtocolRequestManagerClient::stopLoading):

  • UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.h: Added.
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::NetworkProcessProxy):

  • UIProcess/WebContext.cpp:

(WebKit::WebContext::WebContext):

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::WebProcessProxy):

  • UIProcess/gtk/WebContextGtk.cpp:

(WebKit::WebContext::platformInitializeWebProcess):

  • UIProcess/soup/WebContextSoup.cpp:

(WebKit::WebContext::platformInitializeNetworkProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):

  • WebProcess/soup/WebKitSoupRequestGeneric.cpp:

(webkitSoupRequestGenericSendAsync):
(webkitSoupRequestGenericSendFinish):

  • WebProcess/soup/WebKitSoupRequestGeneric.h:
  • WebProcess/soup/WebProcessSoup.cpp:

(WebKit::WebProcess::platformInitializeWebProcess):

Location:
trunk/Source/WebKit2
Files:
5 added
26 edited
3 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r162441 r162449  
     12014-01-21  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [SOUP] Implement CUSTOM PROTOCOLS
     4        https://bugs.webkit.org/show_bug.cgi?id=125583
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Add new classes to implement CustomProtocols for soup. The
     9        implementation is the same, but using the CustomProtocol API and
     10        messages. The current implementation can be removed once all ports
     11        using soup switch to using CustomProtocols.
     12
     13        * GNUmakefile.am: Add new include paths.
     14        * GNUmakefile.list.am: Add new files to compilation.
     15        * PlatformGTK.cmake: Add new files to compilation.
     16        * Shared/API/c/soup/WKBaseSoup.h:
     17        * Shared/APIObject.h:
     18        * Shared/Network/CustomProtocols/CustomProtocolManager.h:
     19        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp: Added.
     20        (WebKit::generateCustomProtocolID):
     21        (WebKit::WebSoupRequestAsyncData::WebSoupRequestAsyncData):
     22        (WebKit::WebSoupRequestAsyncData::~WebSoupRequestAsyncData):
     23        (WebKit::WebSoupRequestAsyncData::requestFailed):
     24        (WebKit::WebSoupRequestAsyncData::releaseTask):
     25        (WebKit::CustomProtocolManagerImpl::CustomProtocolManagerImpl):
     26        (WebKit::CustomProtocolManagerImpl::~CustomProtocolManagerImpl):
     27        (WebKit::CustomProtocolManagerImpl::registerScheme):
     28        (WebKit::CustomProtocolManagerImpl::supportsScheme):
     29        (WebKit::CustomProtocolManagerImpl::didFailWithError):
     30        (WebKit::CustomProtocolManagerImpl::didLoadData):
     31        (WebKit::CustomProtocolManagerImpl::didReceiveResponse):
     32        (WebKit::CustomProtocolManagerImpl::didFinishLoading):
     33        (WebKit::CustomProtocolManagerImpl::send):
     34        (WebKit::CustomProtocolManagerImpl::finish):
     35        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h: Added.
     36        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:
     37        (WebKit::CustomProtocolManager::CustomProtocolManager):
     38        (WebKit::CustomProtocolManager::initialize):
     39        (WebKit::CustomProtocolManager::registerScheme):
     40        (WebKit::CustomProtocolManager::supportsScheme):
     41        (WebKit::CustomProtocolManager::didFailWithError):
     42        (WebKit::CustomProtocolManager::didLoadData):
     43        (WebKit::CustomProtocolManager::didReceiveResponse):
     44        (WebKit::CustomProtocolManager::didFinishLoading):
     45        * Shared/WebProcessCreationParameters.cpp:
     46        (WebKit::WebProcessCreationParameters::encode):
     47        (WebKit::WebProcessCreationParameters::decode):
     48        * Shared/WebProcessCreationParameters.h:
     49        * UIProcess/API/C/soup/WKAPICastSoup.h:
     50        * UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.cpp: Copied from Source/WebKit2/UIProcess/soup/WebContextSoup.cpp.
     51        (WKSoupCustomProtocolRequestManagerGetTypeID):
     52        (WKSoupCustomProtocolRequestManagerSetClient):
     53        * UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.h: Added.
     54        * UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
     55        * UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
     56        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
     57        * UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp:
     58        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
     59        (WebKit::CustomProtocolManagerProxy::startLoading):
     60        (WebKit::CustomProtocolManagerProxy::stopLoading):
     61        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp: Added.
     62        (WebKit::WebSoupCustomProtocolRequestManager::supplementName):
     63        (WebKit::WebSoupCustomProtocolRequestManager::create):
     64        (WebKit::WebSoupCustomProtocolRequestManager::WebSoupCustomProtocolRequestManager):
     65        (WebKit::WebSoupCustomProtocolRequestManager::~WebSoupCustomProtocolRequestManager):
     66        (WebKit::WebSoupCustomProtocolRequestManager::initializeClient):
     67        (WebKit::WebSoupCustomProtocolRequestManager::contextDestroyed):
     68        (WebKit::WebSoupCustomProtocolRequestManager::processDidClose):
     69        (WebKit::WebSoupCustomProtocolRequestManager::refWebContextSupplement):
     70        (WebKit::WebSoupCustomProtocolRequestManager::derefWebContextSupplement):
     71        (WebKit::WebSoupCustomProtocolRequestManager::registerSchemeForCustomProtocol):
     72        (WebKit::WebSoupCustomProtocolRequestManager::unregisterSchemeForCustomProtocol):
     73        (WebKit::WebSoupCustomProtocolRequestManager::startLoading):
     74        (WebKit::WebSoupCustomProtocolRequestManager::stopLoading):
     75        (WebKit::WebSoupCustomProtocolRequestManager::didReceiveResponse):
     76        (WebKit::WebSoupCustomProtocolRequestManager::didLoadData):
     77        (WebKit::WebSoupCustomProtocolRequestManager::didFailWithError):
     78        (WebKit::WebSoupCustomProtocolRequestManager::didFinishLoading):
     79        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.h: Added.
     80        (WebKit::WebSoupCustomProtocolRequestManager::registeredSchemesForCustomProtocols):
     81        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.cpp: Added.
     82        (WebKit::WebSoupCustomProtocolRequestManagerClient::startLoading):
     83        (WebKit::WebSoupCustomProtocolRequestManagerClient::stopLoading):
     84        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.h: Added.
     85        * UIProcess/Network/NetworkProcessProxy.cpp:
     86        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
     87        * UIProcess/WebContext.cpp:
     88        (WebKit::WebContext::WebContext):
     89        * UIProcess/WebPageProxy.cpp:
     90        * UIProcess/WebPageProxy.h:
     91        * UIProcess/WebPageProxy.messages.in:
     92        * UIProcess/WebProcessProxy.cpp:
     93        (WebKit::WebProcessProxy::WebProcessProxy):
     94        * UIProcess/gtk/WebContextGtk.cpp:
     95        (WebKit::WebContext::platformInitializeWebProcess):
     96        * UIProcess/soup/WebContextSoup.cpp:
     97        (WebKit::WebContext::platformInitializeNetworkProcess):
     98        * WebProcess/WebProcess.cpp:
     99        (WebKit::WebProcess::WebProcess):
     100        * WebProcess/soup/WebKitSoupRequestGeneric.cpp:
     101        (webkitSoupRequestGenericSendAsync):
     102        (webkitSoupRequestGenericSendFinish):
     103        * WebProcess/soup/WebKitSoupRequestGeneric.h:
     104        * WebProcess/soup/WebProcessSoup.cpp:
     105        (WebKit::WebProcess::platformInitializeWebProcess):
     106
    11072014-01-21  Adrian Perez de Castro  <aperez@igalia.com>
    2108
  • trunk/Source/WebKit2/GNUmakefile.am

    r162190 r162449  
    105105        -I$(srcdir)/Source/WebKit2/Shared/Network \
    106106        -I$(srcdir)/Source/WebKit2/Shared/Network/CustomProtocols \
     107        -I$(srcdir)/Source/WebKit2/Shared/Network/CustomProtocols/soup \
    107108        -I$(srcdir)/Source/WebKit2/Shared/Plugins \
    108109        -I$(srcdir)/Source/WebKit2/Shared/Plugins/Netscape \
     
    123124        -I$(srcdir)/Source/WebKit2/UIProcess/Network \
    124125        -I$(srcdir)/Source/WebKit2/UIProcess/Network/CustomProtocols \
     126        -I$(srcdir)/Source/WebKit2/UIProcess/Network/CustomProtocols/soup \
    125127        -I$(srcdir)/Source/WebKit2/UIProcess/Notifications \
    126128        -I$(srcdir)/Source/WebKit2/UIProcess/Plugins \
  • trunk/Source/WebKit2/GNUmakefile.list.am

    r162271 r162449  
    404404        Source/WebKit2/Shared/NativeWebWheelEvent.h \
    405405        Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h \
     406        Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h \
     407        Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp \
    406408        Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp \
    407409        Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp \
     
    524526        Source/WebKit2/UIProcess/API/C/soup/WKSoupRequestManager.cpp \
    525527        Source/WebKit2/UIProcess/API/C/soup/WKSoupRequestManager.h \
     528        Source/WebKit2/UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.cpp \
     529        Source/WebKit2/UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.h \
    526530        Source/WebKit2/UIProcess/API/C/WebKit2_C.h \
    527531        Source/WebKit2/UIProcess/API/C/WKAPICast.h \
     
    840844        Source/WebKit2/UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h \
    841845        Source/WebKit2/UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp \
     846        Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.cpp \
     847        Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.h \
     848        Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp \
     849        Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.h \
    842850        Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp \
    843851        Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h \
  • trunk/Source/WebKit2/PlatformGTK.cmake

    r162190 r162449  
    3838    Shared/Downloads/soup/DownloadSoup.cpp
    3939
     40    Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp
    4041    Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp
    4142
     
    7980    UIProcess/API/C/soup/WKCookieManagerSoup.cpp
    8081    UIProcess/API/C/soup/WKSoupRequestManager.cpp
     82    UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.cpp
    8183
    8284    UIProcess/API/gtk/PageClientImpl.cpp
     
    237239
    238240    UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp
     241    UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.cpp
     242    UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp
    239243
    240244    UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp
     
    398402    "${WEBKIT2_DIR}/UIProcess/API/cpp/gtk"
    399403    "${WEBKIT2_DIR}/UIProcess/API/gtk"
     404    "${WEBKIT2_DIR}/UIProcess/Network/CustomProtocols/soup"
    400405    "${WEBKIT2_DIR}/UIProcess/gtk"
    401406    "${WEBKIT2_DIR}/UIProcess/soup"
  • trunk/Source/WebKit2/Shared/API/c/soup/WKBaseSoup.h

    r115411 r162449  
    3232
    3333typedef const struct OpaqueWKSoupRequestManager* WKSoupRequestManagerRef;
     34typedef const struct OpaqueWKSoupCustomProtocolRequestManager* WKSoupCustomProtocolRequestManagerRef;
    3435
    3536#endif /* WKBaseSoup_h */
  • trunk/Source/WebKit2/Shared/APIObject.h

    r162139 r162449  
    159159#if USE(SOUP)
    160160        SoupRequestManager,
     161        SoupCustomProtocolRequestManager,
    161162#endif
    162163#if PLATFORM(EFL)
  • trunk/Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h

    r162139 r162449  
    3333#include "WebProcessSupplement.h"
    3434#include "WorkQueue.h"
    35 #include <wtf/HashSet.h>
    36 #include <wtf/Threading.h>
    3735#include <wtf/text/WTFString.h>
    3836
    3937#if PLATFORM(MAC)
    4038#include <wtf/HashMap.h>
     39#include <wtf/HashSet.h>
    4140#include <wtf/RetainPtr.h>
     41#include <wtf/Threading.h>
    4242OBJC_CLASS WKCustomProtocol;
    4343#endif
     
    5656
    5757class ChildProcess;
     58class CustomProtocolManagerImpl;
    5859struct NetworkProcessCreationParameters;
    5960
     
    9697    void didFinishLoading(uint64_t customProtocolID);
    9798
    98     HashSet<String> m_registeredSchemes;
    99     Mutex m_registeredSchemesMutex;
    10099    ChildProcess* m_childProcess;
    101100    RefPtr<WorkQueue> m_messageQueue;
    102101
    103102#if PLATFORM(MAC)
     103    HashSet<String> m_registeredSchemes;
     104    Mutex m_registeredSchemesMutex;
     105
    104106    typedef HashMap<uint64_t, RetainPtr<WKCustomProtocol>> CustomProtocolMap;
    105107    CustomProtocolMap m_customProtocolMap;
     
    109111    // We return a RetainPtr here because it is unsafe to return a raw pointer since the object might immediately be destroyed from a different thread.
    110112    RetainPtr<WKCustomProtocol> protocolForID(uint64_t customProtocolID);
     113#else
     114    // FIXME: Move mac specific code to CustomProtocolManagerImpl.
     115    std::unique_ptr<CustomProtocolManagerImpl> m_impl;
    111116#endif
    112117};
  • trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp

    r162190 r162449  
    2424
    2525#include "ChildProcess.h"
     26#include "CustomProtocolManagerImpl.h"
    2627#include "CustomProtocolManagerMessages.h"
    27 #include "CustomProtocolManagerProxyMessages.h"
    28 #include "WebCoreArgumentCoders.h"
    2928#include "WebProcessCreationParameters.h"
    3029#include <WebCore/NotImplemented.h>
    31 #include <WebCore/ResourceError.h>
    32 #include <WebCore/ResourceRequest.h>
    33 #include <WebCore/ResourceResponse.h>
    34 #include <WebCore/URL.h>
    3530
    3631#if ENABLE(NETWORK_PROCESS)
     
    4843    : m_childProcess(childProcess)
    4944    , m_messageQueue(WorkQueue::create("com.apple.WebKit.CustomProtocolManager"))
     45    , m_impl(std::make_unique<CustomProtocolManagerImpl>(childProcess))
    5046{
    5147}
     
    5652}
    5753
    58 void CustomProtocolManager::initialize(const WebProcessCreationParameters&)
     54void CustomProtocolManager::initialize(const WebProcessCreationParameters& parameters)
    5955{
     56#if ENABLE(NETWORK_PROCESS)
     57    ASSERT(parameters.urlSchemesRegisteredForCustomProtocols.isEmpty() || !parameters.usesNetworkProcess);
     58    if (parameters.usesNetworkProcess) {
     59        m_childProcess->parentProcessConnection()->removeWorkQueueMessageReceiver(Messages::CustomProtocolManager::messageReceiverName());
     60        m_messageQueue = nullptr;
     61        return;
     62    }
     63#endif
     64    for (size_t i = 0; i < parameters.urlSchemesRegisteredForCustomProtocols.size(); ++i)
     65        registerScheme(parameters.urlSchemesRegisteredForCustomProtocols[i]);
    6066}
    6167
    6268#if ENABLE(NETWORK_PROCESS)
    63 void CustomProtocolManager::initialize(const NetworkProcessCreationParameters&)
     69void CustomProtocolManager::initialize(const NetworkProcessCreationParameters& parameters)
    6470{
     71    for (size_t i = 0; i < parameters.urlSchemesRegisteredForCustomProtocols.size(); ++i)
     72        registerScheme(parameters.urlSchemesRegisteredForCustomProtocols[i]);
    6573}
    6674#endif
    6775
    68 void CustomProtocolManager::registerScheme(const String&)
     76void CustomProtocolManager::registerScheme(const String& scheme)
    6977{
    70     notImplemented();
     78    m_impl->registerScheme(scheme);
    7179}
    7280
     
    7684}
    7785
    78 bool CustomProtocolManager::supportsScheme(const String&)
     86bool CustomProtocolManager::supportsScheme(const String& scheme)
    7987{
    80     notImplemented();
    81     return false;
     88    return m_impl->supportsScheme(scheme);
    8289}
    8390
    84 void CustomProtocolManager::didFailWithError(uint64_t, const WebCore::ResourceError&)
     91void CustomProtocolManager::didFailWithError(uint64_t customProtocolID, const WebCore::ResourceError& error)
    8592{
    86     notImplemented();
     93    m_impl->didFailWithError(customProtocolID, error);
    8794}
    8895
    89 void CustomProtocolManager::didLoadData(uint64_t, const IPC::DataReference&)
     96void CustomProtocolManager::didLoadData(uint64_t customProtocolID, const IPC::DataReference& dataReference)
    9097{
    91     notImplemented();
     98    m_impl->didLoadData(customProtocolID, dataReference);
    9299}
    93100
    94 void CustomProtocolManager::didReceiveResponse(uint64_t, const WebCore::ResourceResponse&, uint32_t)
     101void CustomProtocolManager::didReceiveResponse(uint64_t customProtocolID, const WebCore::ResourceResponse& response, uint32_t)
    95102{
    96     notImplemented();
     103    m_impl->didReceiveResponse(customProtocolID, response);
    97104}
    98105
    99 void CustomProtocolManager::didFinishLoading(uint64_t)
     106void CustomProtocolManager::didFinishLoading(uint64_t customProtocolID)
    100107{
    101     notImplemented();
     108    m_impl->didFinishLoading(customProtocolID);
    102109}
    103110
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r161148 r162449  
    7474#endif
    7575#if USE(SOUP)
     76#if !ENABLE(CUSTOM_PROTOCOLS)
    7677    encoder << urlSchemesRegistered;
     78#endif
    7779    encoder << cookiePersistentStoragePath;
    7880    encoder << cookiePersistentStorageType;
     
    164166#endif
    165167#if USE(SOUP)
     168#if !ENABLE(CUSTOM_PROTOCOLS)
    166169    if (!decoder.decode(parameters.urlSchemesRegistered))
    167170        return false;
     171#endif
    168172    if (!decoder.decode(parameters.cookiePersistentStoragePath))
    169173        return false;
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r161148 r162449  
    8383#endif
    8484#if USE(SOUP)
     85#if !ENABLE(CUSTOM_PROTOCOLS)
    8586    Vector<String> urlSchemesRegistered;
     87#endif
    8688    String cookiePersistentStoragePath;
    8789    uint32_t cookiePersistentStorageType;
  • trunk/Source/WebKit2/UIProcess/API/C/soup/WKAPICastSoup.h

    r115411 r162449  
    3333namespace WebKit {
    3434
     35class WebSoupCustomProtocolRequestManager;
    3536class WebSoupRequestManagerProxy;
    3637
     38#if ENABLE(CUSTOM_PROTOCOLS)
     39WK_ADD_API_MAPPING(WKSoupCustomProtocolRequestManagerRef, WebSoupCustomProtocolRequestManager)
     40#else
    3741WK_ADD_API_MAPPING(WKSoupRequestManagerRef, WebSoupRequestManagerProxy)
     42#endif
    3843
    3944}
  • trunk/Source/WebKit2/UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.cpp

    r162448 r162449  
    11/*
    2  * Copyright (C) 2012 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013 Igalia S.L.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626#include "config.h"
    27 #if ENABLE(NETWORK_PROCESS)
    28 #include "WebContext.h"
     27#include "WKSoupCustomProtocolRequestManager.h"
    2928
    30 #include "NetworkProcessCreationParameters.h"
    31 #include "WebCookieManagerProxy.h"
    32 #include <WebCore/Language.h>
     29#include "WKAPICast.h"
     30#include "WebSoupCustomProtocolRequestManager.h"
    3331
    34 namespace WebKit {
     32using namespace WebKit;
    3533
    36 void WebContext::platformInitializeNetworkProcess(NetworkProcessCreationParameters& parameters)
     34WKTypeID WKSoupCustomProtocolRequestManagerGetTypeID()
    3735{
    38     supplement<WebCookieManagerProxy>()->getCookiePersistentStorage(parameters.cookiePersistentStoragePath, parameters.cookiePersistentStorageType);
    39     parameters.cookieAcceptPolicy = m_initialHTTPCookieAcceptPolicy;
    40     parameters.ignoreTLSErrors = m_ignoreTLSErrors;
    41     parameters.languages = WebCore::userPreferredLanguages();
     36#if ENABLE(CUSTOM_PROTOCOLS)
     37    return toAPI(WebSoupCustomProtocolRequestManager::APIType);
     38#else
     39    return 0;
     40#endif
    4241}
    4342
     43void WKSoupCustomProtocolRequestManagerSetClient(WKSoupCustomProtocolRequestManagerRef soupRequestManagerRef, const WKSoupCustomProtocolRequestManagerClientBase* wkClient)
     44{
     45#if ENABLE(CUSTOM_PROTOCOLS)
     46    toImpl(soupRequestManagerRef)->initializeClient(wkClient);
     47#else
     48    UNUSED_PARAM(soupRequestManagerRef);
     49    UNUSED_PARAM(wkClient);
     50#endif
    4451}
    45 
    46 #endif
  • trunk/Source/WebKit2/UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h

    r162139 r162449  
    4444
    4545class ChildProcessProxy;
     46class WebContext;
    4647
    4748class CustomProtocolManagerProxy : public IPC::MessageReceiver {
    4849public:
    49     explicit CustomProtocolManagerProxy(ChildProcessProxy*);
     50    explicit CustomProtocolManagerProxy(ChildProcessProxy*, WebContext&);
    5051
    5152    void startLoading(uint64_t customProtocolID, const WebCore::ResourceRequest&);
     
    5758
    5859    ChildProcessProxy* m_childProcessProxy;
     60    WebContext& m_webContext;
    5961
    6062#if PLATFORM(MAC)
  • trunk/Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm

    r161148 r162449  
    123123namespace WebKit {
    124124
    125 CustomProtocolManagerProxy::CustomProtocolManagerProxy(ChildProcessProxy* childProcessProxy)
     125CustomProtocolManagerProxy::CustomProtocolManagerProxy(ChildProcessProxy* childProcessProxy, WebContext& webContext)
    126126    : m_childProcessProxy(childProcessProxy)
     127    , m_webContext(webContext)
    127128{
    128129    ASSERT(m_childProcessProxy);
  • trunk/Source/WebKit2/UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp

    r162190 r162449  
    2626#include "CustomProtocolManagerMessages.h"
    2727#include "CustomProtocolManagerProxyMessages.h"
    28 #include <WebCore/NotImplemented.h>
     28#include "WebContext.h"
     29#include "WebSoupCustomProtocolRequestManager.h"
    2930#include <WebCore/ResourceRequest.h>
    3031
    3132namespace WebKit {
    3233
    33 CustomProtocolManagerProxy::CustomProtocolManagerProxy(ChildProcessProxy* childProcessProxy)
     34CustomProtocolManagerProxy::CustomProtocolManagerProxy(ChildProcessProxy* childProcessProxy, WebContext& webContext)
    3435    : m_childProcessProxy(childProcessProxy)
     36    , m_webContext(webContext)
    3537{
    3638    ASSERT(m_childProcessProxy);
     
    3840}
    3941
    40 void CustomProtocolManagerProxy::startLoading(uint64_t, const WebCore::ResourceRequest&)
     42void CustomProtocolManagerProxy::startLoading(uint64_t customProtocolID, const WebCore::ResourceRequest& request)
    4143{
    42     notImplemented();
     44    m_webContext.supplement<WebSoupCustomProtocolRequestManager>()->startLoading(customProtocolID, request);
    4345}
    4446
    45 void CustomProtocolManagerProxy::stopLoading(uint64_t)
     47void CustomProtocolManagerProxy::stopLoading(uint64_t customProtocolID)
    4648{
    47     notImplemented();
     49    m_webContext.supplement<WebSoupCustomProtocolRequestManager>()->stopLoading(customProtocolID);
    4850}
    4951
  • trunk/Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.cpp

    r162448 r162449  
    1919
    2020#include "config.h"
    21 #include "CustomProtocolManagerProxy.h"
     21#include "WebSoupCustomProtocolRequestManagerClient.h"
    2222
    2323#if ENABLE(CUSTOM_PROTOCOLS)
    2424
    25 #include "ChildProcessProxy.h"
    26 #include "CustomProtocolManagerMessages.h"
    27 #include "CustomProtocolManagerProxyMessages.h"
    28 #include <WebCore/NotImplemented.h>
    29 #include <WebCore/ResourceRequest.h>
    30 
    3125namespace WebKit {
    3226
    33 CustomProtocolManagerProxy::CustomProtocolManagerProxy(ChildProcessProxy* childProcessProxy)
    34     : m_childProcessProxy(childProcessProxy)
     27bool WebSoupCustomProtocolRequestManagerClient::startLoading(WebSoupCustomProtocolRequestManager* soupRequestManager, uint64_t customProtocolID, const WebCore::ResourceRequest& request)
    3528{
    36     ASSERT(m_childProcessProxy);
    37     m_childProcessProxy->addMessageReceiver(Messages::CustomProtocolManagerProxy::messageReceiverName(), *this);
     29    if (!m_client.startLoading)
     30        return false;
     31
     32    RefPtr<API::URLRequest> urlRequest = API::URLRequest::create(request);
     33    m_client.startLoading(toAPI(soupRequestManager), customProtocolID, toAPI(urlRequest.get()), m_client.base.clientInfo);
     34    return true;
    3835}
    3936
    40 void CustomProtocolManagerProxy::startLoading(uint64_t, const WebCore::ResourceRequest&)
     37void WebSoupCustomProtocolRequestManagerClient::stopLoading(WebSoupCustomProtocolRequestManager* soupRequestManager, uint64_t customProtocolID)
    4138{
    42     notImplemented();
    43 }
    44 
    45 void CustomProtocolManagerProxy::stopLoading(uint64_t)
    46 {
    47     notImplemented();
     39    if (m_client.stopLoading)
     40        m_client.stopLoading(toAPI(soupRequestManager), customProtocolID, m_client.base.clientInfo);
    4841}
    4942
  • trunk/Source/WebKit2/UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.h

    r162448 r162449  
    1818 */
    1919
    20 #include "config.h"
    21 #include "CustomProtocolManagerProxy.h"
     20#ifndef WebSoupCustomProtocolRequestManagerClient_h
     21#define WebSoupCustomProtocolRequestManagerClient_h
    2222
    2323#if ENABLE(CUSTOM_PROTOCOLS)
    2424
    25 #include "ChildProcessProxy.h"
    26 #include "CustomProtocolManagerMessages.h"
    27 #include "CustomProtocolManagerProxyMessages.h"
    28 #include <WebCore/NotImplemented.h>
    29 #include <WebCore/ResourceRequest.h>
     25#include "APIClient.h"
     26#include "WKAPICast.h"
     27#include "WKSoupCustomProtocolRequestManager.h"
     28
     29namespace API {
     30
     31template<> struct ClientTraits<WKSoupCustomProtocolRequestManagerClientBase> {
     32    typedef std::tuple<WKSoupCustomProtocolRequestManagerClientV0> Versions;
     33};
     34}
     35
     36namespace WebCore {
     37class ResourceRequest;
     38}
    3039
    3140namespace WebKit {
    3241
    33 CustomProtocolManagerProxy::CustomProtocolManagerProxy(ChildProcessProxy* childProcessProxy)
    34     : m_childProcessProxy(childProcessProxy)
    35 {
    36     ASSERT(m_childProcessProxy);
    37     m_childProcessProxy->addMessageReceiver(Messages::CustomProtocolManagerProxy::messageReceiverName(), *this);
    38 }
     42class WebSoupCustomProtocolRequestManager;
    3943
    40 void CustomProtocolManagerProxy::startLoading(uint64_t, const WebCore::ResourceRequest&)
    41 {
    42     notImplemented();
    43 }
    44 
    45 void CustomProtocolManagerProxy::stopLoading(uint64_t)
    46 {
    47     notImplemented();
    48 }
     44class WebSoupCustomProtocolRequestManagerClient : public API::Client<WKSoupCustomProtocolRequestManagerClientBase> {
     45public:
     46    bool startLoading(WebSoupCustomProtocolRequestManager*, uint64_t customProtocolID, const WebCore::ResourceRequest&);
     47    void stopLoading(WebSoupCustomProtocolRequestManager*, uint64_t customProtocolID);
     48};
    4949
    5050} // namespace WebKit
    5151
    5252#endif // ENABLE(CUSTOM_PROTOCOLS)
     53
     54#endif // WebSoupCustomProtocolRequestManagerClient_h
  • trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp

    r161301 r162449  
    5757    , m_numPendingConnectionRequests(0)
    5858#if ENABLE(CUSTOM_PROTOCOLS)
    59     , m_customProtocolManagerProxy(this)
     59    , m_customProtocolManagerProxy(this, webContext)
    6060#endif
    6161{
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r162271 r162449  
    9393
    9494#if USE(SOUP)
     95#if ENABLE(CUSTOM_PROTOCOLS)
     96#include "WebSoupCustomProtocolRequestManager.h"
     97#else
    9598#include "WebSoupRequestManagerProxy.h"
     99#endif
    96100#endif
    97101
     
    174178#endif
    175179#if USE(SOUP)
     180#if ENABLE(CUSTOM_PROTOCOLS)
     181    addSupplement<WebSoupCustomProtocolRequestManager>();
     182#else
    176183    addSupplement<WebSoupRequestManagerProxy>();
     184#endif
    177185#endif
    178186#if ENABLE(BATTERY_STATUS)
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r162382 r162449  
    107107#endif
    108108
    109 #if USE(SOUP)
     109#if USE(SOUP) && !ENABLE(CUSTOM_PROTOCOLS)
    110110#include "WebSoupRequestManagerProxy.h"
    111111#endif
     
    43584358#endif // PLATFORM(MAC)
    43594359
    4360 #if USE(SOUP)
     4360#if USE(SOUP) && !ENABLE(CUSTOM_PROTOCOLS)
    43614361void WebPageProxy::didReceiveURIRequest(String uriString, uint64_t requestID)
    43624362{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r162271 r162449  
    11371137#endif // PLATFORM(IOS)
    11381138
    1139 #if USE(SOUP)
     1139#if USE(SOUP) && !ENABLE(CUSTOM_PROTOCOLS)
    11401140    void didReceiveURIRequest(String uriString, uint64_t requestID);
    11411141#endif
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r162141 r162449  
    322322
    323323#if USE(SOUP)
     324#if !ENABLE(CUSTOM_PROTOCOLS)
    324325    # Soup custom URI request messages
    325326    DidReceiveURIRequest(String uriString, uint64_t requestID);
     327#endif
    326328#endif
    327329
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r162271 r162449  
    9090    , m_mayHaveUniversalFileReadSandboxExtension(false)
    9191#if ENABLE(CUSTOM_PROTOCOLS)
    92     , m_customProtocolManagerProxy(this)
     92    , m_customProtocolManagerProxy(this, context)
    9393#endif
    9494#if PLATFORM(MAC)
  • trunk/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp

    r161272 r162449  
    3434#include "WebProcessCreationParameters.h"
    3535#include "WebProcessMessages.h"
    36 #include "WebSoupRequestManagerProxy.h"
    3736#include <WebCore/FileSystem.h>
    3837#include <WebCore/NotImplemented.h>
     
    4342#if ENABLE(NETWORK_PROCESS)
    4443#include "NetworkProcessMessages.h"
     44#endif
     45
     46#if ENABLE(CUSTOM_PROTOCOLS)
     47#include "WebSoupCustomProtocolRequestManager.h"
     48#else
     49#include "WebSoupRequestManagerProxy.h"
    4550#endif
    4651
     
    100105
    101106    if (!usesNetworkProcess()) {
     107#if ENABLE(CUSTOM_PROTOCOLS)
     108        parameters.urlSchemesRegisteredForCustomProtocols = supplement<WebSoupCustomProtocolRequestManager>()->registeredSchemesForCustomProtocols();
     109#else
    102110        parameters.urlSchemesRegistered = supplement<WebSoupRequestManagerProxy>()->registeredURISchemes();
     111#endif
    103112
    104113        supplement<WebCookieManagerProxy>()->getCookiePersistentStorage(parameters.cookiePersistentStoragePath, parameters.cookiePersistentStorageType);
  • trunk/Source/WebKit2/UIProcess/soup/WebContextSoup.cpp

    r161976 r162449  
    3030#include "NetworkProcessCreationParameters.h"
    3131#include "WebCookieManagerProxy.h"
     32#include "WebSoupCustomProtocolRequestManager.h"
    3233#include <WebCore/Language.h>
    3334
     
    4041    parameters.ignoreTLSErrors = m_ignoreTLSErrors;
    4142    parameters.languages = WebCore::userPreferredLanguages();
     43#if ENABLE(CUSTOM_PROTOCOLS)
     44    parameters.urlSchemesRegisteredForCustomProtocols = supplement<WebSoupCustomProtocolRequestManager>()->registeredSchemesForCustomProtocols();
     45#endif
    4246}
    4347
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r162271 r162449  
    129129#endif
    130130
    131 #if USE(SOUP)
     131#if USE(SOUP) && !ENABLE(CUSTOM_PROTOCOLS)
    132132#include "WebSoupRequestManager.h"
    133133#endif
     
    202202    addSupplement<WebNetworkInfoManager>();
    203203#endif
    204 #if USE(SOUP)
     204#if USE(SOUP) && !ENABLE(CUSTOM_PROTOCOLS)
    205205    addSupplement<WebSoupRequestManager>();
    206206#endif
  • trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp

    r151726 r162449  
    2121#include "WebKitSoupRequestGeneric.h"
    2222
     23#include <wtf/text/CString.h>
     24
     25#if !ENABLE(CUSTOM_PROTOCOLS)
    2326#include "WebProcess.h"
    2427#include "WebSoupRequestManager.h"
    25 #include <wtf/text/CString.h>
     28#endif
    2629
    2730using namespace WebKit;
     
    4952static void webkitSoupRequestGenericSendAsync(SoupRequest* request, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData)
    5053{
     54#if ENABLE(CUSTOM_PROTOCOLS)
     55    CustomProtocolManagerImpl* customProtocolManager = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->customProtocolManager;
     56    ASSERT(customProtocolManager);
     57    customProtocolManager->send(g_task_new(request, cancellable, callback, userData));
     58#else
    5159    WebProcess::shared().supplement<WebSoupRequestManager>()->send(g_task_new(request, cancellable, callback, userData));
     60#endif
    5261}
    5362
     
    5564{
    5665    g_return_val_if_fail(g_task_is_valid(result, request), 0);
     66#if ENABLE(CUSTOM_PROTOCOLS)
     67    CustomProtocolManagerImpl* customProtocolManager = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->customProtocolManager;
     68    ASSERT(customProtocolManager);
     69    return customProtocolManager->finish(G_TASK(result), error);
     70#else
    5771    return WebProcess::shared().supplement<WebSoupRequestManager>()->finish(G_TASK(result), error);
     72#endif
    5873}
    5974
  • trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h

    r148507 r162449  
    2424#include <libsoup/soup.h>
    2525
     26#if ENABLE(CUSTOM_PROTOCOLS)
     27#include "CustomProtocolManagerImpl.h"
     28#endif
     29
    2630G_BEGIN_DECLS
    2731
     
    4549struct _WebKitSoupRequestGenericClass {
    4650    SoupRequestClass parent;
     51
     52#if ENABLE(CUSTOM_PROTOCOLS)
     53    WebKit::CustomProtocolManagerImpl* customProtocolManager;
     54#endif
    4755};
    4856
  • trunk/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp

    r162059 r162449  
    3535#include "WebCookieManager.h"
    3636#include "WebProcessCreationParameters.h"
    37 #include "WebSoupRequestManager.h"
    3837#include <WebCore/FileSystem.h>
    3938#include <WebCore/Language.h>
     
    4544#include <wtf/gobject/GOwnPtr.h>
    4645#include <wtf/gobject/GRefPtr.h>
     46
     47#if !ENABLE(CUSTOM_PROTOCOLS)
     48#include "WebSoupRequestManager.h"
     49#endif
    4750
    4851namespace WebKit {
     
    164167        setSoupSessionAcceptLanguage(parameters.languages);
    165168
     169#if !ENABLE(CUSTOM_PROTOCOLS)
    166170    for (size_t i = 0; i < parameters.urlSchemesRegistered.size(); i++)
    167171        supplement<WebSoupRequestManager>()->registerURIScheme(parameters.urlSchemesRegistered[i]);
     172#endif
    168173
    169174    setIgnoreTLSErrors(parameters.ignoreTLSErrors);
Note: See TracChangeset for help on using the changeset viewer.