Index: third_party/WebKit/Source/core/dom/custom/CustomElementsRegistry.h |
diff --git a/third_party/WebKit/Source/core/dom/custom/CustomElementsRegistry.h b/third_party/WebKit/Source/core/dom/custom/CustomElementsRegistry.h |
index 2d78fdf14ae2c61e98158f65c52d807b868eeef2..de7d2aaa98ccb722181a7683df4dfefd92421b95 100644 |
--- a/third_party/WebKit/Source/core/dom/custom/CustomElementsRegistry.h |
+++ b/third_party/WebKit/Source/core/dom/custom/CustomElementsRegistry.h |
@@ -5,34 +5,72 @@ |
#ifndef CustomElementsRegistry_h |
#define CustomElementsRegistry_h |
+#include "bindings/core/v8/ScopedPersistent.h" |
#include "bindings/core/v8/ScriptWrappable.h" |
#include "core/CoreExport.h" |
+#include "platform/heap/Handle.h" |
+#include "v8.h" |
+#include "wtf/HashSet.h" |
+#include "wtf/text/AtomicString.h" |
+#include "wtf/text/AtomicStringHash.h" |
namespace blink { |
+class CustomElementDefinition; |
class ElementRegistrationOptions; |
class ExceptionState; |
class ScriptState; |
class ScriptValue; |
+class V0CustomElementRegistrationContext; |
class CORE_EXPORT CustomElementsRegistry final |
- : public GarbageCollected<CustomElementsRegistry> |
+ : public GarbageCollectedFinalized<CustomElementsRegistry> |
, public ScriptWrappable { |
DEFINE_WRAPPERTYPEINFO(); |
public: |
- static CustomElementsRegistry* create() |
- { |
- return new CustomElementsRegistry(); |
- } |
+ using Id = uint32_t; |
+ static CustomElementsRegistry* create( |
+ ScriptState*, |
+ V0CustomElementRegistrationContext*); |
- void define(ScriptState*, const AtomicString& name, |
- const ScriptValue& constructor, const ElementRegistrationOptions&, |
+ void define( |
+ ScriptState*, |
+ const AtomicString& name, |
+ const ScriptValue& constructor, |
+ const ElementRegistrationOptions&, |
ExceptionState&); |
+ CustomElementDefinition* definitionForConstructor( |
+ ScriptState*, |
+ v8::Local<v8::Value> constructor); |
+ v8::Local<v8::Object> prototype( |
+ ScriptState*, |
+ const CustomElementDefinition&); |
+ |
+ // TODO(dominicc): Remove this when V0CustomElements are removed. |
+ bool nameIsDefined(const AtomicString& name) const; |
+ |
DECLARE_TRACE(); |
private: |
- CustomElementsRegistry(); |
+ CustomElementsRegistry(const V0CustomElementRegistrationContext*); |
+ |
+ // Retrieves the Map which, given a constructor, contains the id |
+ // of the definition; or given an id, contains the prototype. |
+ // Returns true if the map was retrieved; false if the map was |
+ // not initialized yet. |
+ v8::Local<v8::Map> idMap(ScriptState*); |
+ |
+ bool idForConstructor( |
+ ScriptState*, |
+ v8::Local<v8::Value> constructor, |
+ Id&) WARN_UNUSED_RETURN; |
+ |
+ bool v0NameIsDefined(const AtomicString& name); |
+ |
+ Member<const V0CustomElementRegistrationContext> m_v0; |
+ HeapVector<Member<CustomElementDefinition>> m_definitions; |
+ HashSet<AtomicString> m_names; |
}; |
} // namespace blink |