summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/UIProcess/WebProcessProxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/WebProcessProxy.cpp')
-rw-r--r--Source/WebKit2/UIProcess/WebProcessProxy.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.cpp b/Source/WebKit2/UIProcess/WebProcessProxy.cpp
index c7e9382..67dc46b 100644
--- a/Source/WebKit2/UIProcess/WebProcessProxy.cpp
+++ b/Source/WebKit2/UIProcess/WebProcessProxy.cpp
@@ -23,6 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "config.h"
#include "WebProcessProxy.h"
#include "DataReference.h"
@@ -43,6 +44,7 @@
#include <wtf/text/WTFString.h>
using namespace WebCore;
+using namespace std;
namespace WebKit {
@@ -76,7 +78,7 @@ WebProcessProxy::~WebProcessProxy()
m_connection->invalidate();
for (size_t i = 0; i < m_pendingMessages.size(); ++i)
- m_pendingMessages[i].releaseArguments();
+ m_pendingMessages[i].first.releaseArguments();
if (m_processLauncher) {
m_processLauncher->invalidate();
@@ -99,20 +101,22 @@ void WebProcessProxy::connect()
ProcessLauncher::LaunchOptions launchOptions;
launchOptions.processType = ProcessLauncher::WebProcess;
+
#if PLATFORM(MAC)
// We want the web process to match the architecture of the UI process.
launchOptions.architecture = ProcessLauncher::LaunchOptions::MatchCurrentArchitecture;
+ launchOptions.executableHeap = false;
#endif
m_processLauncher = ProcessLauncher::create(this, launchOptions);
}
}
-bool WebProcessProxy::sendMessage(CoreIPC::MessageID messageID, PassOwnPtr<CoreIPC::ArgumentEncoder> arguments)
+bool WebProcessProxy::sendMessage(CoreIPC::MessageID messageID, PassOwnPtr<CoreIPC::ArgumentEncoder> arguments, unsigned messageSendFlags)
{
// If we're waiting for the web process to launch, we need to stash away the messages so we can send them once we have
// a CoreIPC connection.
if (isLaunching()) {
- m_pendingMessages.append(CoreIPC::Connection::OutgoingMessage(messageID, arguments));
+ m_pendingMessages.append(make_pair(CoreIPC::Connection::OutgoingMessage(messageID, arguments), messageSendFlags));
return true;
}
@@ -120,7 +124,7 @@ bool WebProcessProxy::sendMessage(CoreIPC::MessageID messageID, PassOwnPtr<CoreI
if (!m_connection)
return false;
- return m_connection->sendMessage(messageID, arguments);
+ return m_connection->sendMessage(messageID, arguments, messageSendFlags);
}
bool WebProcessProxy::isLaunching() const
@@ -344,13 +348,16 @@ void WebProcessProxy::didFinishLaunching(CoreIPC::Connection::Identifier connect
m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main());
#if PLATFORM(MAC)
m_connection->setShouldCloseConnectionOnMachExceptions();
+#elif PLATFORM(QT)
+ m_connection->setShouldCloseConnectionOnProcessTermination(processIdentifier());
#endif
-
+
m_connection->open();
for (size_t i = 0; i < m_pendingMessages.size(); ++i) {
- CoreIPC::Connection::OutgoingMessage& outgoingMessage = m_pendingMessages[i];
- m_connection->sendMessage(outgoingMessage.messageID(), adoptPtr(outgoingMessage.arguments()));
+ CoreIPC::Connection::OutgoingMessage& outgoingMessage = m_pendingMessages[i].first;
+ unsigned messageSendFlags = m_pendingMessages[i].second;
+ m_connection->sendMessage(outgoingMessage.messageID(), adoptPtr(outgoingMessage.arguments()), messageSendFlags);
}
m_pendingMessages.clear();