APIWebArchiveResource.cpp [plain text]
#include "config.h"
#include "APIWebArchiveResource.h"
#if PLATFORM(COCOA)
#include "APIData.h"
#include <WebCore/ArchiveResource.h>
#include <WebCore/URL.h>
#include <wtf/RetainPtr.h>
using namespace WebCore;
namespace API {
PassRefPtr<WebArchiveResource> WebArchiveResource::create(API::Data* data, const String& URL, const String& MIMEType, const String& textEncoding)
{
return adoptRef(new WebArchiveResource(data, URL, MIMEType, textEncoding));
}
PassRefPtr<WebArchiveResource> WebArchiveResource::create(PassRefPtr<ArchiveResource> archiveResource)
{
return adoptRef(new WebArchiveResource(archiveResource));
}
WebArchiveResource::WebArchiveResource(API::Data* data, const String& URL, const String& MIMEType, const String& textEncoding)
: m_archiveResource(ArchiveResource::create(SharedBuffer::create(data->bytes(), data->size()), WebCore::URL(WebCore::URL(), URL), MIMEType, textEncoding, String()))
{
}
WebArchiveResource::WebArchiveResource(PassRefPtr<ArchiveResource> archiveResource)
: m_archiveResource(archiveResource)
{
}
WebArchiveResource::~WebArchiveResource()
{
}
static void releaseCFData(unsigned char*, const void* data)
{
CFRelease(data);
}
PassRefPtr<API::Data> WebArchiveResource::data()
{
RetainPtr<CFDataRef> cfData = m_archiveResource->data()->createCFData();
CFRetain(cfData.get());
return API::Data::createWithoutCopying(CFDataGetBytePtr(cfData.get()), CFDataGetLength(cfData.get()), releaseCFData, cfData.get());
}
String WebArchiveResource::URL()
{
return m_archiveResource->url().string();
}
String WebArchiveResource::MIMEType()
{
return m_archiveResource->mimeType();
}
String WebArchiveResource::textEncoding()
{
return m_archiveResource->textEncoding();
}
ArchiveResource* WebArchiveResource::coreArchiveResource()
{
return m_archiveResource.get();
}
}
#endif // PLATFORM(COCOA)