URLSchemeTaskParameters.cpp [plain text]
#include "config.h"
#include "URLSchemeTaskParameters.h"
#include "Decoder.h"
#include "Encoder.h"
#include "WebCoreArgumentCoders.h"
namespace WebKit {
void URLSchemeTaskParameters::encode(IPC::Encoder& encoder) const
{
encoder << handlerIdentifier;
encoder << taskIdentifier;
encoder << request;
if (request.httpBody()) {
encoder << true;
request.httpBody()->encode(encoder);
} else
encoder << false;
encoder << frameInfo;
}
Optional<URLSchemeTaskParameters> URLSchemeTaskParameters::decode(IPC::Decoder& decoder)
{
Optional<uint64_t> handlerIdentifier;
decoder >> handlerIdentifier;
if (!handlerIdentifier)
return WTF::nullopt;
Optional<uint64_t> taskIdentifier;
decoder >> taskIdentifier;
if (!taskIdentifier)
return WTF::nullopt;
WebCore::ResourceRequest request;
if (!decoder.decode(request))
return WTF::nullopt;
Optional<bool> hasHTTPBody;
decoder >> hasHTTPBody;
if (!hasHTTPBody)
return WTF::nullopt;
if (*hasHTTPBody) {
RefPtr<WebCore::FormData> formData = WebCore::FormData::decode(decoder);
if (!formData)
return WTF::nullopt;
request.setHTTPBody(WTFMove(formData));
}
Optional<FrameInfoData> frameInfo;
decoder >> frameInfo;
if (!frameInfo)
return WTF::nullopt;
return {{
WTFMove(*handlerIdentifier),
WTFMove(*taskIdentifier),
WTFMove(request),
WTFMove(*frameInfo),
}};
}
}