CachedScriptSourceProvider.h [plain text]
#pragma once
#include "CachedResourceClient.h"
#include "CachedResourceHandle.h"
#include "CachedScript.h"
#include "CachedScriptFetcher.h"
#include <JavaScriptCore/SourceProvider.h>
namespace WebCore {
class CachedScriptSourceProvider : public JSC::SourceProvider, public CachedResourceClient {
WTF_MAKE_FAST_ALLOCATED;
public:
static Ref<CachedScriptSourceProvider> create(CachedScript* cachedScript, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher) { return adoptRef(*new CachedScriptSourceProvider(cachedScript, sourceType, WTFMove(scriptFetcher))); }
virtual ~CachedScriptSourceProvider()
{
m_cachedScript->removeClient(*this);
}
unsigned hash() const override { return m_cachedScript->scriptHash(); }
StringView source() const override { return m_cachedScript->script(); }
private:
CachedScriptSourceProvider(CachedScript* cachedScript, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher)
: SourceProvider(JSC::SourceOrigin { cachedScript->response().url(), WTFMove(scriptFetcher) }, String(cachedScript->response().url().string()), TextPosition(), sourceType)
, m_cachedScript(cachedScript)
{
m_cachedScript->addClient(*this);
}
CachedResourceHandle<CachedScript> m_cachedScript;
};
}