Title: [251138] trunk
Revision
251138
Author
achristen...@apple.com
Date
2019-10-15 09:09:55 -0700 (Tue, 15 Oct 2019)

Log 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.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (251137 => 251138)


--- trunk/Source/WebCore/ChangeLog	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebCore/ChangeLog	2019-10-15 16:09:55 UTC (rev 251138)
@@ -1,3 +1,16 @@
+2019-10-15  Alex Christensen  <achristen...@webkit.org>
+
+        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.
+
+        * platform/LegacySchemeRegistry.cpp:
+        (WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):
+        (WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
+        (WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled):
+        * platform/LegacySchemeRegistry.h:
+
 2019-10-15  Zalan Bujtas  <za...@apple.com>
 
         [LFC] Adjust computed width value when box sizing is border-box

Modified: trunk/Source/WebCore/platform/LegacySchemeRegistry.cpp (251137 => 251138)


--- trunk/Source/WebCore/platform/LegacySchemeRegistry.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebCore/platform/LegacySchemeRegistry.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "LegacySchemeRegistry.h"
 
+#include "RuntimeApplicationChecks.h"
 #include <wtf/Lock.h>
 #include <wtf/Locker.h>
 #include <wtf/MainThread.h>
@@ -421,6 +422,7 @@
 
 void LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(const String& scheme)
 {
+    ASSERT(!isInNetworkProcess());
     if (scheme.isNull())
         return;
     CORSEnabledSchemes().add(scheme);
@@ -428,9 +430,16 @@
 
 bool LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(const String& scheme)
 {
+    ASSERT(!isInNetworkProcess());
     return !scheme.isNull() && CORSEnabledSchemes().contains(scheme);
 }
 
+Vector<String> LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled()
+{
+    ASSERT(!isInNetworkProcess());
+    return copyToVector(CORSEnabledSchemes());
+}
+
 void LegacySchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy(const String& scheme)
 {
     if (scheme.isNull())

Modified: trunk/Source/WebCore/platform/LegacySchemeRegistry.h (251137 => 251138)


--- trunk/Source/WebCore/platform/LegacySchemeRegistry.h	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebCore/platform/LegacySchemeRegistry.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -81,6 +81,7 @@
     // Allow non-HTTP schemes to be registered to allow CORS requests.
     WEBCORE_EXPORT static void registerURLSchemeAsCORSEnabled(const String& scheme);
     WEBCORE_EXPORT static bool shouldTreatURLSchemeAsCORSEnabled(const String& scheme);
+    WEBCORE_EXPORT static Vector<String> allURLSchemesRegisteredAsCORSEnabled();
 
     // Allow resources from some schemes to load on a page, regardless of its
     // Content Security Policy.

Modified: trunk/Source/WebKit/ChangeLog (251137 => 251138)


--- trunk/Source/WebKit/ChangeLog	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/ChangeLog	2019-10-15 16:09:55 UTC (rev 251138)
@@ -1,3 +1,58 @@
+2019-10-15  Alex Christensen  <achristen...@webkit.org>
+
+        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.
+
+        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:
+
 2019-10-15  Carlos Garcia Campos  <cgar...@igalia.com>
 
         Unreviewed. Fix several GTK tests in /WebKit2Gtk/TestUIClient crashing since r241988

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -42,6 +42,7 @@
 #include "NetworkResourceLoadParameters.h"
 #include "NetworkResourceLoader.h"
 #include "NetworkResourceLoaderMessages.h"
+#include "NetworkSchemeRegistry.h"
 #include "NetworkSession.h"
 #include "NetworkSocketChannel.h"
 #include "NetworkSocketChannelMessages.h"
@@ -93,6 +94,7 @@
     , m_mdnsRegister(*this)
 #endif
     , m_webProcessIdentifier(webProcessIdentifier)
+    , m_schemeRegistry(NetworkSchemeRegistry::create())
 {
     RELEASE_ASSERT(RunLoop::isMain());
 
@@ -441,7 +443,7 @@
     };
 
     // PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled.
-    new PingLoad(*this, networkProcess(), WTFMove(loadParameters), WTFMove(completionHandler));
+    new PingLoad(*this, WTFMove(loadParameters), WTFMove(completionHandler));
 }
 
 void NetworkConnectionToWebProcess::setOnLineState(bool isOnLine)
@@ -530,6 +532,12 @@
     loader->convertToDownload(downloadID, request, response);
 }
 
+void NetworkConnectionToWebProcess::registerURLSchemesAsCORSEnabled(Vector<String>&& schemes)
+{
+    for (auto&& scheme : schemes)
+        m_schemeRegistry->registerURLSchemeAsCORSEnabled(WTFMove(scheme));
+}
+
 void 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)
 {
     auto* networkStorageSession = storageSession();

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -62,6 +62,7 @@
 
 namespace WebKit {
 
+class NetworkSchemeRegistry;
 class NetworkProcess;
 class NetworkResourceLoader;
 class NetworkSession;
@@ -159,6 +160,8 @@
     void serverToContextConnectionNoLongerNeeded();
 #endif
 
+    NetworkSchemeRegistry& schemeRegistry() { return m_schemeRegistry.get(); }
+
 private:
     NetworkConnectionToWebProcess(NetworkProcess&, WebCore::ProcessIdentifier, PAL::SessionID, IPC::Connection::Identifier);
 
@@ -188,6 +191,8 @@
     void startDownload(DownloadID, const WebCore::ResourceRequest&, const String& suggestedName = { });
     void convertMainResourceLoadToDownload(uint64_t mainResourceLoadIdentifier, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
 
+    void registerURLSchemesAsCORSEnabled(Vector<String>&& schemes);
+
     void cookiesForDOM(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, Optional<WebCore::FrameIdentifier>, Optional<WebCore::PageIdentifier>, WebCore::IncludeSecureCookies, CompletionHandler<void(String cookieString, bool secureCookiesAccessed)>&&);
     void setCookiesFromDOM(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, Optional<WebCore::FrameIdentifier>, Optional<WebCore::PageIdentifier>, const String&);
     void cookiesEnabled(CompletionHandler<void(bool)>&&);
@@ -341,6 +346,7 @@
 
     HashSet<WebCore::MessagePortIdentifier> m_processEntangledPorts;
     HashMap<uint64_t, Function<void()>> m_messageBatchDeliveryCompletionHandlers;
+    Ref<NetworkSchemeRegistry> m_schemeRegistry;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2019-10-15 16:09:55 UTC (rev 251138)
@@ -92,4 +92,5 @@
     PostMessageToRemote(struct WebCore::MessageWithMessagePorts message, struct WebCore::MessagePortIdentifier remote)
     CheckRemotePortForActivity(struct WebCore::MessagePortIdentifier port) -> (bool hasActivity) Async
     DidDeliverMessagePortMessages(uint64_t messageBatchIdentifier)
+    RegisterURLSchemesAsCORSEnabled(Vector<String> schemes);
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -30,6 +30,7 @@
 #include "Logging.h"
 #include "NetworkCORSPreflightChecker.h"
 #include "NetworkProcess.h"
+#include "NetworkSchemeRegistry.h"
 #include <WebCore/ContentRuleListResults.h>
 #include <WebCore/ContentSecurityPolicy.h>
 #include <WebCore/CrossOriginAccessControl.h>
@@ -48,10 +49,10 @@
     return url.protocolIsData() || url.protocolIsBlob() || !origin || origin->canRequest(url);
 }
 
-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)
+NetworkLoadChecker::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)
     : m_options(WTFMove(options))
     , m_sessionID(sessionID)
