diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/WebProcess.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/WebProcess.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Source/WebKit2/WebProcess/WebProcess.cpp b/Source/WebKit2/WebProcess/WebProcess.cpp index 43e7d7021..33be75989 100644 --- a/Source/WebKit2/WebProcess/WebProcess.cpp +++ b/Source/WebKit2/WebProcess/WebProcess.cpp @@ -194,6 +194,11 @@ void WebProcess::initialize(CoreIPC::Connection::Identifier serverIdentifier, Ru startRandomCrashThreadIfRequested(); } +void WebProcess::addMessageReceiver(CoreIPC::StringReference messageReceiverName, CoreIPC::MessageReceiver* messageReceiver) +{ + m_messageReceiverMap.addMessageReceiver(messageReceiverName, messageReceiver); +} + void WebProcess::initializeWebProcess(const WebProcessCreationParameters& parameters, CoreIPC::MessageDecoder& decoder) { ASSERT(m_pageMap.isEmpty()); @@ -645,7 +650,10 @@ void WebProcess::terminate() } void WebProcess::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder) -{ +{ + if (m_messageReceiverMap.dispatchSyncMessage(connection, messageID, decoder, replyEncoder)) + return; + uint64_t pageID = decoder.destinationID(); if (!pageID) return; @@ -659,6 +667,9 @@ void WebProcess::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC: void WebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder) { + if (m_messageReceiverMap.dispatchMessage(connection, messageID, decoder)) + return; + if (messageID.is<CoreIPC::MessageClassWebProcess>()) { didReceiveWebProcessMessage(connection, messageID, decoder); return; @@ -1056,7 +1067,8 @@ void WebProcess::postInjectedBundleMessage(const CoreIPC::DataReference& message return; RefPtr<APIObject> messageBody; - if (!decoder->decode(InjectedBundleUserMessageDecoder(messageBody))) + InjectedBundleUserMessageDecoder messageBodyDecoder(messageBody); + if (!decoder->decode(messageBodyDecoder)) return; injectedBundle->didReceiveMessage(messageName, messageBody.get()); |