[WK2] Would like to queue messages while NetworkProcess is launching
https://bugs.webkit.org/show_bug.cgi?id=104143
Reviewed by Anders Carlsson.
Factored out process launching and message sending code to a ChildProcessProxy class.
Process closing and crashing code should be moved once we better understand common
requirements for the processes.
* CMakeLists.txt:
* GNUmakefile.list.am:
* Target.pri:
* WebKit2.xcodeproj/project.pbxproj:
* win/WebKit2.vcproj:
Added ChildProcessProxy files.
* Shared/ChildProcessProxy.cpp: Added.
(WebKit::ChildProcessProxy::ChildProcessProxy):
(WebKit::ChildProcessProxy::~ChildProcessProxy):
(WebKit::ChildProcessProxy::fromConnection):
(WebKit::ChildProcessProxy::connect):
(WebKit::ChildProcessProxy::terminate):
(WebKit::ChildProcessProxy::sendMessage):
(WebKit::ChildProcessProxy::isLaunching):
(WebKit::ChildProcessProxy::didFinishLaunching):
(WebKit::ChildProcessProxy::clearConnection):
* Shared/ChildProcessProxy.h: Added.
(WebKit::ChildProcessProxy::connection):
(WebKit::ChildProcessProxy::isValid):
(WebKit::ChildProcessProxy::canSendMessage):
(WebKit::ChildProcessProxy::processIdentifier):
(WebKit::ChildProcessProxy::send):
(WebKit::ChildProcessProxy::sendSync):
Moved code from WebProcessProxy. Every ChildProcessProxy is a connection client,
but every one is a connection queue client, so that latter is passed as an argument.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
Removed unused syncMessageSendTimedOut(), thank you OVERRIDE.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::getLaunchOptions):
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::didFinishLaunching):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/mac/NetworkProcessProxyMac.mm:
(WebKit::NetworkProcessProxy::setApplicationIsOccluded):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::getLaunchOptions):
(WebKit::WebProcessProxy::disconnect):
(WebKit::WebProcessProxy::didFinishLaunching):
Use shared code.
* UIProcess/WebProcessProxy.h: (WebKit::WebProcessProxy::fromConnection):
NetworkProcess inherits from conneciton client privately, so we need to do most
of the work in ClientProcessProxy, and further upcast here.
* UIProcess/efl/WebProcessProxyEfl.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):
* UIProcess/gtk/WebProcessProxyGtk.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):
* UIProcess/mac/WebProcessProxyMac.mm:
(WebKit::WebProcessProxy::platformGetLaunchOptions):
* UIProcess/qt/WebProcessProxyQt.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):
* UIProcess/win/WebProcessProxyWin.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):
Updated for renaming, platformConnect -> platformGetLaunchOptions().
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@136770 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
index 1f9ce89..6be27c6 100644
--- a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
+++ b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
@@ -48,7 +48,11 @@
: m_networkProcessManager(manager)
, m_numPendingConnectionRequests(0)
{
- ProcessLauncher::LaunchOptions launchOptions;
+ connect();
+}
+
+void NetworkProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOptions)
+{
launchOptions.processType = ProcessLauncher::NetworkProcess;
#if PLATFORM(MAC)
@@ -58,25 +62,22 @@
launchOptions.useXPC = false;
#endif
#endif
-
- m_processLauncher = ProcessLauncher::create(this, launchOptions);
}
NetworkProcessProxy::~NetworkProcessProxy()
{
-
}
void NetworkProcessProxy::getNetworkProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply)
{
m_pendingConnectionReplies.append(reply);
- if (m_processLauncher->isLaunching()) {
+ if (isLaunching()) {
m_numPendingConnectionRequests++;
return;
}
- m_connection->send(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess(), 0, CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply);
+ connection()->send(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess(), 0, CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply);
}
void NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch()
@@ -114,12 +115,6 @@
void NetworkProcessProxy::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference, CoreIPC::StringReference)
{
-
-}
-
-void NetworkProcessProxy::syncMessageSendTimedOut(CoreIPC::Connection*)
-{
-
}
void NetworkProcessProxy::didCreateNetworkConnectionToWebProcess(const CoreIPC::Attachment& connectionIdentifier)
@@ -136,36 +131,29 @@
#endif
}
-void NetworkProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier connectionIdentifier)
+void NetworkProcessProxy::didFinishLaunching(ProcessLauncher* launcher, CoreIPC::Connection::Identifier connectionIdentifier)
{
- ASSERT(!m_connection);
+ ChildProcessProxy::didFinishLaunching(launcher, connectionIdentifier);
if (CoreIPC::Connection::identifierIsNull(connectionIdentifier)) {
// FIXME: Do better cleanup here.
return;
}
- m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main());
-#if PLATFORM(MAC)
- m_connection->setShouldCloseConnectionOnMachExceptions();
-#endif
-
- m_connection->open();
-
NetworkProcessCreationParameters parameters;
platformInitializeNetworkProcess(parameters);
// Initialize the network host process.
- m_connection->send(Messages::NetworkProcess::InitializeNetworkProcess(parameters), 0);
+ connection()->send(Messages::NetworkProcess::InitializeNetworkProcess(parameters), 0);
for (unsigned i = 0; i < m_numPendingConnectionRequests; ++i)
- m_connection->send(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess(), 0);
+ connection()->send(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess(), 0);
m_numPendingConnectionRequests = 0;
#if PLATFORM(MAC)
if (WebContext::applicationIsOccluded())
- m_connection->send(Messages::NetworkProcess::SetApplicationIsOccluded(true), 0);
+ connection()->send(Messages::NetworkProcess::SetApplicationIsOccluded(true), 0);
#endif
}