Rename WKProcessClass to WKProcessPool
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / Cocoa / WKProcessPool.mm
1 /*
2  * Copyright (C) 2014 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #import "config.h"
27 #import "WKProcessPoolInternal.h"
28
29 #if WK_API_ENABLED
30
31 #import "HistoryClient.h"
32 #import "WKObject.h"
33 #import "WKProcessPoolConfigurationPrivate.h"
34 #import "WebCertificateInfo.h"
35 #import "WebContext.h"
36 #import <WebCore/CertificateInfo.h>
37 #import <wtf/RetainPtr.h>
38
39 #if PLATFORM(IOS)
40 #import <WebCore/WebCoreThreadSystemInterface.h>
41 #endif
42
43 @implementation WKProcessPool
44
45 - (instancetype)init
46 {
47     return [self initWithConfiguration:adoptNS([[WKProcessPoolConfiguration alloc] init]).get()];
48 }
49
50 - (instancetype)initWithConfiguration:(WKProcessPoolConfiguration *)configuration
51 {
52     if (!(self = [super init]))
53         return nil;
54
55     _configuration = adoptNS([configuration copy]);
56
57 #if PLATFORM(IOS)
58     // FIXME: Remove once <rdar://problem/15256572> is fixed.
59     InitWebCoreThreadSystemInterface();
60 #endif
61
62     String bundlePath;
63     if (NSURL *bundleURL = [_configuration _injectedBundleURL]) {
64         if (!bundleURL.isFileURL)
65             [NSException raise:NSInvalidArgumentException format:@"Injected Bundle URL must be a file URL"];
66
67         bundlePath = bundleURL.path;
68     }
69
70     API::Object::constructInWrapper<WebKit::WebContext>(self, bundlePath);
71     _context->setHistoryClient(std::make_unique<WebKit::HistoryClient>());
72
73     return self;
74 }
75
76 - (void)dealloc
77 {
78     _context->~WebContext();
79
80     [super dealloc];
81 }
82
83 - (NSString *)description
84 {
85     return [NSString stringWithFormat:@"<%@: %p; configuration = %@>", NSStringFromClass(self.class), self, _configuration.get()];
86 }
87
88 - (WKProcessPoolConfiguration *)configuration
89 {
90     return [[_configuration copy] autorelease];
91 }
92
93 - (API::Object&)_apiObject
94 {
95     return *_context;
96 }
97
98 @end
99
100 @implementation WKProcessPool (WKPrivate)
101
102 - (void)_setAllowsSpecificHTTPSCertificate:(NSArray *)certificateChain forHost:(NSString *)host
103 {
104     _context->allowSpecificHTTPSCertificateForHost(WebKit::WebCertificateInfo::create(WebCore::CertificateInfo((CFArrayRef)certificateChain)).get(), host);
105 }
106
107 @end
108
109 #endif // WK_API_ENABLED