ewk_url_scheme_request.cpp [plain text]
#include "config.h"
#include "ewk_url_scheme_request.h"
#include "WKData.h"
#include "WKString.h"
#include "WKURL.h"
#include "ewk_url_scheme_request_private.h"
using namespace WebKit;
EwkUrlSchemeRequest::EwkUrlSchemeRequest(WKSoupRequestManagerRef manager, WKURLRef url, uint64_t requestID)
: m_wkRequestManager(manager)
, m_url(url)
, m_requestID(requestID)
, m_scheme(AdoptWK, WKURLCopyScheme(url))
, m_path(AdoptWK, WKURLCopyPath(url))
{
}
uint64_t EwkUrlSchemeRequest::id() const
{
return m_requestID;
}
const char* EwkUrlSchemeRequest::url() const
{
return m_url;
}
const char* EwkUrlSchemeRequest::scheme() const
{
return m_scheme;
}
const char* EwkUrlSchemeRequest::path() const
{
return m_path;
}
void EwkUrlSchemeRequest::finish(const void* contentData, uint64_t contentLength, const char* mimeType)
{
WKRetainPtr<WKDataRef> wkData(AdoptWK, WKDataCreate(contentLength ? reinterpret_cast<const unsigned char*>(contentData) : 0, contentLength));
WKRetainPtr<WKStringRef> wkMimeType = mimeType ? adoptWK(WKStringCreateWithUTF8CString(mimeType)) : 0;
WKSoupRequestManagerDidHandleURIRequest(m_wkRequestManager.get(), wkData.get(), contentLength, wkMimeType.get(), m_requestID);
}
const char* ewk_url_scheme_request_scheme_get(const Ewk_Url_Scheme_Request* request)
{
EWK_OBJ_GET_IMPL_OR_RETURN(const EwkUrlSchemeRequest, request, impl, 0);
return impl->scheme();
}
const char* ewk_url_scheme_request_url_get(const Ewk_Url_Scheme_Request* request)
{
EWK_OBJ_GET_IMPL_OR_RETURN(const EwkUrlSchemeRequest, request, impl, 0);
return impl->url();
}
const char* ewk_url_scheme_request_path_get(const Ewk_Url_Scheme_Request* request)
{
EWK_OBJ_GET_IMPL_OR_RETURN(const EwkUrlSchemeRequest, request, impl, 0);
return impl->path();
}
Eina_Bool ewk_url_scheme_request_finish(Ewk_Url_Scheme_Request* request, const void* contentData, uint64_t contentLength, const char* mimeType)
{
EWK_OBJ_GET_IMPL_OR_RETURN(EwkUrlSchemeRequest, request, impl, false);
impl->finish(contentData, contentLength, mimeType);
return true;
}