Index: sky/engine/core/app/AbstractModule.cpp |
diff --git a/sky/engine/core/app/AbstractModule.cpp b/sky/engine/core/app/AbstractModule.cpp |
index 5595d37ba8d799cedacda1df4672aad475dd46b3..3bffdf2f6601112c3d61002f0e3c882adad4ae11 100644 |
--- a/sky/engine/core/app/AbstractModule.cpp |
+++ b/sky/engine/core/app/AbstractModule.cpp |
@@ -5,6 +5,8 @@ |
#include "config.h" |
#include "core/app/AbstractModule.h" |
+#include "core/app/Module.h" |
+ |
namespace blink { |
AbstractModule::AbstractModule(ExecutionContext* context, |
@@ -24,4 +26,22 @@ ExecutionContext* AbstractModule::executionContext() const { |
return ContextLifecycleObserver::executionContext(); |
} |
+ScriptPromise AbstractModule::import(ScriptState* script_state, |
+ const String& url_string) { |
+ KURL url = document()->completeURL(url_string); |
+ RefPtr<ScriptPromiseResolver> resolver = |
+ ScriptPromiseResolver::create(script_state); |
+ OwnPtr<ModuleLoader> loader = |
+ adoptPtr(new ModuleLoader(this, GetApplication(), url)); |
+ loaders_.set(loader.release(), resolver); |
+ return resolver->promise(); |
+} |
+ |
+void AbstractModule::OnModuleLoadComplete(ModuleLoader* loader, |
+ Module* module) { |
+ RefPtr<ScriptPromiseResolver> resolver = loaders_.take(loader); |
+ ScriptState::Scope scope(resolver->scriptState()); |
+ resolver->resolve(module->exports().v8Value()); |
+} |
+ |
} // namespace blink |