void AssistedNodeInformation::encode(IPC::ArgumentEncoder& encoder) const { encoder << elementRect; encoder << selectionRect; encoder << minimumScaleFactor; encoder << maximumScaleFactor; encoder << nodeFontSize; encoder << hasNextNode; encoder << hasPreviousNode; encoder << isAutocorrect; encoder << isRTL; encoder.encodeEnum(autocapitalizeType); encoder.encodeEnum(elementType); encoder << formAction; encoder << selectOptions; encoder << selectedIndex; encoder << isMultiSelect; encoder << isReadOnly; encoder << allowsUserScaling; encoder << allowsUserScalingIgnoringForceAlwaysScaling; encoder << insideFixedPosition; encoder << value; encoder << valueAsNumber; encoder << title; encoder.encodeEnum(autofillFieldName); }
void WebContextMenuItemData::encode(IPC::ArgumentEncoder& encoder) const { // WebContextMenuItemDatas with a selection handler are meant to exist solely in the UIProcess and should never be sent over IPC. ASSERT(!m_selectionHandler); encoder.encodeEnum(m_type); encoder.encodeEnum(m_action); encoder << m_title; encoder << m_checked; encoder << m_enabled; encoder << m_submenu; }
void WebPageCreationParameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << viewSize; encoder << viewState; encoder << store; encoder.encodeEnum(drawingAreaType); encoder << pageGroupData; encoder << drawsBackground; encoder << isEditable; encoder << drawsTransparentBackground; encoder << underlayColor; encoder << useFixedLayout; encoder << fixedLayoutSize; encoder.encodeEnum(paginationMode); encoder << paginationBehavesLikeColumns; encoder << pageLength; encoder << gapBetweenPages; encoder << userAgent; encoder << itemStates; encoder << sessionID; encoder << highestUsedBackForwardItemID; encoder << userContentControllerID; encoder << visitedLinkTableID; encoder << websiteDataStoreID; encoder << canRunBeforeUnloadConfirmPanel; encoder << canRunModal; encoder << deviceScaleFactor; encoder << topContentInset; encoder << mediaVolume; encoder << muted; encoder << mayStartMediaWhenInWindow; encoder << minimumLayoutSize; encoder << autoSizingShouldExpandToViewHeight; encoder.encodeEnum(scrollPinningBehavior); encoder << backgroundExtendsBeyondPage; encoder.encodeEnum(layerHostingMode); encoder << mimeTypesWithCustomContentProviders; #if ENABLE(REMOTE_INSPECTOR) encoder << allowsRemoteInspection; #endif #if PLATFORM(MAC) encoder << colorSpace; #endif #if PLATFORM(IOS) encoder << screenSize; encoder << availableScreenSize; encoder << textAutosizingWidth; #endif encoder << appleMailPaginationQuirkEnabled; }
void NetworkResourceLoadParameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << identifier; encoder << webPageID; encoder << webFrameID; encoder << sessionID; encoder << request; encoder << static_cast<bool>(request.httpBody()); if (request.httpBody()) { EncoderAdapter httpBodyEncoderAdapter; request.httpBody()->encode(httpBodyEncoderAdapter); encoder << httpBodyEncoderAdapter.dataReference(); const Vector<FormDataElement>& elements = request.httpBody()->elements(); size_t fileCount = 0; for (size_t i = 0, count = elements.size(); i < count; ++i) { if (elements[i].m_type == FormDataElement::encodedFile) ++fileCount; } SandboxExtension::HandleArray requestBodySandboxExtensions; requestBodySandboxExtensions.allocate(fileCount); size_t extensionIndex = 0; for (size_t i = 0, count = elements.size(); i < count; ++i) { const FormDataElement& element = elements[i]; if (element.m_type == FormDataElement::encodedFile) { const String& path = element.m_shouldGenerateFile ? element.m_generatedFilename : element.m_filename; SandboxExtension::createHandle(path, SandboxExtension::ReadOnly, requestBodySandboxExtensions[extensionIndex++]); } } encoder << requestBodySandboxExtensions; } if (request.url().isLocalFile()) { SandboxExtension::Handle requestSandboxExtension; SandboxExtension::createHandle(request.url().fileSystemPath(), SandboxExtension::ReadOnly, requestSandboxExtension); encoder << requestSandboxExtension; } encoder.encodeEnum(priority); encoder.encodeEnum(contentSniffingPolicy); encoder.encodeEnum(allowStoredCredentials); encoder.encodeEnum(clientCredentialPolicy); encoder << shouldClearReferrerOnHTTPSToHTTPRedirect; encoder << isMainResource; }
void UserData::encode(IPC::ArgumentEncoder& encoder, const API::Object* object) const { if (!object) { encoder.encodeEnum(API::Object::Type::Null); return; } encode(encoder, *object); }
void NetworkProcessCreationParameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << privateBrowsingEnabled; encoder.encodeEnum(cacheModel); encoder << diskCacheSizeOverride; encoder << canHandleHTTPSServerTrustEvaluation; encoder << diskCacheDirectory; encoder << diskCacheDirectoryExtensionHandle; #if ENABLE(NETWORK_CACHE) encoder << shouldEnableNetworkCache; encoder << shouldEnableNetworkCacheEfficacyLogging; #endif #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 << parentBundleDirectoryExtensionHandle; #endif encoder << shouldUseTestingNetworkSession; encoder << urlSchemesRegisteredForCustomProtocols; #if PLATFORM(COCOA) encoder << parentProcessName; encoder << uiProcessBundleIdentifier; encoder << nsURLCacheMemoryCapacity; encoder << nsURLCacheDiskCapacity; encoder << httpProxy; encoder << httpsProxy; #if TARGET_OS_IPHONE || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) IPC::encode(encoder, networkATSContext.get()); #endif #endif #if USE(SOUP) encoder << cookiePersistentStoragePath; encoder << cookiePersistentStorageType; encoder.encodeEnum(cookieAcceptPolicy); encoder << ignoreTLSErrors; encoder << languages; #endif }
void HTTPBody::Element::encode(IPC::ArgumentEncoder& encoder) const { encoder.encodeEnum(type); encoder << data; encoder << filePath; encoder << fileStart; encoder << fileLength; encoder << expectedFileModificationTime; encoder << blobURLString; }
void PlatformPopupMenuData::encode(IPC::ArgumentEncoder& encoder) const { #if PLATFORM(COCOA) encoder << fontInfo; encoder << shouldPopOver; encoder << hideArrows; encoder.encodeEnum(menuSize); #else UNUSED_PARAM(encoder); #endif }
void Plugin::Parameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << url.string(); encoder << names; encoder << values; encoder << mimeType; encoder << isFullFramePlugin; encoder << shouldUseManualLoader; #if PLATFORM(COCOA) encoder.encodeEnum(layerHostingMode); #endif }
void WebPageCreationParameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << viewSize; encoder << viewState; encoder << store; encoder.encodeEnum(drawingAreaType); encoder << pageGroupData; encoder << drawsBackground; encoder << drawsTransparentBackground; encoder << underlayColor; encoder << areMemoryCacheClientCallsEnabled; encoder << useFixedLayout; encoder << fixedLayoutSize; encoder.encodeEnum(paginationMode); encoder << paginationBehavesLikeColumns; encoder << pageLength; encoder << gapBetweenPages; encoder << userAgent; encoder << sessionState; encoder << highestUsedBackForwardItemID; encoder << visitedLinkTableID; encoder << canRunBeforeUnloadConfirmPanel; encoder << canRunModal; encoder << deviceScaleFactor; encoder << mediaVolume; encoder << mayStartMediaWhenInWindow; encoder << minimumLayoutSize; encoder << autoSizingShouldExpandToViewHeight; encoder.encodeEnum(scrollPinningBehavior); encoder << backgroundExtendsBeyondPage; encoder.encodeEnum(layerHostingMode); #if PLATFORM(COCOA) encoder << colorSpace; #endif #if PLATFORM(IOS) encoder << viewportScreenSize; #endif }
void WebProcessCreationParameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << injectedBundlePath; encoder << injectedBundlePathExtensionHandle; encoder << applicationCacheDirectory; encoder << applicationCacheDirectoryExtensionHandle; encoder << webSQLDatabaseDirectory; encoder << webSQLDatabaseDirectoryExtensionHandle; encoder << diskCacheDirectory; encoder << diskCacheDirectoryExtensionHandle; encoder << cookieStorageDirectory; #if PLATFORM(IOS) encoder << cookieStorageDirectoryExtensionHandle; encoder << openGLCacheDirectoryExtensionHandle; encoder << containerTemporaryDirectoryExtensionHandle; encoder << hstsDatabasePathExtensionHandle; #endif encoder << shouldUseTestingNetworkSession; encoder << urlSchemesRegistererdAsEmptyDocument; encoder << urlSchemesRegisteredAsSecure; encoder << urlSchemesForWhichDomainRelaxationIsForbidden; encoder << urlSchemesRegisteredAsLocal; encoder << urlSchemesRegisteredAsNoAccess; encoder << urlSchemesRegisteredAsDisplayIsolated; encoder << urlSchemesRegisteredAsCORSEnabled; #if ENABLE(CACHE_PARTITIONING) encoder << urlSchemesRegisteredAsCachePartitioned; #endif #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.encodeEnum(cacheModel); encoder << shouldAlwaysUseComplexTextCodePath; encoder << shouldUseFontSmoothing; 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 << nsURLCacheMemoryCapacity; encoder << nsURLCacheDiskCapacity; encoder << acceleratedCompositingPort; encoder << uiProcessBundleResourcePath; encoder << uiProcessBundleResourcePathExtensionHandle; encoder << shouldForceScreenFontSubstitution; encoder << shouldEnableKerningAndLigaturesByDefault; encoder << shouldEnableJIT; encoder << shouldEnableFTLJIT; encoder << shouldEnableMemoryPressureReliefLogging; 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; #endif }
void WebsiteData::Entry::encode(IPC::ArgumentEncoder& encoder) const { encoder << SecurityOriginData::fromSecurityOrigin(*origin); encoder.encodeEnum(type); }
void WebProcessCreationParameters::encode(IPC::ArgumentEncoder& encoder) const { encoder << injectedBundlePath; encoder << injectedBundlePathExtensionHandle; encoder << initializationUserData; encoder << applicationCacheDirectory; encoder << applicationCacheFlatFileSubdirectoryName; encoder << applicationCacheDirectoryExtensionHandle; 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; encoder << shouldUseTestingNetworkSession; encoder << urlSchemesRegisteredAsEmptyDocument; encoder << urlSchemesRegisteredAsSecure; encoder << urlSchemesRegisteredAsBypassingContentSecurityPolicy; encoder << urlSchemesForWhichDomainRelaxationIsForbidden; encoder << urlSchemesRegisteredAsLocal; encoder << urlSchemesRegisteredAsNoAccess; encoder << urlSchemesRegisteredAsDisplayIsolated; encoder << urlSchemesRegisteredAsCORSEnabled; encoder << urlSchemesRegisteredAsAlwaysRevalidated; #if ENABLE(CACHE_PARTITIONING) encoder << urlSchemesRegisteredAsCachePartitioned; #endif encoder.encodeEnum(cacheModel); 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(COCOA) || USE(CFNETWORK) encoder << uiProcessBundleIdentifier; #endif #if PLATFORM(COCOA) encoder << presenterApplicationPid; encoder << accessibilityEnhancedUserInterfaceEnabled; encoder << acceleratedCompositingPort; encoder << uiProcessBundleResourcePath; encoder << uiProcessBundleResourcePathExtensionHandle; encoder << shouldEnableJIT; encoder << shouldEnableFTLJIT; encoder << !!bundleParameterData; if (bundleParameterData) encoder << bundleParameterData->dataReference(); #endif #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) encoder << notificationPermissions; #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 }
void UserData::encode(IPC::ArgumentEncoder& encoder, const API::Object& object) const { API::Object::Type type = object.type(); encoder.encodeEnum(type); switch (object.type()) { case API::Object::Type::Array: { auto& array = static_cast<const API::Array&>(object); encoder << static_cast<uint64_t>(array.size()); for (size_t i = 0; i < array.size(); ++i) encode(encoder, array.at(i)); break; } case API::Object::Type::Boolean: static_cast<const API::Boolean&>(object).encode(encoder); break; case API::Object::Type::Data: static_cast<const API::Data&>(object).encode(encoder); break; case API::Object::Type::Dictionary: { auto& dictionary = static_cast<const ImmutableDictionary&>(object); auto& map = dictionary.map(); encoder << static_cast<uint64_t>(map.size()); for (const auto& keyValuePair : map) { encoder << keyValuePair.key; encode(encoder, keyValuePair.value.get()); } break; } case API::Object::Type::Error: static_cast<const API::Error&>(object).encode(encoder); break; case API::Object::Type::FrameHandle: { auto& frameHandle = static_cast<const API::FrameHandle&>(object); encoder << frameHandle.frameID(); break; } case API::Object::Type::Point: static_cast<const API::Point&>(object).encode(encoder); break; case API::Object::Type::Rect: static_cast<const API::Rect&>(object).encode(encoder); break; case API::Object::Type::SerializedScriptValue: { auto& serializedScriptValue = static_cast<const WebSerializedScriptValue&>(object); encoder << serializedScriptValue.dataReference(); break; } case API::Object::Type::Size: static_cast<const API::Size&>(object).encode(encoder); break; case API::Object::Type::String: { auto& string = static_cast<const API::String&>(object); encoder << string.string(); break; } case API::Object::Type::URL: { static_cast<const API::URL&>(object).encode(encoder); break; } case API::Object::Type::URLRequest: static_cast<const API::URLRequest&>(object).encode(encoder); break; case API::Object::Type::URLResponse: static_cast<const API::URLResponse&>(object).encode(encoder); break; case API::Object::Type::UInt64: static_cast<const API::UInt64&>(object).encode(encoder); break; default: ASSERT_NOT_REACHED(); } }
void PageState::encode(IPC::ArgumentEncoder& encoder) const { encoder << title; encoder << mainFrameState; encoder.encodeEnum(shouldOpenExternalURLsPolicy); }