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.applicationCacheFlatFileSubdirectoryName)) return false; if (!decoder.decode(parameters.applicationCacheDirectoryExtensionHandle)) return false; if (!decoder.decode(parameters.webSQLDatabaseDirectory)) return false; if (!decoder.decode(parameters.webSQLDatabaseDirectoryExtensionHandle)) return false; if (!decoder.decode(parameters.mediaCacheDirectory)) return false; if (!decoder.decode(parameters.mediaCacheDirectoryExtensionHandle)) return false; #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 (!decoder.decode(parameters.urlSchemesRegisteredAsAlwaysRevalidated)) return false; #if ENABLE(CACHE_PARTITIONING) if (!decoder.decode(parameters.urlSchemesRegisteredAsCachePartitioned)) 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.shouldSuppressMemoryPressureHandler)) return false; if (!decoder.decode(parameters.shouldUseFontSmoothing)) return false; if (!decoder.decode(parameters.resourceLoadStatisticsEnabled)) 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.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 (!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 || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) if (!IPC::decode(decoder, parameters.networkATSContext)) return false; #endif return true; }
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.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 (!decoder.decode(parameters.diskCacheDirectory)) return false; if (!decoder.decode(parameters.diskCacheDirectoryExtensionHandle)) return false; if (!decoder.decode(parameters.cookieStorageDirectory)) return false; #if PLATFORM(IOS) if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle)) return false; if (!decoder.decode(parameters.openGLCacheDirectoryExtensionHandle)) return false; if (!decoder.decode(parameters.containerTemporaryDirectoryExtensionHandle)) return false; if (!decoder.decode(parameters.hstsDatabasePathExtensionHandle)) return false; #endif if (!decoder.decode(parameters.shouldUseTestingNetworkSession)) return false; if (!decoder.decode(parameters.urlSchemesRegistererdAsEmptyDocument)) return false; if (!decoder.decode(parameters.urlSchemesRegisteredAsSecure)) 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 ENABLE(CUSTOM_PROTOCOLS) if (!decoder.decode(parameters.urlSchemesRegisteredForCustomProtocols)) return false; #endif #if USE(SOUP) #if !ENABLE(CUSTOM_PROTOCOLS) if (!decoder.decode(parameters.urlSchemesRegistered)) return false; #endif 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.shouldUseFontSmoothing)) 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.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)) return false; if (!decoder.decode(parameters.shouldEnableKerningAndLigaturesByDefault)) return false; if (!decoder.decode(parameters.shouldEnableJIT)) return false; if (!decoder.decode(parameters.shouldEnableFTLJIT)) return false; if (!decoder.decode(parameters.shouldEnableMemoryPressureReliefLogging)) 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; #endif return true; }
bool WebPageCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebPageCreationParameters& parameters) { if (!decoder.decode(parameters.viewSize)) return false; if (!decoder.decode(parameters.viewState)) return false; if (!decoder.decode(parameters.store)) return false; if (!decoder.decodeEnum(parameters.drawingAreaType)) return false; if (!decoder.decode(parameters.pageGroupData)) return false; if (!decoder.decode(parameters.drawsBackground)) return false; if (!decoder.decode(parameters.drawsTransparentBackground)) return false; if (!decoder.decode(parameters.underlayColor)) return false; if (!decoder.decode(parameters.useFixedLayout)) return false; if (!decoder.decode(parameters.fixedLayoutSize)) return false; if (!decoder.decodeEnum(parameters.paginationMode)) return false; if (!decoder.decode(parameters.paginationBehavesLikeColumns)) return false; if (!decoder.decode(parameters.pageLength)) return false; if (!decoder.decode(parameters.gapBetweenPages)) return false; if (!decoder.decode(parameters.userAgent)) return false; if (!decoder.decode(parameters.itemStates)) return false; if (!decoder.decode(parameters.sessionID)) return false; if (!decoder.decode(parameters.highestUsedBackForwardItemID)) return false; if (!decoder.decode(parameters.userContentControllerID)) return false; if (!decoder.decode(parameters.visitedLinkTableID)) return false; if (!decoder.decode(parameters.canRunBeforeUnloadConfirmPanel)) return false; if (!decoder.decode(parameters.canRunModal)) return false; if (!decoder.decode(parameters.deviceScaleFactor)) return false; if (!decoder.decode(parameters.topContentInset)) return false; if (!decoder.decode(parameters.mediaVolume)) return false; if (!decoder.decode(parameters.mayStartMediaWhenInWindow)) return false; if (!decoder.decode(parameters.minimumLayoutSize)) return false; if (!decoder.decode(parameters.autoSizingShouldExpandToViewHeight)) return false; if (!decoder.decodeEnum(parameters.scrollPinningBehavior)) return false; if (!decoder.decode(parameters.backgroundExtendsBeyondPage)) return false; if (!decoder.decodeEnum(parameters.layerHostingMode)) return false; if (!decoder.decode(parameters.mimeTypesWithCustomContentProviders)) return false; #if ENABLE(REMOTE_INSPECTOR) if (!decoder.decode(parameters.allowsRemoteInspection)) return false; #endif #if PLATFORM(MAC) if (!decoder.decode(parameters.colorSpace)) return false; #endif #if PLATFORM(IOS) if (!decoder.decode(parameters.screenSize)) return false; if (!decoder.decode(parameters.availableScreenSize)) return false; if (!decoder.decode(parameters.textAutosizingWidth)) return false; #endif return true; }
bool UserData::decode(IPC::ArgumentDecoder& decoder, RefPtr<API::Object>& result) { API::Object::Type type; if (!decoder.decodeEnum(type)) return false; switch (type) { case API::Object::Type::Array: { uint64_t size; if (!decoder.decode(size)) return false; Vector<RefPtr<API::Object>> elements; for (size_t i = 0; i < size; ++i) { RefPtr<API::Object> element; if (!decode(decoder, element)) return false; elements.append(std::move(element)); } result = API::Array::create(std::move(elements)); break; } case API::Object::Type::Boolean: if (!API::Boolean::decode(decoder, result)) return false; break; case API::Object::Type::Data: if (!API::Data::decode(decoder, result)) return false; break; case API::Object::Type::Dictionary: { uint64_t size; if (!decoder.decode(size)) return false; ImmutableDictionary::MapType map; for (size_t i = 0; i < size; ++i) { String key; if (!decoder.decode(key)) return false; RefPtr<API::Object> value; if (!decode(decoder, value)) return false; if (!map.add(std::move(key), std::move(value)).isNewEntry) return false; } result = ImmutableDictionary::create(std::move(map)); break; } case API::Object::Type::Double: if (!API::Double::decode(decoder, result)) return false; break; case API::Object::Type::Error: if (!API::Error::decode(decoder, result)) return false; break; case API::Object::Type::FrameHandle: { uint64_t frameID; if (!decoder.decode(frameID)) return false; result = API::FrameHandle::create(frameID); break; } case API::Object::Type::Null: result = nullptr; break; case API::Object::Type::Point: if (!API::Point::decode(decoder, result)) return false; break; case API::Object::Type::Rect: if (!API::Rect::decode(decoder, result)) return false; break; case API::Object::Type::SerializedScriptValue: { IPC::DataReference dataReference; if (!decoder.decode(dataReference)) return false; auto vector = dataReference.vector(); result = WebSerializedScriptValue::adopt(vector); break; } case API::Object::Type::Size: if (!API::Size::decode(decoder, result)) return false; break; case API::Object::Type::String: { String string; if (!decoder.decode(string)) return false; result = API::String::create(string); break; } case API::Object::Type::URL: if (!API::URL::decode(decoder, result)) return false; break; case API::Object::Type::URLRequest: if (!API::URLRequest::decode(decoder, result)) return false; break; case API::Object::Type::URLResponse: if (!API::URLResponse::decode(decoder, result)) return false; break; case API::Object::Type::UInt64: if (!API::UInt64::decode(decoder, result)) return false; break; default: ASSERT_NOT_REACHED(); } return true; }
bool RemoteScrollingCoordinatorTransaction::decode(IPC::ArgumentDecoder& decoder) { int numNodes; if (!decoder.decode(numNodes)) return false; bool hasNewRootNode; if (!decoder.decode(hasNewRootNode)) return false; m_scrollingStateTree = ScrollingStateTree::create(); bool hasChangedProperties; if (!decoder.decode(hasChangedProperties)) return false; m_scrollingStateTree->setHasChangedProperties(hasChangedProperties); for (int i = 0; i < numNodes; ++i) { ScrollingNodeType nodeType; if (!decoder.decodeEnum(nodeType)) return false; ScrollingNodeID nodeID; if (!decoder.decode(nodeID)) return false; ScrollingNodeID parentNodeID; if (!decoder.decode(parentNodeID)) return false; m_scrollingStateTree->attachNode(nodeType, nodeID, parentNodeID); ScrollingStateNode* newNode = m_scrollingStateTree->stateNodeForID(nodeID); ASSERT(newNode); ASSERT(!parentNodeID || newNode->parent()); switch (nodeType) { case FrameScrollingNode: case OverflowScrollingNode: if (!decoder.decode(*toScrollingStateScrollingNode(newNode))) return false; break; case FixedNode: if (!decoder.decode(*toScrollingStateFixedNode(newNode))) return false; break; case StickyNode: if (!decoder.decode(*toScrollingStateStickyNode(newNode))) return false; break; } } m_scrollingStateTree->setHasNewRootStateNode(hasNewRootNode); // Removed nodes Vector<ScrollingNodeID> removedNodes; if (!decoder.decode(removedNodes)) return false; if (removedNodes.size()) m_scrollingStateTree->setRemovedNodes(removedNodes); return true; }
bool WebPageCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebPageCreationParameters& parameters) { if (!decoder.decode(parameters.viewSize)) return false; if (!decoder.decode(parameters.viewState)) return false; if (!decoder.decode(parameters.store)) return false; if (!decoder.decodeEnum(parameters.drawingAreaType)) return false; if (!decoder.decode(parameters.pageGroupData)) return false; if (!decoder.decode(parameters.drawsBackground)) return false; if (!decoder.decode(parameters.drawsTransparentBackground)) return false; if (!decoder.decode(parameters.underlayColor)) return false; if (!decoder.decode(parameters.areMemoryCacheClientCallsEnabled)) return false; if (!decoder.decode(parameters.useFixedLayout)) return false; if (!decoder.decode(parameters.fixedLayoutSize)) return false; if (!decoder.decodeEnum(parameters.paginationMode)) return false; if (!decoder.decode(parameters.paginationBehavesLikeColumns)) return false; if (!decoder.decode(parameters.pageLength)) return false; if (!decoder.decode(parameters.gapBetweenPages)) return false; if (!decoder.decode(parameters.userAgent)) return false; if (!decoder.decode(parameters.sessionState)) return false; if (!decoder.decode(parameters.highestUsedBackForwardItemID)) return false; if (!decoder.decode(parameters.visitedLinkTableID)) return false; if (!decoder.decode(parameters.canRunBeforeUnloadConfirmPanel)) return false; if (!decoder.decode(parameters.canRunModal)) return false; if (!decoder.decode(parameters.deviceScaleFactor)) return false; if (!decoder.decode(parameters.mediaVolume)) return false; if (!decoder.decode(parameters.mayStartMediaWhenInWindow)) return false; if (!decoder.decode(parameters.minimumLayoutSize)) return false; if (!decoder.decode(parameters.autoSizingShouldExpandToViewHeight)) return false; if (!decoder.decodeEnum(parameters.scrollPinningBehavior)) return false; if (!decoder.decode(parameters.backgroundExtendsBeyondPage)) return false; if (!decoder.decodeEnum(parameters.layerHostingMode)) return false; #if PLATFORM(COCOA) if (!decoder.decode(parameters.colorSpace)) return false; #endif #if PLATFORM(IOS) if (!decoder.decode(parameters.viewportScreenSize)) return false; #endif return true; }
bool NetworkProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, NetworkProcessCreationParameters& result) { if (!decoder.decode(result.privateBrowsingEnabled)) return false; if (!decoder.decodeEnum(result.cacheModel)) return false; if (!decoder.decode(result.diskCacheSizeOverride)) return false; if (!decoder.decode(result.canHandleHTTPSServerTrustEvaluation)) return false; if (!decoder.decode(result.diskCacheDirectory)) return false; if (!decoder.decode(result.diskCacheDirectoryExtensionHandle)) return false; #if ENABLE(NETWORK_CACHE) if (!decoder.decode(result.shouldEnableNetworkCache)) return false; if (!decoder.decode(result.shouldEnableNetworkCacheEfficacyLogging)) return false; #endif #if ENABLE(SECCOMP_FILTERS) if (!decoder.decode(result.cookieStorageDirectory)) return false; #endif #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 if (!decoder.decode(result.uiProcessCookieStorageIdentifier)) return false; #endif #if PLATFORM(IOS) if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle)) return false; if (!decoder.decode(result.containerCachesDirectoryExtensionHandle)) return false; if (!decoder.decode(result.parentBundleDirectoryExtensionHandle)) return false; #endif if (!decoder.decode(result.shouldUseTestingNetworkSession)) return false; if (!decoder.decode(result.urlSchemesRegisteredForCustomProtocols)) return false; #if PLATFORM(COCOA) if (!decoder.decode(result.parentProcessName)) return false; if (!decoder.decode(result.uiProcessBundleIdentifier)) return false; if (!decoder.decode(result.nsURLCacheMemoryCapacity)) return false; if (!decoder.decode(result.nsURLCacheDiskCapacity)) return false; if (!decoder.decode(result.httpProxy)) return false; if (!decoder.decode(result.httpsProxy)) return false; #if TARGET_OS_IPHONE || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) if (!IPC::decode(decoder, result.networkATSContext)) return false; #endif #endif #if USE(SOUP) if (!decoder.decode(result.cookiePersistentStoragePath)) return false; if (!decoder.decode(result.cookiePersistentStorageType)) return false; if (!decoder.decodeEnum(result.cookieAcceptPolicy)) return false; if (!decoder.decode(result.ignoreTLSErrors)) return false; if (!decoder.decode(result.languages)) return false; #endif return true; }