Changeset 251138 in webkit


Ignore:
Timestamp:
Oct 15, 2019 9:09:55 AM (5 years ago)
Author:
achristensen@apple.com
Message:

Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global
https://bugs.webkit.org/show_bug.cgi?id=202891

Reviewed by Youenn Fablet.

Source/WebCore:

  • platform/LegacySchemeRegistry.cpp:

(WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled):

  • platform/LegacySchemeRegistry.h:

Source/WebKit:

No change in behavior. Now the LegacySchemeRegistry is not used as much in the NetworkProcess, a step towards no use at all.
This functionality is currently only available through the glib API webkit_security_manager_register_uri_scheme_as_cors_enabled
but it has been requested in bug 201180 and bug 199064.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::registerURLSchemesAsCORSEnabled):

  • NetworkProcess/NetworkConnectionToWebProcess.h:

(WebKit::NetworkConnectionToWebProcess::schemeRegistry):

  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):

  • NetworkProcess/NetworkLoadChecker.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const): Deleted.

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):

  • NetworkProcess/NetworkSchemeRegistry.cpp: Added.

(WebKit::NetworkSchemeRegistry::registerURLSchemeAsCORSEnabled):
(WebKit::NetworkSchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):

  • NetworkProcess/NetworkSchemeRegistry.h: Added.

(WebKit::NetworkSchemeRegistry::create):

  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::PingLoad):
Use nullptr, indicating that the PingLoad constructor that is used in ad click attribution should not check the custom scheme registry.
This is Ok because ad click attribution is only used for HTTP family schemes.
(WebKit::m_blobFiles):

  • NetworkProcess/PingLoad.h:
  • Sources.txt:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::registerURLSchemeAsCORSEnabled):
(WebKit::WebProcess::ensureNetworkProcessConnection):
(WebKit::WebProcess::registerURLSchemeAsCORSEnabled const): Deleted.

  • WebProcess/WebProcess.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

(-[SWMessageHandlerWithExpectedMessage userContentController:didReceiveScriptMessage:]):
Use EXPECT_WK_STREQ so I can see what is going on on EWS.