-    , m_networkProcess(networkProcess)
+    , m_networkProcess(WTFMove(networkProcess))
     , m_webPageProxyID(webPageProxyID)
     , m_originalRequestHeaders(WTFMove(originalRequestHeaders))
     , m_url(WTFMove(url))
@@ -62,6 +63,7 @@
     , m_shouldCaptureExtraNetworkLoadMetrics(shouldCaptureExtraNetworkLoadMetrics)
     , m_isHTTPSUpgradeEnabled(isHTTPSUpgradeEnabled)
     , m_requestLoadType(requestLoadType)
+    , m_schemeRegistry(WTFMove(schemeRegistry))
 {
     m_isSameOriginRequest = isSameOrigin(m_url, m_origin.get());
     switch (options.credentials) {
@@ -436,7 +438,7 @@
     if (m_options.mode == FetchOptions::Mode::NoCors || m_options.mode == FetchOptions::Mode::Navigate)
         return true;
 
-    if (!LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(url.protocol().toStringWithoutCopying()))
+    if (m_schemeRegistry && !m_schemeRegistry->shouldTreatURLSchemeAsCORSEnabled(url.protocol()))
         return true;
 
     return m_isSameOriginRequest;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -50,6 +50,7 @@
 
 class NetworkCORSPreflightChecker;
 class NetworkProcess;
+class NetworkSchemeRegistry;
 
 class NetworkLoadChecker : public CanMakeWeakPtr<NetworkLoadChecker> {
     WTF_MAKE_FAST_ALLOCATED;
@@ -56,7 +57,7 @@
 public:
     enum class LoadType : bool { MainFrame, Other };
 
-    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);
+    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);
     ~NetworkLoadChecker();
 
     struct RedirectionTriplet {
@@ -155,6 +156,7 @@
     WebCore::NetworkLoadInformation m_loadInformation;
 
     LoadType m_requestLoadType;
+    RefPtr<NetworkSchemeRegistry> m_schemeRegistry;
 };
 
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -350,9 +350,6 @@
     for (auto& scheme : parameters.urlSchemesRegisteredAsNoAccess)
         registerURLSchemeAsNoAccess(scheme);
 
-    for (auto& scheme : parameters.urlSchemesRegisteredAsCORSEnabled)
-        registerURLSchemeAsCORSEnabled(scheme);
-
     for (auto& scheme : parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest)
         registerURLSchemeAsCanDisplayOnlyIfCanRequest(scheme);
     
@@ -2221,11 +2218,6 @@
     LegacySchemeRegistry::registerURLSchemeAsNoAccess(scheme);
 }
 
