void PluginProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier connectionIdentifier) { ASSERT(!m_connection); if (CoreIPC::Connection::identifierIsNull(connectionIdentifier)) { pluginProcessCrashedOrFailedToLaunch(); return; } m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main()); #if PLATFORM(MAC) m_connection->setShouldCloseConnectionOnMachExceptions(); #endif m_connection->open(); PluginProcessCreationParameters parameters; parameters.processType = m_pluginProcessAttributes.processType; if (parameters.processType == PluginProcessTypeSnapshot) { parameters.minimumLifetime = snapshottingMinimumLifetime; parameters.terminationTimeout = snapshottingShutdownTimeout; } else { parameters.minimumLifetime = minimumLifetime; parameters.terminationTimeout = shutdownTimeout; } platformInitializePluginProcess(parameters); // Initialize the plug-in host process. m_connection->send(Messages::PluginProcess::InitializePluginProcess(parameters), 0); // Send all our pending requests. for (size_t i = 0; i < m_pendingGetSitesRequests.size(); ++i) m_connection->send(Messages::PluginProcess::GetSitesWithData(m_pendingGetSitesRequests[i]), 0); m_pendingGetSitesRequests.clear(); for (size_t i = 0; i < m_pendingClearSiteDataRequests.size(); ++i) { const ClearSiteDataRequest& request = m_pendingClearSiteDataRequests[i]; m_connection->send(Messages::PluginProcess::ClearSiteData(request.sites, request.flags, request.maxAgeInSeconds, request.callbackID), 0); } m_pendingClearSiteDataRequests.clear(); for (unsigned i = 0; i < m_numPendingConnectionRequests; ++i) m_connection->send(Messages::PluginProcess::CreateWebProcessConnection(), 0); m_numPendingConnectionRequests = 0; #if PLATFORM(MAC) if (WebContext::canEnableProcessSuppressionForGlobalChildProcesses()) setProcessSuppressionEnabled(true); #endif }
void PluginProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier connectionIdentifier) { ASSERT(!m_connection); if (CoreIPC::Connection::identifierIsNull(connectionIdentifier)) { pluginProcessCrashedOrFailedToLaunch(); return; } m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main()); #if PLATFORM(MAC) m_connection->setShouldCloseConnectionOnMachExceptions(); #elif PLATFORM(QT) m_connection->setShouldCloseConnectionOnProcessTermination(m_processLauncher->processIdentifier()); #endif m_connection->open(); PluginProcessCreationParameters parameters; parameters.pluginPath = m_pluginInfo.path; parameters.terminationTimeout = shutdownTimeout; platformInitializePluginProcess(parameters); // Initialize the plug-in host process. m_connection->send(Messages::PluginProcess::InitializePluginProcess(parameters), 0); // Send all our pending requests. for (size_t i = 0; i < m_pendingGetSitesRequests.size(); ++i) m_connection->send(Messages::PluginProcess::GetSitesWithData(m_pendingGetSitesRequests[i]), 0); m_pendingGetSitesRequests.clear(); for (size_t i = 0; i < m_pendingClearSiteDataRequests.size(); ++i) { const ClearSiteDataRequest& request = m_pendingClearSiteDataRequests[i]; m_connection->send(Messages::PluginProcess::ClearSiteData(request.sites, request.flags, request.maxAgeInSeconds, request.callbackID), 0); } m_pendingClearSiteDataRequests.clear(); for (unsigned i = 0; i < m_numPendingConnectionRequests; ++i) m_connection->send(Messages::PluginProcess::CreateWebProcessConnection(), 0); m_numPendingConnectionRequests = 0; }