| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sky/engine/config.h" | 5 #include "sky/engine/config.h" |
| 6 #include "sky/engine/core/app/AbstractModule.h" | 6 #include "sky/engine/core/app/AbstractModule.h" |
| 7 | 7 |
| 8 #include "sky/engine/core/app/Module.h" | 8 #include "sky/engine/core/app/Module.h" |
| 9 | 9 |
| 10 namespace blink { | 10 namespace blink { |
| 11 | 11 |
| 12 AbstractModule::AbstractModule(ExecutionContext* context, | 12 AbstractModule::AbstractModule(ExecutionContext* context, |
| 13 PassRefPtr<Document> document, | 13 PassRefPtr<Document> document, |
| 14 const String& url) | 14 const String& url) |
| 15 : ContextLifecycleObserver(context), | 15 : ContextLifecycleObserver(context), |
| 16 document_(document), | 16 document_(document), |
| 17 url_(url) { | 17 url_(url) { |
| 18 document_->setModule(this); | 18 document_->setModule(this); |
| 19 } | 19 } |
| 20 | 20 |
| 21 AbstractModule::~AbstractModule() { | 21 AbstractModule::~AbstractModule() { |
| 22 document_->setModule(nullptr); | 22 document_->setModule(nullptr); |
| 23 } | 23 } |
| 24 | 24 |
| 25 ExecutionContext* AbstractModule::executionContext() const { | 25 ExecutionContext* AbstractModule::executionContext() const { |
| 26 return ContextLifecycleObserver::executionContext(); | 26 return ContextLifecycleObserver::executionContext(); |
| 27 } | 27 } |
| 28 | 28 |
| 29 ScriptPromise AbstractModule::import(ScriptState* script_state, | |
| 30 const String& url_string) { | |
| 31 KURL url = document()->completeURL(url_string); | |
| 32 RefPtr<ScriptPromiseResolver> resolver = | |
| 33 ScriptPromiseResolver::create(script_state); | |
| 34 OwnPtr<ModuleLoader> loader = | |
| 35 adoptPtr(new ModuleLoader(this, GetApplication(), url)); | |
| 36 loaders_.set(loader.release(), resolver); | |
| 37 return resolver->promise(); | |
| 38 } | |
| 39 | |
| 40 void AbstractModule::OnModuleLoadComplete(ModuleLoader* loader, | |
| 41 Module* module) { | |
| 42 RefPtr<ScriptPromiseResolver> resolver = loaders_.take(loader); | |
| 43 ScriptState::Scope scope(resolver->scriptState()); | |
| 44 resolver->resolve(module->exports(resolver->scriptState()).v8Value()); | |
| 45 } | |
| 46 | |
| 47 } // namespace blink | 29 } // namespace blink |
| OLD | NEW |