Changeset 247685 in webkit


Ignore:
Timestamp:
Jul 22, 2019 10:19:29 AM (5 years ago)
Author:
achristensen@apple.com
Message:

Add SPI _WKProcessPoolConfiguration.javaScriptConfigurationDirectory
https://bugs.webkit.org/show_bug.cgi?id=199917

Reviewed by Sam Weinig.

Source/WebKit:

  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]):
(-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:

(TEST):

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r247680 r247685  
     12019-07-22  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add SPI _WKProcessPoolConfiguration.javaScriptConfigurationDirectory
     4        https://bugs.webkit.org/show_bug.cgi?id=199917
     5
     6        Reviewed by Sam Weinig.
     7
     8        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
     9        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
     10        (-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]):
     11        (-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]):
     12        * UIProcess/WebProcessPool.cpp:
     13        (WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
     14
    1152019-07-22  Carlos Garcia Campos  <cgarcia@igalia.com>
    216
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h

    r245294 r247685  
    4646#endif
    4747
     48@property (nonatomic, nullable, copy) NSURL *javaScriptConfigurationDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
     49
    4850// Network Process properties
    4951// FIXME: These should be be per-session/data store when we support multiple non-persistent sessions/data stores.
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm

    r245075 r247685  
    111111}
    112112
     113- (NSURL *)javaScriptConfigurationDirectory
     114{
     115    return [NSURL fileURLWithPath:_processPoolConfiguration->javaScriptConfigurationDirectory() isDirectory:YES];
     116}
     117
     118- (void)setJavaScriptConfigurationDirectory:(NSURL *)directory
     119{
     120    if (directory && ![directory isFileURL])
     121        [NSException raise:NSInvalidArgumentException format:@"%@ is not a file URL", directory];
     122    _processPoolConfiguration->setJavaScriptConfigurationDirectory(directory.path);
     123}
     124
    113125- (NSArray<NSURL *> *)additionalReadAccessAllowedURLs
    114126{
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r247270 r247685  
    891891        SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaKeyStorageDirectory, SandboxExtension::Type::ReadWrite, parameters.mediaKeyStorageDirectoryExtensionHandle);
    892892
    893     if (javaScriptConfigurationFileEnabled()) {
     893   
     894    if (auto& directory = configuration().javaScriptConfigurationDirectory(); !directory.isEmpty())
     895        parameters.javaScriptConfigurationDirectory = directory;
     896    if (javaScriptConfigurationFileEnabled())
    894897        parameters.javaScriptConfigurationDirectory = websiteDataStore.resolvedJavaScriptConfigurationDirectory();
    895         if (!parameters.javaScriptConfigurationDirectory.isEmpty())
    896             SandboxExtension::createHandleWithoutResolvingPath(parameters.javaScriptConfigurationDirectory, SandboxExtension::Type::ReadWrite, parameters.javaScriptConfigurationDirectoryExtensionHandle);
    897     }
     898    if (!parameters.javaScriptConfigurationDirectory.isEmpty())
     899        SandboxExtension::createHandleWithoutResolvingPath(parameters.javaScriptConfigurationDirectory, SandboxExtension::Type::ReadWrite, parameters.javaScriptConfigurationDirectoryExtensionHandle);
    898900
    899901    parameters.resourceLoadStatisticsEnabled = websiteDataStore.resourceLoadStatisticsEnabled();
  • trunk/Tools/ChangeLog

    r247683 r247685  
     12019-07-22  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add SPI _WKProcessPoolConfiguration.javaScriptConfigurationDirectory
     4        https://bugs.webkit.org/show_bug.cgi?id=199917
     5
     6        Reviewed by Sam Weinig.
     7
     8        * TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:
     9        (TEST):
     10
    1112019-07-22  Aakash Jain  <aakash_jain@apple.com>
    212
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm

    r243427 r247685  
    2525
    2626#import "config.h"
     27
     28#import "Utilities.h"
    2729#import <WebKit/WKFoundation.h>
    28 
     30#import <WebKit/WKProcessPoolPrivate.h>
    2931#import <WebKit/_WKProcessPoolConfiguration.h>
    3032#import <wtf/RetainPtr.h>
     
    8284    EXPECT_EQ([configuration suppressesConnectionTerminationOnSystemChange], [copy suppressesConnectionTerminationOnSystemChange]);
    8385}
     86
     87TEST(WKProcessPoolConfiguration, JavaScriptConfiguration)
     88{
     89    NSFileManager *fileManager = [NSFileManager defaultManager];
     90    NSURL *tempDir = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"CustomPathsTest"] isDirectory:YES];
     91    NSError *error = nil;
     92    BOOL success = [fileManager createDirectoryAtURL:tempDir withIntermediateDirectories:YES attributes:nil error:&error];
     93    EXPECT_TRUE(success);
     94    EXPECT_FALSE(error);
     95
     96    NSData *contents = [@""
     97    "processName =~ /WebContent/ {\n"
     98        "logFile = \"Log.txt\"\n"
     99        "jscOptions {\n"
     100            "dumpOptions = 1\n"
     101            "dumpDFGDisassembly = true\n"
     102        "}\n"
     103    "}"
     104    "" dataUsingEncoding:NSUTF8StringEncoding];
     105    BOOL result = [contents writeToURL:[tempDir URLByAppendingPathComponent:@"JSC.config"] atomically:YES];
     106    EXPECT_TRUE(result);
     107
     108    auto poolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]);
     109    [poolConfiguration setJavaScriptConfigurationDirectory:tempDir];
     110    auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]);
     111    [webViewConfiguration setProcessPool:[[[WKProcessPool alloc] _initWithConfiguration:poolConfiguration.get()] autorelease]];
     112
     113    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]);
     114    [webView loadHTMLString:@"<html>hello</html>" baseURL:[NSURL URLWithString:@"https://webkit.org/"]];
     115
     116    NSString *path = [tempDir URLByAppendingPathComponent:@"Log.txt"].path;
     117    while (![fileManager fileExistsAtPath:path])
     118        TestWebKitAPI::Util::spinRunLoop();
     119    [fileManager removeItemAtPath:tempDir.path error:&error];
     120    EXPECT_FALSE(error);
     121}
Note: See TracChangeset for help on using the changeset viewer.