CachedApplicationManifest.cpp [plain text]
#include "config.h"
#include "CachedApplicationManifest.h"
#if ENABLE(APPLICATION_MANIFEST)
#include "ApplicationManifestParser.h"
#include "SharedBuffer.h"
#include "TextResourceDecoder.h"
namespace WebCore {
CachedApplicationManifest::CachedApplicationManifest(CachedResourceRequest&& request, PAL::SessionID sessionID)
: CachedResource(WTFMove(request), Type::ApplicationManifest, sessionID)
, m_decoder(TextResourceDecoder::create("application/manifest+json", UTF8Encoding()))
{
}
void CachedApplicationManifest::finishLoading(SharedBuffer* data)
{
m_data = data;
setEncodedSize(data ? data->size() : 0);
if (data)
m_text = m_decoder->decodeAndFlush(data->data(), data->size());
CachedResource::finishLoading(data);
}
void CachedApplicationManifest::setEncoding(const String& chs)
{
m_decoder->setEncoding(chs, TextResourceDecoder::EncodingFromHTTPHeader);
}
String CachedApplicationManifest::encoding() const
{
return m_decoder->encoding().name();
}
std::optional<ApplicationManifest> CachedApplicationManifest::process(const URL& manifestURL, const URL& documentURL, RefPtr<ScriptExecutionContext> scriptExecutionContext)
{
if (!m_text)
return std::nullopt;
if (scriptExecutionContext)
return ApplicationManifestParser::parse(*scriptExecutionContext, *m_text, manifestURL, documentURL);
return ApplicationManifestParser::parse(*m_text, manifestURL, documentURL);
}
}
#endif // ENABLE(APPLICATION_MANIFEST)