Diff
Modified: trunk/Source/WebKit/ChangeLog (247758 => 247759)
--- trunk/Source/WebKit/ChangeLog 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/ChangeLog 2019-07-24 00:08:06 UTC (rev 247759)
@@ -1,3 +1,28 @@
+2019-07-23 Alex Christensen <achristen...@webkit.org>
+
+ Move _javascript_ConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it runtime switchable
+ https://bugs.webkit.org/show_bug.cgi?id=200045
+
+ Reviewed by Mark Lam.
+
+ This allows me to maintain the status quo in Safari.
+
+ * UIProcess/API/APIProcessPoolConfiguration.cpp:
+ (API::ProcessPoolConfiguration::copy):
+ * UIProcess/API/APIProcessPoolConfiguration.h:
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (-[WKProcessPool _javaScriptConfigurationDirectory]):
+ (-[WKProcessPool _setJavaScriptConfigurationDirectory:]):
+ * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+ * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
+ * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
+ (-[_WKProcessPoolConfiguration _javascript_ConfigurationDirectory]): Deleted.
+ (-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]): Deleted.
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::legacyWebsiteDataStoreConfiguration):
+ (WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
+ * UIProcess/WebProcessPool.h:
+
2019-07-23 Russell Epstein <repst...@apple.com>
Unreviewed, rolling out r247745.
Modified: trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp 2019-07-24 00:08:06 UTC (rev 247759)
@@ -99,7 +99,6 @@
copy->m_deviceIdHashSaltsStorageDirectory = this->m_deviceIdHashSaltsStorageDirectory;
copy->m_mediaKeysStorageDirectory = this->m_mediaKeysStorageDirectory;
copy->m_resourceLoadStatisticsDirectory = this->m_resourceLoadStatisticsDirectory;
- copy->m_javaScriptConfigurationDirectory = this->m_javaScriptConfigurationDirectory;
copy->m_webSQLDatabaseDirectory = this->m_webSQLDatabaseDirectory;
copy->m_cachePartitionedURLSchemes = this->m_cachePartitionedURLSchemes;
copy->m_alwaysRevalidatedURLSchemes = this->m_alwaysRevalidatedURLSchemes;
Modified: trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h 2019-07-24 00:08:06 UTC (rev 247759)
@@ -114,9 +114,6 @@
const WTF::String& resourceLoadStatisticsDirectory() const { return m_resourceLoadStatisticsDirectory; }
void setResourceLoadStatisticsDirectory(const WTF::String& resourceLoadStatisticsDirectory) { m_resourceLoadStatisticsDirectory = resourceLoadStatisticsDirectory; }
- const WTF::String& _javascript_ConfigurationDirectory() const { return m_javaScriptConfigurationDirectory; }
- void setJavaScriptConfigurationDirectory(const WTF::String& _javascript_ConfigurationDirectory) { m_javaScriptConfigurationDirectory = _javascript_ConfigurationDirectory; }
-
const Vector<WTF::String>& cachePartitionedURLSchemes() { return m_cachePartitionedURLSchemes; }
void setCachePartitionedURLSchemes(Vector<WTF::String>&& cachePartitionedURLSchemes) { m_cachePartitionedURLSchemes = WTFMove(cachePartitionedURLSchemes); }
@@ -205,7 +202,6 @@
WTF::String m_webSQLDatabaseDirectory;
WTF::String m_mediaKeysStorageDirectory;
WTF::String m_resourceLoadStatisticsDirectory;
- WTF::String m_javaScriptConfigurationDirectory;
Vector<WTF::String> m_cachePartitionedURLSchemes;
Vector<WTF::String> m_alwaysRevalidatedURLSchemes;
Vector<WTF::CString> m_additionalReadAccessAllowedPaths;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2019-07-24 00:08:06 UTC (rev 247759)
@@ -403,6 +403,18 @@
_processPool->setAutomationSession(automationSession ? automationSession->_session.get() : nullptr);
}
+- (NSURL *)_javaScriptConfigurationDirectory
+{
+ return [NSURL fileURLWithPath:_processPool->_javascript_ConfigurationDirectory() isDirectory:YES];
+}
+
+- (void)_setJavaScriptConfigurationDirectory:(NSURL *)directory
+{
+ if (directory && ![directory isFileURL])
+ [NSException raise:NSInvalidArgumentException format:@"%@ is not a file URL", directory];
+ _processPool->setJavaScriptConfigurationDirectory(directory.path);
+}
+
- (void)_addSupportedPlugin:(NSString *) domain named:(NSString *) name withMimeTypes: (NSSet<NSString *> *) nsMimeTypes withExtensions: (NSSet<NSString *> *) nsExtensions
{
HashSet<String> mimeTypes;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2019-07-24 00:08:06 UTC (rev 247759)
@@ -74,6 +74,8 @@
- (void)_automationCapabilitiesDidChange WK_API_AVAILABLE(macos(10.12), ios(10.0));
- (void)_setAutomationSession:(_WKAutomationSession *)automationSession WK_API_AVAILABLE(macos(10.12), ios(10.0));
+@property (nonatomic, copy, setter=_setJavaScriptConfigurationDirectory:) NSURL *_javaScriptConfigurationDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+
- (void)_addSupportedPlugin:(NSString *) domain named:(NSString *) name withMimeTypes: (NSSet<NSString *> *) mimeTypes withExtensions: (NSSet<NSString *> *) extensions WK_API_AVAILABLE(macos(10.14), ios(12.0));
- (void)_clearSupportedPlugins WK_API_AVAILABLE(macos(10.14), ios(12.0));
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h 2019-07-24 00:08:06 UTC (rev 247759)
@@ -45,8 +45,6 @@
@property (nonatomic) NSUInteger wirelessContextIdentifier WK_API_DEPRECATED("Use of this API is no longer necessary and can be removed", ios(10.12, WK_IOS_TBA));
#endif
-@property (nonatomic, nullable, copy) NSURL *_javascript_ConfigurationDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
-
// Network Process properties
// FIXME: These should be be per-session/data store when we support multiple non-persistent sessions/data stores.
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm 2019-07-24 00:08:06 UTC (rev 247759)
@@ -110,18 +110,6 @@
return _processPoolConfiguration->setAttrStyleEnabled(enabled);
}
-- (NSURL *)_javascript_ConfigurationDirectory
-{
- return [NSURL fileURLWithPath:_processPoolConfiguration->_javascript_ConfigurationDirectory() isDirectory:YES];
-}
-
-- (void)setJavaScriptConfigurationDirectory:(NSURL *)directory
-{
- if (directory && ![directory isFileURL])
- [NSException raise:NSInvalidArgumentException format:@"%@ is not a file URL", directory];
- _processPoolConfiguration->setJavaScriptConfigurationDirectory(directory.path);
-}
-
- (NSArray<NSURL *> *)additionalReadAccessAllowedURLs
{
auto paths = _processPoolConfiguration->additionalReadAccessAllowedPaths();
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2019-07-24 00:08:06 UTC (rev 247759)
@@ -220,7 +220,6 @@
configuration->setIndexedDBDatabaseDirectory(String(processPoolConfiguration.indexedDBDatabaseDirectory()));
configuration->setResourceLoadStatisticsDirectory(String(processPoolConfiguration.resourceLoadStatisticsDirectory()));
configuration->setNetworkCacheDirectory(String(processPoolConfiguration.diskCacheDirectory()));
- configuration->setJavaScriptConfigurationDirectory(String(processPoolConfiguration._javascript_ConfigurationDirectory()));
return configuration;
}
@@ -893,9 +892,9 @@
SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaKeyStorageDirectory, SandboxExtension::Type::ReadWrite, parameters.mediaKeyStorageDirectoryExtensionHandle);
- if (auto& directory = configuration()._javascript_ConfigurationDirectory(); !directory.isEmpty())
- parameters._javascript_ConfigurationDirectory = directory;
- if (_javascript_ConfigurationFileEnabled())
+ if (!m_javaScriptConfigurationDirectory.isEmpty())
+ parameters._javascript_ConfigurationDirectory = m_javaScriptConfigurationDirectory;
+ else if (_javascript_ConfigurationFileEnabled())
parameters._javascript_ConfigurationDirectory = websiteDataStore.resolvedJavaScriptConfigurationDirectory();
if (!parameters._javascript_ConfigurationDirectory.isEmpty())
SandboxExtension::createHandleWithoutResolvingPath(parameters._javascript_ConfigurationDirectory, SandboxExtension::Type::ReadWrite, parameters._javascript_ConfigurationDirectoryExtensionHandle);
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (247758 => 247759)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2019-07-24 00:08:06 UTC (rev 247759)
@@ -529,6 +529,9 @@
void disableDelayedWebProcessLaunch() { m_isDelayedWebProcessLaunchDisabled = true; }
+ void setJavaScriptConfigurationDirectory(String&& directory) { m_javaScriptConfigurationDirectory = directory; }
+ const String& _javascript_ConfigurationDirectory() const { return m_javaScriptConfigurationDirectory; }
+
private:
void platformInitialize();
@@ -726,6 +729,7 @@
bool m_memoryCacheDisabled { false };
bool m_javaScriptConfigurationFileEnabled { false };
+ String m_javaScriptConfigurationDirectory;
bool m_alwaysRunsAtBackgroundPriority;
bool m_shouldTakeUIBackgroundAssertion;
bool m_shouldMakeNextWebProcessLaunchFailForTesting { false };
Modified: trunk/Tools/ChangeLog (247758 => 247759)
--- trunk/Tools/ChangeLog 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Tools/ChangeLog 2019-07-24 00:08:06 UTC (rev 247759)
@@ -1,3 +1,13 @@
+2019-07-23 Alex Christensen <achristen...@webkit.org>
+
+ Move _javascript_ConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it runtime switchable
+ https://bugs.webkit.org/show_bug.cgi?id=200045
+
+ Reviewed by Mark Lam.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:
+ (TEST):
+
2019-07-23 Russell Epstein <repst...@apple.com>
Unreviewed, rolling out r247745.
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm (247758 => 247759)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm 2019-07-24 00:04:47 UTC (rev 247758)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm 2019-07-24 00:08:06 UTC (rev 247759)
@@ -84,7 +84,7 @@
EXPECT_EQ([configuration suppressesConnectionTerminationOnSystemChange], [copy suppressesConnectionTerminationOnSystemChange]);
}
-TEST(WKProcessPoolConfiguration, _javascript_Configuration)
+TEST(WKProcessPool, _javascript_Configuration)
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *tempDir = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"CustomPathsTest"] isDirectory:YES];
@@ -105,12 +105,8 @@
BOOL result = [contents writeToURL:[tempDir URLByAppendingPathComponent:@"JSC.config"] atomically:YES];
EXPECT_TRUE(result);
- auto poolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]);
- [poolConfiguration setJavaScriptConfigurationDirectory:tempDir];
- auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]);
- [webViewConfiguration setProcessPool:[[[WKProcessPool alloc] _initWithConfiguration:poolConfiguration.get()] autorelease]];
-
- auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]);
+ auto webView = adoptNS([[WKWebView alloc] init]);
+ [webView configuration].processPool._javaScriptConfigurationDirectory = tempDir;
[webView loadHTMLString:@"<html>hello</html>" baseURL:[NSURL URLWithString:@"https://webkit.org/"]];
NSString *path = [tempDir URLByAppendingPathComponent:@"Log.txt"].path;