https://bugs.webkit.org/show_bug.cgi?id=202327
Reviewed by Tim Horton.
Source/WebKit:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::ensureSession):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
* NetworkProcess/NetworkSessionCreationParameters.cpp:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* NetworkProcess/NetworkSessionCreationParameters.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:
(WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota):
(WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled):
(WKWebsiteDataStoreConfigurationGetTestingSessionEnabled):
(WKWebsiteDataStoreConfigurationSetTestingSessionEnabled):
* UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy):
* UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::testingSessionEnabled const):
(WebKit::WebsiteDataStoreConfiguration::setTestingSessionEnabled):
Tools:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::websiteDataStore):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250458
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
2019-09-27 Alex Christensen <achristensen@webkit.org>
+ Move shouldUseTestingNetworkSession from NetworkProcessCreationParameters to NetworkSessionCreationParameters
+ https://bugs.webkit.org/show_bug.cgi?id=202327
+
+ Reviewed by Tim Horton.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::initializeNetworkProcess):
+ (WebKit::NetworkProcess::ensureSession):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcessCreationParameters.cpp:
+ (WebKit::NetworkProcessCreationParameters::encode const):
+ (WebKit::NetworkProcessCreationParameters::decode):
+ * NetworkProcess/NetworkProcessCreationParameters.h:
+ * NetworkProcess/NetworkSession.cpp:
+ (WebKit::NetworkSession::NetworkSession):
+ * NetworkProcess/NetworkSessionCreationParameters.cpp:
+ (WebKit::NetworkSessionCreationParameters::encode const):
+ (WebKit::NetworkSessionCreationParameters::decode):
+ * NetworkProcess/NetworkSessionCreationParameters.h:
+ * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+ (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+ * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
+ (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
+ * NetworkProcess/mac/RemoteNetworkingContext.mm:
+ (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
+ * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
+ (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
+ * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:
+ (WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota):
+ (WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled):
+ (WKWebsiteDataStoreConfigurationGetTestingSessionEnabled):
+ (WKWebsiteDataStoreConfigurationSetTestingSessionEnabled):
+ * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::ensureNetworkProcess):
+ * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
+ (WebKit::WebsiteDataStore::parameters):
+ * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
+ (WebKit::WebsiteDataStoreConfiguration::copy):
+ * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
+ (WebKit::WebsiteDataStoreConfiguration::testingSessionEnabled const):
+ (WebKit::WebsiteDataStoreConfiguration::setTestingSessionEnabled):
+
+2019-09-27 Alex Christensen <achristensen@webkit.org>
+
Move legacy custom protocol registration from process pool to NetworkProcessProxy
https://bugs.webkit.org/show_bug.cgi?id=202315
memoryPressureHandler.install();
}
- m_diskCacheIsDisabledForTesting = parameters.shouldUseTestingNetworkSession;
-
setCacheModel(parameters.cacheModel, parameters.defaultDataStoreParameters.networkSessionParameters.networkCacheDirectory);
- if (parameters.shouldUseTestingNetworkSession) {
- m_shouldUseTestingNetworkStorageSession = true;
- m_defaultNetworkStorageSession = newTestingSession(PAL::SessionID::defaultSessionID());
- }
-
#if ENABLE(RESOURCE_LOAD_STATISTICS)
m_isITPDatabaseEnabled = parameters.shouldEnableITPDatabase;
#endif
}
#if PLATFORM(COCOA)
-void NetworkProcess::ensureSession(const PAL::SessionID& sessionID, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&& cookieStorage)
+void NetworkProcess::ensureSession(const PAL::SessionID& sessionID, bool shouldUseTestingNetworkSession, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&& cookieStorage)
#else
-void NetworkProcess::ensureSession(const PAL::SessionID& sessionID, const String& identifierBase)
+void NetworkProcess::ensureSession(const PAL::SessionID& sessionID, bool shouldUseTestingNetworkSession, const String& identifierBase)
#endif
{
ASSERT(sessionID != PAL::SessionID::defaultSessionID());
if (!addResult.isNewEntry)
return;
- if (m_shouldUseTestingNetworkStorageSession) {
+ if (shouldUseTestingNetworkSession) {
addResult.iterator->value = newTestingSession(sessionID);
return;
}
WebCore::NetworkStorageSession& defaultStorageSession() const;
std::unique_ptr<WebCore::NetworkStorageSession> newTestingSession(const PAL::SessionID&);
#if PLATFORM(COCOA)
- void ensureSession(const PAL::SessionID&, const String& identifier, RetainPtr<CFHTTPCookieStorageRef>&&);
+ void ensureSession(const PAL::SessionID&, bool shouldUseTestingNetworkSession, const String& identifier, RetainPtr<CFHTTPCookieStorageRef>&&);
#else
- void ensureSession(const PAL::SessionID&, const String& identifier);
+ void ensureSession(const PAL::SessionID&, bool shouldUseTestingNetworkSession, const String& identifier);
#endif
void processWillSuspendImminently();
bool m_hasSetCacheModel { false };
CacheModel m_cacheModel { CacheModel::DocumentViewer };
bool m_suppressMemoryPressureHandler { false };
- bool m_diskCacheIsDisabledForTesting { false };
String m_uiProcessBundleIdentifier;
DownloadManager m_downloadManager;
HashMap<PAL::SessionID, std::unique_ptr<NetworkSession>> m_networkSessions;
HashMap<PAL::SessionID, std::unique_ptr<WebCore::NetworkStorageSession>> m_networkStorageSessions;
mutable std::unique_ptr<WebCore::NetworkStorageSession> m_defaultNetworkStorageSession;
- bool m_shouldUseTestingNetworkStorageSession { false };
RefPtr<StorageManagerSet> m_storageManagerSet;
encoder << parentBundleDirectoryExtensionHandle;
#endif
encoder << shouldSuppressMemoryPressureHandler;
- encoder << shouldUseTestingNetworkSession;
encoder << urlSchemesRegisteredForCustomProtocols;
#if PLATFORM(COCOA)
encoder << uiProcessBundleIdentifier;
#endif
if (!decoder.decode(result.shouldSuppressMemoryPressureHandler))
return false;
- if (!decoder.decode(result.shouldUseTestingNetworkSession))
- return false;
if (!decoder.decode(result.urlSchemesRegisteredForCustomProtocols))
return false;
#if PLATFORM(COCOA)
SandboxExtension::Handle parentBundleDirectoryExtensionHandle;
#endif
bool shouldSuppressMemoryPressureHandler { false };
- bool shouldUseTestingNetworkSession { false };
Vector<String> urlSchemesRegisteredForCustomProtocols;
if (parameters.networkCacheSpeculativeValidationEnabled)
cacheOptions.add(NetworkCache::CacheOption::SpeculativeRevalidation);
#endif
+ if (parameters.shouldUseTestingNetworkSession)
+ cacheOptions.add(NetworkCache::CacheOption::TestingMode);
m_cache = NetworkCache::Cache::open(networkProcess, networkCacheDirectory, cacheOptions, m_sessionID);
encoder << dataConnectionServiceType;
encoder << fastServerTrustEvaluationEnabled;
encoder << networkCacheSpeculativeValidationEnabled;
+ encoder << shouldUseTestingNetworkSession;
}
Optional<NetworkSessionCreationParameters> NetworkSessionCreationParameters::decode(IPC::Decoder& decoder)
if (!networkCacheSpeculativeValidationEnabled)
return WTF::nullopt;
+ Optional<bool> shouldUseTestingNetworkSession;
+ decoder >> shouldUseTestingNetworkSession;
+ if (!shouldUseTestingNetworkSession)
+ return WTF::nullopt;
+
return {{
*sessionID
, WTFMove(*boundInterfaceIdentifier)
, WTFMove(*dataConnectionServiceType)
, WTFMove(*fastServerTrustEvaluationEnabled)
, WTFMove(*networkCacheSpeculativeValidationEnabled)
+ , WTFMove(*shouldUseTestingNetworkSession)
}};
}
String dataConnectionServiceType;
bool fastServerTrustEvaluationEnabled { false };
bool networkCacheSpeculativeValidationEnabled { false };
+ bool shouldUseTestingNetworkSession { false };
};
} // namespace WebKit
// - disk cache size passed from UI process is effectively a minimum size.
// One non-obvious constraint is that we need to use -setSharedURLCache: even in testing mode, to prevent creating a default one on disk later, when some other code touches the cache.
- ASSERT(!m_diskCacheIsDisabledForTesting);
-
m_cacheOptions = { NetworkCache::CacheOption::RegisterNotify };
- if (parameters.shouldUseTestingNetworkSession)
- m_cacheOptions.add(NetworkCache::CacheOption::TestingMode);
// Disable NSURLCache.
auto urlCache(adoptNS([[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]));
if (networkProcess.storageSession(sessionID))
return;
- networkProcess.ensureSession(sessionID, String::number(sessionID.toUInt64()));
+ networkProcess.ensureSession(sessionID, parameters.networkSessionParameters.shouldUseTestingNetworkSession, String::number(sessionID.toUInt64()));
networkProcess.setSession(sessionID, NetworkSession::create(networkProcess, WTFMove(parameters.networkSessionParameters)));
}
if (!sessionID.isEphemeral() && !parameters.uiProcessCookieStorageIdentifier.isEmpty())
uiProcessCookieStorage = cookieStorageFromIdentifyingData(parameters.uiProcessCookieStorageIdentifier);
- networkProcess.ensureSession(sessionID, makeString(base, '.', sessionID.toUInt64()), WTFMove(uiProcessCookieStorage));
+ networkProcess.ensureSession(sessionID, parameters.networkSessionParameters.shouldUseTestingNetworkSession, makeString(base, '.', sessionID.toUInt64()), WTFMove(uiProcessCookieStorage));
auto* session = networkProcess.storageSession(sessionID);
for (const auto& cookie : parameters.pendingCookies)
if (networkProcess.storageSession(sessionID))
return;
- networkProcess.ensureSession(sessionID, String::number(sessionID.toUInt64()));
+ networkProcess.ensureSession(sessionID, parameters.networkSessionParameters.shouldUseTestingNetworkSession, String::number(sessionID.toUInt64()));
networkProcess.setSession(sessionID, NetworkSession::create(networkProcess, WTFMove(parameters.networkSessionParameters)));
}
void WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota(WKWebsiteDataStoreConfigurationRef configuration, uint64_t quota)
{
- return WebKit::toImpl(configuration)->setPerOriginStorageQuota(quota);
+ WebKit::toImpl(configuration)->setPerOriginStorageQuota(quota);
}
bool WKWebsiteDataStoreConfigurationGetNetworkCacheSpeculativeValidationEnabled(WKWebsiteDataStoreConfigurationRef configuration)
void WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled(WKWebsiteDataStoreConfigurationRef configuration, bool enabled)
{
- return WebKit::toImpl(configuration)->setNetworkCacheSpeculativeValidationEnabled(enabled);
+ WebKit::toImpl(configuration)->setNetworkCacheSpeculativeValidationEnabled(enabled);
+}
+
+bool WKWebsiteDataStoreConfigurationGetTestingSessionEnabled(WKWebsiteDataStoreConfigurationRef configuration)
+{
+ return WebKit::toImpl(configuration)->testingSessionEnabled();
+}
+
+void WKWebsiteDataStoreConfigurationSetTestingSessionEnabled(WKWebsiteDataStoreConfigurationRef configuration, bool enabled)
+{
+ WebKit::toImpl(configuration)->setTestingSessionEnabled(enabled);
}
WK_EXPORT bool WKWebsiteDataStoreConfigurationGetNetworkCacheSpeculativeValidationEnabled(WKWebsiteDataStoreConfigurationRef configuration);
WK_EXPORT void WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled(WKWebsiteDataStoreConfigurationRef configuration, bool enabled);
+WK_EXPORT bool WKWebsiteDataStoreConfigurationGetTestingSessionEnabled(WKWebsiteDataStoreConfigurationRef configuration);
+WK_EXPORT void WKWebsiteDataStoreConfigurationSetTestingSessionEnabled(WKWebsiteDataStoreConfigurationRef configuration, bool enabled);
+
#ifdef __cplusplus
}
#endif
if (!parameters.hstsStorageDirectory.isNull())
SandboxExtension::createHandleForReadWriteDirectory(parameters.hstsStorageDirectory, parameters.hstsStorageDirectoryExtensionHandle);
- parameters.shouldUseTestingNetworkSession = m_shouldUseTestingNetworkSession;
-
parameters.urlSchemesRegisteredAsSecure = copyToVector(m_schemesToRegisterAsSecure);
parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy = copyToVector(m_schemesToRegisterAsBypassingContentSecurityPolicy);
parameters.urlSchemesRegisteredAsLocal = copyToVector(m_schemesToRegisterAsLocal);
m_configuration->dataConnectionServiceType(),
m_configuration->fastServerTrustEvaluationEnabled(),
m_configuration->networkCacheSpeculativeValidationEnabled(),
+ m_configuration->testingSessionEnabled()
};
networkingHasBegun();
copy->m_boundInterfaceIdentifier = this->m_boundInterfaceIdentifier;
copy->m_allowsCellularAccess = this->m_allowsCellularAccess;
copy->m_dataConnectionServiceType = this->m_dataConnectionServiceType;
+ copy->m_testingSessionEnabled = this->m_testingSessionEnabled;
#if PLATFORM(COCOA)
if (m_proxyConfiguration)
copy->m_proxyConfiguration = adoptCF(CFDictionaryCreateCopy(nullptr, this->m_proxyConfiguration.get()));
bool networkCacheSpeculativeValidationEnabled() const { return m_networkCacheSpeculativeValidationEnabled; }
void setNetworkCacheSpeculativeValidationEnabled(bool enabled) { m_networkCacheSpeculativeValidationEnabled = enabled; }
+ bool testingSessionEnabled() const { return m_testingSessionEnabled; }
+ void setTestingSessionEnabled(bool enabled) { m_testingSessionEnabled = enabled; }
+
#if PLATFORM(COCOA)
CFDictionaryRef proxyConfiguration() const { return m_proxyConfiguration.get(); }
void setProxyConfiguration(CFDictionaryRef configuration) { m_proxyConfiguration = configuration; }
bool m_allowsCellularAccess { true };
bool m_fastServerTrustEvaluationEnabled { false };
bool m_serviceWorkerProcessTerminationDelayEnabled { true };
+ bool m_testingSessionEnabled { false };
#if PLATFORM(COCOA)
RetainPtr<CFDictionaryRef> m_proxyConfiguration;
#endif
2019-09-27 Alex Christensen <achristensen@webkit.org>
+ Move shouldUseTestingNetworkSession from NetworkProcessCreationParameters to NetworkSessionCreationParameters
+ https://bugs.webkit.org/show_bug.cgi?id=202327
+
+ Reviewed by Tim Horton.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::websiteDataStore):
+
+2019-09-27 Alex Christensen <achristensen@webkit.org>
+
Move service worker process termination delay disabling from process pool to website data store
https://bugs.webkit.org/show_bug.cgi?id=202308
WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory(configuration.get(), toWK(temporaryFolder + pathSeparator + "ResourceLoadStatistics").get());
WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota(configuration.get(), 400 * 1024);
WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled(configuration.get(), true);
+ WKWebsiteDataStoreConfigurationSetTestingSessionEnabled(configuration.get(), true);
}
dataStore = WKWebsiteDataStoreCreateWithConfiguration(configuration.get());
}