#include "config.h"
#include "APIPageHandle.h"
#include "Decoder.h"
#include "Encoder.h"
namespace API {
Ref<PageHandle> PageHandle::create(WebKit::WebPageProxyIdentifier pageProxyID, WebCore::PageIdentifier webPageID)
{
return adoptRef(*new PageHandle(pageProxyID, webPageID, false));
}
Ref<PageHandle> PageHandle::createAutoconverting(WebKit::WebPageProxyIdentifier pageProxyID, WebCore::PageIdentifier webPageID)
{
return adoptRef(*new PageHandle(pageProxyID, webPageID, true));
}
PageHandle::PageHandle(WebKit::WebPageProxyIdentifier pageProxyID, WebCore::PageIdentifier webPageID, bool isAutoconverting)
: m_pageProxyID(pageProxyID)
, m_webPageID(webPageID)
, m_isAutoconverting(isAutoconverting)
{
}
PageHandle::~PageHandle()
{
}
void PageHandle::encode(IPC::Encoder& encoder) const
{
encoder << m_pageProxyID;
encoder << m_webPageID;
encoder << m_isAutoconverting;
}
bool PageHandle::decode(IPC::Decoder& decoder, RefPtr<Object>& result)
{
Optional<WebKit::WebPageProxyIdentifier> pageProxyID;
decoder >> pageProxyID;
if (!pageProxyID)
return false;
Optional<WebCore::PageIdentifier> webPageID;
decoder >> webPageID;
if (!webPageID)
return false;
bool isAutoconverting;
if (!decoder.decode(isAutoconverting))
return false;
result = isAutoconverting ? createAutoconverting(*pageProxyID, *webPageID) : create(*pageProxyID, *webPageID);
return true;
}
}