void WebContext::didReceiveSyncMessage(IPC::Connection* connection, IPC::MessageDecoder& decoder, std::unique_ptr<IPC::MessageEncoder>& replyEncoder) { if (decoder.messageReceiverName() == Messages::WebContext::messageReceiverName()) { didReceiveSyncWebContextMessage(connection, decoder, replyEncoder); return; } if (decoder.messageReceiverName() == WebContextLegacyMessages::messageReceiverName() && decoder.messageName() == WebContextLegacyMessages::postSynchronousMessageMessageName()) { // FIXME: We should probably encode something in the case that the arguments do not decode correctly. WebProcessProxy* process = WebProcessProxy::fromConnection(connection); String messageName; RefPtr<API::Object> messageBody; WebContextUserMessageDecoder messageBodyDecoder(messageBody, *process); if (!decoder.decode(messageName)) return; if (!decoder.decode(messageBodyDecoder)) return; RefPtr<API::Object> returnData; didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody.get(), returnData); replyEncoder->encode(WebContextUserMessageEncoder(returnData.get(), *process)); return; } ASSERT_NOT_REACHED(); }
void WebProcess::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { if (messageReceiverMap().dispatchMessage(connection, decoder)) return; if (decoder.messageReceiverName() == Messages::WebProcess::messageReceiverName()) { didReceiveWebProcessMessage(connection, decoder); return; } if (decoder.messageReceiverName() == Messages::WebPageGroupProxy::messageReceiverName()) { uint64_t pageGroupID = decoder.destinationID(); if (!pageGroupID) return; WebPageGroupProxy* pageGroupProxy = webPageGroup(pageGroupID); if (!pageGroupProxy) return; pageGroupProxy->didReceiveMessage(connection, decoder); return; } if (decoder.messageReceiverName() == Messages::ChildProcess::messageReceiverName()) { ChildProcess::didReceiveMessage(connection, decoder); return; } LOG_ERROR("Unhandled web process message '%s:%s'", decoder.messageReceiverName().toString().data(), decoder.messageName().toString().data()); }
void DatabaseProcessProxy::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { if (decoder.messageReceiverName() == Messages::DatabaseProcessProxy::messageReceiverName()) { didReceiveDatabaseProcessProxyMessage(connection, decoder); return; } }
void NetworkConnectionToWebProcess::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { if (decoder.messageReceiverName() == Messages::NetworkConnectionToWebProcess::messageReceiverName()) { didReceiveNetworkConnectionToWebProcessMessage(connection, decoder); return; } if (decoder.messageReceiverName() == Messages::NetworkResourceLoader::messageReceiverName()) { HashMap<ResourceLoadIdentifier, RefPtr<NetworkResourceLoader>>::iterator loaderIterator = m_networkResourceLoaders.find(decoder.destinationID()); if (loaderIterator != m_networkResourceLoaders.end()) loaderIterator->value->didReceiveNetworkResourceLoaderMessage(connection, decoder); return; } ASSERT_NOT_REACHED(); }
void WebProcessConnection::didReceiveSyncMessage(IPC::Connection* connection, IPC::MessageDecoder& decoder, std::unique_ptr<IPC::MessageEncoder>& replyEncoder) { // Force all timers to run at full speed when processing a synchronous message ActivityAssertion activityAssertion(PluginProcess::shared().connectionActivity()); ConnectionStack::CurrentConnectionPusher currentConnection(ConnectionStack::shared(), connection); uint64_t destinationID = decoder.destinationID(); if (!destinationID) { didReceiveSyncWebProcessConnectionMessage(connection, decoder, replyEncoder); return; } if (decoder.messageReceiverName() == Messages::NPObjectMessageReceiver::messageReceiverName()) { m_npRemoteObjectMap->didReceiveSyncMessage(connection, decoder, replyEncoder); return; } PluginControllerProxy* pluginControllerProxy = m_pluginControllers.get(decoder.destinationID()); if (!pluginControllerProxy) return; PluginController::PluginDestructionProtector protector(pluginControllerProxy->asPluginController()); pluginControllerProxy->didReceiveSyncPluginControllerProxyMessage(connection, decoder, replyEncoder); }
void NetworkConnectionToWebProcess::didReceiveSyncMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder, std::unique_ptr<IPC::MessageEncoder>& reply) { if (decoder.messageReceiverName() == Messages::NetworkConnectionToWebProcess::messageReceiverName()) { didReceiveSyncNetworkConnectionToWebProcessMessage(connection, decoder, reply); return; } ASSERT_NOT_REACHED(); }
void DatabaseProcess::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { if (messageReceiverMap().dispatchMessage(connection, decoder)) return; if (decoder.messageReceiverName() == Messages::DatabaseProcess::messageReceiverName()) { didReceiveDatabaseProcessMessage(connection, decoder); return; } }
void NetworkProcessConnection::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { if (decoder.messageReceiverName() == Messages::WebResourceLoader::messageReceiverName()) { if (WebResourceLoader* webResourceLoader = WebProcess::singleton().webLoaderStrategy().webResourceLoaderForIdentifier(decoder.destinationID())) webResourceLoader->didReceiveWebResourceLoaderMessage(connection, decoder); return; } didReceiveNetworkProcessConnectionMessage(connection, decoder); }
void NetworkProcess::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { if (messageReceiverMap().dispatchMessage(connection, decoder)) return; if (decoder.messageReceiverName() == Messages::ChildProcess::messageReceiverName()) { ChildProcess::didReceiveMessage(connection, decoder); return; } didReceiveNetworkProcessMessage(connection, decoder); }
void WebToDatabaseProcessConnection::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) { #if ENABLE(INDEXED_DATABASE) if (decoder.messageReceiverName() == Messages::WebIDBServerConnection::messageReceiverName()) { HashMap<uint64_t, WebIDBServerConnection*>::iterator connectionIterator = m_webIDBServerConnections.find(decoder.destinationID()); if (connectionIterator != m_webIDBServerConnections.end()) connectionIterator->value->didReceiveWebIDBServerConnectionMessage(connection, decoder); return; } #endif ASSERT_NOT_REACHED(); }
void WebContext::didReceiveMessage(IPC::Connection* connection, IPC::MessageDecoder& decoder) { if (decoder.messageReceiverName() == Messages::WebContext::messageReceiverName()) { didReceiveWebContextMessage(connection, decoder); return; } if (decoder.messageReceiverName() == WebContextLegacyMessages::messageReceiverName() && decoder.messageName() == WebContextLegacyMessages::postMessageMessageName()) { String messageName; RefPtr<API::Object> messageBody; WebContextUserMessageDecoder messageBodyDecoder(messageBody, *WebProcessProxy::fromConnection(connection)); if (!decoder.decode(messageName)) return; if (!decoder.decode(messageBodyDecoder)) return; didReceiveMessageFromInjectedBundle(messageName, messageBody.get()); return; } ASSERT_NOT_REACHED(); }
void WebProcessProxy::didReceiveSyncMessage(IPC::Connection* connection, IPC::MessageDecoder& decoder, std::unique_ptr<IPC::MessageEncoder>& replyEncoder) { if (dispatchSyncMessage(connection, decoder, replyEncoder)) return; if (m_context->dispatchSyncMessage(connection, decoder, replyEncoder)) return; if (decoder.messageReceiverName() == Messages::WebProcessProxy::messageReceiverName()) { didReceiveSyncWebProcessProxyMessage(connection, decoder, replyEncoder); return; } // FIXME: Add unhandled message logging. }
void WebProcessProxy::didReceiveMessage(IPC::Connection* connection, IPC::MessageDecoder& decoder) { if (dispatchMessage(connection, decoder)) return; if (m_context->dispatchMessage(connection, decoder)) return; if (decoder.messageReceiverName() == Messages::WebProcessProxy::messageReceiverName()) { didReceiveWebProcessProxyMessage(connection, decoder); return; } // FIXME: Add unhandled message logging. }
void PluginProcessConnection::didReceiveSyncMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder, std::unique_ptr<IPC::MessageEncoder>& replyEncoder) { if (decoder.messageReceiverName() == Messages::NPObjectMessageReceiver::messageReceiverName()) { m_npRemoteObjectMap->didReceiveSyncMessage(connection, decoder, replyEncoder); return; } uint64_t destinationID = decoder.destinationID(); if (!destinationID) { didReceiveSyncPluginProcessConnectionMessage(connection, decoder, replyEncoder); return; } PluginProxy* pluginProxy = m_plugins.get(destinationID); if (!pluginProxy) return; pluginProxy->didReceiveSyncPluginProxyMessage(connection, decoder, replyEncoder); }
void WebProcessConnection::didReceiveMessage(IPC::Connection* connection, IPC::MessageDecoder& decoder) { ConnectionStack::CurrentConnectionPusher currentConnection(ConnectionStack::shared(), connection); if (decoder.messageReceiverName() == Messages::WebProcessConnection::messageReceiverName()) { didReceiveWebProcessConnectionMessage(connection, decoder); return; } if (!decoder.destinationID()) { ASSERT_NOT_REACHED(); return; } PluginControllerProxy* pluginControllerProxy = m_pluginControllers.get(decoder.destinationID()); if (!pluginControllerProxy) return; PluginController::PluginDestructionProtector protector(pluginControllerProxy->asPluginController()); pluginControllerProxy->didReceivePluginControllerProxyMessage(connection, decoder); }