diff options
Diffstat (limited to 'Source/WebKit2/Shared/WebProcessCreationParameters.cpp')
-rw-r--r-- | Source/WebKit2/Shared/WebProcessCreationParameters.cpp | 245 |
1 files changed, 157 insertions, 88 deletions
diff --git a/Source/WebKit2/Shared/WebProcessCreationParameters.cpp b/Source/WebKit2/Shared/WebProcessCreationParameters.cpp index eb27b9c0f..7326e7cd2 100644 --- a/Source/WebKit2/Shared/WebProcessCreationParameters.cpp +++ b/Source/WebKit2/Shared/WebProcessCreationParameters.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. + * Copyright (C) 2010-2017 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,132 +26,172 @@ #include "config.h" #include "WebProcessCreationParameters.h" -#include "ArgumentCoders.h" +#include "APIData.h" +#if PLATFORM(COCOA) +#include "ArgumentCodersCF.h" +#endif +#include "WebCoreArgumentCoders.h" namespace WebKit { WebProcessCreationParameters::WebProcessCreationParameters() - : shouldTrackVisitedLinks(false) - , shouldAlwaysUseComplexTextCodePath(false) - , shouldUseFontSmoothing(true) - , defaultRequestTimeoutInterval(INT_MAX) -#if PLATFORM(MAC) - , nsURLCacheMemoryCapacity(0) - , nsURLCacheDiskCapacity(0) - , shouldForceScreenFontSubstitution(false) - , shouldEnableKerningAndLigaturesByDefault(false) -#endif -#if ENABLE(NETWORK_PROCESS) - , usesNetworkProcess(false) -#endif - , memoryCacheDisabled(false) { } -void WebProcessCreationParameters::encode(IPC::ArgumentEncoder& encoder) const +WebProcessCreationParameters::~WebProcessCreationParameters() +{ +} + +void WebProcessCreationParameters::encode(IPC::Encoder& encoder) const { encoder << injectedBundlePath; encoder << injectedBundlePathExtensionHandle; + encoder << initializationUserData; encoder << applicationCacheDirectory; + encoder << applicationCacheFlatFileSubdirectoryName; encoder << applicationCacheDirectoryExtensionHandle; - encoder << databaseDirectory; - encoder << databaseDirectoryExtensionHandle; - encoder << localStorageDirectory; - encoder << localStorageDirectoryExtensionHandle; - encoder << diskCacheDirectory; - encoder << diskCacheDirectoryExtensionHandle; - encoder << cookieStorageDirectory; + encoder << webSQLDatabaseDirectory; + encoder << webSQLDatabaseDirectoryExtensionHandle; + encoder << mediaCacheDirectory; + encoder << mediaCacheDirectoryExtensionHandle; +#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; +#if ENABLE(MEDIA_STREAM) + encoder << audioCaptureExtensionHandle; +#endif encoder << shouldUseTestingNetworkSession; - encoder << urlSchemesRegistererdAsEmptyDocument; + encoder << urlSchemesRegisteredAsEmptyDocument; encoder << urlSchemesRegisteredAsSecure; + encoder << urlSchemesRegisteredAsBypassingContentSecurityPolicy; encoder << urlSchemesForWhichDomainRelaxationIsForbidden; encoder << urlSchemesRegisteredAsLocal; encoder << urlSchemesRegisteredAsNoAccess; encoder << urlSchemesRegisteredAsDisplayIsolated; encoder << urlSchemesRegisteredAsCORSEnabled; -#if ENABLE(CUSTOM_PROTOCOLS) - encoder << urlSchemesRegisteredForCustomProtocols; -#endif -#if USE(SOUP) -#if !ENABLE(CUSTOM_PROTOCOLS) - encoder << urlSchemesRegistered; -#endif - encoder << cookiePersistentStoragePath; - encoder << cookiePersistentStorageType; - encoder.encodeEnum(cookieAcceptPolicy); - encoder << ignoreTLSErrors; -#endif + encoder << urlSchemesRegisteredAsAlwaysRevalidated; + encoder << urlSchemesRegisteredAsCachePartitioned; encoder.encodeEnum(cacheModel); - encoder << shouldTrackVisitedLinks; encoder << shouldAlwaysUseComplexTextCodePath; + encoder << shouldEnableMemoryPressureReliefLogging; + encoder << shouldSuppressMemoryPressureHandler; encoder << shouldUseFontSmoothing; + encoder << resourceLoadStatisticsEnabled; + encoder << fontWhitelist; encoder << iconDatabaseEnabled; encoder << terminationTimeout; encoder << languages; encoder << textCheckerState; encoder << fullKeyboardAccessEnabled; encoder << defaultRequestTimeoutInterval; -#if PLATFORM(MAC) || USE(CFNETWORK) +#if PLATFORM(COCOA) || USE(CFURLCONNECTION) encoder << uiProcessBundleIdentifier; #endif -#if PLATFORM(MAC) +#if PLATFORM(COCOA) encoder << presenterApplicationPid; encoder << accessibilityEnhancedUserInterfaceEnabled; - encoder << nsURLCacheMemoryCapacity; - encoder << nsURLCacheDiskCapacity; encoder << acceleratedCompositingPort; encoder << uiProcessBundleResourcePath; encoder << uiProcessBundleResourcePathExtensionHandle; - encoder << shouldForceScreenFontSubstitution; - 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 || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) + IPC::encode(encoder, networkATSContext.get()); +#endif + +#if OS(LINUX) + encoder << memoryPressureMonitorHandle; +#endif + +#if PLATFORM(WAYLAND) + encoder << waylandCompositorDisplayName; +#endif + +#if USE(SOUP) + encoder << proxySettings; +#endif } -bool WebProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebProcessCreationParameters& parameters) +bool WebProcessCreationParameters::decode(IPC::Decoder& 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.applicationCacheFlatFileSubdirectoryName)) + return false; if (!decoder.decode(parameters.applicationCacheDirectoryExtensionHandle)) return false; - if (!decoder.decode(parameters.databaseDirectory)) + if (!decoder.decode(parameters.webSQLDatabaseDirectory)) return false; - if (!decoder.decode(parameters.databaseDirectoryExtensionHandle)) + if (!decoder.decode(parameters.webSQLDatabaseDirectoryExtensionHandle)) return false; - if (!decoder.decode(parameters.localStorageDirectory)) + if (!decoder.decode(parameters.mediaCacheDirectory)) return false; - if (!decoder.decode(parameters.localStorageDirectoryExtensionHandle)) + if (!decoder.decode(parameters.mediaCacheDirectoryExtensionHandle)) return false; - if (!decoder.decode(parameters.diskCacheDirectory)) +#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 + if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier)) return false; - if (!decoder.decode(parameters.diskCacheDirectoryExtensionHandle)) +#endif +#if PLATFORM(IOS) + if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle)) return false; - if (!decoder.decode(parameters.cookieStorageDirectory)) + if (!decoder.decode(parameters.containerCachesDirectoryExtensionHandle)) return false; - if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle)) + if (!decoder.decode(parameters.containerTemporaryDirectoryExtensionHandle)) + return false; +#endif + if (!decoder.decode(parameters.mediaKeyStorageDirectory)) + return false; + if (!decoder.decode(parameters.mediaKeyStorageDirectoryExtensionHandle)) + return false; +#if ENABLE(MEDIA_STREAM) + if (!decoder.decode(parameters.audioCaptureExtensionHandle)) return false; +#endif if (!decoder.decode(parameters.shouldUseTestingNetworkSession)) return false; - if (!decoder.decode(parameters.urlSchemesRegistererdAsEmptyDocument)) + 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)) @@ -162,31 +202,23 @@ bool WebProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebProc return false; if (!decoder.decode(parameters.urlSchemesRegisteredAsCORSEnabled)) return false; -#if ENABLE(CUSTOM_PROTOCOLS) - if (!decoder.decode(parameters.urlSchemesRegisteredForCustomProtocols)) - return false; -#endif -#if USE(SOUP) -#if !ENABLE(CUSTOM_PROTOCOLS) - if (!decoder.decode(parameters.urlSchemesRegistered)) + if (!decoder.decode(parameters.urlSchemesRegisteredAsAlwaysRevalidated)) return false; -#endif - if (!decoder.decode(parameters.cookiePersistentStoragePath)) + if (!decoder.decode(parameters.urlSchemesRegisteredAsCachePartitioned)) return false; - if (!decoder.decode(parameters.cookiePersistentStorageType)) + if (!decoder.decodeEnum(parameters.cacheModel)) return false; - if (!decoder.decodeEnum(parameters.cookieAcceptPolicy)) + if (!decoder.decode(parameters.shouldAlwaysUseComplexTextCodePath)) return false; - if (!decoder.decode(parameters.ignoreTLSErrors)) + if (!decoder.decode(parameters.shouldEnableMemoryPressureReliefLogging)) return false; -#endif - if (!decoder.decodeEnum(parameters.cacheModel)) + if (!decoder.decode(parameters.shouldSuppressMemoryPressureHandler)) return false; - if (!decoder.decode(parameters.shouldTrackVisitedLinks)) + if (!decoder.decode(parameters.shouldUseFontSmoothing)) return false; - if (!decoder.decode(parameters.shouldAlwaysUseComplexTextCodePath)) + if (!decoder.decode(parameters.resourceLoadStatisticsEnabled)) return false; - if (!decoder.decode(parameters.shouldUseFontSmoothing)) + if (!decoder.decode(parameters.fontWhitelist)) return false; if (!decoder.decode(parameters.iconDatabaseEnabled)) return false; @@ -200,39 +232,42 @@ bool WebProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebProc return false; if (!decoder.decode(parameters.defaultRequestTimeoutInterval)) return false; -#if PLATFORM(MAC) || USE(CFNETWORK) +#if PLATFORM(COCOA) || USE(CFURLCONNECTION) if (!decoder.decode(parameters.uiProcessBundleIdentifier)) return false; #endif -#if PLATFORM(MAC) +#if PLATFORM(COCOA) if (!decoder.decode(parameters.presenterApplicationPid)) return false; if (!decoder.decode(parameters.accessibilityEnhancedUserInterfaceEnabled)) return false; - if (!decoder.decode(parameters.nsURLCacheMemoryCapacity)) - return false; - if (!decoder.decode(parameters.nsURLCacheDiskCapacity)) - 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.shouldForceScreenFontSubstitution)) + if (!decoder.decode(parameters.shouldEnableJIT)) return false; - if (!decoder.decode(parameters.shouldEnableKerningAndLigaturesByDefault)) + if (!decoder.decode(parameters.shouldEnableFTLJIT)) return false; -#endif -#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) - if (!decoder.decode(parameters.notificationPermissions)) + 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(NETWORK_PROCESS) - if (!decoder.decode(parameters.usesNetworkProcess)) +#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) + if (!decoder.decode(parameters.notificationPermissions)) return false; #endif @@ -243,6 +278,40 @@ bool WebProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebProc 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 || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) + if (!IPC::decode(decoder, parameters.networkATSContext)) + return false; +#endif + +#if OS(LINUX) + if (!decoder.decode(parameters.memoryPressureMonitorHandle)) + return false; +#endif + +#if PLATFORM(WAYLAND) + if (!decoder.decode(parameters.waylandCompositorDisplayName)) + return false; +#endif + +#if USE(SOUP) + if (!decoder.decode(parameters.proxySettings)) + return false; +#endif + return true; } |