diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-01-02 21:25:47 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-01-26 15:50:09 -0500 |
commit | 5222f6e9daa4cb74b404f769b23510b3d600efd9 (patch) | |
tree | e00a760b5b662dcfb35e2849ea1e9d83c85617e2 /dom/base | |
parent | 244277a3fa428b70ba46cf611dbe1905733515eb (diff) | |
download | UXP-5222f6e9daa4cb74b404f769b23510b3d600efd9.tar UXP-5222f6e9daa4cb74b404f769b23510b3d600efd9.tar.gz UXP-5222f6e9daa4cb74b404f769b23510b3d600efd9.tar.lz UXP-5222f6e9daa4cb74b404f769b23510b3d600efd9.tar.xz UXP-5222f6e9daa4cb74b404f769b23510b3d600efd9.zip |
Bug 1274159 - Part 2-2: Support HTMLConstructor WebIDL extended attribute for custom elements;
Tag UXP Issue #1344
Diffstat (limited to 'dom/base')
-rw-r--r-- | dom/base/CustomElementRegistry.cpp | 17 | ||||
-rw-r--r-- | dom/base/CustomElementRegistry.h | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp index 43e4e7e2a..6cd213210 100644 --- a/dom/base/CustomElementRegistry.cpp +++ b/dom/base/CustomElementRegistry.cpp @@ -273,6 +273,23 @@ CustomElementRegistry::LookupCustomElementDefinition(const nsAString& aLocalName return nullptr; } +CustomElementDefinition* +CustomElementRegistry::LookupCustomElementDefinition(JSContext* aCx, + JSObject* aConstructor) const +{ + JS::Rooted<JSObject*> constructor(aCx, js::CheckedUnwrap(aConstructor)); + + const auto& ptr = mConstructors.lookup(constructor); + if (!ptr) { + return nullptr; + } + + CustomElementDefinition* definition = mCustomDefinitions.Get(ptr->value()); + MOZ_ASSERT(definition, "Definition must be found in mCustomDefinitions"); + + return definition; +} + void CustomElementRegistry::RegisterUnresolvedElement(Element* aElement, nsIAtom* aTypeName) { diff --git a/dom/base/CustomElementRegistry.h b/dom/base/CustomElementRegistry.h index 9034dd7ea..8ef0785af 100644 --- a/dom/base/CustomElementRegistry.h +++ b/dom/base/CustomElementRegistry.h @@ -128,6 +128,10 @@ struct CustomElementDefinition // The document custom element order. uint32_t mDocOrder; + + bool IsCustomBuiltIn() { + return mType != mLocalName; + } }; class CustomElementRegistry final : public nsISupports, @@ -155,6 +159,9 @@ public: CustomElementDefinition* LookupCustomElementDefinition( const nsAString& aLocalName, const nsAString* aIs = nullptr) const; + CustomElementDefinition* LookupCustomElementDefinition( + JSContext* aCx, JSObject *aConstructor) const; + /** * Enqueue created callback or register upgrade candidate for * newly created custom elements, possibly extending an existing type. |