| Index: third_party/WebKit/Source/core/dom/Modulator.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/Modulator.cpp b/third_party/WebKit/Source/core/dom/Modulator.cpp
|
| index 58dc787c332ea5a7bdb1d2c39b56bb9e0439f74f..5ed9a482bed9c53893aec63d711ce7255cf369e2 100644
|
| --- a/third_party/WebKit/Source/core/dom/Modulator.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/Modulator.cpp
|
| @@ -5,19 +5,42 @@
|
| #include "core/dom/Modulator.h"
|
|
|
| #include "bindings/core/v8/ScriptState.h"
|
| +#include "bindings/core/v8/V8PerContextData.h"
|
| +#include "core/dom/Document.h"
|
| +#include "core/dom/ModulatorImpl.h"
|
| +#include "core/frame/LocalFrame.h"
|
|
|
| namespace blink {
|
|
|
| +Modulator::~Modulator() {}
|
| +
|
| Modulator* Modulator::from(LocalFrame* frame) {
|
| ScriptState* scriptState = ScriptState::forMainWorld(frame);
|
| if (!scriptState)
|
| return nullptr;
|
| - // TODO(kouhei): setModulator in V8PerContextData when we land ModulatorImpl.
|
| - return scriptState->perContextData()->modulator();
|
| + Modulator* modulator = scriptState->perContextData()->modulator();
|
| + if (!modulator) {
|
| + if (Document* document = frame->document()) {
|
| + ScriptState* scriptState = ScriptState::forMainWorld(frame);
|
| + modulator = ModulatorImpl::create(scriptState, *document);
|
| + scriptState->perContextData()->setModulator(modulator);
|
| + }
|
| + }
|
| + return modulator;
|
| }
|
|
|
| -KURL Modulator::resolveModuleSpecifier(const String& moduleRequest,
|
| +KURL Modulator::resolveModuleSpecifier(const String& moduleRequest0,
|
| const KURL& baseURL) {
|
| + String moduleRequest = moduleRequest0.isolatedCopy();
|
| + if (!moduleRequest.endsWith(".js") && !moduleRequest.endsWith(".glsl")) {
|
| + moduleRequest.append('.');
|
| + moduleRequest.append('j');
|
| + moduleRequest.append('s');
|
| + }
|
| + if (moduleRequest.endsWith(".glsl")) {
|
| + moduleRequest =
|
| + KURL(KURL(), "data:text/javascript, export default 'glslsrc';");
|
| + }
|
| // Step 1. Apply the URL parser to specifier. If the result is not failure,
|
| // return the result.
|
| KURL url(KURL(), moduleRequest);
|
|
|