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 "config.h" | 5 #include "config.h" |
6 #include "core/app/AbstractModule.h" | 6 #include "core/app/AbstractModule.h" |
7 | 7 |
| 8 #include "core/app/Module.h" |
| 9 |
8 namespace blink { | 10 namespace blink { |
9 | 11 |
10 AbstractModule::AbstractModule(ExecutionContext* context, | 12 AbstractModule::AbstractModule(ExecutionContext* context, |
11 PassRefPtr<Document> document, | 13 PassRefPtr<Document> document, |
12 const String& url) | 14 const String& url) |
13 : ContextLifecycleObserver(context), | 15 : ContextLifecycleObserver(context), |
14 document_(document), | 16 document_(document), |
15 url_(url) { | 17 url_(url) { |
16 document_->setModule(this); | 18 document_->setModule(this); |
17 } | 19 } |
18 | 20 |
19 AbstractModule::~AbstractModule() { | 21 AbstractModule::~AbstractModule() { |
20 document_->setModule(nullptr); | 22 document_->setModule(nullptr); |
21 } | 23 } |
22 | 24 |
23 ExecutionContext* AbstractModule::executionContext() const { | 25 ExecutionContext* AbstractModule::executionContext() const { |
24 return ContextLifecycleObserver::executionContext(); | 26 return ContextLifecycleObserver::executionContext(); |
25 } | 27 } |
26 | 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().v8Value()); |
| 45 } |
| 46 |
27 } // namespace blink | 47 } // namespace blink |
OLD | NEW |