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 c523d831ef8089beadc06462ad4b2496857a543a..58dc787c332ea5a7bdb1d2c39b56bb9e0439f74f 100644 |
--- a/third_party/WebKit/Source/core/dom/Modulator.cpp |
+++ b/third_party/WebKit/Source/core/dom/Modulator.cpp |
@@ -16,4 +16,30 @@ Modulator* Modulator::from(LocalFrame* frame) { |
return scriptState->perContextData()->modulator(); |
} |
+KURL Modulator::resolveModuleSpecifier(const String& moduleRequest, |
+ const KURL& baseURL) { |
+ // Step 1. Apply the URL parser to specifier. If the result is not failure, |
+ // return the result. |
+ KURL url(KURL(), moduleRequest); |
+ if (url.isValid()) |
+ return url; |
+ |
+ // Step 2. If specifier does not start with the character U+002F SOLIDUS (/), |
+ // the two-character sequence U+002E FULL STOP, U+002F SOLIDUS (./), or the |
+ // three-character sequence U+002E FULL STOP, U+002E FULL STOP, U+002F SOLIDUS |
+ // (../), return failure and abort these steps. |
+ if (!moduleRequest.startsWith("/") && !moduleRequest.startsWith("./") && |
+ !moduleRequest.startsWith("../")) |
+ return KURL(); |
+ |
+ // Step 3. Return the result of applying the URL parser to specifier with |
+ // script's base URL as the base URL. |
+ DCHECK(baseURL.isValid()); |
+ KURL absoluteURL(baseURL, moduleRequest); |
+ if (absoluteURL.isValid()) |
+ return absoluteURL; |
+ |
+ return KURL(); |
+} |
+ |
} // namespace blink |