SecurityOriginData.cpp [plain text]
#include "config.h"
#include "SecurityOriginData.h"
#include "APIObject.h"
#include "ImmutableArray.h"
#include "WebCoreArgumentCoders.h"
#include "WebSecurityOrigin.h"
using namespace WebCore;
namespace WebKit {
SecurityOriginData SecurityOriginData::fromSecurityOrigin(SecurityOrigin* securityOrigin)
{
SecurityOriginData securityOriginData;
securityOriginData.protocol = securityOrigin->protocol();
securityOriginData.host = securityOrigin->host();
securityOriginData.port = securityOrigin->port();
return securityOriginData;
}
PassRefPtr<SecurityOrigin> SecurityOriginData::securityOrigin() const
{
return SecurityOrigin::create(protocol, host, port);
}
void SecurityOriginData::encode(CoreIPC::ArgumentEncoder& encoder) const
{
encoder << protocol;
encoder << host;
encoder << port;
}
bool SecurityOriginData::decode(CoreIPC::ArgumentDecoder& decoder, SecurityOriginData& securityOriginData)
{
if (!decoder.decode(securityOriginData.protocol))
return false;
if (!decoder.decode(securityOriginData.host))
return false;
if (!decoder.decode(securityOriginData.port))
return false;
return true;
}
void performAPICallbackWithSecurityOriginDataVector(const Vector<SecurityOriginData>& originDatas, ArrayCallback* callback)
{
if (!callback) {
return;
}
size_t originDataCount = originDatas.size();
Vector<RefPtr<APIObject>> securityOrigins;
securityOrigins.reserveCapacity(originDataCount);
for (size_t i = 0; i < originDataCount; ++i) {
SecurityOriginData originData = originDatas[i];
RefPtr<APIObject> origin = WebSecurityOrigin::create(originData.protocol, originData.host, originData.port);
if (!origin)
continue;
securityOrigins.uncheckedAppend(origin);
}
callback->performCallbackWithReturnValue(ImmutableArray::adopt(securityOrigins).get());
}
}