LegacyCustomProtocolManager.cpp [plain text]
#include "config.h"
#include "LegacyCustomProtocolManager.h"
#include "ChildProcess.h"
#include "LegacyCustomProtocolManagerMessages.h"
#include "LegacyCustomProtocolManagerProxyMessages.h"
#include "NetworkProcessCreationParameters.h"
#include "WebCoreArgumentCoders.h"
#include <WebCore/ResourceRequest.h>
namespace WebKit {
static uint64_t generateCustomProtocolID()
{
static uint64_t uniqueCustomProtocolID = 0;
return ++uniqueCustomProtocolID;
}
const char* LegacyCustomProtocolManager::supplementName()
{
return "LegacyCustomProtocolManager";
}
LegacyCustomProtocolManager::LegacyCustomProtocolManager(ChildProcess* childProcess)
: m_childProcess(childProcess)
{
m_childProcess->addMessageReceiver(Messages::LegacyCustomProtocolManager::messageReceiverName(), *this);
}
void LegacyCustomProtocolManager::initialize(const NetworkProcessCreationParameters& parameters)
{
registerProtocolClass();
for (const auto& scheme : parameters.urlSchemesRegisteredForCustomProtocols)
registerScheme(scheme);
}
uint64_t LegacyCustomProtocolManager::addCustomProtocol(CustomProtocol&& customProtocol)
{
LockHolder locker(m_customProtocolMapMutex);
auto customProtocolID = generateCustomProtocolID();
m_customProtocolMap.add(customProtocolID, WTFMove(customProtocol));
return customProtocolID;
}
void LegacyCustomProtocolManager::removeCustomProtocol(uint64_t customProtocolID)
{
LockHolder locker(m_customProtocolMapMutex);
m_customProtocolMap.remove(customProtocolID);
}
void LegacyCustomProtocolManager::startLoading(uint64_t customProtocolID, const WebCore::ResourceRequest& request)
{
m_childProcess->send(Messages::LegacyCustomProtocolManagerProxy::StartLoading(customProtocolID, request));
}
void LegacyCustomProtocolManager::stopLoading(uint64_t customProtocolID)
{
m_childProcess->send(Messages::LegacyCustomProtocolManagerProxy::StopLoading(customProtocolID), 0);
}
}