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 |