Location:
trunk
Files:
2 added
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r251137 r251138  
     12019-10-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global
     4        https://bugs.webkit.org/show_bug.cgi?id=202891
     5
     6        Reviewed by Youenn Fablet.
     7
     8        * platform/LegacySchemeRegistry.cpp:
     9        (WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):
     10        (WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
     11        (WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled):
     12        * platform/LegacySchemeRegistry.h:
     13
    1142019-10-15  Zalan Bujtas  <zalan@apple.com>
    215
  • trunk/Source/WebCore/platform/LegacySchemeRegistry.cpp

    r250738 r251138  
    2727#include "LegacySchemeRegistry.h"
    2828
     29#include "RuntimeApplicationChecks.h"
    2930#include <wtf/Lock.h>
    3031#include <wtf/Locker.h>
     
    422423void LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(const String& scheme)
    423424{
     425    ASSERT(!isInNetworkProcess());
    424426    if (scheme.isNull())
    425427        return;
     
    429431bool LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(const String& scheme)
    430432{
     433    ASSERT(!isInNetworkProcess());
    431434    return !scheme.isNull() && CORSEnabledSchemes().contains(scheme);
     435}
     436
     437Vector<String> LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled()
     438{
     439    ASSERT(!isInNetworkProcess());
     440    return copyToVector(CORSEnabledSchemes());
    432441}
    433442
  • trunk/Source/WebCore/platform/LegacySchemeRegistry.h

    r250738 r251138  
    8282    WEBCORE_EXPORT static void registerURLSchemeAsCORSEnabled(const String& scheme);
    8383    WEBCORE_EXPORT static bool shouldTreatURLSchemeAsCORSEnabled(const String& scheme);
     84    WEBCORE_EXPORT static Vector<String> allURLSchemesRegisteredAsCORSEnabled();
    8485
    8586    // Allow resources from some schemes to load on a page, regardless of its
  • trunk/Source/WebKit/ChangeLog

    r251132 r251138  
     12019-10-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global
     4        https://bugs.webkit.org/show_bug.cgi?id=202891
     5
     6        Reviewed by Youenn Fablet.
     7
     8        No change in behavior.  Now the LegacySchemeRegistry is not used as much in the NetworkProcess, a step towards no use at all.
     9        This functionality is currently only available through the glib API webkit_security_manager_register_uri_scheme_as_cors_enabled
     10        but it has been requested in bug 201180 and bug 199064.
     11
     12        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
     13        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
     14        (WebKit::NetworkConnectionToWebProcess::loadPing):
     15        (WebKit::NetworkConnectionToWebProcess::registerURLSchemesAsCORSEnabled):
     16        * NetworkProcess/NetworkConnectionToWebProcess.h:
     17        (WebKit::NetworkConnectionToWebProcess::schemeRegistry):
     18        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
     19        * NetworkProcess/NetworkLoadChecker.cpp:
     20        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
     21        (WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):
     22        * NetworkProcess/NetworkLoadChecker.h:
     23        * NetworkProcess/NetworkProcess.cpp:
     24        (WebKit::NetworkProcess::initializeNetworkProcess):
     25        (WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const): Deleted.
     26        * NetworkProcess/NetworkProcess.messages.in:
     27        * NetworkProcess/NetworkProcessCreationParameters.cpp:
     28        (WebKit::NetworkProcessCreationParameters::encode const):
     29        (WebKit::NetworkProcessCreationParameters::decode):
     30        * NetworkProcess/NetworkProcessCreationParameters.h:
     31        * NetworkProcess/NetworkResourceLoader.cpp:
     32        (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
     33        * NetworkProcess/NetworkSchemeRegistry.cpp: Added.
     34        (WebKit::NetworkSchemeRegistry::registerURLSchemeAsCORSEnabled):
     35        (WebKit::NetworkSchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
     36        * NetworkProcess/NetworkSchemeRegistry.h: Added.
     37        (WebKit::NetworkSchemeRegistry::create):
     38        * NetworkProcess/PingLoad.cpp:
     39        (WebKit::PingLoad::PingLoad):
     40        Use nullptr, indicating that the PingLoad constructor that is used in ad click attribution should not check the custom scheme registry.
     41        This is Ok because ad click attribution is only used for HTTP family schemes.
     42        (WebKit::m_blobFiles):
     43        * NetworkProcess/PingLoad.h:
     44        * Sources.txt:
     45        * UIProcess/WebProcessPool.cpp:
     46        (WebKit::WebProcessPool::ensureNetworkProcess):
     47        (WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):
     48        * WebKit.xcodeproj/project.pbxproj:
     49        * WebProcess/WebProcess.cpp:
     50        (WebKit::WebProcess::initializeWebProcess):
     51        (WebKit::WebProcess::registerURLSchemeAsCORSEnabled):
     52        (WebKit::WebProcess::ensureNetworkProcessConnection):
     53        (WebKit::WebProcess::registerURLSchemeAsCORSEnabled const): Deleted.
     54        * WebProcess/WebProcess.h:
     55
    1562019-10-15  Carlos Garcia Campos  <cgarcia@igalia.com>
    257
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp

    r251124 r251138  
    4343#include "NetworkResourceLoader.h"
    4444#include "NetworkResourceLoaderMessages.h"
     45#include "NetworkSchemeRegistry.h"
    4546#include "NetworkSession.h"
    4647#include "NetworkSocketChannel.h"
     
    9495#endif
    9596    , m_webProcessIdentifier(webProcessIdentifier)
     97    , m_schemeRegistry(NetworkSchemeRegistry::create())
    9698{
    9799    RELEASE_ASSERT(RunLoop::isMain());
     
    442444
    443445    // PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled.
    444     new PingLoad(*this, networkProcess(), WTFMove(loadParameters), WTFMove(completionHandler));
     446    new PingLoad(*this, WTFMove(loadParameters), WTFMove(completionHandler));
    445447}
    446448
     
    531533}
    532534
     535void NetworkConnectionToWebProcess::registerURLSchemesAsCORSEnabled(Vector<String>&& schemes)
     536{
     537    for (auto&& scheme : schemes)
     538        m_schemeRegistry->registerURLSchemeAsCORSEnabled(WTFMove(scheme));
     539}
     540
    533541void NetworkConnectionToWebProcess::cookiesForDOM(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<FrameIdentifier> frameID, Optional<PageIdentifier> pageID, IncludeSecureCookies includeSecureCookies, CompletionHandler<void(String cookieString, bool secureCookiesAccessed)>&& completionHandler)
    534542{
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h

    r251067 r251138  
    6363namespace WebKit {
    6464
     65class NetworkSchemeRegistry;
    6566class NetworkProcess;
    6667class NetworkResourceLoader;
     
    160161#endif
    161162
     163    NetworkSchemeRegistry& schemeRegistry() { return m_schemeRegistry.get(); }
     164
    162165private:
    163166    NetworkConnectionToWebProcess(NetworkProcess&, WebCore::ProcessIdentifier, PAL::SessionID, IPC::Connection::Identifier);
     
    188191    void startDownload(DownloadID, const WebCore::ResourceRequest&, const String& suggestedName = { });
    189192    void convertMainResourceLoadToDownload(uint64_t mainResourceLoadIdentifier, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
     193
     194    void registerURLSchemesAsCORSEnabled(Vector<String>&& schemes);
    190195
    191196    void cookiesForDOM(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, Optional<WebCore::FrameIdentifier>, Optional<WebCore::PageIdentifier>, WebCore::IncludeSecureCookies, CompletionHandler<void(String cookieString, bool secureCookiesAccessed)>&&);
     
    342347    HashSet<WebCore::MessagePortIdentifier> m_processEntangledPorts;
    343348    HashMap<uint64_t, Function<void()>> m_messageBatchDeliveryCompletionHandlers;
     349    Ref<NetworkSchemeRegistry> m_schemeRegistry;
    344350};
    345351
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in

    r251067 r251138  
    9393    CheckRemotePortForActivity(struct WebCore::MessagePortIdentifier port) -> (bool hasActivity) Async
    9494    DidDeliverMessagePortMessages(uint64_t messageBatchIdentifier)
     95    RegisterURLSchemesAsCORSEnabled(Vector<String> schemes);
    9596}
  • trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp

    r250738 r251138  
    3131#include "NetworkCORSPreflightChecker.h"
    3232#include "NetworkProcess.h"
     33#include "NetworkSchemeRegistry.h"
    3334#include <WebCore/ContentRuleListResults.h>
    3435#include <WebCore/ContentSecurityPolicy.h>
     
    4950}
    5051
    51 NetworkLoadChecker::NetworkLoadChecker(NetworkProcess& networkProcess, FetchOptions&& options, PAL::SessionID sessionID, WebPageProxyIdentifier webPageProxyID, HTTPHeaderMap&& originalRequestHeaders, URL&& url, RefPtr<SecurityOrigin>&& sourceOrigin, RefPtr<SecurityOrigin>&& topOrigin, PreflightPolicy preflightPolicy, String&& referrer, bool isHTTPSUpgradeEnabled, bool shouldCaptureExtraNetworkLoadMetrics, LoadType requestLoadType)
     52NetworkLoadChecker::NetworkLoadChecker(Ref<NetworkProcess>&& networkProcess, RefPtr<NetworkSchemeRegistry>&& schemeRegistry, FetchOptions&& options, PAL::SessionID sessionID, WebPageProxyIdentifier webPageProxyID, HTTPHeaderMap&& originalRequestHeaders, URL&& url, RefPtr<SecurityOrigin>&& sourceOrigin, RefPtr<SecurityOrigin>&& topOrigin, PreflightPolicy preflightPolicy, String&& referrer, bool isHTTPSUpgradeEnabled, bool shouldCaptureExtraNetworkLoadMetrics, LoadType requestLoadType)
    5253    : m_options(WTFMove(options))
    5354    , m_sessionID(sessionID)
    54     , m_networkProcess(networkProcess)
     55    , m_networkProcess(WTFMove(networkProcess))
    5556    , m_webPageProxyID(webPageProxyID)
    5657    , m_originalRequestHeaders(WTFMove(originalRequestHeaders))
     
    6364    , m_isHTTPSUpgradeEnabled(isHTTPSUpgradeEnabled)
    6465    , m_requestLoadType(requestLoadType)
     66    , m_schemeRegistry(WTFMove(schemeRegistry))
    6567{
    6668    m_isSameOriginRequest = isSameOrigin(m_url, m_origin.get());
     
    437439        return true;
    438440
    439     if (!LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(url.protocol().toStringWithoutCopying()))
     441    if (m_schemeRegistry && !m_schemeRegistry->shouldTreatURLSchemeAsCORSEnabled(url.protocol()))
    440442        return true;
    441443
  • trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h

    r250463 r251138  
    5151class NetworkCORSPreflightChecker;
    5252class NetworkProcess;
     53class NetworkSchemeRegistry;
    5354
    5455class NetworkLoadChecker : public CanMakeWeakPtr<NetworkLoadChecker> {
     
    5758    enum class LoadType : bool { MainFrame, Other };
    5859
    59     NetworkLoadChecker(NetworkProcess&, WebCore::FetchOptions&&, PAL::SessionID, WebPageProxyIdentifier, WebCore::HTTPHeaderMap&&, URL&&, RefPtr<WebCore::SecurityOrigin>&&, RefPtr<WebCore::SecurityOrigin>&& topOrigin, WebCore::PreflightPolicy, String&& referrer, bool isHTTPSUpgradeEnabled = false, bool shouldCaptureExtraNetworkLoadMetrics = false, LoadType requestLoadType = LoadType::Other);
     60    NetworkLoadChecker(Ref<NetworkProcess>&&, RefPtr<NetworkSchemeRegistry>&&, WebCore::FetchOptions&&, PAL::SessionID, WebPageProxyIdentifier, WebCore::HTTPHeaderMap&&, URL&&, RefPtr<WebCore::SecurityOrigin>&&, RefPtr<WebCore::SecurityOrigin>&& topOrigin, WebCore::PreflightPolicy, String&& referrer, bool isHTTPSUpgradeEnabled = false, bool shouldCaptureExtraNetworkLoadMetrics = false, LoadType requestLoadType = LoadType::Other);
    6061    ~NetworkLoadChecker();
    6162
     
    156157
    157158    LoadType m_requestLoadType;
     159    RefPtr<NetworkSchemeRegistry> m_schemeRegistry;
    158160};
    159161
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r251002 r251138  
    351351        registerURLSchemeAsNoAccess(scheme);
    352352
    353     for (auto& scheme : parameters.urlSchemesRegisteredAsCORSEnabled)
    354         registerURLSchemeAsCORSEnabled(scheme);
    355 
    356353    for (auto& scheme : parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest)
    357354        registerURLSchemeAsCanDisplayOnlyIfCanRequest(scheme);
     
    22222219}
    22232220
    2224 void NetworkProcess::registerURLSchemeAsCORSEnabled(const String& scheme) const
    2225 {
    2226     LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
    2227 }
    2228 
    22292221void NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String& scheme) const
    22302222{
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r251002 r251138  
    146146    RegisterURLSchemeAsLocal(String scheme)
    147147    RegisterURLSchemeAsNoAccess(String scheme)
    148     RegisterURLSchemeAsCORSEnabled(String scheme)
    149148    RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(String scheme)
    150149
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp

    r250739 r251138  
    7373    encoder << urlSchemesRegisteredAsLocal;
    7474    encoder << urlSchemesRegisteredAsNoAccess;
    75     encoder << urlSchemesRegisteredAsCORSEnabled;
    7675    encoder << urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
    7776
     
    160159    if (!decoder.decode(result.urlSchemesRegisteredAsNoAccess))
    161160        return false;
    162     if (!decoder.decode(result.urlSchemesRegisteredAsCORSEnabled))
    163         return false;
    164161    if (!decoder.decode(result.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest))
    165162        return false;
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h

    r250739 r251138  
    9191    Vector<String> urlSchemesRegisteredAsNoAccess;
    9292    Vector<String> urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
    93     Vector<String> urlSchemesRegisteredAsCORSEnabled;
    9493
    9594#if ENABLE(SERVICE_WORKER)
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r251126 r251138  
    112112    if (synchronousReply || parameters.shouldRestrictHTTPResponseAccess || parameters.options.keepAlive) {
    113113        NetworkLoadChecker::LoadType requestLoadType = isMainFrameLoad() ? NetworkLoadChecker::LoadType::MainFrame : NetworkLoadChecker::LoadType::Other;
    114         m_networkLoadChecker = makeUnique<NetworkLoadChecker>(connection.networkProcess(), FetchOptions { m_parameters.options }, sessionID(), m_parameters.webPageProxyID, HTTPHeaderMap { m_parameters.originalRequestHeaders }, URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.topOrigin.copyRef(), m_parameters.preflightPolicy, originalRequest().httpReferrer(), m_parameters.isHTTPSUpgradeEnabled, shouldCaptureExtraNetworkLoadMetrics(), requestLoadType);
     114        m_networkLoadChecker = makeUnique<NetworkLoadChecker>(connection.networkProcess(), &connection.schemeRegistry(), FetchOptions { m_parameters.options }, sessionID(), m_parameters.webPageProxyID, HTTPHeaderMap { m_parameters.originalRequestHeaders }, URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.topOrigin.copyRef(), m_parameters.preflightPolicy, originalRequest().httpReferrer(), m_parameters.isHTTPSUpgradeEnabled, shouldCaptureExtraNetworkLoadMetrics(), requestLoadType);
    115115        if (m_parameters.cspResponseHeaders)
    116116            m_networkLoadChecker->setCSPResponseHeaders(ContentSecurityPolicyResponseHeaders { m_parameters.cspResponseHeaders.value() });
  • trunk/Source/WebKit/NetworkProcess/PingLoad.cpp

    r250053 r251138  
    4646    , m_completionHandler(WTFMove(completionHandler))
    4747    , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
    48     , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(networkProcess, FetchOptions { m_parameters.options}, m_sessionID, m_parameters.webPageProxyID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.topOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
     48    , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(networkProcess, nullptr, FetchOptions { m_parameters.options}, m_sessionID, m_parameters.webPageProxyID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.topOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
    4949{
    5050    initialize(networkProcess);
    5151}
    5252
    53 PingLoad::PingLoad(NetworkConnectionToWebProcess& connection, NetworkProcess& networkProcess, NetworkResourceLoadParameters&& parameters, CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
     53PingLoad::PingLoad(NetworkConnectionToWebProcess& connection, NetworkResourceLoadParameters&& parameters, CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
    5454    : m_sessionID(connection.sessionID())
    5555    , m_parameters(WTFMove(parameters))
    5656    , m_completionHandler(WTFMove(completionHandler))
    5757    , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
    58     , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(networkProcess, FetchOptions { m_parameters.options}, m_sessionID, m_parameters.webPageProxyID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.topOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
     58    , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(connection.networkProcess(), &connection.schemeRegistry(), FetchOptions { m_parameters.options}, m_sessionID, m_parameters.webPageProxyID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.topOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
    5959    , m_blobFiles(connection.resolveBlobReferences(m_parameters))
    6060{
     
    6464    }
    6565
    66     initialize(networkProcess);
     66    initialize(connection.networkProcess());
    6767}
    6868
  • trunk/Source/WebKit/NetworkProcess/PingLoad.h

    r250053 r251138  
    3939class NetworkLoadChecker;
    4040class NetworkProcess;
     41class NetworkSchemeRegistry;
    4142
    4243class PingLoad final : public CanMakeWeakPtr<PingLoad>, private NetworkDataTaskClient {
    4344public:
    4445    PingLoad(NetworkProcess&, PAL::SessionID, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
    45     PingLoad(NetworkConnectionToWebProcess&, NetworkProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
     46    PingLoad(NetworkConnectionToWebProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
    4647
    4748private:
  • trunk/Source/WebKit/Sources.txt

    r251124 r251138  
    3838NetworkProcess/NetworkResourceLoadMap.cpp
    3939NetworkProcess/NetworkResourceLoader.cpp
     40NetworkProcess/NetworkSchemeRegistry.cpp
    4041NetworkProcess/NetworkSession.cpp
    4142NetworkProcess/NetworkSessionCreationParameters.cpp
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r251121 r251138  
    523523    parameters.urlSchemesRegisteredAsLocal = copyToVector(m_schemesToRegisterAsLocal);
    524524    parameters.urlSchemesRegisteredAsNoAccess = copyToVector(m_schemesToRegisterAsNoAccess);
    525     parameters.urlSchemesRegisteredAsCORSEnabled = copyToVector(m_schemesToRegisterAsCORSEnabled);
    526525    parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest = copyToVector(m_schemesToRegisterAsCanDisplayOnlyIfCanRequest);
    527526
     
    15311530    m_schemesToRegisterAsCORSEnabled.add(urlScheme);
    15321531    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
    1533     sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
    15341532}
    15351533
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r251124 r251138  
    35953595                58E977DC21C499FE005D92A6 /* NetworkHTTPSUpgradeChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkHTTPSUpgradeChecker.cpp; sourceTree = "<group>"; };
    35963596                58E977DD21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkHTTPSUpgradeChecker.h; sourceTree = "<group>"; };
     3597                5C0A10C1235241A30053E2CA /* NetworkSchemeRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkSchemeRegistry.cpp; sourceTree = "<group>"; };
    35973598                5C0B17741E7C879C00E9123C /* NetworkSocketStreamMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkSocketStreamMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkSocketStreamMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
    35983599                5C0B17751E7C879C00E9123C /* NetworkSocketStreamMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSocketStreamMessages.h; path = DerivedSources/WebKit2/NetworkSocketStreamMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
     
    36723673                5CA26D7F217ABBB600F97A35 /* WKSafeBrowsingWarning.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKSafeBrowsingWarning.mm; sourceTree = "<group>"; };
    36733674                5CA26D80217ABBB600F97A35 /* WKSafeBrowsingWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSafeBrowsingWarning.h; sourceTree = "<group>"; };
     3675                5CA2F7472350E15400BE5194 /* NetworkSchemeRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkSchemeRegistry.h; sourceTree = "<group>"; };
    36743676                5CA46E7A21F1A23900CE86B4 /* APIHTTPCookieStoreCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = APIHTTPCookieStoreCocoa.mm; path = UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm; sourceTree = SOURCE_ROOT; };
    36753677                5CA98549210BEB5A0057EB6B /* SafeBrowsingWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SafeBrowsingWarning.h; sourceTree = "<group>"; };
     
    67976799                                5C1426E51C23F80500D41183 /* NetworkResourceLoadParameters.cpp */,
    67986800                                5C1426E61C23F80500D41183 /* NetworkResourceLoadParameters.h */,
     6801                                5C0A10C1235241A30053E2CA /* NetworkSchemeRegistry.cpp */,
     6802                                5CA2F7472350E15400BE5194 /* NetworkSchemeRegistry.h */,
    67996803                                532159521DBAE6FC0054AA3C /* NetworkSession.cpp */,
    68006804                                5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */,
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r251121 r251138  
    371371
    372372    for (auto& scheme : parameters.urlSchemesRegisteredAsCORSEnabled)
    373         registerURLSchemeAsCORSEnabled(scheme);
     373        LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
    374374
    375375    for (auto& scheme : parameters.urlSchemesRegisteredAsAlwaysRevalidated)
     
    568568}
    569569
    570 void WebProcess::registerURLSchemeAsCORSEnabled(const String& urlScheme) const
     570void WebProcess::registerURLSchemeAsCORSEnabled(const String& urlScheme)
    571571{
    572572    LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(urlScheme);
     573    ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RegisterURLSchemesAsCORSEnabled({ urlScheme }), 0);
    573574}
    574575
     
    11811182        m_networkProcessConnection->setNetworkProcessAuditToken(WTFMove(connectionInfo.auditToken));
    11821183#endif
     1184        m_networkProcessConnection->connection().send(Messages::NetworkConnectionToWebProcess::RegisterURLSchemesAsCORSEnabled(WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled()), 0);
    11831185    }
    11841186   
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r251121 r251138  
    328328    void registerURLSchemeAsNoAccess(const String&) const;
    329329    void registerURLSchemeAsDisplayIsolated(const String&) const;
    330     void registerURLSchemeAsCORSEnabled(const String&) const;
     330    void registerURLSchemeAsCORSEnabled(const String&);
    331331    void registerURLSchemeAsAlwaysRevalidated(const String&) const;
    332332    void registerURLSchemeAsCachePartitioned(const String&) const;
  • trunk/Tools/ChangeLog

    r251132 r251138  
     12019-10-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global
     4        https://bugs.webkit.org/show_bug.cgi?id=202891
     5
     6        Reviewed by Youenn Fablet.
     7
     8        * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
     9        (-[SWMessageHandlerWithExpectedMessage userContentController:didReceiveScriptMessage:]):
     10        Use EXPECT_WK_STREQ so I can see what is going on on EWS.
     11
    1122019-10-15  Carlos Garcia Campos  <cgarcia@igalia.com>
    213
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm

    r251067 r251138  
    9595- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
    9696{
    97     EXPECT_TRUE([[message body] isEqualToString:expectedMessage]);
     97    EXPECT_WK_STREQ(message.body, expectedMessage);
    9898    done = true;
    9999}
Note: See TracChangeset for help on using the changeset viewer.