Index: sky/engine/core/app/AbstractModule.h |
diff --git a/sky/engine/core/app/AbstractModule.h b/sky/engine/core/app/AbstractModule.h |
index fc65261df2f8ae01a9f7faf56b481aeb4c6d5057..d9ece5a8cb93fff60328619650bc9729cf0e1e1b 100644 |
--- a/sky/engine/core/app/AbstractModule.h |
+++ b/sky/engine/core/app/AbstractModule.h |
@@ -5,16 +5,20 @@ |
#ifndef SKY_ENGINE_CORE_APP_ABSTRACT_MODULE_H_ |
#define SKY_ENGINE_CORE_APP_ABSTRACT_MODULE_H_ |
+#include "bindings/core/v8/ScriptPromiseResolver.h" |
+#include "core/app/ModuleLoader.h" |
#include "core/dom/ContextLifecycleObserver.h" |
#include "core/dom/Document.h" |
#include "core/events/EventTarget.h" |
#include "wtf/RefCounted.h" |
namespace blink { |
+class Application; |
class AbstractModule : public RefCounted<AbstractModule>, |
public EventTargetWithInlineData, |
- public ContextLifecycleObserver { |
+ public ContextLifecycleObserver, |
+ public ModuleLoader::Client { |
DEFINE_WRAPPERTYPEINFO(); |
REFCOUNTED_EVENT_TARGET(AbstractModule); |
public: |
@@ -23,14 +27,22 @@ class AbstractModule : public RefCounted<AbstractModule>, |
Document* document() const { return document_.get(); } |
const String& url() const { return url_; } |
+ ScriptPromise import(ScriptState*, const String& url); |
+ |
protected: |
AbstractModule(ExecutionContext*, PassRefPtr<Document>, const String& url); |
+ virtual Application* GetApplication() = 0; |
+ |
private: |
ExecutionContext* executionContext() const override; |
+ void OnModuleLoadComplete(ModuleLoader*, Module*) override; |
+ |
RefPtr<Document> document_; |
String url_; |
+ |
+ HashMap<OwnPtr<ModuleLoader>, RefPtr<ScriptPromiseResolver>> loaders_; |
}; |
} // namespace blink |