Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (213689 => 213690)
--- trunk/Source/_javascript_Core/ChangeLog 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/_javascript_Core/ChangeLog 2017-03-10 00:53:09 UTC (rev 213690)
@@ -1,3 +1,21 @@
+2017-03-09 Michael Saboff <[email protected]>
+
+ Add plumbing to WebProcess to enable _javascript_Core configuration and logging
+ https://bugs.webkit.org/show_bug.cgi?id=169387
+
+ Reviewed by Filip Pizlo.
+
+ Added a helper function, processConfigFile(), to process configuration file.
+ Changed jsc.cpp to use that function in lieu of processing the config file
+ manually.
+
+ * _javascript_Core.xcodeproj/project.pbxproj: Made ConfigFile.h a private header file.
+ * jsc.cpp:
+ (jscmain):
+ * runtime/ConfigFile.cpp:
+ (JSC::processConfigFile):
+ * runtime/ConfigFile.h:
+
2017-03-09 Joseph Pecoraro <[email protected]>
Web Inspector: Show HTTP protocol version and other Network Load Metrics (IP Address, Priority, Connection ID)
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (213689 => 213690)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2017-03-10 00:53:09 UTC (rev 213690)
@@ -1390,7 +1390,7 @@
655EB29B10CE2581001A990E /* NodesCodegen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 655EB29A10CE2581001A990E /* NodesCodegen.cpp */; };
657CF45819BF6662004ACBF2 /* JSCallee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 657CF45619BF6662004ACBF2 /* JSCallee.cpp */; };
657CF45919BF6662004ACBF2 /* JSCallee.h in Headers */ = {isa = PBXBuildFile; fileRef = 657CF45719BF6662004ACBF2 /* JSCallee.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 658824AF1E5CFDB000FB7359 /* ConfigFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 658824AE1E5CFDB000FB7359 /* ConfigFile.h */; };
+ 658824AF1E5CFDB000FB7359 /* ConfigFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 658824AE1E5CFDB000FB7359 /* ConfigFile.h */; settings = {ATTRIBUTES = (Private, ); }; };
658824B11E5CFDF400FB7359 /* ConfigFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 658824B01E5CFDF400FB7359 /* ConfigFile.cpp */; };
658D3A5619638268003C45D6 /* VMEntryRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 658D3A5519638268003C45D6 /* VMEntryRecord.h */; settings = {ATTRIBUTES = (Private, ); }; };
65B8392E1BACAD360044E824 /* CachedRecovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B8392C1BACA92A0044E824 /* CachedRecovery.h */; };
@@ -7975,6 +7975,7 @@
0F61832A1C45BF070072450B /* AirCCallingConvention.h in Headers */,
5381B9401E65DFEB0090F794 /* JSWebAssemblyCodeBlock.h in Headers */,
0FEC85741BDACDC70080FF74 /* AirCCallSpecial.h in Headers */,
+ 658824AF1E5CFDB000FB7359 /* ConfigFile.h in Headers */,
0FEC85761BDACDC70080FF74 /* AirCode.h in Headers */,
0F10F1A31C420BF0001C07D2 /* AirCustom.h in Headers */,
DC454B8D1D00E824004C18AF /* AirDumpAsJS.h in Headers */,
@@ -8395,7 +8396,6 @@
A7D89CFE17A0B8CC00773AD8 /* DFGOSRAvailabilityAnalysisPhase.h in Headers */,
0FD82E57141DAF1000179C94 /* DFGOSREntry.h in Headers */,
0FD8A32617D51F5700CA2C40 /* DFGOSREntrypointCreationPhase.h in Headers */,
- 658824AF1E5CFDB000FB7359 /* ConfigFile.h in Headers */,
0FC0976A1468A6F700CF2442 /* DFGOSRExit.h in Headers */,
0F235BEC17178E7300690C7F /* DFGOSRExitBase.h in Headers */,
0FFB921C16D02F110055A5DB /* DFGOSRExitCompilationInfo.h in Headers */,
Modified: trunk/Source/_javascript_Core/jsc.cpp (213689 => 213690)
--- trunk/Source/_javascript_Core/jsc.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/_javascript_Core/jsc.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -3784,11 +3784,7 @@
// comes first.
CommandLine options(argc, argv);
- if (Options::configFile()) {
- ConfigFile configFile(Options::configFile());
- configFile.setProcessName("jsc");
- configFile.parse();
- }
+ processConfigFile(Options::configFile(), "jsc");
// Initialize JSC before getting VM.
WTF::initializeMainThread();
Modified: trunk/Source/_javascript_Core/runtime/ConfigFile.cpp (213689 => 213690)
--- trunk/Source/_javascript_Core/runtime/ConfigFile.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/_javascript_Core/runtime/ConfigFile.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -28,6 +28,7 @@
#include "Options.h"
#include <limits.h>
+#include <mutex>
#include <stdio.h>
#include <string.h>
#include <wtf/ASCIICType.h>
@@ -444,6 +445,7 @@
}
}
}
+#endif
char* lastPathSeperator = strrchr(m_filename, '/');
@@ -455,7 +457,24 @@
m_configDirectory[0] = '/';
m_configDirectory[1] = '\0';
}
-#endif
}
+void processConfigFile(const char* configFilename, const char* processName, const char* parentProcessName)
+{
+ static std::once_flag processConfigFileOnceFlag;
+
+ if (!configFilename || !strlen(configFilename))
+ return;
+
+ std::call_once(processConfigFileOnceFlag, [&]{
+ if (configFilename) {
+ ConfigFile configFile(configFilename);
+ configFile.setProcessName(processName);
+ if (parentProcessName)
+ configFile.setParentProcessName(parentProcessName);
+ configFile.parse();
+ }
+ });
+}
+
} // namespace JSC
Modified: trunk/Source/_javascript_Core/runtime/ConfigFile.h (213689 => 213690)
--- trunk/Source/_javascript_Core/runtime/ConfigFile.h 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/_javascript_Core/runtime/ConfigFile.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -53,4 +53,6 @@
char m_configDirectory[s_maxPathLength + 1];
};
+JS_EXPORT_PRIVATE void processConfigFile(const char* configFile, const char* processName, const char* parentProcessName = nullptr);
+
} // namespace JSC
Modified: trunk/Source/WebCore/ChangeLog (213689 => 213690)
--- trunk/Source/WebCore/ChangeLog 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebCore/ChangeLog 2017-03-10 00:53:09 UTC (rev 213690)
@@ -1,3 +1,14 @@
+2017-03-09 Michael Saboff <[email protected]>
+
+ Add plumbing to WebProcess to enable _javascript_Core configuration and logging
+ https://bugs.webkit.org/show_bug.cgi?id=169387
+
+ Reviewed by Filip Pizlo.
+
+ Added a forwarding header file for JavScriptCore/runtime/ConfigFile.h.
+
+ * ForwardingHeaders/runtime/ConfigFile.h: Added.
+
2017-03-09 John Wilander <[email protected]>
Resource Load Statistics: Remove statistics data as part of full website data removal
Added: trunk/Source/WebCore/ForwardingHeaders/runtime/ConfigFile.h (0 => 213690)
--- trunk/Source/WebCore/ForwardingHeaders/runtime/ConfigFile.h (rev 0)
+++ trunk/Source/WebCore/ForwardingHeaders/runtime/ConfigFile.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_ConfigFile_h
+#define WebCore_FWD_ConfigFile_h
+#include <_javascript_Core/ConfigFile.h>
+#endif
Modified: trunk/Source/WebKit2/ChangeLog (213689 => 213690)
--- trunk/Source/WebKit2/ChangeLog 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/ChangeLog 2017-03-10 00:53:09 UTC (rev 213690)
@@ -1,3 +1,54 @@
+<<<<<<< .mine
+2017-03-09 Michael Saboff <[email protected]>
+
+ Add plumbing to WebProcess to enable _javascript_Core configuration and logging
+ https://bugs.webkit.org/show_bug.cgi?id=169387
+
+ Reviewed by Filip Pizlo.
+
+ Added a path and sandbox extension for _javascript_ configuration directory.
+ These are sent to the Web process on startup along with other parameters.
+ When _javascript_ configuration file processing is enabled, the WebProcess
+ will look for the file WebContent.config in that directory and configure
+ _javascript_Core with its contents.
+
+ The directory location is for Mac is ~/Library/WebKit/_javascript_Config and
+ the location on iOS is <process-container-path>/Library/WebKit/_javascript_Config.
+ _javascript_ configuration file processing is controlled via a boolean kept in
+ the WebProcess pool. For Debug builds, config file processing is enabled.
+ For Release builds it is disabled.
+
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::encode):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/API/APIProcessPoolConfiguration.cpp:
+ (API::ProcessPoolConfiguration::createWithLegacyOptions):
+ (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
+ (API::ProcessPoolConfiguration::copy):
+ * UIProcess/API/APIProcessPoolConfiguration.h:
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextJavaScriptConfigurationFileEnabled):
+ (WKContextSetJavaScriptConfigurationFileEnabled):
+ * UIProcess/API/C/WKContext.h:
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory):
+ * UIProcess/gtk/WebProcessPoolGtk.cpp:
+ (WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory):
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::legacyWebsiteDataStoreConfiguration):
+ (WebKit::WebProcessPool::createNewWebProcess):
+ (WebKit::WebProcessPool::setJavaScriptConfigurationFileEnabled):
+ * UIProcess/WebProcessPool.h:
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+ (WebKit::WebsiteDataStore::resolvedJavaScriptConfigurationDirectory):
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::platformInitializeWebProcess):
+
+||||||| .r213687
+=======
2017-03-09 John Wilander <[email protected]>
Resource Load Statistics: Remove statistics data as part of full website data removal
@@ -29,6 +80,7 @@
Both WebsiteDataStore::removeData() functions now cover resource load
statistics.
+>>>>>>> .r213688
2017-03-09 Brady Eidson <[email protected]>
Add WKURLSchemeHandler API for handling custom protocols.
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (213689 => 213690)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -54,6 +54,8 @@
encoder << webSQLDatabaseDirectoryExtensionHandle;
encoder << mediaCacheDirectory;
encoder << mediaCacheDirectoryExtensionHandle;
+ encoder << _javascript_ConfigurationDirectory;
+ encoder << _javascript_ConfigurationDirectoryExtensionHandle;
#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
encoder << uiProcessCookieStorageIdentifier;
#endif
@@ -164,6 +166,10 @@
return false;
if (!decoder.decode(parameters.mediaCacheDirectoryExtensionHandle))
return false;
+ if (!decoder.decode(parameters._javascript_ConfigurationDirectory))
+ return false;
+ if (!decoder.decode(parameters._javascript_ConfigurationDirectoryExtensionHandle))
+ return false;
#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier))
return false;
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (213689 => 213690)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -75,6 +75,8 @@
SandboxExtension::Handle webSQLDatabaseDirectoryExtensionHandle;
String mediaCacheDirectory;
SandboxExtension::Handle mediaCacheDirectoryExtensionHandle;
+ String _javascript_ConfigurationDirectory;
+ SandboxExtension::Handle _javascript_ConfigurationDirectoryExtensionHandle;
#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
Vector<uint8_t> uiProcessCookieStorageIdentifier;
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -52,6 +52,7 @@
configuration->m_localStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory();
configuration->m_mediaKeysStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory();
configuration->m_webSQLDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory();
+ configuration->m_javaScriptConfigurationDirectory = WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory();
return configuration;
}
@@ -81,6 +82,7 @@
, m_localStorageDirectory(WebsiteDataStore::defaultLocalStorageDirectory())
, m_webSQLDatabaseDirectory(WebsiteDataStore::defaultWebSQLDatabaseDirectory())
, m_mediaKeysStorageDirectory(WebsiteDataStore::defaultMediaKeysStorageDirectory())
+ , m_javaScriptConfigurationDirectory("")
{
}
@@ -105,6 +107,7 @@
copy->m_injectedBundlePath = this->m_injectedBundlePath;
copy->m_localStorageDirectory = this->m_localStorageDirectory;
copy->m_mediaKeysStorageDirectory = this->m_mediaKeysStorageDirectory;
+ 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/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -87,6 +87,9 @@
const WTF::String& mediaKeysStorageDirectory() const { return m_mediaKeysStorageDirectory; }
void setMediaKeysStorageDirectory(const WTF::String& mediaKeysStorageDirectory) { m_mediaKeysStorageDirectory = mediaKeysStorageDirectory; }
+ 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); }
@@ -134,6 +137,7 @@
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;
bool m_fullySynchronousModeIsAllowedForTesting { false };
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -502,6 +502,16 @@
toImpl(contextRef)->getStatistics(optionsMask, toGenericCallbackFunction(context, callback));
}
+bool WKContextJavaScriptConfigurationFileEnabled(WKContextRef contextRef)
+{
+ return toImpl(contextRef)->_javascript_ConfigurationFileEnabled();
+}
+
+void WKContextSetJavaScriptConfigurationFileEnabled(WKContextRef contextRef, bool enable)
+{
+ toImpl(contextRef)->setJavaScriptConfigurationFileEnabled(enable);
+}
+
void WKContextGarbageCollectJavaScriptObjects(WKContextRef contextRef)
{
toImpl(contextRef)->garbageCollectJavaScriptObjects();
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.h (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.h 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -154,6 +154,8 @@
WK_EXPORT void WKContextGetStatistics(WKContextRef context, void* functionContext, WKContextGetStatisticsFunction function);
WK_EXPORT void WKContextGetStatisticsWithOptions(WKContextRef context, WKStatisticsOptions statisticsMask, void* functionContext, WKContextGetStatisticsFunction function);
+WK_EXPORT bool WKContextJavaScriptConfigurationFileEnabled(WKContextRef context);
+WK_EXPORT void WKContextSetJavaScriptConfigurationFileEnabled(WKContextRef context, bool enable);
WK_EXPORT void WKContextGarbageCollectJavaScriptObjects(WKContextRef context);
WK_EXPORT void WKContextSetJavaScriptGarbageCollectorTimerEnabled(WKContextRef context, bool enable);
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2017-03-10 00:53:09 UTC (rev 213690)
@@ -472,6 +472,24 @@
return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
}
+String WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory()
+{
+#if PLATFORM(IOS)
+ String path = pathForProcessContainer();
+ if (path.isEmpty())
+ path = NSHomeDirectory();
+
+ path = path + "/Library/WebKit/_javascript_CoreDebug";
+ path = stringByResolvingSymlinksInPath(path);
+
+ return path;
+#else
+ RetainPtr<NSString> _javascript_ConfigPath = @"~/Library/WebKit/_javascript_CoreDebug";
+
+ return stringByResolvingSymlinksInPath([_javascript_ConfigPath stringByStandardizingPath]);
+#endif
+}
+
bool WebProcessPool::isNetworkCacheEnabled()
{
#if ENABLE(NETWORK_CACHE)
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -142,6 +142,7 @@
configuration.mediaCacheDirectory = processPoolConfiguration.mediaCacheDirectory();
configuration.mediaKeysStorageDirectory = processPoolConfiguration.mediaKeysStorageDirectory();
configuration.networkCacheDirectory = processPoolConfiguration.diskCacheDirectory();
+ configuration._javascript_ConfigurationDirectory = processPoolConfiguration._javascript_ConfigurationDirectory();
// This is needed to support legacy WK2 clients, which did not have resource load statistics.
configuration.resourceLoadStatisticsDirectory = API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory();
@@ -598,6 +599,12 @@
if (!parameters.mediaKeyStorageDirectory.isEmpty())
SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaKeyStorageDirectory, SandboxExtension::ReadWrite, parameters.mediaKeyStorageDirectoryExtensionHandle);
+ if (_javascript_ConfigurationFileEnabled()) {
+ parameters._javascript_ConfigurationDirectory = websiteDataStore ? websiteDataStore->resolvedJavaScriptConfigurationDirectory() : String();
+ if (!parameters._javascript_ConfigurationDirectory.isEmpty())
+ SandboxExtension::createHandleWithoutResolvingPath(parameters._javascript_ConfigurationDirectory, SandboxExtension::ReadWrite, parameters._javascript_ConfigurationDirectoryExtensionHandle);
+ }
+
parameters.shouldUseTestingNetworkSession = m_shouldUseTestingNetworkSession;
parameters.cacheModel = cacheModel();
@@ -1362,6 +1369,11 @@
#endif // ENABLE(GAMEPAD)
+void WebProcessPool::setJavaScriptConfigurationFileEnabled(bool flag)
+{
+ m_javaScriptConfigurationFileEnabled = flag;
+}
+
void WebProcessPool::garbageCollectJavaScriptObjects()
{
sendToAllProcesses(Messages::WebProcess::GarbageCollectJavaScriptObjects());
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -276,6 +276,8 @@
void getStatistics(uint32_t statisticsMask, std::function<void (API::Dictionary*, CallbackBase::Error)>);
+ bool _javascript_ConfigurationFileEnabled() { return m_javaScriptConfigurationFileEnabled; }
+ void setJavaScriptConfigurationFileEnabled(bool flag);
void garbageCollectJavaScriptObjects();
void setJavaScriptGarbageCollectorTimerEnabled(bool flag);
@@ -372,6 +374,7 @@
static String legacyPlatformDefaultMediaCacheDirectory();
static String legacyPlatformDefaultApplicationCacheDirectory();
static String legacyPlatformDefaultNetworkCacheDirectory();
+ static String legacyPlatformDefaultJavaScriptConfigurationDirectory();
static bool isNetworkCacheEnabled();
bool resourceLoadStatisticsEnabled() { return m_resourceLoadStatisticsEnabled; }
@@ -552,7 +555,14 @@
bool m_memoryCacheDisabled;
bool m_resourceLoadStatisticsEnabled { false };
-
+ bool m_javaScriptConfigurationFileEnabled {
+#ifndef NDEBUG
+ // Enable _javascript_ configuration file processing by default for Debug builds.
+ true
+#else
+ false
+#endif
+ };
bool m_alwaysRunsAtBackgroundPriority;
UserObservablePageCounter m_userObservablePageCounter;
Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -115,6 +115,9 @@
m_resolvedConfiguration.mediaCacheDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration.mediaCacheDirectory);
m_resolvedConfiguration.mediaKeysStorageDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration.mediaKeysStorageDirectory);
m_resolvedConfiguration.webSQLDatabaseDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration.webSQLDatabaseDirectory);
+
+ if (!m_configuration._javascript_ConfigurationDirectory.isEmpty())
+ m_resolvedConfiguration._javascript_ConfigurationDirectory = resolvePathForSandboxExtension(m_configuration._javascript_ConfigurationDirectory);
}
void WebsiteDataStore::cloneSessionData(WebPageProxy& sourcePage, WebPageProxy& newPage)
Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h 2017-03-10 00:53:09 UTC (rev 213690)
@@ -68,6 +68,7 @@
String localStorageDirectory;
String mediaKeysStorageDirectory;
String resourceLoadStatisticsDirectory;
+ String _javascript_ConfigurationDirectory;
};
static Ref<WebsiteDataStore> createNonPersistent();
static Ref<WebsiteDataStore> create(Configuration);
@@ -98,6 +99,7 @@
const String& resolvedMediaCacheDirectory() const { return m_resolvedConfiguration.mediaCacheDirectory; }
const String& resolvedMediaKeysDirectory() const { return m_resolvedConfiguration.mediaKeysStorageDirectory; }
const String& resolvedDatabaseDirectory() const { return m_resolvedConfiguration.webSQLDatabaseDirectory; }
+ const String& resolvedJavaScriptConfigurationDirectory() const { return m_resolvedConfiguration._javascript_ConfigurationDirectory; }
StorageManager* storageManager() { return m_storageManager.get(); }
Modified: trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp (213689 => 213690)
--- trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp 2017-03-10 00:53:09 UTC (rev 213690)
@@ -131,6 +131,12 @@
return API::WebsiteDataStore::defaultNetworkCacheDirectory();
}
+String WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory()
+{
+ GUniquePtr<gchar> _javascript_CoreConfigDirectory(g_build_filename(g_get_user_data_dir(), "webkitgtk", "_javascript_CoreDebug", nullptr));
+ return WebCore::stringFromFileSystemRepresentation(_javascript_CoreConfigDirectory.get());
+}
+
void WebProcessPool::platformResolvePathsForSandboxExtensions()
{
}
Modified: trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm (213689 => 213690)
--- trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm 2017-03-10 00:52:07 UTC (rev 213689)
+++ trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm 2017-03-10 00:53:09 UTC (rev 213690)
@@ -30,6 +30,7 @@
#import "LegacyCustomProtocolManager.h"
#import "Logging.h"
#import "ObjCObjectGraph.h"
+#import <runtime/ConfigFile.h>
#import "SandboxExtension.h"
#import "SandboxInitializationParameters.h"
#import "SecItemShim.h"
@@ -102,6 +103,7 @@
SandboxExtension::consumePermanently(parameters.applicationCacheDirectoryExtensionHandle);
SandboxExtension::consumePermanently(parameters.mediaCacheDirectoryExtensionHandle);
SandboxExtension::consumePermanently(parameters.mediaKeyStorageDirectoryExtensionHandle);
+ SandboxExtension::consumePermanently(parameters._javascript_ConfigurationDirectoryExtensionHandle);
#if ENABLE(MEDIA_STREAM)
SandboxExtension::consumePermanently(parameters.audioCaptureExtensionHandle);
#endif
@@ -112,6 +114,11 @@
#endif
#endif
+ if (!parameters._javascript_ConfigurationDirectory.isEmpty()) {
+ String _javascript_ConfigFile = parameters._javascript_ConfigurationDirectory + "/JSC.config";
+ JSC::processConfigFile(_javascript_ConfigFile.latin1().data(), "com.apple.WebKit.WebContent", parameters.uiProcessBundleIdentifier.latin1().data());
+ }
+
#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
setSharedHTTPCookieStorage(parameters.uiProcessCookieStorageIdentifier);
#endif