WebProcessCreationParameters.cpp [plain text]
#include "config.h"
#include "WebProcessCreationParameters.h"
#include "APIData.h"
#if PLATFORM(COCOA)
#include "ArgumentCodersCF.h"
#endif
#include "WebCoreArgumentCoders.h"
namespace WebKit {
WebProcessCreationParameters::WebProcessCreationParameters()
: shouldAlwaysUseComplexTextCodePath(false)
, shouldEnableMemoryPressureReliefLogging(false)
, shouldUseFontSmoothing(true)
, defaultRequestTimeoutInterval(INT_MAX)
#if PLATFORM(COCOA)
, shouldEnableKerningAndLigaturesByDefault(false)
, shouldEnableJIT(false)
, shouldEnableFTLJIT(false)
#endif
#if ENABLE(NETWORK_PROCESS)
, usesNetworkProcess(false)
#endif
, memoryCacheDisabled(false)
#if ENABLE(SERVICE_CONTROLS)
, hasImageServices(false)
, hasSelectionServices(false)
, hasRichContentServices(false)
#endif
{
}
WebProcessCreationParameters::~WebProcessCreationParameters()
{
}
void WebProcessCreationParameters::encode(IPC::ArgumentEncoder& encoder) const
{
encoder << injectedBundlePath;
encoder << injectedBundlePathExtensionHandle;
encoder << initializationUserData;
encoder << applicationCacheDirectory;
encoder << applicationCacheDirectoryExtensionHandle;
encoder << webSQLDatabaseDirectory;
encoder << webSQLDatabaseDirectoryExtensionHandle;
#if ENABLE(SECCOMP_FILTERS)
encoder << cookieStorageDirectory;
#endif
#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
encoder << uiProcessCookieStorageIdentifier;
#endif
#if PLATFORM(IOS)
encoder << cookieStorageDirectoryExtensionHandle;
encoder << containerCachesDirectoryExtensionHandle;
encoder << containerTemporaryDirectoryExtensionHandle;
#endif
encoder << mediaKeyStorageDirectory;
encoder << mediaKeyStorageDirectoryExtensionHandle;
encoder << shouldUseTestingNetworkSession;
encoder << urlSchemesRegisteredAsEmptyDocument;
encoder << urlSchemesRegisteredAsSecure;
encoder << urlSchemesRegisteredAsBypassingContentSecurityPolicy;
encoder << urlSchemesForWhichDomainRelaxationIsForbidden;
encoder << urlSchemesRegisteredAsLocal;
encoder << urlSchemesRegisteredAsNoAccess;
encoder << urlSchemesRegisteredAsDisplayIsolated;
encoder << urlSchemesRegisteredAsCORSEnabled;
#if ENABLE(CACHE_PARTITIONING)
encoder << urlSchemesRegisteredAsCachePartitioned;
#endif
encoder << urlSchemesRegisteredForCustomProtocols;
#if USE(SOUP)
encoder << diskCacheDirectory;
encoder << cookiePersistentStoragePath;
encoder << cookiePersistentStorageType;
encoder.encodeEnum(cookieAcceptPolicy);
encoder << ignoreTLSErrors;
#endif
encoder.encodeEnum(cacheModel);
encoder << shouldAlwaysUseComplexTextCodePath;
encoder << shouldEnableMemoryPressureReliefLogging;
encoder << shouldUseFontSmoothing;
encoder << fontWhitelist;
encoder << iconDatabaseEnabled;
encoder << terminationTimeout;
encoder << languages;
encoder << textCheckerState;
encoder << fullKeyboardAccessEnabled;
encoder << defaultRequestTimeoutInterval;
#if PLATFORM(COCOA) || USE(CFNETWORK)
encoder << uiProcessBundleIdentifier;
#endif
#if PLATFORM(COCOA)
encoder << presenterApplicationPid;
encoder << accessibilityEnhancedUserInterfaceEnabled;
encoder << acceleratedCompositingPort;
encoder << uiProcessBundleResourcePath;
encoder << uiProcessBundleResourcePathExtensionHandle;
encoder << shouldEnableKerningAndLigaturesByDefault;
encoder << shouldEnableJIT;
encoder << shouldEnableFTLJIT;
encoder << !!bundleParameterData;
if (bundleParameterData)
encoder << bundleParameterData->dataReference();
#endif
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
encoder << notificationPermissions;
#endif
#if ENABLE(NETWORK_PROCESS)
encoder << usesNetworkProcess;
#endif
encoder << plugInAutoStartOriginHashes;
encoder << plugInAutoStartOrigins;
encoder << memoryCacheDisabled;
#if ENABLE(SERVICE_CONTROLS)
encoder << hasImageServices;
encoder << hasSelectionServices;
encoder << hasRichContentServices;
#endif
#if ENABLE(NETSCAPE_PLUGIN_API)
encoder << pluginLoadClientPolicies;
#endif
#if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
IPC::encode(encoder, networkATSContext.get());
#endif
}
bool WebProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebProcessCreationParameters& parameters)
{
if (!decoder.decode(parameters.injectedBundlePath))
return false;
if (!decoder.decode(parameters.injectedBundlePathExtensionHandle))
return false;
if (!decoder.decode(parameters.initializationUserData))
return false;
if (!decoder.decode(parameters.applicationCacheDirectory))
return false;
if (!decoder.decode(parameters.applicationCacheDirectoryExtensionHandle))
return false;
if (!decoder.decode(parameters.webSQLDatabaseDirectory))
return false;
if (!decoder.decode(parameters.webSQLDatabaseDirectoryExtensionHandle))
return false;
#if ENABLE(SECCOMP_FILTERS)
if (!decoder.decode(parameters.cookieStorageDirectory))
return false;
#endif
#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier))
return false;
#endif
#if PLATFORM(IOS)
if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle))
return false;
if (!decoder.decode(parameters.containerCachesDirectoryExtensionHandle))
return false;
if (!decoder.decode(parameters.containerTemporaryDirectoryExtensionHandle))
return false;
#endif
if (!decoder.decode(parameters.mediaKeyStorageDirectory))
return false;
if (!decoder.decode(parameters.mediaKeyStorageDirectoryExtensionHandle))
return false;
if (!decoder.decode(parameters.shouldUseTestingNetworkSession))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsEmptyDocument))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsSecure))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy))
return false;
if (!decoder.decode(parameters.urlSchemesForWhichDomainRelaxationIsForbidden))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsLocal))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsNoAccess))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsDisplayIsolated))
return false;
if (!decoder.decode(parameters.urlSchemesRegisteredAsCORSEnabled))
return false;
#if ENABLE(CACHE_PARTITIONING)
if (!decoder.decode(parameters.urlSchemesRegisteredAsCachePartitioned))
return false;
#endif
if (!decoder.decode(parameters.urlSchemesRegisteredForCustomProtocols))
return false;
#if USE(SOUP)
if (!decoder.decode(parameters.diskCacheDirectory))
return false;
if (!decoder.decode(parameters.cookiePersistentStoragePath))
return false;
if (!decoder.decode(parameters.cookiePersistentStorageType))
return false;
if (!decoder.decodeEnum(parameters.cookieAcceptPolicy))
return false;
if (!decoder.decode(parameters.ignoreTLSErrors))
return false;
#endif
if (!decoder.decodeEnum(parameters.cacheModel))
return false;
if (!decoder.decode(parameters.shouldAlwaysUseComplexTextCodePath))
return false;
if (!decoder.decode(parameters.shouldEnableMemoryPressureReliefLogging))
return false;
if (!decoder.decode(parameters.shouldUseFontSmoothing))
return false;
if (!decoder.decode(parameters.fontWhitelist))
return false;
if (!decoder.decode(parameters.iconDatabaseEnabled))
return false;
if (!decoder.decode(parameters.terminationTimeout))
return false;
if (!decoder.decode(parameters.languages))
return false;
if (!decoder.decode(parameters.textCheckerState))
return false;
if (!decoder.decode(parameters.fullKeyboardAccessEnabled))
return false;
if (!decoder.decode(parameters.defaultRequestTimeoutInterval))
return false;
#if PLATFORM(COCOA) || USE(CFNETWORK)
if (!decoder.decode(parameters.uiProcessBundleIdentifier))
return false;
#endif
#if PLATFORM(COCOA)
if (!decoder.decode(parameters.presenterApplicationPid))
return false;
if (!decoder.decode(parameters.accessibilityEnhancedUserInterfaceEnabled))
return false;
if (!decoder.decode(parameters.acceleratedCompositingPort))
return false;
if (!decoder.decode(parameters.uiProcessBundleResourcePath))
return false;
if (!decoder.decode(parameters.uiProcessBundleResourcePathExtensionHandle))
return false;
if (!decoder.decode(parameters.shouldEnableKerningAndLigaturesByDefault))
return false;
if (!decoder.decode(parameters.shouldEnableJIT))
return false;
if (!decoder.decode(parameters.shouldEnableFTLJIT))
return false;
bool hasBundleParameterData;
if (!decoder.decode(hasBundleParameterData))
return false;
if (hasBundleParameterData) {
IPC::DataReference dataReference;
if (!decoder.decode(dataReference))
return false;
parameters.bundleParameterData = API::Data::create(dataReference.data(), dataReference.size());
}
#endif
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
if (!decoder.decode(parameters.notificationPermissions))
return false;
#endif
#if ENABLE(NETWORK_PROCESS)
if (!decoder.decode(parameters.usesNetworkProcess))
return false;
#endif
if (!decoder.decode(parameters.plugInAutoStartOriginHashes))
return false;
if (!decoder.decode(parameters.plugInAutoStartOrigins))
return false;
if (!decoder.decode(parameters.memoryCacheDisabled))
return false;
#if ENABLE(SERVICE_CONTROLS)
if (!decoder.decode(parameters.hasImageServices))
return false;
if (!decoder.decode(parameters.hasSelectionServices))
return false;
if (!decoder.decode(parameters.hasRichContentServices))
return false;
#endif
#if ENABLE(NETSCAPE_PLUGIN_API)
if (!decoder.decode(parameters.pluginLoadClientPolicies))
return false;
#endif
#if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
if (!IPC::decode(decoder, parameters.networkATSContext))
return false;
#endif
return true;
}
}