CachedModuleScriptLoader.h [plain text]
#pragma once
#include "CachedResourceClient.h"
#include "CachedResourceHandle.h"
#include <wtf/Ref.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
namespace WebCore {
class CachedModuleScriptLoaderClient;
class CachedScript;
class CachedScriptFetcher;
class DeferredPromise;
class Document;
class JSDOMGlobalObject;
class ModuleFetchParameters;
class URL;
class CachedModuleScriptLoader final : public RefCounted<CachedModuleScriptLoader>, private CachedResourceClient {
public:
static Ref<CachedModuleScriptLoader> create(CachedModuleScriptLoaderClient&, DeferredPromise&, CachedScriptFetcher&, RefPtr<ModuleFetchParameters>&&);
virtual ~CachedModuleScriptLoader();
bool load(Document&, const URL& sourceURL);
CachedScriptFetcher& scriptFetcher() { return m_scriptFetcher.get(); }
CachedScript* cachedScript() { return m_cachedScript.get(); }
ModuleFetchParameters* parameters() { return m_parameters.get(); }
void clearClient()
{
ASSERT(m_client);
m_client = nullptr;
}
private:
CachedModuleScriptLoader(CachedModuleScriptLoaderClient&, DeferredPromise&, CachedScriptFetcher&, RefPtr<ModuleFetchParameters>&&);
void notifyFinished(CachedResource&) final;
CachedModuleScriptLoaderClient* m_client { nullptr };
RefPtr<DeferredPromise> m_promise;
Ref<CachedScriptFetcher> m_scriptFetcher;
RefPtr<ModuleFetchParameters> m_parameters;
CachedResourceHandle<CachedScript> m_cachedScript;
};
}