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