-void NetworkProcess::registerURLSchemeAsCORSEnabled(const String& scheme) const
-{
-    LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
-}
-
 void NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String& scheme) const
 {
     LegacySchemeRegistry::registerAsCanDisplayOnlyIfCanRequest(scheme);

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2019-10-15 16:09:55 UTC (rev 251138)
@@ -145,7 +145,6 @@
     RegisterURLSchemeAsBypassingContentSecurityPolicy(String scheme)
     RegisterURLSchemeAsLocal(String scheme)
     RegisterURLSchemeAsNoAccess(String scheme)
-    RegisterURLSchemeAsCORSEnabled(String scheme)
     RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(String scheme)
 
     SetCacheStorageParameters(PAL::SessionID sessionID, String cacheStorageDirectory, WebKit::SandboxExtension::Handle handle);

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -72,7 +72,6 @@
     encoder << urlSchemesRegisteredAsBypassingContentSecurityPolicy;
     encoder << urlSchemesRegisteredAsLocal;
     encoder << urlSchemesRegisteredAsNoAccess;
-    encoder << urlSchemesRegisteredAsCORSEnabled;
     encoder << urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
 
 #if ENABLE(SERVICE_WORKER)
@@ -159,8 +158,6 @@
         return false;
     if (!decoder.decode(result.urlSchemesRegisteredAsNoAccess))
         return false;
-    if (!decoder.decode(result.urlSchemesRegisteredAsCORSEnabled))
-        return false;
     if (!decoder.decode(result.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest))
         return false;
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -90,7 +90,6 @@
     Vector<String> urlSchemesRegisteredAsLocal;
     Vector<String> urlSchemesRegisteredAsNoAccess;
     Vector<String> urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
-    Vector<String> urlSchemesRegisteredAsCORSEnabled;
 
 #if ENABLE(SERVICE_WORKER)
     String serviceWorkerRegistrationDirectory;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -111,7 +111,7 @@
 
     if (synchronousReply || parameters.shouldRestrictHTTPResponseAccess || parameters.options.keepAlive) {
         NetworkLoadChecker::LoadType requestLoadType = isMainFrameLoad() ? NetworkLoadChecker::LoadType::MainFrame : NetworkLoadChecker::LoadType::Other;
-        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);
+        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);
         if (m_parameters.cspResponseHeaders)
             m_networkLoadChecker->setCSPResponseHeaders(ContentSecurityPolicyResponseHeaders { m_parameters.cspResponseHeaders.value() });
 #if ENABLE(CONTENT_EXTENSIONS)

