dc127ef479601a60a8e7661d2d22bcb283ff3f42
[WebKit-https.git] / Source / WebKit2 / Shared / WebProcessCreationParameters.cpp
1 /*
2  * Copyright (C) 2010, 2011, 2012 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 #include "config.h"
27 #include "WebProcessCreationParameters.h"
28
29 #include "ArgumentCoders.h"
30
31 namespace WebKit {
32
33 WebProcessCreationParameters::WebProcessCreationParameters()
34     : shouldTrackVisitedLinks(false)
35     , shouldAlwaysUseComplexTextCodePath(false)
36     , shouldUseFontSmoothing(true)
37     , defaultRequestTimeoutInterval(INT_MAX)
38 #if PLATFORM(MAC)
39     , nsURLCacheMemoryCapacity(0)
40     , nsURLCacheDiskCapacity(0)
41     , shouldForceScreenFontSubstitution(false)
42     , shouldEnableKerningAndLigaturesByDefault(false)
43 #endif
44 #if ENABLE(NETWORK_PROCESS)
45     , usesNetworkProcess(false)
46 #endif
47 {
48 }
49
50 void WebProcessCreationParameters::encode(CoreIPC::ArgumentEncoder& encoder) const
51 {
52     encoder << injectedBundlePath;
53     encoder << injectedBundlePathExtensionHandle;
54     encoder << applicationCacheDirectory;
55     encoder << applicationCacheDirectoryExtensionHandle;
56     encoder << databaseDirectory;
57     encoder << databaseDirectoryExtensionHandle;
58     encoder << localStorageDirectory;
59     encoder << localStorageDirectoryExtensionHandle;
60     encoder << diskCacheDirectory;
61     encoder << diskCacheDirectoryExtensionHandle;
62     encoder << cookieStorageDirectory;
63     encoder << cookieStorageDirectoryExtensionHandle;
64     encoder << urlSchemesRegistererdAsEmptyDocument;
65     encoder << urlSchemesRegisteredAsSecure;
66     encoder << urlSchemesForWhichDomainRelaxationIsForbidden;
67     encoder << urlSchemesRegisteredAsLocal;
68     encoder << urlSchemesRegisteredAsNoAccess;
69     encoder << urlSchemesRegisteredAsDisplayIsolated;
70     encoder << urlSchemesRegisteredAsCORSEnabled;
71 #if ENABLE(CUSTOM_PROTOCOLS)
72     encoder << urlSchemesRegisteredForCustomProtocols;
73 #endif
74 #if USE(SOUP)
75     encoder << urlSchemesRegistered;
76     encoder << cookiePersistentStoragePath;
77     encoder << cookiePersistentStorageType;
78     encoder.encodeEnum(cookieAcceptPolicy);
79     encoder << ignoreTLSErrors;
80 #endif
81     encoder.encodeEnum(cacheModel);
82     encoder << shouldTrackVisitedLinks;
83     encoder << shouldAlwaysUseComplexTextCodePath;
84     encoder << shouldUseFontSmoothing;
85     encoder << iconDatabaseEnabled;
86     encoder << terminationTimeout;
87     encoder << languages;
88     encoder << textCheckerState;
89     encoder << fullKeyboardAccessEnabled;
90     encoder << defaultRequestTimeoutInterval;
91 #if PLATFORM(MAC) || USE(CFNETWORK)
92     encoder << uiProcessBundleIdentifier;
93 #endif
94 #if PLATFORM(MAC)
95     encoder << presenterApplicationPid;
96     encoder << nsURLCacheMemoryCapacity;
97     encoder << nsURLCacheDiskCapacity;
98     encoder << acceleratedCompositingPort;
99     encoder << uiProcessBundleResourcePath;
100     encoder << uiProcessBundleResourcePathExtensionHandle;
101     encoder << shouldForceScreenFontSubstitution;
102     encoder << shouldEnableKerningAndLigaturesByDefault;
103 #endif
104
105 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
106     encoder << notificationPermissions;
107 #endif
108
109 #if ENABLE(NETWORK_PROCESS)
110     encoder << usesNetworkProcess;
111 #endif
112
113     encoder << plugInAutoStartOrigins;
114 }
115
116 bool WebProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, WebProcessCreationParameters& parameters)
117 {
118     if (!decoder->decode(parameters.injectedBundlePath))
119         return false;
120     if (!decoder->decode(parameters.injectedBundlePathExtensionHandle))
121         return false;
122     if (!decoder->decode(parameters.applicationCacheDirectory))
123         return false;
124     if (!decoder->decode(parameters.applicationCacheDirectoryExtensionHandle))
125         return false;
126     if (!decoder->decode(parameters.databaseDirectory))
127         return false;
128     if (!decoder->decode(parameters.databaseDirectoryExtensionHandle))
129         return false;
130     if (!decoder->decode(parameters.localStorageDirectory))
131         return false;
132     if (!decoder->decode(parameters.localStorageDirectoryExtensionHandle))
133         return false;
134     if (!decoder->decode(parameters.diskCacheDirectory))
135         return false;
136     if (!decoder->decode(parameters.diskCacheDirectoryExtensionHandle))
137         return false;
138     if (!decoder->decode(parameters.cookieStorageDirectory))
139         return false;
140     if (!decoder->decode(parameters.cookieStorageDirectoryExtensionHandle))
141         return false;
142     if (!decoder->decode(parameters.urlSchemesRegistererdAsEmptyDocument))
143         return false;
144     if (!decoder->decode(parameters.urlSchemesRegisteredAsSecure))
145         return false;
146     if (!decoder->decode(parameters.urlSchemesForWhichDomainRelaxationIsForbidden))
147         return false;
148     if (!decoder->decode(parameters.urlSchemesRegisteredAsLocal))
149         return false;
150     if (!decoder->decode(parameters.urlSchemesRegisteredAsNoAccess))
151         return false;
152     if (!decoder->decode(parameters.urlSchemesRegisteredAsDisplayIsolated))
153         return false;
154     if (!decoder->decode(parameters.urlSchemesRegisteredAsCORSEnabled))
155         return false;
156 #if ENABLE(CUSTOM_PROTOCOLS)
157     if (!decoder->decode(parameters.urlSchemesRegisteredForCustomProtocols))
158         return false;
159 #endif
160 #if USE(SOUP)
161     if (!decoder->decode(parameters.urlSchemesRegistered))
162         return false;
163     if (!decoder->decode(parameters.cookiePersistentStoragePath))
164         return false;
165     if (!decoder->decode(parameters.cookiePersistentStorageType))
166         return false;
167     if (!decoder->decodeEnum(parameters.cookieAcceptPolicy))
168         return false;
169     if (!decoder->decode(parameters.ignoreTLSErrors))
170         return false;
171 #endif
172     if (!decoder->decodeEnum(parameters.cacheModel))
173         return false;
174     if (!decoder->decode(parameters.shouldTrackVisitedLinks))
175         return false;
176     if (!decoder->decode(parameters.shouldAlwaysUseComplexTextCodePath))
177         return false;
178     if (!decoder->decode(parameters.shouldUseFontSmoothing))
179         return false;
180     if (!decoder->decode(parameters.iconDatabaseEnabled))
181         return false;
182     if (!decoder->decode(parameters.terminationTimeout))
183         return false;
184     if (!decoder->decode(parameters.languages))
185         return false;
186     if (!decoder->decode(parameters.textCheckerState))
187         return false;
188     if (!decoder->decode(parameters.fullKeyboardAccessEnabled))
189         return false;
190     if (!decoder->decode(parameters.defaultRequestTimeoutInterval))
191         return false;
192 #if PLATFORM(MAC) || USE(CFNETWORK)
193     if (!decoder->decode(parameters.uiProcessBundleIdentifier))
194         return false;
195 #endif
196
197 #if PLATFORM(MAC)
198     if (!decoder->decode(parameters.presenterApplicationPid))
199         return false;
200     if (!decoder->decode(parameters.nsURLCacheMemoryCapacity))
201         return false;
202     if (!decoder->decode(parameters.nsURLCacheDiskCapacity))
203         return false;
204     if (!decoder->decode(parameters.acceleratedCompositingPort))
205         return false;
206     if (!decoder->decode(parameters.uiProcessBundleResourcePath))
207         return false;
208     if (!decoder->decode(parameters.uiProcessBundleResourcePathExtensionHandle))
209         return false;
210     if (!decoder->decode(parameters.shouldForceScreenFontSubstitution))
211         return false;
212     if (!decoder->decode(parameters.shouldEnableKerningAndLigaturesByDefault))
213         return false;
214 #endif
215
216 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
217     if (!decoder->decode(parameters.notificationPermissions))
218         return false;
219 #endif
220
221 #if ENABLE(NETWORK_PROCESS)
222     if (!decoder->decode(parameters.usesNetworkProcess))
223         return false;
224 #endif
225
226     if (!decoder->decode(parameters.plugInAutoStartOrigins))
227         return false;
228
229     return true;
230 }
231
232 } // namespace WebKit