WebSoupCustomProtocolRequestManager.cpp [plain text]
#include "config.h"
#include "WebSoupCustomProtocolRequestManager.h"
#if ENABLE(CUSTOM_PROTOCOLS)
#include "APIData.h"
#include "CustomProtocolManagerMessages.h"
#include "WebContext.h"
#include <WebCore/ResourceError.h>
#include <WebCore/ResourceRequest.h>
#include <WebCore/ResourceResponse.h>
#if PLATFORM(GTK)
#include <WebCore/ErrorsGtk.h>
#endif
namespace WebKit {
const char* WebSoupCustomProtocolRequestManager::supplementName()
{
return "WebSoupCustomProtocolRequestManager";
}
PassRefPtr<WebSoupCustomProtocolRequestManager> WebSoupCustomProtocolRequestManager::create(WebContext* context)
{
return adoptRef(new WebSoupCustomProtocolRequestManager(context));
}
WebSoupCustomProtocolRequestManager::WebSoupCustomProtocolRequestManager(WebContext* context)
: WebContextSupplement(context)
{
}
WebSoupCustomProtocolRequestManager::~WebSoupCustomProtocolRequestManager()
{
}
void WebSoupCustomProtocolRequestManager::initializeClient(const WKSoupCustomProtocolRequestManagerClientBase* client)
{
m_client.initialize(client);
}
void WebSoupCustomProtocolRequestManager::contextDestroyed()
{
}
void WebSoupCustomProtocolRequestManager::processDidClose(WebProcessProxy*)
{
}
void WebSoupCustomProtocolRequestManager::refWebContextSupplement()
{
API::Object::ref();
}
void WebSoupCustomProtocolRequestManager::derefWebContextSupplement()
{
API::Object::deref();
}
void WebSoupCustomProtocolRequestManager::registerSchemeForCustomProtocol(const String& scheme)
{
if (!context())
return;
context()->registerSchemeForCustomProtocol(scheme);
ASSERT(!m_registeredSchemes.contains(scheme));
m_registeredSchemes.append(scheme);
}
void WebSoupCustomProtocolRequestManager::unregisterSchemeForCustomProtocol(const String& scheme)
{
if (!context())
return;
context()->unregisterSchemeForCustomProtocol(scheme);
ASSERT(m_registeredSchemes.contains(scheme));
m_registeredSchemes.remove(m_registeredSchemes.find(scheme));
}
void WebSoupCustomProtocolRequestManager::startLoading(uint64_t customProtocolID, const WebCore::ResourceRequest& request)
{
if (!m_client.startLoading(this, customProtocolID, request))
didFailWithError(customProtocolID, WebCore::cannotShowURLError(request));
}
void WebSoupCustomProtocolRequestManager::stopLoading(uint64_t customProtocolID)
{
m_client.stopLoading(this, customProtocolID);
}
void WebSoupCustomProtocolRequestManager::didReceiveResponse(uint64_t customProtocolID, const WebCore::ResourceResponse& response)
{
if (!context())
return;
context()->networkingProcessConnection()->send(Messages::CustomProtocolManager::DidReceiveResponse(customProtocolID, response, 0), 0);
}
void WebSoupCustomProtocolRequestManager::didLoadData(uint64_t customProtocolID, const API::Data* data)
{
if (!context())
return;
context()->networkingProcessConnection()->send(Messages::CustomProtocolManager::DidLoadData(customProtocolID, data->dataReference()), 0);
}
void WebSoupCustomProtocolRequestManager::didFailWithError(uint64_t customProtocolID, const WebCore::ResourceError& error)
{
if (!context())
return;
context()->networkingProcessConnection()->send(Messages::CustomProtocolManager::DidFailWithError(customProtocolID, error), 0);
}
void WebSoupCustomProtocolRequestManager::didFinishLoading(uint64_t customProtocolID)
{
if (!context())
return;
context()->networkingProcessConnection()->send(Messages::CustomProtocolManager::DidFinishLoading(customProtocolID), 0);
}
}
#endif // ENABLE(CUSTOM_PROTOCOLS)