Added: trunk/Source/WebKit/NetworkProcess/NetworkSchemeRegistry.cpp (0 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkSchemeRegistry.cpp	                        (rev 0)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSchemeRegistry.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "NetworkSchemeRegistry.h"
+
+namespace WebKit {
+
+void NetworkSchemeRegistry::registerURLSchemeAsCORSEnabled(String&& scheme)
+{
+    m_corsEnabledSchemes.add(WTFMove(scheme));
+}
+
+bool NetworkSchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(StringView scheme)
+{
+    return m_corsEnabledSchemes.contains(scheme.toStringWithoutCopying());
+}
+
+} // namespace WebKit

Added: trunk/Source/WebKit/NetworkProcess/NetworkSchemeRegistry.h (0 => 251138)


--- trunk/Source/WebKit/NetworkProcess/NetworkSchemeRegistry.h	                        (rev 0)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSchemeRegistry.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/HashSet.h>
+#include <wtf/RefCounted.h>
+#include <wtf/text/StringHash.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebKit {
+
+class NetworkSchemeRegistry : public RefCounted<NetworkSchemeRegistry> {
+public:
+    static Ref<NetworkSchemeRegistry> create() { return adoptRef(*new NetworkSchemeRegistry); }
+
+    // Allow non-HTTP schemes to be registered to allow CORS requests.
+    void registerURLSchemeAsCORSEnabled(String&& scheme);
+    bool shouldTreatURLSchemeAsCORSEnabled(StringView scheme);
+
+private:
+    using URLSchemes = HashSet<String, ASCIICaseInsensitiveHash>;
+    URLSchemes m_corsEnabledSchemes;
+};
+
+} // namespace WebKit

Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.cpp (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/PingLoad.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -45,17 +45,17 @@
     , m_parameters(WTFMove(parameters))
     , m_completionHandler(WTFMove(completionHandler))
     , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
-    , 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()))
+    , 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()))
 {
     initialize(networkProcess);
 }
 
-PingLoad::PingLoad(NetworkConnectionToWebProcess& connection, NetworkProcess& networkProcess, NetworkResourceLoadParameters&& parameters, CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
+PingLoad::PingLoad(NetworkConnectionToWebProcess& connection, NetworkResourceLoadParameters&& parameters, CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
     : m_sessionID(connection.sessionID())
     , m_parameters(WTFMove(parameters))
     , m_completionHandler(WTFMove(completionHandler))
     , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
-    , 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()))
+    , 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()))
     , m_blobFiles(connection.resolveBlobReferences(m_parameters))
 {
     for (auto& file : m_blobFiles) {
@@ -63,7 +63,7 @@
             file->prepareForFileAccess();
     }
 
-    initialize(networkProcess);
+    initialize(connection.networkProcess());
 }
 
 void PingLoad::initialize(NetworkProcess& networkProcess)

Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.h (251137 => 251138)


--- trunk/Source/WebKit/NetworkProcess/PingLoad.h	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -38,11 +38,12 @@
 class NetworkConnectionToWebProcess;
 class NetworkLoadChecker;
 class NetworkProcess;
