CachedModuleScript.h [plain text]
#pragma once
#include "CachedModuleScriptLoader.h"
#include "LoadableScript.h"
#include <runtime/JSInternalPromise.h>
namespace WebCore {
class CachedModuleScriptClient;
class Element;
class ScriptSourceCode;
class CachedModuleScript : public RefCounted<CachedModuleScript> {
public:
UniquedStringImpl* moduleKey() { return m_moduleKey.get(); }
void evaluate(Element&);
void notifyLoadCompleted(UniquedStringImpl& moduleKey);
void notifyLoadFailed(LoadableScript::Error&&);
void notifyLoadWasCanceled();
const std::optional<LoadableScript::Error>& error() const { return m_error; }
bool wasCanceled() const { return m_wasCanceled; }
bool isLoaded() const { return m_isLoaded; }
void addClient(CachedModuleScriptClient&);
void removeClient(CachedModuleScriptClient&);
static Ref<CachedModuleScript> create(const String& nonce, const String& crossOriginMode);
void load(Element& initiator, const URL& rootURL);
void load(Element& initiator, const ScriptSourceCode&);
const String& nonce() const { return m_nonce; }
const String& crossOriginMode() const { return m_crossOriginMode; }
private:
CachedModuleScript(const String& nonce, const String& crossOriginMode);
void notifyClientFinished();
RefPtr<UniquedStringImpl> m_moduleKey;
HashCountedSet<CachedModuleScriptClient*> m_clients;
String m_nonce;
String m_crossOriginMode;
std::optional<LoadableScript::Error> m_error;
bool m_wasCanceled { false };
bool m_isLoaded { false };
};
}