Index: third_party/WebKit/Source/core/dom/ModuleMap.h |
diff --git a/third_party/WebKit/Source/core/dom/ModuleMap.h b/third_party/WebKit/Source/core/dom/ModuleMap.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9251af2092063030b8a533d06d2a574304fd53e1 |
--- /dev/null |
+++ b/third_party/WebKit/Source/core/dom/ModuleMap.h |
@@ -0,0 +1,53 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef ModuleMap_h |
+#define ModuleMap_h |
+ |
+#include "platform/heap/Handle.h" |
+#include "platform/weborigin/KURL.h" |
+#include "platform/weborigin/KURLHash.h" |
+#include "wtf/HashMap.h" |
+ |
+namespace blink { |
+ |
+class Modulator; |
+class ModuleScript; |
+class SingleModuleClient; |
+ |
+// A ModuleMap implements "module map" spec. |
+// https://html.spec.whatwg.org/#module-map |
+class ModuleMap final : public GarbageCollected<ModuleMap> { |
+ WTF_MAKE_NONCOPYABLE(ModuleMap); |
+ class Entry; |
+ class LoaderHost; |
+ |
+ public: |
+ static ModuleMap* create(Modulator* modulator) { |
+ return new ModuleMap(modulator); |
+ } |
+ DECLARE_TRACE(); |
+ |
+ void retrieveAndFetchIfNeeded(const KURL&, |
+ const KURL& baseURL, |
+ SingleModuleClient*); |
+ ModuleScript* retrieveFetchedModuleScript(const KURL&); |
+ |
+ Modulator* modulator() { return m_modulator; } |
+ |
+ private: |
+ explicit ModuleMap(Modulator*); |
+ ModuleMap() = delete; |
+ |
+ using MapImpl = HeapHashMap<KURL, Member<Entry>>; |
+ |
+ // A module map is a map of absolute URLs to map entry. |
+ MapImpl m_map; |
+ |
+ Member<Modulator> m_modulator; |
+}; |
+ |
+} // namespace blink |
+ |
+#endif |