WebSQLiteDatabaseTracker.cpp [plain text]
#include "config.h"
#include "WebSQLiteDatabaseTracker.h"
#include "NetworkProcess.h"
#include "NetworkProcessProxyMessages.h"
#include "WebProcess.h"
#include "WebProcessProxyMessages.h"
#include <WebCore/SQLiteDatabaseTracker.h>
#include <wtf/MainThread.h>
using namespace WebCore;
namespace WebKit {
WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker(NetworkProcess& process)
: m_process(process)
, m_hysteresis([this](HysteresisState state) { hysteresisUpdated(state); })
, m_childProcessType(ChildProcessType::Network)
{
SQLiteDatabaseTracker::setClient(this);
}
WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker(WebProcess& process)
: m_process(process)
, m_hysteresis([this](HysteresisState state) { hysteresisUpdated(state); })
, m_childProcessType(ChildProcessType::WebContent)
{
SQLiteDatabaseTracker::setClient(this);
}
void WebSQLiteDatabaseTracker::willBeginFirstTransaction()
{
callOnMainThread([this] {
m_hysteresis.start();
});
}
void WebSQLiteDatabaseTracker::didFinishLastTransaction()
{
callOnMainThread([this] {
m_hysteresis.stop();
});
}
void WebSQLiteDatabaseTracker::hysteresisUpdated(HysteresisState state)
{
switch (m_childProcessType) {
case ChildProcessType::WebContent:
m_process.parentProcessConnection()->send(Messages::WebProcessProxy::SetIsHoldingLockedFiles(state == HysteresisState::Started), 0);
break;
case ChildProcessType::Network:
m_process.parentProcessConnection()->send(Messages::NetworkProcessProxy::SetIsHoldingLockedFiles(state == HysteresisState::Started), 0);
break;
}
}
}