+class NetworkSchemeRegistry;
 
 class PingLoad final : public CanMakeWeakPtr<PingLoad>, private NetworkDataTaskClient {
 public:
     PingLoad(NetworkProcess&, PAL::SessionID, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
-    PingLoad(NetworkConnectionToWebProcess&, NetworkProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
+    PingLoad(NetworkConnectionToWebProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
 
 private:
     ~PingLoad();

Modified: trunk/Source/WebKit/Sources.txt (251137 => 251138)


--- trunk/Source/WebKit/Sources.txt	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/Sources.txt	2019-10-15 16:09:55 UTC (rev 251138)
@@ -37,6 +37,7 @@
 NetworkProcess/NetworkResourceLoadParameters.cpp
 NetworkProcess/NetworkResourceLoadMap.cpp
 NetworkProcess/NetworkResourceLoader.cpp
+NetworkProcess/NetworkSchemeRegistry.cpp
 NetworkProcess/NetworkSession.cpp
 NetworkProcess/NetworkSessionCreationParameters.cpp
 NetworkProcess/NetworkSocketChannel.cpp

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (251137 => 251138)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -522,7 +522,6 @@
     parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy = copyToVector(m_schemesToRegisterAsBypassingContentSecurityPolicy);
     parameters.urlSchemesRegisteredAsLocal = copyToVector(m_schemesToRegisterAsLocal);
     parameters.urlSchemesRegisteredAsNoAccess = copyToVector(m_schemesToRegisterAsNoAccess);
-    parameters.urlSchemesRegisteredAsCORSEnabled = copyToVector(m_schemesToRegisterAsCORSEnabled);
     parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest = copyToVector(m_schemesToRegisterAsCanDisplayOnlyIfCanRequest);
 
 #if ENABLE(INDEXED_DATABASE)
@@ -1530,7 +1529,6 @@
 {
     m_schemesToRegisterAsCORSEnabled.add(urlScheme);
     sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
-    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
 }
 
 void WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers(const String& urlScheme)

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (251137 => 251138)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2019-10-15 16:09:55 UTC (rev 251138)
@@ -3594,6 +3594,7 @@
 		587743A421C30AD800AE9084 /* HTTPSUpgradeList.db */ = {isa = PBXFileReference; lastKnownFileType = file; name = HTTPSUpgradeList.db; path = DerivedSources/WebKit2/HTTPSUpgradeList.db; sourceTree = BUILT_PRODUCTS_DIR; };
 		58E977DC21C499FE005D92A6 /* NetworkHTTPSUpgradeChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkHTTPSUpgradeChecker.cpp; sourceTree = "<group>"; };
 		58E977DD21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkHTTPSUpgradeChecker.h; sourceTree = "<group>"; };
+		5C0A10C1235241A30053E2CA /* NetworkSchemeRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkSchemeRegistry.cpp; sourceTree = "<group>"; };
 		5C0B17741E7C879C00E9123C /* NetworkSocketStreamMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkSocketStreamMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkSocketStreamMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
 		5C0B17751E7C879C00E9123C /* NetworkSocketStreamMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSocketStreamMessages.h; path = DerivedSources/WebKit2/NetworkSocketStreamMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
 		5C0B17761E7C879C00E9123C /* WebSocketStreamMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketStreamMessageReceiver.cpp; path = DerivedSources/WebKit2/WebSocketStreamMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -3671,6 +3672,7 @@
 		5C9EF2E721F058F9003BDC56 /* NetworkStorageSessionProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStorageSessionProvider.h; sourceTree = "<group>"; };
 		5CA26D7F217ABBB600F97A35 /* WKSafeBrowsingWarning.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKSafeBrowsingWarning.mm; sourceTree = "<group>"; };
 		5CA26D80217ABBB600F97A35 /* WKSafeBrowsingWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSafeBrowsingWarning.h; sourceTree = "<group>"; };
+		5CA2F7472350E15400BE5194 /* NetworkSchemeRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkSchemeRegistry.h; sourceTree = "<group>"; };
 		5CA46E7A21F1A23900CE86B4 /* APIHTTPCookieStoreCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = APIHTTPCookieStoreCocoa.mm; path = UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm; sourceTree = SOURCE_ROOT; };
 		5CA98549210BEB5A0057EB6B /* SafeBrowsingWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SafeBrowsingWarning.h; sourceTree = "<group>"; };
 		5CA9854B210BEB730057EB6B /* SafeBrowsingWarningCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SafeBrowsingWarningCocoa.mm; sourceTree = "<group>"; };
@@ -6796,6 +6798,8 @@
 				51240EBE220B6947005CFC63 /* NetworkResourceLoadMap.h */,
 				5C1426E51C23F80500D41183 /* NetworkResourceLoadParameters.cpp */,
 				5C1426E61C23F80500D41183 /* NetworkResourceLoadParameters.h */,
+				5C0A10C1235241A30053E2CA /* NetworkSchemeRegistry.cpp */,
+				5CA2F7472350E15400BE5194 /* NetworkSchemeRegistry.h */,
 				532159521DBAE6FC0054AA3C /* NetworkSession.cpp */,
 				5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */,
 				5C89DF5621AF61FF004645E8 /* NetworkSessionCreationParameters.cpp */,

Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (251137 => 251138)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2019-10-15 16:09:55 UTC (rev 251138)
@@ -370,7 +370,7 @@
         registerURLSchemeAsDisplayIsolated(scheme);
 
     for (auto& scheme : parameters.urlSchemesRegisteredAsCORSEnabled)
-        registerURLSchemeAsCORSEnabled(scheme);
+        LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
 
     for (auto& scheme : parameters.urlSchemesRegisteredAsAlwaysRevalidated)
         registerURLSchemeAsAlwaysRevalidated(scheme);
@@ -567,9 +567,10 @@
     LegacySchemeRegistry::registerURLSchemeAsDisplayIsolated(urlScheme);
 }
 
-void WebProcess::registerURLSchemeAsCORSEnabled(const String& urlScheme) const
+void WebProcess::registerURLSchemeAsCORSEnabled(const String& urlScheme)
 {
     LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(urlScheme);
+    ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RegisterURLSchemesAsCORSEnabled({ urlScheme }), 0);
 }
 
 void WebProcess::registerURLSchemeAsAlwaysRevalidated(const String& urlScheme) const
@@ -1180,6 +1181,7 @@
 #if HAVE(AUDIT_TOKEN)
         m_networkProcessConnection->setNetworkProcessAuditToken(WTFMove(connectionInfo.auditToken));
 #endif
+        m_networkProcessConnection->connection().send(Messages::NetworkConnectionToWebProcess::RegisterURLSchemesAsCORSEnabled(WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled()), 0);
     }
     
     return *m_networkProcessConnection;

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (251137 => 251138)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2019-10-15 16:09:55 UTC (rev 251138)
@@ -327,7 +327,7 @@
     void registerURLSchemeAsLocal(const String&) const;
     void registerURLSchemeAsNoAccess(const String&) const;
     void registerURLSchemeAsDisplayIsolated(const String&) const;
-    void registerURLSchemeAsCORSEnabled(const String&) const;
+    void registerURLSchemeAsCORSEnabled(const String&);
     void registerURLSchemeAsAlwaysRevalidated(const String&) const;
     void registerURLSchemeAsCachePartitioned(const String&) const;
     void registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String&) const;

Modified: trunk/Tools/ChangeLog (251137 => 251138)


--- trunk/Tools/ChangeLog	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Tools/ChangeLog	2019-10-15 16:09:55 UTC (rev 251138)
@@ -1,3 +1,14 @@
+2019-10-15  Alex Christensen  <achristen...@webkit.org>
+
+        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.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
+        (-[SWMessageHandlerWithExpectedMessage userContentController:didReceiveScriptMessage:]):
+        Use EXPECT_WK_STREQ so I can see what is going on on EWS.
+
 2019-10-15  Carlos Garcia Campos  <cgar...@igalia.com>
 
         Unreviewed. Fix several GTK tests in /WebKit2Gtk/TestUIClient crashing since r241988

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm (251137 => 251138)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm	2019-10-15 15:09:04 UTC (rev 251137)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm	2019-10-15 16:09:55 UTC (rev 251138)
@@ -94,7 +94,7 @@
 @implementation SWMessageHandlerWithExpectedMessage
 - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
 {
-    EXPECT_TRUE([[message body] isEqualToString:expectedMessage]);
+    EXPECT_WK_STREQ(message.body, expectedMessage);
     done = true;
 }
 @end
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to