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