- Revision
- 230079
- Author
- you...@apple.com
- Date
- 2018-03-29 13:36:06 -0700 (Thu, 29 Mar 2018)
Log Message
Synchronize SecurityOrigin related scheme registries with NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184140
Reviewed by Chris Dumez.
Add syncing of scheme registries that are used by SecurityOrigin and ContentSecurityPolicy
so that we can properly use them in NetworkProcess as we do in WebProcess.
The registries that are not synced are:
- URLSchemeAsEmptyDocument
- URLSchemeDomainRelaxationForbidden
- URLSchemeAsCachePartitioned
- URLSchemeAsCanDisplayOnlyIfCanRequest
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::registerURLSchemeAsSecure const):
(WebKit::NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy const):
(WebKit::NetworkProcess::registerURLSchemeAsLocal const):
(WebKit::NetworkProcess::registerURLSchemeAsNoAccess const):
(WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const):
(WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const):
(WebKit::NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebKit::WebProcessPool::registerURLSchemeAsLocal):
(WebKit::WebProcessPool::registerURLSchemeAsNoAccess):
(WebKit::WebProcessPool::registerURLSchemeAsDisplayIsolated):
(WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):
(WebKit::WebProcessPool::registerURLSchemeAsCanDisplayOnlyIfCanRequest):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (230078 => 230079)
--- trunk/Source/WebKit/ChangeLog 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/ChangeLog 2018-03-29 20:36:06 UTC (rev 230079)
@@ -1,3 +1,43 @@
+2018-03-29 Youenn Fablet <you...@apple.com>
+
+ Synchronize SecurityOrigin related scheme registries with NetworkProcess
+ https://bugs.webkit.org/show_bug.cgi?id=184140
+
+ Reviewed by Chris Dumez.
+
+ Add syncing of scheme registries that are used by SecurityOrigin and ContentSecurityPolicy
+ so that we can properly use them in NetworkProcess as we do in WebProcess.
+ The registries that are not synced are:
+ - URLSchemeAsEmptyDocument
+ - URLSchemeDomainRelaxationForbidden
+ - URLSchemeAsCachePartitioned
+ - URLSchemeAsCanDisplayOnlyIfCanRequest
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::initializeNetworkProcess):
+ (WebKit::NetworkProcess::registerURLSchemeAsSecure const):
+ (WebKit::NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy const):
+ (WebKit::NetworkProcess::registerURLSchemeAsLocal const):
+ (WebKit::NetworkProcess::registerURLSchemeAsNoAccess const):
+ (WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const):
+ (WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const):
+ (WebKit::NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * NetworkProcess/NetworkProcessCreationParameters.cpp:
+ (WebKit::NetworkProcessCreationParameters::encode const):
+ (WebKit::NetworkProcessCreationParameters::decode):
+ * NetworkProcess/NetworkProcessCreationParameters.h:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::ensureNetworkProcess):
+ (WebKit::WebProcessPool::registerURLSchemeAsSecure):
+ (WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
+ (WebKit::WebProcessPool::registerURLSchemeAsLocal):
+ (WebKit::WebProcessPool::registerURLSchemeAsNoAccess):
+ (WebKit::WebProcessPool::registerURLSchemeAsDisplayIsolated):
+ (WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):
+ (WebKit::WebProcessPool::registerURLSchemeAsCanDisplayOnlyIfCanRequest):
+
2018-03-29 Brent Fulgham <bfulg...@apple.com>
REGRESSION(r229480): ERROR: Unhandled web process message 'WebCookieManager:SetHTTPCookieAcceptPolicy'
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (230078 => 230079)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2018-03-29 20:36:06 UTC (rev 230079)
@@ -67,6 +67,7 @@
#include <WebCore/PlatformCookieJar.h>
#include <WebCore/ResourceRequest.h>
#include <WebCore/RuntimeApplicationChecks.h>
+#include <WebCore/SchemeRegistry.h>
#include <WebCore/SecurityOriginData.h>
#include <WebCore/SecurityOriginHash.h>
#include <WebCore/Settings.h>
@@ -271,6 +272,27 @@
for (auto& supplement : m_supplements.values())
supplement->initialize(parameters);
+ for (auto& scheme : parameters.urlSchemesRegisteredAsSecure)
+ registerURLSchemeAsSecure(scheme);
+
+ for (auto& scheme : parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy)
+ registerURLSchemeAsBypassingContentSecurityPolicy(scheme);
+
+ for (auto& scheme : parameters.urlSchemesRegisteredAsLocal)
+ registerURLSchemeAsLocal(scheme);
+
+ for (auto& scheme : parameters.urlSchemesRegisteredAsNoAccess)
+ registerURLSchemeAsNoAccess(scheme);
+
+ for (auto& scheme : parameters.urlSchemesRegisteredAsDisplayIsolated)
+ registerURLSchemeAsDisplayIsolated(scheme);
+
+ for (auto& scheme : parameters.urlSchemesRegisteredAsCORSEnabled)
+ registerURLSchemeAsCORSEnabled(scheme);
+
+ for (auto& scheme : parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest)
+ registerURLSchemeAsCanDisplayOnlyIfCanRequest(scheme);
+
RELEASE_LOG(Process, "%p - NetworkProcess::initializeNetworkProcess: Presenting process = %d", this, WebCore::presentingApplicationPID());
}
@@ -866,6 +888,41 @@
return m_cacheStoragePerOriginQuota;
}
+void NetworkProcess::registerURLSchemeAsSecure(const String& scheme) const
+{
+ SchemeRegistry::registerURLSchemeAsSecure(scheme);
+}
+
+void NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy(const String& scheme) const
+{
+ SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy(scheme);
+}
+
+void NetworkProcess::registerURLSchemeAsLocal(const String& scheme) const
+{
+ SchemeRegistry::registerURLSchemeAsLocal(scheme);
+}
+
+void NetworkProcess::registerURLSchemeAsNoAccess(const String& scheme) const
+{
+ SchemeRegistry::registerURLSchemeAsNoAccess(scheme);
+}
+
+void NetworkProcess::registerURLSchemeAsDisplayIsolated(const String& scheme) const
+{
+ SchemeRegistry::registerURLSchemeAsDisplayIsolated(scheme);
+}
+
+void NetworkProcess::registerURLSchemeAsCORSEnabled(const String& scheme) const
+{
+ SchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
+}
+
+void NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String& scheme) const
+{
+ SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest(scheme);
+}
+
#if !PLATFORM(COCOA)
void NetworkProcess::initializeProcess(const ChildProcessInitializationParameters&)
{
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (230078 => 230079)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2018-03-29 20:36:06 UTC (rev 230079)
@@ -240,6 +240,14 @@
static void setSharedHTTPCookieStorage(const Vector<uint8_t>& identifier);
#endif
+ void registerURLSchemeAsSecure(const String&) const;
+ void registerURLSchemeAsBypassingContentSecurityPolicy(const String&) const;
+ void registerURLSchemeAsLocal(const String&) const;
+ void registerURLSchemeAsNoAccess(const String&) const;
+ void registerURLSchemeAsDisplayIsolated(const String&) const;
+ void registerURLSchemeAsCORSEnabled(const String&) const;
+ void registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String&) const;
+
// Connections to WebProcesses.
Vector<RefPtr<NetworkConnectionToWebProcess>> m_webProcessConnections;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (230078 => 230079)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2018-03-29 20:36:06 UTC (rev 230079)
@@ -91,4 +91,12 @@
#endif
SetSessionIsControlledByAutomation(PAL::SessionID sessionID, bool controlled);
+
+ RegisterURLSchemeAsSecure(String scheme)
+ RegisterURLSchemeAsBypassingContentSecurityPolicy(String scheme)
+ RegisterURLSchemeAsLocal(String scheme)
+ RegisterURLSchemeAsNoAccess(String scheme)
+ RegisterURLSchemeAsDisplayIsolated(String scheme)
+ RegisterURLSchemeAsCORSEnabled(String scheme)
+ RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(String scheme)
}
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (230078 => 230079)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2018-03-29 20:36:06 UTC (rev 230079)
@@ -107,6 +107,14 @@
encoder << recordReplayMode;
encoder << recordReplayCacheLocation;
#endif
+
+ encoder << urlSchemesRegisteredAsSecure;
+ encoder << urlSchemesRegisteredAsBypassingContentSecurityPolicy;
+ encoder << urlSchemesRegisteredAsLocal;
+ encoder << urlSchemesRegisteredAsNoAccess;
+ encoder << urlSchemesRegisteredAsDisplayIsolated;
+ encoder << urlSchemesRegisteredAsCORSEnabled;
+ encoder << urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
}
bool NetworkProcessCreationParameters::decode(IPC::Decoder& decoder, NetworkProcessCreationParameters& result)
@@ -252,6 +260,21 @@
return false;
#endif
+ if (!decoder.decode(result.urlSchemesRegisteredAsSecure))
+ return false;
+ if (!decoder.decode(result.urlSchemesRegisteredAsBypassingContentSecurityPolicy))
+ return false;
+ if (!decoder.decode(result.urlSchemesRegisteredAsLocal))
+ return false;
+ if (!decoder.decode(result.urlSchemesRegisteredAsNoAccess))
+ return false;
+ if (!decoder.decode(result.urlSchemesRegisteredAsDisplayIsolated))
+ return false;
+ if (!decoder.decode(result.urlSchemesRegisteredAsCORSEnabled))
+ return false;
+ if (!decoder.decode(result.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest))
+ return false;
+
return true;
}
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (230078 => 230079)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2018-03-29 20:36:06 UTC (rev 230079)
@@ -124,6 +124,14 @@
String recordReplayMode;
String recordReplayCacheLocation;
#endif
+
+ Vector<String> urlSchemesRegisteredAsSecure;
+ Vector<String> urlSchemesRegisteredAsBypassingContentSecurityPolicy;
+ Vector<String> urlSchemesRegisteredAsLocal;
+ Vector<String> urlSchemesRegisteredAsNoAccess;
+ Vector<String> urlSchemesRegisteredAsDisplayIsolated;
+ Vector<String> urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
+ Vector<String> urlSchemesRegisteredAsCORSEnabled;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (230078 => 230079)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2018-03-29 19:09:01 UTC (rev 230078)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2018-03-29 20:36:06 UTC (rev 230079)
@@ -483,6 +483,14 @@
parameters.shouldUseTestingNetworkSession = m_shouldUseTestingNetworkSession;
parameters.presentingApplicationPID = m_configuration->presentingApplicationPID();
+ parameters.urlSchemesRegisteredAsSecure = copyToVector(m_schemesToRegisterAsSecure);
+ parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy = copyToVector(m_schemesToRegisterAsBypassingContentSecurityPolicy);
+ parameters.urlSchemesRegisteredAsLocal = copyToVector(m_schemesToRegisterAsLocal);
+ parameters.urlSchemesRegisteredAsNoAccess = copyToVector(m_schemesToRegisterAsNoAccess);
+ parameters.urlSchemesRegisteredAsDisplayIsolated = copyToVector(m_schemesToRegisterAsDisplayIsolated);
+ parameters.urlSchemesRegisteredAsCORSEnabled = copyToVector(m_schemesToRegisterAsCORSEnabled);
+ parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest = copyToVector(m_schemesToRegisterAsCanDisplayOnlyIfCanRequest);
+
// Add any platform specific parameters
platformInitializeNetworkProcess(parameters);
@@ -1293,6 +1301,7 @@
{
m_schemesToRegisterAsSecure.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsSecure(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsSecure(urlScheme));
}
void WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy(const String& urlScheme)
@@ -1299,6 +1308,7 @@
{
m_schemesToRegisterAsBypassingContentSecurityPolicy.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme));
}
void WebProcessPool::setDomainRelaxationForbiddenForURLScheme(const String& urlScheme)
@@ -1328,6 +1338,7 @@
{
m_schemesToRegisterAsLocal.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsLocal(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsLocal(urlScheme));
}
void WebProcessPool::registerURLSchemeAsNoAccess(const String& urlScheme)
@@ -1334,6 +1345,7 @@
{
m_schemesToRegisterAsNoAccess.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsNoAccess(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsNoAccess(urlScheme));
}
void WebProcessPool::registerURLSchemeAsDisplayIsolated(const String& urlScheme)
@@ -1340,6 +1352,7 @@
{
m_schemesToRegisterAsDisplayIsolated.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsDisplayIsolated(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsDisplayIsolated(urlScheme));
}
void WebProcessPool::registerURLSchemeAsCORSEnabled(const String& urlScheme)
@@ -1346,6 +1359,7 @@
{
m_schemesToRegisterAsCORSEnabled.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
}
void WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers(const String& urlScheme)
@@ -1386,6 +1400,7 @@
{
m_schemesToRegisterAsCanDisplayOnlyIfCanRequest.add(urlScheme);
sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(urlScheme));
+ sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(urlScheme));
}
void WebProcessPool::setCacheModel(CacheModel cacheModel)