void PluginProcess::getSitesWithData(uint64_t callbackID) { Vector<String> sites; if (NetscapePluginModule* module = netscapePluginModule()) sites = module->sitesWithData(); parentProcessConnection()->send(Messages::PluginProcessProxy::DidGetSitesWithData(sites, callbackID), 0); }
void PluginProcess::deleteWebsiteDataForHostNames(const Vector<String>& hostNames, uint64_t callbackID) { if (auto* module = netscapePluginModule()) { for (auto& hostName : hostNames) module->clearSiteData(hostName, NP_CLEAR_ALL, std::numeric_limits<uint64_t>::max()); } parentProcessConnection()->send(Messages::PluginProcessProxy::DidDeleteWebsiteDataForHostNames(callbackID), 0); }
void PluginProcess::getSitesWithData(uint64_t callbackID) { Vector<String> sites; if (NetscapePluginModule* module = netscapePluginModule()) sites = module->sitesWithData(); m_connection->send(Messages::PluginProcessProxy::DidGetSitesWithData(sites, callbackID), 0); startShutdownTimerIfNecessary(); }
void PluginProcess::deleteWebsiteData(std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID) { if (auto* module = netscapePluginModule()) { auto currentTime = std::chrono::system_clock::now(); if (currentTime > modifiedSince) { uint64_t maximumAge = std::chrono::duration_cast<std::chrono::seconds>(currentTime - modifiedSince).count(); module->clearSiteData(String(), NP_CLEAR_ALL, maximumAge); } } parentProcessConnection()->send(Messages::PluginProcessProxy::DidDeleteWebsiteData(callbackID), 0); }
void PluginProcess::clearSiteData(const Vector<String>& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID) { if (NetscapePluginModule* module = netscapePluginModule()) { if (sites.isEmpty()) { // Clear everything. module->clearSiteData(String(), flags, maxAgeInSeconds); } else { for (size_t i = 0; i < sites.size(); ++i) module->clearSiteData(sites[i], flags, maxAgeInSeconds); } } parentProcessConnection()->send(Messages::PluginProcessProxy::DidClearSiteData(callbackID), 0); }
void PluginProcess::createWebProcessConnection() { bool didHaveAnyWebProcessConnections = !m_webProcessConnections.isEmpty(); #if OS(DARWIN) // Create the listening port. mach_port_t listeningPort; mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &listeningPort); // Create a listening connection. RefPtr<WebProcessConnection> connection = WebProcessConnection::create(IPC::Connection::Identifier(listeningPort)); if (m_audioHardwareListener) { if (m_audioHardwareListener->hardwareActivity() == WebCore::AudioHardwareActivityType::IsActive) connection->audioHardwareDidBecomeActive(); else if (m_audioHardwareListener->hardwareActivity() == WebCore::AudioHardwareActivityType::IsInactive) connection->audioHardwareDidBecomeInactive(); } m_webProcessConnections.append(connection.release()); IPC::Attachment clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND); parentProcessConnection()->send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization), 0); #elif USE(UNIX_DOMAIN_SOCKETS) IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection(); RefPtr<WebProcessConnection> connection = WebProcessConnection::create(socketPair.server); m_webProcessConnections.append(connection.release()); IPC::Attachment clientSocket(socketPair.client); parentProcessConnection()->send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientSocket, m_supportsAsynchronousPluginInitialization), 0); #else notImplemented(); #endif if (NetscapePluginModule* module = netscapePluginModule()) { if (!didHaveAnyWebProcessConnections) { // Increment the load count. This is matched by a call to decrementLoadCount in removeWebProcessConnection. // We do this so that the plug-in module's NP_Shutdown won't be called until right before exiting. module->incrementLoadCount(); } } disableTermination(); }