WebProcessLifetimeTracker.cpp [plain text]
#include "config.h"
#include "WebProcessLifetimeTracker.h"
#include "WebProcessLifetimeObserver.h"
#include "WebProcessProxy.h"
namespace WebKit {
WebProcessLifetimeTracker::WebProcessLifetimeTracker(WebPageProxy& webPageProxy)
: m_webPageProxy(webPageProxy)
{
}
WebProcessLifetimeTracker::~WebProcessLifetimeTracker()
{
}
void WebProcessLifetimeTracker::addObserver(WebProcessLifetimeObserver& observer)
{
ASSERT(!m_observers.contains(&observer));
m_observers.add(&observer);
observer.webPageWasAdded(m_webPageProxy);
if (processIsRunning())
observer.addWebPage(m_webPageProxy);
}
void WebProcessLifetimeTracker::connectionWillOpen(IPC::Connection&)
{
ASSERT(processIsRunning());
for (auto& observer : m_observers)
observer->addWebPage(m_webPageProxy);
}
void WebProcessLifetimeTracker::webProcessWillShutDown()
{
ASSERT(processIsRunning());
for (auto& observer : m_observers)
observer->removeWebPage(m_webPageProxy);
}
void WebProcessLifetimeTracker::pageWasInvalidated()
{
if (!processIsRunning())
return;
for (auto& observer : m_observers) {
observer->removeWebPage(m_webPageProxy);
observer->webPageWasRemoved(m_webPageProxy);
}
}
bool WebProcessLifetimeTracker::processIsRunning()
{
return m_webPageProxy.process().state() == WebProcessProxy::State::Running;
}
}