diff options
369 files changed, 18367 insertions, 15319 deletions
@@ -22,5 +22,5 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Clobber for NSS Update +Clobber for incremental customElements v1 landing diff --git a/build/directive4.py b/build/directive4.py index 28d84973e..bb832f6b7 100644 --- a/build/directive4.py +++ b/build/directive4.py @@ -33,7 +33,6 @@ if ('MOZ_OFFICIAL_BRANDING' in listConfig) or (strBrandingDirectory.endswith("br # Applies to Pale Moon and Basilisk if ('MC_BASILISK' in listConfig) or ('MC_PALEMOON' in listConfig): listViolations += [ - 'MOZ_SYSTEM_LIBEVENT', 'MOZ_SYSTEM_NSS', 'MOZ_SYSTEM_NSPR', 'MOZ_SYSTEM_JPEG', diff --git a/config/Makefile.in b/config/Makefile.in index 10807cfb9..1512520e4 100644 --- a/config/Makefile.in +++ b/config/Makefile.in @@ -46,7 +46,6 @@ export:: $(export-preqs) -DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \ -DMOZ_SYSTEM_PNG=$(MOZ_SYSTEM_PNG) \ -DMOZ_SYSTEM_JPEG=$(MOZ_SYSTEM_JPEG) \ - -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \ -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \ -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \ $(srcdir)/system-headers $(srcdir)/stl-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers diff --git a/config/milestone.txt b/config/milestone.txt index e74505029..a99a9ac9f 100644 --- a/config/milestone.txt +++ b/config/milestone.txt @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -4.5.0
\ No newline at end of file +4.5.9
\ No newline at end of file diff --git a/config/system-headers b/config/system-headers index b10324f0f..29eef3210 100644 --- a/config/system-headers +++ b/config/system-headers @@ -1276,11 +1276,7 @@ bzlib.h #ifdef MOZ_ENABLE_GIO gio/gio.h #endif -#if MOZ_SYSTEM_LIBEVENT==1 -event.h -#else sys/event.h -#endif #ifdef MOZ_ENABLE_LIBPROXY proxy.h #endif diff --git a/docs/Component docs/HTML Parser updates.md b/docs/Component docs/HTML Parser updates.md new file mode 100644 index 000000000..22a06e620 --- /dev/null +++ b/docs/Component docs/HTML Parser updates.md @@ -0,0 +1,63 @@ +# Updating HTML5 parser code + +Our html5 parser is based on the java html5 parser from [Validator.nu](http://about.validator.nu/htmlparser/) by Henri Sivonen. It has been adopted by Mozilla and further updated, and has been imported as a whole into the UXP tree to have an independent and maintainable source of it that doesn't rely on external sources. + +## Stages +Updating the parser code consists of 3 stages: +- Make updates to the html parser source in java +- Let the java parser regenerate part of its own code after the change +- Translate the java source to C++ + +This process was best explained in the [following Bugzilla comment](https://bugzilla.mozilla.org/show_bug.cgi?id=1378079#c6), which explain how to add a new attribute name ("is") to html5, inserted in this document for convenience: + +>> Is +>> there any documentation on how to add a new nsHtml5AttributeName? +> +> I don't recall. I should get around to writing it. +> +>> Looks like +>> I need to clone hg.mozilla.org/projects/htmlparser/ and generate a hash with +>> it? +> +> Yes. Here's how: +> +> `cd parser/html/java/` +> `make sync` +> +> Now you have a clone of [https://hg.mozilla.org/projects/htmlparser/](https://hg.mozilla.org/projects/htmlparser/) in > parser/html/java/htmlparser/ +> +> `cd htmlparser/src/` +> `$EDITOR nu/validator/htmlparser/impl/AttributeName.java` +> +> Search for the word "uncomment" and uncomment stuff according to the two comments that talk about uncommenting +> Duplicate the declaration a normal attribute (nothings special in SVG mode, etc.). Let's use "alt", since it's the first one. +> In the duplicate, replace ALT with IS and "alt" with "is". +> Search for "ALT,", duplicate that line and change the duplicate to say "IS," +> Save. +> +> `javac nu/validator/htmlparser/impl/AttributeName.java` +> `java nu.validator.htmlparser.impl.AttributeName` +> +> Copy and paste the output into nu/validator/htmlparser/impl/AttributeName.java replacing the text below the comment "START GENERATED CODE" and above the very last "}". +> Recomment the bits that you uncommented earlier. +> Save. +> +> `cd ../..` - Back to parser/html/java/ +> `make translate` + +## Organizing commits + +**The html5 parser code is fragile due to its generation and translation before being used as C++ in our tree. Do not touch or commit anything without a code peer nearby with knowledge of the parser and the commit process (at this moment that means Gaming4JC (@g4jc)), and communicate the changes thoroughly.** + +To organize this properly in our repo, commits should be split up when making these kinds of changes: +1. Commit your code edits to the html parser +2. Regenerate java into a translation-ready source +3. Commit +4. Translate and regenerate C++ code +5. Check a build to make sure the changes have the intended result +6. Commit + +This is needed because the source edit will sometimes be in parts that are self-generated and may otherwise be lost in generation noise, and because we want to keep a strict separation between commits resulting from developer work and those resulting from running scripts/automated processes. + + + diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index ebaf07bcd..6104ebfa7 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -13356,24 +13356,9 @@ nsDocShell::EnsureScriptEnvironment() uint32_t chromeFlags; browserChrome->GetChromeFlags(&chromeFlags); - bool isModalContentWindow = - (mItemType == typeContent) && - (chromeFlags & nsIWebBrowserChrome::CHROME_MODAL_CONTENT_WINDOW); - // There can be various other content docshells associated with the - // top-level window, like sidebars. Make sure that we only create an - // nsGlobalModalWindow for the primary content shell. - if (isModalContentWindow) { - nsCOMPtr<nsIDocShellTreeItem> primaryItem; - nsresult rv = - mTreeOwner->GetPrimaryContentShell(getter_AddRefs(primaryItem)); - NS_ENSURE_SUCCESS(rv, rv); - isModalContentWindow = (primaryItem == this); - } - // If our window is modal and we're not opened as chrome, make // this window a modal content window. - mScriptGlobal = - NS_NewScriptGlobalObject(mItemType == typeChrome, isModalContentWindow); + mScriptGlobal = NS_NewScriptGlobalObject(mItemType == typeChrome); MOZ_ASSERT(mScriptGlobal); mScriptGlobal->SetDocShell(this); diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp index 3f202d33b..99452df65 100644 --- a/dom/base/CustomElementRegistry.cpp +++ b/dom/base/CustomElementRegistry.cpp @@ -6,9 +6,11 @@ #include "mozilla/dom/CustomElementRegistry.h" +#include "mozilla/CycleCollectedJSContext.h" #include "mozilla/dom/CustomElementRegistryBinding.h" #include "mozilla/dom/HTMLElementBinding.h" #include "mozilla/dom/WebComponentsBinding.h" +#include "mozilla/dom/DocGroup.h" #include "nsIParserService.h" #include "jsapi.h" @@ -18,40 +20,21 @@ namespace dom { void CustomElementCallback::Call() { - ErrorResult rv; + IgnoredErrorResult rv; switch (mType) { - case nsIDocument::eCreated: - { - // For the duration of this callback invocation, the element is being created - // flag must be set to true. - mOwnerData->mElementIsBeingCreated = true; - - // The callback hasn't actually been invoked yet, but we need to flip - // this now in order to enqueue the attached callback. This is a spec - // bug (w3c bug 27437). - mOwnerData->mCreatedCallbackInvoked = true; - - // If ELEMENT is in a document and this document has a browsing context, - // enqueue attached callback for ELEMENT. - nsIDocument* document = mThisObject->GetComposedDoc(); - if (document && document->GetDocShell()) { - nsContentUtils::EnqueueLifecycleCallback( - document, nsIDocument::eAttached, mThisObject); - } - - static_cast<LifecycleCreatedCallback *>(mCallback.get())->Call(mThisObject, rv); - mOwnerData->mElementIsBeingCreated = false; + case nsIDocument::eConnected: + static_cast<LifecycleConnectedCallback *>(mCallback.get())->Call(mThisObject, rv); break; - } - case nsIDocument::eAttached: - static_cast<LifecycleAttachedCallback *>(mCallback.get())->Call(mThisObject, rv); + case nsIDocument::eDisconnected: + static_cast<LifecycleDisconnectedCallback *>(mCallback.get())->Call(mThisObject, rv); break; - case nsIDocument::eDetached: - static_cast<LifecycleDetachedCallback *>(mCallback.get())->Call(mThisObject, rv); + case nsIDocument::eAdopted: + static_cast<LifecycleAdoptedCallback *>(mCallback.get())->Call(mThisObject, + mAdoptedCallbackArgs.mOldDocument, mAdoptedCallbackArgs.mNewDocument, rv); break; case nsIDocument::eAttributeChanged: static_cast<LifecycleAttributeChangedCallback *>(mCallback.get())->Call(mThisObject, - mArgs.name, mArgs.oldValue, mArgs.newValue, rv); + mArgs.name, mArgs.oldValue, mArgs.newValue, mArgs.namespaceURI, rv); break; } } @@ -68,87 +51,164 @@ CustomElementCallback::Traverse(nsCycleCollectionTraversalCallback& aCb) const CustomElementCallback::CustomElementCallback(Element* aThisObject, nsIDocument::ElementCallbackType aCallbackType, - mozilla::dom::CallbackFunction* aCallback, - CustomElementData* aOwnerData) + mozilla::dom::CallbackFunction* aCallback) : mThisObject(aThisObject), mCallback(aCallback), - mType(aCallbackType), - mOwnerData(aOwnerData) + mType(aCallbackType) +{ +} + +//----------------------------------------------------- +// CustomElementConstructor + +already_AddRefed<Element> +CustomElementConstructor::Construct(const char* aExecutionReason, + ErrorResult& aRv) { + CallSetup s(this, aRv, aExecutionReason, + CallbackFunction::eRethrowExceptions); + + JSContext* cx = s.GetContext(); + if (!cx) { + MOZ_ASSERT(aRv.Failed()); + return nullptr; + } + + JS::Rooted<JSObject*> result(cx); + JS::Rooted<JS::Value> constructor(cx, JS::ObjectValue(*mCallback)); + if (!JS::Construct(cx, constructor, JS::HandleValueArray::empty(), &result)) { + aRv.NoteJSContextException(cx); + return nullptr; + } + + RefPtr<Element> element; + if (NS_FAILED(UNWRAP_OBJECT(Element, &result, element))) { + return nullptr; + } + + return element.forget(); } +//----------------------------------------------------- +// CustomElementData + CustomElementData::CustomElementData(nsIAtom* aType) - : mType(aType), - mCurrentCallback(-1), - mElementIsBeingCreated(false), - mCreatedCallbackInvoked(true), - mAssociatedMicroTask(-1) + : CustomElementData(aType, CustomElementData::State::eUndefined) +{ +} + +CustomElementData::CustomElementData(nsIAtom* aType, State aState) + : mState(aState) + , mType(aType) { } void -CustomElementData::RunCallbackQueue() +CustomElementData::SetCustomElementDefinition(CustomElementDefinition* aDefinition) { - // Note: It's possible to re-enter this method. - while (static_cast<uint32_t>(++mCurrentCallback) < mCallbackQueue.Length()) { - mCallbackQueue[mCurrentCallback]->Call(); + MOZ_ASSERT(mState == State::eCustom); + MOZ_ASSERT(!mCustomElementDefinition); + MOZ_ASSERT(aDefinition->mType == mType); + + mCustomElementDefinition = aDefinition; +} + +CustomElementDefinition* +CustomElementData::GetCustomElementDefinition() +{ + MOZ_ASSERT(mCustomElementDefinition ? mState == State::eCustom + : mState != State::eCustom); + + return mCustomElementDefinition; +} + +nsIAtom* +CustomElementData::GetCustomElementType() +{ + return mType; +} + +void +CustomElementData::Traverse(nsCycleCollectionTraversalCallback& aCb) const +{ + for (uint32_t i = 0; i < mReactionQueue.Length(); i++) { + if (mReactionQueue[i]) { + mReactionQueue[i]->Traverse(aCb); + } } - mCallbackQueue.Clear(); - mCurrentCallback = -1; + if (mCustomElementDefinition) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mCustomElementDefinition"); + aCb.NoteNativeChild(mCustomElementDefinition, + NS_CYCLE_COLLECTION_PARTICIPANT(CustomElementDefinition)); + } } +void +CustomElementData::Unlink() +{ + mReactionQueue.Clear(); + mCustomElementDefinition = nullptr; +} + +//----------------------------------------------------- +// CustomElementRegistry + +namespace { + +class MOZ_RAII AutoConstructionStackEntry final +{ +public: + AutoConstructionStackEntry(nsTArray<RefPtr<nsGenericHTMLElement>>& aStack, + nsGenericHTMLElement* aElement) + : mStack(aStack) + { + mIndex = mStack.Length(); + mStack.AppendElement(aElement); + } + + ~AutoConstructionStackEntry() + { + MOZ_ASSERT(mIndex == mStack.Length() - 1, + "Removed element should be the last element"); + mStack.RemoveElementAt(mIndex); + } + +private: + nsTArray<RefPtr<nsGenericHTMLElement>>& mStack; + uint32_t mIndex; +}; + +} // namespace anonymous + // Only needed for refcounted objects. NS_IMPL_CYCLE_COLLECTION_CLASS(CustomElementRegistry) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(CustomElementRegistry) - tmp->mCustomDefinitions.Clear(); + tmp->mConstructors.clear(); + NS_IMPL_CYCLE_COLLECTION_UNLINK(mCustomDefinitions) NS_IMPL_CYCLE_COLLECTION_UNLINK(mWhenDefinedPromiseMap) NS_IMPL_CYCLE_COLLECTION_UNLINK(mWindow) NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(CustomElementRegistry) - for (auto iter = tmp->mCustomDefinitions.Iter(); !iter.Done(); iter.Next()) { - nsAutoPtr<LifecycleCallbacks>& callbacks = iter.UserData()->mCallbacks; - - if (callbacks->mAttributeChangedCallback.WasPassed()) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, - "mCustomDefinitions->mCallbacks->mAttributeChangedCallback"); - cb.NoteXPCOMChild(callbacks->mAttributeChangedCallback.Value()); - } - - if (callbacks->mCreatedCallback.WasPassed()) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, - "mCustomDefinitions->mCallbacks->mCreatedCallback"); - cb.NoteXPCOMChild(callbacks->mCreatedCallback.Value()); - } - - if (callbacks->mAttachedCallback.WasPassed()) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, - "mCustomDefinitions->mCallbacks->mAttachedCallback"); - cb.NoteXPCOMChild(callbacks->mAttachedCallback.Value()); - } - - if (callbacks->mDetachedCallback.WasPassed()) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, - "mCustomDefinitions->mCallbacks->mDetachedCallback"); - cb.NoteXPCOMChild(callbacks->mDetachedCallback.Value()); - } - } + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCustomDefinitions) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWhenDefinedPromiseMap) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWindow) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(CustomElementRegistry) for (auto iter = tmp->mCustomDefinitions.Iter(); !iter.Done(); iter.Next()) { - aCallbacks.Trace(&iter.UserData()->mConstructor, - "mCustomDefinitions constructor", - aClosure); aCallbacks.Trace(&iter.UserData()->mPrototype, "mCustomDefinitions prototype", aClosure); } + for (ConstructorMap::Enum iter(tmp->mConstructors); !iter.empty(); iter.popFront()) { + aCallbacks.Trace(&iter.front().mutableKey(), + "mConstructors key", + aClosure); + } NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_TRACE_END @@ -163,97 +223,52 @@ NS_INTERFACE_MAP_END /* static */ bool CustomElementRegistry::IsCustomElementEnabled(JSContext* aCx, JSObject* aObject) { - return Preferences::GetBool("dom.webcomponents.customelements.enabled") || - Preferences::GetBool("dom.webcomponents.enabled"); + return nsContentUtils::IsCustomElementsEnabled(); } -/* static */ already_AddRefed<CustomElementRegistry> -CustomElementRegistry::Create(nsPIDOMWindowInner* aWindow) +CustomElementRegistry::CustomElementRegistry(nsPIDOMWindowInner* aWindow) + : mWindow(aWindow) + , mIsCustomDefinitionRunning(false) { MOZ_ASSERT(aWindow); MOZ_ASSERT(aWindow->IsInnerWindow()); + MOZ_ALWAYS_TRUE(mConstructors.init()); - if (!aWindow->GetDocShell()) { - return nullptr; - } - - if (!IsCustomElementEnabled()) { - return nullptr; - } - - RefPtr<CustomElementRegistry> customElementRegistry = - new CustomElementRegistry(aWindow); - return customElementRegistry.forget(); -} - -/* static */ void -CustomElementRegistry::ProcessTopElementQueue() -{ - MOZ_ASSERT(nsContentUtils::IsSafeToRunScript()); - - nsTArray<RefPtr<CustomElementData>>& stack = *sProcessingStack; - uint32_t firstQueue = stack.LastIndexOf((CustomElementData*) nullptr); - - for (uint32_t i = firstQueue + 1; i < stack.Length(); ++i) { - // Callback queue may have already been processed in an earlier - // element queue or in an element queue that was popped - // off more recently. - if (stack[i]->mAssociatedMicroTask != -1) { - stack[i]->RunCallbackQueue(); - stack[i]->mAssociatedMicroTask = -1; - } - } - - // If this was actually the base element queue, don't bother trying to pop - // the first "queue" marker (sentinel). - if (firstQueue != 0) { - stack.SetLength(firstQueue); - } else { - // Don't pop sentinel for base element queue. - stack.SetLength(1); - } + mozilla::HoldJSObjects(this); } -/* static */ void -CustomElementRegistry::XPCOMShutdown() +CustomElementRegistry::~CustomElementRegistry() { - sProcessingStack.reset(); + mozilla::DropJSObjects(this); } -/* static */ Maybe<nsTArray<RefPtr<CustomElementData>>> -CustomElementRegistry::sProcessingStack; - -CustomElementRegistry::CustomElementRegistry(nsPIDOMWindowInner* aWindow) - : mWindow(aWindow) - , mIsCustomDefinitionRunning(false) +CustomElementDefinition* +CustomElementRegistry::LookupCustomElementDefinition(nsIAtom* aNameAtom, + nsIAtom* aTypeAtom) const { - mozilla::HoldJSObjects(this); - - if (!sProcessingStack) { - sProcessingStack.emplace(); - // Add the base queue sentinel to the processing stack. - sProcessingStack->AppendElement((CustomElementData*) nullptr); + CustomElementDefinition* data = mCustomDefinitions.GetWeak(aTypeAtom); + if (data && data->mLocalName == aNameAtom) { + return data; } -} -CustomElementRegistry::~CustomElementRegistry() -{ - mozilla::DropJSObjects(this); + return nullptr; } CustomElementDefinition* -CustomElementRegistry::LookupCustomElementDefinition(const nsAString& aLocalName, - const nsAString* aIs) const +CustomElementRegistry::LookupCustomElementDefinition(JSContext* aCx, + JSObject* aConstructor) const { - nsCOMPtr<nsIAtom> localNameAtom = NS_Atomize(aLocalName); - nsCOMPtr<nsIAtom> typeAtom = aIs ? NS_Atomize(*aIs) : localNameAtom; + JS::Rooted<JSObject*> constructor(aCx, js::CheckedUnwrap(aConstructor)); - CustomElementDefinition* data = mCustomDefinitions.Get(typeAtom); - if (data && data->mLocalName == localNameAtom) { - return data; + const auto& ptr = mConstructors.lookup(constructor); + if (!ptr) { + return nullptr; } - return nullptr; + CustomElementDefinition* definition = mCustomDefinitions.GetWeak(ptr->value()); + MOZ_ASSERT(definition, "Definition must be found in mCustomDefinitions"); + + return definition; } void @@ -269,7 +284,7 @@ CustomElementRegistry::RegisterUnresolvedElement(Element* aElement, nsIAtom* aTy typeName = info->NameAtom(); } - if (mCustomDefinitions.Get(typeName)) { + if (mCustomDefinitions.GetWeak(typeName)) { return; } @@ -282,171 +297,129 @@ CustomElementRegistry::RegisterUnresolvedElement(Element* aElement, nsIAtom* aTy } void -CustomElementRegistry::SetupCustomElement(Element* aElement, - const nsAString* aTypeExtension) +CustomElementRegistry::UnregisterUnresolvedElement(Element* aElement, + nsIAtom* aTypeName) { - nsCOMPtr<nsIAtom> tagAtom = aElement->NodeInfo()->NameAtom(); - nsCOMPtr<nsIAtom> typeAtom = aTypeExtension ? - NS_Atomize(*aTypeExtension) : tagAtom; - - if (aTypeExtension && !aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::is)) { - // Custom element setup in the parser happens after the "is" - // attribute is added. - aElement->SetAttr(kNameSpaceID_None, nsGkAtoms::is, *aTypeExtension, true); - } - - CustomElementDefinition* data = LookupCustomElementDefinition( - aElement->NodeInfo()->LocalName(), aTypeExtension); - - if (!data) { - // The type extension doesn't exist in the registry, - // thus we don't need to enqueue callback or adjust - // the "is" attribute, but it is possibly an upgrade candidate. - RegisterUnresolvedElement(aElement, typeAtom); - return; - } - - if (data->mLocalName != tagAtom) { - // The element doesn't match the local name for the - // definition, thus the element isn't a custom element - // and we don't need to do anything more. - return; + nsTArray<nsWeakPtr>* candidates; + if (mCandidatesMap.Get(aTypeName, &candidates)) { + MOZ_ASSERT(candidates); + // We don't need to iterate the candidates array and remove the element from + // the array for performance reason. It'll be handled by bug 1396620. + for (size_t i = 0; i < candidates->Length(); ++i) { + nsCOMPtr<Element> elem = do_QueryReferent(candidates->ElementAt(i)); + if (elem && elem.get() == aElement) { + candidates->RemoveElementAt(i); + } + } } - - // Enqueuing the created callback will set the CustomElementData on the - // element, causing prototype swizzling to occur in Element::WrapObject. - EnqueueLifecycleCallback(nsIDocument::eCreated, aElement, nullptr, data); } -void -CustomElementRegistry::EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType, - Element* aCustomElement, - LifecycleCallbackArgs* aArgs, - CustomElementDefinition* aDefinition) +/* static */ UniquePtr<CustomElementCallback> +CustomElementRegistry::CreateCustomElementCallback( + nsIDocument::ElementCallbackType aType, Element* aCustomElement, + LifecycleCallbackArgs* aArgs, + LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs, + CustomElementDefinition* aDefinition) { - CustomElementData* elementData = aCustomElement->GetCustomElementData(); - - // Let DEFINITION be ELEMENT's definition - CustomElementDefinition* definition = aDefinition; - if (!definition) { - mozilla::dom::NodeInfo* info = aCustomElement->NodeInfo(); - - // Make sure we get the correct definition in case the element - // is a extended custom element e.g. <button is="x-button">. - nsCOMPtr<nsIAtom> typeAtom = elementData ? - elementData->mType.get() : info->NameAtom(); + MOZ_ASSERT(aDefinition, "CustomElementDefinition should not be null"); - definition = mCustomDefinitions.Get(typeAtom); - if (!definition || definition->mLocalName != info->NameAtom()) { - // Trying to enqueue a callback for an element that is not - // a custom element. We are done, nothing to do. - return; - } - } - - if (!elementData) { - // Create the custom element data the first time - // that we try to enqueue a callback. - elementData = new CustomElementData(definition->mType); - // aCustomElement takes ownership of elementData - aCustomElement->SetCustomElementData(elementData); - MOZ_ASSERT(aType == nsIDocument::eCreated, - "First callback should be the created callback"); - } + MOZ_ASSERT(aCustomElement->GetCustomElementData(), + "CustomElementData should exist"); // Let CALLBACK be the callback associated with the key NAME in CALLBACKS. CallbackFunction* func = nullptr; switch (aType) { - case nsIDocument::eCreated: - if (definition->mCallbacks->mCreatedCallback.WasPassed()) { - func = definition->mCallbacks->mCreatedCallback.Value(); + case nsIDocument::eConnected: + if (aDefinition->mCallbacks->mConnectedCallback.WasPassed()) { + func = aDefinition->mCallbacks->mConnectedCallback.Value(); } break; - case nsIDocument::eAttached: - if (definition->mCallbacks->mAttachedCallback.WasPassed()) { - func = definition->mCallbacks->mAttachedCallback.Value(); + case nsIDocument::eDisconnected: + if (aDefinition->mCallbacks->mDisconnectedCallback.WasPassed()) { + func = aDefinition->mCallbacks->mDisconnectedCallback.Value(); } break; - case nsIDocument::eDetached: - if (definition->mCallbacks->mDetachedCallback.WasPassed()) { - func = definition->mCallbacks->mDetachedCallback.Value(); + case nsIDocument::eAdopted: + if (aDefinition->mCallbacks->mAdoptedCallback.WasPassed()) { + func = aDefinition->mCallbacks->mAdoptedCallback.Value(); } break; case nsIDocument::eAttributeChanged: - if (definition->mCallbacks->mAttributeChangedCallback.WasPassed()) { - func = definition->mCallbacks->mAttributeChangedCallback.Value(); + if (aDefinition->mCallbacks->mAttributeChangedCallback.WasPassed()) { + func = aDefinition->mCallbacks->mAttributeChangedCallback.Value(); } break; } // If there is no such callback, stop. if (!func) { - return; - } - - if (aType == nsIDocument::eCreated) { - elementData->mCreatedCallbackInvoked = false; - } else if (!elementData->mCreatedCallbackInvoked) { - // Callbacks other than created callback must not be enqueued - // until after the created callback has been invoked. - return; + return nullptr; } // Add CALLBACK to ELEMENT's callback queue. - CustomElementCallback* callback = new CustomElementCallback(aCustomElement, - aType, - func, - elementData); - // Ownership of callback is taken by mCallbackQueue. - elementData->mCallbackQueue.AppendElement(callback); + auto callback = + MakeUnique<CustomElementCallback>(aCustomElement, aType, func); + if (aArgs) { callback->SetArgs(*aArgs); } - if (!elementData->mElementIsBeingCreated) { - CustomElementData* lastData = - sProcessingStack->SafeLastElement(nullptr); - - // A new element queue needs to be pushed if the queue at the - // top of the stack is associated with another microtask level. - bool shouldPushElementQueue = - (!lastData || lastData->mAssociatedMicroTask < - static_cast<int32_t>(nsContentUtils::MicroTaskLevel())); + if (aAdoptedCallbackArgs) { + callback->SetAdoptedCallbackArgs(*aAdoptedCallbackArgs); + } + return Move(callback); +} - // Push a new element queue onto the processing stack when appropriate - // (when we enter a new microtask). - if (shouldPushElementQueue) { - // Push a sentinel value on the processing stack to mark the - // boundary between the element queues. - sProcessingStack->AppendElement((CustomElementData*) nullptr); +/* static */ void +CustomElementRegistry::EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType, + Element* aCustomElement, + LifecycleCallbackArgs* aArgs, + LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs, + CustomElementDefinition* aDefinition) +{ + CustomElementDefinition* definition = aDefinition; + if (!definition) { + definition = aCustomElement->GetCustomElementDefinition(); + if (!definition || + definition->mLocalName != aCustomElement->NodeInfo()->NameAtom()) { + return; } + } - sProcessingStack->AppendElement(elementData); - elementData->mAssociatedMicroTask = - static_cast<int32_t>(nsContentUtils::MicroTaskLevel()); - - // Add a script runner to pop and process the element queue at - // the top of the processing stack. - if (shouldPushElementQueue) { - // Lifecycle callbacks enqueued by user agent implementation - // should be invoked prior to returning control back to script. - // Create a script runner to process the top of the processing - // stack as soon as it is safe to run script. - nsCOMPtr<nsIRunnable> runnable = - NS_NewRunnableFunction(&CustomElementRegistry::ProcessTopElementQueue); - nsContentUtils::AddScriptRunner(runnable); + auto callback = + CreateCustomElementCallback(aType, aCustomElement, aArgs, + aAdoptedCallbackArgs, definition); + if (!callback) { + return; + } + + DocGroup* docGroup = aCustomElement->OwnerDoc()->GetDocGroup(); + if (!docGroup) { + return; + } + + if (aType == nsIDocument::eAttributeChanged) { + nsCOMPtr<nsIAtom> attrName = NS_Atomize(aArgs->name); + if (definition->mObservedAttributes.IsEmpty() || + !definition->mObservedAttributes.Contains(attrName)) { + return; } } + + CustomElementReactionsStack* reactionsStack = + docGroup->CustomElementReactionsStack(); + reactionsStack->EnqueueCallbackReaction(aCustomElement, Move(callback)); } void CustomElementRegistry::GetCustomPrototype(nsIAtom* aAtom, JS::MutableHandle<JSObject*> aPrototype) { - mozilla::dom::CustomElementDefinition* definition = mCustomDefinitions.Get(aAtom); + mozilla::dom::CustomElementDefinition* definition = + mCustomDefinitions.GetWeak(aAtom); if (definition) { aPrototype.set(definition->mPrototype); } else { @@ -455,48 +428,29 @@ CustomElementRegistry::GetCustomPrototype(nsIAtom* aAtom, } void -CustomElementRegistry::UpgradeCandidates(JSContext* aCx, - nsIAtom* aKey, - CustomElementDefinition* aDefinition) +CustomElementRegistry::UpgradeCandidates(nsIAtom* aKey, + CustomElementDefinition* aDefinition, + ErrorResult& aRv) { + DocGroup* docGroup = mWindow->GetDocGroup(); + if (!docGroup) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return; + } + + // TODO: Bug 1326028 - Upgrade custom element in shadow-including tree order nsAutoPtr<nsTArray<nsWeakPtr>> candidates; mCandidatesMap.RemoveAndForget(aKey, candidates); if (candidates) { + CustomElementReactionsStack* reactionsStack = + docGroup->CustomElementReactionsStack(); for (size_t i = 0; i < candidates->Length(); ++i) { nsCOMPtr<Element> elem = do_QueryReferent(candidates->ElementAt(i)); if (!elem) { continue; } - elem->RemoveStates(NS_EVENT_STATE_UNRESOLVED); - - // Make sure that the element name matches the name in the definition. - // (e.g. a definition for x-button extending button should match - // <button is="x-button"> but not <x-button>. - if (elem->NodeInfo()->NameAtom() != aDefinition->mLocalName) { - //Skip over this element because definition does not apply. - continue; - } - - MOZ_ASSERT(elem->IsHTMLElement(aDefinition->mLocalName)); - nsWrapperCache* cache; - CallQueryInterface(elem, &cache); - MOZ_ASSERT(cache, "Element doesn't support wrapper cache?"); - - // We want to set the custom prototype in the caller's comparment. - // In the case that element is in a different compartment, - // this will set the prototype on the element's wrapper and - // thus only visible in the wrapper's compartment. - JS::RootedObject wrapper(aCx); - JS::Rooted<JSObject*> prototype(aCx, aDefinition->mPrototype); - if ((wrapper = cache->GetWrapper()) && JS_WrapObject(aCx, &wrapper)) { - if (!JS_SetPrototype(aCx, wrapper, prototype)) { - continue; - } - } - - nsContentUtils::EnqueueLifecycleCallback( - elem->OwnerDoc(), nsIDocument::eCreated, elem, nullptr, aDefinition); + reactionsStack->EnqueueUpgradeReaction(elem, aDefinition); } } } @@ -516,11 +470,7 @@ static const char* kLifeCycleCallbackNames[] = { "connectedCallback", "disconnectedCallback", "adoptedCallback", - "attributeChangedCallback", - // The life cycle callbacks from v0 spec. - "createdCallback", - "attachedCallback", - "detachedCallback" + "attributeChangedCallback" }; static void @@ -600,7 +550,7 @@ CustomElementRegistry::Define(const nsAString& aName, * 3. If this CustomElementRegistry contains an entry with name name, then * throw a "NotSupportedError" DOMException and abort these steps. */ - if (mCustomDefinitions.Get(nameAtom)) { + if (mCustomDefinitions.GetWeak(nameAtom)) { aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); return; } @@ -609,9 +559,13 @@ CustomElementRegistry::Define(const nsAString& aName, * 4. If this CustomElementRegistry contains an entry with constructor constructor, * then throw a "NotSupportedError" DOMException and abort these steps. */ - // TODO: Step 3 of HTMLConstructor also needs a way to look up definition by - // using constructor. So I plans to figure out a solution to support both of - // them in bug 1274159. + const auto& ptr = mConstructors.lookup(constructorUnwrapped); + if (ptr) { + MOZ_ASSERT(mCustomDefinitions.GetWeak(ptr->value()), + "Definition must be found in mCustomDefinitions"); + aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); + return; + } /** * 5. Let localName be name. @@ -663,6 +617,7 @@ CustomElementRegistry::Define(const nsAString& aName, JS::Rooted<JSObject*> constructorPrototype(cx); nsAutoPtr<LifecycleCallbacks> callbacksHolder(new LifecycleCallbacks()); + nsCOMArray<nsIAtom> observedAttributes; { // Set mIsCustomDefinitionRunning. /** * 9. Set this CustomElementRegistry's element definition is running flag. @@ -724,6 +679,14 @@ CustomElementRegistry::Define(const nsAString& aName, return; } + // Note: We call the init from the constructorProtoUnwrapped's compartment + // here. + JS::RootedValue rootedv(cx, JS::ObjectValue(*constructorProtoUnwrapped)); + if (!JS_WrapValue(cx, &rootedv) || !callbacksHolder->Init(cx, rootedv)) { + aRv.StealExceptionFromJSContext(cx); + return; + } + /** * 10.5. Let observedAttributes be an empty sequence<DOMString>. * 10.6. If the value of the entry in lifecycleCallbacks with key @@ -735,15 +698,54 @@ CustomElementRegistry::Define(const nsAString& aName, * observedAttributesIterable to a sequence<DOMString>. Rethrow * any exceptions from the conversion. */ - // TODO: Bug 1293921 - Implement connected/disconnected/adopted/attributeChanged lifecycle callbacks for custom elements + if (callbacksHolder->mAttributeChangedCallback.WasPassed()) { + // Enter constructor's compartment. + JSAutoCompartment ac(cx, constructor); + JS::Rooted<JS::Value> observedAttributesIterable(cx); + + if (!JS_GetProperty(cx, constructor, "observedAttributes", + &observedAttributesIterable)) { + aRv.StealExceptionFromJSContext(cx); + return; + } - // Note: We call the init from the constructorProtoUnwrapped's compartment - // here. - JS::RootedValue rootedv(cx, JS::ObjectValue(*constructorProtoUnwrapped)); - if (!JS_WrapValue(cx, &rootedv) || !callbacksHolder->Init(cx, rootedv)) { - aRv.Throw(NS_ERROR_FAILURE); - return; - } + if (!observedAttributesIterable.isUndefined()) { + if (!observedAttributesIterable.isObject()) { + aRv.ThrowTypeError<MSG_NOT_SEQUENCE>(NS_LITERAL_STRING("observedAttributes")); + return; + } + + JS::ForOfIterator iter(cx); + if (!iter.init(observedAttributesIterable, JS::ForOfIterator::AllowNonIterable)) { + aRv.StealExceptionFromJSContext(cx); + return; + } + + if (!iter.valueIsIterable()) { + aRv.ThrowTypeError<MSG_NOT_SEQUENCE>(NS_LITERAL_STRING("observedAttributes")); + return; + } + + JS::Rooted<JS::Value> attribute(cx); + while (true) { + bool done; + if (!iter.next(&attribute, &done)) { + aRv.StealExceptionFromJSContext(cx); + return; + } + if (done) { + break; + } + + nsAutoString attrStr; + if (!ConvertJSValueToString(cx, attribute, eStringify, eStringify, attrStr)) { + aRv.StealExceptionFromJSContext(cx); + return; + } + observedAttributes.AppendElement(NS_Atomize(attrStr)); + } + } + } // Leave constructor's compartment. } // Leave constructorProtoUnwrapped's compartment. } // Unset mIsCustomDefinitionRunning @@ -756,24 +758,34 @@ CustomElementRegistry::Define(const nsAString& aName, // Associate the definition with the custom element. nsCOMPtr<nsIAtom> localNameAtom(NS_Atomize(localName)); LifecycleCallbacks* callbacks = callbacksHolder.forget(); - CustomElementDefinition* definition = + + /** + * 12. Add definition to this CustomElementRegistry. + */ + if (!mConstructors.put(constructorUnwrapped, nameAtom)) { + aRv.Throw(NS_ERROR_FAILURE); + return; + } + + RefPtr<CustomElementDefinition> definition = new CustomElementDefinition(nameAtom, localNameAtom, - constructor, + &aFunctionConstructor, + Move(observedAttributes), constructorPrototype, callbacks, 0 /* TODO dependent on HTML imports. Bug 877072 */); - /** - * 12. Add definition to this CustomElementRegistry. - */ - mCustomDefinitions.Put(nameAtom, definition); + CustomElementDefinition* def = definition.get(); + mCustomDefinitions.Put(nameAtom, definition.forget()); + + MOZ_ASSERT(mCustomDefinitions.Count() == mConstructors.count(), + "Number of entries should be the same"); /** * 13. 14. 15. Upgrade candidates */ - // TODO: Bug 1299363 - Implement custom element v1 upgrade algorithm - UpgradeCandidates(cx, nameAtom, definition); + UpgradeCandidates(nameAtom, def, aRv); /** * 16. If this CustomElementRegistry's when-defined promise map contains an @@ -796,14 +808,14 @@ CustomElementRegistry::Get(JSContext* aCx, const nsAString& aName, JS::MutableHandle<JS::Value> aRetVal) { nsCOMPtr<nsIAtom> nameAtom(NS_Atomize(aName)); - CustomElementDefinition* data = mCustomDefinitions.Get(nameAtom); + CustomElementDefinition* data = mCustomDefinitions.GetWeak(nameAtom); if (!data) { aRetVal.setUndefined(); return; } - aRetVal.setObject(*data->mConstructor); + aRetVal.setObjectOrNull(data->mConstructor->Callable()); return; } @@ -823,7 +835,7 @@ CustomElementRegistry::WhenDefined(const nsAString& aName, ErrorResult& aRv) return promise.forget(); } - if (mCustomDefinitions.Get(nameAtom)) { + if (mCustomDefinitions.GetWeak(nameAtom)) { promise->MaybeResolve(JS::UndefinedHandleValue); return promise.forget(); } @@ -837,20 +849,346 @@ CustomElementRegistry::WhenDefined(const nsAString& aName, ErrorResult& aRv) return promise.forget(); } +namespace { + +static void +DoUpgrade(Element* aElement, + CustomElementConstructor* aConstructor, + ErrorResult& aRv) +{ + // Rethrow the exception since it might actually throw the exception from the + // upgrade steps back out to the caller of document.createElement. + RefPtr<Element> constructResult = + aConstructor->Construct("Custom Element Upgrade", aRv); + if (aRv.Failed()) { + return; + } + + if (!constructResult || constructResult.get() != aElement) { + aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); + return; + } +} + +} // anonymous namespace + +// https://html.spec.whatwg.org/multipage/scripting.html#upgrades +/* static */ void +CustomElementRegistry::Upgrade(Element* aElement, + CustomElementDefinition* aDefinition, + ErrorResult& aRv) +{ + aElement->RemoveStates(NS_EVENT_STATE_UNRESOLVED); + + RefPtr<CustomElementData> data = aElement->GetCustomElementData(); + MOZ_ASSERT(data, "CustomElementData should exist"); + + // Step 1 and step 2. + if (data->mState == CustomElementData::State::eCustom || + data->mState == CustomElementData::State::eFailed) { + return; + } + + // Step 3. + if (!aDefinition->mObservedAttributes.IsEmpty()) { + uint32_t count = aElement->GetAttrCount(); + for (uint32_t i = 0; i < count; i++) { + mozilla::dom::BorrowedAttrInfo info = aElement->GetAttrInfoAt(i); + + const nsAttrName* name = info.mName; + nsIAtom* attrName = name->LocalName(); + + if (aDefinition->IsInObservedAttributeList(attrName)) { + int32_t namespaceID = name->NamespaceID(); + nsAutoString attrValue, namespaceURI; + info.mValue->ToString(attrValue); + nsContentUtils::NameSpaceManager()->GetNameSpaceURI(namespaceID, + namespaceURI); + + LifecycleCallbackArgs args = { + nsDependentAtomString(attrName), + NullString(), + attrValue, + (namespaceURI.IsEmpty() ? NullString() : namespaceURI) + }; + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAttributeChanged, + aElement, + &args, nullptr, aDefinition); + } + } + } + + // Step 4. + if (aElement->IsInComposedDoc()) { + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eConnected, aElement, + nullptr, nullptr, aDefinition); + } + + // Step 5. + AutoConstructionStackEntry acs(aDefinition->mConstructionStack, + nsGenericHTMLElement::FromContent(aElement)); + + // Step 6 and step 7. + DoUpgrade(aElement, aDefinition->mConstructor, aRv); + if (aRv.Failed()) { + data->mState = CustomElementData::State::eFailed; + // Empty element's custom element reaction queue. + data->mReactionQueue.Clear(); + return; + } + + // Step 8. + data->mState = CustomElementData::State::eCustom; + + // Step 9. + aElement->SetCustomElementDefinition(aDefinition); +} + +//----------------------------------------------------- +// CustomElementReactionsStack + +void +CustomElementReactionsStack::CreateAndPushElementQueue() +{ + MOZ_ASSERT(mRecursionDepth); + MOZ_ASSERT(!mIsElementQueuePushedForCurrentRecursionDepth); + + // Push a new element queue onto the custom element reactions stack. + mReactionsStack.AppendElement(MakeUnique<ElementQueue>()); + mIsElementQueuePushedForCurrentRecursionDepth = true; +} + +void +CustomElementReactionsStack::PopAndInvokeElementQueue() +{ + MOZ_ASSERT(mRecursionDepth); + MOZ_ASSERT(mIsElementQueuePushedForCurrentRecursionDepth); + MOZ_ASSERT(!mReactionsStack.IsEmpty(), + "Reaction stack shouldn't be empty"); + + // Pop the element queue from the custom element reactions stack, + // and invoke custom element reactions in that queue. + const uint32_t lastIndex = mReactionsStack.Length() - 1; + ElementQueue* elementQueue = mReactionsStack.ElementAt(lastIndex).get(); + // Check element queue size in order to reduce function call overhead. + if (!elementQueue->IsEmpty()) { + // It is still not clear what error reporting will look like in custom + // element, see https://github.com/w3c/webcomponents/issues/635. + // We usually report the error to entry global in gecko, so just follow the + // same behavior here. + // This may be null if it's called from parser, see the case of + // attributeChangedCallback in + // https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token + // In that case, the exception of callback reactions will be automatically + // reported in CallSetup. + nsIGlobalObject* global = GetEntryGlobal(); + InvokeReactions(elementQueue, global); + } + + // InvokeReactions() might create other custom element reactions, but those + // new reactions should be already consumed and removed at this point. + MOZ_ASSERT(lastIndex == mReactionsStack.Length() - 1, + "reactions created by InvokeReactions() should be consumed and removed"); + + mReactionsStack.RemoveElementAt(lastIndex); + mIsElementQueuePushedForCurrentRecursionDepth = false; +} + +void +CustomElementReactionsStack::EnqueueUpgradeReaction(Element* aElement, + CustomElementDefinition* aDefinition) +{ + Enqueue(aElement, new CustomElementUpgradeReaction(aDefinition)); +} + +void +CustomElementReactionsStack::EnqueueCallbackReaction(Element* aElement, + UniquePtr<CustomElementCallback> aCustomElementCallback) +{ + Enqueue(aElement, new CustomElementCallbackReaction(Move(aCustomElementCallback))); +} + +void +CustomElementReactionsStack::Enqueue(Element* aElement, + CustomElementReaction* aReaction) +{ + RefPtr<CustomElementData> elementData = aElement->GetCustomElementData(); + MOZ_ASSERT(elementData, "CustomElementData should exist"); + + if (mRecursionDepth) { + // If the element queue is not created for current recursion depth, create + // and push an element queue to reactions stack first. + if (!mIsElementQueuePushedForCurrentRecursionDepth) { + CreateAndPushElementQueue(); + } + + MOZ_ASSERT(!mReactionsStack.IsEmpty()); + // Add element to the current element queue. + mReactionsStack.LastElement()->AppendElement(aElement); + elementData->mReactionQueue.AppendElement(aReaction); + return; + } + + // If the custom element reactions stack is empty, then: + // Add element to the backup element queue. + MOZ_ASSERT(mReactionsStack.IsEmpty(), + "custom element reactions stack should be empty"); + MOZ_ASSERT(!aReaction->IsUpgradeReaction(), + "Upgrade reaction should not be scheduled to backup queue"); + mBackupQueue.AppendElement(aElement); + elementData->mReactionQueue.AppendElement(aReaction); + + if (mIsBackupQueueProcessing) { + return; + } + + CycleCollectedJSContext* context = CycleCollectedJSContext::Get(); + RefPtr<BackupQueueMicroTask> bqmt = new BackupQueueMicroTask(this); + context->DispatchMicroTaskRunnable(bqmt.forget()); +} + +void +CustomElementReactionsStack::InvokeBackupQueue() +{ + // Check backup queue size in order to reduce function call overhead. + if (!mBackupQueue.IsEmpty()) { + // Upgrade reactions won't be scheduled in backup queue and the exception of + // callback reactions will be automatically reported in CallSetup. + // If the reactions are invoked from backup queue (in microtask check point), + // we don't need to pass global object for error reporting. + InvokeReactions(&mBackupQueue, nullptr); + } + MOZ_ASSERT(mBackupQueue.IsEmpty(), + "There are still some reactions in BackupQueue not being consumed!?!"); +} + +void +CustomElementReactionsStack::InvokeReactions(ElementQueue* aElementQueue, + nsIGlobalObject* aGlobal) +{ + // This is used for error reporting. + Maybe<AutoEntryScript> aes; + if (aGlobal) { + aes.emplace(aGlobal, "custom elements reaction invocation"); + } + + // Note: It's possible to re-enter this method. + for (uint32_t i = 0; i < aElementQueue->Length(); ++i) { + Element* element = aElementQueue->ElementAt(i); + + // ElementQueue hold a element's strong reference, it should not be a nullptr. + MOZ_ASSERT(element); + + RefPtr<CustomElementData> elementData = element->GetCustomElementData(); + if (!elementData) { + // This happens when the document is destroyed and the element is already + // unlinked, no need to fire the callbacks in this case. + continue; + } + + auto& reactions = elementData->mReactionQueue; + for (uint32_t j = 0; j < reactions.Length(); ++j) { + // Transfer the ownership of the entry due to reentrant invocation of + // this funciton. The entry will be removed when bug 1379573 is landed. + auto reaction(Move(reactions.ElementAt(j))); + if (reaction) { + ErrorResult rv; + reaction->Invoke(element, rv); + if (aes) { + JSContext* cx = aes->cx(); + if (rv.MaybeSetPendingException(cx)) { + aes->ReportException(); + } + MOZ_ASSERT(!JS_IsExceptionPending(cx)); + } + MOZ_ASSERT(!rv.Failed()); + } + } + reactions.Clear(); + } + aElementQueue->Clear(); +} + +//----------------------------------------------------- +// CustomElementDefinition + +NS_IMPL_CYCLE_COLLECTION_CLASS(CustomElementDefinition) + +NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(CustomElementDefinition) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mConstructor) + tmp->mPrototype = nullptr; + tmp->mCallbacks = nullptr; +NS_IMPL_CYCLE_COLLECTION_UNLINK_END + +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(CustomElementDefinition) + mozilla::dom::LifecycleCallbacks* callbacks = tmp->mCallbacks.get(); + + if (callbacks->mAttributeChangedCallback.WasPassed()) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, + "mCallbacks->mAttributeChangedCallback"); + cb.NoteXPCOMChild(callbacks->mAttributeChangedCallback.Value()); + } + + if (callbacks->mConnectedCallback.WasPassed()) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCallbacks->mConnectedCallback"); + cb.NoteXPCOMChild(callbacks->mConnectedCallback.Value()); + } + + if (callbacks->mDisconnectedCallback.WasPassed()) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCallbacks->mDisconnectedCallback"); + cb.NoteXPCOMChild(callbacks->mDisconnectedCallback.Value()); + } + + if (callbacks->mAdoptedCallback.WasPassed()) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCallbacks->mAdoptedCallback"); + cb.NoteXPCOMChild(callbacks->mAdoptedCallback.Value()); + } + + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mConstructor"); + cb.NoteXPCOMChild(tmp->mConstructor); +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END + +NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(CustomElementDefinition) + NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mPrototype) +NS_IMPL_CYCLE_COLLECTION_TRACE_END + +NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(CustomElementDefinition, AddRef) +NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(CustomElementDefinition, Release) + CustomElementDefinition::CustomElementDefinition(nsIAtom* aType, nsIAtom* aLocalName, - JSObject* aConstructor, + Function* aConstructor, + nsCOMArray<nsIAtom>&& aObservedAttributes, JSObject* aPrototype, LifecycleCallbacks* aCallbacks, uint32_t aDocOrder) : mType(aType), mLocalName(aLocalName), - mConstructor(aConstructor), + mConstructor(new CustomElementConstructor(aConstructor)), + mObservedAttributes(Move(aObservedAttributes)), mPrototype(aPrototype), mCallbacks(aCallbacks), mDocOrder(aDocOrder) { } +//----------------------------------------------------- +// CustomElementUpgradeReaction + +/* virtual */ void +CustomElementUpgradeReaction::Invoke(Element* aElement, ErrorResult& aRv) +{ + CustomElementRegistry::Upgrade(aElement, mDefinition, aRv); +} + +//----------------------------------------------------- +// CustomElementCallbackReaction + +/* virtual */ void +CustomElementCallbackReaction::Invoke(Element* aElement, ErrorResult& aRv) +{ + mCustomElementCallback->Call(); +} + } // namespace dom -} // namespace mozilla
\ No newline at end of file +} // namespace mozilla diff --git a/dom/base/CustomElementRegistry.h b/dom/base/CustomElementRegistry.h index ff803a054..c416e5043 100644 --- a/dom/base/CustomElementRegistry.h +++ b/dom/base/CustomElementRegistry.h @@ -7,13 +7,16 @@ #ifndef mozilla_dom_CustomElementRegistry_h #define mozilla_dom_CustomElementRegistry_h +#include "js/GCHashTable.h" #include "js/TypeDecls.h" #include "mozilla/Attributes.h" #include "mozilla/ErrorResult.h" #include "mozilla/dom/BindingDeclarations.h" +#include "mozilla/dom/FunctionBinding.h" +#include "mozilla/dom/WebComponentsBinding.h" #include "nsCycleCollectionParticipant.h" +#include "nsGenericHTMLElement.h" #include "nsWrapperCache.h" -#include "mozilla/dom/FunctionBinding.h" class nsDocument; @@ -22,8 +25,8 @@ namespace dom { struct CustomElementData; struct ElementDefinitionOptions; -struct LifecycleCallbacks; class CallbackFunction; +class CustomElementReaction; class Function; class Promise; @@ -32,6 +35,13 @@ struct LifecycleCallbackArgs nsString name; nsString oldValue; nsString newValue; + nsString namespaceURI; +}; + +struct LifecycleAdoptedCallbackArgs +{ + nsCOMPtr<nsIDocument> mOldDocument; + nsCOMPtr<nsIDocument> mNewDocument; }; class CustomElementCallback @@ -39,8 +49,7 @@ class CustomElementCallback public: CustomElementCallback(Element* aThisObject, nsIDocument::ElementCallbackType aCallbackType, - CallbackFunction* aCallback, - CustomElementData* aOwnerData); + CallbackFunction* aCallback); void Traverse(nsCycleCollectionTraversalCallback& aCb) const; void Call(); void SetArgs(LifecycleCallbackArgs& aArgs) @@ -50,6 +59,13 @@ public: mArgs = aArgs; } + void SetAdoptedCallbackArgs(LifecycleAdoptedCallbackArgs& aAdoptedCallbackArgs) + { + MOZ_ASSERT(mType == nsIDocument::eAdopted, + "Arguments are only used by adopted callback."); + mAdoptedCallbackArgs = aAdoptedCallbackArgs; + } + private: // The this value to use for invocation of the callback. RefPtr<Element> mThisObject; @@ -59,9 +75,19 @@ private: // Arguments to be passed to the callback, // used by the attribute changed callback. LifecycleCallbackArgs mArgs; - // CustomElementData that contains this callback in the - // callback queue. - CustomElementData* mOwnerData; + LifecycleAdoptedCallbackArgs mAdoptedCallbackArgs; +}; + +class CustomElementConstructor final : public CallbackFunction +{ +public: + explicit CustomElementConstructor(CallbackFunction* aOther) + : CallbackFunction(aOther) + { + MOZ_ASSERT(JS::IsConstructor(mCallback)); + } + + already_AddRefed<Element> Construct(const char* aExecutionReason, ErrorResult& aRv); }; // Each custom element has an associated callback queue and an element is @@ -70,63 +96,299 @@ struct CustomElementData { NS_INLINE_DECL_REFCOUNTING(CustomElementData) + // https://dom.spec.whatwg.org/#concept-element-custom-element-state + // CustomElementData is only created on the element which is a custom element + // or an upgrade candidate, so the state of an element without + // CustomElementData is "uncustomized". + enum class State { + eUndefined, + eFailed, + eCustom + }; + explicit CustomElementData(nsIAtom* aType); - // Objects in this array are transient and empty after each microtask - // checkpoint. - nsTArray<nsAutoPtr<CustomElementCallback>> mCallbackQueue; - // Custom element type, for <button is="x-button"> or <x-button> - // this would be x-button. - nsCOMPtr<nsIAtom> mType; - // The callback that is next to be processed upon calling RunCallbackQueue. - int32_t mCurrentCallback; - // Element is being created flag as described in the custom elements spec. - bool mElementIsBeingCreated; - // Flag to determine if the created callback has been invoked, thus it - // determines if other callbacks can be enqueued. - bool mCreatedCallbackInvoked; - // The microtask level associated with the callbacks in the callback queue, - // it is used to determine if a new queue needs to be pushed onto the - // processing stack. - int32_t mAssociatedMicroTask; - - // Empties the callback queue. - void RunCallbackQueue(); + CustomElementData(nsIAtom* aType, State aState); + + // Custom element state as described in the custom element spec. + State mState; + // custom element reaction queue as described in the custom element spec. + // There is 1 reaction in reaction queue, when 1) it becomes disconnected, + // 2) it’s adopted into a new document, 3) its attributes are changed, + // appended, removed, or replaced. + // There are 3 reactions in reaction queue when doing upgrade operation, + // e.g., create an element, insert a node. + AutoTArray<UniquePtr<CustomElementReaction>, 3> mReactionQueue; + + void SetCustomElementDefinition(CustomElementDefinition* aDefinition); + CustomElementDefinition* GetCustomElementDefinition(); + nsIAtom* GetCustomElementType(); + + void Traverse(nsCycleCollectionTraversalCallback& aCb) const; + void Unlink(); private: virtual ~CustomElementData() {} + + // Custom element type, for <button is="x-button"> or <x-button> + // this would be x-button. + RefPtr<nsIAtom> mType; + RefPtr<CustomElementDefinition> mCustomElementDefinition; }; +#define ALEADY_CONSTRUCTED_MARKER nullptr + // The required information for a custom element as defined in: // https://html.spec.whatwg.org/multipage/scripting.html#custom-element-definition struct CustomElementDefinition { + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(CustomElementDefinition) + NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(CustomElementDefinition) + CustomElementDefinition(nsIAtom* aType, nsIAtom* aLocalName, - JSObject* aConstructor, + Function* aConstructor, + nsCOMArray<nsIAtom>&& aObservedAttributes, JSObject* aPrototype, mozilla::dom::LifecycleCallbacks* aCallbacks, uint32_t aDocOrder); - // The type (name) for this custom element. + // The type (name) for this custom element, for <button is="x-foo"> or <x-foo> + // this would be x-foo. nsCOMPtr<nsIAtom> mType; // The localname to (e.g. <button is=type> -- this would be button). nsCOMPtr<nsIAtom> mLocalName; // The custom element constructor. - JS::Heap<JSObject *> mConstructor; + RefPtr<CustomElementConstructor> mConstructor; + + // The list of attributes that this custom element observes. + nsCOMArray<nsIAtom> mObservedAttributes; // The prototype to use for new custom elements of this type. JS::Heap<JSObject *> mPrototype; // The lifecycle callbacks to call for this custom element. - nsAutoPtr<mozilla::dom::LifecycleCallbacks> mCallbacks; + UniquePtr<mozilla::dom::LifecycleCallbacks> mCallbacks; - // A construction stack. - // TODO: Bug 1287348 - Implement construction stack for upgrading an element + // A construction stack. Use nullptr to represent an "already constructed marker". + nsTArray<RefPtr<nsGenericHTMLElement>> mConstructionStack; // The document custom element order. uint32_t mDocOrder; + + bool IsCustomBuiltIn() + { + return mType != mLocalName; + } + + bool IsInObservedAttributeList(nsIAtom* aName) + { + if (mObservedAttributes.IsEmpty()) { + return false; + } + + return mObservedAttributes.Contains(aName); + } + +private: + ~CustomElementDefinition() {} +}; + +class CustomElementReaction +{ +public: + virtual ~CustomElementReaction() = default; + virtual void Invoke(Element* aElement, ErrorResult& aRv) = 0; + virtual void Traverse(nsCycleCollectionTraversalCallback& aCb) const + { + } + +#if DEBUG + bool IsUpgradeReaction() + { + return mIsUpgradeReaction; + } + +protected: + bool mIsUpgradeReaction = false; +#endif +}; + +class CustomElementUpgradeReaction final : public CustomElementReaction +{ +public: + explicit CustomElementUpgradeReaction(CustomElementDefinition* aDefinition) + : mDefinition(aDefinition) + { +#if DEBUG + mIsUpgradeReaction = true; +#endif + } + +private: + virtual void Invoke(Element* aElement, ErrorResult& aRv) override; + + CustomElementDefinition* mDefinition; +}; + +class CustomElementCallbackReaction final : public CustomElementReaction +{ + public: + explicit CustomElementCallbackReaction(UniquePtr<CustomElementCallback> aCustomElementCallback) + : mCustomElementCallback(Move(aCustomElementCallback)) + { + } + + virtual void Traverse(nsCycleCollectionTraversalCallback& aCb) const override + { + mCustomElementCallback->Traverse(aCb); + } + + private: + virtual void Invoke(Element* aElement, ErrorResult& aRv) override; + UniquePtr<CustomElementCallback> mCustomElementCallback; +}; + +// https://html.spec.whatwg.org/multipage/scripting.html#custom-element-reactions-stack +class CustomElementReactionsStack +{ +public: + NS_INLINE_DECL_REFCOUNTING(CustomElementReactionsStack) + + CustomElementReactionsStack() + : mIsBackupQueueProcessing(false) + , mRecursionDepth(0) + , mIsElementQueuePushedForCurrentRecursionDepth(false) + { + } + + // Hold a strong reference of Element so that it does not get cycle collected + // before the reactions in its reaction queue are invoked. + // The element reaction queues are stored in CustomElementData. + // We need to lookup ElementReactionQueueMap again to get relevant reaction queue. + // The choice of 1 for the auto size here is based on gut feeling. + typedef AutoTArray<RefPtr<Element>, 1> ElementQueue; + + /** + * Enqueue a custom element upgrade reaction + * https://html.spec.whatwg.org/multipage/scripting.html#enqueue-a-custom-element-upgrade-reaction + */ + void EnqueueUpgradeReaction(Element* aElement, + CustomElementDefinition* aDefinition); + + /** + * Enqueue a custom element callback reaction + * https://html.spec.whatwg.org/multipage/scripting.html#enqueue-a-custom-element-callback-reaction + */ + void EnqueueCallbackReaction(Element* aElement, + UniquePtr<CustomElementCallback> aCustomElementCallback); + + /** + * [CEReactions] Before executing the algorithm's steps. + * Increase the current recursion depth, and the element queue is pushed + * lazily when we really enqueue reactions. + * + * @return true if the element queue is pushed for "previous" recursion depth. + */ + bool EnterCEReactions() + { + bool temp = mIsElementQueuePushedForCurrentRecursionDepth; + mRecursionDepth++; + // The is-element-queue-pushed flag is initially false when entering a new + // recursion level. The original value will be cached in AutoCEReaction + // and restored after leaving this recursion level. + mIsElementQueuePushedForCurrentRecursionDepth = false; + return temp; + } + + /** + * [CEReactions] After executing the algorithm's steps. + * Pop and invoke the element queue if it is created and pushed for current + * recursion depth, then decrease the current recursion depth. + * + * @param aCx JSContext used for handling exception thrown by algorithm's + * steps, this could be a nullptr. + * aWasElementQueuePushed used for restoring status after leaving + * current recursion. + */ + void LeaveCEReactions(JSContext* aCx, bool aWasElementQueuePushed) + { + MOZ_ASSERT(mRecursionDepth); + + if (mIsElementQueuePushedForCurrentRecursionDepth) { + Maybe<JS::AutoSaveExceptionState> ases; + if (aCx) { + ases.emplace(aCx); + } + PopAndInvokeElementQueue(); + } + mRecursionDepth--; + // Restore the is-element-queue-pushed flag cached in AutoCEReaction when + // leaving the recursion level. + mIsElementQueuePushedForCurrentRecursionDepth = aWasElementQueuePushed; + + MOZ_ASSERT_IF(!mRecursionDepth, mReactionsStack.IsEmpty()); + } + +private: + ~CustomElementReactionsStack() {}; + + /** + * Push a new element queue onto the custom element reactions stack. + */ + void CreateAndPushElementQueue(); + + /** + * Pop the element queue from the custom element reactions stack, and invoke + * custom element reactions in that queue. + */ + void PopAndInvokeElementQueue(); + + // The choice of 8 for the auto size here is based on gut feeling. + AutoTArray<UniquePtr<ElementQueue>, 8> mReactionsStack; + ElementQueue mBackupQueue; + // https://html.spec.whatwg.org/#enqueue-an-element-on-the-appropriate-element-queue + bool mIsBackupQueueProcessing; + + void InvokeBackupQueue(); + + /** + * Invoke custom element reactions + * https://html.spec.whatwg.org/multipage/scripting.html#invoke-custom-element-reactions + */ + void InvokeReactions(ElementQueue* aElementQueue, nsIGlobalObject* aGlobal); + + void Enqueue(Element* aElement, CustomElementReaction* aReaction); + + // Current [CEReactions] recursion depth. + uint32_t mRecursionDepth; + // True if the element queue is pushed into reaction stack for current + // recursion depth. This will be cached in AutoCEReaction when entering a new + // CEReaction recursion and restored after leaving the recursion. + bool mIsElementQueuePushedForCurrentRecursionDepth; + +private: + class BackupQueueMicroTask final : public mozilla::MicroTaskRunnable { + public: + explicit BackupQueueMicroTask(CustomElementReactionsStack* aReactionStack) + : MicroTaskRunnable() + , mReactionStack(aReactionStack) + { + MOZ_ASSERT(!mReactionStack->mIsBackupQueueProcessing, + "mIsBackupQueueProcessing should be initially false"); + mReactionStack->mIsBackupQueueProcessing = true; + } + + virtual void Run(AutoSlowOperation& aAso) override + { + mReactionStack->InvokeBackupQueue(); + mReactionStack->mIsBackupQueueProcessing = false; + } + + private: + RefPtr<CustomElementReactionsStack> mReactionStack; + }; }; class CustomElementRegistry final : public nsISupports, @@ -142,36 +404,33 @@ public: public: static bool IsCustomElementEnabled(JSContext* aCx = nullptr, JSObject* aObject = nullptr); - static already_AddRefed<CustomElementRegistry> Create(nsPIDOMWindowInner* aWindow); - static void ProcessTopElementQueue(); - static void XPCOMShutdown(); + explicit CustomElementRegistry(nsPIDOMWindowInner* aWindow); /** * Looking up a custom element definition. * https://html.spec.whatwg.org/#look-up-a-custom-element-definition */ CustomElementDefinition* LookupCustomElementDefinition( - const nsAString& aLocalName, const nsAString* aIs = nullptr) const; + nsIAtom* aNameAtom, nsIAtom* aTypeAtom) const; - /** - * Enqueue created callback or register upgrade candidate for - * newly created custom elements, possibly extending an existing type. - * ex. <x-button>, <button is="x-button> (type extension) - */ - void SetupCustomElement(Element* aElement, const nsAString* aTypeExtension); + CustomElementDefinition* LookupCustomElementDefinition( + JSContext* aCx, JSObject *aConstructor) const; - void EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType, - Element* aCustomElement, - LifecycleCallbackArgs* aArgs, - CustomElementDefinition* aDefinition); + static void EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType, + Element* aCustomElement, + LifecycleCallbackArgs* aArgs, + LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs, + CustomElementDefinition* aDefinition); void GetCustomPrototype(nsIAtom* aAtom, JS::MutableHandle<JSObject*> aPrototype); -private: - explicit CustomElementRegistry(nsPIDOMWindowInner* aWindow); - ~CustomElementRegistry(); + /** + * Upgrade an element. + * https://html.spec.whatwg.org/multipage/scripting.html#upgrades + */ + static void Upgrade(Element* aElement, CustomElementDefinition* aDefinition, ErrorResult& aRv); /** * Registers an unresolved custom element that is a candidate for @@ -184,23 +443,48 @@ private: void RegisterUnresolvedElement(Element* aElement, nsIAtom* aTypeName = nullptr); - void UpgradeCandidates(JSContext* aCx, - nsIAtom* aKey, - CustomElementDefinition* aDefinition); + /** + * Unregister an unresolved custom element that is a candidate for + * upgrade when a custom element is removed from tree. + */ + void UnregisterUnresolvedElement(Element* aElement, + nsIAtom* aTypeName = nullptr); +private: + ~CustomElementRegistry(); + + static UniquePtr<CustomElementCallback> CreateCustomElementCallback( + nsIDocument::ElementCallbackType aType, Element* aCustomElement, + LifecycleCallbackArgs* aArgs, + LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs, + CustomElementDefinition* aDefinition); - typedef nsClassHashtable<nsISupportsHashKey, CustomElementDefinition> + void UpgradeCandidates(nsIAtom* aKey, + CustomElementDefinition* aDefinition, + ErrorResult& aRv); + + typedef nsRefPtrHashtable<nsISupportsHashKey, CustomElementDefinition> DefinitionMap; typedef nsClassHashtable<nsISupportsHashKey, nsTArray<nsWeakPtr>> CandidateMap; + typedef JS::GCHashMap<JS::Heap<JSObject*>, + nsCOMPtr<nsIAtom>, + js::MovableCellHasher<JS::Heap<JSObject*>>, + js::SystemAllocPolicy> ConstructorMap; // Hashtable for custom element definitions in web components. // Custom prototypes are stored in the compartment where // registerElement was called. DefinitionMap mCustomDefinitions; + // Hashtable for looking up definitions by using constructor as key. + // Custom elements' name are stored here and we need to lookup + // mCustomDefinitions again to get definitions. + ConstructorMap mConstructors; + typedef nsRefPtrHashtable<nsISupportsHashKey, Promise> WhenDefinedPromiseMap; WhenDefinedPromiseMap mWhenDefinedPromiseMap; + // The "upgrade candidates map" from the web components spec. Maps from a // namespace id and local name to a list of elements to upgrade if that // element is registered as a custom element. @@ -208,14 +492,6 @@ private: nsCOMPtr<nsPIDOMWindowInner> mWindow; - // Array representing the processing stack in the custom elements - // specification. The processing stack is conceptually a stack of - // element queues. Each queue is represented by a sequence of - // CustomElementData in this array, separated by nullptr that - // represent the boundaries of the items in the stack. The first - // queue in the stack is the base element queue. - static mozilla::Maybe<nsTArray<RefPtr<CustomElementData>>> sProcessingStack; - // It is used to prevent reentrant invocations of element definition. bool mIsCustomDefinitionRunning; @@ -252,6 +528,31 @@ public: already_AddRefed<Promise> WhenDefined(const nsAString& aName, ErrorResult& aRv); }; +class MOZ_RAII AutoCEReaction final { + public: + // JSContext is allowed to be a nullptr if we are guaranteeing that we're + // not doing something that might throw but not finish reporting a JS + // exception during the lifetime of the AutoCEReaction. + AutoCEReaction(CustomElementReactionsStack* aReactionsStack, JSContext* aCx) + : mReactionsStack(aReactionsStack) + , mCx(aCx) + { + mIsElementQueuePushedForPreviousRecursionDepth = + mReactionsStack->EnterCEReactions(); + } + + ~AutoCEReaction() + { + mReactionsStack->LeaveCEReactions( + mCx, mIsElementQueuePushedForPreviousRecursionDepth); + } + + private: + RefPtr<CustomElementReactionsStack> mReactionsStack; + JSContext* mCx; + bool mIsElementQueuePushedForPreviousRecursionDepth; +}; + } // namespace dom } // namespace mozilla diff --git a/dom/base/DocGroup.cpp b/dom/base/DocGroup.cpp index 226879985..30c058f0c 100644 --- a/dom/base/DocGroup.cpp +++ b/dom/base/DocGroup.cpp @@ -46,6 +46,9 @@ DocGroup::DocGroup(TabGroup* aTabGroup, const nsACString& aKey) DocGroup::~DocGroup() { MOZ_ASSERT(mDocuments.IsEmpty()); + if (!NS_IsMainThread()) { + NS_ReleaseOnMainThread(mReactionsStack.forget()); + } mTabGroup->mDocGroups.RemoveEntry(mKey); } diff --git a/dom/base/DocGroup.h b/dom/base/DocGroup.h index f4f7ac8ad..5b8f627cc 100644 --- a/dom/base/DocGroup.h +++ b/dom/base/DocGroup.h @@ -14,6 +14,7 @@ #include "nsString.h" #include "mozilla/RefPtr.h" +#include "mozilla/dom/CustomElementRegistry.h" namespace mozilla { namespace dom { @@ -52,6 +53,14 @@ public: { return mTabGroup; } + mozilla::dom::CustomElementReactionsStack* CustomElementReactionsStack() + { + if (!mReactionsStack) { + mReactionsStack = new mozilla::dom::CustomElementReactionsStack(); + } + + return mReactionsStack; + } void RemoveDocument(nsIDocument* aWindow); // Iterators for iterating over every document within the DocGroup @@ -71,6 +80,7 @@ private: nsCString mKey; RefPtr<TabGroup> mTabGroup; nsTArray<nsIDocument*> mDocuments; + RefPtr<mozilla::dom::CustomElementReactionsStack> mReactionsStack; }; } // namespace dom diff --git a/dom/base/Element.cpp b/dom/base/Element.cpp index 0054f4800..c8467e036 100644 --- a/dom/base/Element.cpp +++ b/dom/base/Element.cpp @@ -479,9 +479,13 @@ Element::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) if (data) { // If this is a registered custom element then fix the prototype. nsContentUtils::GetCustomPrototype(OwnerDoc(), NodeInfo()->NamespaceID(), - data->mType, &customProto); + data->GetCustomElementType(), &customProto); if (customProto && NodePrincipal()->SubsumesConsideringDomain(nsContentUtils::ObjectPrincipal(customProto))) { + // The custom element prototype could be in different compartment. + if (!JS_WrapObject(aCx, &customProto)) { + return nullptr; + } // Just go ahead and create with the right proto up front. Set // customProto to null to flag that we don't need to do any post-facto // proto fixups here. @@ -1595,7 +1599,7 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent, #endif { if (aBindingParent) { - nsDOMSlots *slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); slots->mBindingParent = aBindingParent; // Weak, so no addref happens. } @@ -1618,7 +1622,7 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent, } ShadowRoot* parentContainingShadow = aParent->GetContainingShadow(); if (parentContainingShadow) { - DOMSlots()->mContainingShadow = parentContainingShadow; + ExtendedDOMSlots()->mContainingShadow = parentContainingShadow; } } @@ -1684,14 +1688,17 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent, SetSubtreeRootPointer(aParent->SubtreeRoot()); } - nsIDocument* composedDoc = GetComposedDoc(); - if (composedDoc) { - // Attached callback must be enqueued whenever custom element is inserted into a - // document and this document has a browsing context. - if (GetCustomElementData() && composedDoc->GetDocShell()) { - // Enqueue an attached callback for the custom element. - nsContentUtils::EnqueueLifecycleCallback( - composedDoc, nsIDocument::eAttached, this); + if (CustomElementRegistry::IsCustomElementEnabled() && IsInComposedDoc()) { + // Connected callback must be enqueued whenever a custom element becomes + // connected. + CustomElementData* data = GetCustomElementData(); + if (data) { + if (data->mState == CustomElementData::State::eCustom) { + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eConnected, this); + } else { + // Step 7.7.2.2 https://dom.spec.whatwg.org/#concept-node-insert + nsContentUtils::TryToUpgradeElement(this); + } } } @@ -1986,12 +1993,21 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent) document->ClearBoxObjectFor(this); - // Detached must be enqueued whenever custom element is removed from - // the document and this document has a browsing context. - if (GetCustomElementData() && document->GetDocShell()) { - // Enqueue a detached callback for the custom element. - nsContentUtils::EnqueueLifecycleCallback( - document, nsIDocument::eDetached, this); + // Disconnected must be enqueued whenever a connected custom element becomes + // disconnected. + if (CustomElementRegistry::IsCustomElementEnabled()) { + CustomElementData* data = GetCustomElementData(); + if (data) { + if (data->mState == CustomElementData::State::eCustom) { + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eDisconnected, + this); + } else { + // Remove an unresolved custom element that is a candidate for + // upgrade when a custom element is disconnected. + // We will make sure it's shadow-including tree order in bug 1326028. + nsContentUtils::UnregisterUnresolvedElement(this); + } + } } } @@ -2007,7 +2023,7 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent) } #endif - nsDOMSlots* slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { if (clearBindingParent) { slots->mBindingParent = nullptr; @@ -2055,7 +2071,7 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent) nsICSSDeclaration* Element::GetSMILOverrideStyle() { - Element::nsDOMSlots *slots = DOMSlots(); + Element::nsExtendedDOMSlots* slots = ExtendedDOMSlots(); if (!slots->mSMILOverrideStyle) { slots->mSMILOverrideStyle = new nsDOMCSSAttributeDeclaration(this, true); @@ -2067,7 +2083,7 @@ Element::GetSMILOverrideStyle() DeclarationBlock* Element::GetSMILOverrideStyleDeclaration() { - Element::nsDOMSlots *slots = GetExistingDOMSlots(); + Element::nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); return slots ? slots->mSMILOverrideStyleDeclaration.get() : nullptr; } @@ -2075,7 +2091,7 @@ nsresult Element::SetSMILOverrideStyleDeclaration(DeclarationBlock* aDeclaration, bool aNotify) { - Element::nsDOMSlots *slots = DOMSlots(); + Element::nsExtendedDOMSlots* slots = ExtendedDOMSlots(); slots->mSMILOverrideStyleDeclaration = aDeclaration; @@ -2586,19 +2602,32 @@ Element::SetAttrAndNotify(int32_t aNamespaceID, UpdateState(aNotify); - nsIDocument* ownerDoc = OwnerDoc(); - if (ownerDoc && GetCustomElementData()) { - nsCOMPtr<nsIAtom> oldValueAtom = oldValue->GetAsAtom(); - nsCOMPtr<nsIAtom> newValueAtom = valueForAfterSetAttr.GetAsAtom(); - LifecycleCallbackArgs args = { - nsDependentAtomString(aName), - aModType == nsIDOMMutationEvent::ADDITION ? - NullString() : nsDependentAtomString(oldValueAtom), - nsDependentAtomString(newValueAtom) - }; - - nsContentUtils::EnqueueLifecycleCallback( - ownerDoc, nsIDocument::eAttributeChanged, this, &args); + if (CustomElementRegistry::IsCustomElementEnabled()) { + if (CustomElementData* data = GetCustomElementData()) { + if (CustomElementDefinition* definition = + nsContentUtils::GetElementDefinitionIfObservingAttr(this, + data->GetCustomElementType(), + aName)) { + MOZ_ASSERT(data->mState == CustomElementData::State::eCustom, + "AttributeChanged callback should fire only if " + "custom element state is custom"); + nsCOMPtr<nsIAtom> oldValueAtom = oldValue->GetAsAtom(); + nsCOMPtr<nsIAtom> newValueAtom = valueForAfterSetAttr.GetAsAtom(); + nsAutoString ns; + nsContentUtils::NameSpaceManager()->GetNameSpaceURI(aNamespaceID, ns); + + LifecycleCallbackArgs args = { + nsDependentAtomString(aName), + aModType == nsIDOMMutationEvent::ADDITION ? + NullString() : nsDependentAtomString(oldValueAtom), + nsDependentAtomString(newValueAtom), + (ns.IsEmpty() ? NullString() : ns) + }; + + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAttributeChanged, + this, &args, nullptr, definition); + } + } } if (aCallAfterSetAttr) { @@ -2843,17 +2872,30 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName, UpdateState(aNotify); - nsIDocument* ownerDoc = OwnerDoc(); - if (ownerDoc && GetCustomElementData()) { - nsCOMPtr<nsIAtom> oldValueAtom = oldValue.GetAsAtom(); - LifecycleCallbackArgs args = { - nsDependentAtomString(aName), - nsDependentAtomString(oldValueAtom), - NullString() - }; - - nsContentUtils::EnqueueLifecycleCallback( - ownerDoc, nsIDocument::eAttributeChanged, this, &args); + if (CustomElementRegistry::IsCustomElementEnabled()) { + if (CustomElementData* data = GetCustomElementData()) { + if (CustomElementDefinition* definition = + nsContentUtils::GetElementDefinitionIfObservingAttr(this, + data->GetCustomElementType(), + aName)) { + MOZ_ASSERT(data->mState == CustomElementData::State::eCustom, + "AttributeChanged callback should fire only if " + "custom element state is custom"); + nsAutoString ns; + nsContentUtils::NameSpaceManager()->GetNameSpaceURI(aNameSpaceID, ns); + + nsCOMPtr<nsIAtom> oldValueAtom = oldValue.GetAsAtom(); + LifecycleCallbackArgs args = { + nsDependentAtomString(aName), + nsDependentAtomString(oldValueAtom), + NullString(), + (ns.IsEmpty() ? NullString() : ns) + }; + + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAttributeChanged, + this, &args, nullptr, definition); + } + } } if (aNotify) { @@ -3988,7 +4030,7 @@ Element::ClearDataset() nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>* Element::RegisteredIntersectionObservers() { - nsDOMSlots* slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); return &slots->mRegisteredIntersectionObservers; } @@ -4037,3 +4079,31 @@ Element::UpdateIntersectionObservation(DOMIntersectionObserver* aObserver, int32 } return false; } + +void +Element::SetCustomElementData(CustomElementData* aData) +{ + nsExtendedDOMSlots *slots = ExtendedDOMSlots(); + MOZ_ASSERT(!slots->mCustomElementData, "Custom element data may not be changed once set."); + slots->mCustomElementData = aData; +} + +CustomElementDefinition* +Element::GetCustomElementDefinition() const +{ + CustomElementData* data = GetCustomElementData(); + if (!data) { + return nullptr; + } + + return data->GetCustomElementDefinition(); +} + +void +Element::SetCustomElementDefinition(CustomElementDefinition* aDefinition) +{ + CustomElementData* data = GetCustomElementData(); + MOZ_ASSERT(data); + + data->SetCustomElementDefinition(aDefinition); +} diff --git a/dom/base/Element.h b/dom/base/Element.h index ce84b74fb..782004703 100644 --- a/dom/base/Element.h +++ b/dom/base/Element.h @@ -390,6 +390,45 @@ public: Directionality GetComputedDirectionality() const; + /** + * Gets the custom element data used by web components custom element. + * Custom element data is created at the first attempt to enqueue a callback. + * + * @return The custom element data or null if none. + */ + inline CustomElementData* GetCustomElementData() const + { + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); + if (slots) { + return slots->mCustomElementData; + } + return nullptr; + } + + /** + * Sets the custom element data, ownership of the + * callback data is taken by this element. + * + * @param aData The custom element data. + */ + void SetCustomElementData(CustomElementData* aData); + + /** + * Gets the custom element definition used by web components custom element. + * + * @return The custom element definition or null if element is not a custom + * element or custom element is not defined yet. + */ + CustomElementDefinition* GetCustomElementDefinition() const; + + /** + * Sets the custom element definition, called when custom element is created + * or upgraded. + * + * @param aDefinition The custom element definition. + */ + void SetCustomElementDefinition(CustomElementDefinition* aDefinition); + protected: /** * Method to get the _intrinsic_ content state of this element. This is the @@ -814,7 +853,7 @@ public: ShadowRoot *FastGetShadowRoot() const { - nsDOMSlots* slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); return slots ? slots->mShadowRoot.get() : nullptr; } diff --git a/dom/base/FragmentOrElement.cpp b/dom/base/FragmentOrElement.cpp index 9106778df..526c3c9d4 100644 --- a/dom/base/FragmentOrElement.cpp +++ b/dom/base/FragmentOrElement.cpp @@ -530,8 +530,7 @@ nsNodeSupportsWeakRefTearoff::GetWeakReference(nsIWeakReference** aInstancePtr) //---------------------------------------------------------------------- FragmentOrElement::nsDOMSlots::nsDOMSlots() : nsINode::nsSlots(), - mDataset(nullptr), - mBindingParent(nullptr) + mDataset(nullptr) { } @@ -543,84 +542,104 @@ FragmentOrElement::nsDOMSlots::~nsDOMSlots() } void -FragmentOrElement::nsDOMSlots::Traverse(nsCycleCollectionTraversalCallback &cb, bool aIsXUL) +FragmentOrElement::nsDOMSlots::Traverse(nsCycleCollectionTraversalCallback &cb) { NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mStyle"); cb.NoteXPCOMChild(mStyle.get()); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mSMILOverrideStyle"); - cb.NoteXPCOMChild(mSMILOverrideStyle.get()); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mAttributeMap"); cb.NoteXPCOMChild(mAttributeMap.get()); - if (aIsXUL) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mControllers"); - cb.NoteXPCOMChild(mControllers); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mChildrenList"); + cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mChildrenList)); + + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mClassList"); + cb.NoteXPCOMChild(mClassList.get()); + + if (!mExtendedSlots) { + return; } - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mXBLBinding"); - cb.NoteNativeChild(mXBLBinding, NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding)); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mSMILOverrideStyle"); + cb.NoteXPCOMChild(mExtendedSlots->mSMILOverrideStyle.get()); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mXBLInsertionParent"); - cb.NoteXPCOMChild(mXBLInsertionParent.get()); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mControllers"); + cb.NoteXPCOMChild(mExtendedSlots->mControllers); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mShadowRoot"); - cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mShadowRoot)); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mLabelsList"); + cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*,mExtendedSlots-> mLabelsList)); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mContainingShadow"); - cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mContainingShadow)); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mShadowRoot"); + cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mShadowRoot)); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mChildrenList"); - cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mChildrenList)); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mContainingShadow"); + cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mContainingShadow)); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mLabelsList"); - cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mLabelsList)); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLBinding"); + cb.NoteNativeChild(mExtendedSlots->mXBLBinding, + NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding)); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mClassList"); - cb.NoteXPCOMChild(mClassList.get()); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLInsertionParent"); + cb.NoteXPCOMChild(mExtendedSlots->mXBLInsertionParent.get()); - if (mCustomElementData) { - for (uint32_t i = 0; i < mCustomElementData->mCallbackQueue.Length(); i++) { - mCustomElementData->mCallbackQueue[i]->Traverse(cb); - } + if (mExtendedSlots->mCustomElementData) { + mExtendedSlots->mCustomElementData->Traverse(cb); } - for (auto iter = mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) { + for (auto iter = mExtendedSlots->mRegisteredIntersectionObservers.Iter(); + !iter.Done(); iter.Next()) { DOMIntersectionObserver* observer = iter.Key(); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mRegisteredIntersectionObservers[i]"); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, + "mExtendedSlots->mRegisteredIntersectionObservers[i]"); cb.NoteXPCOMChild(observer); } + + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mFrameLoaderOrOpener"); + cb.NoteXPCOMChild(mExtendedSlots->mFrameLoaderOrOpener); } void -FragmentOrElement::nsDOMSlots::Unlink(bool aIsXUL) +FragmentOrElement::nsDOMSlots::Unlink() { mStyle = nullptr; - mSMILOverrideStyle = nullptr; if (mAttributeMap) { mAttributeMap->DropReference(); mAttributeMap = nullptr; } - if (aIsXUL) - NS_IF_RELEASE(mControllers); - - MOZ_ASSERT(!mXBLBinding); - - mXBLInsertionParent = nullptr; - mShadowRoot = nullptr; - mContainingShadow = nullptr; mChildrenList = nullptr; - mLabelsList = nullptr; - mCustomElementData = nullptr; mClassList = nullptr; - mRegisteredIntersectionObservers.Clear(); + + if (!mExtendedSlots) { + return; + } + + mExtendedSlots->mSMILOverrideStyle = nullptr; + mExtendedSlots->mControllers = nullptr; + mExtendedSlots->mLabelsList = nullptr; + mExtendedSlots->mShadowRoot = nullptr; + mExtendedSlots->mContainingShadow = nullptr; + MOZ_ASSERT(!(mExtendedSlots->mXBLBinding)); + mExtendedSlots->mXBLInsertionParent = nullptr; + if (mExtendedSlots->mCustomElementData) { + mExtendedSlots->mCustomElementData->Unlink(); + mExtendedSlots->mCustomElementData = nullptr; + } + mExtendedSlots->mRegisteredIntersectionObservers.Clear(); + nsCOMPtr<nsIFrameLoader> frameLoader = + do_QueryInterface(mExtendedSlots->mFrameLoaderOrOpener); + if (frameLoader) { + static_cast<nsFrameLoader*>(frameLoader.get())->Destroy(); + } + mExtendedSlots->mFrameLoaderOrOpener = nullptr; } size_t FragmentOrElement::nsDOMSlots::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const { size_t n = aMallocSizeOf(this); + if (mExtendedSlots) { + n += aMallocSizeOf(mExtendedSlots.get()); + } if (mAttributeMap) { n += mAttributeMap->SizeOfIncludingThis(aMallocSizeOf); @@ -641,6 +660,19 @@ FragmentOrElement::nsDOMSlots::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) c return n; } +FragmentOrElement::nsExtendedDOMSlots::nsExtendedDOMSlots() + : mBindingParent(nullptr) +{ +} + +FragmentOrElement::nsExtendedDOMSlots::~nsExtendedDOMSlots() +{ + nsCOMPtr<nsIFrameLoader> frameLoader = do_QueryInterface(mFrameLoaderOrOpener); + if (frameLoader) { + static_cast<nsFrameLoader*>(frameLoader.get())->Destroy(); + } +} + FragmentOrElement::FragmentOrElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) : nsIContent(aNodeInfo) { @@ -962,7 +994,7 @@ FragmentOrElement::IsLink(nsIURI** aURI) const nsIContent* FragmentOrElement::GetBindingParent() const { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { return slots->mBindingParent; @@ -974,7 +1006,7 @@ nsXBLBinding* FragmentOrElement::GetXBLBinding() const { if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { return slots->mXBLBinding; } @@ -1009,11 +1041,11 @@ FragmentOrElement::SetXBLBinding(nsXBLBinding* aBinding, if (aBinding) { SetFlags(NODE_MAY_BE_IN_BINDING_MNGR); - nsDOMSlots *slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); slots->mXBLBinding = aBinding; bindingManager->AddBoundContent(this); } else { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { slots->mXBLBinding = nullptr; } @@ -1028,7 +1060,7 @@ nsIContent* FragmentOrElement::GetXBLInsertionParent() const { if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { return slots->mXBLInsertionParent; } @@ -1040,7 +1072,7 @@ FragmentOrElement::GetXBLInsertionParent() const ShadowRoot* FragmentOrElement::GetContainingShadow() const { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { return slots->mContainingShadow; } @@ -1050,21 +1082,21 @@ FragmentOrElement::GetContainingShadow() const void FragmentOrElement::SetShadowRoot(ShadowRoot* aShadowRoot) { - nsDOMSlots *slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); slots->mShadowRoot = aShadowRoot; } nsTArray<nsIContent*>& FragmentOrElement::DestInsertionPoints() { - nsDOMSlots *slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); return slots->mDestInsertionPoints; } nsTArray<nsIContent*>* FragmentOrElement::GetExistingDestInsertionPoints() const { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { return &slots->mDestInsertionPoints; } @@ -1075,35 +1107,17 @@ void FragmentOrElement::SetXBLInsertionParent(nsIContent* aContent) { if (aContent) { - nsDOMSlots *slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); SetFlags(NODE_MAY_BE_IN_BINDING_MNGR); slots->mXBLInsertionParent = aContent; } else { - nsDOMSlots *slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { slots->mXBLInsertionParent = nullptr; } } } -CustomElementData* -FragmentOrElement::GetCustomElementData() const -{ - nsDOMSlots *slots = GetExistingDOMSlots(); - if (slots) { - return slots->mCustomElementData; - } - return nullptr; -} - -void -FragmentOrElement::SetCustomElementData(CustomElementData* aData) -{ - nsDOMSlots *slots = DOMSlots(); - MOZ_ASSERT(!slots->mCustomElementData, "Custom element data may not be changed once set."); - slots->mCustomElementData = aData; -} - nsresult FragmentOrElement::InsertChildAt(nsIContent* aKid, uint32_t aIndex, @@ -1366,14 +1380,15 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(FragmentOrElement) { nsDOMSlots *slots = tmp->GetExistingDOMSlots(); if (slots) { - if (tmp->IsElement()) { + if (slots->mExtendedSlots && tmp->IsElement()) { Element* elem = tmp->AsElement(); - for (auto iter = slots->mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) { + for (auto iter = slots->mExtendedSlots->mRegisteredIntersectionObservers.Iter(); + !iter.Done(); iter.Next()) { DOMIntersectionObserver* observer = iter.Key(); observer->UnlinkTarget(*elem); } } - slots->Unlink(tmp->IsXULElement()); + slots->Unlink(); } } @@ -1938,7 +1953,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(FragmentOrElement) { nsDOMSlots *slots = tmp->GetExistingDOMSlots(); if (slots) { - slots->Traverse(cb, tmp->IsXULElement()); + slots->Traverse(cb); } } NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END diff --git a/dom/base/FragmentOrElement.h b/dom/base/FragmentOrElement.h index f0cc29f22..4edd88908 100644 --- a/dom/base/FragmentOrElement.h +++ b/dom/base/FragmentOrElement.h @@ -15,6 +15,7 @@ #include "mozilla/Attributes.h" #include "mozilla/MemoryReporting.h" +#include "mozilla/UniquePtr.h" #include "nsAttrAndChildArray.h" // member #include "nsCycleCollectionParticipant.h" // NS_DECL_CYCLE_* #include "nsIContent.h" // base class @@ -37,6 +38,7 @@ class nsIURI; namespace mozilla { class DeclarationBlock; namespace dom { +struct CustomElementData; class DOMIntersectionObserver; class Element; } // namespace dom @@ -159,9 +161,6 @@ public: virtual void SetXBLInsertionParent(nsIContent* aContent) override; virtual bool IsLink(nsIURI** aURI) const override; - virtual CustomElementData *GetCustomElementData() const override; - virtual void SetCustomElementData(CustomElementData* aData) override; - virtual void DestroyContent() override; virtual void SaveSubtreeState() override; @@ -241,8 +240,6 @@ protected: nsresult CopyInnerTo(FragmentOrElement* aDest); public: - // Because of a bug in MS C++ compiler nsDOMSlots must be declared public, - // otherwise nsXULElement::nsXULSlots doesn't compile. /** * There are a set of DOM- and scripting-specific instance variables * that may only be instantiated when a content object is accessed @@ -251,29 +248,13 @@ public: * in a side structure that's only allocated when the content is * accessed through the DOM. */ - class nsDOMSlots : public nsINode::nsSlots + + class nsExtendedDOMSlots { public: - nsDOMSlots(); - virtual ~nsDOMSlots(); - - void Traverse(nsCycleCollectionTraversalCallback &cb, bool aIsXUL); - void Unlink(bool aIsXUL); - - size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const; - - /** - * The .style attribute (an interface that forwards to the actual - * style rules) - * @see nsGenericHTMLElement::GetStyle - */ - nsCOMPtr<nsICSSDeclaration> mStyle; + nsExtendedDOMSlots(); - /** - * The .dataset attribute. - * @see nsGenericHTMLElement::GetDataset - */ - nsDOMStringMap* mDataset; // [Weak] + ~nsExtendedDOMSlots(); /** * SMIL Overridde style rules (for SMIL animation of CSS properties) @@ -287,35 +268,17 @@ public: RefPtr<mozilla::DeclarationBlock> mSMILOverrideStyleDeclaration; /** - * An object implementing nsIDOMMozNamedAttrMap for this content (attributes) - * @see FragmentOrElement::GetAttributes - */ - RefPtr<nsDOMAttributeMap> mAttributeMap; - - union { - /** - * The nearest enclosing content node with a binding that created us. - * @see FragmentOrElement::GetBindingParent - */ - nsIContent* mBindingParent; // [Weak] - - /** - * The controllers of the XUL Element. - */ - nsIControllers* mControllers; // [OWNER] - }; + * The nearest enclosing content node with a binding that created us. + * @see FragmentOrElement::GetBindingParent + */ + nsIContent* mBindingParent; // [Weak] /** - * An object implementing the .children property for this element. - */ - RefPtr<nsContentList> mChildrenList; + * The controllers of the XUL Element. + */ + nsCOMPtr<nsIControllers> mControllers; /** - * An object implementing the .classList property for this element. - */ - RefPtr<nsDOMTokenList> mClassList; - - /* * An object implementing the .labels property for this element. */ RefPtr<nsLabelsNodeList> mLabelsList; @@ -356,6 +319,55 @@ public: */ nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t> mRegisteredIntersectionObservers; + + /** + * For XUL to hold either frameloader or opener. + */ + nsCOMPtr<nsISupports> mFrameLoaderOrOpener; + + }; + + class nsDOMSlots : public nsINode::nsSlots + { + public: + nsDOMSlots(); + virtual ~nsDOMSlots(); + + void Traverse(nsCycleCollectionTraversalCallback &cb); + void Unlink(); + + size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const; + + /** + * The .style attribute (an interface that forwards to the actual + * style rules) + * @see nsGenericHTMLElement::GetStyle + */ + nsCOMPtr<nsICSSDeclaration> mStyle; + + /** + * The .dataset attribute. + * @see nsGenericHTMLElement::GetDataset + */ + nsDOMStringMap* mDataset; // [Weak] + + /** + * An object implementing nsIDOMMozNamedAttrMap for this content (attributes) + * @see FragmentOrElement::GetAttributes + */ + RefPtr<nsDOMAttributeMap> mAttributeMap; + + /** + * An object implementing the .children property for this element. + */ + RefPtr<nsContentList> mChildrenList; + + /** + * An object implementing the .classList property for this element. + */ + RefPtr<nsDOMTokenList> mClassList; + + mozilla::UniquePtr<nsExtendedDOMSlots> mExtendedSlots; }; protected: @@ -375,6 +387,26 @@ protected: return static_cast<nsDOMSlots*>(GetExistingSlots()); } + nsExtendedDOMSlots* ExtendedDOMSlots() + { + nsDOMSlots* slots = DOMSlots(); + if (!slots->mExtendedSlots) { + slots->mExtendedSlots = MakeUnique<nsExtendedDOMSlots>(); + } + + return slots->mExtendedSlots.get(); + } + + nsExtendedDOMSlots* GetExistingExtendedDOMSlots() const + { + nsDOMSlots* slots = GetExistingDOMSlots(); + if (slots) { + return slots->mExtendedSlots.get(); + } + + return nullptr; + } + /** * Calls SetIsElementInStyleScopeFlagOnSubtree for each shadow tree attached * to this node, which is assumed to be an Element. diff --git a/dom/base/ShadowRoot.cpp b/dom/base/ShadowRoot.cpp index 9540754f7..831987a96 100644 --- a/dom/base/ShadowRoot.cpp +++ b/dom/base/ShadowRoot.cpp @@ -75,8 +75,8 @@ ShadowRoot::ShadowRoot(nsIContent* aContent, SetFlags(NODE_IS_IN_SHADOW_TREE); - DOMSlots()->mBindingParent = aContent; - DOMSlots()->mContainingShadow = this; + ExtendedDOMSlots()->mBindingParent = aContent; + ExtendedDOMSlots()->mContainingShadow = this; // Add the ShadowRoot as a mutation observer on the host to watch // for mutations because the insertion points in this ShadowRoot diff --git a/dom/base/crashtests/1341693.html b/dom/base/crashtests/1341693.html new file mode 100644 index 000000000..677305ba5 --- /dev/null +++ b/dom/base/crashtests/1341693.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> +<body> +<script> + var o1 = document.documentElement; + var o2 = document.createElement("frame"); + document.documentElement.appendChild(o2); + var o3 = o2.contentWindow; + o1.parentNode.removeChild(o1); + o3.customElements; +</script> +</body> +</html> diff --git a/dom/base/crashtests/crashtests.list b/dom/base/crashtests/crashtests.list index a0739f074..0fb597b30 100644 --- a/dom/base/crashtests/crashtests.list +++ b/dom/base/crashtests/crashtests.list @@ -209,3 +209,4 @@ load 1230422.html load 1251361.html load 1304437.html pref(clipboard.autocopy,true) load 1385272-1.html +pref(dom.webcomponents.customelements.enabled,true) load 1341693.html diff --git a/dom/base/nsContentCreatorFunctions.h b/dom/base/nsContentCreatorFunctions.h index 9576d9ba8..a5c210500 100644 --- a/dom/base/nsContentCreatorFunctions.h +++ b/dom/base/nsContentCreatorFunctions.h @@ -24,6 +24,7 @@ namespace mozilla { namespace dom { class Element; class NodeInfo; +struct CustomElementDefinition; } // namespace dom } // namespace mozilla @@ -41,7 +42,8 @@ nsresult NS_NewHTMLElement(mozilla::dom::Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, mozilla::dom::FromParser aFromParser, - const nsAString* aIs = nullptr); + const nsAString* aIs = nullptr, + mozilla::dom::CustomElementDefinition* aDefinition = nullptr); // First argument should be nsHTMLTag, but that adds dependency to parser // for a bunch of files. diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index 800f40fa1..b6cbbbace 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -227,6 +227,7 @@ extern "C" int MOZ_XMLCheckQName(const char* ptr, const char* end, int ns_aware, const char** colon); class imgLoader; +class nsIAtom; using namespace mozilla::dom; using namespace mozilla::ipc; @@ -258,7 +259,6 @@ nsIWordBreaker *nsContentUtils::sWordBreaker; nsIBidiKeyboard *nsContentUtils::sBidiKeyboard = nullptr; uint32_t nsContentUtils::sScriptBlockerCount = 0; uint32_t nsContentUtils::sDOMNodeRemovedSuppressCount = 0; -uint32_t nsContentUtils::sMicroTaskLevel = 0; AutoTArray<nsCOMPtr<nsIRunnable>, 8>* nsContentUtils::sBlockedScriptRunners = nullptr; uint32_t nsContentUtils::sRunnersCountAtFirstBlocker = 0; nsIInterfaceRequestor* nsContentUtils::sSameOriginChecker = nullptr; @@ -284,6 +284,8 @@ bool nsContentUtils::sIsResourceTimingEnabled = false; bool nsContentUtils::sIsPerformanceNavigationTimingEnabled = false; bool nsContentUtils::sIsUserTimingLoggingEnabled = false; bool nsContentUtils::sIsExperimentalAutocompleteEnabled = false; +bool nsContentUtils::sIsWebComponentsEnabled = false; +bool nsContentUtils::sIsCustomElementsEnabled = false; bool nsContentUtils::sEncodeDecodeURLHash = false; bool nsContentUtils::sGettersDecodeURLHash = false; bool nsContentUtils::sPrivacyResistFingerprinting = false; @@ -584,6 +586,12 @@ nsContentUtils::Init() Preferences::AddBoolVarCache(&sIsExperimentalAutocompleteEnabled, "dom.forms.autocomplete.experimental", false); + Preferences::AddBoolVarCache(&sIsWebComponentsEnabled, + "dom.webcomponents.enabled", false); + + Preferences::AddBoolVarCache(&sIsCustomElementsEnabled, + "dom.webcomponents.customelements.enabled", false); + Preferences::AddBoolVarCache(&sEncodeDecodeURLHash, "dom.url.encode_decode_hash", false); @@ -5293,51 +5301,6 @@ nsContentUtils::RunInMetastableState(already_AddRefed<nsIRunnable> aRunnable) CycleCollectedJSContext::Get()->RunInMetastableState(Move(aRunnable)); } -void -nsContentUtils::EnterMicroTask() -{ - MOZ_ASSERT(NS_IsMainThread()); - ++sMicroTaskLevel; -} - -void -nsContentUtils::LeaveMicroTask() -{ - MOZ_ASSERT(NS_IsMainThread()); - if (--sMicroTaskLevel == 0) { - PerformMainThreadMicroTaskCheckpoint(); - } -} - -bool -nsContentUtils::IsInMicroTask() -{ - MOZ_ASSERT(NS_IsMainThread()); - return sMicroTaskLevel != 0; -} - -uint32_t -nsContentUtils::MicroTaskLevel() -{ - MOZ_ASSERT(NS_IsMainThread()); - return sMicroTaskLevel; -} - -void -nsContentUtils::SetMicroTaskLevel(uint32_t aLevel) -{ - MOZ_ASSERT(NS_IsMainThread()); - sMicroTaskLevel = aLevel; -} - -void -nsContentUtils::PerformMainThreadMicroTaskCheckpoint() -{ - MOZ_ASSERT(NS_IsMainThread()); - - nsDOMMutationObserver::HandleMutations(); -} - /* * Helper function for nsContentUtils::ProcessViewportInfo. * @@ -9567,11 +9530,34 @@ nsContentUtils::HttpsStateIsModern(nsIDocument* aDocument) return false; } +/* static */ void +nsContentUtils::TryToUpgradeElement(Element* aElement) +{ + NodeInfo* nodeInfo = aElement->NodeInfo(); + RefPtr<nsIAtom> typeAtom = + aElement->GetCustomElementData()->GetCustomElementType(); + + MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName())); + CustomElementDefinition* definition = + nsContentUtils::LookupCustomElementDefinition(nodeInfo->GetDocument(), + nodeInfo->NameAtom(), + nodeInfo->NamespaceID(), + typeAtom); + if (definition) { + nsContentUtils::EnqueueUpgradeReaction(aElement, definition); + } else { + // Add an unresolved custom element that is a candidate for + // upgrade when a custom element is connected to the document. + // We will make sure it's shadow-including tree order in bug 1326028. + nsContentUtils::RegisterUnresolvedElement(aElement, typeAtom); + } +} + /* static */ CustomElementDefinition* nsContentUtils::LookupCustomElementDefinition(nsIDocument* aDoc, - const nsAString& aLocalName, + nsIAtom* aNameAtom, uint32_t aNameSpaceID, - const nsAString* aIs) + nsIAtom* aTypeAtom) { MOZ_ASSERT(aDoc); @@ -9593,30 +9579,37 @@ nsContentUtils::LookupCustomElementDefinition(nsIDocument* aDoc, return nullptr; } - return registry->LookupCustomElementDefinition(aLocalName, aIs); + return registry->LookupCustomElementDefinition(aNameAtom, aTypeAtom); } /* static */ void -nsContentUtils::SetupCustomElement(Element* aElement, - const nsAString* aTypeExtension) +nsContentUtils::RegisterUnresolvedElement(Element* aElement, nsIAtom* aTypeName) { MOZ_ASSERT(aElement); - nsCOMPtr<nsIDocument> doc = aElement->OwnerDoc(); - - if (!doc) { + nsIDocument* doc = aElement->OwnerDoc(); + nsPIDOMWindowInner* window(doc->GetInnerWindow()); + if (!window) { return; } - // To support imported document. - doc = doc->MasterDocument(); - - if (aElement->GetNameSpaceID() != kNameSpaceID_XHTML || - !doc->GetDocShell()) { + RefPtr<CustomElementRegistry> registry(window->CustomElements()); + if (!registry) { return; } - nsCOMPtr<nsPIDOMWindowInner> window(doc->GetInnerWindow()); + registry->RegisterUnresolvedElement(aElement, aTypeName); +} + +/* static */ void +nsContentUtils::UnregisterUnresolvedElement(Element* aElement) +{ + MOZ_ASSERT(aElement); + + RefPtr<nsIAtom> typeAtom = + aElement->GetCustomElementData()->GetCustomElementType(); + nsIDocument* doc = aElement->OwnerDoc(); + nsPIDOMWindowInner* window(doc->GetInnerWindow()); if (!window) { return; } @@ -9626,36 +9619,59 @@ nsContentUtils::SetupCustomElement(Element* aElement, return; } - return registry->SetupCustomElement(aElement, aTypeExtension); + registry->UnregisterUnresolvedElement(aElement, typeAtom); +} + +/* static */ CustomElementDefinition* +nsContentUtils::GetElementDefinitionIfObservingAttr(Element* aCustomElement, + nsIAtom* aExtensionType, + nsIAtom* aAttrName) +{ + CustomElementDefinition* definition = + aCustomElement->GetCustomElementDefinition(); + + // Custom element not defined yet or attribute is not in the observed + // attribute list. + if (!definition || !definition->IsInObservedAttributeList(aAttrName)) { + return nullptr; + } + + return definition; } /* static */ void -nsContentUtils::EnqueueLifecycleCallback(nsIDocument* aDoc, - nsIDocument::ElementCallbackType aType, - Element* aCustomElement, - LifecycleCallbackArgs* aArgs, - CustomElementDefinition* aDefinition) +nsContentUtils::EnqueueUpgradeReaction(Element* aElement, + CustomElementDefinition* aDefinition) { - MOZ_ASSERT(aDoc); + MOZ_ASSERT(aElement); - // To support imported document. - nsCOMPtr<nsIDocument> doc = aDoc->MasterDocument(); + nsIDocument* doc = aElement->OwnerDoc(); - if (!doc->GetDocShell()) { + // No DocGroup means no custom element reactions stack. + if (!doc->GetDocGroup()) { return; } - nsCOMPtr<nsPIDOMWindowInner> window(doc->GetInnerWindow()); - if (!window) { - return; - } + CustomElementReactionsStack* stack = + doc->GetDocGroup()->CustomElementReactionsStack(); + stack->EnqueueUpgradeReaction(aElement, aDefinition); +} - RefPtr<CustomElementRegistry> registry(window->CustomElements()); - if (!registry) { +/* static */ void +nsContentUtils::EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType, + Element* aCustomElement, + LifecycleCallbackArgs* aArgs, + LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs, + CustomElementDefinition* aDefinition) +{ + // No DocGroup means no custom element reactions stack. + if (!aCustomElement->OwnerDoc()->GetDocGroup()) { return; } - registry->EnqueueLifecycleCallback(aType, aCustomElement, aArgs, aDefinition); + CustomElementRegistry::EnqueueLifecycleCallback(aType, aCustomElement, aArgs, + aAdoptedCallbackArgs, + aDefinition); } /* static */ void @@ -9834,4 +9850,4 @@ nsContentUtils::IsLocalRefURL(const nsString& aString) } return false; -}
\ No newline at end of file +} diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index 606d67de9..bf6a59dcd 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -126,6 +126,7 @@ class EventTarget; class IPCDataTransfer; class IPCDataTransferItem; struct LifecycleCallbackArgs; +struct LifecycleAdoptedCallbackArgs; class NodeInfo; class nsIContentChild; class nsIContentParent; @@ -1739,17 +1740,6 @@ public: */ static void RunInMetastableState(already_AddRefed<nsIRunnable> aRunnable); - // Call EnterMicroTask when you're entering JS execution. - // Usually the best way to do this is to use nsAutoMicroTask. - static void EnterMicroTask(); - static void LeaveMicroTask(); - - static bool IsInMicroTask(); - static uint32_t MicroTaskLevel(); - static void SetMicroTaskLevel(uint32_t aLevel); - - static void PerformMainThreadMicroTaskCheckpoint(); - /* Process viewport META data. This gives us information for the scale * and zoom of a page on mobile devices. We stick the information in * the document header and use it later on after rendering. @@ -2711,22 +2701,36 @@ public: static bool HttpsStateIsModern(nsIDocument* aDocument); /** + * Try to upgrade an element. + * https://html.spec.whatwg.org/multipage/custom-elements.html#concept-try-upgrade + */ + static void TryToUpgradeElement(Element* aElement); + + /** * Looking up a custom element definition. * https://html.spec.whatwg.org/#look-up-a-custom-element-definition */ static mozilla::dom::CustomElementDefinition* LookupCustomElementDefinition(nsIDocument* aDoc, - const nsAString& aLocalName, + nsIAtom* aNameAtom, uint32_t aNameSpaceID, - const nsAString* aIs = nullptr); + nsIAtom* aTypeAtom); - static void SetupCustomElement(Element* aElement, - const nsAString* aTypeExtension = nullptr); + static void RegisterUnresolvedElement(Element* aElement, nsIAtom* aTypeName); + static void UnregisterUnresolvedElement(Element* aElement); - static void EnqueueLifecycleCallback(nsIDocument* aDoc, - nsIDocument::ElementCallbackType aType, + static mozilla::dom::CustomElementDefinition* + GetElementDefinitionIfObservingAttr(Element* aCustomElement, + nsIAtom* aExtensionType, + nsIAtom* aAttrName); + + static void EnqueueUpgradeReaction(Element* aElement, + mozilla::dom::CustomElementDefinition* aDefinition); + + static void EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType, Element* aCustomElement, mozilla::dom::LifecycleCallbackArgs* aArgs = nullptr, + mozilla::dom::LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs = nullptr, mozilla::dom::CustomElementDefinition* aDefinition = nullptr); static void GetCustomPrototype(nsIDocument* aDoc, @@ -2743,6 +2747,12 @@ public: static bool IsLocalRefURL(const nsString& aString); + static bool + IsWebComponentsEnabled() { return sIsWebComponentsEnabled; } + + static bool + IsCustomElementsEnabled() { return sIsCustomElementsEnabled; } + private: static bool InitializeEventTable(); @@ -2829,7 +2839,6 @@ private: static bool sInitialized; static uint32_t sScriptBlockerCount; static uint32_t sDOMNodeRemovedSuppressCount; - static uint32_t sMicroTaskLevel; // Not an nsCOMArray because removing elements from those is slower static AutoTArray<nsCOMPtr<nsIRunnable>, 8>* sBlockedScriptRunners; static uint32_t sRunnersCountAtFirstBlocker; @@ -2850,6 +2859,8 @@ private: static bool sIsUserTimingLoggingEnabled; static bool sIsFrameTimingPrefEnabled; static bool sIsExperimentalAutocompleteEnabled; + static bool sIsWebComponentsEnabled; + static bool sIsCustomElementsEnabled; static bool sEncodeDecodeURLHash; static bool sGettersDecodeURLHash; static bool sPrivacyResistFingerprinting; @@ -2905,19 +2916,6 @@ public: } }; -class MOZ_STACK_CLASS nsAutoMicroTask -{ -public: - nsAutoMicroTask() - { - nsContentUtils::EnterMicroTask(); - } - ~nsAutoMicroTask() - { - nsContentUtils::LeaveMicroTask(); - } -}; - namespace mozilla { namespace dom { diff --git a/dom/base/nsDOMMutationObserver.cpp b/dom/base/nsDOMMutationObserver.cpp index 858a30ce5..4c4731c11 100644 --- a/dom/base/nsDOMMutationObserver.cpp +++ b/dom/base/nsDOMMutationObserver.cpp @@ -32,8 +32,6 @@ using mozilla::dom::Element; AutoTArray<RefPtr<nsDOMMutationObserver>, 4>* nsDOMMutationObserver::sScheduledMutationObservers = nullptr; -nsDOMMutationObserver* nsDOMMutationObserver::sCurrentObserver = nullptr; - uint32_t nsDOMMutationObserver::sMutationLevel = 0; uint64_t nsDOMMutationObserver::sCount = 0; @@ -597,10 +595,32 @@ nsDOMMutationObserver::ScheduleForRun() RescheduleForRun(); } +class MutationObserverMicroTask final : public MicroTaskRunnable +{ +public: + virtual void Run(AutoSlowOperation& aAso) override + { + nsDOMMutationObserver::HandleMutations(aAso); + } + + virtual bool Suppressed() override + { + return nsDOMMutationObserver::AllScheduledMutationObserversAreSuppressed(); + } +}; + void nsDOMMutationObserver::RescheduleForRun() { if (!sScheduledMutationObservers) { + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (!ccjs) { + return; + } + + RefPtr<MutationObserverMicroTask> momt = + new MutationObserverMicroTask(); + ccjs->DispatchMicroTaskRunnable(momt.forget()); sScheduledMutationObservers = new AutoTArray<RefPtr<nsDOMMutationObserver>, 4>; } @@ -862,36 +882,9 @@ nsDOMMutationObserver::HandleMutation() mCallback->Call(this, mutations, *this); } -class AsyncMutationHandler : public mozilla::Runnable -{ -public: - NS_IMETHOD Run() override - { - nsDOMMutationObserver::HandleMutations(); - return NS_OK; - } -}; - void -nsDOMMutationObserver::HandleMutationsInternal() +nsDOMMutationObserver::HandleMutationsInternal(AutoSlowOperation& aAso) { - if (!nsContentUtils::IsSafeToRunScript()) { - nsContentUtils::AddScriptRunner(new AsyncMutationHandler()); - return; - } - static RefPtr<nsDOMMutationObserver> sCurrentObserver; - if (sCurrentObserver && !sCurrentObserver->Suppressed()) { - // In normal cases sScheduledMutationObservers will be handled - // after previous mutations are handled. But in case some - // callback calls a sync API, which spins the eventloop, we need to still - // process other mutations happening during that sync call. - // This does *not* catch all cases, but should work for stuff running - // in separate tabs. - return; - } - - mozilla::AutoSlowOperation aso; - nsTArray<RefPtr<nsDOMMutationObserver> >* suppressedObservers = nullptr; while (sScheduledMutationObservers) { @@ -899,20 +892,21 @@ nsDOMMutationObserver::HandleMutationsInternal() sScheduledMutationObservers; sScheduledMutationObservers = nullptr; for (uint32_t i = 0; i < observers->Length(); ++i) { - sCurrentObserver = static_cast<nsDOMMutationObserver*>((*observers)[i]); - if (!sCurrentObserver->Suppressed()) { - sCurrentObserver->HandleMutation(); + RefPtr<nsDOMMutationObserver> currentObserver = + static_cast<nsDOMMutationObserver*>((*observers)[i]); + if (!currentObserver->Suppressed()) { + currentObserver->HandleMutation(); } else { if (!suppressedObservers) { suppressedObservers = new nsTArray<RefPtr<nsDOMMutationObserver> >; } - if (!suppressedObservers->Contains(sCurrentObserver)) { - suppressedObservers->AppendElement(sCurrentObserver); + if (!suppressedObservers->Contains(currentObserver)) { + suppressedObservers->AppendElement(currentObserver); } } } delete observers; - aso.CheckForInterrupt(); + aAso.CheckForInterrupt(); } if (suppressedObservers) { @@ -923,7 +917,6 @@ nsDOMMutationObserver::HandleMutationsInternal() delete suppressedObservers; suppressedObservers = nullptr; } - sCurrentObserver = nullptr; } nsDOMMutationRecord* diff --git a/dom/base/nsDOMMutationObserver.h b/dom/base/nsDOMMutationObserver.h index cde32c57b..a8babc603 100644 --- a/dom/base/nsDOMMutationObserver.h +++ b/dom/base/nsDOMMutationObserver.h @@ -552,13 +552,29 @@ public: } // static methods - static void HandleMutations() + static void HandleMutations(mozilla::AutoSlowOperation& aAso) { if (sScheduledMutationObservers) { - HandleMutationsInternal(); + HandleMutationsInternal(aAso); } } + static bool AllScheduledMutationObserversAreSuppressed() + { + if (sScheduledMutationObservers) { + uint32_t len = sScheduledMutationObservers->Length(); + if (len > 0) { + for (uint32_t i = 0; i < len; ++i) { + if (!(*sScheduledMutationObservers)[i]->Suppressed()) { + return false; + } + } + return true; + } + } + return false; + } + static void EnterMutationHandling(); static void LeaveMutationHandling(); @@ -594,7 +610,7 @@ protected: return false; } - static void HandleMutationsInternal(); + static void HandleMutationsInternal(mozilla::AutoSlowOperation& aAso); static void AddCurrentlyHandlingObserver(nsDOMMutationObserver* aObserver, uint32_t aMutationLevel); @@ -622,7 +638,6 @@ protected: static uint64_t sCount; static AutoTArray<RefPtr<nsDOMMutationObserver>, 4>* sScheduledMutationObservers; - static nsDOMMutationObserver* sCurrentObserver; static uint32_t sMutationLevel; static AutoTArray<AutoTArray<RefPtr<nsDOMMutationObserver>, 4>, 4>* diff --git a/dom/base/nsDeprecatedOperationList.h b/dom/base/nsDeprecatedOperationList.h index ea4b05289..96a6c3ac0 100644 --- a/dom/base/nsDeprecatedOperationList.h +++ b/dom/base/nsDeprecatedOperationList.h @@ -34,7 +34,6 @@ DEPRECATED_OPERATION(UseOfCaptureEvents) DEPRECATED_OPERATION(UseOfReleaseEvents) DEPRECATED_OPERATION(UseOfDOM3LoadMethod) DEPRECATED_OPERATION(ChromeUseOfDOM3LoadMethod) -DEPRECATED_OPERATION(ShowModalDialog) DEPRECATED_OPERATION(Window_Content) DEPRECATED_OPERATION(SyncXMLHttpRequest) DEPRECATED_OPERATION(DataContainerEvent) diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index afe88a454..293e48eb0 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -1329,7 +1329,8 @@ nsIDocument::nsIDocument() mFrameRequestCallbacksScheduled(false), mBidiOptions(IBMBIDI_DEFAULT_BIDI_OPTIONS), mPartID(0), - mUserHasInteracted(false) + mUserHasInteracted(false), + mThrowOnDynamicMarkupInsertionCounter(0) { SetIsInDocument(); @@ -5395,18 +5396,14 @@ nsDocument::CreateElement(const nsAString& aTagName, } const nsString* is = nullptr; - if (aOptions.IsElementCreationOptions()) { - // Throw NotFoundError if 'is' is not-null and definition is null - is = CheckCustomElementName(aOptions.GetAsElementCreationOptions(), - needsLowercase ? lcTagName : aTagName, mDefaultElementType, rv); - if (rv.Failed()) { - return nullptr; - } - } RefPtr<Element> elem = CreateElem( needsLowercase ? lcTagName : aTagName, nullptr, mDefaultElementType, is); + if (is) { + elem->SetAttr(kNameSpaceID_None, nsGkAtoms::is, *is, true); + } + return elem.forget(); } @@ -5443,14 +5440,6 @@ nsDocument::CreateElementNS(const nsAString& aNamespaceURI, } const nsString* is = nullptr; - if (aOptions.IsElementCreationOptions()) { - // Throw NotFoundError if 'is' is not-null and definition is null - is = CheckCustomElementName(aOptions.GetAsElementCreationOptions(), - aQualifiedName, nodeInfo->NamespaceID(), rv); - if (rv.Failed()) { - return nullptr; - } - } nsCOMPtr<Element> element; rv = NS_NewElement(getter_AddRefs(element), nodeInfo.forget(), @@ -5459,6 +5448,10 @@ nsDocument::CreateElementNS(const nsAString& aNamespaceURI, return nullptr; } + if (is) { + element->SetAttr(kNameSpaceID_None, nsGkAtoms::is, *is, true); + } + return element.forget(); } @@ -5681,24 +5674,70 @@ nsDocument::CustomElementConstructor(JSContext* aCx, unsigned aArgc, JS::Value* } nsCOMPtr<nsIAtom> typeAtom(NS_Atomize(elemName)); - CustomElementDefinition* definition = registry->mCustomDefinitions.Get(typeAtom); + CustomElementDefinition* definition = + registry->mCustomDefinitions.GetWeak(typeAtom); if (!definition) { return true; } - nsDependentAtomString localName(definition->mLocalName); + RefPtr<Element> element; + + // We integrate with construction stack and do prototype swizzling here, so + // that old upgrade behavior could also share the new upgrade steps. + // And this old upgrade will be remove at some point (when everything is + // switched to latest custom element spec). + nsTArray<RefPtr<nsGenericHTMLElement>>& constructionStack = + definition->mConstructionStack; + if (constructionStack.Length()) { + element = constructionStack.LastElement(); + NS_ENSURE_TRUE(element != ALEADY_CONSTRUCTED_MARKER, false); + + // Do prototype swizzling if dom reflector exists. + JS::Rooted<JSObject*> reflector(aCx, element->GetWrapper()); + if (reflector) { + Maybe<JSAutoCompartment> ac; + JS::Rooted<JSObject*> prototype(aCx, definition->mPrototype); + if (element->NodePrincipal()->SubsumesConsideringDomain(nsContentUtils::ObjectPrincipal(prototype))) { + ac.emplace(aCx, reflector); + if (!JS_WrapObject(aCx, &prototype) || + !JS_SetPrototype(aCx, reflector, prototype)) { + return false; + } + } else { + // We want to set the custom prototype in the compartment where it was + // registered. We store the prototype from define() without unwrapped, + // hence the prototype's compartment is the compartment where it was + // registered. + // In the case that |reflector| and |prototype| are in different + // compartments, this will set the prototype on the |reflector|'s wrapper + // and thus only visible in the wrapper's compartment, since we know + // reflector's principal does not subsume prototype's in this case. + ac.emplace(aCx, prototype); + if (!JS_WrapObject(aCx, &reflector) || + !JS_SetPrototype(aCx, reflector, prototype)) { + return false; + } + } - nsCOMPtr<Element> element = - document->CreateElem(localName, nullptr, kNameSpaceID_XHTML); - NS_ENSURE_TRUE(element, true); + // Wrap into current context. + if (!JS_WrapObject(aCx, &reflector)) { + return false; + } - if (definition->mLocalName != typeAtom) { - // This element is a custom element by extension, thus we need to - // do some special setup. For non-extended custom elements, this happens - // when the element is created. - nsContentUtils::SetupCustomElement(element, &elemName); + args.rval().setObject(*reflector); + return true; + } + } else { + nsDependentAtomString localName(definition->mLocalName); + element = + document->CreateElem(localName, nullptr, kNameSpaceID_XHTML, + (definition->mLocalName != typeAtom) ? &elemName + : nullptr); + NS_ENSURE_TRUE(element, false); } + // The prototype setup happens in Element::WrapObject(). + nsresult rv = nsContentUtils::WrapNative(aCx, element, element, args.rval()); NS_ENSURE_SUCCESS(rv, true); @@ -5710,7 +5749,7 @@ nsDocument::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject) { JS::Rooted<JSObject*> obj(aCx, aObject); - if (Preferences::GetBool("dom.webcomponents.enabled")) { + if (nsContentUtils::IsWebComponentsEnabled()) { return true; } @@ -5726,7 +5765,7 @@ nsDocument::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject) bool nsDocument::IsWebComponentsEnabled(dom::NodeInfo* aNodeInfo) { - if (Preferences::GetBool("dom.webcomponents.enabled")) { + if (nsContentUtils::IsWebComponentsEnabled()) { return true; } @@ -5770,6 +5809,8 @@ nsDocument::RegisterElement(JSContext* aCx, const nsAString& aType, return; } + AutoCEReaction ceReaction(this->GetDocGroup()->CustomElementReactionsStack(), + aCx); // Unconditionally convert TYPE to lowercase. nsAutoString lcType; nsContentUtils::ASCIIToLower(aType, lcType); @@ -6536,6 +6577,49 @@ nsIDocument::GetHtmlChildElement(nsIAtom* aTag) return nullptr; } +nsGenericHTMLElement* +nsIDocument::GetBody() +{ + Element* html = GetHtmlElement(); + if (!html) { + return nullptr; + } + + for (nsIContent* child = html->GetFirstChild(); + child; + child = child->GetNextSibling()) { + if (child->IsHTMLElement(nsGkAtoms::body) || + child->IsHTMLElement(nsGkAtoms::frameset)) { + return static_cast<nsGenericHTMLElement*>(child); + } + } + + return nullptr; +} + +void +nsIDocument::SetBody(nsGenericHTMLElement* newBody, ErrorResult& rv) +{ + nsCOMPtr<Element> root = GetRootElement(); + + // The body element must be either a body tag or a frameset tag. And we must + // have a root element to be able to add kids to it. + if (!newBody || + !newBody->IsAnyOfHTMLElements(nsGkAtoms::body, nsGkAtoms::frameset) || + !root) { + rv.Throw(NS_ERROR_DOM_HIERARCHY_REQUEST_ERR); + return; + } + + // Use DOM methods so that we pass through the appropriate security checks. + nsCOMPtr<Element> currentBody = GetBody(); + if (currentBody) { + root->ReplaceChild(*newBody, *currentBody, rv); + } else { + root->AppendChild(*newBody, rv); + } +} + Element* nsDocument::GetTitleElement() { @@ -12526,8 +12610,12 @@ MarkDocumentTreeToBeInSyncOperation(nsIDocument* aDoc, void* aData) nsAutoSyncOperation::nsAutoSyncOperation(nsIDocument* aDoc) { - mMicroTaskLevel = nsContentUtils::MicroTaskLevel(); - nsContentUtils::SetMicroTaskLevel(0); + mMicroTaskLevel = 0; + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + mMicroTaskLevel = ccjs->MicroTaskLevel(); + ccjs->SetMicroTaskLevel(0); + } if (aDoc) { if (nsPIDOMWindowOuter* win = aDoc->GetWindow()) { if (nsCOMPtr<nsPIDOMWindowOuter> top = win->GetTop()) { @@ -12543,7 +12631,10 @@ nsAutoSyncOperation::~nsAutoSyncOperation() for (int32_t i = 0; i < mDocuments.Count(); ++i) { mDocuments[i]->SetIsInSyncOperation(false); } - nsContentUtils::SetMicroTaskLevel(mMicroTaskLevel); + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->SetMicroTaskLevel(mMicroTaskLevel); + } } gfxUserFontSet* @@ -12713,30 +12804,6 @@ nsIDocument::UpdateStyleBackendType() #endif } -const nsString* -nsDocument::CheckCustomElementName(const ElementCreationOptions& aOptions, - const nsAString& aLocalName, - uint32_t aNamespaceID, - ErrorResult& rv) -{ - // only check aOptions if 'is' is passed and the webcomponents preference - // is enabled - if (!aOptions.mIs.WasPassed() || - !CustomElementRegistry::IsCustomElementEnabled()) { - return nullptr; - } - - const nsString* is = &aOptions.mIs.Value(); - - // Throw NotFoundError if 'is' is not-null and definition is null - if (!nsContentUtils::LookupCustomElementDefinition(this, aLocalName, - aNamespaceID, is)) { - rv.Throw(NS_ERROR_DOM_NOT_FOUND_ERR); - } - - return is; -} - Selection* nsIDocument::GetSelection(ErrorResult& aRv) { diff --git a/dom/base/nsDocument.h b/dom/base/nsDocument.h index 8ea4993f0..90e511dcb 100644 --- a/dom/base/nsDocument.h +++ b/dom/base/nsDocument.h @@ -1388,20 +1388,6 @@ protected: private: static bool CustomElementConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp); - /** - * Check if the passed custom element name, aOptions.mIs, is a registered - * custom element type or not, then return the custom element name for future - * usage. - * - * If there is no existing custom element definition for this name, throw a - * NotFoundError. - */ - const nsString* CheckCustomElementName( - const mozilla::dom::ElementCreationOptions& aOptions, - const nsAString& aLocalName, - uint32_t aNamespaceID, - ErrorResult& rv); - public: virtual already_AddRefed<mozilla::dom::CustomElementRegistry> GetCustomElementRegistry() override; diff --git a/dom/base/nsGenericDOMDataNode.cpp b/dom/base/nsGenericDOMDataNode.cpp index 0ae15e09e..73463ea5e 100644 --- a/dom/base/nsGenericDOMDataNode.cpp +++ b/dom/base/nsGenericDOMDataNode.cpp @@ -793,17 +793,6 @@ nsGenericDOMDataNode::SetXBLInsertionParent(nsIContent* aContent) } } -CustomElementData * -nsGenericDOMDataNode::GetCustomElementData() const -{ - return nullptr; -} - -void -nsGenericDOMDataNode::SetCustomElementData(CustomElementData* aData) -{ -} - bool nsGenericDOMDataNode::IsNodeOfType(uint32_t aFlags) const { diff --git a/dom/base/nsGenericDOMDataNode.h b/dom/base/nsGenericDOMDataNode.h index 63aa64e74..e8818b518 100644 --- a/dom/base/nsGenericDOMDataNode.h +++ b/dom/base/nsGenericDOMDataNode.h @@ -162,9 +162,6 @@ public: virtual bool IsNodeOfType(uint32_t aFlags) const override; virtual bool IsLink(nsIURI** aURI) const override; - virtual mozilla::dom::CustomElementData* GetCustomElementData() const override; - virtual void SetCustomElementData(mozilla::dom::CustomElementData* aData) override; - NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override; NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const; virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute, diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 47b46dda0..c965d5b97 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -909,7 +909,6 @@ nsPIDOMWindow<T>::nsPIDOMWindow(nsPIDOMWindowOuter *aOuterWindow) mMayHaveMouseEnterLeaveEventListener(false), mMayHavePointerEnterLeaveEventListener(false), mInnerObjectsFreed(false), - mIsModalContentWindow(false), mIsActive(false), mIsBackground(false), mMediaSuspend(Preferences::GetBool("media.block-autoplay-until-in-foreground", true) ? nsISuspendedTypes::SUSPENDED_BLOCK : nsISuspendedTypes::NONE_SUSPENDED), @@ -1957,7 +1956,6 @@ nsGlobalWindow::CleanUp() } mArguments = nullptr; - mDialogArguments = nullptr; CleanupCachedXBLHandlers(this); @@ -2195,7 +2193,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(nsGlobalWindow) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mControllers) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mArguments) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDialogArguments) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mReturnValue) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mNavigator) @@ -2274,7 +2271,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsGlobalWindow) NS_IMPL_CYCLE_COLLECTION_UNLINK(mControllers) NS_IMPL_CYCLE_COLLECTION_UNLINK(mArguments) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mDialogArguments) NS_IMPL_CYCLE_COLLECTION_UNLINK(mReturnValue) NS_IMPL_CYCLE_COLLECTION_UNLINK(mNavigator) @@ -3019,8 +3015,6 @@ nsGlobalWindow::SetNewDocument(nsIDocument* aDocument, } else { if (thisChrome) { newInnerWindow = nsGlobalChromeWindow::Create(this); - } else if (mIsModalContentWindow) { - newInnerWindow = nsGlobalModalWindow::Create(this); } else { newInnerWindow = nsGlobalWindow::Create(this); } @@ -3871,31 +3865,16 @@ nsGlobalWindow::SetArguments(nsIArray *aArguments) MOZ_ASSERT(IsOuterWindow()); nsresult rv; - // Historically, we've used the same machinery to handle openDialog arguments - // (exposed via window.arguments) and showModalDialog arguments (exposed via - // window.dialogArguments), even though the former is XUL-only and uses an XPCOM - // array while the latter is web-exposed and uses an arbitrary JS value. - // Moreover, per-spec |dialogArguments| is a property of the browsing context - // (outer), whereas |arguments| lives on the inner. - // // We've now mostly separated them, but the difference is still opaque to // nsWindowWatcher (the caller of SetArguments in this little back-and-forth // embedding waltz we do here). // // So we need to demultiplex the two cases here. nsGlobalWindow *currentInner = GetCurrentInnerWindowInternal(); - if (mIsModalContentWindow) { - // nsWindowWatcher blindly converts the original nsISupports into an array - // of length 1. We need to recover it, and then cast it back to the concrete - // object we know it to be. - nsCOMPtr<nsISupports> supports = do_QueryElementAt(aArguments, 0, &rv); - NS_ENSURE_SUCCESS(rv, rv); - mDialogArguments = static_cast<DialogValueHolder*>(supports.get()); - } else { - mArguments = aArguments; - rv = currentInner->DefineArgumentsProperty(aArguments); - NS_ENSURE_SUCCESS(rv, rv); - } + + mArguments = aArguments; + rv = currentInner->DefineArgumentsProperty(aArguments); + NS_ENSURE_SUCCESS(rv, rv); return NS_OK; } @@ -3904,7 +3883,6 @@ nsresult nsGlobalWindow::DefineArgumentsProperty(nsIArray *aArguments) { MOZ_ASSERT(IsInnerWindow()); - MOZ_ASSERT(!mIsModalContentWindow); // Handled separately. nsIScriptContext *ctx = GetOuterWindowInternal()->mContext; NS_ENSURE_TRUE(aArguments && ctx, NS_ERROR_NOT_INITIALIZED); @@ -4263,8 +4241,9 @@ CustomElementRegistry* nsGlobalWindow::CustomElements() { MOZ_RELEASE_ASSERT(IsInnerWindow()); + if (!mCustomElements) { - mCustomElements = CustomElementRegistry::Create(AsInner()); + mCustomElements = new CustomElementRegistry(AsInner()); } return mCustomElements; @@ -5040,21 +5019,6 @@ nsGlobalWindow::IsPrivilegedChromeWindow(JSContext* aCx, JSObject* aObj) nsContentUtils::ObjectPrincipal(aObj) == nsContentUtils::GetSystemPrincipal(); } -/* static */ bool -nsGlobalWindow::IsShowModalDialogEnabled(JSContext*, JSObject*) -{ - static bool sAddedPrefCache = false; - static bool sIsDisabled; - static const char sShowModalDialogPref[] = "dom.disable_window_showModalDialog"; - - if (!sAddedPrefCache) { - Preferences::AddBoolVarCache(&sIsDisabled, sShowModalDialogPref, false); - sAddedPrefCache = true; - } - - return !sIsDisabled && !XRE_IsContentProcess(); -} - nsIDOMOfflineResourceList* nsGlobalWindow::GetApplicationCache(ErrorResult& aError) { @@ -9741,126 +9705,6 @@ nsGlobalWindow::ConvertDialogOptions(const nsAString& aOptions, } } -already_AddRefed<nsIVariant> -nsGlobalWindow::ShowModalDialogOuter(const nsAString& aUrl, - nsIVariant* aArgument, - const nsAString& aOptions, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - MOZ_RELEASE_ASSERT(IsOuterWindow()); - - if (mDoc) { - mDoc->WarnOnceAbout(nsIDocument::eShowModalDialog); - } - - if (!IsShowModalDialogEnabled()) { - aError.Throw(NS_ERROR_NOT_AVAILABLE); - return nullptr; - } - - RefPtr<DialogValueHolder> argHolder = - new DialogValueHolder(&aSubjectPrincipal, aArgument); - - // Before bringing up the window/dialog, unsuppress painting and flush - // pending reflows. - EnsureReflowFlushAndPaint(); - - if (!AreDialogsEnabled()) { - // We probably want to keep throwing here; silently doing nothing is a bit - // weird given the typical use cases of showModalDialog(). - aError.Throw(NS_ERROR_NOT_AVAILABLE); - return nullptr; - } - - if (ShouldPromptToBlockDialogs() && !ConfirmDialogIfNeeded()) { - aError.Throw(NS_ERROR_NOT_AVAILABLE); - return nullptr; - } - - nsCOMPtr<nsPIDOMWindowOuter> dlgWin; - nsAutoString options(NS_LITERAL_STRING("-moz-internal-modal=1,status=1")); - - ConvertDialogOptions(aOptions, options); - - options.AppendLiteral(",scrollbars=1,centerscreen=1,resizable=0"); - - EnterModalState(); - uint32_t oldMicroTaskLevel = nsContentUtils::MicroTaskLevel(); - nsContentUtils::SetMicroTaskLevel(0); - aError = OpenInternal(aUrl, EmptyString(), options, - false, // aDialog - true, // aContentModal - true, // aCalledNoScript - true, // aDoJSFixups - true, // aNavigate - nullptr, argHolder, // args - nullptr, // aLoadInfo - false, // aForceNoOpener - getter_AddRefs(dlgWin)); - nsContentUtils::SetMicroTaskLevel(oldMicroTaskLevel); - LeaveModalState(); - if (aError.Failed()) { - return nullptr; - } - - nsCOMPtr<nsIDOMModalContentWindow> dialog = do_QueryInterface(dlgWin); - if (!dialog) { - return nullptr; - } - - nsCOMPtr<nsIVariant> retVal; - aError = dialog->GetReturnValue(getter_AddRefs(retVal)); - MOZ_ASSERT(!aError.Failed()); - - return retVal.forget(); -} - -already_AddRefed<nsIVariant> -nsGlobalWindow::ShowModalDialog(const nsAString& aUrl, nsIVariant* aArgument, - const nsAString& aOptions, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - FORWARD_TO_OUTER_OR_THROW(ShowModalDialogOuter, - (aUrl, aArgument, aOptions, aSubjectPrincipal, - aError), aError, nullptr); -} - -void -nsGlobalWindow::ShowModalDialog(JSContext* aCx, const nsAString& aUrl, - JS::Handle<JS::Value> aArgument, - const nsAString& aOptions, - JS::MutableHandle<JS::Value> aRetval, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - MOZ_ASSERT(IsInnerWindow()); - - nsCOMPtr<nsIVariant> args; - aError = nsContentUtils::XPConnect()->JSToVariant(aCx, - aArgument, - getter_AddRefs(args)); - if (aError.Failed()) { - return; - } - - nsCOMPtr<nsIVariant> retVal = - ShowModalDialog(aUrl, args, aOptions, aSubjectPrincipal, aError); - if (aError.Failed()) { - return; - } - - JS::Rooted<JS::Value> result(aCx); - if (retVal) { - aError = nsContentUtils::XPConnect()->VariantToJS(aCx, - FastGetGlobalJSObject(), - retVal, aRetval); - } else { - aRetval.setNull(); - } -} - class ChildCommandDispatcher : public Runnable { public: @@ -14613,70 +14457,6 @@ nsGlobalChromeWindow::TakeOpenerForInitialContentBrowser(mozIDOMWindowProxy** aO return NS_OK; } -// nsGlobalModalWindow implementation - -// QueryInterface implementation for nsGlobalModalWindow -NS_INTERFACE_MAP_BEGIN(nsGlobalModalWindow) - NS_INTERFACE_MAP_ENTRY(nsIDOMModalContentWindow) -NS_INTERFACE_MAP_END_INHERITING(nsGlobalWindow) - -NS_IMPL_ADDREF_INHERITED(nsGlobalModalWindow, nsGlobalWindow) -NS_IMPL_RELEASE_INHERITED(nsGlobalModalWindow, nsGlobalWindow) - - -void -nsGlobalWindow::GetDialogArgumentsOuter(JSContext* aCx, - JS::MutableHandle<JS::Value> aRetval, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - MOZ_RELEASE_ASSERT(IsOuterWindow()); - MOZ_ASSERT(IsModalContentWindow(), - "This should only be called on modal windows!"); - - if (!mDialogArguments) { - MOZ_ASSERT(mIsClosed, "This window should be closed!"); - aRetval.setUndefined(); - return; - } - - // This does an internal origin check, and returns undefined if the subject - // does not subsumes the origin of the arguments. - JS::Rooted<JSObject*> wrapper(aCx, GetWrapper()); - JSAutoCompartment ac(aCx, wrapper); - mDialogArguments->Get(aCx, wrapper, &aSubjectPrincipal, aRetval, aError); -} - -void -nsGlobalWindow::GetDialogArguments(JSContext* aCx, - JS::MutableHandle<JS::Value> aRetval, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - FORWARD_TO_OUTER_OR_THROW(GetDialogArgumentsOuter, - (aCx, aRetval, aSubjectPrincipal, aError), - aError, ); -} - -/* static */ already_AddRefed<nsGlobalModalWindow> -nsGlobalModalWindow::Create(nsGlobalWindow *aOuterWindow) -{ - RefPtr<nsGlobalModalWindow> window = new nsGlobalModalWindow(aOuterWindow); - window->InitWasOffline(); - return window.forget(); -} - -NS_IMETHODIMP -nsGlobalModalWindow::GetDialogArguments(nsIVariant **aArguments) -{ - FORWARD_TO_OUTER_MODAL_CONTENT_WINDOW(GetDialogArguments, (aArguments), - NS_ERROR_NOT_INITIALIZED); - - // This does an internal origin check, and returns undefined if the subject - // does not subsumes the origin of the arguments. - return mDialogArguments->Get(nsContentUtils::SubjectPrincipal(), aArguments); -} - /* static */ already_AddRefed<nsGlobalWindow> nsGlobalWindow::Create(nsGlobalWindow *aOuterWindow) { @@ -14691,96 +14471,6 @@ nsGlobalWindow::InitWasOffline() mWasOffline = NS_IsOffline(); } -void -nsGlobalWindow::GetReturnValueOuter(JSContext* aCx, - JS::MutableHandle<JS::Value> aReturnValue, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - MOZ_RELEASE_ASSERT(IsOuterWindow()); - MOZ_ASSERT(IsModalContentWindow(), - "This should only be called on modal windows!"); - - if (mReturnValue) { - JS::Rooted<JSObject*> wrapper(aCx, GetWrapper()); - JSAutoCompartment ac(aCx, wrapper); - mReturnValue->Get(aCx, wrapper, &aSubjectPrincipal, aReturnValue, aError); - } else { - aReturnValue.setUndefined(); - } -} - -void -nsGlobalWindow::GetReturnValue(JSContext* aCx, - JS::MutableHandle<JS::Value> aReturnValue, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - FORWARD_TO_OUTER_OR_THROW(GetReturnValueOuter, - (aCx, aReturnValue, aSubjectPrincipal, aError), - aError, ); -} - -NS_IMETHODIMP -nsGlobalModalWindow::GetReturnValue(nsIVariant **aRetVal) -{ - FORWARD_TO_OUTER_MODAL_CONTENT_WINDOW(GetReturnValue, (aRetVal), NS_OK); - - if (!mReturnValue) { - nsCOMPtr<nsIVariant> variant = CreateVoidVariant(); - variant.forget(aRetVal); - return NS_OK; - } - return mReturnValue->Get(nsContentUtils::SubjectPrincipal(), aRetVal); -} - -void -nsGlobalWindow::SetReturnValueOuter(JSContext* aCx, - JS::Handle<JS::Value> aReturnValue, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - MOZ_RELEASE_ASSERT(IsOuterWindow()); - MOZ_ASSERT(IsModalContentWindow(), - "This should only be called on modal windows!"); - - nsCOMPtr<nsIVariant> returnValue; - aError = - nsContentUtils::XPConnect()->JSToVariant(aCx, aReturnValue, - getter_AddRefs(returnValue)); - if (!aError.Failed()) { - mReturnValue = new DialogValueHolder(&aSubjectPrincipal, returnValue); - } -} - -void -nsGlobalWindow::SetReturnValue(JSContext* aCx, - JS::Handle<JS::Value> aReturnValue, - nsIPrincipal& aSubjectPrincipal, - ErrorResult& aError) -{ - FORWARD_TO_OUTER_OR_THROW(SetReturnValueOuter, - (aCx, aReturnValue, aSubjectPrincipal, aError), - aError, ); -} - -NS_IMETHODIMP -nsGlobalModalWindow::SetReturnValue(nsIVariant *aRetVal) -{ - FORWARD_TO_OUTER_MODAL_CONTENT_WINDOW(SetReturnValue, (aRetVal), NS_OK); - - mReturnValue = new DialogValueHolder(nsContentUtils::SubjectPrincipal(), - aRetVal); - return NS_OK; -} - -/* static */ -bool -nsGlobalWindow::IsModalContentWindow(JSContext* aCx, JSObject* aGlobal) -{ - return xpc::WindowOrNull(aGlobal)->IsModalContentWindow(); -} - #if defined(MOZ_WIDGET_ANDROID) int16_t nsGlobalWindow::Orientation(CallerType aCallerType) const diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h index 1f420895c..5cfd3f056 100644 --- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -458,9 +458,6 @@ public: static bool IsPrivilegedChromeWindow(JSContext* /* unused */, JSObject* aObj); - static bool IsShowModalDialogEnabled(JSContext* /* unused */ = nullptr, - JSObject* /* unused */ = nullptr); - bool DoResolve(JSContext* aCx, JS::Handle<JSObject*> aObj, JS::Handle<jsid> aId, JS::MutableHandle<JS::PropertyDescriptor> aDesc); @@ -583,9 +580,6 @@ public: return mIsChrome; } - using nsPIDOMWindow::IsModalContentWindow; - static bool IsModalContentWindow(JSContext* aCx, JSObject* aGlobal); - // GetScrollFrame does not flush. Callers should do it themselves as needed, // depending on which info they actually want off the scrollable frame. nsIScrollableFrame *GetScrollFrame(); @@ -950,12 +944,6 @@ public: mozilla::ErrorResult& aRv); void PrintOuter(mozilla::ErrorResult& aError); void Print(mozilla::ErrorResult& aError); - void ShowModalDialog(JSContext* aCx, const nsAString& aUrl, - JS::Handle<JS::Value> aArgument, - const nsAString& aOptions, - JS::MutableHandle<JS::Value> aRetval, - nsIPrincipal& aSubjectPrincipal, - mozilla::ErrorResult& aError); void PostMessageMoz(JSContext* aCx, JS::Handle<JS::Value> aMessage, const nsAString& aTargetOrigin, const mozilla::dom::Optional<mozilla::dom::Sequence<JS::Value > >& aTransfer, @@ -1227,12 +1215,6 @@ public: mozilla::dom::Element* aPanel, mozilla::ErrorResult& aError); - void GetDialogArgumentsOuter(JSContext* aCx, JS::MutableHandle<JS::Value> aRetval, - nsIPrincipal& aSubjectPrincipal, - mozilla::ErrorResult& aError); - void GetDialogArguments(JSContext* aCx, JS::MutableHandle<JS::Value> aRetval, - nsIPrincipal& aSubjectPrincipal, - mozilla::ErrorResult& aError); void GetReturnValueOuter(JSContext* aCx, JS::MutableHandle<JS::Value> aReturnValue, nsIPrincipal& aSubjectPrincipal, mozilla::ErrorResult& aError); @@ -1681,18 +1663,6 @@ protected: nsIPrincipal& aSubjectPrincipal, mozilla::ErrorResult& aError); - already_AddRefed<nsIVariant> - ShowModalDialogOuter(const nsAString& aUrl, nsIVariant* aArgument, - const nsAString& aOptions, - nsIPrincipal& aSubjectPrincipal, - mozilla::ErrorResult& aError); - - already_AddRefed<nsIVariant> - ShowModalDialog(const nsAString& aUrl, nsIVariant* aArgument, - const nsAString& aOptions, - nsIPrincipal& aSubjectPrincipal, - mozilla::ErrorResult& aError); - // Ask the user if further dialogs should be blocked, if dialogs are currently // being abused. This is used in the cases where we have no modifiable UI to // show, in that case we show a separate dialog to ask this question. @@ -1832,9 +1802,6 @@ protected: // For |window.arguments|, via |openDialog|. nsCOMPtr<nsIArray> mArguments; - // For |window.dialogArguments|, via |showModalDialog|. - RefPtr<DialogValueHolder> mDialogArguments; - // Only used in the outer. RefPtr<DialogValueHolder> mReturnValue; @@ -2067,40 +2034,14 @@ public: nsCOMPtr<mozIDOMWindowProxy> mOpenerForInitialContentBrowser; }; -/* - * nsGlobalModalWindow inherits from nsGlobalWindow. It is the global - * object created for a modal content windows only (i.e. not modal - * chrome dialogs). - */ -class nsGlobalModalWindow : public nsGlobalWindow, - public nsIDOMModalContentWindow -{ -public: - NS_DECL_ISUPPORTS_INHERITED - NS_DECL_NSIDOMMODALCONTENTWINDOW - - static already_AddRefed<nsGlobalModalWindow> Create(nsGlobalWindow *aOuterWindow); - -protected: - explicit nsGlobalModalWindow(nsGlobalWindow *aOuterWindow) - : nsGlobalWindow(aOuterWindow) - { - mIsModalContentWindow = true; - } - - ~nsGlobalModalWindow() {} -}; - /* factory function */ inline already_AddRefed<nsGlobalWindow> -NS_NewScriptGlobalObject(bool aIsChrome, bool aIsModalContentWindow) +NS_NewScriptGlobalObject(bool aIsChrome) { RefPtr<nsGlobalWindow> global; if (aIsChrome) { global = nsGlobalChromeWindow::Create(nullptr); - } else if (aIsModalContentWindow) { - global = nsGlobalModalWindow::Create(nullptr); } else { global = nsGlobalWindow::Create(nullptr); } diff --git a/dom/base/nsIContent.h b/dom/base/nsIContent.h index 405090865..dcdc632b4 100644 --- a/dom/base/nsIContent.h +++ b/dom/base/nsIContent.h @@ -26,7 +26,6 @@ namespace mozilla { class EventChainPreVisitor; namespace dom { class ShadowRoot; -struct CustomElementData; } // namespace dom namespace widget { struct IMEState; @@ -730,22 +729,6 @@ public: nsINode *GetFlattenedTreeParentNodeInternal() const; /** - * Gets the custom element data used by web components custom element. - * Custom element data is created at the first attempt to enqueue a callback. - * - * @return The custom element data or null if none. - */ - virtual mozilla::dom::CustomElementData *GetCustomElementData() const = 0; - - /** - * Sets the custom element data, ownership of the - * callback data is taken by this content. - * - * @param aCallbackData The custom element data. - */ - virtual void SetCustomElementData(mozilla::dom::CustomElementData* aData) = 0; - - /** * API to check if this is a link that's traversed in response to user input * (e.g. a click event). Specializations for HTML/SVG/generic XML allow for * different types of link in different types of content. diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h index fdaee39ca..125816c95 100644 --- a/dom/base/nsIDocument.h +++ b/dom/base/nsIDocument.h @@ -61,6 +61,7 @@ class nsFrameLoader; class nsHTMLCSSStyleSheet; class nsHTMLDocument; class nsHTMLStyleSheet; +class nsGenericHTMLElement; class nsIAtom; class nsIBFCacheEntry; class nsIChannel; @@ -1036,6 +1037,11 @@ public: Element* GetHeadElement() { return GetHtmlChildElement(nsGkAtoms::head); } + // Get the "body" in the sense of document.body: The first <body> or + // <frameset> that's a child of a root <html> + nsGenericHTMLElement* GetBody(); + // Set the "body" in the sense of document.body. + void SetBody(nsGenericHTMLElement* aBody, mozilla::ErrorResult& rv); /** * Accessors to the collection of stylesheets owned by this document. @@ -2573,9 +2579,9 @@ public: } enum ElementCallbackType { - eCreated, - eAttached, - eDetached, + eConnected, + eDisconnected, + eAdopted, eAttributeChanged }; @@ -2872,6 +2878,22 @@ public: virtual void ScheduleIntersectionObserverNotification() = 0; virtual void NotifyIntersectionObservers() = 0; + bool ShouldThrowOnDynamicMarkupInsertion() + { + return mThrowOnDynamicMarkupInsertionCounter; + } + + void IncrementThrowOnDynamicMarkupInsertionCounter() + { + ++mThrowOnDynamicMarkupInsertionCounter; + } + + void DecrementThrowOnDynamicMarkupInsertionCounter() + { + MOZ_ASSERT(mThrowOnDynamicMarkupInsertionCounter); + --mThrowOnDynamicMarkupInsertionCounter; + } + protected: bool GetUseCounter(mozilla::UseCounter aUseCounter) { @@ -3319,6 +3341,11 @@ protected: uint32_t mBlockDOMContentLoaded; + // Used in conjunction with the create-an-element-for-the-token algorithm to + // prevent custom element constructors from being able to use document.open(), + // document.close(), and document.write() when they are invoked by the parser. + uint32_t mThrowOnDynamicMarkupInsertionCounter; + // Our live MediaQueryLists PRCList mDOMMediaQueryLists; @@ -3392,6 +3419,23 @@ private: uint32_t mMicroTaskLevel; }; +class MOZ_RAII AutoSetThrowOnDynamicMarkupInsertionCounter final { + public: + explicit AutoSetThrowOnDynamicMarkupInsertionCounter( + nsIDocument* aDocument) + : mDocument(aDocument) + { + mDocument->IncrementThrowOnDynamicMarkupInsertionCounter(); + } + + ~AutoSetThrowOnDynamicMarkupInsertionCounter() { + mDocument->DecrementThrowOnDynamicMarkupInsertionCounter(); + } + + private: + nsIDocument* mDocument; +}; + // XXX These belong somewhere else nsresult NS_NewHTMLDocument(nsIDocument** aInstancePtrResult, bool aLoadedAsData = false); diff --git a/dom/base/nsJSUtils.cpp b/dom/base/nsJSUtils.cpp index 98b367b66..b6c843065 100644 --- a/dom/base/nsJSUtils.cpp +++ b/dom/base/nsJSUtils.cpp @@ -25,7 +25,7 @@ #include "xpcpublic.h" #include "nsContentUtils.h" #include "nsGlobalWindow.h" - +#include "mozilla/CycleCollectedJSContext.h" #include "mozilla/dom/BindingUtils.h" #include "mozilla/dom/Date.h" #include "mozilla/dom/Element.h" @@ -159,7 +159,8 @@ nsJSUtils::EvaluateString(JSContext* aCx, aEvaluationGlobal); MOZ_ASSERT_IF(aOffThreadToken, aCompileOptions.noScriptRval); MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(nsContentUtils::IsInMicroTask()); + MOZ_ASSERT(CycleCollectedJSContext::Get() && + CycleCollectedJSContext::Get()->MicroTaskLevel()); // Unfortunately, the JS engine actually compiles scripts with a return value // in a different, less efficient way. Furthermore, it can't JIT them in many @@ -293,7 +294,8 @@ nsJSUtils::CompileModule(JSContext* aCx, aEvaluationGlobal); MOZ_ASSERT(JS::CurrentGlobalOrNull(aCx) == aEvaluationGlobal); MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(nsContentUtils::IsInMicroTask()); + MOZ_ASSERT(CycleCollectedJSContext::Get() && + CycleCollectedJSContext::Get()->MicroTaskLevel()); NS_ENSURE_TRUE(xpc::Scriptability::Get(aEvaluationGlobal).Allowed(), NS_OK); @@ -330,7 +332,8 @@ nsJSUtils::ModuleEvaluation(JSContext* aCx, JS::Handle<JSObject*> aModule) MOZ_ASSERT(aCx == nsContentUtils::GetCurrentJSContext()); MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(nsContentUtils::IsInMicroTask()); + MOZ_ASSERT(CycleCollectedJSContext::Get() && + CycleCollectedJSContext::Get()->MicroTaskLevel()); NS_ENSURE_TRUE(xpc::Scriptability::Get(aModule).Allowed(), NS_OK); diff --git a/dom/base/nsNodeUtils.cpp b/dom/base/nsNodeUtils.cpp index 75d408151..384e56cde 100644 --- a/dom/base/nsNodeUtils.cpp +++ b/dom/base/nsNodeUtils.cpp @@ -301,9 +301,12 @@ nsNodeUtils::LastRelease(nsINode* aNode) Element* elem = aNode->AsElement(); FragmentOrElement::nsDOMSlots* domSlots = static_cast<FragmentOrElement::nsDOMSlots*>(slots); - for (auto iter = domSlots->mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) { - DOMIntersectionObserver* observer = iter.Key(); - observer->UnlinkTarget(*elem); + if (domSlots->mExtendedSlots) { + for (auto iter = domSlots->mExtendedSlots->mRegisteredIntersectionObservers.Iter(); + !iter.Done(); iter.Next()) { + DOMIntersectionObserver* observer = iter.Key(); + observer->UnlinkTarget(*elem); + } } } @@ -476,19 +479,33 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, rv = aNode->Clone(nodeInfo, getter_AddRefs(clone)); NS_ENSURE_SUCCESS(rv, rv); - if (clone->IsElement()) { + if (CustomElementRegistry::IsCustomElementEnabled() && + clone->IsHTMLElement()) { // The cloned node may be a custom element that may require - // enqueing created callback and prototype swizzling. - Element* elem = clone->AsElement(); - if (nsContentUtils::IsCustomElementName(nodeInfo->NameAtom())) { - nsContentUtils::SetupCustomElement(elem); - } else { - // Check if node may be custom element by type extension. - // ex. <button is="x-button"> - nsAutoString extension; - if (elem->GetAttr(kNameSpaceID_None, nsGkAtoms::is, extension) && - !extension.IsEmpty()) { - nsContentUtils::SetupCustomElement(elem, &extension); + // enqueing upgrade reaction. + Element* cloneElem = clone->AsElement(); + RefPtr<nsIAtom> tagAtom = nodeInfo->NameAtom(); + CustomElementData* data = elem->GetCustomElementData(); + + // Check if node may be custom element by type extension. + // ex. <button is="x-button"> + nsAutoString extension; + if (!data || data->GetCustomElementType() != tagAtom) { + cloneElem->GetAttr(kNameSpaceID_None, nsGkAtoms::is, extension); + } + + if (data || !extension.IsEmpty()) { + RefPtr<nsIAtom> typeAtom = extension.IsEmpty() ? tagAtom : NS_Atomize(extension); + cloneElem->SetCustomElementData(new CustomElementData(typeAtom)); + + MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName())); + CustomElementDefinition* definition = + nsContentUtils::LookupCustomElementDefinition(nodeInfo->GetDocument(), + nodeInfo->NameAtom(), + nodeInfo->NamespaceID(), + typeAtom); + if (definition) { + nsContentUtils::EnqueueUpgradeReaction(cloneElem, definition); } } } @@ -523,6 +540,23 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, nsIDocument* newDoc = aNode->OwnerDoc(); if (newDoc) { + if (CustomElementRegistry::IsCustomElementEnabled()) { + // Adopted callback must be enqueued whenever a node’s + // shadow-including inclusive descendants that is custom. + Element* element = aNode->IsElement() ? aNode->AsElement() : nullptr; + if (element) { + CustomElementData* data = element->GetCustomElementData(); + if (data && data->mState == CustomElementData::State::eCustom) { + LifecycleAdoptedCallbackArgs args = { + oldDoc, + newDoc + }; + nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAdopted, + element, nullptr, &args); + } + } + } + // XXX what if oldDoc is null, we don't know if this should be // registered or not! Can that really happen? if (wasRegistered) { diff --git a/dom/base/nsPIDOMWindow.h b/dom/base/nsPIDOMWindow.h index 47affbb06..5c07bf4d4 100644 --- a/dom/base/nsPIDOMWindow.h +++ b/dom/base/nsPIDOMWindow.h @@ -303,11 +303,6 @@ public: virtual bool CanClose() = 0; virtual void ForceClose() = 0; - bool IsModalContentWindow() const - { - return mIsModalContentWindow; - } - /** * Call this to indicate that some node (this window, its document, * or content in that document) has a paint event listener. @@ -629,11 +624,6 @@ protected: // This member is only used by inner windows. bool mInnerObjectsFreed; - - // This variable is used on both inner and outer windows (and they - // should match). - bool mIsModalContentWindow; - // Tracks activation state that's used for :-moz-window-inactive. // Only used on outer windows. bool mIsActive; diff --git a/dom/base/nsSandboxFlags.h b/dom/base/nsSandboxFlags.h index d18527597..b8c9ac357 100644 --- a/dom/base/nsSandboxFlags.h +++ b/dom/base/nsSandboxFlags.h @@ -29,8 +29,7 @@ const unsigned long SANDBOXED_NAVIGATION = 0x1; /** * This flag prevents content from creating new auxiliary browsing contexts, - * e.g. using the target attribute, the window.open() method, or the - * showModalDialog() method. + * e.g. using the target attribute, or the window.open() method. */ const unsigned long SANDBOXED_AUXILIARY_NAVIGATION = 0x2; diff --git a/dom/base/test/chrome/registerElement_ep.js b/dom/base/test/chrome/registerElement_ep.js index de32ba51c..9189593c0 100644 --- a/dom/base/test/chrome/registerElement_ep.js +++ b/dom/base/test/chrome/registerElement_ep.js @@ -1,8 +1,8 @@ var proto = Object.create(HTMLElement.prototype); proto.magicNumber = 42; -proto.createdCallback = function() { +proto.connectedCallback = function() { finishTest(this.magicNumber === 42); }; document.registerElement("x-foo", { prototype: proto }); -document.createElement("x-foo"); +document.firstChild.appendChild(document.createElement("x-foo")); diff --git a/dom/base/test/chrome/test_registerElement_content.xul b/dom/base/test/chrome/test_registerElement_content.xul index 9a918f2d7..bf00ed53d 100644 --- a/dom/base/test/chrome/test_registerElement_content.xul +++ b/dom/base/test/chrome/test_registerElement_content.xul @@ -21,19 +21,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1130028 <script type="application/javascript"><![CDATA[ /** Test for Bug 1130028 **/ - SimpleTest.waitForExplicitFinish(); + var connectedCallbackCount = 0; - var createdCallbackCount = 0; - - // Callback should be called once by element created in chrome, - // and once by element created in content. - function createdCallbackCalled() { - createdCallbackCount++; - ok(true, "Created callback called, should be called twice in test."); + // Callback should be called only once by element created in content. + function connectedCallbackCalled() { + connectedCallbackCount++; + is(connectedCallbackCount, 1, "Connected callback called, should be called once in test."); is(this.magicNumber, 42, "Callback should be able to see the custom prototype."); - if (createdCallbackCount == 2) { - SimpleTest.finish(); - } } function startTests() { @@ -45,10 +39,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1130028 var proto = Object.create(frame.contentWindow.HTMLElement.prototype); proto.magicNumber = 42; - proto.createdCallback = createdCallbackCalled; + proto.connectedCallback = connectedCallbackCalled; + frame.contentDocument.registerElement("x-bar", { prototype: proto }); + is(connectedCallbackCount, 1, "Connected callback should be called by element created in content."); - frame.contentDocument.createElement("x-bar"); + var element = frame.contentDocument.createElement("x-bar"); + is(element.magicNumber, 42, "Should be able to see the custom prototype on created element."); } ]]></script> diff --git a/dom/base/test/chrome/test_registerElement_ep.xul b/dom/base/test/chrome/test_registerElement_ep.xul index 6f1745268..b6a160c2e 100644 --- a/dom/base/test/chrome/test_registerElement_ep.xul +++ b/dom/base/test/chrome/test_registerElement_ep.xul @@ -26,8 +26,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1130028 SimpleTest.waitForExplicitFinish(); function finishTest(canSeePrototype) { - ok(true, "createdCallback called when reigsterElement was called with an extended principal."); - ok(canSeePrototype, "createdCallback should be able to see custom prototype."); + ok(true, "connectedCallback called when reigsterElement was called with an extended principal."); + ok(canSeePrototype, "connectedCallback should be able to see custom prototype."); SimpleTest.finish(); } diff --git a/dom/base/test/mochitest.ini b/dom/base/test/mochitest.ini index b3b804ce4..3dfd666f8 100644 --- a/dom/base/test/mochitest.ini +++ b/dom/base/test/mochitest.ini @@ -196,7 +196,6 @@ support-files = formReset.html invalid_accesscontrol.resource invalid_accesscontrol.resource^headers^ - mutationobserver_dialog.html orientationcommon.js script-1_bug597345.sjs script-2_bug597345.js @@ -627,9 +626,6 @@ subsuite = clipboard skip-if = toolkit == 'android' #bug 904183 [test_createHTMLDocument.html] [test_declare_stylesheet_obsolete.html] -[test_dialogArguments.html] -tags = openwindow -skip-if = toolkit == 'android' || e10s # showmodaldialog [test_document.all_iteration.html] [test_document.all_unqualified.html] [test_document_constructor.html] diff --git a/dom/base/test/mutationobserver_dialog.html b/dom/base/test/mutationobserver_dialog.html deleted file mode 100644 index 2cc815309..000000000 --- a/dom/base/test/mutationobserver_dialog.html +++ /dev/null @@ -1,62 +0,0 @@ -<html> - <head> - <title></title> - <script> - - var div = document.createElement("div"); - - var M; - if ("MozMutationObserver" in window) { - M = window.MozMutationObserver; - } else if ("WebKitMutationObserver" in window) { - M = window.WebKitMutationObserver; - } else { - M = window.MutationObserver; - } - - var didCall1 = false; - var didCall2 = false; - function testMutationObserverInDialog() { - div.innerHTML = "<span>1</span><span>2</span>"; - m = new M(function(records, observer) { - opener.is(records[0].type, "childList", "Should have got childList"); - opener.is(records[0].removedNodes.length, 2, "Should have got removedNodes"); - opener.is(records[0].addedNodes.length, 1, "Should have got addedNodes"); - observer.disconnect(); - m = null; - didCall1 = true; - }); - m.observe(div, { childList: true }); - div.innerHTML = "<span><span>foo</span></span>"; - } - - function testMutationObserverInDialog2() { - div.innerHTML = "<span>1</span><span>2</span>"; - m = new M(function(records, observer) { - opener.is(records[0].type, "childList", "Should have got childList"); - opener.is(records[0].removedNodes.length, 2, "Should have got removedNodes"); - opener.is(records[0].addedNodes.length, 1, "Should have got addedNodes"); - observer.disconnect(); - m = null; - didCall2 = true; - }); - m.observe(div, { childList: true }); - div.innerHTML = "<span><span>foo</span></span>"; - } - - window.addEventListener("load", testMutationObserverInDialog); - window.addEventListener("load", testMutationObserverInDialog2); - window.addEventListener("load", - function() { - opener.ok(didCall1, "Should have called 1st mutation callback"); - opener.ok(didCall2, "Should have called 2nd mutation callback"); - window.close(); - }); - </script> - <style> - </style> - </head> - <body> - <input type="button" onclick="window.close()" value="close"> - </body> -</html> diff --git a/dom/base/test/test_dialogArguments.html b/dom/base/test/test_dialogArguments.html deleted file mode 100644 index 70a091d00..000000000 --- a/dom/base/test/test_dialogArguments.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <title>Test for Bug 1019761</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> - - <meta http-equiv="content-type" content="text/html; charset=utf-8"> -</head> -<body> -<script type="application/javascript"> - -/* - Tests whether Firefox crashes when accessing the dialogArguments property - of a modal window that has been closed. -*/ -SimpleTest.waitForExplicitFinish(); - -function openModal() { - showModalDialog("javascript:opener.winRef = window; \ - window.opener.setTimeout(\'winRef.dialogArguments;\', 0);\ - window.close();"); - - ok(true, "dialogArguments did not cause a crash."); - SimpleTest.finish(); -} - -window.onload = openModal; -</script> -</body> -</html> diff --git a/dom/base/test/test_mutationobservers.html b/dom/base/test/test_mutationobservers.html index bde07c79c..7e4c99423 100644 --- a/dom/base/test/test_mutationobservers.html +++ b/dom/base/test/test_mutationobservers.html @@ -362,7 +362,7 @@ function testChildList5() { is(records[5].previousSibling, c3, ""); is(records[5].nextSibling, c5, ""); observer.disconnect(); - then(testAdoptNode); + then(testNestedMutations); m = null; }); m.observe(div, { childList: true, subtree: true }); @@ -375,6 +375,37 @@ function testChildList5() { div.appendChild(emptyDF); // empty document shouldn't cause mutation records } +function testNestedMutations() { + div.textContent = null; + div.appendChild(document.createTextNode("foo")); + var m2WasCalled = false; + m = new M(function(records, observer) { + is(records[0].type, "characterData", "Should have got characterData"); + observer.disconnect(); + m = null; + m3 = new M(function(records, observer) { + ok(m2WasCalled, "m2 should have been called before m3!"); + is(records[0].type, "characterData", "Should have got characterData"); + observer.disconnect(); + then(testAdoptNode); + m3 = null; + }); + m3.observe(div, { characterData: true, subtree: true}); + div.firstChild.data = "foo"; + }); + m2 = new M(function(records, observer) { + m2WasCalled = true; + is(records[0].type, "characterData", "Should have got characterData"); + observer.disconnect(); + m2 = null; + }); + m2.observe(div, { characterData: true, subtree: true}); + div.appendChild(document.createTextNode("foo")); + m.observe(div, { characterData: true, subtree: true }); + + div.firstChild.data = "bar"; +} + function testAdoptNode() { var d1 = document.implementation.createHTMLDocument(null); var d2 = document.implementation.createHTMLDocument(null); @@ -484,28 +515,6 @@ function testSyncXHR() { function testSyncXHR2() { ok(callbackHandled, "Should have called the mutation callback!"); - then(testModalDialog); -} - -function testModalDialog() { - var didHandleCallback = false; - div.innerHTML = "<span>1</span><span>2</span>"; - m = new M(function(records, observer) { - is(records[0].type, "childList", "Should have got childList"); - is(records[0].removedNodes.length, 2, "Should have got removedNodes"); - is(records[0].addedNodes.length, 1, "Should have got addedNodes"); - observer.disconnect(); - m = null; - didHandleCallback = true; - }); - m.observe(div, { childList: true }); - div.innerHTML = "<span><span>foo</span></span>"; - try { - window.showModalDialog("mutationobserver_dialog.html"); - ok(didHandleCallback, "Should have called the callback while showing modal dialog!"); - } catch(e) { - todo(false, "showModalDialog not implemented on this platform"); - } then(testTakeRecords); } diff --git a/dom/bindings/BindingUtils.cpp b/dom/bindings/BindingUtils.cpp index b244d4d2a..f76f14d95 100644 --- a/dom/bindings/BindingUtils.cpp +++ b/dom/bindings/BindingUtils.cpp @@ -16,13 +16,16 @@ #include "mozilla/SizePrintfMacros.h" #include "mozilla/Unused.h" #include "mozilla/UseCounter.h" +#include "mozilla/dom/DocGroup.h" #include "AccessCheck.h" #include "jsfriendapi.h" +#include "nsContentCreatorFunctions.h" #include "nsContentUtils.h" #include "nsGlobalWindow.h" #include "nsIDocShell.h" #include "nsIDOMGlobalPropertyInitializer.h" +#include "nsIParserService.h" #include "nsIPermissionManager.h" #include "nsIPrincipal.h" #include "nsIXPConnect.h" @@ -37,6 +40,7 @@ #include "nsGlobalWindow.h" #include "mozilla/dom/ScriptSettings.h" +#include "mozilla/dom/CustomElementRegistry.h" #include "mozilla/dom/DOMError.h" #include "mozilla/dom/DOMErrorBinding.h" #include "mozilla/dom/DOMException.h" @@ -44,6 +48,7 @@ #include "mozilla/dom/HTMLObjectElement.h" #include "mozilla/dom/HTMLObjectElementBinding.h" #include "mozilla/dom/HTMLSharedObjectElement.h" +#include "mozilla/dom/HTMLElementBinding.h" #include "mozilla/dom/HTMLEmbedElementBinding.h" #include "mozilla/dom/HTMLAppletElementBinding.h" #include "mozilla/dom/Promise.h" @@ -62,6 +67,30 @@ namespace dom { using namespace workers; +// Forward declare GetConstructorObject methods. +#define HTML_TAG(_tag, _classname, _interfacename) \ +namespace HTML##_interfacename##ElementBinding { \ + JSObject* GetConstructorObject(JSContext*); \ +} +#define HTML_OTHER(_tag) +#include "nsHTMLTagList.h" +#undef HTML_TAG +#undef HTML_OTHER + +typedef JSObject* (*constructorGetterCallback)(JSContext*); + +// Mapping of html tag and GetConstructorObject methods. +#define HTML_TAG(_tag, _classname, _interfacename) HTML##_interfacename##ElementBinding::GetConstructorObject, +#define HTML_OTHER(_tag) nullptr, +// We use eHTMLTag_foo (where foo is the tag) which is defined in nsHTMLTags.h +// to index into this array. +static const constructorGetterCallback sConstructorGetterCallback[] = { + HTMLUnknownElementBinding::GetConstructorObject, +#include "nsHTMLTagList.h" +#undef HTML_TAG +#undef HTML_OTHER +}; + const JSErrorFormatString ErrorFormatString[] = { #define MSG_DEF(_name, _argc, _exn, _str) \ { #_name, _str, _argc, _exn }, @@ -3377,6 +3406,189 @@ GetDesiredProto(JSContext* aCx, const JS::CallArgs& aCallArgs, return true; } +CustomElementReactionsStack* +GetCustomElementReactionsStack(JS::Handle<JSObject*> aObj) +{ + // This might not be the right object, if there are wrappers. Unwrap if we can. + JSObject* obj = js::CheckedUnwrap(aObj); + if (!obj) { + return nullptr; + } + + nsGlobalWindow* window = xpc::WindowGlobalOrNull(obj); + if (!window) { + return nullptr; + } + + DocGroup* docGroup = window->AsInner()->GetDocGroup(); + if (!docGroup) { + return nullptr; + } + + return docGroup->CustomElementReactionsStack(); +} + +// https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor +already_AddRefed<nsGenericHTMLElement> +CreateHTMLElement(const GlobalObject& aGlobal, const JS::CallArgs& aCallArgs, + JS::Handle<JSObject*> aGivenProto, ErrorResult& aRv) +{ + // Step 1. + nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports()); + if (!window) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + + nsIDocument* doc = window->GetExtantDoc(); + if (!doc) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + + RefPtr<mozilla::dom::CustomElementRegistry> registry(window->CustomElements()); + if (!registry) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + + // Step 2 is in the code output by CGClassConstructor. + // Step 3. + JSContext* cx = aGlobal.Context(); + JS::Rooted<JSObject*> newTarget(cx, &aCallArgs.newTarget().toObject()); + CustomElementDefinition* definition = + registry->LookupCustomElementDefinition(cx, newTarget); + if (!definition) { + aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>(); + return nullptr; + } + + // The callee might be an Xray. Unwrap it to get actual callee. + JS::Rooted<JSObject*> callee(cx, js::CheckedUnwrap(&aCallArgs.callee())); + if (!callee) { + aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); + return nullptr; + } + + // And the actual callee might be in different compartment, so enter its + // compartment before getting the standard constructor object to compare to, + // so we get it from the same global as callee itself. + JSAutoCompartment ac(cx, callee); + int32_t tag = eHTMLTag_userdefined; + if (!definition->IsCustomBuiltIn()) { + // Step 4. + // If the definition is for an autonomous custom element, the active + // function should be HTMLElement. + JS::Rooted<JSObject*> constructor(cx, HTMLElementBinding::GetConstructorObject(cx)); + if (!constructor) { + aRv.NoteJSContextException(cx); + return nullptr; + } + + if (callee != constructor) { + aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>(); + return nullptr; + } + } else { + // Step 5. + // If the definition is for a customized built-in element, the localName + // should be defined in the specification. + nsIParserService* parserService = nsContentUtils::GetParserService(); + if (!parserService) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + + tag = parserService->HTMLCaseSensitiveAtomTagToId(definition->mLocalName); + if (tag == eHTMLTag_userdefined) { + aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>(); + return nullptr; + } + + MOZ_ASSERT(tag <= NS_HTML_TAG_MAX, "tag is out of bounds"); + + // If the definition is for a customized built-in element, the active + // function should be the localname's element interface. + constructorGetterCallback cb = sConstructorGetterCallback[tag]; + if (!cb) { + aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>(); + return nullptr; + } + + JS::Rooted<JSObject*> constructor(cx, cb(cx)); + if (!constructor) { + aRv.NoteJSContextException(cx); + return nullptr; + } + + if (callee != constructor) { + aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>(); + return nullptr; + } + } + + RefPtr<mozilla::dom::NodeInfo> nodeInfo = + doc->NodeInfoManager()->GetNodeInfo(definition->mLocalName, + nullptr, + kNameSpaceID_XHTML, + nsIDOMNode::ELEMENT_NODE); + if (!nodeInfo) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + + // Step 6 and Step 7 are in the code output by CGClassConstructor. + // Step 8. + nsTArray<RefPtr<nsGenericHTMLElement>>& constructionStack = + definition->mConstructionStack; + if (constructionStack.IsEmpty()) { + RefPtr<nsGenericHTMLElement> newElement; + if (tag == eHTMLTag_userdefined) { + // Autonomous custom element. + newElement = NS_NewHTMLElement(nodeInfo.forget()); + } else { + // Customized built-in element. + newElement = CreateHTMLElement(tag, nodeInfo.forget(), NOT_FROM_PARSER); + } + + newElement->SetCustomElementData( + new CustomElementData(definition->mType, CustomElementData::State::eCustom)); + + newElement->SetCustomElementDefinition(definition); + + return newElement.forget(); + } + + // Step 9. + RefPtr<nsGenericHTMLElement>& element = constructionStack.LastElement(); + + // Step 10. + if (element == ALEADY_CONSTRUCTED_MARKER) { + aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); + return nullptr; + } + + // Step 11. + // Do prototype swizzling for upgrading a custom element here, for cases when + // we have a reflector already. If we don't have one yet, our caller will + // create it with the right proto (by calling DoGetOrCreateDOMReflector with + // that proto). + JS::Rooted<JSObject*> reflector(cx, element->GetWrapper()); + if (reflector) { + // reflector might be in different compartment. + JSAutoCompartment ac(cx, reflector); + JS::Rooted<JSObject*> givenProto(cx, aGivenProto); + if (!JS_WrapObject(cx, &givenProto) || + !JS_SetPrototype(cx, reflector, givenProto)) { + aRv.NoteJSContextException(cx); + return nullptr; + } + } + + // Step 12 and Step 13. + return element.forget(); +} + #ifdef DEBUG namespace binding_detail { void diff --git a/dom/bindings/BindingUtils.h b/dom/bindings/BindingUtils.h index 5cab835b3..e583d0e06 100644 --- a/dom/bindings/BindingUtils.h +++ b/dom/bindings/BindingUtils.h @@ -42,6 +42,7 @@ #include "nsWrapperCacheInlines.h" +class nsGenericHTMLElement; class nsIJSID; namespace mozilla { @@ -49,6 +50,7 @@ namespace mozilla { enum UseCounter : int16_t; namespace dom { +class CustomElementReactionsStack; template<typename KeyType, typename ValueType> class Record; nsresult @@ -3420,6 +3422,19 @@ bool GetDesiredProto(JSContext* aCx, const JS::CallArgs& aCallArgs, JS::MutableHandle<JSObject*> aDesiredProto); +// Get the CustomElementReactionsStack for the docgroup of the global +// of the underlying object of aObj. This can be null if aObj can't +// be CheckUnwrapped, or if the global of the result has no docgroup +// (e.g. because it's not a Window global). +CustomElementReactionsStack* +GetCustomElementReactionsStack(JS::Handle<JSObject*> aObj); +// This function is expected to be called from the constructor function for an +// HTML element interface; the global/callargs need to be whatever was passed to +// that constructor function. +already_AddRefed<nsGenericHTMLElement> +CreateHTMLElement(const GlobalObject& aGlobal, const JS::CallArgs& aCallArgs, + JS::Handle<JSObject*> aGivenProto, ErrorResult& aRv); + void SetDocumentAndPageUseCounter(JSContext* aCx, JSObject* aObject, UseCounter aUseCounter); diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf index b00af2085..9428529f4 100644 --- a/dom/bindings/Bindings.conf +++ b/dom/bindings/Bindings.conf @@ -1638,6 +1638,15 @@ DOMInterfaces = { 'register': False, }, +'TestHTMLConstructorInterface' : { + 'headerFile': 'TestBindingHeader.h', + 'register': False, + }, + +'TestCEReactionsInterface' : { + 'headerFile': 'TestBindingHeader.h', + 'register': False, + }, } # These are temporary, until they've been converted to use new DOM bindings diff --git a/dom/bindings/CallbackObject.cpp b/dom/bindings/CallbackObject.cpp index bb01c804c..398acf9da 100644 --- a/dom/bindings/CallbackObject.cpp +++ b/dom/bindings/CallbackObject.cpp @@ -5,6 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/dom/CallbackObject.h" +#include "mozilla/CycleCollectedJSContext.h" #include "mozilla/dom/BindingUtils.h" #include "jsfriendapi.h" #include "nsIScriptGlobalObject.h" @@ -79,7 +80,10 @@ CallbackObject::CallSetup::CallSetup(CallbackObject* aCallback, , mIsMainThread(NS_IsMainThread()) { if (mIsMainThread) { - nsContentUtils::EnterMicroTask(); + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->EnterMicroTask(); + } } // Compute the caller's subject principal (if necessary) early, before we @@ -288,7 +292,10 @@ CallbackObject::CallSetup::~CallSetup() // It is important that this is the last thing we do, after leaving the // compartment and undoing all our entry/incumbent script changes if (mIsMainThread) { - nsContentUtils::LeaveMicroTask(); + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->LeaveMicroTask(); + } } } diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py index 6b23e8225..8ee732cca 100644 --- a/dom/bindings/Codegen.py +++ b/dom/bindings/Codegen.py @@ -1747,6 +1747,71 @@ class CGClassConstructor(CGAbstractStaticMethod): else: ctorName = self.descriptor.interface.identifier.name + # [HTMLConstructor] for custom element + # This needs to live in bindings code because it directly examines + # newtarget and the callee function to do HTMLConstructor specific things. + if self._ctor.isHTMLConstructor(): + htmlConstructorSanityCheck = dedent(""" + // The newTarget might be a cross-compartment wrapper. Get the underlying object + // so we can do the spec's object-identity checks. + JS::Rooted<JSObject*> newTarget(cx, js::CheckedUnwrap(&args.newTarget().toObject())); + if (!newTarget) { + return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR); + } + + // Step 2 of https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor. + // Enter the compartment of our underlying newTarget object, so we end + // up comparing to the constructor object for our interface from that global. + { + JSAutoCompartment ac(cx, newTarget); + JS::Handle<JSObject*> constructor(GetConstructorObjectHandle(cx)); + if (!constructor) { + return false; + } + if (newTarget == constructor) { + return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR); + } + } + + """) + + # If we are unable to get desired prototype from newTarget, then we + # fall back to the interface prototype object from newTarget's realm. + htmlConstructorFallback = dedent(""" + if (!desiredProto) { + // Step 7 of https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor. + // This fallback behavior is designed to match analogous behavior for the + // JavaScript built-ins. So we enter the compartment of our underlying + // newTarget object and fall back to the prototype object from that global. + // XXX The spec says to use GetFunctionRealm(), which is not actually + // the same thing as what we have here (e.g. in the case of scripted callable proxies + // whose target is not same-compartment with the proxy, or bound functions, etc). + // https://bugzilla.mozilla.org/show_bug.cgi?id=1317658 + { + JSAutoCompartment ac(cx, newTarget); + desiredProto = GetProtoObjectHandle(cx); + if (!desiredProto) { + return false; + } + } + + // desiredProto is in the compartment of the underlying newTarget object. + // Wrap it into the context compartment. + if (!JS_WrapObject(cx, &desiredProto)) { + return false; + } + } + """) + else: + htmlConstructorSanityCheck = "" + htmlConstructorFallback = "" + + + # If we're a constructor, "obj" may not be a function, so calling + # XrayAwareCalleeGlobal() on it is not safe. Of course in the + # constructor case either "obj" is an Xray or we're already in the + # content compartment, not the Xray compartment, so just + # constructing the GlobalObject from "obj" is fine. preamble = fill( """ JS::CallArgs args = JS::CallArgsFromVp(argc, vp); @@ -1757,19 +1822,41 @@ class CGClassConstructor(CGAbstractStaticMethod): // Adding more relocations return ThrowConstructorWithoutNew(cx, "${ctorName}"); } + + GlobalObject global(cx, obj); + if (global.Failed()) { + return false; + } + + $*{htmlConstructorSanityCheck} JS::Rooted<JSObject*> desiredProto(cx); if (!GetDesiredProto(cx, args, &desiredProto)) { return false; } + $*{htmlConstructorFallback} """, chromeOnlyCheck=chromeOnlyCheck, - ctorName=ctorName) - - name = self._ctor.identifier.name - nativeName = MakeNativeName(self.descriptor.binaryNameFor(name)) - callGenerator = CGMethodCall(nativeName, True, self.descriptor, - self._ctor, isConstructor=True, - constructorName=ctorName) + ctorName=ctorName, + htmlConstructorSanityCheck=htmlConstructorSanityCheck, + htmlConstructorFallback=htmlConstructorFallback) + + if self._ctor.isHTMLConstructor(): + signatures = self._ctor.signatures() + assert len(signatures) == 1 + # Given that HTMLConstructor takes no args, we can just codegen a + # call to CreateHTMLElement() in BindingUtils which reuses the + # factory thing in HTMLContentSink. Then we don't have to implement + # Constructor on all the HTML elements. + callGenerator = CGPerSignatureCall(signatures[0][0], signatures[0][1], + "CreateHTMLElement", True, + self.descriptor, self._ctor, + isConstructor=True) + else: + name = self._ctor.identifier.name + nativeName = MakeNativeName(self.descriptor.binaryNameFor(name)) + callGenerator = CGMethodCall(nativeName, True, self.descriptor, + self._ctor, isConstructor=True, + constructorName=ctorName) return preamble + "\n" + callGenerator.define() @@ -7386,7 +7473,7 @@ class CGPerSignatureCall(CGThing): def __init__(self, returnType, arguments, nativeMethodName, static, descriptor, idlNode, argConversionStartsAt=0, getter=False, setter=False, isConstructor=False, useCounterName=None, - resultVar=None): + resultVar=None, objectName="obj"): assert idlNode.isMethod() == (not getter and not setter) assert idlNode.isAttr() == (getter or setter) # Constructors are always static @@ -7440,26 +7527,23 @@ class CGPerSignatureCall(CGThing): argsPre = [] if idlNode.isStatic(): - # If we're a constructor, "obj" may not be a function, so calling - # XrayAwareCalleeGlobal() on it is not safe. Of course in the - # constructor case either "obj" is an Xray or we're already in the - # content compartment, not the Xray compartment, so just - # constructing the GlobalObject from "obj" is fine. - if isConstructor: - objForGlobalObject = "obj" - else: - objForGlobalObject = "xpc::XrayAwareCalleeGlobal(obj)" - cgThings.append(CGGeneric(fill( - """ - GlobalObject global(cx, ${obj}); - if (global.Failed()) { - return false; - } + # If we're a constructor, the GlobalObject struct will be created in + # CGClassConstructor. + if not isConstructor: + cgThings.append(CGGeneric(dedent( + """ + GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj)); + if (global.Failed()) { + return false; + } + + """))) - """, - obj=objForGlobalObject))) argsPre.append("global") + if isConstructor and idlNode.isHTMLConstructor(): + argsPre.extend(["args", "desiredProto"]) + # For JS-implemented interfaces we do not want to base the # needsCx decision on the types involved, just on our extended # attributes. Also, JSContext is not needed for the static case @@ -7588,6 +7672,17 @@ class CGPerSignatureCall(CGThing): CGIfWrapper(CGList(xraySteps), "objIsXray")) + if (idlNode.getExtendedAttribute('CEReactions') is not None and + not getter): + cgThings.append(CGGeneric(fill( + """ + CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(${obj}); + Maybe<AutoCEReaction> ceReaction; + if (reactionsStack) { + ceReaction.emplace(reactionsStack, cx); + } + """, obj=objectName))) + # If this is a method that was generated by a maplike/setlike # interface, use the maplike/setlike generator to fill in the body. # Otherwise, use CGCallGenerator to call the native method. @@ -10985,7 +11080,8 @@ class CGProxySpecialOperation(CGPerSignatureCall): # CGPerSignatureCall won't do any argument conversion of its own. CGPerSignatureCall.__init__(self, returnType, arguments, nativeName, False, descriptor, operation, - len(arguments), resultVar=resultVar) + len(arguments), resultVar=resultVar, + objectName="proxy") if operation.isSetter() or operation.isCreator(): # arguments[0] is the index or name of the item that we're setting. @@ -13755,12 +13851,18 @@ class CGBindingRoot(CGThing): iface = desc.interface return any(m.getExtendedAttribute("Deprecated") for m in iface.members + [iface]) + def descriptorHasCEReactions(desc): + iface = desc.interface + return any(m.getExtendedAttribute("CEReactions") for m in iface.members + [iface]) + bindingHeaders["nsIDocument.h"] = any( descriptorDeprecated(d) for d in descriptors) bindingHeaders["mozilla/Preferences.h"] = any( descriptorRequiresPreferences(d) for d in descriptors) bindingHeaders["mozilla/dom/DOMJSProxyHandler.h"] = any( d.concrete and d.proxy for d in descriptors) + bindingHeaders["mozilla/dom/CustomElementRegistry.h"] = any( + descriptorHasCEReactions(d) for d in descriptors) def descriptorHasChromeOnly(desc): ctor = desc.interface.ctor() diff --git a/dom/bindings/parser/WebIDL.py b/dom/bindings/parser/WebIDL.py index 4f602365b..81911996d 100644 --- a/dom/bindings/parser/WebIDL.py +++ b/dom/bindings/parser/WebIDL.py @@ -1582,7 +1582,7 @@ class IDLInterface(IDLInterfaceOrNamespace): [self.location]) self._noInterfaceObject = True - elif identifier == "Constructor" or identifier == "NamedConstructor" or identifier == "ChromeConstructor": + elif identifier == "Constructor" or identifier == "NamedConstructor" or identifier == "ChromeConstructor" or identifier == "HTMLConstructor": if identifier == "Constructor" and not self.hasInterfaceObject(): raise WebIDLError(str(identifier) + " and NoInterfaceObject are incompatible", [self.location]) @@ -1595,11 +1595,20 @@ class IDLInterface(IDLInterfaceOrNamespace): raise WebIDLError(str(identifier) + " and NoInterfaceObject are incompatible", [self.location]) + if identifier == "HTMLConstructor": + if not self.hasInterfaceObject(): + raise WebIDLError(str(identifier) + " and NoInterfaceObject are incompatible", + [self.location]) + + if not attr.noArguments(): + raise WebIDLError(str(identifier) + " must take no arguments", + [attr.location]) + args = attr.args() if attr.hasArgs() else [] retType = IDLWrapperType(self.location, self) - if identifier == "Constructor" or identifier == "ChromeConstructor": + if identifier == "Constructor" or identifier == "ChromeConstructor" or identifier == "HTMLConstructor": name = "constructor" allowForbidden = True else: @@ -1610,7 +1619,8 @@ class IDLInterface(IDLInterfaceOrNamespace): allowForbidden=allowForbidden) method = IDLMethod(self.location, methodIdentifier, retType, - args, static=True) + args, static=True, + htmlConstructor=(identifier == "HTMLConstructor")) # Constructors are always NewObject and are always # assumed to be able to throw (since there's no way to # indicate otherwise) and never have any other @@ -1622,7 +1632,7 @@ class IDLInterface(IDLInterfaceOrNamespace): method.addExtendedAttributes( [IDLExtendedAttribute(self.location, ("ChromeOnly",))]) - if identifier == "Constructor" or identifier == "ChromeConstructor": + if identifier == "Constructor" or identifier == "ChromeConstructor" or identifier == "HTMLConstructor": method.resolve(self) else: # We need to detect conflicts for NamedConstructors across @@ -4073,6 +4083,11 @@ class IDLAttribute(IDLInterfaceMember): raise WebIDLError("Attribute returns a type that is not exposed " "everywhere where the attribute is exposed", [self.location]) + if self.getExtendedAttribute("CEReactions"): + if self.readonly: + raise WebIDLError("[CEReactions] is not allowed on " + "readonly attributes", + [self.location]) def handleExtendedAttribute(self, attr): identifier = attr.identifier() @@ -4243,6 +4258,10 @@ class IDLAttribute(IDLInterfaceMember): raise WebIDLError("[Unscopable] is only allowed on non-static " "attributes and operations", [attr.location, self.location]) + elif identifier == "CEReactions": + if not attr.noArguments(): + raise WebIDLError("[CEReactions] must take no arguments", + [attr.location]) elif (identifier == "Pref" or identifier == "Deprecated" or identifier == "SetterThrows" or @@ -4537,7 +4556,7 @@ class IDLMethod(IDLInterfaceMember, IDLScope): static=False, getter=False, setter=False, creator=False, deleter=False, specialType=NamedOrIndexed.Neither, legacycaller=False, stringifier=False, jsonifier=False, - maplikeOrSetlikeOrIterable=None): + maplikeOrSetlikeOrIterable=None, htmlConstructor=False): # REVIEW: specialType is NamedOrIndexed -- wow, this is messed up. IDLInterfaceMember.__init__(self, location, identifier, IDLInterfaceMember.Tags.Method) @@ -4567,6 +4586,10 @@ class IDLMethod(IDLInterfaceMember, IDLScope): self._jsonifier = jsonifier assert maplikeOrSetlikeOrIterable is None or isinstance(maplikeOrSetlikeOrIterable, IDLMaplikeOrSetlikeOrIterableBase) self.maplikeOrSetlikeOrIterable = maplikeOrSetlikeOrIterable + assert isinstance(htmlConstructor, bool) + # The identifier of a HTMLConstructor must be 'constructor'. + assert not htmlConstructor or identifier.name == "constructor" + self._htmlConstructor = htmlConstructor self._specialType = specialType self._unforgeable = False self.dependsOn = "Everything" @@ -4667,6 +4690,9 @@ class IDLMethod(IDLInterfaceMember, IDLScope): self.isStringifier() or self.isJsonifier()) + def isHTMLConstructor(self): + return self._htmlConstructor + def hasOverloads(self): return self._hasOverloads @@ -4722,6 +4748,8 @@ class IDLMethod(IDLInterfaceMember, IDLScope): assert not method.isStringifier() assert not self.isJsonifier() assert not method.isJsonifier() + assert not self.isHTMLConstructor() + assert not method.isHTMLConstructor() return self @@ -4964,6 +4992,15 @@ class IDLMethod(IDLInterfaceMember, IDLScope): raise WebIDLError("[Unscopable] is only allowed on non-static " "attributes and operations", [attr.location, self.location]) + elif identifier == "CEReactions": + if not attr.noArguments(): + raise WebIDLError("[CEReactions] must take no arguments", + [attr.location]) + + if self.isSpecial() and not self.isSetter() and not self.isDeleter(): + raise WebIDLError("[CEReactions] is only allowed on operation, " + "attribute, setter, and deleter", + [attr.location, self.location]) elif (identifier == "Throws" or identifier == "NewObject" or identifier == "ChromeOnly" or diff --git a/dom/bindings/parser/tests/test_cereactions.py b/dom/bindings/parser/tests/test_cereactions.py new file mode 100644 index 000000000..2f9397d90 --- /dev/null +++ b/dom/bindings/parser/tests/test_cereactions.py @@ -0,0 +1,162 @@ +def WebIDLTest(parser, harness): + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions(DOMString a)] void foo(boolean arg2); + }; + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown for [CEReactions] with an argument") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions(DOMString b)] readonly attribute boolean bar; + }; + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown for [CEReactions] with an argument") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] attribute boolean bar; + }; + """) + + results = parser.finish() + except Exception, e: + harness.ok(False, "Shouldn't have thrown for [CEReactions] used on writable attribute. %s" % e) + threw = True + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] void foo(boolean arg2); + }; + """) + + results = parser.finish() + except Exception, e: + harness.ok(False, "Shouldn't have thrown for [CEReactions] used on regular operations. %s" % e) + threw = True + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] readonly attribute boolean A; + }; + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown for [CEReactions] used on a readonly attribute") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [CEReactions] + interface Foo { + } + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown for [CEReactions] used on a interface") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] getter any(DOMString name); + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, + "Should have thrown for [CEReactions] used on a named getter") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] creator boolean (DOMString name, boolean value); + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, + "Should have thrown for [CEReactions] used on a named creator") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] legacycaller double compute(double x); + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, + "Should have thrown for [CEReactions] used on a legacycaller") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] stringifier DOMString (); + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, + "Should have thrown for [CEReactions] used on a stringifier") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + interface Foo { + [CEReactions] jsonifier; + }; + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown for [CEReactions] used on a jsonifier") diff --git a/dom/bindings/parser/tests/test_constructor.py b/dom/bindings/parser/tests/test_constructor.py index 348204c7d..fb651c08d 100644 --- a/dom/bindings/parser/tests/test_constructor.py +++ b/dom/bindings/parser/tests/test_constructor.py @@ -13,7 +13,7 @@ def WebIDLTest(parser, harness): def checkMethod(method, QName, name, signatures, static=True, getter=False, setter=False, creator=False, deleter=False, legacycaller=False, stringifier=False, - chromeOnly=False): + chromeOnly=False, htmlConstructor=False): harness.ok(isinstance(method, WebIDL.IDLMethod), "Should be an IDLMethod") harness.ok(method.isMethod(), "Method is a method") @@ -29,6 +29,7 @@ def WebIDLTest(parser, harness): harness.check(method.isLegacycaller(), legacycaller, "Method has the correct legacycaller value") harness.check(method.isStringifier(), stringifier, "Method has the correct stringifier value") harness.check(method.getExtendedAttribute("ChromeOnly") is not None, chromeOnly, "Method has the correct value for ChromeOnly") + harness.check(method.isHTMLConstructor(), htmlConstructor, "Method has the correct htmlConstructor value") harness.check(len(method.signatures()), len(signatures), "Method has the correct number of signatures") sigpairs = zip(method.signatures(), signatures) @@ -80,6 +81,21 @@ def WebIDLTest(parser, harness): parser = parser.reset() parser.parse(""" + [HTMLConstructor] + interface TestHTMLConstructor { + }; + """) + results = parser.finish() + harness.check(len(results), 1, "Should be one production") + harness.ok(isinstance(results[0], WebIDL.IDLInterface), + "Should be an IDLInterface") + + checkMethod(results[0].ctor(), "::TestHTMLConstructor::constructor", + "constructor", [("TestHTMLConstructor (Wrapper)", [])], + htmlConstructor=True) + + parser = parser.reset() + parser.parse(""" [ChromeConstructor()] interface TestChromeConstructor { }; @@ -107,3 +123,151 @@ def WebIDLTest(parser, harness): threw = True harness.ok(threw, "Can't have both a Constructor and a ChromeConstructor") + + # Test HTMLConstructor with argument + parser = parser.reset() + threw = False + try: + parser.parse(""" + [HTMLConstructor(DOMString a)] + interface TestHTMLConstructorWithArgs { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "HTMLConstructor should take no argument") + + # Test HTMLConstructor on a callback interface + parser = parser.reset() + threw = False + try: + parser.parse(""" + [HTMLConstructor] + callback interface TestHTMLConstructorOnCallbackInterface { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "HTMLConstructor can't be used on a callback interface") + + # Test HTMLConstructor and Constructor + parser = parser.reset() + threw = False + try: + parser.parse(""" + [Constructor, + HTMLConstructor] + interface TestHTMLConstructorAndConstructor { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Can't have both a Constructor and a HTMLConstructor") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [HTMLConstructor, + Constructor] + interface TestHTMLConstructorAndConstructor { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Can't have both a HTMLConstructor and a Constructor") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [HTMLConstructor, + Constructor(DOMString a)] + interface TestHTMLConstructorAndConstructor { + }; + """) + except: + threw = True + + harness.ok(threw, "Can't have both a HTMLConstructor and a Constructor") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [Constructor(DOMString a), + HTMLConstructor] + interface TestHTMLConstructorAndConstructor { + }; + """) + except: + threw = True + + harness.ok(threw, "Can't have both a HTMLConstructor and a Constructor") + + # Test HTMLConstructor and ChromeConstructor + parser = parser.reset() + threw = False + try: + parser.parse(""" + [ChromeConstructor, + HTMLConstructor] + interface TestHTMLConstructorAndChromeConstructor { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Can't have both a HTMLConstructor and a ChromeConstructor") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [HTMLConstructor, + ChromeConstructor] + interface TestHTMLConstructorAndChromeConstructor { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Can't have both a HTMLConstructor and a ChromeConstructor") + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [ChromeConstructor(DOMString a), + HTMLConstructor] + interface TestHTMLConstructorAndChromeConstructor { + }; + """) + results = parser.finish() + except: + threw = True + + parser = parser.reset() + threw = False + try: + parser.parse(""" + [HTMLConstructor, + ChromeConstructor(DOMString a)] + interface TestHTMLConstructorAndChromeConstructor { + }; + """) + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Can't have both a HTMLConstructor and a ChromeConstructor")
\ No newline at end of file diff --git a/dom/bindings/parser/tests/test_constructor_no_interface_object.py b/dom/bindings/parser/tests/test_constructor_no_interface_object.py index 2b09ae71e..af7b73d67 100644 --- a/dom/bindings/parser/tests/test_constructor_no_interface_object.py +++ b/dom/bindings/parser/tests/test_constructor_no_interface_object.py @@ -34,3 +34,36 @@ def WebIDLTest(parser, harness): interface TestNamedConstructorNoInterfaceObject { }; """) + + # Test HTMLConstructor and NoInterfaceObject + parser = parser.reset() + + threw = False + try: + parser.parse(""" + [NoInterfaceObject, HTMLConstructor] + interface TestHTMLConstructorNoInterfaceObject { + }; + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown.") + + parser = parser.reset() + + threw = False + try: + parser.parse(""" + [HTMLConstructor, NoInterfaceObject] + interface TestHTMLConstructorNoInterfaceObject { + }; + """) + + results = parser.finish() + except: + threw = True + + harness.ok(threw, "Should have thrown.")
\ No newline at end of file diff --git a/dom/bindings/test/TestBindingHeader.h b/dom/bindings/test/TestBindingHeader.h index ca5aafdc5..7d9963700 100644 --- a/dom/bindings/test/TestBindingHeader.h +++ b/dom/bindings/test/TestBindingHeader.h @@ -939,6 +939,11 @@ public: void NeedsCallerTypeMethod(CallerType); bool NeedsCallerTypeAttr(CallerType); void SetNeedsCallerTypeAttr(bool, CallerType); + void CeReactionsMethod(); + void CeReactionsMethodOverload(); + void CeReactionsMethodOverload(const nsAString&); + bool CeReactionsAttr() const; + void SetCeReactionsAttr(bool); int16_t LegacyCall(const JS::Value&, uint32_t, TestInterface&); void PassArgsWithDefaults(JSContext*, const Optional<int32_t>&, TestInterface*, const Dict&, double, @@ -1425,6 +1430,31 @@ public: void SetNeedsCallerTypeAttr(bool, CallerType); }; +class TestHTMLConstructorInterface : public nsGenericHTMLElement +{ +public: + virtual nsISupports* GetParentObject(); +}; + +class TestCEReactionsInterface : public nsISupports, + public nsWrapperCache +{ +public: + NS_DECL_ISUPPORTS + + // We need a GetParentObject to make binding codegen happy + virtual nsISupports* GetParentObject(); + + int32_t Item(uint32_t); + uint32_t Length() const; + int32_t IndexedGetter(uint32_t, bool &); + void IndexedSetter(uint32_t, int32_t); + void NamedDeleter(const nsAString&, bool &); + void NamedGetter(const nsAString&, bool &, nsString&); + void NamedSetter(const nsAString&, const nsAString&); + void GetSupportedNames(nsTArray<nsString>&); +}; + } // namespace dom } // namespace mozilla diff --git a/dom/bindings/test/TestCodeGen.webidl b/dom/bindings/test/TestCodeGen.webidl index 4fb9be270..3fce5e21b 100644 --- a/dom/bindings/test/TestCodeGen.webidl +++ b/dom/bindings/test/TestCodeGen.webidl @@ -947,6 +947,10 @@ interface TestInterface { [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr; [NeedsCallerType] void needsCallerTypeMethod(); [NeedsCallerType] attribute boolean needsCallerTypeAttr; + [CEReactions] void ceReactionsMethod(); + [CEReactions] void ceReactionsMethodOverload(); + [CEReactions] void ceReactionsMethodOverload(DOMString bar); + [CEReactions] attribute boolean ceReactionsAttr; legacycaller short(unsigned long arg1, TestInterface arg2); void passArgsWithDefaults(optional long arg1, optional TestInterface? arg2 = null, @@ -1262,3 +1266,16 @@ interface TestWorkerExposedInterface { [NeedsCallerType] void needsCallerTypeMethod(); [NeedsCallerType] attribute boolean needsCallerTypeAttr; }; + +[HTMLConstructor] +interface TestHTMLConstructorInterface { +}; + +interface TestCEReactionsInterface { + [CEReactions] setter creator void (unsigned long index, long item); + [CEReactions] setter creator void (DOMString name, DOMString item); + [CEReactions] deleter void (DOMString name); + getter long item(unsigned long index); + getter DOMString (DOMString name); + readonly attribute unsigned long length; +}; diff --git a/dom/bindings/test/TestExampleGen.webidl b/dom/bindings/test/TestExampleGen.webidl index ea6387a84..a2183c002 100644 --- a/dom/bindings/test/TestExampleGen.webidl +++ b/dom/bindings/test/TestExampleGen.webidl @@ -777,6 +777,10 @@ interface TestExampleInterface { [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr; [NeedsCallerType] void needsCallerTypeMethod(); [NeedsCallerType] attribute boolean needsCallerTypeAttr; + [CEReactions] void ceReactionsMethod(); + [CEReactions] void ceReactionsMethodOverload(); + [CEReactions] void ceReactionsMethodOverload(DOMString bar); + [CEReactions] attribute boolean ceReactionsAttr; legacycaller short(unsigned long arg1, TestInterface arg2); void passArgsWithDefaults(optional long arg1, optional TestInterface? arg2 = null, diff --git a/dom/bindings/test/TestJSImplGen.webidl b/dom/bindings/test/TestJSImplGen.webidl index a131dcdfe..a133b9981 100644 --- a/dom/bindings/test/TestJSImplGen.webidl +++ b/dom/bindings/test/TestJSImplGen.webidl @@ -794,6 +794,10 @@ interface TestJSImplInterface { [Throws] attribute boolean throwingAttr; [GetterThrows] attribute boolean throwingGetterAttr; [SetterThrows] attribute boolean throwingSetterAttr; + [CEReactions] void ceReactionsMethod(); + [CEReactions] void ceReactionsMethodOverload(); + [CEReactions] void ceReactionsMethodOverload(DOMString bar); + [CEReactions] attribute boolean ceReactionsAttr; // NeedsSubjectPrincipal not supported on JS-implemented things for // now, because we always pass in the caller principal anyway. // [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod(); diff --git a/dom/bindings/test/test_bug560072.html b/dom/bindings/test/test_bug560072.html index 82bb1c2c6..0eebff116 100644 --- a/dom/bindings/test/test_bug560072.html +++ b/dom/bindings/test/test_bug560072.html @@ -20,11 +20,12 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=560072 /** Test for Bug 560072 **/ is(document.body, - Object.getOwnPropertyDescriptor(HTMLDocument.prototype, "body").get.call(document), + Object.getOwnPropertyDescriptor(Document.prototype, "body").get.call(document), "Should get body out of property descriptor"); is(document.body, - Object.getOwnPropertyDescriptor(Object.getPrototypeOf(document), "body").get.call(document), + Object.getOwnPropertyDescriptor( + Object.getPrototypeOf(Object.getPrototypeOf(document)), "body").get.call(document), "Should get body out of property descriptor this way too"); </script> diff --git a/dom/canvas/WebGLContextValidate.cpp b/dom/canvas/WebGLContextValidate.cpp index ebf0aa8c2..30d4c6522 100644 --- a/dom/canvas/WebGLContextValidate.cpp +++ b/dom/canvas/WebGLContextValidate.cpp @@ -440,6 +440,13 @@ WebGLContext::InitAndValidateGL(FailureReason* const out_failReason) { MOZ_RELEASE_ASSERT(gl, "GFX: GL not initialized"); + if (!gl->MakeCurrent(true)) { + MOZ_ASSERT(false); + *out_failReason = { "FEATURE_FAILURE_WEBGL_MAKECURRENT", + "Failed to MakeCurrent for init." }; + return false; + } + // Unconditionally create a new format usage authority. This is // important when restoring contexts and extensions need to add // formats back into the authority. diff --git a/dom/events/EventListenerManager.cpp b/dom/events/EventListenerManager.cpp index 0774c3296..2add7d009 100644 --- a/dom/events/EventListenerManager.cpp +++ b/dom/events/EventListenerManager.cpp @@ -1087,7 +1087,10 @@ EventListenerManager::HandleEventSubType(Listener* aListener, if (NS_SUCCEEDED(result)) { if (mIsMainThreadELM) { - nsContentUtils::EnterMicroTask(); + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->EnterMicroTask(); + } } // nsIDOMEvent::currentTarget is set in EventDispatcher. if (listenerHolder.HasWebIDLCallback()) { @@ -1099,7 +1102,10 @@ EventListenerManager::HandleEventSubType(Listener* aListener, result = listenerHolder.GetXPCOMCallback()->HandleEvent(aDOMEvent); } if (mIsMainThreadELM) { - nsContentUtils::LeaveMicroTask(); + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->LeaveMicroTask(); + } } } diff --git a/dom/flyweb/FlyWebDiscoveryManager.cpp b/dom/flyweb/FlyWebDiscoveryManager.cpp index 5a97eb6d8..14ad5aa1f 100644 --- a/dom/flyweb/FlyWebDiscoveryManager.cpp +++ b/dom/flyweb/FlyWebDiscoveryManager.cpp @@ -16,6 +16,7 @@ #include "mozilla/dom/FlyWebDiscoveryManager.h" #include "mozilla/dom/FlyWebDiscoveryManagerBinding.h" +#include "mozilla/dom/Element.h" namespace mozilla { namespace dom { diff --git a/dom/html/HTMLDetailsElement.cpp b/dom/html/HTMLDetailsElement.cpp index ed20b50ca..8619b1450 100644 --- a/dom/html/HTMLDetailsElement.cpp +++ b/dom/html/HTMLDetailsElement.cpp @@ -6,39 +6,11 @@ #include "mozilla/dom/HTMLDetailsElement.h" #include "mozilla/dom/HTMLDetailsElementBinding.h" -#include "mozilla/dom/HTMLUnknownElement.h" -#include "mozilla/Preferences.h" - -// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Details) to add pref check. -nsGenericHTMLElement* -NS_NewHTMLDetailsElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, - mozilla::dom::FromParser aFromParser) -{ - if (!mozilla::dom::HTMLDetailsElement::IsDetailsEnabled()) { - return new mozilla::dom::HTMLUnknownElement(aNodeInfo); - } - - return new mozilla::dom::HTMLDetailsElement(aNodeInfo); -} +NS_IMPL_NS_NEW_HTML_ELEMENT(Details) namespace mozilla { namespace dom { -/* static */ bool -HTMLDetailsElement::IsDetailsEnabled() -{ - static bool isDetailsEnabled = false; - static bool added = false; - - if (!added) { - Preferences::AddBoolVarCache(&isDetailsEnabled, - "dom.details_element.enabled"); - added = true; - } - - return isDetailsEnabled; -} - HTMLDetailsElement::~HTMLDetailsElement() { } diff --git a/dom/html/HTMLDetailsElement.h b/dom/html/HTMLDetailsElement.h index 5a3af27b4..6adf567bf 100644 --- a/dom/html/HTMLDetailsElement.h +++ b/dom/html/HTMLDetailsElement.h @@ -23,8 +23,6 @@ class HTMLDetailsElement final : public nsGenericHTMLElement public: using NodeInfo = mozilla::dom::NodeInfo; - static bool IsDetailsEnabled(); - explicit HTMLDetailsElement(already_AddRefed<NodeInfo>& aNodeInfo) : nsGenericHTMLElement(aNodeInfo) { diff --git a/dom/html/HTMLElement.cpp b/dom/html/HTMLElement.cpp index b2f23b931..d3901bdf3 100644 --- a/dom/html/HTMLElement.cpp +++ b/dom/html/HTMLElement.cpp @@ -52,3 +52,12 @@ NS_NewHTMLElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, { return new mozilla::dom::HTMLElement(aNodeInfo); } + +// Distinct from the above in order to have function pointer that compared unequal +// to a function pointer to the above. +nsGenericHTMLElement* +NS_NewCustomElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, + mozilla::dom::FromParser aFromParser) +{ + return new mozilla::dom::HTMLElement(aNodeInfo); +} diff --git a/dom/html/HTMLSummaryElement.cpp b/dom/html/HTMLSummaryElement.cpp index ee3c07b20..42ead6b87 100644 --- a/dom/html/HTMLSummaryElement.cpp +++ b/dom/html/HTMLSummaryElement.cpp @@ -14,17 +14,7 @@ #include "mozilla/TextEvents.h" #include "nsFocusManager.h" -// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Summary) to add pref check. -nsGenericHTMLElement* -NS_NewHTMLSummaryElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, - mozilla::dom::FromParser aFromParser) -{ - if (!mozilla::dom::HTMLDetailsElement::IsDetailsEnabled()) { - return new mozilla::dom::HTMLUnknownElement(aNodeInfo); - } - - return new mozilla::dom::HTMLSummaryElement(aNodeInfo); -} +NS_IMPL_NS_NEW_HTML_ELEMENT(Summary) namespace mozilla { namespace dom { diff --git a/dom/html/nsGenericHTMLElement.cpp b/dom/html/nsGenericHTMLElement.cpp index 0c8bcc9c8..78e4d5b95 100644 --- a/dom/html/nsGenericHTMLElement.cpp +++ b/dom/html/nsGenericHTMLElement.cpp @@ -497,7 +497,7 @@ nsGenericHTMLElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent, // We need to consider a labels element is moved to another subtree // with different root, it needs to update labels list and its root // as well. - nsDOMSlots* slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots && slots->mLabelsList) { slots->mLabelsList->MaybeResetRoot(SubtreeRoot()); } @@ -524,7 +524,7 @@ nsGenericHTMLElement::UnbindFromTree(bool aDeep, bool aNullParent) // We need to consider a labels element is removed from tree, // it needs to update labels list and its root as well. - nsDOMSlots* slots = GetExistingDOMSlots(); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots && slots->mLabelsList) { slots->mLabelsList->MaybeResetRoot(SubtreeRoot()); } @@ -1730,7 +1730,7 @@ nsGenericHTMLElement::Labels() { MOZ_ASSERT(IsLabelable(), "Labels() only allow labelable elements to use it."); - nsDOMSlots* slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); if (!slots->mLabelsList) { slots->mLabelsList = new nsLabelsNodeList(SubtreeRoot(), MatchLabelsElement, diff --git a/dom/html/nsGenericHTMLElement.h b/dom/html/nsGenericHTMLElement.h index acbebe087..2b8b608b9 100644 --- a/dom/html/nsGenericHTMLElement.h +++ b/dom/html/nsGenericHTMLElement.h @@ -1588,6 +1588,15 @@ protected: NS_INTERFACE_MAP_ENTRY_CONDITIONAL(_interface, \ mNodeInfo->Equals(nsGkAtoms::_tag)) +namespace mozilla { +namespace dom { + +typedef nsGenericHTMLElement* (*HTMLContentCreatorFunction)( + already_AddRefed<mozilla::dom::NodeInfo>&&, + mozilla::dom::FromParser aFromParser); + +} // namespace dom +} // namespace mozilla /** * A macro to declare the NS_NewHTMLXXXElement() functions. @@ -1636,6 +1645,13 @@ nsGenericHTMLElement* NS_NewHTMLElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER); +// Distinct from the above in order to have function pointer that compared unequal +// to a function pointer to the above. +nsGenericHTMLElement* +NS_NewCustomElement( + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, + mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER); + NS_DECLARE_NS_NEW_HTML_ELEMENT(Shared) NS_DECLARE_NS_NEW_HTML_ELEMENT(SharedList) NS_DECLARE_NS_NEW_HTML_ELEMENT(SharedObject) diff --git a/dom/html/nsHTMLContentSink.cpp b/dom/html/nsHTMLContentSink.cpp index 3e8e019b8..1fe5d2a86 100644 --- a/dom/html/nsHTMLContentSink.cpp +++ b/dom/html/nsHTMLContentSink.cpp @@ -84,10 +84,6 @@ using namespace mozilla::dom; //---------------------------------------------------------------------- -typedef nsGenericHTMLElement* - (*contentCreatorCallback)(already_AddRefed<mozilla::dom::NodeInfo>&&, - FromParser aFromParser); - nsGenericHTMLElement* NS_NewHTMLNOTUSEDElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, FromParser aFromParser) @@ -96,14 +92,12 @@ NS_NewHTMLNOTUSEDElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, return nullptr; } -#define HTML_TAG(_tag, _classname) NS_NewHTML##_classname##Element, -#define HTML_HTMLELEMENT_TAG(_tag) NS_NewHTMLElement, +#define HTML_TAG(_tag, _classname, _interfacename) NS_NewHTML##_classname##Element, #define HTML_OTHER(_tag) NS_NewHTMLNOTUSEDElement, -static const contentCreatorCallback sContentCreatorCallbacks[] = { +static const HTMLContentCreatorFunction sHTMLContentCreatorFunctions[] = { NS_NewHTMLUnknownElement, #include "nsHTMLTagList.h" #undef HTML_TAG -#undef HTML_HTMLELEMENT_TAG #undef HTML_OTHER NS_NewHTMLUnknownElement }; @@ -234,9 +228,35 @@ public: int32_t mStackPos; }; +static void +DoCustomElementCreate(Element** aElement, nsIDocument* aDoc, nsIAtom* aLocalName, + CustomElementConstructor* aConstructor, ErrorResult& aRv) +{ + RefPtr<Element> element = + aConstructor->Construct("Custom Element Create", aRv); + if (aRv.Failed()) { + return; + } + + if (!element || !element->IsHTMLElement()) { + aRv.ThrowTypeError<MSG_THIS_DOES_NOT_IMPLEMENT_INTERFACE>(NS_LITERAL_STRING("HTMLElement")); + return; + } + + if (aDoc != element->OwnerDoc() || element->GetParentNode() || + element->HasChildren() || element->GetAttrCount() || + element->NodeInfo()->NameAtom() != aLocalName) { + aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); + return; + } + + element.forget(aElement); +} + nsresult NS_NewHTMLElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, - FromParser aFromParser, const nsAString* aIs) + FromParser aFromParser, const nsAString* aIs, + mozilla::dom::CustomElementDefinition* aDefinition) { *aResult = nullptr; @@ -247,16 +267,109 @@ NS_NewHTMLElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& return NS_ERROR_OUT_OF_MEMORY; nsIAtom *name = nodeInfo->NameAtom(); + RefPtr<nsIAtom> tagAtom = nodeInfo->NameAtom(); + RefPtr<nsIAtom> typeAtom = aIs ? NS_Atomize(*aIs) : tagAtom; NS_ASSERTION(nodeInfo->NamespaceEquals(kNameSpaceID_XHTML), "Trying to HTML elements that don't have the XHTML namespace"); int32_t tag = parserService->HTMLCaseSensitiveAtomTagToId(name); - // Per the Custom Element specification, unknown tags that are valid custom - // element names should be HTMLElement instead of HTMLUnknownElement. bool isCustomElementName = (tag == eHTMLTag_userdefined && nsContentUtils::IsCustomElementName(name)); + bool isCustomElement = isCustomElementName || aIs; + MOZ_ASSERT_IF(aDefinition, isCustomElement); + + // https://dom.spec.whatwg.org/#concept-create-element + // We only handle the "synchronous custom elements flag is set" now. + // For the unset case (e.g. cloning a node), see bug 1319342 for that. + // Step 4. + CustomElementDefinition* definition = aDefinition; + if (CustomElementRegistry::IsCustomElementEnabled() && isCustomElement && + !definition) { + MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName())); + definition = + nsContentUtils::LookupCustomElementDefinition(nodeInfo->GetDocument(), + nodeInfo->NameAtom(), + nodeInfo->NamespaceID(), + typeAtom); + } + + // It might be a problem that parser synchronously calls constructor, so filed + // bug 1378079 to figure out what we should do for parser case. + if (definition) { + /* + * Synchronous custom elements flag is determined by 3 places in spec, + * 1) create an element for a token, the flag is determined by + * "will execute script" which is not originally created + * for the HTML fragment parsing algorithm. + * 2) createElement and createElementNS, the flag is the same as + * NOT_FROM_PARSER. + * 3) clone a node, our implementation will not go into this function. + * For the unset case which is non-synchronous only applied for + * inner/outerHTML. + */ + bool synchronousCustomElements = aFromParser != dom::FROM_PARSER_FRAGMENT || + aFromParser == dom::NOT_FROM_PARSER; + // Per discussion in https://github.com/w3c/webcomponents/issues/635, + // use entry global in those places that are called from JS APIs and use the + // node document's global object if it is called from parser. + nsIGlobalObject* global; + if (aFromParser == dom::NOT_FROM_PARSER) { + global = GetEntryGlobal(); + } else { + global = nodeInfo->GetDocument()->GetScopeObject(); + } + if (!global) { + // In browser chrome code, one may have access to a document which doesn't + // have scope object anymore. + return NS_ERROR_FAILURE; + } + + AutoEntryScript aes(global, "create custom elements"); + JSContext* cx = aes.cx(); + ErrorResult rv; + + // Step 5. + if (definition->IsCustomBuiltIn()) { + // SetupCustomElement() should be called with an element that don't have + // CustomElementData setup, if not we will hit the assertion in + // SetCustomElementData(). + // Built-in element + *aResult = CreateHTMLElement(tag, nodeInfo.forget(), aFromParser).take(); + (*aResult)->SetCustomElementData(new CustomElementData(typeAtom)); + if (synchronousCustomElements) { + CustomElementRegistry::Upgrade(*aResult, definition, rv); + if (rv.MaybeSetPendingException(cx)) { + aes.ReportException(); + } + } else { + nsContentUtils::EnqueueUpgradeReaction(*aResult, definition); + } + + return NS_OK; + } + + // Step 6.1. + if (synchronousCustomElements) { + DoCustomElementCreate(aResult, nodeInfo->GetDocument(), + nodeInfo->NameAtom(), + definition->mConstructor, rv); + if (rv.MaybeSetPendingException(cx)) { + NS_IF_ADDREF(*aResult = NS_NewHTMLUnknownElement(nodeInfo.forget(), aFromParser)); + } + return NS_OK; + } + + // Step 6.2. + NS_IF_ADDREF(*aResult = NS_NewHTMLElement(nodeInfo.forget(), aFromParser)); + (*aResult)->SetCustomElementData(new CustomElementData(definition->mType)); + nsContentUtils::EnqueueUpgradeReaction(*aResult, definition); + return NS_OK; + } + + // Per the Custom Element specification, unknown tags that are valid custom + // element names should be HTMLElement instead of HTMLUnknownElement. if (isCustomElementName) { NS_IF_ADDREF(*aResult = NS_NewHTMLElement(nodeInfo.forget(), aFromParser)); } else { @@ -267,8 +380,8 @@ NS_NewHTMLElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& return NS_ERROR_OUT_OF_MEMORY; } - if (isCustomElementName || aIs) { - nsContentUtils::SetupCustomElement(*aResult, aIs); + if (CustomElementRegistry::IsCustomElementEnabled() && isCustomElement) { + (*aResult)->SetCustomElementData(new CustomElementData(typeAtom)); } return NS_OK; @@ -283,7 +396,7 @@ CreateHTMLElement(uint32_t aNodeType, aNodeType == eHTMLTag_userdefined, "aNodeType is out of bounds"); - contentCreatorCallback cb = sContentCreatorCallbacks[aNodeType]; + HTMLContentCreatorFunction cb = sHTMLContentCreatorFunctions[aNodeType]; NS_ASSERTION(cb != NS_NewHTMLNOTUSEDElement, "Don't know how to construct tag element!"); diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp index 0f2d90673..f530d75e1 100644 --- a/dom/html/nsHTMLDocument.cpp +++ b/dom/html/nsHTMLDocument.cpp @@ -1013,26 +1013,6 @@ nsHTMLDocument::SetDomain(const nsAString& aDomain, ErrorResult& rv) rv = NodePrincipal()->SetDomain(newURI); } -nsGenericHTMLElement* -nsHTMLDocument::GetBody() -{ - Element* html = GetHtmlElement(); - if (!html) { - return nullptr; - } - - for (nsIContent* child = html->GetFirstChild(); - child; - child = child->GetNextSibling()) { - if (child->IsHTMLElement(nsGkAtoms::body) || - child->IsHTMLElement(nsGkAtoms::frameset)) { - return static_cast<nsGenericHTMLElement*>(child); - } - } - - return nullptr; -} - NS_IMETHODIMP nsHTMLDocument::GetBody(nsIDOMHTMLElement** aBody) { @@ -1054,31 +1034,6 @@ nsHTMLDocument::SetBody(nsIDOMHTMLElement* aBody) return rv.StealNSResult(); } -void -nsHTMLDocument::SetBody(nsGenericHTMLElement* newBody, ErrorResult& rv) -{ - nsCOMPtr<Element> root = GetRootElement(); - - // The body element must be either a body tag or a frameset tag. And we must - // have a html root tag, otherwise GetBody will not return the newly set - // body. - if (!newBody || - !newBody->IsAnyOfHTMLElements(nsGkAtoms::body, nsGkAtoms::frameset) || - !root || !root->IsHTMLElement() || - !root->IsHTMLElement(nsGkAtoms::html)) { - rv.Throw(NS_ERROR_DOM_HIERARCHY_REQUEST_ERR); - return; - } - - // Use DOM methods so that we pass through the appropriate security checks. - nsCOMPtr<Element> currentBody = GetBodyElement(); - if (currentBody) { - root->ReplaceChild(*newBody, *currentBody, rv); - } else { - root->AppendChild(*newBody, rv); - } -} - NS_IMETHODIMP nsHTMLDocument::GetHead(nsIDOMHTMLHeadElement** aHead) { @@ -1446,6 +1401,11 @@ nsHTMLDocument::Open(JSContext* cx, return nullptr; } + if (ShouldThrowOnDynamicMarkupInsertion()) { + aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); + return nullptr; + } + // Set up the content type for insertion nsAutoCString contentType; contentType.AssignLiteral("text/html"); @@ -1653,6 +1613,11 @@ nsHTMLDocument::Close(ErrorResult& rv) return; } + if (ShouldThrowOnDynamicMarkupInsertion()) { + rv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); + return; + } + if (!mParser || !mParser->IsScriptCreated()) { return; } @@ -1728,6 +1693,10 @@ nsHTMLDocument::WriteCommon(JSContext *cx, return NS_ERROR_DOM_INVALID_STATE_ERR; } + if (ShouldThrowOnDynamicMarkupInsertion()) { + return NS_ERROR_DOM_INVALID_STATE_ERR; + } + if (mParserAborted) { // Hixie says aborting the parser doesn't undefine the insertion point. // However, since we null out mParser in that case, we track the diff --git a/dom/html/nsHTMLDocument.h b/dom/html/nsHTMLDocument.h index 1fa81f6cd..c9e46b3fa 100644 --- a/dom/html/nsHTMLDocument.h +++ b/dom/html/nsHTMLDocument.h @@ -175,8 +175,8 @@ public: JS::MutableHandle<JSObject*> aRetval, mozilla::ErrorResult& rv); void GetSupportedNames(nsTArray<nsString>& aNames); - nsGenericHTMLElement *GetBody(); - void SetBody(nsGenericHTMLElement* aBody, mozilla::ErrorResult& rv); + using nsIDocument::GetBody; + using nsIDocument::SetBody; mozilla::dom::HTMLSharedElement *GetHead() { return static_cast<mozilla::dom::HTMLSharedElement*>(GetHeadElement()); } diff --git a/dom/html/test/file_iframe_sandbox_c_if4.html b/dom/html/test/file_iframe_sandbox_c_if4.html index 53bf49559..828592d63 100644 --- a/dom/html/test/file_iframe_sandbox_c_if4.html +++ b/dom/html/test/file_iframe_sandbox_c_if4.html @@ -12,7 +12,7 @@ } function doStuff() { - // try to open a new window via target="_blank", target="BC341604", window.open(), and showModalDialog() + // try to open a new window via target="_blank", target="BC341604", and window.open() // the window we try to open closes itself once it opens sendMouseEvent({type:'click'}, 'target_blank'); sendMouseEvent({type:'click'}, 'target_BC341604'); @@ -25,15 +25,6 @@ } ok(threw, "window.open threw a JS exception and was not allowed"); - - threw = false; - try { - window.showModalDialog("about:blank"); - } catch(error) { - threw = true; - } - - ok(threw, "window.showModalDialog threw a JS exception and was not allowed"); } </script> <body onLoad="doStuff()"> diff --git a/dom/html/test/file_iframe_sandbox_j_if1.html b/dom/html/test/file_iframe_sandbox_j_if1.html deleted file mode 100644 index 6d4347dfc..000000000 --- a/dom/html/test/file_iframe_sandbox_j_if1.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <meta charset="utf-8"> - <title>Test for Bug 766282</title> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> - -<script type="text/javascript"> - function doStuff() { - // Open a new window via showModalDialog(). - try { - window.showModalDialog("file_iframe_sandbox_k_if5.html"); - } catch(e) { - window.parent.ok_wrapper(false, "iframes sandboxed with allow-popups and allow-modals should be able to open a modal dialog"); - } - - // Open a new window via showModalDialog(). - try { - window.showModalDialog("file_iframe_sandbox_k_if7.html"); - } catch(e) { - window.parent.ok_wrapper(false, "iframes sandboxed with allow-popups and allow-modals should be able to open a modal dialog"); - } - } -</script> - -<body onLoad="doStuff()"> - I am sandboxed with "allow-scripts allow-popups allow-same-origin allow-forms allow-top-navigation". -</body> -</html> diff --git a/dom/html/test/file_iframe_sandbox_j_if2.html b/dom/html/test/file_iframe_sandbox_j_if2.html deleted file mode 100644 index 9552307ee..000000000 --- a/dom/html/test/file_iframe_sandbox_j_if2.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <meta charset="utf-8"> - <title>Test for Bug 766282</title> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> - -<script type="text/javascript"> - function doSubOpens() { - // Open a new window showModalDialog(). - try { - window.showModalDialog("file_iframe_sandbox_k_if9.html"); - } catch(e) { - window.parent.ok_wrapper(false, "iframes sandboxed with allow-popups and allow-modals should be able to open a modal dialog"); - } - } - - window.doSubOpens = doSubOpens; -</script> - -<body> - I am sandboxed but with "allow-scripts allow-popups allow-same-origin". - After my initial load, "allow-same-origin" is removed and then I open file_iframe_sandbox_k_if9.html, - which attemps to call a function in my parent. - This should succeed since the new sandbox flags shouldn't have taken affect on me until I'm reloaded. -</body> -</html> diff --git a/dom/html/test/file_iframe_sandbox_j_if3.html b/dom/html/test/file_iframe_sandbox_j_if3.html deleted file mode 100644 index 07c5b66c1..000000000 --- a/dom/html/test/file_iframe_sandbox_j_if3.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <meta charset="utf-8"> - <title>Tests for Bug 766282</title> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> - -</head> -<script type="text/javascript"> - function ok(result, desc) { - window.parent.ok_wrapper(result, desc); - } - - function doStuff() { - // Try to open a new window via showModalDialog(). - // The window we try to open closes itself once it opens. - try { - window.showModalDialog("file_iframe_sandbox_open_window_pass.html"); - } catch(e) { - ok(false, "iframes sandboxed with allow-popups and allow-modals should be able to open a modal dialog"); - } - } -</script> -<body onLoad="doStuff()"> - I am sandboxed but with "allow-popups allow-scripts allow-same-origin" -</body> -</html> diff --git a/dom/html/test/mochitest.ini b/dom/html/test/mochitest.ini index 024de1cd9..4a50a9c3f 100644 --- a/dom/html/test/mochitest.ini +++ b/dom/html/test/mochitest.ini @@ -154,9 +154,6 @@ support-files = file_iframe_sandbox_form_pass.html file_iframe_sandbox_g_if1.html file_iframe_sandbox_h_if1.html - file_iframe_sandbox_j_if1.html - file_iframe_sandbox_j_if2.html - file_iframe_sandbox_j_if3.html file_iframe_sandbox_k_if1.html file_iframe_sandbox_k_if2.html file_iframe_sandbox_k_if3.html @@ -471,9 +468,6 @@ skip-if = toolkit == 'android' # just copy the conditions from the test above tags = openwindow [test_iframe_sandbox_inheritance.html] tags = openwindow -[test_iframe_sandbox_modal.html] -tags = openwindow -skip-if = toolkit == 'android' || e10s #modal tests fail on android [test_iframe_sandbox_navigation.html] tags = openwindow [test_iframe_sandbox_navigation2.html] @@ -540,8 +534,6 @@ skip-if = toolkit == 'android' #bug 811644 [test_bug369370.html] skip-if = toolkit == "android" || toolkit == "windows" # disabled on Windows because of bug 1234520 [test_bug380383.html] -[test_bug391777.html] -skip-if = toolkit == 'android' || e10s [test_bug402680.html] [test_bug403868.html] [test_bug403868.xhtml] @@ -607,4 +599,4 @@ skip-if = os == "android" # up/down arrow keys not supported on android [test_script_module.html] support-files = file_script_module.html - file_script_nomodule.html
\ No newline at end of file + file_script_nomodule.html diff --git a/dom/html/test/test_bug391777.html b/dom/html/test/test_bug391777.html deleted file mode 100644 index aa01a45de..000000000 --- a/dom/html/test/test_bug391777.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=391777 ---> -<head> - <title>Test for Bug 391777</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=391777">Mozilla Bug 391777</a> -<p id="display"></p> -<script class="testbody" type="text/javascript"> - -/** Test for Bug 391777 **/ -var arg = {}; -arg.testVal = "foo"; -var result = window.showModalDialog("javascript:window.returnValue = window.dialogArguments.testVal; window.close(); 'This window should close on its own.';", arg); -ok(true, "We should get here without user interaction"); -is(result, "foo", "Unexpected result from showModalDialog"); - -</script> -</body> -</html> diff --git a/dom/html/test/test_iframe_sandbox_general.html b/dom/html/test/test_iframe_sandbox_general.html index 6d3a190ee..83f0e9045 100644 --- a/dom/html/test/test_iframe_sandbox_general.html +++ b/dom/html/test/test_iframe_sandbox_general.html @@ -41,7 +41,7 @@ function ok_wrapper(result, desc) { passedTests++; } - if (completedTests == 33) { + if (completedTests == 32) { is(passedTests, completedTests, "There are " + completedTests + " general tests that should pass"); SimpleTest.finish(); } diff --git a/dom/html/test/test_iframe_sandbox_modal.html b/dom/html/test/test_iframe_sandbox_modal.html deleted file mode 100644 index 1307ea9a5..000000000 --- a/dom/html/test/test_iframe_sandbox_modal.html +++ /dev/null @@ -1,122 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=766282 -implement allow-popups directive for iframe sandbox ---> -<head> - <meta charset="utf-8"> - <title>Tests for Bug 766282</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> - -<script> - -SimpleTest.waitForExplicitFinish(); -SimpleTest.requestFlakyTimeout("untriaged"); - -// A postMessage handler that is used by sandboxed iframes without -// 'allow-same-origin' to communicate pass/fail back to this main page. -window.addEventListener("message", receiveMessage, false); - -function receiveMessage(event) { - switch (event.data.type) { - case "attempted": - testAttempted(); - break; - case "ok": - ok_wrapper(event.data.ok, event.data.desc, event.data.addToAttempted); - break; - default: - // allow for old style message - if (event.data.ok != undefined) { - ok_wrapper(event.data.ok, event.data.desc, event.data.addToAttempted); - } - } -} - -var attemptedTests = 0; -var passedTests = 0; -var totalTestsToPass = 5; -var totalTestsToAttempt = 5; - -function ok_wrapper(result, desc, addToAttempted = true) { - ok(result, desc); - - if (result) { - passedTests++; - } - - if (addToAttempted) { - testAttempted(); - } -} - -// Added so that tests that don't register unless they fail, -// can at least notify that they've attempted to run. -function testAttempted() { - attemptedTests++; - if (attemptedTests == totalTestsToAttempt) { - // Make sure all tests have had a chance to complete. - setTimeout(function() {finish();}, 1000); - } -} - -var finishCalled = false; - -function finish() { - if (!finishCalled) { - finishCalled = true; - is(passedTests, totalTestsToPass, "There are " + totalTestsToPass + " modal tests that should pass"); - - SimpleTest.finish(); - } -} - -function doTest() { - // passes if good and fails if bad - // 1) A window opened from inside an iframe that has sandbox = "allow-scripts allow-popups - // allow-same-origin" should not have its origin sandbox flag set and be able to access - // document.cookie. (Done by file_iframe_sandbox_k_if5.html opened from - // file_iframe_sandbox_j_if1.html) using showModalDialog.) - - // passes if good - // 2) A window opened from inside an iframe that has sandbox = "allow-scripts allow-popups - // allow-top-navigation" should not have its top-level navigation sandbox flag set and be able to - // navigate top. (Done by file_iframe_sandbox_k_if5.html (and if6) opened from - // file_iframe_sandbox_j_if1.html) using showModalDialog.) - - // passes if good - // 3) A window opened from inside an iframe that has sandbox = "allow-scripts allow-popups - // all-forms" should not have its forms sandbox flag set and be able to submit forms. - // (Done by file_iframe_sandbox_k_if7.html opened from - // file_iframe_sandbox_j_if1.html) using showModalDialog.) - - // passes if good - // 4) Make sure that the sandbox flags copied to a new browsing context are taken from the - // current active document not the browsing context (iframe / docShell). - // This is done by removing allow-same-origin and calling doSubOpens from file_iframe_sandbox_j_if2.html, - // which opens file_iframe_sandbox_k_if9.html using showModalDialog. - var if_2 = document.getElementById('if_2'); - if_2.sandbox = 'allow-scripts allow-popups'; - if_2.contentWindow.doSubOpens(); - - // passes if good - // 5) Test that a sandboxed iframe with "allow-popups" can open a new window using window.ShowModalDialog. - // This is done via file_iframe_sandbox_j_if3.html which is sandboxed with "allow-popups allow-scripts - // allow-same-origin". The window it attempts to open calls window.opener.ok(true, ...) and - // file_iframe_j_if3.html has an ok() function that calls window.parent.ok_wrapper. -} - -addLoadEvent(doTest); -</script> - -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=766282">Mozilla Bug 766282</a> - implement allow-popups directive for iframe sandbox -<p id="display"></p> -<div id="content"> -<iframe sandbox="allow-scripts allow-popups allow-modals allow-same-origin allow-forms allow-top-navigation" id="if_1" src="file_iframe_sandbox_j_if1.html" height="10" width="10"></iframe> -<iframe sandbox="allow-scripts allow-popups allow-modals allow-same-origin" id="if_2" src="file_iframe_sandbox_j_if2.html" height="10" width="10"></iframe> -<iframe sandbox="allow-popups allow-modals allow-same-origin allow-scripts" id="if_3" src="file_iframe_sandbox_j_if3.html" height="10" width="10"></iframe> -</div> diff --git a/dom/jsurl/nsJSProtocolHandler.cpp b/dom/jsurl/nsJSProtocolHandler.cpp index 90171db10..df1e6cbf5 100644 --- a/dom/jsurl/nsJSProtocolHandler.cpp +++ b/dom/jsurl/nsJSProtocolHandler.cpp @@ -46,6 +46,7 @@ #include "nsIWritablePropertyBag2.h" #include "nsIContentSecurityPolicy.h" #include "nsSandboxFlags.h" +#include "mozilla/CycleCollectedJSContext.h" #include "mozilla/dom/ScriptSettings.h" #include "nsILoadInfo.h" #include "nsContentSecurityManager.h" @@ -241,7 +242,7 @@ nsresult nsJSThunk::EvaluateScript(nsIChannel *aChannel, // New script entry point required, due to the "Create a script" step of // http://www.whatwg.org/specs/web-apps/current-work/#javascript-protocol - nsAutoMicroTask mt; + mozilla::nsAutoMicroTask mt; AutoEntryScript aes(innerGlobal, "javascript: URI", true); JSContext* cx = aes.cx(); JS::Rooted<JSObject*> globalJSObject(cx, innerGlobal->GetGlobalJSObject()); diff --git a/dom/locales/en-US/chrome/dom/dom.properties b/dom/locales/en-US/chrome/dom/dom.properties index 0472979d7..6bd3aac94 100644 --- a/dom/locales/en-US/chrome/dom/dom.properties +++ b/dom/locales/en-US/chrome/dom/dom.properties @@ -174,8 +174,6 @@ UseOfCaptureEventsWarning=Use of captureEvents() is deprecated. To upgrade your UseOfReleaseEventsWarning=Use of releaseEvents() is deprecated. To upgrade your code, use the DOM 2 removeEventListener() method. For more help http://developer.mozilla.org/en/docs/DOM:element.removeEventListener # LOCALIZATION NOTE: Do not translate "document.load()" or "XMLHttpRequest" UseOfDOM3LoadMethodWarning=Use of document.load() is deprecated. To upgrade your code, use the DOM XMLHttpRequest object. For more help https://developer.mozilla.org/en/XMLHttpRequest -# LOCALIZATION NOTE: Do not translate "window.showModalDialog()" or "window.open()" -ShowModalDialogWarning=Use of window.showModalDialog() is deprecated. Use window.open() instead. For more help https://developer.mozilla.org/en-US/docs/Web/API/Window.open # LOCALIZATION NOTE: Do not translate "window._content" or "window.content" Window_ContentWarning=window._content is deprecated. Please use window.content instead. # LOCALIZATION NOTE: Do not translate "XMLHttpRequest" diff --git a/dom/media/webspeech/recognition/test/test_nested_eventloop.html b/dom/media/webspeech/recognition/test/test_nested_eventloop.html index bdbed6524..8b4cea6d7 100644 --- a/dom/media/webspeech/recognition/test/test_nested_eventloop.html +++ b/dom/media/webspeech/recognition/test/test_nested_eventloop.html @@ -21,7 +21,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=650295 SimpleTest.waitForExplicitFinish(); /* - * window.showModalDialog() can be used to spin the event loop, causing + * SpecialPowers.spinEventLoop can be used to spin the event loop, causing * queued SpeechEvents (such as those created by calls to start(), stop() * or abort()) to be processed immediately. * When this is done from inside DOM event handlers, it is possible to @@ -33,7 +33,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=650295 } function doneFunc() { // Trigger gc now and wait some time to make sure this test gets the blame - // for any assertions caused by showModalDialog + // for any assertions caused by spinning the event loop. // // NB - The assertions should be gone, but this looks too scary to touch // during batch cleanup. diff --git a/dom/svg/SVGElementFactory.cpp b/dom/svg/SVGElementFactory.cpp index abbb0a865..d3e922ee5 100644 --- a/dom/svg/SVGElementFactory.cpp +++ b/dom/svg/SVGElementFactory.cpp @@ -15,31 +15,28 @@ using namespace mozilla; using namespace mozilla::dom; // Hash table that maps nsIAtom* SVG tags to an offset index -// within the array sContentCreatorCallbacks (offset by TABLE_VALUE_OFFSET) +// within the array sSVGContentCreatorFunctions (offset by TABLE_VALUE_OFFSET) static PLHashTable* sTagAtomTable = nullptr; // We don't want to store 0 in the hash table as a return value of 0 from // PL_HashTableLookupConst indicates that the value is not found #define TABLE_VALUE_OFFSET 1 -#define SVG_TAG(_tag, _classname) \ -nsresult \ -NS_NewSVG##_classname##Element(nsIContent** aResult, \ - already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); \ -\ -static inline nsresult \ -Create##_classname##Element(nsIContent** aResult, \ - already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \ - FromParser aFromParser) \ -{ \ - return NS_NewSVG##_classname##Element(aResult, mozilla::Move(aNodeInfo)); \ -} +#define SVG_TAG(_tag, _classname) \ + nsresult NS_NewSVG##_classname##Element( \ + nsIContent** aResult, \ + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); \ + \ + nsresult NS_NewSVG##_classname##Element( \ + nsIContent** aResult, \ + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \ + FromParser aFromParser) \ + { \ + return NS_NewSVG##_classname##Element(aResult, mozilla::Move(aNodeInfo)); \ + } + +#define SVG_FROM_PARSER_TAG(_tag, _classname) -#define SVG_FROM_PARSER_TAG(_tag, _classname) \ -nsresult \ -NS_NewSVG##_classname##Element(nsIContent** aResult, \ - already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \ - FromParser aFromParser); #include "SVGTagList.h" #undef SVG_TAG #undef SVG_FROM_PARSER_TAG @@ -48,13 +45,8 @@ nsresult NS_NewSVGElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); -typedef nsresult - (*contentCreatorCallback)(nsIContent** aResult, - already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, - FromParser aFromParser); - -static const contentCreatorCallback sContentCreatorCallbacks[] = { -#define SVG_TAG(_tag, _classname) Create##_classname##Element, +static const SVGContentCreatorFunction sSVGContentCreatorFunctions[] = { +#define SVG_TAG(_tag, _classname) NS_NewSVG##_classname##Element, #define SVG_FROM_PARSER_TAG(_tag, _classname) NS_NewSVG##_classname##Element, #include "SVGTagList.h" #undef SVG_TAG @@ -124,7 +116,7 @@ NS_NewSVGElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& a MOZ_CRASH(); } - contentCreatorCallback cb = sContentCreatorCallbacks[index]; + SVGContentCreatorFunction cb = sSVGContentCreatorFunctions[index]; nsCOMPtr<nsIContent> content; nsresult rv = cb(getter_AddRefs(content), ni.forget(), aFromParser); @@ -135,3 +127,15 @@ NS_NewSVGElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& a // if we don't know what to create, just create a standard svg element: return NS_NewSVGElement(aResult, ni.forget()); } + +nsresult +NS_NewSVGUnknownElement(nsIContent** aResult, + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, + FromParser aFromParser) +{ + RefPtr<mozilla::dom::NodeInfo> ni = aNodeInfo; + nsCOMPtr<Element> element; + nsresult rv = NS_NewSVGElement(getter_AddRefs(element), ni.forget()); + element.forget(aResult); + return rv; +} diff --git a/dom/svg/SVGElementFactory.h b/dom/svg/SVGElementFactory.h index 3a75ef750..6d6fa1ca9 100644 --- a/dom/svg/SVGElementFactory.h +++ b/dom/svg/SVGElementFactory.h @@ -18,7 +18,32 @@ public: static void Shutdown(); }; +typedef nsresult (*SVGContentCreatorFunction)( + nsIContent** aResult, + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, + mozilla::dom::FromParser aFromParser); + } // namespace dom } // namespace mozilla +#define SVG_TAG(_tag, _classname) \ + nsresult NS_NewSVG##_classname##Element( \ + nsIContent** aResult, \ + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \ + mozilla::dom::FromParser aFromParser); + +#define SVG_FROM_PARSER_TAG(_tag, _classname) \ + nsresult NS_NewSVG##_classname##Element( \ + nsIContent** aResult, \ + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \ + mozilla::dom::FromParser aFromParser); +#include "SVGTagList.h" +#undef SVG_TAG +#undef SVG_FROM_PARSER_TAG + +nsresult +NS_NewSVGUnknownElement(nsIContent** aResult, + already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, + mozilla::dom::FromParser aFromParser); + #endif /* mozilla_dom_SVGElementFactory_h */ diff --git a/dom/svg/SVGTagList.h b/dom/svg/SVGTagList.h index 219cafc43..6fb5c0bef 100644 --- a/dom/svg/SVGTagList.h +++ b/dom/svg/SVGTagList.h @@ -9,7 +9,14 @@ This file contains the list of all SVG tags. It is designed to be used as inline input to SVGElementFactory.cpp - *only* through the magic of C preprocessing. + through the magic of C preprocessing. + + Additionally, it is consumed by the self-regeneration code in + ElementName.java from which nsHtml5ElementName.cpp/h is translated. + See parser/html/java/README.txt. + + If you edit this list, you need to re-run ElementName.java + self-regeneration and the HTML parser Java to C++ translation. All entries must be enclosed in the macro SVG_TAG or SVG_FROM_PARSER_TAG which will have cruel and unusual things done to them. diff --git a/dom/svg/moz.build b/dom/svg/moz.build index 298a7293d..08cf1d78d 100644 --- a/dom/svg/moz.build +++ b/dom/svg/moz.build @@ -14,6 +14,7 @@ EXPORTS += [ 'SVGContentUtils.h', 'SVGPreserveAspectRatio.h', 'SVGStringList.h', + 'SVGTagList.h', ] EXPORTS.mozilla.dom += [ @@ -39,6 +40,7 @@ EXPORTS.mozilla.dom += [ 'SVGDefsElement.h', 'SVGDescElement.h', 'SVGDocument.h', + 'SVGElementFactory.h', 'SVGEllipseElement.h', 'SVGFEBlendElement.h', 'SVGFEColorMatrixElement.h', diff --git a/dom/tests/mochitest/bugs/file_bug291653.html b/dom/tests/mochitest/bugs/file_bug291653.html deleted file mode 100644 index 4bfc8337e..000000000 --- a/dom/tests/mochitest/bugs/file_bug291653.html +++ /dev/null @@ -1,28 +0,0 @@ -<html> - <head> - <script> - <!-- - function listener1() { - window.showModalDialog("data:text/html,<script>var maintest = opener.opener; opener.location = 'data:text/html,test'; maintest.end(); window.close();</script>"); - } - - function listener2() { - opener.secondListenerDidRun = true; - } - - window.addEventListener("foo", listener1); - window.addEventListener("foo", listener2); - - - function fireFoo() { - var e = document.createEvent("Events"); - e.initEvent("foo", true, true); - window.dispatchEvent(e); - } - //--> - </script> - </head> - <body onload="setTimeout(fireFoo, 0)"> - Test for bug 291653 - </body> -</html> diff --git a/dom/tests/mochitest/bugs/file_bug504862.html b/dom/tests/mochitest/bugs/file_bug504862.html deleted file mode 100644 index dc11ced6f..000000000 --- a/dom/tests/mochitest/bugs/file_bug504862.html +++ /dev/null @@ -1,22 +0,0 @@ -<html> -<body> -<script> -window.returnValue = 3; - -if (location.toString().match(/^http:\/\/mochi.test:8888/)) { - // Test that we got the right arguments. - opener.is(window.dialogArguments, "my args", - "dialog did not get the right arguments."); - - // Load a different url, and test that it sees the arguments (since it's same origin). - window.location="data:text/html,<html><body onload=\"opener.is(window.dialogArguments, 'my args', 'subsequent dialog document did not get the right arguments.'); close();\">';"; -} else { - // Post a message containing our arguments to the opener to test - // that this cross origing dialog does *not* see the passed in - // arguments. - opener.postMessage("args: " + window.dialogArguments, - "http://mochi.test:8888"); - - close(); -} -</script> diff --git a/dom/tests/mochitest/bugs/mochitest.ini b/dom/tests/mochitest/bugs/mochitest.ini index 309aab6e0..3743c6782 100644 --- a/dom/tests/mochitest/bugs/mochitest.ini +++ b/dom/tests/mochitest/bugs/mochitest.ini @@ -10,9 +10,6 @@ support-files = child_bug260264.html devicemotion_inner.html devicemotion_outer.html - file_bug291653.html - file_bug406375.html - file_bug504862.html file_bug593174_1.html file_bug593174_2.html file_bug809290_b1.html @@ -45,7 +42,6 @@ skip-if = toolkit == 'android' [test_bug260264_nested.html] [test_bug265203.html] [test_bug291377.html] -[test_bug291653.html] skip-if = toolkit == 'android' #TIMED_OUT [test_bug304459.html] [test_bug308856.html] @@ -67,28 +63,21 @@ skip-if = toolkit == 'android' #TIMED_OUT [test_bug396843.html] [test_bug400204.html] [test_bug404748.html] -[test_bug406375.html] -skip-if = toolkit == 'android' -[test_bug414291.html] -tags = openwindow [test_bug427744.html] skip-if = toolkit == 'android' [test_bug42976.html] [test_bug430276.html] -[test_bug437361.html] skip-if = toolkit == 'android' [test_bug440572.html] [test_bug456151.html] [test_bug458091.html] [test_bug459848.html] [test_bug465263.html] -[test_bug479143.html] skip-if = toolkit == 'android' [test_bug484775.html] [test_bug492925.html] [test_bug49312.html] [test_bug495219.html] -[test_bug504862.html] skip-if = toolkit == 'android' #RANDOM [test_bug529328.html] [test_bug531176.html] @@ -126,7 +115,6 @@ skip-if = toolkit == 'android' [test_bug698061.html] [test_bug698551.html] [test_bug707749.html] -[test_bug735237.html] [test_bug739038.html] [test_bug740811.html] [test_bug743615.html] diff --git a/dom/tests/mochitest/bugs/test_bug291653.html b/dom/tests/mochitest/bugs/test_bug291653.html deleted file mode 100644 index 1543cdd96..000000000 --- a/dom/tests/mochitest/bugs/test_bug291653.html +++ /dev/null @@ -1,56 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=291653 ---> -<head> - <title>Test for Bug 291653</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=291653">Mozilla Bug 291653</a> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -<script type="application/javascript"> - -/** Test for Bug 291653 **/ -SimpleTest.waitForExplicitFinish(); -SimpleTest.requestFlakyTimeout("untriaged"); - -var secondListenerDidRun = false; - -var w; -function start() { - if ("showModalDialog" in window) { - w = window.open("file_bug291653.html", "foo", "width=300,height=300"); - } else { - // window.showModalDialog doesn't exist in e10s mode, nothing to do in this test. - ok(true, "nothing to do in e10s mode"); - SimpleTest.finish(); - } -} - -function closeTest() { - w.setTimeout("close()", 0); - setTimeout("finish()", 500); -} - -function finish() { - ok(!secondListenerDidRun, "Shouldn't have run second listener!"); - SimpleTest.finish(); -} - -function end() { - setTimeout("closeTest()", 500); -} - -start(); - -</script> -</pre> -</body> -</html> diff --git a/dom/tests/mochitest/bugs/test_bug406375.html b/dom/tests/mochitest/bugs/test_bug406375.html deleted file mode 100644 index 2cd459ffa..000000000 --- a/dom/tests/mochitest/bugs/test_bug406375.html +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=406375 ---> -<head> - <title>Test for Bug 406375</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> -<body onload="runTest()"> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=406375">Mozilla Bug 406375</a> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -<script type="application/javascript"> - -/** Test for Bug 406375 **/ - - -SimpleTest.waitForExplicitFinish(); - -function runTest() { - if ("showModalDialog" in window) { - window.showModalDialog("file_bug406375.html"); - } - ok(true, "This test should not hang"); - - SimpleTest.finish(); -} - -</script> -</pre> -</body> -</html> diff --git a/dom/tests/mochitest/bugs/test_bug414291.html b/dom/tests/mochitest/bugs/test_bug414291.html index 883e52bb4..0ee5cb393 100644 --- a/dom/tests/mochitest/bugs/test_bug414291.html +++ b/dom/tests/mochitest/bugs/test_bug414291.html @@ -16,7 +16,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=414291 var result1 = 0; var result2 = 0; -var result3 = 0; window.open("data:text/html,<html><body onload='close(); opener.result1 = 1;'>", "w1"); is(result1, 0, "window should not be opened either as modal or loaded synchronously."); @@ -24,11 +23,6 @@ is(result1, 0, "window should not be opened either as modal or loaded synchronou window.open("data:text/html,<html><body onload='close(); opener.result2 = 2;'>", "w2", "modal=yes"); is(result2, 0, "window should not be opened either as modal or data loaded synchronously."); -if (window.showModalDialog) { - result3 = window.showModalDialog("data:text/html,<html><body onload='close(); returnValue = 3;'>"); - is(result3, 3, "window should be opened as modal."); -} - </script> </pre> </body> diff --git a/dom/tests/mochitest/bugs/test_bug437361.html b/dom/tests/mochitest/bugs/test_bug437361.html deleted file mode 100644 index ecc2cb08d..000000000 --- a/dom/tests/mochitest/bugs/test_bug437361.html +++ /dev/null @@ -1,72 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=437361 ---> -<head> - <title>Test for Bug 437361</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> - - <script class="testbody" type="text/javascript"> - - /** Test for Bug 437361 **/ - - function testModalDialogBlockedCleanly() { - is(true, SpecialPowers.getBoolPref("dom.disable_open_during_load"), "mozprefs sanity check"); - var rv = window.showModalDialog( // should be blocked without exception - "data:text/html,<html><body onload='close(); returnValue = 1;' /></html>"); - is(rv, null, "Modal dialog opened unexpectedly."); - } - - function testModalDialogAllowed() { - is(false, SpecialPowers.getBoolPref("dom.disable_open_during_load"), "mozprefs sanity check"); - var rv = window.showModalDialog( // should not be blocked this time - "data:text/html,<html><body onload='close(); returnValue = 1;' /></html>"); - is(rv, 1, "Problem with modal dialog returnValue."); - } - - function testOtherExceptionsNotTrapped() { - is(false, SpecialPowers.getBoolPref("dom.disable_open_during_load"), "mozprefs sanity check"); - window.showModalDialog('about:config'); // forbidden by SecurityCheckURL - } - - function test(disableOpen, exceptionExpected, testFn, errorMsg) { - if ("showModalDialog" in window) { - var oldPrefVal = SpecialPowers.getBoolPref("dom.disable_open_during_load"); - try { - SpecialPowers.setBoolPref("dom.disable_open_during_load", disableOpen); - testFn(); - ok(!exceptionExpected, errorMsg); - } catch (_) { - ok(exceptionExpected, errorMsg); - } - finally { - SpecialPowers.setBoolPref("dom.disable_open_during_load", oldPrefVal); - } - } else { - ok(true, "nothing to do in e10s mode"); - } - } - - test(true, false, testModalDialogBlockedCleanly, - "Blocked showModalDialog caused an exception."); - - test(false, false, testModalDialogAllowed, - "showModalDialog was blocked even though dom.disable_open_during_load was false."); - - test(false, true, testOtherExceptionsNotTrapped, - "Incorrectly suppressed insecure showModalDialog exception."); - - </script> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=437361">Mozilla Bug 437361</a> -<p id="display"></p> -<div id="content" style="display: none"> -</div> -<pre id="test"> -</pre> -</body> -</html> - diff --git a/dom/tests/mochitest/bugs/test_bug479143.html b/dom/tests/mochitest/bugs/test_bug479143.html deleted file mode 100644 index 03db4ddea..000000000 --- a/dom/tests/mochitest/bugs/test_bug479143.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=479143 ---> -<head> - <title>Test for Bug 411103</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=479143">Mozilla Bug 479143</a> -<p id="display"></p> -<div id="content" style="display: none"></div> - -<pre id="test"> -<script class="testbody" type="text/javascript"> - - SimpleTest.waitForExplicitFinish(); - - setTimeout(function() { - if ("showModalDialog" in window) { - var interval = setInterval(function() { var i = 0; i++; }, 10); - - var xhr = new XMLHttpRequest(); - xhr.open("GET", "test_bug479143.html", false); - xhr.send(null); - - window.showModalDialog("javascript:" + - "setTimeout(function() { window.close(); }, 1000);", - null); - - clearInterval(interval); - } - - ok(true, "did not crash"); - - SimpleTest.finish(); - }, 0); - -</script> -</pre> -</body> -</html> diff --git a/dom/tests/mochitest/bugs/test_bug504862.html b/dom/tests/mochitest/bugs/test_bug504862.html deleted file mode 100644 index 713165bc3..000000000 --- a/dom/tests/mochitest/bugs/test_bug504862.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=504862 ---> -<head> - <title>Test for Bug 504862</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body onload="runTest()"> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=504862">Mozilla Bug 504862</a> -<script class="testbody" type="text/javascript"> - -/** Test for Bug 504862 **/ -SimpleTest.waitForExplicitFinish(); -function onMsgRcv(event) -{ - is(event.data, "args: undefined", "Unexpected cross origin dialog arguments."); -} - -function runTest() { - if ("showModalDialog" in window) { - window.addEventListener("message", onMsgRcv, false); - - var result = window.showModalDialog("file_bug504862.html", "my args"); - // NB: We used to clear returnValue on each navigation, but now we do a - // security check on access, so we can safely make returnValue live on - // the browsing context, per spec. - is(result, 3, "window sees previous dialog documents return value."); - - result = window.showModalDialog("http://test1.example.com/tests/dom/tests/mochitest/bugs/file_bug504862.html", "my args"); - - is(result, undefined, "Able to see return value from cross origin dialog."); - } else { - ok(true, "nothing to do in e10s mode"); - } - - SimpleTest.finish(); -} - -</script> -</pre> -</body> -</html> diff --git a/dom/tests/mochitest/bugs/test_bug61098.html b/dom/tests/mochitest/bugs/test_bug61098.html index 4c6ce967d..ed16e099b 100644 --- a/dom/tests/mochitest/bugs/test_bug61098.html +++ b/dom/tests/mochitest/bugs/test_bug61098.html @@ -306,28 +306,6 @@ function runtestsInner() w.close(); - // Test that showModalDialog() works normally and then gets blocked - // on the second call. - if (window.showModalDialog) { - w = window.open(); - w.showModalDialog("data:text/html,%3Cscript>window.close();%3C/script>") - is (promptState, void(0), "Wrong prompt state"); - - try { - w.showModalDialog("data:text/html,%3Cscript>window.close();%3C/script>") - ok(false, "showModalDialog call should throw an exception"); - } catch(e) { - is(e.name, "NS_ERROR_NOT_AVAILABLE", "Wrong exception"); - } - is (promptState.method, "confirm", "Wrong prompt method called"); - is (promptState.parent, w, "Wrong confirm parent"); - is (promptState.msg, "Prevent this page from creating additional dialogs", - "Wrong confirm message"); - promptState = void(0); - - w.close(); - } - mockPromptFactoryRegisterer.unregister(); mockPromptServiceRegisterer.unregister(); diff --git a/dom/tests/mochitest/bugs/test_bug735237.html b/dom/tests/mochitest/bugs/test_bug735237.html deleted file mode 100644 index e1a25a425..000000000 --- a/dom/tests/mochitest/bugs/test_bug735237.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=735237 ---> -<head> - <title>Test for Bug 735237</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=735237">Mozilla Bug 735237</a> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -<script class="testbody" type="text/javascript"> - -/** Test for Bug 735237 **/ - -SimpleTest.waitForExplicitFinish(); - -SpecialPowers.pushPrefEnv({"set": [["dom.disable_window_showModalDialog", true]]}, function() { - var caughtException = false; - try { - window.showModalDialog("http://example.com/"); - } catch (e) { - caughtException = true; - } - ok(caughtException, "showModalDialog should throw an exception"); - SimpleTest.finish(); -}); - -</script> -</pre> -</body> -</html> diff --git a/dom/tests/mochitest/general/file_showModalDialog.html b/dom/tests/mochitest/general/file_showModalDialog.html deleted file mode 100644 index 1cae0b1c0..000000000 --- a/dom/tests/mochitest/general/file_showModalDialog.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<script> - function go() { - is(SpecialPowers.wrap(window).location.toString(), location.toString(), "sanity"); - ok("returnValue" in window && "dialogArguments" in window, "We are modal"); - var iwin = document.getElementById('ifr').contentWindow; - is(SpecialPowers.Cu.getClassName(iwin, /* aUnwrap = */ true), "Window", "Descendant frames should not be modal"); - - if (location.origin != "http://mochi.test:8888") { - is(window.dialogArguments, undefined, - "dialogArguments should be undefined cross-origin: " + location.origin); - } - - window.returnValue = "rv: " + window.dialogArguments; - - // Allow for testing navigations in series. - if (location.search == "") { - window.close(); - } else { - var origins = location.search.split('?')[1].split(','); - var newsearch = '?' + origins.splice(1).join(','); - var newurl = location.toString().replace(location.origin, origins[0]) - .replace(location.search, newsearch); - location = newurl; - } - - } -</script> -</head> -<body onload="opener.postMessage('dosetup', '*');"> -<iframe id="ifr"></iframe> -</body> -</html> diff --git a/dom/tests/mochitest/general/mochitest.ini b/dom/tests/mochitest/general/mochitest.ini index d00ea1d4b..9f2fad785 100755 --- a/dom/tests/mochitest/general/mochitest.ini +++ b/dom/tests/mochitest/general/mochitest.ini @@ -9,7 +9,6 @@ support-files = file_interfaces.xml file_moving_nodeList.html file_moving_xhr.html - file_showModalDialog.html historyframes.html image_50.png image_100.png @@ -116,8 +115,6 @@ support-files = test_offsets.js [test_resource_timing_frameset.html] [test_selectevents.html] skip-if = toolkit == 'android' # bug 1230232 - Mouse doesn't select in the same way -[test_showModalDialog.html] -skip-if = e10s || toolkit == 'android' #Don't run modal tests on Android [test_showModalDialog_e10s.html] run-if = e10s [test_storagePermissionsAccept.html] diff --git a/dom/tests/mochitest/general/test_showModalDialog.html b/dom/tests/mochitest/general/test_showModalDialog.html deleted file mode 100644 index 511c79e63..000000000 --- a/dom/tests/mochitest/general/test_showModalDialog.html +++ /dev/null @@ -1,60 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=862918 ---> -<head> - <meta charset="utf-8"> - <title>Test for Bug 862918</title> - <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> - <script type="application/javascript"> - - /** Test for window.showModalDialog. **/ - - // The modal window needs to touch Cu, which means that it needs - // SpecialPowers. But given the semantics of modal windows, we have to - // do some funny stuff with postMessage to set this up. - window.onmessage = function(evt) { - is(evt.data, 'dosetup', "message from modal window is correct"); - var win = SpecialPowers.wrap(evt.source); - win.wrappedJSObject.SpecialPowers = SpecialPowers; - SpecialPowers.setWrapped(win.wrappedJSObject, 'is', SpecialPowers.wrap(is)); - SpecialPowers.setWrapped(win.wrappedJSObject, 'ok', SpecialPowers.wrap(ok)); - win.wrappedJSObject.go(); - }; - - var someObj = { foo: 42, bar: "hi"}; - var xurl = location.toString() - .replace('mochi.test:8888', 'example.org') - .replace('test_showModal', 'file_showModal'); - if (xurl.indexOf('?') != -1) - xurl = xurl.substring(0, xurl.indexOf('?')); - is(showModalDialog('file_showModalDialog.html'), "rv: undefined"); - is(showModalDialog(xurl), undefined); - is(showModalDialog('file_showModalDialog.html', 3), "rv: 3"); - is(showModalDialog(xurl, 3), undefined); - is(showModalDialog('file_showModalDialog.html', someObj), "rv: " + someObj); - is(showModalDialog(xurl, someObj), undefined); - - // Test sequential navigations. - is(showModalDialog('file_showModalDialog.html?http://mochi.test:8888', 4), - 'rv: 4'); - is(showModalDialog('file_showModalDialog.html?http://example.com', 4), undefined); - is(showModalDialog('file_showModalDialog.html?http://example.com,http://mochi.test:8888', 4), 'rv: 4'); - - // This test used to assert after gc. Make sure it doesn't. - SpecialPowers.gc(); - - </script> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=862918">Mozilla Bug 862918</a> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -</pre> -</body> -</html> diff --git a/dom/tests/mochitest/webcomponents/chrome.ini b/dom/tests/mochitest/webcomponents/chrome.ini new file mode 100644 index 000000000..5e25c2123 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/chrome.ini @@ -0,0 +1,9 @@ +[DEFAULT] +support-files = + dummy_page.html + +[test_custom_element_htmlconstructor_chrome.html] +skip-if = os == 'android' # bug 1323645 +support-files = + htmlconstructor_autonomous_tests.js + htmlconstructor_builtin_tests.js diff --git a/dom/tests/mochitest/webcomponents/dummy_page.html b/dom/tests/mochitest/webcomponents/dummy_page.html new file mode 100644 index 000000000..fd238954c --- /dev/null +++ b/dom/tests/mochitest/webcomponents/dummy_page.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<title>Dummy test page</title> +<meta charset="utf-8"/> +</head> +<body> +<p>Dummy test page</p> +</body> +</html> diff --git a/dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js b/dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js new file mode 100644 index 000000000..636d9aff6 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js @@ -0,0 +1,81 @@ +promises.push(test_with_new_window((testWindow) => { + // Test calling the HTMLElement constructor. + (() => { + SimpleTest.doesThrow(() => { + testWindow.HTMLElement(); + }, 'calling the HTMLElement constructor should throw a TypeError'); + })(); + + // Test constructing a HTMLELement. + (() => { + SimpleTest.doesThrow(() => { + new testWindow.HTMLElement(); + }, 'constructing a HTMLElement should throw a TypeError'); + })(); + + // Test constructing a custom element with defining HTMLElement as entry. + (() => { + testWindow.customElements.define('x-defining-html-element', + testWindow.HTMLElement); + SimpleTest.doesThrow(() => { + new testWindow.HTMLElement(); + }, 'constructing a custom element with defining HTMLElement as registry ' + + 'entry should throw a TypeError'); + })(); + + // Test calling a custom element constructor and constructing an autonomous + // custom element. + (() => { + let num_constructor_invocations = 0; + class X extends testWindow.HTMLElement { + constructor() { + super(); + num_constructor_invocations++; + } + } + testWindow.customElements.define('x-element', X); + SimpleTest.doesThrow(() => { + X(); + }, 'calling an autonomous custom element constructor should throw a TypeError'); + + let element = new X(); + SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(element)), X.prototype, + 'constructing an autonomous custom element; ' + + 'the element should be a registered constructor'); + SimpleTest.is(element.localName, 'x-element', + 'constructing an autonomous custom element; ' + + 'the element tag name should be "x-element"'); + SimpleTest.is(element.namespaceURI, 'http://www.w3.org/1999/xhtml', + 'constructing an autonomous custom element; ' + + 'the element should be in the HTML namespace'); + SimpleTest.is(element.prefix, null, + 'constructing an autonomous custom element; ' + + 'the element name should not have a prefix'); + SimpleTest.is(element.ownerDocument, testWindow.document, + 'constructing an autonomous custom element; ' + + 'the element should be owned by the registry\'s associated ' + + 'document'); + SimpleTest.is(num_constructor_invocations, 1, + 'constructing an autonomous custom element; ' + + 'the constructor should have been invoked once'); + })(); + + // Test if prototype is no an object. + (() => { + function ElementWithNonObjectPrototype() { + let o = Reflect.construct(testWindow.HTMLElement, [], new.target); + SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(o)), window.HTMLElement.prototype, + 'constructing an autonomous custom element; ' + + 'if prototype is not object, fallback from NewTarget\'s realm'); + } + + // Prototype have to be an object during define(), otherwise define will + // throw an TypeError exception. + ElementWithNonObjectPrototype.prototype = {}; + testWindow.customElements.define('x-non-object-prototype', + ElementWithNonObjectPrototype); + + ElementWithNonObjectPrototype.prototype = "string"; + new ElementWithNonObjectPrototype(); + })(); +})); diff --git a/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js b/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js new file mode 100644 index 000000000..dd6515148 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js @@ -0,0 +1,247 @@ +[ + // [TagName, InterfaceName] + ['a', 'Anchor'], + ['abbr', ''], + ['acronym', ''], + ['address', ''], + ['area', 'Area'], + ['article', ''], + ['aside', ''], + ['audio', 'Audio'], + ['b', ''], + ['base', 'Base'], + ['basefont', ''], + ['bdo', ''], + ['big', ''], + ['blockquote', 'Quote'], + ['body', 'Body'], + ['br', 'BR'], + ['button', 'Button'], + ['canvas', 'Canvas'], + ['caption', 'TableCaption'], + ['center', ''], + ['cite', ''], + ['code', ''], + ['col', 'TableCol'], + ['colgroup', 'TableCol'], + ['data', 'Data'], + ['datalist', 'DataList'], + ['dd', ''], + ['del', 'Mod'], + ['details', 'Details'], + ['dfn', ''], + ['dir', 'Directory'], + ['div', 'Div'], + ['dl', 'DList'], + ['dt', ''], + ['em', ''], + ['embed', 'Embed'], + ['fieldset', 'FieldSet'], + ['figcaption', ''], + ['figure', ''], + ['font', 'Font'], + ['footer', ''], + ['form', 'Form'], + ['frame', 'Frame'], + ['frameset', 'FrameSet'], + ['h1', 'Heading'], + ['h2', 'Heading'], + ['h3', 'Heading'], + ['h4', 'Heading'], + ['h5', 'Heading'], + ['h6', 'Heading'], + ['head', 'Head'], + ['header', ''], + ['hgroup', ''], + ['hr', 'HR'], + ['html', 'Html'], + ['i', ''], + ['iframe', 'IFrame'], + ['image', ''], + ['img', 'Image'], + ['input', 'Input'], + ['ins', 'Mod'], + ['kbd', ''], + ['label', 'Label'], + ['legend', 'Legend'], + ['li', 'LI'], + ['link', 'Link'], + ['listing', 'Pre'], + ['main', ''], + ['map', 'Map'], + ['mark', ''], + ['marquee', 'Div'], + ['menu', 'Menu'], + ['menuitem', 'MenuItem'], + ['meta', 'Meta'], + ['meter', 'Meter'], + ['nav', ''], + ['nobr', ''], + ['noembed', ''], + ['noframes', ''], + ['noscript', ''], + ['object', 'Object'], + ['ol', 'OList'], + ['optgroup', 'OptGroup'], + ['option', 'Option'], + ['output', 'Output'], + ['p', 'Paragraph'], + ['param', 'Param'], + ['picture', 'Picture'], + ['plaintext', ''], + ['pre', 'Pre'], + ['progress', 'Progress'], + ['q', 'Quote'], + ['rb', ''], + ['rp', ''], + ['rt', ''], + ['rtc', ''], + ['ruby', ''], + ['s', ''], + ['samp', ''], + ['script', 'Script'], + ['section', ''], + ['select', 'Select'], + ['small', ''], + ['source', 'Source'], + ['span', 'Span'], + ['strike', ''], + ['strong', ''], + ['style', 'Style'], + ['sub', ''], + ['summary', ''], + ['sup', ''], + ['table', 'Table'], + ['tbody', 'TableSection'], + ['td', 'TableCell'], + ['textarea', 'TextArea'], + ['tfoot', 'TableSection'], + ['th', 'TableCell'], + ['thead', 'TableSection'], + ['template', 'Template'], + ['time', 'Time'], + ['title', 'Title'], + ['tr', 'TableRow'], + ['track', 'Track'], + ['tt', ''], + ['u', ''], + ['ul', 'UList'], + ['var', ''], + ['video', 'Video'], + ['wbr', ''], + ['xmp', 'Pre'], +].forEach((e) => { + let tagName = e[0]; + let interfaceName = 'HTML' + e[1] + 'Element'; + promises.push(test_with_new_window((testWindow) => { + // Use window from iframe to isolate the test. + // Test calling the HTML*Element constructor. + (() => { + SimpleTest.doesThrow(() => { + testWindow[interfaceName](); + }, 'calling the ' + interfaceName + ' constructor should throw a TypeError'); + })(); + + // Test constructing a HTML*ELement. + (() => { + SimpleTest.doesThrow(() => { + new testWindow[interfaceName](); + }, 'constructing a ' + interfaceName + ' should throw a TypeError'); + })(); + + // Test constructing a custom element with defining HTML*Element as entry. + (() => { + testWindow.customElements.define('x-defining-' + tagName, + testWindow[interfaceName]); + SimpleTest.doesThrow(() => { + new testWindow[interfaceName](); + }, 'constructing a custom element with defining ' + interfaceName + + ' as registry entry should throw a TypeError'); + })(); + + // Since HTMLElement can be registered without specifying "extends", skip + // testing HTMLElement tags. + if (interfaceName !== "HTMLElement") { + // Test constructing a customized HTML*Element with defining a registry entry + // without specifying "extends". + (() => { + class X extends testWindow[interfaceName] {} + testWindow.customElements.define('x-defining-invalid-' + tagName, X); + SimpleTest.doesThrow(() => { + new X(); + }, 'constructing a customized ' + interfaceName + ' with defining a ' + + 'registry entry without specifying "extends" should throw a TypeError'); + })(); + } + + // Test constructing a built-in custom element with defining a registry entry + // with incorrect "extends" information. + (() => { + class X extends testWindow[interfaceName] {} + testWindow.customElements.define('x-defining-incorrect-' + tagName, X, + { extends: tagName === 'img' ? 'p' : 'img' }); + SimpleTest.doesThrow(() => { + new X(); + }, 'constructing a customized ' + interfaceName + ' with defining a ' + + 'registry entry with incorrect "extends" should throw a TypeError'); + })(); + + // Test calling a custom element constructor and constructing a built-in + // custom element. + (() => { + let num_constructor_invocations = 0; + class X extends testWindow[interfaceName] { + constructor() { + super(); + num_constructor_invocations++; + } + } + testWindow.customElements.define('x-' + tagName, X, { extends: tagName }); + SimpleTest.doesThrow(() => { + X(); + }, 'calling a customized ' + interfaceName + ' constructor should throw a TypeError'); + + let element = new X(); + + SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(element)), X.prototype, + 'constructing a customized ' + interfaceName + + '; the element should be a registered constructor'); + SimpleTest.is(element.localName, tagName, + 'constructing a customized ' + interfaceName + + '; the element tag name should be "' + tagName + '"'); + SimpleTest.is(element.namespaceURI, 'http://www.w3.org/1999/xhtml', + 'constructing a customized ' + interfaceName + + '; the element should be in the HTML namespace'); + SimpleTest.is(element.prefix, null, + 'constructing a customized ' + interfaceName + + '; the element name should not have a prefix'); + SimpleTest.is(element.ownerDocument, testWindow.document, + 'constructing a customized ' + interfaceName + + '; the element should be owned by the registry\'s associated ' + + 'document'); + SimpleTest.is(num_constructor_invocations, 1, + 'constructing a customized ' + interfaceName + + '; the constructor should have been invoked once'); + })(); + + // Test if prototype is no an object. + (() => { + function ElementWithNonObjectPrototype() { + let o = Reflect.construct(testWindow[interfaceName], [], new.target); + SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(o)), window[interfaceName].prototype, + 'constructing a customized ' + interfaceName + + '; if prototype is not object, fallback from NewTarget\'s realm'); + } + + // Prototype have to be an object during define(), otherwise define will + // throw an TypeError exception. + ElementWithNonObjectPrototype.prototype = {}; + testWindow.customElements.define('x-non-object-prototype-' + tagName, + ElementWithNonObjectPrototype, + { extends: tagName }); + + ElementWithNonObjectPrototype.prototype = "string"; + new ElementWithNonObjectPrototype(); + })(); + })); +}); diff --git a/dom/tests/mochitest/webcomponents/mochitest.ini b/dom/tests/mochitest/webcomponents/mochitest.ini index 496f7ea4d..f5d0f84ea 100644 --- a/dom/tests/mochitest/webcomponents/mochitest.ini +++ b/dom/tests/mochitest/webcomponents/mochitest.ini @@ -1,21 +1,28 @@ [DEFAULT] support-files = inert_style.css + dummy_page.html [test_bug900724.html] [test_bug1017896.html] [test_bug1176757.html] [test_bug1276240.html] [test_content_element.html] -[test_custom_element_adopt_callbacks.html] [test_custom_element_callback_innerhtml.html] -[test_custom_element_clone_callbacks.html] -[test_custom_element_clone_callbacks_extended.html] -[test_custom_element_import_node_created_callback.html] +skip-if = true # disabled - See bug 1390396 +[test_custom_element_htmlconstructor.html] +skip-if = os == 'android' # bug 1323645 +support-files = + htmlconstructor_autonomous_tests.js + htmlconstructor_builtin_tests.js [test_custom_element_in_shadow.html] +skip-if = true || stylo # disabled - See bug 1390396 and 1293844 [test_custom_element_register_invalid_callbacks.html] +[test_custom_element_throw_on_dynamic_markup_insertion.html] [test_custom_element_get.html] [test_custom_element_when_defined.html] +[test_custom_element_uncatchable_exception.html] +skip-if = !debug # TestFunctions only applied in debug builds [test_nested_content_element.html] [test_dest_insertion_points.html] [test_dest_insertion_points_shadow.html] @@ -25,10 +32,11 @@ support-files = [test_document_adoptnode.html] [test_document_importnode.html] [test_document_register.html] -[test_document_register_base_queue.html] [test_document_register_lifecycle.html] +skip-if = true # disabled - See bug 1390396 [test_document_register_parser.html] [test_document_register_stack.html] +skip-if = true # disabled - See bug 1390396 [test_document_shared_registry.html] [test_event_dispatch.html] [test_event_retarget.html] diff --git a/dom/tests/mochitest/webcomponents/test_bug1276240.html b/dom/tests/mochitest/webcomponents/test_bug1276240.html index 33e532a6a..ded8d8276 100644 --- a/dom/tests/mochitest/webcomponents/test_bug1276240.html +++ b/dom/tests/mochitest/webcomponents/test_bug1276240.html @@ -47,7 +47,7 @@ test(); // test with webcomponents disabled SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv( - { 'set': [["dom.webcomponents.enabled", false]]}, runTest); + { 'set': [["dom.webcomponents.customelements.enabled", false]]}, runTest); </script> </pre> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html b/dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html deleted file mode 100644 index 28597b7c6..000000000 --- a/dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=1081039 ---> -<head> - <title>Test callbacks for adopted custom elements.</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<template id="template"><x-foo></x-foo></template> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081039">Bug 1081039</a> -<script> - -var p = Object.create(HTMLElement.prototype); -p.createdCallback = function() { - ok(false, "Created callback should not be called for adopted node."); -}; - -document.registerElement("x-foo", { prototype: p }); - -var template = document.getElementById("template"); -var adoptedFoo = document.adoptNode(template.content.firstChild); -is(adoptedFoo.nodeName, "X-FOO"); - -</script> -</body> -</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html b/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html index 94b02032f..bb5008538 100644 --- a/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html +++ b/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html @@ -16,7 +16,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1102502 SimpleTest.waitForExplicitFinish(); -var attachedCallbackCount = 0; +var connectedCallbackCount = 0; var p = Object.create(HTMLElement.prototype); @@ -24,12 +24,12 @@ p.createdCallback = function() { ok(true, "createdCallback called."); }; -p.attachedCallback = function() { - ok(true, "attachedCallback should be called when the parser creates an element in the document."); - attachedCallbackCount++; - // attachedCallback should be called twice, once for the element created for innerHTML and +p.connectedCallback = function() { + ok(true, "connectedCallback should be called when the parser creates an element in the document."); + connectedCallbackCount++; + // connectedCallback should be called twice, once for the element created for innerHTML and // once for the element created in this document. - if (attachedCallbackCount == 2) { + if (connectedCallbackCount == 2) { SimpleTest.finish(); } } diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html b/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html deleted file mode 100644 index eea9bafe0..000000000 --- a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=1081039 ---> -<head> - <title>Test callbacks for cloned custom elements.</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081039">Bug 1081039</a> -<script> - -SimpleTest.waitForExplicitFinish(); - -// Test to make sure created callback is called on clones that are upgraded and clones -// created after registering the custom element. - -var callbackCalledOnUpgrade = false; -var callbackCalledOnClone = false; - -var foo = document.createElement("x-foo"); -var fooClone = foo.cloneNode(true); - -var p = Object.create(HTMLElement.prototype); -p.createdCallback = function() { - is(this.__proto__, p, "Correct prototype should be set on custom elements."); - - if (this == fooClone) { - // Callback called for the element created before registering the custom element. - // Should be called on element upgrade. - is(callbackCalledOnUpgrade, false, "Upgrade should only be called once per clone."); - callbackCalledOnUpgrade = true; - } else if (this != foo) { - // Callback called for the element created after registering the custom element. - is(callbackCalledOnClone, false, "Upgrade should only be called once per clone."); - callbackCalledOnClone = true; - } - - if (callbackCalledOnUpgrade && callbackCalledOnClone) { - SimpleTest.finish(); - } -}; - -document.registerElement("x-foo", { prototype: p }); - -var anotherFooClone = foo.cloneNode(true); - -SimpleTest.waitForExplicitFinish(); - -</script> -</body> -</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html b/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html deleted file mode 100644 index b3531b0ea..000000000 --- a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=1081039 ---> -<head> - <title>Test callbacks for cloned extended custom elements.</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081039">Bug 1081039</a> -<script> - -SimpleTest.waitForExplicitFinish(); - -// Test to make sure created callback is called on clones created after -// registering the custom element. - -var count = 0; -var p = Object.create(HTMLButtonElement.prototype); -p.createdCallback = function() { // should be called by createElement and cloneNode - is(this.__proto__, p, "Correct prototype should be set on custom elements."); - - if (++count == 2) { - SimpleTest.finish(); - } -}; - -document.registerElement("x-foo", { prototype: p, extends: "button" }); -var foo = document.createElement("button", {is: "x-foo"}); -is(foo.getAttribute("is"), "x-foo"); - -var fooClone = foo.cloneNode(true); - -SimpleTest.waitForExplicitFinish(); - -</script> -</body> -</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html new file mode 100644 index 000000000..b022a7887 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html @@ -0,0 +1,42 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=1274159 +--> +<head> + <title>Test HTMLConstructor for custom elements.</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1274159">Bug 1274159</a> +<script type="text/javascript"> +function test_with_new_window(f) { + return new Promise((aResolve) => { + let iframe = document.createElement('iframe'); + iframe.setAttribute('type', 'content'); + iframe.setAttribute('src', 'dummy_page.html'); + iframe.onload = function() { + f(iframe.contentWindow); + aResolve(); + }; + document.body.appendChild(iframe); + }); +} + +// Fake the Cu.waiveXrays, so that we can share the tests with mochitest chrome. +var Cu = { waiveXrays: (obj) => obj }; +var promises = []; +SimpleTest.waitForExplicitFinish(); +</script> +<!-- Test cases for autonomous element --> +<script type="text/javascript" src="htmlconstructor_autonomous_tests.js"></script> +<!-- Test cases for customized built-in element --> +<script type="text/javascript" src="htmlconstructor_builtin_tests.js"></script> +<script type="text/javascript"> +Promise.all(promises).then(() => { + SimpleTest.finish(); +}); +</script> +</body> +</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html new file mode 100644 index 000000000..8c7ec0ac6 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html @@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=1274159 +--> +<head> + <title>Test HTMLConstructor for custom elements.</title> + <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1274159">Bug 1274159</a> +<script type="text/javascript"> +function test_with_new_window(f) { + return new Promise((aResolve) => { + let iframe = document.createElement('iframe'); + iframe.setAttribute('type', 'content'); + iframe.setAttribute('src', 'http://example.org/tests/dom/tests/mochitest/webcomponents/dummy_page.html'); + iframe.onload = function() { + f(iframe.contentWindow); + aResolve(); + }; + document.body.appendChild(iframe); + }); +} + +var Cu = Components.utils; +var promises = []; +SimpleTest.waitForExplicitFinish(); +</script> +<!-- Test cases for autonomous element --> +<script type="text/javascript" src="htmlconstructor_autonomous_tests.js"></script> +<!-- Test cases for customized built-in element --> +<script type="text/javascript" src="htmlconstructor_builtin_tests.js"></script> +<script type="text/javascript"> +Promise.all(promises).then(() => { + SimpleTest.finish(); +}); +</script> +</body> +</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html b/dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html deleted file mode 100644 index f533b507c..000000000 --- a/dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=1093680 ---> -<head> - <title>Test created callback order for imported custom element.</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<template id="template"><x-foo><span></span></x-foo></template> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1093680">Bug 1093680</a> -<script> - -var fooProtoCreatedCallbackCalled = false; -var fooProto = Object.create(HTMLElement.prototype); -fooProto.createdCallback = function() { - ok(this.firstElementChild, "When the created callback is called, the element should already have a child because the callback should only be called after cloning all the contents."); - fooProtoCreatedCallbackCalled = true; -}; - -document.registerElement("x-foo", { prototype: fooProto }); - -var template = document.getElementById("template"); - -// Importing node will implicityly clone the conent in the main document. -var adoptedFoo = document.importNode(template.content, true); - -ok(fooProtoCreatedCallbackCalled, "Created callback should be called after importing custom element into document"); - -</script> -</body> -</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html b/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html index a349f4aa5..572579ba8 100644 --- a/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html +++ b/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html @@ -19,9 +19,6 @@ const testWindow = iframe.contentDocument.defaultView; // This is for backward compatibility. // We should do the same checks for the callbacks from v0 spec. [ - 'createdCallback', - 'attachedCallback', - 'detachedCallback', 'attributeChangedCallback', ].forEach(callback => { var c = class {}; diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html b/dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html new file mode 100644 index 000000000..b5ef66860 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html @@ -0,0 +1,66 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=1378079 +--> +<head> + <title>Test throw on dynamic markup insertion when creating element synchronously from parser</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1378079">Bug 1378079</a> +<div id="container"></div> + +<script> + +class DoDocumentOpenInCtor extends HTMLElement { + constructor() { + super(); + document.open(); + } +}; +customElements.define('x-document-open-in-ctor', DoDocumentOpenInCtor); + +class DoDocumentWriteInCtor extends HTMLElement { + constructor() { + super(); + document.write('<div>This should not be shown</div>'); + } +}; +customElements.define('x-document-write-in-ctor', DoDocumentWriteInCtor); + +class DoDocumentCloseInCtor extends HTMLElement { + constructor() { + super(); + document.close(); + } +}; +customElements.define('x-document-close-in-ctor', DoDocumentCloseInCtor); + +window.errors = []; +window.onerror = function(message, url, lineNumber, columnNumber, error) { + errors.push(error.name); + return true; +} +var expectedErrorCount = 0; + +document.write("<x-document-open-in-ctor></x-document-open-in-ctor>"); +expectedErrorCount++; +is(window.errors.length, expectedErrorCount, "expectedErrorCount should be " + expectedErrorCount); +is(window.errors[expectedErrorCount - 1], 'InvalidStateError', "Error name should be 'InvalidStateError'"); + +document.write("<x-document-write-in-ctor></x-document-write-in-ctor>"); +expectedErrorCount++; +is(window.errors.length, expectedErrorCount, "expectedErrorCount should be " + expectedErrorCount); +is(window.errors[expectedErrorCount - 1], 'InvalidStateError', "Error name should be 'InvalidStateError'"); + +document.write("<x-document-close-in-ctor></x-document-close-in-ctor>"); +expectedErrorCount++; +is(window.errors.length, expectedErrorCount, "expectedErrorCount should be " + expectedErrorCount); +is(window.errors[expectedErrorCount - 1], 'InvalidStateError', "Error name should be 'InvalidStateError'"); + +</script> + +</body> +</html> diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html b/dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html new file mode 100644 index 000000000..f60bf1674 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html @@ -0,0 +1,37 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=1407669 +--> +<head> + <title>Test custom elements runtime exception</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1407669">Bug 1407669</a> +<script type="text/javascript"> + +SimpleTest.waitForExplicitFinish(); +SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() { + window.onerror = function (e) { + ok(false, "How did we get here!?"); + } + + class Foo extends HTMLElement { + constructor() { + super() + TestFunctions.throwUncatchableException(); + } + } + + customElements.define("test-custom-element", Foo); + let element = document.createElement("test-custom-element"); + is(element instanceof HTMLUnknownElement, true, "It should be a HTMLUnknownElement when uncatchable exception throws in constructor"); + ok(true, "Uncatchable exception should not report"); + SimpleTest.finish(); +}); + +</script> +</body> +</html> diff --git a/dom/tests/mochitest/webcomponents/test_document_register.html b/dom/tests/mochitest/webcomponents/test_document_register.html index a9c194b60..aa80fef5f 100644 --- a/dom/tests/mochitest/webcomponents/test_document_register.html +++ b/dom/tests/mochitest/webcomponents/test_document_register.html @@ -103,52 +103,12 @@ function startTest() { is(extendedButton.getAttribute("is"), "x-extended-button", "The |is| attribute of the created element should be the extended type."); is(extendedButton.type, "submit", "Created element should be a button with type of \"submit\""); - // document.createElementNS with different namespace than definition. - try { - var svgButton = document.createElementNS("http://www.w3.org/2000/svg", "button", {is: "x-extended-button"}); - ok(false, "An exception should've been thrown"); - } catch(err) { - is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown"); - } - - // document.createElementNS with no namespace. - try { - var noNamespaceButton = document.createElementNS("", "button", {is: "x-extended-button"}); - ok(false, "An exception should've been thrown"); - } catch(err) { - is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown"); - } - - // document.createElement with non-existant extended type. - try { - var normalButton = document.createElement("button", {is: "x-non-existant"}); - ok(false, "An exception should've been thrown"); - } catch(err) { - is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown"); - } - - // document.createElement with exteneded type that does not match with local name of element. - try { - var normalDiv = document.createElement("div", {is: "x-extended-button"}); - ok(false, "An exception should've been thrown"); - } catch(err) { - is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown"); - } - // Custom element constructor. var constructedButton = new buttonConstructor(); is(constructedButton.tagName, "BUTTON", "Created element should have local name of BUTTON"); is(constructedButton.__proto__, extendedProto, "Created element should have the prototype of the extended type."); is(constructedButton.getAttribute("is"), "x-extended-button", "The |is| attribute of the created element should be the extended type."); - // document.createElement with different namespace than definition for extended element. - try { - var htmlText = document.createElement("text", {is: "x-extended-text"}); - ok(false, "An exception should've been thrown"); - } catch(err) { - is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown"); - } - // Try creating an element with a custom element name, but not in the html namespace. var htmlNamespaceProto = Object.create(HTMLElement.prototype); document.registerElement("x-in-html-namespace", { prototype: htmlNamespaceProto }); diff --git a/dom/tests/mochitest/webcomponents/test_document_register_base_queue.html b/dom/tests/mochitest/webcomponents/test_document_register_base_queue.html deleted file mode 100644 index c839857b4..000000000 --- a/dom/tests/mochitest/webcomponents/test_document_register_base_queue.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=783129 ---> -<head> - <title>Test for document.registerElement lifecycle callback</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> -<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -<script> -var p = Object.create(HTMLElement.prototype); - -var createdCallbackCallCount = 0; - -// By the time the base element queue is processed via the microtask, -// both x-hello elements should be in the document. -p.createdCallback = function() { - var one = document.getElementById("one"); - var two = document.getElementById("two"); - isnot(one, null, "First x-hello element should be in the tree."); - isnot(two, null, "Second x-hello element should be in the tree."); - createdCallbackCallCount++; - if (createdCallbackCallCount == 2) { - SimpleTest.finish(); - } - - if (createdCallbackCallCount > 2) { - ok(false, "Created callback called too much."); - } -}; - -p.attributeChangedCallback = function(name, oldValue, newValue) { - ok(false, "Attribute changed callback should not be called because callbacks should not be queued until created callback invoked."); -}; - -document.registerElement("x-hello", { prototype: p }); - -SimpleTest.waitForExplicitFinish(); -</script> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=783129">Bug 783129</a> -<x-hello id="one"></x-hello> -<x-hello id="two"></x-hello> -<script> -</script> -</body> -</html> diff --git a/dom/tests/mochitest/webcomponents/test_document_register_parser.html b/dom/tests/mochitest/webcomponents/test_document_register_parser.html index bc4cdcbac..a4fb63139 100644 --- a/dom/tests/mochitest/webcomponents/test_document_register_parser.html +++ b/dom/tests/mochitest/webcomponents/test_document_register_parser.html @@ -11,7 +11,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=783129 var extendedButtonProto = Object.create(HTMLButtonElement.prototype); var buttonCallbackCalled = false; -extendedButtonProto.createdCallback = function() { +extendedButtonProto.connectedCallback = function() { is(buttonCallbackCalled, false, "created callback for x-button should only be called once."); is(this.tagName, "BUTTON", "Only the <button> element should be upgraded."); buttonCallbackCalled = true; @@ -21,7 +21,7 @@ document.registerElement("x-button", { prototype: extendedButtonProto, extends: var divProto = Object.create(HTMLDivElement.prototype); var divCallbackCalled = false; -divProto.createdCallback = function() { +divProto.connectedCallback = function() { is(divCallbackCalled, false, "created callback for x-div should only be called once."); is(buttonCallbackCalled, true, "crated callback should be called for x-button before x-div."); is(this.tagName, "X-DIV", "Only the <x-div> element should be upgraded."); diff --git a/dom/tests/mochitest/webcomponents/test_document_register_stack.html b/dom/tests/mochitest/webcomponents/test_document_register_stack.html index 34f108654..b1c61af11 100644 --- a/dom/tests/mochitest/webcomponents/test_document_register_stack.html +++ b/dom/tests/mochitest/webcomponents/test_document_register_stack.html @@ -28,7 +28,8 @@ function testChangeAttributeInCreatedCallback() { createdCallbackCalled = true; is(attributeChangedCallbackCalled, false, "Attribute changed callback should not have been called prior to setting the attribute."); this.setAttribute("foo", "bar"); - is(attributeChangedCallbackCalled, false, "While element is being created, element should not be added to the current element callback queue."); + is(attributeChangedCallbackCalled, true, "While element is being created, element should be added to the current element callback queue."); + runNextTest(); }; p.attributeChangedCallback = function(name, oldValue, newValue) { @@ -36,7 +37,6 @@ function testChangeAttributeInCreatedCallback() { is(attributeChangedCallbackCalled, false, "attributeChanged callback should only be called once in this tests."); is(newValue, "bar", "The new value should be 'bar'"); attributeChangedCallbackCalled = true; - runNextTest(); }; document.registerElement("x-one", { prototype: p }); diff --git a/dom/tests/mochitest/webcomponents/test_document_shared_registry.html b/dom/tests/mochitest/webcomponents/test_document_shared_registry.html index 76c2ea8ec..db72e1e6c 100644 --- a/dom/tests/mochitest/webcomponents/test_document_shared_registry.html +++ b/dom/tests/mochitest/webcomponents/test_document_shared_registry.html @@ -14,37 +14,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=783129 <script> var container = document.getElementById("container"); -function createdCallbackFromMainDoc() { - var createdCallbackCalled = false; - var assocDoc = document.implementation.createHTMLDocument(); - - var proto = Object.create(HTMLElement.prototype); - proto.createdCallback = function() { - is(createdCallbackCalled, false, "created callback should only be called once in this tests."); - createdCallbackCalled = true; - runNextTest(); - }; - - assocDoc.registerElement("x-associated-doc-callback-elem", { prototype: proto }); - document.createElement("x-associated-doc-callback-elem"); -} - -function createdCallbackFromDocHTMLNamespace() { - var createdCallbackCalled = false; - var assocDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null); - var somediv = assocDoc.createElement("div"); - - var proto = Object.create(HTMLElement.prototype); - proto.createdCallback = function() { - is(createdCallbackCalled, false, "created callback should only be called once in this tests."); - createdCallbackCalled = true; - runNextTest(); - }; - - assocDoc.registerElement("x-assoc-doc-with-ns-callback-elem", { prototype: proto }); - document.createElement("x-assoc-doc-with-ns-callback-elem"); -} - function registerNoRegistryDoc() { var assocDoc = document.implementation.createDocument(null, "html"); try { @@ -65,8 +34,6 @@ function runNextTest() { } var testFunctions = [ - createdCallbackFromMainDoc, - createdCallbackFromDocHTMLNamespace, registerNoRegistryDoc, SimpleTest.finish ]; diff --git a/dom/tests/moz.build b/dom/tests/moz.build index f7c3e2437..7fc81abbd 100644 --- a/dom/tests/moz.build +++ b/dom/tests/moz.build @@ -37,6 +37,7 @@ MOCHITEST_CHROME_MANIFESTS += [ 'mochitest/geolocation/chrome.ini', 'mochitest/localstorage/chrome.ini', 'mochitest/sessionstorage/chrome.ini', + 'mochitest/webcomponents/chrome.ini', 'mochitest/whatwg/chrome.ini', ] diff --git a/dom/webidl/Attr.webidl b/dom/webidl/Attr.webidl index c836afd9b..763ed02ef 100644 --- a/dom/webidl/Attr.webidl +++ b/dom/webidl/Attr.webidl @@ -12,7 +12,7 @@ interface Attr : Node { readonly attribute DOMString localName; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString value; [Constant] diff --git a/dom/webidl/CSSStyleDeclaration.webidl b/dom/webidl/CSSStyleDeclaration.webidl index d9b2511de..561e5cce1 100644 --- a/dom/webidl/CSSStyleDeclaration.webidl +++ b/dom/webidl/CSSStyleDeclaration.webidl @@ -10,7 +10,7 @@ interface CSSRule; interface CSSStyleDeclaration { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString cssText; readonly attribute unsigned long length; @@ -22,9 +22,9 @@ interface CSSStyleDeclaration { [Throws] CSSValue? getPropertyCSSValue(DOMString property); DOMString getPropertyPriority(DOMString property); - [Throws] + [CEReactions, Throws] void setProperty(DOMString property, [TreatNullAs=EmptyString] DOMString value, [TreatNullAs=EmptyString] optional DOMString priority = ""); - [Throws] + [CEReactions, Throws] DOMString removeProperty(DOMString property); readonly attribute CSSRule? parentRule; diff --git a/dom/webidl/ChildNode.webidl b/dom/webidl/ChildNode.webidl index fcf388059..ae36cd93e 100644 --- a/dom/webidl/ChildNode.webidl +++ b/dom/webidl/ChildNode.webidl @@ -9,13 +9,13 @@ [NoInterfaceObject] interface ChildNode { - [Throws, Unscopable] + [CEReactions, Throws, Unscopable] void before((Node or DOMString)... nodes); - [Throws, Unscopable] + [CEReactions, Throws, Unscopable] void after((Node or DOMString)... nodes); - [Throws, Unscopable] + [CEReactions, Throws, Unscopable] void replaceWith((Node or DOMString)... nodes); - [Unscopable] + [CEReactions, Unscopable] void remove(); }; diff --git a/dom/webidl/CustomElementRegistry.webidl b/dom/webidl/CustomElementRegistry.webidl index dff612174..788b6a4ed 100644 --- a/dom/webidl/CustomElementRegistry.webidl +++ b/dom/webidl/CustomElementRegistry.webidl @@ -5,7 +5,7 @@ // https://html.spec.whatwg.org/#dom-window-customelements [Func="CustomElementRegistry::IsCustomElementEnabled"] interface CustomElementRegistry { - [Throws] + [CEReactions, Throws] void define(DOMString name, Function functionConstructor, optional ElementDefinitionOptions options); any get(DOMString name); diff --git a/dom/webidl/DOMStringMap.webidl b/dom/webidl/DOMStringMap.webidl index 0ed98e148..a59910e0b 100644 --- a/dom/webidl/DOMStringMap.webidl +++ b/dom/webidl/DOMStringMap.webidl @@ -14,7 +14,8 @@ [OverrideBuiltins] interface DOMStringMap { getter DOMString (DOMString name); - [Throws] + [CEReactions, Throws] setter creator void (DOMString name, DOMString value); + [CEReactions] deleter void (DOMString name); }; diff --git a/dom/webidl/DOMTokenList.webidl b/dom/webidl/DOMTokenList.webidl index a1ea243b3..69663d055 100644 --- a/dom/webidl/DOMTokenList.webidl +++ b/dom/webidl/DOMTokenList.webidl @@ -14,17 +14,17 @@ interface DOMTokenList { readonly attribute unsigned long length; getter DOMString? item(unsigned long index); boolean contains(DOMString token); - [Throws] + [CEReactions, Throws] void add(DOMString... tokens); - [Throws] + [CEReactions, Throws] void remove(DOMString... tokens); - [Throws] + [CEReactions, Throws] void replace(DOMString token, DOMString newToken); - [Throws] + [CEReactions, Throws] boolean toggle(DOMString token, optional boolean force); - [Throws] + [CEReactions, Throws] boolean supports(DOMString token); - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString value; stringifier DOMString (); iterable<DOMString?>; diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl index 904b1fb77..b28903ae2 100644 --- a/dom/webidl/Document.webidl +++ b/dom/webidl/Document.webidl @@ -65,9 +65,9 @@ interface Document : Node { [NewObject, Throws] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); - [Throws] + [CEReactions, Throws] Node importNode(Node node, optional boolean deep = false); - [Throws] + [CEReactions, Throws] Node adoptNode(Node node); [NewObject, Throws] @@ -108,9 +108,9 @@ partial interface Document { // DOM tree accessors //(Not proxy yet)getter object (DOMString name); - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString title; - [Pure] + [CEReactions, Pure] attribute DOMString dir; //(HTML only) attribute HTMLElement? body; //(HTML only)readonly attribute HTMLHeadElement? head; diff --git a/dom/webidl/Element.webidl b/dom/webidl/Element.webidl index cf17523a5..a6b2bfdd5 100644 --- a/dom/webidl/Element.webidl +++ b/dom/webidl/Element.webidl @@ -25,9 +25,9 @@ interface Element : Node { [Pure] readonly attribute DOMString tagName; - [Pure] + [CEReactions, Pure] attribute DOMString id; - [Pure] + [CEReactions, Pure] attribute DOMString className; [Constant, PutForwards=value] readonly attribute DOMTokenList classList; @@ -40,15 +40,15 @@ interface Element : Node { DOMString? getAttribute(DOMString name); [Pure] DOMString? getAttributeNS(DOMString? namespace, DOMString localName); - [Throws] + [CEReactions, Throws] boolean toggleAttribute(DOMString name, optional boolean force); - [Throws] + [CEReactions, Throws] void setAttribute(DOMString name, DOMString value); - [Throws] + [CEReactions, Throws] void setAttributeNS(DOMString? namespace, DOMString name, DOMString value); - [Throws] + [CEReactions, Throws] void removeAttribute(DOMString name); - [Throws] + [CEReactions, Throws] void removeAttributeNS(DOMString? namespace, DOMString localName); [Pure] boolean hasAttribute(DOMString name); @@ -72,7 +72,7 @@ interface Element : Node { [Pure] HTMLCollection getElementsByClassName(DOMString classNames); - [Throws, Pure] + [CEReactions, Throws, Pure] Element? insertAdjacentElement(DOMString where, Element element); // historical [Throws] @@ -137,12 +137,12 @@ interface Element : Node { // Obsolete methods. Attr? getAttributeNode(DOMString name); - [Throws] + [CEReactions, Throws] Attr? setAttributeNode(Attr newAttr); - [Throws] + [CEReactions, Throws] Attr? removeAttributeNode(Attr oldAttr); Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName); - [Throws] + [CEReactions, Throws] Attr? setAttributeNodeNS(Attr newAttr); [ChromeOnly] @@ -212,11 +212,11 @@ partial interface Element { // http://domparsing.spec.whatwg.org/#extensions-to-the-element-interface partial interface Element { - [Pure,SetterThrows,TreatNullAs=EmptyString] + [CEReactions, Pure,SetterThrows,TreatNullAs=EmptyString] attribute DOMString innerHTML; - [Pure,SetterThrows,TreatNullAs=EmptyString] + [CEReactions, Pure,SetterThrows,TreatNullAs=EmptyString] attribute DOMString outerHTML; - [Throws] + [CEReactions, Throws] void insertAdjacentHTML(DOMString position, DOMString text); }; diff --git a/dom/webidl/EventHandler.webidl b/dom/webidl/EventHandler.webidl index b92e3a2bb..484a8e95c 100644 --- a/dom/webidl/EventHandler.webidl +++ b/dom/webidl/EventHandler.webidl @@ -94,7 +94,6 @@ interface GlobalEventHandlers { [Pref="dom.select_events.enabled"] attribute EventHandler onselectstart; - [Pref="dom.details_element.enabled"] attribute EventHandler ontoggle; // Pointer events handlers diff --git a/dom/webidl/HTMLAnchorElement.webidl b/dom/webidl/HTMLAnchorElement.webidl index 0b8ded6d7..0326dff6a 100644 --- a/dom/webidl/HTMLAnchorElement.webidl +++ b/dom/webidl/HTMLAnchorElement.webidl @@ -12,25 +12,26 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-a-element +[HTMLConstructor] interface HTMLAnchorElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString target; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString download; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString ping; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString rel; - [SetterThrows, Pref="network.http.enablePerElementReferrer"] + [CEReactions, SetterThrows, Pref="network.http.enablePerElementReferrer"] attribute DOMString referrerPolicy; [PutForwards=value] readonly attribute DOMTokenList relList; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString hreflang; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString text; }; @@ -38,14 +39,14 @@ HTMLAnchorElement implements HTMLHyperlinkElementUtils; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLAnchorElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString coords; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString charset; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString name; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString rev; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString shape; }; diff --git a/dom/webidl/HTMLAreaElement.webidl b/dom/webidl/HTMLAreaElement.webidl index be3f37885..0980d178a 100644 --- a/dom/webidl/HTMLAreaElement.webidl +++ b/dom/webidl/HTMLAreaElement.webidl @@ -13,20 +13,21 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-area-element +[HTMLConstructor] interface HTMLAreaElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString alt; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString coords; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString shape; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString target; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString download; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString ping; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString rel; [SetterThrows, Pref="network.http.enablePerElementReferrer"] attribute DOMString referrerPolicy; @@ -38,6 +39,6 @@ HTMLAreaElement implements HTMLHyperlinkElementUtils; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLAreaElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean noHref; }; diff --git a/dom/webidl/HTMLAudioElement.webidl b/dom/webidl/HTMLAudioElement.webidl index 8537453c0..725669839 100644 --- a/dom/webidl/HTMLAudioElement.webidl +++ b/dom/webidl/HTMLAudioElement.webidl @@ -11,6 +11,6 @@ * and create derivative works of this document. */ -[NamedConstructor=Audio(optional DOMString src)] +[HTMLConstructor, NamedConstructor=Audio(optional DOMString src)] interface HTMLAudioElement : HTMLMediaElement {}; diff --git a/dom/webidl/HTMLBRElement.webidl b/dom/webidl/HTMLBRElement.webidl index cf5cb8a67..b0b0f80ed 100644 --- a/dom/webidl/HTMLBRElement.webidl +++ b/dom/webidl/HTMLBRElement.webidl @@ -13,11 +13,12 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-br-element +[HTMLConstructor] interface HTMLBRElement : HTMLElement {}; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLBRElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString clear; }; diff --git a/dom/webidl/HTMLBaseElement.webidl b/dom/webidl/HTMLBaseElement.webidl index d982f4654..ed86f8c77 100644 --- a/dom/webidl/HTMLBaseElement.webidl +++ b/dom/webidl/HTMLBaseElement.webidl @@ -12,10 +12,11 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-base-element +[HTMLConstructor] interface HTMLBaseElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString href; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString target; }; diff --git a/dom/webidl/HTMLBodyElement.webidl b/dom/webidl/HTMLBodyElement.webidl index 95df2d43a..f89c287d7 100644 --- a/dom/webidl/HTMLBodyElement.webidl +++ b/dom/webidl/HTMLBodyElement.webidl @@ -11,16 +11,23 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLBodyElement : HTMLElement { }; partial interface HTMLBodyElement { - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString text; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString link; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString vLink; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString aLink; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; - [SetterThrows] attribute DOMString background; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString text; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString link; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString vLink; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString aLink; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString bgColor; + [CEReactions, SetterThrows] + attribute DOMString background; }; HTMLBodyElement implements WindowEventHandlers; diff --git a/dom/webidl/HTMLButtonElement.webidl b/dom/webidl/HTMLButtonElement.webidl index 579efa39c..f129dbd7b 100644 --- a/dom/webidl/HTMLButtonElement.webidl +++ b/dom/webidl/HTMLButtonElement.webidl @@ -11,28 +11,29 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-button-element +[HTMLConstructor] interface HTMLButtonElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean autofocus; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean disabled; [Pure] readonly attribute HTMLFormElement? form; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString formAction; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString formEnctype; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString formMethod; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean formNoValidate; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString formTarget; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString type; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString value; // Not yet implemented: // attribute HTMLMenuElement? menu; diff --git a/dom/webidl/HTMLCanvasElement.webidl b/dom/webidl/HTMLCanvasElement.webidl index 15e94f154..b567c69eb 100644 --- a/dom/webidl/HTMLCanvasElement.webidl +++ b/dom/webidl/HTMLCanvasElement.webidl @@ -13,10 +13,11 @@ interface nsISupports; interface Variant; +[HTMLConstructor] interface HTMLCanvasElement : HTMLElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute unsigned long width; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute unsigned long height; [Throws] diff --git a/dom/webidl/HTMLDListElement.webidl b/dom/webidl/HTMLDListElement.webidl index 08020a497..4cf1c2183 100644 --- a/dom/webidl/HTMLDListElement.webidl +++ b/dom/webidl/HTMLDListElement.webidl @@ -13,11 +13,12 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-dl-element +[HTMLConstructor] interface HTMLDListElement : HTMLElement { }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLDListElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean compact; }; diff --git a/dom/webidl/HTMLDataElement.webidl b/dom/webidl/HTMLDataElement.webidl index 821b8b483..d24537871 100644 --- a/dom/webidl/HTMLDataElement.webidl +++ b/dom/webidl/HTMLDataElement.webidl @@ -7,7 +7,8 @@ * http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-data-element */ +[HTMLConstructor] interface HTMLDataElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString value; }; diff --git a/dom/webidl/HTMLDataListElement.webidl b/dom/webidl/HTMLDataListElement.webidl index 83b20cd2b..4c38fddf3 100644 --- a/dom/webidl/HTMLDataListElement.webidl +++ b/dom/webidl/HTMLDataListElement.webidl @@ -11,6 +11,7 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLDataListElement : HTMLElement { readonly attribute HTMLCollection options; }; diff --git a/dom/webidl/HTMLDetailsElement.webidl b/dom/webidl/HTMLDetailsElement.webidl index 133ecf125..04df82e30 100644 --- a/dom/webidl/HTMLDetailsElement.webidl +++ b/dom/webidl/HTMLDetailsElement.webidl @@ -11,8 +11,8 @@ * and create derivative works of this document. */ -[Pref="dom.details_element.enabled"] +[HTMLConstructor] interface HTMLDetailsElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean open; }; diff --git a/dom/webidl/HTMLDialogElement.webidl b/dom/webidl/HTMLDialogElement.webidl index b6cdbacf6..563740c87 100644 --- a/dom/webidl/HTMLDialogElement.webidl +++ b/dom/webidl/HTMLDialogElement.webidl @@ -13,11 +13,13 @@ [Pref="dom.dialog_element.enabled"] interface HTMLDialogElement : HTMLElement { - [SetterThrows] attribute boolean open; + [CEReactions, SetterThrows] + attribute boolean open; attribute DOMString returnValue; - + [CEReactions] void show(); - [Throws] void showModal(); - + [CEReactions, Throws] + void showModal(); + [CEReactions] void close(optional DOMString returnValue); }; diff --git a/dom/webidl/HTMLDirectoryElement.webidl b/dom/webidl/HTMLDirectoryElement.webidl index 9d5160af1..65becbb60 100644 --- a/dom/webidl/HTMLDirectoryElement.webidl +++ b/dom/webidl/HTMLDirectoryElement.webidl @@ -12,8 +12,9 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +[HTMLConstructor] interface HTMLDirectoryElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean compact; }; diff --git a/dom/webidl/HTMLDivElement.webidl b/dom/webidl/HTMLDivElement.webidl index f50e2aad0..2b762c6fa 100644 --- a/dom/webidl/HTMLDivElement.webidl +++ b/dom/webidl/HTMLDivElement.webidl @@ -11,9 +11,10 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLDivElement : HTMLElement {}; partial interface HTMLDivElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; }; diff --git a/dom/webidl/HTMLDocument.webidl b/dom/webidl/HTMLDocument.webidl index ffb61ccdd..ffa38d97d 100644 --- a/dom/webidl/HTMLDocument.webidl +++ b/dom/webidl/HTMLDocument.webidl @@ -13,7 +13,7 @@ interface HTMLDocument : Document { // DOM tree accessors [Throws] getter object (DOMString name); - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute HTMLElement? body; [Pure] readonly attribute HTMLHeadElement? head; @@ -32,20 +32,20 @@ interface HTMLDocument : Document { NodeList getElementsByName(DOMString elementName); // dynamic markup insertion - [Throws] + [CEReactions, Throws] Document open(optional DOMString type = "text/html", optional DOMString replace = ""); - [Throws] + [CEReactions, Throws] WindowProxy? open(DOMString url, DOMString name, DOMString features, optional boolean replace = false); - [Throws] + [CEReactions, Throws] void close(); - [Throws] + [CEReactions, Throws] void write(DOMString... text); - [Throws] + [CEReactions, Throws] void writeln(DOMString... text); - [SetterThrows, NeedsSubjectPrincipal] + [CEReactions, SetterThrows, NeedsSubjectPrincipal] attribute DOMString designMode; - [Throws] + [CEReactions, Throws] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = ""); [Throws] @@ -58,11 +58,11 @@ interface HTMLDocument : Document { [Throws] DOMString queryCommandValue(DOMString commandId); - [TreatNullAs=EmptyString] attribute DOMString fgColor; - [TreatNullAs=EmptyString] attribute DOMString linkColor; - [TreatNullAs=EmptyString] attribute DOMString vlinkColor; - [TreatNullAs=EmptyString] attribute DOMString alinkColor; - [TreatNullAs=EmptyString] attribute DOMString bgColor; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString fgColor; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString linkColor; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString vlinkColor; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString alinkColor; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor; [Pure] readonly attribute HTMLCollection anchors; diff --git a/dom/webidl/HTMLElement.webidl b/dom/webidl/HTMLElement.webidl index 5ce5024e6..815f4a3bd 100644 --- a/dom/webidl/HTMLElement.webidl +++ b/dom/webidl/HTMLElement.webidl @@ -12,34 +12,37 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLElement : Element { // metadata attributes + [CEReactions] attribute DOMString title; + [CEReactions] attribute DOMString lang; // attribute boolean translate; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString dir; [Constant] readonly attribute DOMStringMap dataset; - [GetterThrows, Pure, TreatNullAs=EmptyString] + [CEReactions, GetterThrows, Pure, TreatNullAs=EmptyString] attribute DOMString innerText; // user interaction - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean hidden; void click(); - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute long tabIndex; [Throws] void focus(); [Throws] void blur(); - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString accessKey; [Pure] readonly attribute DOMString accessKeyLabel; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean draggable; //[PutForwards=value] readonly attribute DOMTokenList dropzone; [SetterThrows, Pure] @@ -50,7 +53,7 @@ interface HTMLElement : Element { readonly attribute HTMLMenuElement? contextMenu; //[SetterThrows] // attribute HTMLMenuElement? contextMenu; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean spellcheck; // command API diff --git a/dom/webidl/HTMLEmbedElement.webidl b/dom/webidl/HTMLEmbedElement.webidl index 36668595b..9c5361221 100644 --- a/dom/webidl/HTMLEmbedElement.webidl +++ b/dom/webidl/HTMLEmbedElement.webidl @@ -13,15 +13,15 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-embed-element -[NeedResolve] +[HTMLConstructor, NeedResolve] interface HTMLEmbedElement : HTMLElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString src; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString type; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString width; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString height; [Throws] legacycaller any (any... arguments); @@ -29,9 +29,9 @@ interface HTMLEmbedElement : HTMLElement { // http://www.whatwg.org/specs/web-apps/current-work/#HTMLEmbedElement-partial partial interface HTMLEmbedElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString align; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString name; }; diff --git a/dom/webidl/HTMLFieldSetElement.webidl b/dom/webidl/HTMLFieldSetElement.webidl index 6c9eee52b..63393bf42 100644 --- a/dom/webidl/HTMLFieldSetElement.webidl +++ b/dom/webidl/HTMLFieldSetElement.webidl @@ -11,11 +11,12 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLFieldSetElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean disabled; readonly attribute HTMLFormElement? form; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString name; readonly attribute DOMString type; diff --git a/dom/webidl/HTMLFontElement.webidl b/dom/webidl/HTMLFontElement.webidl index 781dabb88..8db6d3246 100644 --- a/dom/webidl/HTMLFontElement.webidl +++ b/dom/webidl/HTMLFontElement.webidl @@ -11,8 +11,9 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLFontElement : HTMLElement { - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString color; - [SetterThrows] attribute DOMString face; - [SetterThrows] attribute DOMString size; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] attribute DOMString color; + [CEReactions, SetterThrows] attribute DOMString face; + [CEReactions, SetterThrows] attribute DOMString size; }; diff --git a/dom/webidl/HTMLFormElement.webidl b/dom/webidl/HTMLFormElement.webidl index 8d248e1a5..064fe9fad 100644 --- a/dom/webidl/HTMLFormElement.webidl +++ b/dom/webidl/HTMLFormElement.webidl @@ -11,25 +11,25 @@ * and create derivative works of this document. */ -[OverrideBuiltins, LegacyUnenumerableNamedProperties] +[OverrideBuiltins, LegacyUnenumerableNamedProperties, HTMLConstructor] interface HTMLFormElement : HTMLElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString acceptCharset; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString action; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString autocomplete; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString enctype; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString encoding; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString method; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString name; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean noValidate; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString target; [Constant] @@ -43,6 +43,7 @@ interface HTMLFormElement : HTMLElement { [Throws] void submit(); + [CEReactions] void reset(); boolean checkValidity(); boolean reportValidity(); diff --git a/dom/webidl/HTMLFrameElement.webidl b/dom/webidl/HTMLFrameElement.webidl index 9c5aca7c4..c3ba0de63 100644 --- a/dom/webidl/HTMLFrameElement.webidl +++ b/dom/webidl/HTMLFrameElement.webidl @@ -11,25 +11,28 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#htmlframeelement +[HTMLConstructor] interface HTMLFrameElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString name; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString scrolling; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString src; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString frameBorder; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString longDesc; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean noResize; [NeedsSubjectPrincipal] readonly attribute Document? contentDocument; readonly attribute WindowProxy? contentWindow; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginHeight; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginWidth; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString marginHeight; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString marginWidth; }; HTMLFrameElement implements MozFrameLoaderOwner; diff --git a/dom/webidl/HTMLFrameSetElement.webidl b/dom/webidl/HTMLFrameSetElement.webidl index ce00d487f..afc4465d1 100644 --- a/dom/webidl/HTMLFrameSetElement.webidl +++ b/dom/webidl/HTMLFrameSetElement.webidl @@ -11,10 +11,11 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLFrameSetElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString cols; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString rows; }; diff --git a/dom/webidl/HTMLHRElement.webidl b/dom/webidl/HTMLHRElement.webidl index 0495e43b3..24ba3112a 100644 --- a/dom/webidl/HTMLHRElement.webidl +++ b/dom/webidl/HTMLHRElement.webidl @@ -12,19 +12,20 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-hr-element +[HTMLConstructor] interface HTMLHRElement : HTMLElement { }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLHRElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString color; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean noShade; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString size; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString width; }; diff --git a/dom/webidl/HTMLHeadElement.webidl b/dom/webidl/HTMLHeadElement.webidl index 0ad45e384..b649712a6 100644 --- a/dom/webidl/HTMLHeadElement.webidl +++ b/dom/webidl/HTMLHeadElement.webidl @@ -12,5 +12,6 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-head-element +[HTMLConstructor] interface HTMLHeadElement : HTMLElement {}; diff --git a/dom/webidl/HTMLHeadingElement.webidl b/dom/webidl/HTMLHeadingElement.webidl index c07e5cb99..a39e24cfb 100644 --- a/dom/webidl/HTMLHeadingElement.webidl +++ b/dom/webidl/HTMLHeadingElement.webidl @@ -12,11 +12,12 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements +[HTMLConstructor] interface HTMLHeadingElement : HTMLElement { }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLHeadingElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; }; diff --git a/dom/webidl/HTMLHtmlElement.webidl b/dom/webidl/HTMLHtmlElement.webidl index b06de7761..5b2a9a926 100644 --- a/dom/webidl/HTMLHtmlElement.webidl +++ b/dom/webidl/HTMLHtmlElement.webidl @@ -13,10 +13,11 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-html-element +[HTMLConstructor] interface HTMLHtmlElement : HTMLElement {}; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLHtmlElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString version; }; diff --git a/dom/webidl/HTMLHyperlinkElementUtils.webidl b/dom/webidl/HTMLHyperlinkElementUtils.webidl index 25f175db9..ae53fd75e 100644 --- a/dom/webidl/HTMLHyperlinkElementUtils.webidl +++ b/dom/webidl/HTMLHyperlinkElementUtils.webidl @@ -18,17 +18,26 @@ interface HTMLHyperlinkElementUtils { // Bug 824857 should remove this. stringifier; - [SetterThrows] + [CEReactions, SetterThrows] attribute USVString href; readonly attribute USVString origin; + [CEReactions] attribute USVString protocol; + [CEReactions] attribute USVString username; + [CEReactions] attribute USVString password; + [CEReactions] attribute USVString host; + [CEReactions] attribute USVString hostname; + [CEReactions] attribute USVString port; + [CEReactions] attribute USVString pathname; + [CEReactions] attribute USVString search; + [CEReactions] attribute USVString hash; }; diff --git a/dom/webidl/HTMLIFrameElement.webidl b/dom/webidl/HTMLIFrameElement.webidl index 0a1b49aff..d2859c6db 100644 --- a/dom/webidl/HTMLIFrameElement.webidl +++ b/dom/webidl/HTMLIFrameElement.webidl @@ -11,22 +11,23 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLIFrameElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString src; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString srcdoc; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; [PutForwards=value] readonly attribute DOMTokenList sandbox; // attribute boolean seamless; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean allowFullscreen; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString width; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString height; - [SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"] + [CEReactions, SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"] attribute DOMString referrerPolicy; [NeedsSubjectPrincipal] readonly attribute Document? contentDocument; @@ -35,17 +36,19 @@ interface HTMLIFrameElement : HTMLElement { // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLIFrameElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString align; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString scrolling; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString frameBorder; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString longDesc; - [TreatNullAs=EmptyString,SetterThrows,Pure] attribute DOMString marginHeight; - [TreatNullAs=EmptyString,SetterThrows,Pure] attribute DOMString marginWidth; + [CEReactions, TreatNullAs=EmptyString, SetterThrows, Pure] + attribute DOMString marginHeight; + [CEReactions, TreatNullAs=EmptyString, SetterThrows, Pure] + attribute DOMString marginWidth; }; partial interface HTMLIFrameElement { diff --git a/dom/webidl/HTMLImageElement.webidl b/dom/webidl/HTMLImageElement.webidl index 243c65509..e50a9ef8e 100644 --- a/dom/webidl/HTMLImageElement.webidl +++ b/dom/webidl/HTMLImageElement.webidl @@ -16,25 +16,26 @@ interface imgIRequest; interface URI; interface nsIStreamListener; -[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] +[HTMLConstructor, + NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] interface HTMLImageElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString alt; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString src; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString srcset; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString? crossOrigin; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString useMap; - [SetterThrows, Pref="network.http.enablePerElementReferrer"] + [CEReactions, SetterThrows, Pref="network.http.enablePerElementReferrer"] attribute DOMString referrerPolicy; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean isMap; - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long width; - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long height; readonly attribute unsigned long naturalWidth; readonly attribute unsigned long naturalHeight; @@ -43,30 +44,31 @@ interface HTMLImageElement : HTMLElement { // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLImageElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString name; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long hspace; - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long vspace; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString longDesc; - [TreatNullAs=EmptyString,SetterThrows] attribute DOMString border; + [CEReactions, TreatNullAs=EmptyString,SetterThrows] attribute DOMString border; }; // [Update me: not in whatwg spec yet] // http://picture.responsiveimages.org/#the-img-element partial interface HTMLImageElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString sizes; readonly attribute DOMString currentSrc; }; // Mozilla extensions. partial interface HTMLImageElement { + [CEReactions] attribute DOMString lowsrc; // These attributes are offsets from the closest view (to mimic diff --git a/dom/webidl/HTMLInputElement.webidl b/dom/webidl/HTMLInputElement.webidl index cf3e9a4c7..93ad90f45 100644 --- a/dom/webidl/HTMLInputElement.webidl +++ b/dom/webidl/HTMLInputElement.webidl @@ -21,79 +21,81 @@ enum SelectionMode { interface nsIControllers; +[HTMLConstructor] interface HTMLInputElement : HTMLElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString accept; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString alt; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString autocomplete; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean autofocus; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean defaultChecked; [Pure] attribute boolean checked; // Bug 850337 - attribute DOMString dirName; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean disabled; readonly attribute HTMLFormElement? form; [Pure] readonly attribute FileList? files; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString formAction; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString formEnctype; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString formMethod; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean formNoValidate; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString formTarget; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute unsigned long height; [Pure] attribute boolean indeterminate; - [Pure, SetterThrows, Pref="dom.forms.inputmode"] + [CEReactions, Pure, SetterThrows, Pref="dom.forms.inputmode"] attribute DOMString inputMode; [Pure] readonly attribute HTMLElement? list; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString max; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute long maxLength; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString min; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute long minLength; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean multiple; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString name; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString pattern; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString placeholder; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean readOnly; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean required; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute unsigned long size; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString src; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString step; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString type; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString defaultValue; - [Pure, TreatNullAs=EmptyString, Throws] + [CEReactions, Pure, TreatNullAs=EmptyString, Throws] attribute DOMString value; [Throws, Func="HTMLInputElement::ValueAsDateEnabled"] attribute Date? valueAsDate; [Pure, SetterThrows] attribute unrestricted double valueAsNumber; + [CEReactions] attribute unsigned long width; [Throws] @@ -132,9 +134,9 @@ interface HTMLInputElement : HTMLElement { }; partial interface HTMLInputElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString align; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString useMap; }; diff --git a/dom/webidl/HTMLLIElement.webidl b/dom/webidl/HTMLLIElement.webidl index c20e00846..3f104d09e 100644 --- a/dom/webidl/HTMLLIElement.webidl +++ b/dom/webidl/HTMLLIElement.webidl @@ -13,13 +13,14 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-li-element +[HTMLConstructor] interface HTMLLIElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute long value; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLLIElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString type; }; diff --git a/dom/webidl/HTMLLabelElement.webidl b/dom/webidl/HTMLLabelElement.webidl index f44a56219..4b624dfaf 100644 --- a/dom/webidl/HTMLLabelElement.webidl +++ b/dom/webidl/HTMLLabelElement.webidl @@ -11,8 +11,10 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLLabelElement : HTMLElement { readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString htmlFor; readonly attribute HTMLElement? control; }; diff --git a/dom/webidl/HTMLLegendElement.webidl b/dom/webidl/HTMLLegendElement.webidl index 0ce4ae88b..6f03ecf1b 100644 --- a/dom/webidl/HTMLLegendElement.webidl +++ b/dom/webidl/HTMLLegendElement.webidl @@ -13,12 +13,13 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-legend-element +[HTMLConstructor] interface HTMLLegendElement : HTMLElement { readonly attribute HTMLFormElement? form; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLLegendElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; }; diff --git a/dom/webidl/HTMLLinkElement.webidl b/dom/webidl/HTMLLinkElement.webidl index ec094e55e..eb83deab1 100644 --- a/dom/webidl/HTMLLinkElement.webidl +++ b/dom/webidl/HTMLLinkElement.webidl @@ -12,24 +12,25 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-link-element +[HTMLConstructor] interface HTMLLinkElement : HTMLElement { [Pure] attribute boolean disabled; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString href; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString? crossOrigin; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString rel; [PutForwards=value] readonly attribute DOMTokenList relList; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString media; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString hreflang; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString type; - [SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"] + [CEReactions, SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"] attribute DOMString referrerPolicy; [PutForwards=value] readonly attribute DOMTokenList sizes; }; @@ -37,11 +38,11 @@ HTMLLinkElement implements LinkStyle; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLLinkElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString charset; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString rev; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString target; }; @@ -53,6 +54,6 @@ partial interface HTMLLinkElement { // https://w3c.github.io/webappsec/specs/subresourceintegrity/#htmllinkelement-1 partial interface HTMLLinkElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString integrity; }; diff --git a/dom/webidl/HTMLMapElement.webidl b/dom/webidl/HTMLMapElement.webidl index 88fe4e54c..199c70876 100644 --- a/dom/webidl/HTMLMapElement.webidl +++ b/dom/webidl/HTMLMapElement.webidl @@ -11,8 +11,9 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-map-element +[HTMLConstructor] interface HTMLMapElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; [Constant] readonly attribute HTMLCollection areas; diff --git a/dom/webidl/HTMLMediaElement.webidl b/dom/webidl/HTMLMediaElement.webidl index be79d8679..ad31f38cb 100644 --- a/dom/webidl/HTMLMediaElement.webidl +++ b/dom/webidl/HTMLMediaElement.webidl @@ -17,18 +17,18 @@ interface HTMLMediaElement : HTMLElement { readonly attribute MediaError? error; // network state - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString src; readonly attribute DOMString currentSrc; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString? crossOrigin; const unsigned short NETWORK_EMPTY = 0; const unsigned short NETWORK_IDLE = 1; const unsigned short NETWORK_LOADING = 2; const unsigned short NETWORK_NO_SOURCE = 3; readonly attribute unsigned short networkState; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString preload; [NewObject] readonly attribute TimeRanges buffered; @@ -63,9 +63,9 @@ interface HTMLMediaElement : HTMLElement { [NewObject] readonly attribute TimeRanges seekable; readonly attribute boolean ended; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean autoplay; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean loop; [Throws] Promise<void> play(); @@ -78,12 +78,12 @@ interface HTMLMediaElement : HTMLElement { // attribute MediaController? controller; // controls - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean controls; [SetterThrows] attribute double volume; attribute boolean muted; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean defaultMuted; // TODO: Bug 847379 diff --git a/dom/webidl/HTMLMenuElement.webidl b/dom/webidl/HTMLMenuElement.webidl index ff81a7c80..1194226c5 100644 --- a/dom/webidl/HTMLMenuElement.webidl +++ b/dom/webidl/HTMLMenuElement.webidl @@ -15,16 +15,17 @@ interface MenuBuilder; // http://www.whatwg.org/specs/web-apps/current-work/#the-menu-element +[HTMLConstructor] interface HTMLMenuElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString label; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLMenuElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean compact; }; diff --git a/dom/webidl/HTMLMenuItemElement.webidl b/dom/webidl/HTMLMenuItemElement.webidl index 7064885a1..f09104501 100644 --- a/dom/webidl/HTMLMenuItemElement.webidl +++ b/dom/webidl/HTMLMenuItemElement.webidl @@ -12,23 +12,24 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-menuitem-element +[HTMLConstructor] interface HTMLMenuItemElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString label; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString icon; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean disabled; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean checked; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString radiogroup; // This should be 'default' but in the IDL implementation // this has been renamed 'defaultChecked'. - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean defaultChecked; // Currently not implemented. diff --git a/dom/webidl/HTMLMetaElement.webidl b/dom/webidl/HTMLMetaElement.webidl index 5b7b0f92c..30014a955 100644 --- a/dom/webidl/HTMLMetaElement.webidl +++ b/dom/webidl/HTMLMetaElement.webidl @@ -12,17 +12,18 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-meta-element +[HTMLConstructor] interface HTMLMetaElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString httpEquiv; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString content; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLMetaElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString scheme; }; diff --git a/dom/webidl/HTMLMeterElement.webidl b/dom/webidl/HTMLMeterElement.webidl index 104e00353..8f93bd71e 100644 --- a/dom/webidl/HTMLMeterElement.webidl +++ b/dom/webidl/HTMLMeterElement.webidl @@ -12,18 +12,19 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-meter-element +[HTMLConstructor] interface HTMLMeterElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute double value; - [SetterThrows] + [CEReactions, SetterThrows] attribute double min; - [SetterThrows] + [CEReactions, SetterThrows] attribute double max; - [SetterThrows] + [CEReactions, SetterThrows] attribute double low; - [SetterThrows] + [CEReactions, SetterThrows] attribute double high; - [SetterThrows] + [CEReactions, SetterThrows] attribute double optimum; readonly attribute NodeList labels; diff --git a/dom/webidl/HTMLModElement.webidl b/dom/webidl/HTMLModElement.webidl index 45086cceb..8ed8b994b 100644 --- a/dom/webidl/HTMLModElement.webidl +++ b/dom/webidl/HTMLModElement.webidl @@ -11,9 +11,10 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#attributes-common-to-ins-and-del-elements +[HTMLConstructor] interface HTMLModElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString cite; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString dateTime; }; diff --git a/dom/webidl/HTMLOListElement.webidl b/dom/webidl/HTMLOListElement.webidl index f41abf3ea..93084c227 100644 --- a/dom/webidl/HTMLOListElement.webidl +++ b/dom/webidl/HTMLOListElement.webidl @@ -13,17 +13,18 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-ol-element +[HTMLConstructor] interface HTMLOListElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean reversed; - [SetterThrows] + [CEReactions, SetterThrows] attribute long start; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLOListElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean compact; }; diff --git a/dom/webidl/HTMLObjectElement.webidl b/dom/webidl/HTMLObjectElement.webidl index ebb95ab09..7c9f7f8bc 100644 --- a/dom/webidl/HTMLObjectElement.webidl +++ b/dom/webidl/HTMLObjectElement.webidl @@ -13,23 +13,23 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-object-element -[NeedResolve, UnsafeInPrerendering] +[HTMLConstructor, NeedResolve, UnsafeInPrerendering] interface HTMLObjectElement : HTMLElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString data; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString type; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean typeMustMatch; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString name; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString useMap; [Pure] readonly attribute HTMLFormElement? form; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString width; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString height; // Not pure: can trigger about:blank instantiation [NeedsSubjectPrincipal] @@ -51,26 +51,26 @@ interface HTMLObjectElement : HTMLElement { // http://www.whatwg.org/specs/web-apps/current-work/#HTMLObjectElement-partial partial interface HTMLObjectElement { - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString align; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString archive; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString code; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute boolean declare; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute unsigned long hspace; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString standby; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute unsigned long vspace; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString codeBase; - [Pure, SetterThrows] + [CEReactions, Pure, SetterThrows] attribute DOMString codeType; - [TreatNullAs=EmptyString, Pure, SetterThrows] + [CEReactions, TreatNullAs=EmptyString, Pure, SetterThrows] attribute DOMString border; }; diff --git a/dom/webidl/HTMLOptGroupElement.webidl b/dom/webidl/HTMLOptGroupElement.webidl index a23aee30d..d46fb869d 100644 --- a/dom/webidl/HTMLOptGroupElement.webidl +++ b/dom/webidl/HTMLOptGroupElement.webidl @@ -11,9 +11,10 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLOptGroupElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean disabled; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString label; }; diff --git a/dom/webidl/HTMLOptionElement.webidl b/dom/webidl/HTMLOptionElement.webidl index c80bedeef..b94afa3e9 100644 --- a/dom/webidl/HTMLOptionElement.webidl +++ b/dom/webidl/HTMLOptionElement.webidl @@ -11,21 +11,21 @@ * and create derivative works of this document. */ -[NamedConstructor=Option(optional DOMString text, optional DOMString value, optional boolean defaultSelected, optional boolean selected)] +[HTMLConstructor, NamedConstructor=Option(optional DOMString text, optional DOMString value, optional boolean defaultSelected, optional boolean selected)] interface HTMLOptionElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean disabled; readonly attribute HTMLFormElement? form; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString label; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean defaultSelected; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean selected; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString value; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString text; readonly attribute long index; }; diff --git a/dom/webidl/HTMLOptionsCollection.webidl b/dom/webidl/HTMLOptionsCollection.webidl index 4d4385d82..d8d1046ad 100644 --- a/dom/webidl/HTMLOptionsCollection.webidl +++ b/dom/webidl/HTMLOptionsCollection.webidl @@ -11,13 +11,14 @@ */ interface HTMLOptionsCollection : HTMLCollection { + [CEReactions] attribute unsigned long length; - [Throws] + [CEReactions, Throws] setter creator void (unsigned long index, HTMLOptionElement? option); - [Throws] + [CEReactions, Throws] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); - [Throws] + [CEReactions, Throws] void remove(long index); - [Throws] + [CEReactions, Throws] attribute long selectedIndex; }; diff --git a/dom/webidl/HTMLOutputElement.webidl b/dom/webidl/HTMLOutputElement.webidl index d0e4ecbe6..4d65209a9 100644 --- a/dom/webidl/HTMLOutputElement.webidl +++ b/dom/webidl/HTMLOutputElement.webidl @@ -12,18 +12,19 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-output-element +[HTMLConstructor] interface HTMLOutputElement : HTMLElement { [PutForwards=value, Constant] readonly attribute DOMTokenList htmlFor; readonly attribute HTMLFormElement? form; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; [Constant] readonly attribute DOMString type; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString defaultValue; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString value; readonly attribute boolean willValidate; diff --git a/dom/webidl/HTMLParagraphElement.webidl b/dom/webidl/HTMLParagraphElement.webidl index 2a626d257..289af4c9f 100644 --- a/dom/webidl/HTMLParagraphElement.webidl +++ b/dom/webidl/HTMLParagraphElement.webidl @@ -12,11 +12,12 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-p-element +[HTMLConstructor] interface HTMLParagraphElement : HTMLElement { }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLParagraphElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; }; diff --git a/dom/webidl/HTMLParamElement.webidl b/dom/webidl/HTMLParamElement.webidl index e2c7e8d7f..cf6b5a35a 100644 --- a/dom/webidl/HTMLParamElement.webidl +++ b/dom/webidl/HTMLParamElement.webidl @@ -13,17 +13,18 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-param-element +[HTMLConstructor] interface HTMLParamElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString value; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLParamElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString type; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString valueType; }; diff --git a/dom/webidl/HTMLPictureElement.webidl b/dom/webidl/HTMLPictureElement.webidl index eff30f750..387eee78d 100644 --- a/dom/webidl/HTMLPictureElement.webidl +++ b/dom/webidl/HTMLPictureElement.webidl @@ -4,5 +4,6 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ +[HTMLConstructor] interface HTMLPictureElement : HTMLElement { }; diff --git a/dom/webidl/HTMLPreElement.webidl b/dom/webidl/HTMLPreElement.webidl index db220b74c..6929cd533 100644 --- a/dom/webidl/HTMLPreElement.webidl +++ b/dom/webidl/HTMLPreElement.webidl @@ -12,11 +12,12 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-pre-element +[HTMLConstructor] interface HTMLPreElement : HTMLElement { }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLPreElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute long width; }; diff --git a/dom/webidl/HTMLProgressElement.webidl b/dom/webidl/HTMLProgressElement.webidl index 028728e22..564b9f2a4 100644 --- a/dom/webidl/HTMLProgressElement.webidl +++ b/dom/webidl/HTMLProgressElement.webidl @@ -11,10 +11,11 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLProgressElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute double value; - [SetterThrows] + [CEReactions, SetterThrows] attribute double max; readonly attribute double position; readonly attribute NodeList labels; diff --git a/dom/webidl/HTMLQuoteElement.webidl b/dom/webidl/HTMLQuoteElement.webidl index a266dd353..c999b1478 100644 --- a/dom/webidl/HTMLQuoteElement.webidl +++ b/dom/webidl/HTMLQuoteElement.webidl @@ -12,8 +12,9 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-blockquote-element +[HTMLConstructor] interface HTMLQuoteElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString cite; }; diff --git a/dom/webidl/HTMLScriptElement.webidl b/dom/webidl/HTMLScriptElement.webidl index 5b64c42d7..286c0673d 100644 --- a/dom/webidl/HTMLScriptElement.webidl +++ b/dom/webidl/HTMLScriptElement.webidl @@ -8,35 +8,36 @@ * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis */ +[HTMLConstructor] interface HTMLScriptElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString src; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; - [SetterThrows, Pref="dom.moduleScripts.enabled"] + [CEReactions, SetterThrows, Pref="dom.moduleScripts.enabled"] attribute boolean noModule; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString charset; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean async; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean defer; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString? crossOrigin; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString text; }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLScriptElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString event; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString htmlFor; }; // https://w3c.github.io/webappsec/specs/subresourceintegrity/#htmlscriptelement-1 partial interface HTMLScriptElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString integrity; }; diff --git a/dom/webidl/HTMLSelectElement.webidl b/dom/webidl/HTMLSelectElement.webidl index b18ca3634..537e9d84f 100644 --- a/dom/webidl/HTMLSelectElement.webidl +++ b/dom/webidl/HTMLSelectElement.webidl @@ -7,22 +7,23 @@ * http://www.whatwg.org/html/#the-select-element */ +[HTMLConstructor] interface HTMLSelectElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean autofocus; - [Pref="dom.forms.autocomplete.experimental", SetterThrows, Pure] + [CEReactions, Pref="dom.forms.autocomplete.experimental", SetterThrows, Pure] attribute DOMString autocomplete; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean disabled; [Pure] readonly attribute HTMLFormElement? form; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean multiple; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean required; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute unsigned long size; [Pure] @@ -30,14 +31,15 @@ interface HTMLSelectElement : HTMLElement { [Constant] readonly attribute HTMLOptionsCollection options; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute unsigned long length; getter Element? item(unsigned long index); HTMLOptionElement? namedItem(DOMString name); - [Throws] + [CEReactions, Throws] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + [CEReactions] void remove(long index); - [Throws] + [CEReactions, Throws] setter creator void (unsigned long index, HTMLOptionElement? option); readonly attribute HTMLCollection selectedOptions; @@ -56,6 +58,7 @@ interface HTMLSelectElement : HTMLElement { readonly attribute NodeList labels; // https://www.w3.org/Bugs/Public/show_bug.cgi?id=20720 + [CEReactions] void remove(); }; diff --git a/dom/webidl/HTMLSourceElement.webidl b/dom/webidl/HTMLSourceElement.webidl index 10b8e6fd5..55f25e469 100644 --- a/dom/webidl/HTMLSourceElement.webidl +++ b/dom/webidl/HTMLSourceElement.webidl @@ -11,18 +11,19 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLSourceElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString src; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; }; partial interface HTMLSourceElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString srcset; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString sizes; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString media; }; diff --git a/dom/webidl/HTMLSpanElement.webidl b/dom/webidl/HTMLSpanElement.webidl index 43a2d97f2..6f65cdfb3 100644 --- a/dom/webidl/HTMLSpanElement.webidl +++ b/dom/webidl/HTMLSpanElement.webidl @@ -12,4 +12,5 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-span-element +[HTMLConstructor] interface HTMLSpanElement : HTMLElement {}; diff --git a/dom/webidl/HTMLStyleElement.webidl b/dom/webidl/HTMLStyleElement.webidl index 7ed01a8f1..3cacbf62f 100644 --- a/dom/webidl/HTMLStyleElement.webidl +++ b/dom/webidl/HTMLStyleElement.webidl @@ -8,12 +8,13 @@ * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis */ +[HTMLConstructor] interface HTMLStyleElement : HTMLElement { [Pure] attribute boolean disabled; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString media; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString type; [SetterThrows, Pure] attribute boolean scoped; diff --git a/dom/webidl/HTMLTableCaptionElement.webidl b/dom/webidl/HTMLTableCaptionElement.webidl index 688b9f925..48c9d354a 100644 --- a/dom/webidl/HTMLTableCaptionElement.webidl +++ b/dom/webidl/HTMLTableCaptionElement.webidl @@ -11,9 +11,10 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLTableCaptionElement : HTMLElement {}; partial interface HTMLTableCaptionElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; }; diff --git a/dom/webidl/HTMLTableCellElement.webidl b/dom/webidl/HTMLTableCellElement.webidl index e970a5040..aff94914f 100644 --- a/dom/webidl/HTMLTableCellElement.webidl +++ b/dom/webidl/HTMLTableCellElement.webidl @@ -11,41 +11,43 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLTableCellElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long colSpan; - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long rowSpan; //[PutForwards=value] readonly attribute DOMTokenList headers; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString headers; readonly attribute long cellIndex; // Mozilla-specific extensions - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString abbr; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString scope; }; partial interface HTMLTableCellElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString axis; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString height; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString width; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString ch; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString chOff; - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean noWrap; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString vAlign; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString bgColor; }; diff --git a/dom/webidl/HTMLTableColElement.webidl b/dom/webidl/HTMLTableColElement.webidl index c927541a3..02be4590a 100644 --- a/dom/webidl/HTMLTableColElement.webidl +++ b/dom/webidl/HTMLTableColElement.webidl @@ -11,20 +11,21 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLTableColElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long span; }; partial interface HTMLTableColElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString ch; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString chOff; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString vAlign; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString width; }; diff --git a/dom/webidl/HTMLTableElement.webidl b/dom/webidl/HTMLTableElement.webidl index a06f590e0..f81e00041 100644 --- a/dom/webidl/HTMLTableElement.webidl +++ b/dom/webidl/HTMLTableElement.webidl @@ -11,45 +11,52 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLTableElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute HTMLTableCaptionElement? caption; HTMLElement createCaption(); + [CEReactions] void deleteCaption(); - [SetterThrows] + [CEReactions, SetterThrows] attribute HTMLTableSectionElement? tHead; HTMLElement createTHead(); + [CEReactions] void deleteTHead(); - [SetterThrows] + [CEReactions, SetterThrows] attribute HTMLTableSectionElement? tFoot; HTMLElement createTFoot(); + [CEReactions] void deleteTFoot(); readonly attribute HTMLCollection tBodies; HTMLElement createTBody(); readonly attribute HTMLCollection rows; [Throws] HTMLElement insertRow(optional long index = -1); - [Throws] + [CEReactions, Throws] void deleteRow(long index); // attribute boolean sortable; //void stopSorting(); }; partial interface HTMLTableElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString border; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString frame; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString rules; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString summary; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString width; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellPadding; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellSpacing; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString bgColor; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString cellPadding; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString cellSpacing; }; diff --git a/dom/webidl/HTMLTableRowElement.webidl b/dom/webidl/HTMLTableRowElement.webidl index 2a356a20e..153d271f1 100644 --- a/dom/webidl/HTMLTableRowElement.webidl +++ b/dom/webidl/HTMLTableRowElement.webidl @@ -11,25 +11,27 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLTableRowElement : HTMLElement { readonly attribute long rowIndex; readonly attribute long sectionRowIndex; readonly attribute HTMLCollection cells; - [Throws] + [CEReactions, Throws] HTMLElement insertCell(optional long index = -1); [Throws] void deleteCell(long index); }; partial interface HTMLTableRowElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString ch; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString chOff; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString vAlign; - [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; + [CEReactions, TreatNullAs=EmptyString, SetterThrows] + attribute DOMString bgColor; }; diff --git a/dom/webidl/HTMLTableSectionElement.webidl b/dom/webidl/HTMLTableSectionElement.webidl index 310d0ece6..a71682fc1 100644 --- a/dom/webidl/HTMLTableSectionElement.webidl +++ b/dom/webidl/HTMLTableSectionElement.webidl @@ -11,21 +11,22 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLTableSectionElement : HTMLElement { readonly attribute HTMLCollection rows; [Throws] HTMLElement insertRow(optional long index = -1); - [Throws] + [CEReactions, Throws] void deleteRow(long index); }; partial interface HTMLTableSectionElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString align; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString ch; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString chOff; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString vAlign; }; diff --git a/dom/webidl/HTMLTemplateElement.webidl b/dom/webidl/HTMLTemplateElement.webidl index c518995f6..f77eeaa42 100644 --- a/dom/webidl/HTMLTemplateElement.webidl +++ b/dom/webidl/HTMLTemplateElement.webidl @@ -9,6 +9,7 @@ * liability, trademark and document use rules apply. */ +[HTMLConstructor] interface HTMLTemplateElement : HTMLElement { readonly attribute DocumentFragment content; }; diff --git a/dom/webidl/HTMLTextAreaElement.webidl b/dom/webidl/HTMLTextAreaElement.webidl index 4df687a0b..7a181bf39 100644 --- a/dom/webidl/HTMLTextAreaElement.webidl +++ b/dom/webidl/HTMLTextAreaElement.webidl @@ -14,40 +14,41 @@ interface nsIEditor; interface MozControllers; +[HTMLConstructor] interface HTMLTextAreaElement : HTMLElement { // attribute DOMString autocomplete; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean autofocus; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute unsigned long cols; // attribute DOMString dirName; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean disabled; [Pure] readonly attribute HTMLFormElement? form; // attribute DOMString inputMode; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute long maxLength; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute long minLength; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString name; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString placeholder; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean readOnly; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean required; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute unsigned long rows; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString wrap; [Constant] readonly attribute DOMString type; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString defaultValue; - [TreatNullAs=EmptyString] attribute DOMString value; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString value; readonly attribute unsigned long textLength; readonly attribute boolean willValidate; diff --git a/dom/webidl/HTMLTimeElement.webidl b/dom/webidl/HTMLTimeElement.webidl index 517ca9981..35c06fef3 100644 --- a/dom/webidl/HTMLTimeElement.webidl +++ b/dom/webidl/HTMLTimeElement.webidl @@ -7,7 +7,8 @@ * http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-time-element */ +[HTMLConstructor] interface HTMLTimeElement : HTMLElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString dateTime; }; diff --git a/dom/webidl/HTMLTitleElement.webidl b/dom/webidl/HTMLTitleElement.webidl index e6c8f2c61..bbce70bb2 100644 --- a/dom/webidl/HTMLTitleElement.webidl +++ b/dom/webidl/HTMLTitleElement.webidl @@ -7,7 +7,8 @@ * http://www.whatwg.org/specs/web-apps/current-work/#the-title-element */ +[HTMLConstructor] interface HTMLTitleElement : HTMLElement { - [Throws] + [CEReactions, Throws] attribute DOMString text; }; diff --git a/dom/webidl/HTMLTrackElement.webidl b/dom/webidl/HTMLTrackElement.webidl index dd88e9beb..cbb70db2a 100644 --- a/dom/webidl/HTMLTrackElement.webidl +++ b/dom/webidl/HTMLTrackElement.webidl @@ -7,16 +7,17 @@ * http://www.whatwg.org/specs/web-apps/current-work/#the-track-element */ +[HTMLConstructor] interface HTMLTrackElement : HTMLElement { - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString kind; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString src; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString srclang; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString label; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute boolean default; const unsigned short NONE = 0; diff --git a/dom/webidl/HTMLUListElement.webidl b/dom/webidl/HTMLUListElement.webidl index 0528198c9..725437494 100644 --- a/dom/webidl/HTMLUListElement.webidl +++ b/dom/webidl/HTMLUListElement.webidl @@ -13,13 +13,14 @@ */ // http://www.whatwg.org/specs/web-apps/current-work/#the-ul-element +[HTMLConstructor] interface HTMLUListElement : HTMLElement { }; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLUListElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute boolean compact; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString type; }; diff --git a/dom/webidl/HTMLVideoElement.webidl b/dom/webidl/HTMLVideoElement.webidl index af28d5418..5ae4c016f 100644 --- a/dom/webidl/HTMLVideoElement.webidl +++ b/dom/webidl/HTMLVideoElement.webidl @@ -11,14 +11,15 @@ * and create derivative works of this document. */ +[HTMLConstructor] interface HTMLVideoElement : HTMLMediaElement { - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long width; - [SetterThrows] + [CEReactions, SetterThrows] attribute unsigned long height; readonly attribute unsigned long videoWidth; readonly attribute unsigned long videoHeight; - [SetterThrows] + [CEReactions, SetterThrows] attribute DOMString poster; }; diff --git a/dom/webidl/NamedNodeMap.webidl b/dom/webidl/NamedNodeMap.webidl index 41fbfcbb4..88e2ff51f 100644 --- a/dom/webidl/NamedNodeMap.webidl +++ b/dom/webidl/NamedNodeMap.webidl @@ -6,17 +6,17 @@ [LegacyUnenumerableNamedProperties] interface NamedNodeMap { getter Attr? getNamedItem(DOMString name); - [Throws, BinaryName="setNamedItemNS"] + [CEReactions, Throws, BinaryName="setNamedItemNS"] Attr? setNamedItem(Attr arg); - [Throws] + [CEReactions, Throws] Attr removeNamedItem(DOMString name); getter Attr? item(unsigned long index); readonly attribute unsigned long length; Attr? getNamedItemNS(DOMString? namespaceURI, DOMString localName); - [Throws] + [CEReactions, Throws] Attr? setNamedItemNS(Attr arg); - [Throws] + [CEReactions, Throws] Attr removeNamedItemNS(DOMString? namespaceURI, DOMString localName); }; diff --git a/dom/webidl/Node.webidl b/dom/webidl/Node.webidl index 7d18899b0..8b6dca788 100644 --- a/dom/webidl/Node.webidl +++ b/dom/webidl/Node.webidl @@ -57,21 +57,21 @@ interface Node : EventTarget { [Pure] readonly attribute Node? nextSibling; - [SetterThrows, Pure] + [CEReactions, SetterThrows, Pure] attribute DOMString? nodeValue; - [Throws, Pure] + [CEReactions, Throws, Pure] attribute DOMString? textContent; - [Throws] + [CEReactions, Throws] Node insertBefore(Node node, Node? child); - [Throws] + [CEReactions, Throws] Node appendChild(Node node); - [Throws] + [CEReactions, Throws] Node replaceChild(Node node, Node child); - [Throws] + [CEReactions, Throws] Node removeChild(Node child); void normalize(); - [Throws] + [CEReactions, Throws] Node cloneNode(optional boolean deep = false); [Pure] boolean isSameNode(Node? node); diff --git a/dom/webidl/ParentNode.webidl b/dom/webidl/ParentNode.webidl index 5834b9be3..aa6ca5db2 100644 --- a/dom/webidl/ParentNode.webidl +++ b/dom/webidl/ParentNode.webidl @@ -18,8 +18,8 @@ interface ParentNode { [Pure] readonly attribute unsigned long childElementCount; - [Throws, Unscopable] + [CEReactions, Throws, Unscopable] void prepend((Node or DOMString)... nodes); - [Throws, Unscopable] + [CEReactions, Throws, Unscopable] void append((Node or DOMString)... nodes); }; diff --git a/dom/webidl/Range.webidl b/dom/webidl/Range.webidl index ac8e1ebf0..6b8be970b 100644 --- a/dom/webidl/Range.webidl +++ b/dom/webidl/Range.webidl @@ -50,15 +50,15 @@ interface Range { const unsigned short END_TO_START = 3; [Throws] short compareBoundaryPoints(unsigned short how, Range sourceRange); - [Throws] + [CEReactions, Throws] void deleteContents(); - [Throws] + [CEReactions, Throws] DocumentFragment extractContents(); - [Throws] + [CEReactions, Throws] DocumentFragment cloneContents(); - [Throws] + [CEReactions, Throws] void insertNode(Node node); - [Throws] + [CEReactions, Throws] void surroundContents(Node newParent); Range cloneRange(); @@ -77,7 +77,7 @@ interface Range { // http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment partial interface Range { - [Throws] + [CEReactions, Throws] DocumentFragment createContextualFragment(DOMString fragment); }; diff --git a/dom/webidl/ShadowRoot.webidl b/dom/webidl/ShadowRoot.webidl index a6c6de254..8dd069244 100644 --- a/dom/webidl/ShadowRoot.webidl +++ b/dom/webidl/ShadowRoot.webidl @@ -17,7 +17,7 @@ interface ShadowRoot : DocumentFragment HTMLCollection getElementsByTagName(DOMString localName); HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); HTMLCollection getElementsByClassName(DOMString classNames); - [SetterThrows,TreatNullAs=EmptyString] + [CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString innerHTML; readonly attribute Element host; readonly attribute ShadowRoot? olderShadowRoot; diff --git a/dom/webidl/WebComponents.webidl b/dom/webidl/WebComponents.webidl index 3dfb960bc..f9bb8214a 100644 --- a/dom/webidl/WebComponents.webidl +++ b/dom/webidl/WebComponents.webidl @@ -10,15 +10,19 @@ * liability, trademark and document use rules apply. */ -callback LifecycleCreatedCallback = void(); -callback LifecycleAttachedCallback = void(); -callback LifecycleDetachedCallback = void(); -callback LifecycleAttributeChangedCallback = void(DOMString attrName, DOMString? oldValue, DOMString? newValue); +callback LifecycleConnectedCallback = void(); +callback LifecycleDisconnectedCallback = void(); +callback LifecycleAdoptedCallback = void(Document? oldDocument, + Document? newDocment); +callback LifecycleAttributeChangedCallback = void(DOMString attrName, + DOMString? oldValue, + DOMString? newValue, + DOMString? namespaceURI); dictionary LifecycleCallbacks { - LifecycleCreatedCallback? createdCallback; - LifecycleAttachedCallback? attachedCallback; - LifecycleDetachedCallback? detachedCallback; + LifecycleConnectedCallback? connectedCallback; + LifecycleDisconnectedCallback? disconnectedCallback; + LifecycleAdoptedCallback? adoptedCallback; LifecycleAttributeChangedCallback? attributeChangedCallback; }; diff --git a/dom/webidl/Window.webidl b/dom/webidl/Window.webidl index 468f1cc8a..ab03bf40b 100644 --- a/dom/webidl/Window.webidl +++ b/dom/webidl/Window.webidl @@ -78,9 +78,6 @@ typedef any Transferable; [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] boolean confirm(optional DOMString message = ""); [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] DOMString? prompt(optional DOMString message = "", optional DOMString default = ""); [Throws, UnsafeInPrerendering] void print(); - //[Throws] any showModalDialog(DOMString url, optional any argument); - [Throws, Func="nsGlobalWindow::IsShowModalDialogEnabled", UnsafeInPrerendering, NeedsSubjectPrincipal] - any showModalDialog(DOMString url, optional any argument, optional DOMString options = ""); [Throws, CrossOriginCallable, NeedsSubjectPrincipal] void postMessage(any message, DOMString targetOrigin, optional sequence<Transferable> transfer); @@ -240,17 +237,6 @@ interface SpeechSynthesisGetter { Window implements SpeechSynthesisGetter; #endif -// http://www.whatwg.org/specs/web-apps/current-work/ -[NoInterfaceObject] -interface WindowModal { - [Throws, Func="nsGlobalWindow::IsModalContentWindow", NeedsSubjectPrincipal] - readonly attribute any dialogArguments; - - [Throws, Func="nsGlobalWindow::IsModalContentWindow", NeedsSubjectPrincipal] - attribute any returnValue; -}; -Window implements WindowModal; - // Mozilla-specific stuff partial interface Window { //[NewObject, Throws] CSSStyleDeclaration getDefaultComputedStyle(Element elt, optional DOMString pseudoElt = ""); diff --git a/dom/webidl/XSLTProcessor.webidl b/dom/webidl/XSLTProcessor.webidl index ce9ed846f..276e1b3fa 100644 --- a/dom/webidl/XSLTProcessor.webidl +++ b/dom/webidl/XSLTProcessor.webidl @@ -30,7 +30,7 @@ interface XSLTProcessor { * @param output This document is used to generate the output * @return DocumentFragment The result of the transformation */ - [Throws] + [CEReactions, Throws] DocumentFragment transformToFragment(Node source, Document output); @@ -41,7 +41,7 @@ interface XSLTProcessor { * @param source The node to be transformed * @return Document The result of the transformation */ - [Throws] + [CEReactions, Throws] Document transformToDocument(Node source); /** diff --git a/dom/xul/nsXULElement.cpp b/dom/xul/nsXULElement.cpp index e351a46eb..a854f53ec 100644 --- a/dom/xul/nsXULElement.cpp +++ b/dom/xul/nsXULElement.cpp @@ -174,33 +174,6 @@ nsXULElement::~nsXULElement() { } -nsXULElement::nsXULSlots::nsXULSlots() - : nsXULElement::nsDOMSlots() -{ -} - -nsXULElement::nsXULSlots::~nsXULSlots() -{ - NS_IF_RELEASE(mControllers); // Forces release - nsCOMPtr<nsIFrameLoader> frameLoader = do_QueryInterface(mFrameLoaderOrOpener); - if (frameLoader) { - static_cast<nsFrameLoader*>(frameLoader.get())->Destroy(); - } -} - -void -nsXULElement::nsXULSlots::Traverse(nsCycleCollectionTraversalCallback &cb) -{ - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mFrameLoaderOrOpener"); - cb.NoteXPCOMChild(mFrameLoaderOrOpener); -} - -nsINode::nsSlots* -nsXULElement::CreateSlots() -{ - return new nsXULSlots(); -} - void nsXULElement::MaybeUpdatePrivateLifetime() { @@ -326,12 +299,7 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsXULElement) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXULElement, nsStyledElement) - { - nsXULSlots* slots = static_cast<nsXULSlots*>(tmp->GetExistingSlots()); - if (slots) { - slots->Traverse(cb); - } - } + NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsXULElement, @@ -895,9 +863,9 @@ nsXULElement::UnbindFromTree(bool aDeep, bool aNullParent) // mDocument in nsGlobalWindow::SetDocShell, but I'm not // sure whether that would fix all possible cycles through // mControllers.) - nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingDOMSlots()); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { - NS_IF_RELEASE(slots->mControllers); + slots->mControllers = nullptr; RefPtr<nsFrameLoader> frameLoader = GetFrameLoader(); if (frameLoader) { frameLoader->Destroy(); @@ -1241,9 +1209,9 @@ nsXULElement::RemoveBroadcaster(const nsAString & broadcasterId) void nsXULElement::DestroyContent() { - nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingDOMSlots()); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { - NS_IF_RELEASE(slots->mControllers); + slots->mControllers = nullptr; RefPtr<nsFrameLoader> frameLoader = GetFrameLoader(); if (frameLoader) { frameLoader->Destroy(); @@ -1473,7 +1441,7 @@ nsIControllers* nsXULElement::GetControllers(ErrorResult& rv) { if (! Controllers()) { - nsDOMSlots* slots = DOMSlots(); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); rv = NS_NewXULControllers(nullptr, NS_GET_IID(nsIControllers), reinterpret_cast<void**>(&slots->mControllers)); @@ -1578,7 +1546,7 @@ nsXULElement::LoadSrc() RefPtr<nsFrameLoader> frameLoader = GetFrameLoader(); if (!frameLoader) { // Check if we have an opener we need to be setting - nsXULSlots* slots = static_cast<nsXULSlots*>(Slots()); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); nsCOMPtr<nsPIDOMWindowOuter> opener = do_QueryInterface(slots->mFrameLoaderOrOpener); if (!opener) { // If we are a content-primary xul-browser, we want to take the opener property! @@ -1624,7 +1592,7 @@ nsXULElement::GetFrameLoaderXPCOM(nsIFrameLoader **aFrameLoader) already_AddRefed<nsFrameLoader> nsXULElement::GetFrameLoader() { - nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingSlots()); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (!slots) return nullptr; @@ -1646,7 +1614,7 @@ nsXULElement::GetParentApplication(mozIApplication** aApplication) void nsXULElement::PresetOpenerWindow(mozIDOMWindowProxy* aWindow, ErrorResult& aRv) { - nsXULSlots* slots = static_cast<nsXULSlots*>(Slots()); + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); MOZ_ASSERT(!slots->mFrameLoaderOrOpener, "A frameLoader or opener is present when calling PresetOpenerWindow"); slots->mFrameLoaderOrOpener = aWindow; @@ -1662,7 +1630,7 @@ nsXULElement::SetIsPrerendered() void nsXULElement::InternalSetFrameLoader(nsIFrameLoader* aNewFrameLoader) { - nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingDOMSlots()); + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); MOZ_ASSERT(slots); slots->mFrameLoaderOrOpener = aNewFrameLoader; diff --git a/dom/xul/nsXULElement.h b/dom/xul/nsXULElement.h index 164afacd3..80424412f 100644 --- a/dom/xul/nsXULElement.h +++ b/dom/xul/nsXULElement.h @@ -609,19 +609,6 @@ protected: nsresult AddPopupListener(nsIAtom* aName); - class nsXULSlots : public mozilla::dom::Element::nsDOMSlots - { - public: - nsXULSlots(); - virtual ~nsXULSlots(); - - void Traverse(nsCycleCollectionTraversalCallback &cb); - - nsCOMPtr<nsISupports> mFrameLoaderOrOpener; - }; - - virtual nsINode::nsSlots* CreateSlots() override; - nsresult LoadSrc(); /** @@ -677,8 +664,8 @@ protected: // Internal accessor. This shadows the 'Slots', and returns // appropriate value. nsIControllers *Controllers() { - nsDOMSlots* slots = GetExistingDOMSlots(); - return slots ? slots->mControllers : nullptr; + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); + return slots ? slots->mControllers.get() : nullptr; } void UnregisterAccessKey(const nsAString& aOldValue); diff --git a/embedding/browser/nsIWebBrowserChrome.idl b/embedding/browser/nsIWebBrowserChrome.idl index 40f03cbe4..32dba4219 100644 --- a/embedding/browser/nsIWebBrowserChrome.idl +++ b/embedding/browser/nsIWebBrowserChrome.idl @@ -77,9 +77,6 @@ interface nsIWebBrowserChrome : nsISupports const unsigned long CHROME_NON_PRIVATE_WINDOW = 0x00020000; const unsigned long CHROME_PRIVATE_LIFETIME = 0x00040000; - // Whether this was opened by nsGlobalWindow::ShowModalDialog. - const unsigned long CHROME_MODAL_CONTENT_WINDOW = 0x00080000; - // Whether this window should use remote (out-of-process) tabs. const unsigned long CHROME_REMOTE_WINDOW = 0x00100000; diff --git a/embedding/components/windowwatcher/nsWindowWatcher.cpp b/embedding/components/windowwatcher/nsWindowWatcher.cpp index e0e8b4bef..3732ea66d 100644 --- a/embedding/components/windowwatcher/nsWindowWatcher.cpp +++ b/embedding/components/windowwatcher/nsWindowWatcher.cpp @@ -683,7 +683,6 @@ nsWindowWatcher::OpenWindowInternal(mozIDOMWindowProxy* aParent, bool windowNeedsName = false; bool windowIsModal = false; bool uriToLoadIsChrome = false; - bool windowIsModalContentDialog = false; uint32_t chromeFlags; nsAutoString name; // string version of aName @@ -775,30 +774,12 @@ nsWindowWatcher::OpenWindowInternal(mozIDOMWindowProxy* aParent, } else { chromeFlags = CalculateChromeFlagsForChild(features); - // Until ShowModalDialog is removed, it's still possible for content to - // request dialogs, but only in single-process mode. if (aDialog) { MOZ_ASSERT(XRE_IsParentProcess()); chromeFlags |= nsIWebBrowserChrome::CHROME_OPENAS_DIALOG; } } - // If we're not called through our JS version of the API, and we got - // our internal modal option, treat the window we're opening as a - // modal content window (and set the modal chrome flag). - if (!aCalledFromJS && aArgv && - WinHasOption(features, "-moz-internal-modal", 0, nullptr)) { - windowIsModalContentDialog = true; - - // CHROME_MODAL gets inherited by dependent windows, which affects various - // platform-specific window state (especially on OSX). So we need some way - // to determine that this window was actually opened by nsGlobalWindow:: - // ShowModalDialog(), and that somebody is actually going to be watching - // for return values and all that. - chromeFlags |= nsIWebBrowserChrome::CHROME_MODAL_CONTENT_WINDOW; - chromeFlags |= nsIWebBrowserChrome::CHROME_MODAL; - } - SizeSpec sizeSpec; CalcSizeSpec(features, sizeSpec); @@ -1079,7 +1060,7 @@ nsWindowWatcher::OpenWindowInternal(mozIDOMWindowProxy* aParent, MaybeDisablePersistence(features, newTreeOwner); } - if ((aDialog || windowIsModalContentDialog) && aArgv) { + if (aDialog && aArgv) { // Set the args on the new window. nsCOMPtr<nsPIDOMWindowOuter> piwin(do_QueryInterface(*aResult)); NS_ENSURE_TRUE(piwin, NS_ERROR_UNEXPECTED); @@ -1268,8 +1249,7 @@ nsWindowWatcher::OpenWindowInternal(mozIDOMWindowProxy* aParent, SizeOpenedWindow(newTreeOwner, aParent, isCallerChrome, sizeSpec); } - // XXXbz isn't windowIsModal always true when windowIsModalContentDialog? - if (windowIsModal || windowIsModalContentDialog) { + if (windowIsModal) { nsCOMPtr<nsIDocShellTreeOwner> newTreeOwner; newDocShellItem->GetTreeOwner(getter_AddRefs(newTreeOwner)); nsCOMPtr<nsIWebBrowserChrome> newChrome(do_GetInterface(newTreeOwner)); diff --git a/gfx/gl/GLContext.cpp b/gfx/gl/GLContext.cpp index 1515b8627..3fb87822d 100644 --- a/gfx/gl/GLContext.cpp +++ b/gfx/gl/GLContext.cpp @@ -578,6 +578,10 @@ GLContext::LoadFeatureSymbols(const char* prefix, bool trygl, const SymLoadStruc bool GLContext::InitWithPrefixImpl(const char* prefix, bool trygl) { + // wglGetProcAddress requires a current context. + if (!MakeCurrent(true)) + return false; + mWorkAroundDriverBugs = gfxPrefs::WorkAroundDriverBugs(); const SymLoadStruct coreSymbols[] = { @@ -714,7 +718,6 @@ GLContext::InitWithPrefixImpl(const char* prefix, bool trygl) //////////////// - MakeCurrent(); MOZ_ASSERT(mProfile != ContextProfile::Unknown); uint32_t version = 0; @@ -2253,13 +2256,11 @@ GLContext::MarkDestroyed() mBlitHelper = nullptr; mReadTexImageHelper = nullptr; - if (MakeCurrent()) { + mIsDestroyed = true; + mSymbols.Zero(); + if (MakeCurrent(true)) { mTexGarbageBin->GLContextTeardown(); - } else { - NS_WARNING("MakeCurrent() failed during MarkDestroyed! Skipping GL object teardown."); } - - mSymbols.Zero(); } #ifdef MOZ_GL_DEBUG diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h index 6e3e22207..4c1f4f55c 100644 --- a/gfx/gl/GLContext.h +++ b/gfx/gl/GLContext.h @@ -353,6 +353,7 @@ public: protected: bool mIsOffscreen; bool mContextLost; + bool mIsDestroyed = false; /** * mVersion store the OpenGL's version, multiplied by 100. For example, if @@ -3265,7 +3266,7 @@ public: #endif return MakeCurrentImpl(aForce); } - + virtual bool Init() = 0; virtual bool SetupLookupFunction() = 0; @@ -3273,8 +3274,7 @@ public: virtual void ReleaseSurface() {} bool IsDestroyed() { - // MarkDestroyed will mark all these as null. - return mSymbols.fUseProgram == nullptr; + return mIsDestroyed; } GLContext* GetSharedContext() { return mSharedContext; } diff --git a/gfx/gl/GLContextCGL.h b/gfx/gl/GLContextCGL.h index 1a29f3d15..23616d861 100644 --- a/gfx/gl/GLContextCGL.h +++ b/gfx/gl/GLContextCGL.h @@ -24,7 +24,7 @@ class GLContextCGL : public GLContext { friend class GLContextProviderCGL; - NSOpenGLContext* mContext; + NSOpenGLContext* const mContext; public: MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(GLContextCGL, override) diff --git a/gfx/gl/GLContextGLX.h b/gfx/gl/GLContextGLX.h index 1f2cee08d..0463669e9 100644 --- a/gfx/gl/GLContextGLX.h +++ b/gfx/gl/GLContextGLX.h @@ -86,6 +86,7 @@ private: GLXContext mContext; Display* mDisplay; GLXDrawable mDrawable; + Maybe<GLXDrawable> mOverrideDrawable; bool mDeleteDrawable; bool mDoubleBuffered; diff --git a/gfx/gl/GLContextProviderCGL.mm b/gfx/gl/GLContextProviderCGL.mm index ceab3046c..7cc89eac9 100644 --- a/gfx/gl/GLContextProviderCGL.mm +++ b/gfx/gl/GLContextProviderCGL.mm @@ -83,26 +83,13 @@ GLContextCGL::GLContextCGL(CreateContextFlags flags, const SurfaceCaps& caps, GLContextCGL::~GLContextCGL() { MarkDestroyed(); - - if (mContext) { - if ([NSOpenGLContext currentContext] == mContext) { - // Clear the current context before releasing. If we don't do - // this, the next time we call [NSOpenGLContext currentContext], - // "invalid context" will be printed to the console. - [NSOpenGLContext clearCurrentContext]; - } - [mContext release]; - } - + [mContext release]; } bool GLContextCGL::Init() { - if (!InitWithPrefix("gl", true)) - return false; - - return true; + return InitWithPrefix("gl", true); } CGLContextObj @@ -114,6 +101,11 @@ GLContextCGL::GetCGLContext() const bool GLContextCGL::MakeCurrentImpl(bool aForce) { + if (IsDestroyed()) { + [NSOpenGLContext clearCurrentContext]; + return false; + } + if (!aForce && [NSOpenGLContext currentContext] == mContext) { return true; } diff --git a/gfx/gl/GLContextProviderEAGL.mm b/gfx/gl/GLContextProviderEAGL.mm index 507616e2f..11c7cce77 100644 --- a/gfx/gl/GLContextProviderEAGL.mm +++ b/gfx/gl/GLContextProviderEAGL.mm @@ -36,35 +36,24 @@ GLContextEAGL::GLContextEAGL(CreateContextFlags flags, const SurfaceCaps& caps, GLContextEAGL::~GLContextEAGL() { - MakeCurrent(); - - if (mBackbufferFB) { - fDeleteFramebuffers(1, &mBackbufferFB); - } - - if (mBackbufferRB) { - fDeleteRenderbuffers(1, &mBackbufferRB); + if (MakeCurrent()) { + if (mBackbufferFB) { + fDeleteFramebuffers(1, &mBackbufferFB); + } + if (mBackbufferRB) { + fDeleteRenderbuffers(1, &mBackbufferRB); + } } + mLayer = nil; MarkDestroyed(); - - if (mLayer) { - mLayer = nil; - } - - if (mContext) { - [EAGLContext setCurrentContext:nil]; - [mContext release]; - } + [mContext release]; } bool GLContextEAGL::Init() { - if (!InitWithPrefix("gl", true)) - return false; - - return true; + return InitWithPrefix("gl", true); } bool @@ -120,12 +109,12 @@ GLContextEAGL::MakeCurrentImpl(bool aForce) return true; } - if (mContext) { - if(![EAGLContext setCurrentContext:mContext]) { - return false; - } + if (IsDestroyed()) { + [EAGLContext setCurrentContext:nil]; + return false; } - return true; + + return [EAGLContext setCurrentContext:mContext]; } bool diff --git a/gfx/gl/GLContextProviderEGL.cpp b/gfx/gl/GLContextProviderEGL.cpp index 7979f3bf0..23fc3472d 100644 --- a/gfx/gl/GLContextProviderEGL.cpp +++ b/gfx/gl/GLContextProviderEGL.cpp @@ -150,13 +150,12 @@ is_power_of_two(int v) } static void -DestroySurface(EGLSurface oldSurface) { - if (oldSurface != EGL_NO_SURFACE) { - sEGLLibrary.fMakeCurrent(EGL_DISPLAY(), - EGL_NO_SURFACE, EGL_NO_SURFACE, - EGL_NO_CONTEXT); - sEGLLibrary.fDestroySurface(EGL_DISPLAY(), oldSurface); +DestroySurface(const EGLSurface surf) { + if (!surf) { + // Nothing to do. + return; } + sEGLLibrary.fDestroySurface(EGL_DISPLAY(), surf); } static EGLSurface @@ -223,7 +222,7 @@ GLContextEGL::~GLContextEGL() sEGLLibrary.fDestroyContext(EGL_DISPLAY(), mContext); sEGLLibrary.UnsetCachedCurrentContext(); - mozilla::gl::DestroySurface(mSurface); + DestroySurface(mSurface); } bool @@ -247,12 +246,7 @@ GLContextEGL::Init() if (!InitWithPrefix("gl", true)) return false; - bool current = MakeCurrent(); - if (!current) { - gfx::LogFailure(NS_LITERAL_CSTRING( - "Couldn't get device attachments for device.")); - return false; - } + MOZ_ASSERT(IsCurrent()); static_assert(sizeof(GLint) >= sizeof(int32_t), "GLint is smaller than int32_t"); mMaxTextureImageSize = INT32_MAX; @@ -303,7 +297,10 @@ GLContextEGL::ReleaseTexImage() } void -GLContextEGL::SetEGLSurfaceOverride(EGLSurface surf) { +GLContextEGL::SetEGLSurfaceOverride(const EGLSurface surf) { + + MOZ_ASSERT(!surf || surf != mSurface); + if (Screen()) { /* Blit `draw` to `read` if we need to, before we potentially juggle * `read` around. If we don't, we might attach a different `read`, @@ -314,12 +311,17 @@ GLContextEGL::SetEGLSurfaceOverride(EGLSurface surf) { } mSurfaceOverride = surf; - DebugOnly<bool> ok = MakeCurrent(true); - MOZ_ASSERT(ok); + MOZ_ALWAYS_TRUE(MakeCurrent(true)); } bool GLContextEGL::MakeCurrentImpl(bool aForce) { + if (IsDestroyed()) { + //Clear and exit + sEGLLibrary.fMakeCurrent(EGL_DISPLAY(), nullptr, nullptr, nullptr); + return false; + } + bool succeeded = true; // Assume that EGL has the same problem as WGL does, @@ -373,7 +375,7 @@ GLContextEGL::IsCurrent() { } bool -GLContextEGL::RenewSurface(nsIWidget* aWidget) { +GLContextEGL::RenewSurface(nsIWidget* const aWidget) { if (!mOwnsContext) { return false; } @@ -389,13 +391,12 @@ GLContextEGL::RenewSurface(nsIWidget* aWidget) { void GLContextEGL::ReleaseSurface() { - if (mOwnsContext) { - mozilla::gl::DestroySurface(mSurface); - } - if (mSurface == mSurfaceOverride) { - mSurfaceOverride = EGL_NO_SURFACE; + if (!mOwnsContext) { + return; } - mSurface = EGL_NO_SURFACE; + + DestroySurface(mSurface); + mSurface = nullptr; } bool diff --git a/gfx/gl/GLContextProviderGLX.cpp b/gfx/gl/GLContextProviderGLX.cpp index 539520a8c..c44b1a9f0 100644 --- a/gfx/gl/GLContextProviderGLX.cpp +++ b/gfx/gl/GLContextProviderGLX.cpp @@ -894,20 +894,12 @@ GLContextGLX::~GLContextGLX() return; } - // see bug 659842 comment 76 -#ifdef DEBUG - bool success = -#endif - mGLX->xMakeCurrent(mDisplay, X11None, nullptr); - MOZ_ASSERT(success, - "glXMakeCurrent failed to release GL context before we call " - "glXDestroyContext!"); - mGLX->xDestroyContext(mDisplay, mContext); if (mDeleteDrawable) { mGLX->xDestroyPixmap(mDisplay, mDrawable); } + MOZ_ASSERT(!mOverrideDrawable); } @@ -944,6 +936,10 @@ GLContextGLX::MakeCurrentImpl(bool aForce) // DRI2InvalidateBuffers event before drawing. See bug 1280653. Unused << XPending(mDisplay); } + if (IsDestroyed()) { + MOZ_ALWAYS_TRUE(mGLX->xMakeCurrent(mDisplay, X11None, nullptr)); + return false; // We did not MakeCurrent mContext, but that's what we wanted! + } succeeded = mGLX->xMakeCurrent(mDisplay, mDrawable, mContext); NS_ASSERTION(succeeded, "Failed to make GL context current!"); @@ -1017,16 +1013,18 @@ GLContextGLX::GetWSIInfo(nsCString* const out) const bool GLContextGLX::OverrideDrawable(GLXDrawable drawable) { - if (Screen()) + if (Screen()) { Screen()->AssureBlitted(); - Bool result = mGLX->xMakeCurrent(mDisplay, drawable, mContext); - return result; + } + mOverrideDrawable = Some(drawable); + return MakeCurrent(true); } bool GLContextGLX::RestoreDrawable() { - return mGLX->xMakeCurrent(mDisplay, mDrawable, mContext); + mOverrideDrawable = Nothing(); + return MakeCurrent(true); } GLContextGLX::GLContextGLX( diff --git a/gfx/gl/GLContextProviderWGL.cpp b/gfx/gl/GLContextProviderWGL.cpp index 35957259d..da8c93d10 100644 --- a/gfx/gl/GLContextProviderWGL.cpp +++ b/gfx/gl/GLContextProviderWGL.cpp @@ -314,20 +314,17 @@ GLContextWGL::Init() if (!mDC || !mContext) return false; - // see bug 929506 comment 29. wglGetProcAddress requires a current context. - if (!sWGLLib.fMakeCurrent(mDC, mContext)) - return false; - SetupLookupFunction(); - if (!InitWithPrefix("gl", true)) - return false; - - return true; + return InitWithPrefix("gl", true); } bool GLContextWGL::MakeCurrentImpl(bool aForce) { + if (IsDestroyed()) { + MOZ_ALWAYS_TRUE(sWGLLib.fMakeCurrent(0, 0)); + } + BOOL succeeded = true; // wglGetCurrentContext seems to just pull the HGLRC out diff --git a/gfx/thebes/gfxAndroidPlatform.h b/gfx/thebes/gfxAndroidPlatform.h index 30e7c89ba..8975d0ab9 100644 --- a/gfx/thebes/gfxAndroidPlatform.h +++ b/gfx/thebes/gfxAndroidPlatform.h @@ -72,11 +72,6 @@ public: return true; } -protected: - bool AccelerateLayersByDefault() override { - return true; - } - private: gfxImageFormat mOffscreenFormat; }; diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index 50d1fcb46..ae4336060 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -571,40 +571,6 @@ gfxPlatform::Init() } } - // Drop a note in the crash report if we end up forcing an option that could - // destabilize things. New items should be appended at the end (of an existing - // or in a new section), so that we don't have to know the version to interpret - // these cryptic strings. - { - nsAutoCString forcedPrefs; - // D2D prefs - forcedPrefs.AppendPrintf("FP(D%d%d", - gfxPrefs::Direct2DDisabled(), - gfxPrefs::Direct2DForceEnabled()); - // Layers prefs - forcedPrefs.AppendPrintf("-L%d%d%d%d", - gfxPrefs::LayersAMDSwitchableGfxEnabled(), - gfxPrefs::LayersAccelerationDisabledDoNotUseDirectly(), - gfxPrefs::LayersAccelerationForceEnabledDoNotUseDirectly(), - gfxPrefs::LayersD3D11ForceWARP()); - // WebGL prefs - forcedPrefs.AppendPrintf("-W%d%d%d%d%d%d%d%d", - gfxPrefs::WebGLANGLEForceD3D11(), - gfxPrefs::WebGLANGLEForceWARP(), - gfxPrefs::WebGLDisabled(), - gfxPrefs::WebGLDisableANGLE(), - gfxPrefs::WebGLDXGLEnabled(), - gfxPrefs::WebGLForceEnabled(), - gfxPrefs::WebGLForceLayersReadback(), - gfxPrefs::WebGLForceMSAA()); - // Prefs that don't fit into any of the other sections - forcedPrefs.AppendPrintf("-T%d%d%d%d) ", - gfxPrefs::AndroidRGB16Force(), - gfxPrefs::CanvasAzureAccelerated(), - gfxPrefs::DisableGralloc(), - gfxPrefs::ForceShmemTiles()); - } - InitMoz2DLogging(); gGfxPlatformPrefsLock = new Mutex("gfxPlatform::gGfxPlatformPrefsLock"); @@ -2171,7 +2137,7 @@ gfxPlatform::InitCompositorAccelerationPrefs() FeatureStatus::Blocked, "Acceleration blocked by platform")) { - if (gfxPrefs::LayersAccelerationDisabledDoNotUseDirectly()) { + if (!gfxPrefs::LayersAccelerationEnabledDoNotUseDirectly()) { feature.UserDisable("Disabled by pref", NS_LITERAL_CSTRING("FEATURE_FAILURE_COMP_PREF")); } else if (acceleratedEnv && *acceleratedEnv == '0') { @@ -2185,8 +2151,9 @@ gfxPlatform::InitCompositorAccelerationPrefs() } // This has specific meaning elsewhere, so we always record it. - if (gfxPrefs::LayersAccelerationForceEnabledDoNotUseDirectly()) { - feature.UserForceEnable("Force-enabled by pref"); + if (gfxPrefs::LayersAccelerationEnabledDoNotUseDirectly() && + gfxPrefs::LayersAccelerationForceEnabledDoNotUseDirectly()) { + feature.UserForceEnable("Force-enabled by prefs"); } // Safe mode trumps everything. @@ -2208,7 +2175,11 @@ gfxPlatform::CanUseHardwareVideoDecoding() bool gfxPlatform::AccelerateLayersByDefault() { -#if defined(MOZ_GL_PROVIDER) || defined(MOZ_WIDGET_UIKIT) + // Note: add any new platform defines here that should get HWA by default. +#if defined(XP_WIN) || defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_UIKIT) + return true; +#elif defined(MOZ_GL_PROVIDER) + // GL provider manually declared return true; #else return false; diff --git a/gfx/thebes/gfxPlatform.h b/gfx/thebes/gfxPlatform.h index 68bb99ea4..642cf909f 100644 --- a/gfx/thebes/gfxPlatform.h +++ b/gfx/thebes/gfxPlatform.h @@ -698,7 +698,7 @@ protected: virtual already_AddRefed<mozilla::gfx::VsyncSource> CreateHardwareVsyncSource(); // Returns whether or not layers should be accelerated by default on this platform. - virtual bool AccelerateLayersByDefault(); + bool AccelerateLayersByDefault(); // Returns a prioritized list of available compositor backends for acceleration. virtual void GetAcceleratedCompositorBackends(nsTArray<mozilla::layers::LayersBackend>& aBackends); diff --git a/gfx/thebes/gfxPlatformGtk.h b/gfx/thebes/gfxPlatformGtk.h index 9959c0e13..22ed4b08f 100644 --- a/gfx/thebes/gfxPlatformGtk.h +++ b/gfx/thebes/gfxPlatformGtk.h @@ -132,10 +132,6 @@ public: return true; } - bool AccelerateLayersByDefault() override { - return true; - } - #ifdef GL_PROVIDER_GLX already_AddRefed<mozilla::gfx::VsyncSource> CreateHardwareVsyncSource() override; #endif diff --git a/gfx/thebes/gfxPlatformMac.cpp b/gfx/thebes/gfxPlatformMac.cpp index 79684dd19..75c5236a8 100644 --- a/gfx/thebes/gfxPlatformMac.cpp +++ b/gfx/thebes/gfxPlatformMac.cpp @@ -372,12 +372,6 @@ gfxPlatformMac::ReadAntiAliasingThreshold() return threshold; } -bool -gfxPlatformMac::AccelerateLayersByDefault() -{ - return true; -} - // This is the renderer output callback function, called on the vsync thread static CVReturn VsyncCallback(CVDisplayLinkRef aDisplayLink, const CVTimeStamp* aNow, diff --git a/gfx/thebes/gfxPlatformMac.h b/gfx/thebes/gfxPlatformMac.h index 0807614f6..ea4c1a101 100644 --- a/gfx/thebes/gfxPlatformMac.h +++ b/gfx/thebes/gfxPlatformMac.h @@ -81,9 +81,6 @@ public: // lower threshold on font anti-aliasing uint32_t GetAntiAliasingThreshold() { return mFontAntiAliasingThreshold; } -protected: - bool AccelerateLayersByDefault() override; - private: virtual void GetPlatformCMSOutputProfile(void* &mem, size_t &size) override; diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h index 1253fdb48..d02f15699 100644 --- a/gfx/thebes/gfxPrefs.h +++ b/gfx/thebes/gfxPrefs.h @@ -448,11 +448,11 @@ private: DECL_GFX_PREF(Once, "image.multithreaded_decoding.limit", ImageMTDecodingLimit, int32_t, -1); DECL_GFX_PREF(Live, "image.webp.enabled", ImageWebPEnabled, bool, true); - DECL_GFX_PREF(Once, "layers.acceleration.disabled", LayersAccelerationDisabledDoNotUseDirectly, bool, false); + DECL_GFX_PREF(Once, "layers.acceleration.enabled", LayersAccelerationEnabledDoNotUseDirectly, bool, true); DECL_GFX_PREF(Live, "layers.acceleration.draw-fps", LayersDrawFPS, bool, false); DECL_GFX_PREF(Live, "layers.acceleration.draw-fps.print-histogram", FPSPrintHistogram, bool, false); DECL_GFX_PREF(Live, "layers.acceleration.draw-fps.write-to-file", WriteFPSToFile, bool, false); - DECL_GFX_PREF(Once, "layers.acceleration.force-enabled", LayersAccelerationForceEnabledDoNotUseDirectly, bool, false); + DECL_GFX_PREF(Once, "layers.acceleration.force", LayersAccelerationForceEnabledDoNotUseDirectly, bool, false); DECL_GFX_PREF(Once, "layers.allow-d3d9-fallback", LayersAllowD3D9Fallback, bool, false); DECL_GFX_PREF(Once, "layers.amd-switchable-gfx.enabled", LayersAMDSwitchableGfxEnabled, bool, false); DECL_GFX_PREF(Once, "layers.async-pan-zoom.enabled", AsyncPanZoomEnabledDoNotUseDirectly, bool, true); diff --git a/gfx/thebes/gfxWindowsPlatform.h b/gfx/thebes/gfxWindowsPlatform.h index 129365f82..b56dab338 100644 --- a/gfx/thebes/gfxWindowsPlatform.h +++ b/gfx/thebes/gfxWindowsPlatform.h @@ -226,9 +226,6 @@ public: bool SupportsPluginDirectDXGIDrawing(); protected: - bool AccelerateLayersByDefault() override { - return true; - } void GetAcceleratedCompositorBackends(nsTArray<mozilla::layers::LayersBackend>& aBackends) override; virtual void GetPlatformCMSOutputProfile(void* &mem, size_t &size) override; diff --git a/ipc/chromium/moz.build b/ipc/chromium/moz.build index dc5b4dca4..b386134f9 100644 --- a/ipc/chromium/moz.build +++ b/ipc/chromium/moz.build @@ -58,7 +58,7 @@ if os_win: 'src/chrome/common/process_watcher_win.cc', 'src/chrome/common/transport_dib_win.cc', ] -elif not CONFIG['MOZ_SYSTEM_LIBEVENT']: +else: DIRS += ['src/third_party'] if os_posix: @@ -143,9 +143,9 @@ if os_solaris: 'src/base/atomicops_internals_x86_gcc.cc', 'src/base/process_util_linux.cc', 'src/base/time_posix.cc', -] + ] -elif not CONFIG['MOZ_SYSTEM_LIBEVENT']: +else: LOCAL_INCLUDES += ['src/third_party/libevent/linux'] ost = CONFIG['OS_TEST'] diff --git a/ipc/chromium/src/third_party/libeventcommon.mozbuild b/ipc/chromium/src/third_party/libeventcommon.mozbuild index 2b45ecb19..33482c661 100644 --- a/ipc/chromium/src/third_party/libeventcommon.mozbuild +++ b/ipc/chromium/src/third_party/libeventcommon.mozbuild @@ -32,7 +32,7 @@ else: else: libevent_include_suffix = 'linux' -if os_posix and not CONFIG['MOZ_SYSTEM_LIBEVENT']: +if os_posix: DEFINES['HAVE_CONFIG_H'] = True LOCAL_INCLUDES += sorted([ 'libevent', diff --git a/ipc/chromium/src/third_party/moz.build b/ipc/chromium/src/third_party/moz.build index 2b99e53b3..20a5043fb 100644 --- a/ipc/chromium/src/third_party/moz.build +++ b/ipc/chromium/src/third_party/moz.build @@ -10,9 +10,6 @@ include(libevent_path_prefix + '/libeventcommon.mozbuild') if os_win: error('should not reach here on Windows') -if CONFIG['MOZ_SYSTEM_LIBEVENT']: - error('should not reach here if we are using a native libevent') - UNIFIED_SOURCES += [ 'libevent/buffer.c', 'libevent/bufferevent.c', diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp index a9a307da7..025620766 100644 --- a/js/src/builtin/TestingFunctions.cpp +++ b/js/src/builtin/TestingFunctions.cpp @@ -3862,10 +3862,10 @@ ConvertRegExpTreeToObject(JSContext* cx, irregexp::RegExpTree* tree) return nullptr; return obj; } - if (tree->IsLookaround()) { - if (!StringProp(cx, obj, "type", "Lookaround")) + if (tree->IsLookahead()) { + if (!StringProp(cx, obj, "type", "Lookahead")) return nullptr; - irregexp::RegExpLookaround* t = tree->AsLookaround(); + irregexp::RegExpLookahead* t = tree->AsLookahead(); if (!BooleanProp(cx, obj, "is_positive", t->is_positive())) return nullptr; if (!TreeProp(cx, obj, "body", t->body())) diff --git a/js/src/irregexp/NativeRegExpMacroAssembler.cpp b/js/src/irregexp/NativeRegExpMacroAssembler.cpp index e17eecb9b..0fb507297 100644 --- a/js/src/irregexp/NativeRegExpMacroAssembler.cpp +++ b/js/src/irregexp/NativeRegExpMacroAssembler.cpp @@ -582,7 +582,7 @@ NativeRegExpMacroAssembler::CheckAtStart(Label* on_at_start) } void -NativeRegExpMacroAssembler::CheckNotAtStart(int cp_offset, Label* on_not_at_start) +NativeRegExpMacroAssembler::CheckNotAtStart(Label* on_not_at_start) { JitSpew(SPEW_PREFIX "CheckNotAtStart"); @@ -673,7 +673,7 @@ NativeRegExpMacroAssembler::CheckGreedyLoop(Label* on_tos_equals_current_positio } void -NativeRegExpMacroAssembler::CheckNotBackReference(int start_reg, bool read_backward, Label* on_no_match) +NativeRegExpMacroAssembler::CheckNotBackReference(int start_reg, Label* on_no_match) { JitSpew(SPEW_PREFIX "CheckNotBackReference(%d)", start_reg); @@ -744,8 +744,8 @@ NativeRegExpMacroAssembler::CheckNotBackReference(int start_reg, bool read_backw } void -NativeRegExpMacroAssembler::CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, - Label* on_no_match, bool unicode) +NativeRegExpMacroAssembler::CheckNotBackReferenceIgnoreCase(int start_reg, Label* on_no_match, + bool unicode) { JitSpew(SPEW_PREFIX "CheckNotBackReferenceIgnoreCase(%d, %d)", start_reg, unicode); diff --git a/js/src/irregexp/NativeRegExpMacroAssembler.h b/js/src/irregexp/NativeRegExpMacroAssembler.h index fc582dccf..7a72e252f 100644 --- a/js/src/irregexp/NativeRegExpMacroAssembler.h +++ b/js/src/irregexp/NativeRegExpMacroAssembler.h @@ -105,10 +105,9 @@ class MOZ_STACK_CLASS NativeRegExpMacroAssembler final : public RegExpMacroAssem void CheckCharacterGT(char16_t limit, jit::Label* on_greater); void CheckCharacterLT(char16_t limit, jit::Label* on_less); void CheckGreedyLoop(jit::Label* on_tos_equals_current_position); - void CheckNotAtStart(int cp_offset, jit::Label* on_not_at_start); - void CheckNotBackReference(int start_reg, bool read_backward, jit::Label* on_no_match); - void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, - jit::Label* on_no_match, bool unicode); + void CheckNotAtStart(jit::Label* on_not_at_start); + void CheckNotBackReference(int start_reg, jit::Label* on_no_match); + void CheckNotBackReferenceIgnoreCase(int start_reg, jit::Label* on_no_match, bool unicode); void CheckNotCharacter(unsigned c, jit::Label* on_not_equal); void CheckNotCharacterAfterAnd(unsigned c, unsigned and_with, jit::Label* on_not_equal); void CheckNotCharacterAfterMinusAnd(char16_t c, char16_t minus, char16_t and_with, diff --git a/js/src/irregexp/RegExpAST.cpp b/js/src/irregexp/RegExpAST.cpp index 43867c312..8dfd99057 100644 --- a/js/src/irregexp/RegExpAST.cpp +++ b/js/src/irregexp/RegExpAST.cpp @@ -250,16 +250,16 @@ RegExpCapture::CaptureRegisters() } // ---------------------------------------------------------------------------- -// RegExpLookaround +// RegExpLookahead Interval -RegExpLookaround::CaptureRegisters() +RegExpLookahead::CaptureRegisters() { return body()->CaptureRegisters(); } bool -RegExpLookaround::IsAnchoredAtStart() +RegExpLookahead::IsAnchoredAtStart() { - return is_positive() && type() == LOOKAHEAD && body()->IsAnchoredAtStart(); + return is_positive() && body()->IsAnchoredAtStart(); } diff --git a/js/src/irregexp/RegExpAST.h b/js/src/irregexp/RegExpAST.h index 6f59842bc..7bda6fc7e 100644 --- a/js/src/irregexp/RegExpAST.h +++ b/js/src/irregexp/RegExpAST.h @@ -360,7 +360,6 @@ class RegExpCapture : public RegExpTree virtual int min_match() { return body_->min_match(); } virtual int max_match() { return body_->max_match(); } RegExpTree* body() { return body_; } - void set_body(RegExpTree* body) { body_ = body; } int index() { return index_; } static int StartRegister(int index) { return index * 2; } static int EndRegister(int index) { return index * 2 + 1; } @@ -370,29 +369,25 @@ class RegExpCapture : public RegExpTree int index_; }; -class RegExpLookaround : public RegExpTree +class RegExpLookahead : public RegExpTree { public: - enum Type { LOOKAHEAD, LOOKBEHIND }; - - RegExpLookaround(RegExpTree* body, - bool is_positive, - int capture_count, - int capture_from, - Type type) + RegExpLookahead(RegExpTree* body, + bool is_positive, + int capture_count, + int capture_from) : body_(body), is_positive_(is_positive), capture_count_(capture_count), - capture_from_(capture_from), - type_(type) + capture_from_(capture_from) {} virtual void* Accept(RegExpVisitor* visitor, void* data); virtual RegExpNode* ToNode(RegExpCompiler* compiler, RegExpNode* on_success); - virtual RegExpLookaround* AsLookaround(); + virtual RegExpLookahead* AsLookahead(); virtual Interval CaptureRegisters(); - virtual bool IsLookaround(); + virtual bool IsLookahead(); virtual bool IsAnchoredAtStart(); virtual int min_match() { return 0; } virtual int max_match() { return 0; } @@ -400,14 +395,12 @@ class RegExpLookaround : public RegExpTree bool is_positive() { return is_positive_; } int capture_count() { return capture_count_; } int capture_from() { return capture_from_; } - Type type() { return type_; } private: RegExpTree* body_; bool is_positive_; int capture_count_; int capture_from_; - Type type_; }; typedef InfallibleVector<RegExpCapture*, 1> RegExpCaptureVector; @@ -424,14 +417,8 @@ class RegExpBackReference : public RegExpTree RegExpNode* on_success); virtual RegExpBackReference* AsBackReference(); virtual bool IsBackReference(); - virtual int min_match() override { return 0; } - // The capture may not be completely parsed yet, if the reference occurs - // before the capture. In the ordinary case, nothing has been captured yet, - // so the back reference must have the length 0. If the back reference is - // inside a lookbehind, effectively making it a forward reference, we return - virtual int max_match() override { - return capture_->body() ? capture_->max_match() : 0; - } + virtual int min_match() { return 0; } + virtual int max_match() { return capture_->max_match(); } int index() { return capture_->index(); } RegExpCapture* capture() { return capture_; } private: diff --git a/js/src/irregexp/RegExpBytecode.h b/js/src/irregexp/RegExpBytecode.h index ea3f80b4f..f31b78c59 100644 --- a/js/src/irregexp/RegExpBytecode.h +++ b/js/src/irregexp/RegExpBytecode.h @@ -82,19 +82,16 @@ V(CHECK_LT, 35, 8) /* bc8 pad8 uc16 addr32 */ \ V(CHECK_GT, 36, 8) /* bc8 pad8 uc16 addr32 */ \ V(CHECK_NOT_BACK_REF, 37, 8) /* bc8 reg_idx24 addr32 */ \ V(CHECK_NOT_BACK_REF_NO_CASE, 38, 8) /* bc8 reg_idx24 addr32 */ \ -V(CHECK_NOT_BACK_REF_BACKWARD, 39, 8) /* bc8 reg_idx24 addr32 */ \ -V(CHECK_NOT_BACK_REF_NO_CASE_BACKWARD, 40, 8) /* bc8 reg_idx24 addr32 */ \ -V(CHECK_NOT_REGS_EQUAL, 41, 12) /* bc8 regidx24 reg_idx32 addr32 */ \ -V(CHECK_REGISTER_LT, 42, 12) /* bc8 reg_idx24 value32 addr32 */ \ -V(CHECK_REGISTER_GE, 43, 12) /* bc8 reg_idx24 value32 addr32 */ \ -V(CHECK_REGISTER_EQ_POS, 44, 8) /* bc8 reg_idx24 addr32 */ \ -V(CHECK_AT_START, 45, 8) /* bc8 pad24 addr32 */ \ -V(CHECK_NOT_AT_START, 46, 8) /* bc8 pad24 addr32 */ \ -V(CHECK_GREEDY, 47, 8) /* bc8 pad24 addr32 */ \ -V(ADVANCE_CP_AND_GOTO, 48, 8) /* bc8 offset24 addr32 */ \ -V(SET_CURRENT_POSITION_FROM_END, 49, 4) /* bc8 idx24 */ \ -V(CHECK_NOT_BACK_REF_NO_CASE_UNICODE, 50, 8) /* bc8 reg_idx24 addr32 */ \ -V(CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_UNICODE, 51, 8) /* bc8 reg_idx24 addr32 */ +V(CHECK_NOT_REGS_EQUAL, 39, 12) /* bc8 regidx24 reg_idx32 addr32 */ \ +V(CHECK_REGISTER_LT, 40, 12) /* bc8 reg_idx24 value32 addr32 */ \ +V(CHECK_REGISTER_GE, 41, 12) /* bc8 reg_idx24 value32 addr32 */ \ +V(CHECK_REGISTER_EQ_POS, 42, 8) /* bc8 reg_idx24 addr32 */ \ +V(CHECK_AT_START, 43, 8) /* bc8 pad24 addr32 */ \ +V(CHECK_NOT_AT_START, 44, 8) /* bc8 pad24 addr32 */ \ +V(CHECK_GREEDY, 45, 8) /* bc8 pad24 addr32 */ \ +V(ADVANCE_CP_AND_GOTO, 46, 8) /* bc8 offset24 addr32 */ \ +V(SET_CURRENT_POSITION_FROM_END, 47, 4) /* bc8 idx24 */ \ +V(CHECK_NOT_BACK_REF_NO_CASE_UNICODE, 48, 8) /* bc8 reg_idx24 addr32 */ #define DECLARE_BYTECODES(name, code, length) \ static const int BC_##name = code; diff --git a/js/src/irregexp/RegExpEngine.cpp b/js/src/irregexp/RegExpEngine.cpp index 62f94c3e7..4d691a5dc 100644 --- a/js/src/irregexp/RegExpEngine.cpp +++ b/js/src/irregexp/RegExpEngine.cpp @@ -721,8 +721,6 @@ ActionNode::EmptyMatchCheck(int start_register, int TextNode::EatsAtLeast(int still_to_find, int budget, bool not_at_start) { - if (read_backward()) - return 0; int answer = Length(); if (answer >= still_to_find) return answer; @@ -738,7 +736,8 @@ TextNode::EatsAtLeast(int still_to_find, int budget, bool not_at_start) int TextNode::GreedyLoopTextLength() { - return Length(); + TextElement elm = elements()[elements().length() - 1]; + return elm.cp_offset() + elm.length(); } RegExpNode* @@ -888,8 +887,6 @@ AssertionNode::FillInBMInfo(int offset, int budget, BoyerMooreLookahead* bm, boo int BackReferenceNode::EatsAtLeast(int still_to_find, int budget, bool not_at_start) { - if (read_backward()) - return 0; if (budget <= 0) return 0; return on_success()->EatsAtLeast(still_to_find, budget - 1, not_at_start); @@ -1581,9 +1578,6 @@ class irregexp::RegExpCompiler current_expansion_factor_ = value; } - bool read_backward() { return read_backward_; } - void set_read_backward(bool value) { read_backward_ = value; } - JSContext* cx() const { return cx_; } LifoAlloc* alloc() const { return alloc_; } @@ -1601,7 +1595,6 @@ class irregexp::RegExpCompiler bool unicode_; bool reg_exp_too_big_; int current_expansion_factor_; - bool read_backward_; FrequencyCollator frequency_collator_; JSContext* cx_; LifoAlloc* alloc_; @@ -1631,7 +1624,6 @@ RegExpCompiler::RegExpCompiler(JSContext* cx, LifoAlloc* alloc, int capture_coun unicode_(unicode), reg_exp_too_big_(false), current_expansion_factor_(1), - read_backward_(false), frequency_collator_(), cx_(cx), alloc_(alloc) @@ -1755,7 +1747,7 @@ irregexp::CompilePattern(JSContext* cx, RegExpShared* shared, RegExpCompileData* // at the start of input. ChoiceNode* first_step_node = alloc.newInfallible<ChoiceNode>(&alloc, 2); RegExpNode* char_class = - alloc.newInfallible<TextNode>(alloc.newInfallible<RegExpCharacterClass>('*'), false, loop_node); + alloc.newInfallible<TextNode>(alloc.newInfallible<RegExpCharacterClass>('*'), loop_node); first_step_node->AddAlternative(GuardedAlternative(captured_body)); first_step_node->AddAlternative(GuardedAlternative(char_class)); node = first_step_node; @@ -1858,19 +1850,19 @@ RegExpAtom::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) TextElementVector* elms = compiler->alloc()->newInfallible<TextElementVector>(*compiler->alloc()); elms->append(TextElement::Atom(this)); - return compiler->alloc()->newInfallible<TextNode>(elms, compiler->read_backward(), on_success); + return compiler->alloc()->newInfallible<TextNode>(elms, on_success); } RegExpNode* RegExpText::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) { - return compiler->alloc()->newInfallible<TextNode>(&elements_, compiler->read_backward(), on_success); + return compiler->alloc()->newInfallible<TextNode>(&elements_, on_success); } RegExpNode* RegExpCharacterClass::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) { - return compiler->alloc()->newInfallible<TextNode>(this, compiler->read_backward(), on_success); + return compiler->alloc()->newInfallible<TextNode>(this, on_success); } RegExpNode* @@ -2011,8 +2003,7 @@ RegExpQuantifier::ToNode(int min, alternation->AddAlternative(GuardedAlternative(body->ToNode(compiler, answer))); } answer = alternation; - if (not_at_start && !compiler->read_backward()) - alternation->set_not_at_start(); + if (not_at_start) alternation->set_not_at_start(); } return answer; } @@ -2024,9 +2015,8 @@ RegExpQuantifier::ToNode(int min, int reg_ctr = needs_counter ? compiler->AllocateRegister() : RegExpCompiler::kNoRegister; - LoopChoiceNode* center = alloc->newInfallible<LoopChoiceNode>(alloc, body->min_match() == 0, - compiler->read_backward()); - if (not_at_start && !compiler->read_backward()) + LoopChoiceNode* center = alloc->newInfallible<LoopChoiceNode>(alloc, body->min_match() == 0); + if (not_at_start) center->set_not_at_start(); RegExpNode* loop_return = needs_counter ? static_cast<RegExpNode*>(ActionNode::IncrementRegister(reg_ctr, center)) @@ -2102,7 +2092,7 @@ RegExpAssertion::ToNode(RegExpCompiler* compiler, CharacterRange::AddClassEscape(alloc, 'n', newline_ranges); RegExpCharacterClass* newline_atom = alloc->newInfallible<RegExpCharacterClass>('n'); TextNode* newline_matcher = - alloc->newInfallible<TextNode>(newline_atom, false, + alloc->newInfallible<TextNode>(newline_atom, ActionNode::PositiveSubmatchSuccess(stack_pointer_register, position_register, 0, // No captures inside. @@ -2134,7 +2124,6 @@ RegExpBackReference::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) { return compiler->alloc()->newInfallible<BackReferenceNode>(RegExpCapture::StartRegister(index()), RegExpCapture::EndRegister(index()), - compiler->read_backward(), on_success); } @@ -2145,7 +2134,7 @@ RegExpEmpty::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) } RegExpNode* -RegExpLookaround::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) +RegExpLookahead::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) { int stack_pointer_register = compiler->AllocateRegister(); int position_register = compiler->AllocateRegister(); @@ -2156,10 +2145,6 @@ RegExpLookaround::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) int register_start = register_of_first_capture + capture_from_ * registers_per_capture; - RegExpNode* result; - bool was_reading_backward = compiler->read_backward(); - compiler->set_read_backward(type() == LOOKBEHIND); - if (is_positive()) { RegExpNode* bodyNode = body()->ToNode(compiler, @@ -2168,39 +2153,37 @@ RegExpLookaround::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) register_count, register_start, on_success)); - result = ActionNode::BeginSubmatch(stack_pointer_register, - position_register, - bodyNode); - } else { - // We use a ChoiceNode for a negative lookahead because it has most of - // the characteristics we need. It has the body of the lookahead as its - // first alternative and the expression after the lookahead of the second - // alternative. If the first alternative succeeds then the - // NegativeSubmatchSuccess will unwind the stack including everything the - // choice node set up and backtrack. If the first alternative fails then - // the second alternative is tried, which is exactly the desired result - // for a negative lookahead. The NegativeLookaheadChoiceNode is a special - // ChoiceNode that knows to ignore the first exit when calculating quick - // checks. - LifoAlloc* alloc = compiler->alloc(); - - RegExpNode* success = - alloc->newInfallible<NegativeSubmatchSuccess>(alloc, - stack_pointer_register, - position_register, - register_count, - register_start); - GuardedAlternative body_alt(body()->ToNode(compiler, success)); - - ChoiceNode* choice_node = - alloc->newInfallible<NegativeLookaheadChoiceNode>(alloc, body_alt, GuardedAlternative(on_success)); - - result = ActionNode::BeginSubmatch(stack_pointer_register, + return ActionNode::BeginSubmatch(stack_pointer_register, position_register, - choice_node); - } - compiler->set_read_backward(was_reading_backward); - return result; + bodyNode); + } + + // We use a ChoiceNode for a negative lookahead because it has most of + // the characteristics we need. It has the body of the lookahead as its + // first alternative and the expression after the lookahead of the second + // alternative. If the first alternative succeeds then the + // NegativeSubmatchSuccess will unwind the stack including everything the + // choice node set up and backtrack. If the first alternative fails then + // the second alternative is tried, which is exactly the desired result + // for a negative lookahead. The NegativeLookaheadChoiceNode is a special + // ChoiceNode that knows to ignore the first exit when calculating quick + // checks. + LifoAlloc* alloc = compiler->alloc(); + + RegExpNode* success = + alloc->newInfallible<NegativeSubmatchSuccess>(alloc, + stack_pointer_register, + position_register, + register_count, + register_start); + GuardedAlternative body_alt(body()->ToNode(compiler, success)); + + ChoiceNode* choice_node = + alloc->newInfallible<NegativeLookaheadChoiceNode>(alloc, body_alt, GuardedAlternative(on_success)); + + return ActionNode::BeginSubmatch(stack_pointer_register, + position_register, + choice_node); } RegExpNode* @@ -2215,14 +2198,8 @@ RegExpCapture::ToNode(RegExpTree* body, RegExpCompiler* compiler, RegExpNode* on_success) { - MOZ_ASSERT(body); int start_reg = RegExpCapture::StartRegister(index); int end_reg = RegExpCapture::EndRegister(index); - if (compiler->read_backward()) { - // std::swap(start_reg, end_reg); - start_reg = RegExpCapture::EndRegister(index); - end_reg = RegExpCapture::StartRegister(index); - } RegExpNode* store_end = ActionNode::StorePosition(end_reg, true, on_success); RegExpNode* body_node = body->ToNode(compiler, store_end); return ActionNode::StorePosition(start_reg, true, body_node); @@ -2233,15 +2210,8 @@ RegExpAlternative::ToNode(RegExpCompiler* compiler, RegExpNode* on_success) { const RegExpTreeVector& children = nodes(); RegExpNode* current = on_success; - if (compiler->read_backward()) { - for (int i = 0; i < children.length(); i++) { - current = children[i]->ToNode(compiler, current); - } - } else { - for (int i = children.length() - 1; i >= 0; i--) { - current = children[i]->ToNode(compiler, current); - } - } + for (int i = children.length() - 1; i >= 0; i--) + current = children[i]->ToNode(compiler, current); return current; } @@ -2794,6 +2764,7 @@ Trace::InvalidateCurrentCharacter() void Trace::AdvanceCurrentPositionInTrace(int by, RegExpCompiler* compiler) { + MOZ_ASSERT(by > 0); // We don't have an instruction for shifting the current character register // down or for using a shifted value for anything so lets just forget that // we preloaded any characters into it. @@ -3138,9 +3109,9 @@ AssertionNode::Emit(RegExpCompiler* compiler, Trace* trace) return; } if (trace->at_start() == Trace::UNKNOWN) { - assembler->CheckNotAtStart(trace->cp_offset(), trace->backtrack()); + assembler->CheckNotAtStart(trace->backtrack()); Trace at_start_trace = *trace; - at_start_trace.set_at_start(Trace::TRUE_VALUE); + at_start_trace.set_at_start(true); on_success()->Emit(compiler, &at_start_trace); return; } @@ -3843,10 +3814,9 @@ TextNode::TextEmitPass(RegExpCompiler* compiler, jit::Label* backtrack = trace->backtrack(); QuickCheckDetails* quick_check = trace->quick_check_performed(); int element_count = elements().length(); - int backward_offset = read_backward() ? -Length() : 0; for (int i = preloaded ? 0 : element_count - 1; i >= 0; i--) { TextElement elm = elements()[i]; - int cp_offset = trace->cp_offset() + elm.cp_offset() + backward_offset; + int cp_offset = trace->cp_offset() + elm.cp_offset(); if (elm.text_type() == TextElement::ATOM) { const CharacterVector& quarks = elm.atom()->data(); for (int j = preloaded ? 0 : quarks.length() - 1; j >= 0; j--) { @@ -3874,12 +3844,11 @@ TextNode::TextEmitPass(RegExpCompiler* compiler, break; } if (emit_function != nullptr) { - bool bounds_check = *checked_up_to < cp_offset + j || read_backward(); bool bound_checked = emit_function(compiler, quarks[j], backtrack, cp_offset + j, - bounds_check, + *checked_up_to < cp_offset + j, preloaded); if (bound_checked) UpdateBoundsCheck(cp_offset + j, checked_up_to); } @@ -3890,14 +3859,13 @@ TextNode::TextEmitPass(RegExpCompiler* compiler, if (first_element_checked && i == 0) continue; if (DeterminedAlready(quick_check, elm.cp_offset())) continue; RegExpCharacterClass* cc = elm.char_class(); - bool bounds_check = *checked_up_to < cp_offset || read_backward(); EmitCharClass(alloc(), assembler, cc, ascii, backtrack, cp_offset, - bounds_check, + *checked_up_to < cp_offset, preloaded); UpdateBoundsCheck(cp_offset, checked_up_to); } @@ -3977,11 +3945,8 @@ TextNode::Emit(RegExpCompiler* compiler, Trace* trace) } Trace successor_trace(*trace); - // If we advance backward, we may end up at the start. - successor_trace.AdvanceCurrentPositionInTrace( - read_backward() ? -Length() : Length(), compiler); - successor_trace.set_at_start(read_backward() ? Trace::UNKNOWN - : Trace::FALSE_VALUE); + successor_trace.set_at_start(false); + successor_trace.AdvanceCurrentPositionInTrace(Length(), compiler); RecursionCheck rc(compiler); on_success()->Emit(compiler, &successor_trace); } @@ -4153,8 +4118,6 @@ ChoiceNode::CalculatePreloadCharacters(RegExpCompiler* compiler, int eats_at_lea RegExpNode* TextNode::GetSuccessorOfOmnivorousTextNode(RegExpCompiler* compiler) { - if (read_backward()) return NULL; - if (elements().length() != 1) return nullptr; @@ -4202,7 +4165,7 @@ ChoiceNode::GreedyLoopTextLengthForAlternative(GuardedAlternative* alternative) SeqRegExpNode* seq_node = static_cast<SeqRegExpNode*>(node); node = seq_node->on_success(); } - return read_backward() ? -length : length; + return length; } // Creates a list of AlternativeGenerations. If the list has a reasonable @@ -4277,7 +4240,7 @@ ChoiceNode::Emit(RegExpCompiler* compiler, Trace* trace) jit::Label greedy_loop_label; Trace counter_backtrack_trace; counter_backtrack_trace.set_backtrack(&greedy_loop_label); - if (not_at_start()) counter_backtrack_trace.set_at_start(Trace::FALSE_VALUE); + if (not_at_start()) counter_backtrack_trace.set_at_start(false); if (choice_count > 1 && text_length != kNodeIsTooComplexForGreedyLoops) { // Here we have special handling for greedy loops containing only text nodes @@ -4293,7 +4256,7 @@ ChoiceNode::Emit(RegExpCompiler* compiler, Trace* trace) current_trace = &counter_backtrack_trace; jit::Label greedy_match_failed; Trace greedy_match_trace; - if (not_at_start()) greedy_match_trace.set_at_start(Trace::FALSE_VALUE); + if (not_at_start()) greedy_match_trace.set_at_start(false); greedy_match_trace.set_backtrack(&greedy_match_failed); jit::Label loop_label; macro_assembler->Bind(&loop_label); @@ -4642,14 +4605,11 @@ BackReferenceNode::Emit(RegExpCompiler* compiler, Trace* trace) MOZ_ASSERT(start_reg_ + 1 == end_reg_); if (compiler->ignore_case()) { assembler->CheckNotBackReferenceIgnoreCase(start_reg_, - read_backward(), trace->backtrack(), compiler->unicode()); } else { - assembler->CheckNotBackReference(start_reg_, read_backward(), trace->backtrack()); + assembler->CheckNotBackReference(start_reg_, trace->backtrack()); } - // We are going to advance backward, so we may end up at the start. - if (read_backward()) trace->set_at_start(Trace::UNKNOWN); on_success()->Emit(compiler, trace); } @@ -5017,6 +4977,7 @@ QuickCheckDetails::Clear() void QuickCheckDetails::Advance(int by, bool ascii) { + MOZ_ASSERT(by >= 0); if (by >= characters_) { Clear(); return; diff --git a/js/src/irregexp/RegExpEngine.h b/js/src/irregexp/RegExpEngine.h index c4409dcca..1a8fd4b22 100644 --- a/js/src/irregexp/RegExpEngine.h +++ b/js/src/irregexp/RegExpEngine.h @@ -119,7 +119,7 @@ InterpretCode(JSContext* cx, const uint8_t* byteCode, const CharT* chars, size_t VISIT(Atom) \ VISIT(Quantifier) \ VISIT(Capture) \ - VISIT(Lookaround) \ + VISIT(Lookahead) \ VISIT(BackReference) \ VISIT(Empty) \ VISIT(Text) @@ -763,19 +763,15 @@ class TextNode : public SeqRegExpNode { public: TextNode(TextElementVector* elements, - bool read_backward, RegExpNode* on_success) : SeqRegExpNode(on_success), - elements_(elements), - read_backward_(read_backward) + elements_(elements) {} TextNode(RegExpCharacterClass* that, - bool read_backward, RegExpNode* on_success) : SeqRegExpNode(on_success), - elements_(alloc()->newInfallible<TextElementVector>(*alloc())), - read_backward_(read_backward) + elements_(alloc()->newInfallible<TextElementVector>(*alloc())) { elements_->append(TextElement::CharClass(that)); } @@ -788,7 +784,6 @@ class TextNode : public SeqRegExpNode int characters_filled_in, bool not_at_start); TextElementVector& elements() { return *elements_; } - bool read_backward() { return read_backward_; } void MakeCaseIndependent(bool is_ascii, bool unicode); virtual int GreedyLoopTextLength(); virtual RegExpNode* GetSuccessorOfOmnivorousTextNode( @@ -819,7 +814,6 @@ class TextNode : public SeqRegExpNode int* checked_up_to); int Length(); TextElementVector* elements_; - bool read_backward_; }; class AssertionNode : public SeqRegExpNode @@ -888,18 +882,15 @@ class BackReferenceNode : public SeqRegExpNode public: BackReferenceNode(int start_reg, int end_reg, - bool read_backward, RegExpNode* on_success) : SeqRegExpNode(on_success), start_reg_(start_reg), - end_reg_(end_reg), - read_backward_(read_backward) + end_reg_(end_reg) {} virtual void Accept(NodeVisitor* visitor); int start_register() { return start_reg_; } int end_register() { return end_reg_; } - bool read_backward() { return read_backward_; } virtual void Emit(RegExpCompiler* compiler, Trace* trace); virtual int EatsAtLeast(int still_to_find, int recursion_depth, @@ -918,7 +909,6 @@ class BackReferenceNode : public SeqRegExpNode private: int start_reg_; int end_reg_; - bool read_backward_; }; class EndNode : public RegExpNode @@ -1063,7 +1053,6 @@ class ChoiceNode : public RegExpNode void set_being_calculated(bool b) { being_calculated_ = b; } virtual bool try_to_emit_quick_check_for_alternative(int i) { return true; } virtual RegExpNode* FilterASCII(int depth, bool ignore_case, bool unicode); - virtual bool read_backward() { return false; } protected: int GreedyLoopTextLengthForAlternative(GuardedAlternative* alternative); @@ -1122,13 +1111,11 @@ class NegativeLookaheadChoiceNode : public ChoiceNode class LoopChoiceNode : public ChoiceNode { public: - explicit LoopChoiceNode(LifoAlloc* alloc, bool body_can_be_zero_length, - bool read_backward) + explicit LoopChoiceNode(LifoAlloc* alloc, bool body_can_be_zero_length) : ChoiceNode(alloc, 2), loop_node_(nullptr), continue_node_(nullptr), - body_can_be_zero_length_(body_can_be_zero_length), - read_backward_(read_backward) + body_can_be_zero_length_(body_can_be_zero_length) {} void AddLoopAlternative(GuardedAlternative alt); @@ -1146,7 +1133,6 @@ class LoopChoiceNode : public ChoiceNode RegExpNode* loop_node() { return loop_node_; } RegExpNode* continue_node() { return continue_node_; } bool body_can_be_zero_length() { return body_can_be_zero_length_; } - virtual bool read_backward() { return read_backward_; } virtual void Accept(NodeVisitor* visitor); virtual RegExpNode* FilterASCII(int depth, bool ignore_case, bool unicode); @@ -1161,7 +1147,6 @@ class LoopChoiceNode : public ChoiceNode RegExpNode* loop_node_; RegExpNode* continue_node_; bool body_can_be_zero_length_; - bool read_backward_; }; // Improve the speed that we scan for an initial point where a non-anchored @@ -1437,8 +1422,8 @@ class Trace } TriBool at_start() { return at_start_; } - void set_at_start(TriBool at_start) { - at_start_ = at_start; + void set_at_start(bool at_start) { + at_start_ = at_start ? TRUE_VALUE : FALSE_VALUE; } jit::Label* backtrack() { return backtrack_; } jit::Label* loop_label() { return loop_label_; } diff --git a/js/src/irregexp/RegExpInterpreter.cpp b/js/src/irregexp/RegExpInterpreter.cpp index d09b4671e..7fd2d983a 100644 --- a/js/src/irregexp/RegExpInterpreter.cpp +++ b/js/src/irregexp/RegExpInterpreter.cpp @@ -222,8 +222,8 @@ irregexp::InterpretCode(JSContext* cx, const uint8_t* byteCode, const CharT* cha } break; BYTECODE(LOAD_CURRENT_CHAR) { - int pos = current + (insn >> BYTECODE_SHIFT); - if (pos >= (int)length || pos < 0) { + size_t pos = current + (insn >> BYTECODE_SHIFT); + if (pos >= length) { pc = byteCode + Load32Aligned(pc + 4); } else { current_char = chars[pos]; @@ -238,8 +238,8 @@ irregexp::InterpretCode(JSContext* cx, const uint8_t* byteCode, const CharT* cha break; } BYTECODE(LOAD_2_CURRENT_CHARS) { - int pos = current + (insn >> BYTECODE_SHIFT); - if (pos + 2 > (int)length || pos < 0) { + size_t pos = current + (insn >> BYTECODE_SHIFT); + if (pos + 2 > length) { pc = byteCode + Load32Aligned(pc + 4); } else { CharT next = chars[pos + 1]; @@ -425,30 +425,6 @@ irregexp::InterpretCode(JSContext* cx, const uint8_t* byteCode, const CharT* cha pc += BC_CHECK_NOT_BACK_REF_LENGTH; break; } - BYTECODE(CHECK_NOT_BACK_REF_BACKWARD) { - int from = registers[insn >> BYTECODE_SHIFT]; - int len = registers[(insn >> BYTECODE_SHIFT) + 1] - from; - if (from < 0 || len <= 0) { - pc += BC_CHECK_NOT_BACK_REF_BACKWARD_LENGTH; - break; - } - if (int(current) - len < 0) { - pc = byteCode + Load32Aligned(pc + 4); - break; - } else { - int i; - for (i = 0; i < len; i++) { - if (chars[from + i] != chars[int(current) - len + i]) { - pc = byteCode + Load32Aligned(pc + 4); - break; - } - } - if (i < len) break; - current -= len; - } - pc += BC_CHECK_NOT_BACK_REF_BACKWARD_LENGTH; - break; - } BYTECODE(CHECK_NOT_BACK_REF_NO_CASE) { int from = registers[insn >> BYTECODE_SHIFT]; int len = registers[(insn >> BYTECODE_SHIFT) + 1] - from; @@ -489,46 +465,6 @@ irregexp::InterpretCode(JSContext* cx, const uint8_t* byteCode, const CharT* cha } break; } - BYTECODE(CHECK_NOT_BACK_REF_NO_CASE_BACKWARD) { - int from = registers[insn >> BYTECODE_SHIFT]; - int len = registers[(insn >> BYTECODE_SHIFT) + 1] - from; - if (from < 0 || len <= 0) { - pc += BC_CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_LENGTH; - break; - } - if (int(current) - len < 0) { - pc = byteCode + Load32Aligned(pc + 4); - break; - } - if (CaseInsensitiveCompareStrings(chars + from, chars + int(current) - len, len * sizeof(CharT))) { - current -= len; - pc += BC_CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_LENGTH; - } else { - pc = byteCode + Load32Aligned(pc + 4); - } - break; - - } - BYTECODE(CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_UNICODE) { - int from = registers[insn >> BYTECODE_SHIFT]; - int len = registers[(insn >> BYTECODE_SHIFT) + 1] - from; - if (from < 0 || len <= 0) { - pc += BC_CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_LENGTH; - break; - } - if (int(current) - len < 0) { - pc = byteCode + Load32Aligned(pc + 4); - break; - } - if (CaseInsensitiveCompareUCStrings(chars + from, chars + int(current) - len, len * sizeof(CharT))) { - current -= len; - pc += BC_CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_LENGTH; - } else { - pc = byteCode + Load32Aligned(pc + 4); - } - break; - - } BYTECODE(CHECK_AT_START) if (current == 0) pc = byteCode + Load32Aligned(pc + 4); @@ -536,7 +472,7 @@ irregexp::InterpretCode(JSContext* cx, const uint8_t* byteCode, const CharT* cha pc += BC_CHECK_AT_START_LENGTH; break; BYTECODE(CHECK_NOT_AT_START) - if (current + (insn >> BYTECODE_SHIFT) == 0) + if (current == 0) pc += BC_CHECK_NOT_AT_START_LENGTH; else pc = byteCode + Load32Aligned(pc + 4); diff --git a/js/src/irregexp/RegExpMacroAssembler.cpp b/js/src/irregexp/RegExpMacroAssembler.cpp index 6b1ceba8a..d66d0d204 100644 --- a/js/src/irregexp/RegExpMacroAssembler.cpp +++ b/js/src/irregexp/RegExpMacroAssembler.cpp @@ -226,37 +226,32 @@ InterpretedRegExpMacroAssembler::CheckGreedyLoop(jit::Label* on_tos_equals_curre } void -InterpretedRegExpMacroAssembler::CheckNotAtStart(int cp_offset, jit::Label* on_not_at_start) +InterpretedRegExpMacroAssembler::CheckNotAtStart(jit::Label* on_not_at_start) { - Emit(BC_CHECK_NOT_AT_START, cp_offset); + Emit(BC_CHECK_NOT_AT_START, 0); EmitOrLink(on_not_at_start); } void -InterpretedRegExpMacroAssembler::CheckNotBackReference(int start_reg, bool read_backward, - jit::Label* on_no_match) +InterpretedRegExpMacroAssembler::CheckNotBackReference(int start_reg, jit::Label* on_no_match) { MOZ_ASSERT(start_reg >= 0); MOZ_ASSERT(start_reg <= kMaxRegister); - Emit(read_backward ? BC_CHECK_NOT_BACK_REF_BACKWARD : BC_CHECK_NOT_BACK_REF, - start_reg); + Emit(BC_CHECK_NOT_BACK_REF, start_reg); EmitOrLink(on_no_match); } void InterpretedRegExpMacroAssembler::CheckNotBackReferenceIgnoreCase(int start_reg, - bool read_backward, jit::Label* on_no_match, bool unicode) { MOZ_ASSERT(start_reg >= 0); MOZ_ASSERT(start_reg <= kMaxRegister); if (unicode) - Emit(read_backward ? BC_CHECK_NOT_BACK_REF_NO_CASE_BACKWARD_UNICODE : BC_CHECK_NOT_BACK_REF_NO_CASE_UNICODE, - start_reg); + Emit(BC_CHECK_NOT_BACK_REF_NO_CASE_UNICODE, start_reg); else - Emit(read_backward ? BC_CHECK_NOT_BACK_REF_NO_CASE_BACKWARD : BC_CHECK_NOT_BACK_REF_NO_CASE, - start_reg); + Emit(BC_CHECK_NOT_BACK_REF_NO_CASE, start_reg); EmitOrLink(on_no_match); } diff --git a/js/src/irregexp/RegExpMacroAssembler.h b/js/src/irregexp/RegExpMacroAssembler.h index c5def92f2..dca2edf90 100644 --- a/js/src/irregexp/RegExpMacroAssembler.h +++ b/js/src/irregexp/RegExpMacroAssembler.h @@ -110,10 +110,10 @@ class MOZ_STACK_CLASS RegExpMacroAssembler virtual void CheckCharacterGT(char16_t limit, jit::Label* on_greater) = 0; virtual void CheckCharacterLT(char16_t limit, jit::Label* on_less) = 0; virtual void CheckGreedyLoop(jit::Label* on_tos_equals_current_position) = 0; - virtual void CheckNotAtStart(int cp_offset, jit::Label* on_not_at_start) = 0; - virtual void CheckNotBackReference(int start_reg, bool read_backward, jit::Label* on_no_match) = 0; - virtual void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, - jit::Label* on_no_match, bool unicode) = 0; + virtual void CheckNotAtStart(jit::Label* on_not_at_start) = 0; + virtual void CheckNotBackReference(int start_reg, jit::Label* on_no_match) = 0; + virtual void CheckNotBackReferenceIgnoreCase(int start_reg, jit::Label* on_no_match, + bool unicode) = 0; // Check the current character for a match with a literal character. If we // fail to match then goto the on_failure label. End of input always @@ -245,10 +245,9 @@ class MOZ_STACK_CLASS InterpretedRegExpMacroAssembler final : public RegExpMacro void CheckCharacterGT(char16_t limit, jit::Label* on_greater); void CheckCharacterLT(char16_t limit, jit::Label* on_less); void CheckGreedyLoop(jit::Label* on_tos_equals_current_position); - void CheckNotAtStart(int cp_offset, jit::Label* on_not_at_start); - void CheckNotBackReference(int start_reg, bool read_backward, jit::Label* on_no_match); - void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, - jit::Label* on_no_match, bool unicode); + void CheckNotAtStart(jit::Label* on_not_at_start); + void CheckNotBackReference(int start_reg, jit::Label* on_no_match); + void CheckNotBackReferenceIgnoreCase(int start_reg, jit::Label* on_no_match, bool unicode); void CheckNotCharacter(unsigned c, jit::Label* on_not_equal); void CheckNotCharacterAfterAnd(unsigned c, unsigned and_with, jit::Label* on_not_equal); void CheckNotCharacterAfterMinusAnd(char16_t c, char16_t minus, char16_t and_with, diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp index 1ad044e8e..d4308d0d8 100644 --- a/js/src/irregexp/RegExpParser.cpp +++ b/js/src/irregexp/RegExpParser.cpp @@ -227,7 +227,6 @@ RegExpParser<CharT>::RegExpParser(frontend::TokenStream& ts, LifoAlloc* alloc, alloc(alloc), captures_(nullptr), next_pos_(chars), - captures_started_(0), end_(end), current_(kEndMarker), capture_count_(0), @@ -420,8 +419,7 @@ RangeAtom(LifoAlloc* alloc, char16_t from, char16_t to) static inline RegExpTree* NegativeLookahead(LifoAlloc* alloc, char16_t from, char16_t to) { - return alloc->newInfallible<RegExpLookaround>(RangeAtom(alloc, from, to), false, - 0, 0, RegExpLookaround::LOOKAHEAD); + return alloc->newInfallible<RegExpLookahead>(RangeAtom(alloc, from, to), false, 0, 0); } static bool @@ -1216,38 +1214,6 @@ RegExpParser<CharT>::ParseBackReferenceIndex(int* index_out) return true; } -template <typename CharT> -RegExpCapture* -RegExpParser<CharT>::GetCapture(int index) { - // The index for the capture groups are one-based. Its index in the list is - // zero-based. - int known_captures = - is_scanned_for_captures_ ? capture_count_ : captures_started_; - MOZ_ASSERT(index <= known_captures); - if (captures_ == NULL) { - captures_ = alloc->newInfallible<RegExpCaptureVector>(*alloc); - } - while ((int)captures_->length() < known_captures) { - RegExpCapture* capture = alloc->newInfallible<RegExpCapture>(nullptr, captures_->length() + 1); - captures_->append(capture); - } - return (*captures_)[index - 1]; -} - - -template <typename CharT> -bool -RegExpParser<CharT>::RegExpParserState::IsInsideCaptureGroup(int index) { - for (RegExpParserState* s = this; s != NULL; s = s->previous_state()) { - if (s->group_type() != CAPTURE) continue; - // Return true if we found the matching capture index. - if (index == s->capture_index()) return true; - // Abort if index is larger than what has been parsed up till this state. - if (index > s->capture_index()) return false; - } - return false; -} - // QuantifierPrefix :: // { DecimalDigits } // { DecimalDigits , } @@ -1490,24 +1456,24 @@ RegExpTree* RegExpParser<CharT>::ParseDisjunction() { // Used to store current state while parsing subexpressions. - RegExpParserState initial_state(alloc, nullptr, INITIAL, RegExpLookaround::LOOKAHEAD, 0); - RegExpParserState* state = &initial_state; + RegExpParserState initial_state(alloc, nullptr, INITIAL, 0); + RegExpParserState* stored_state = &initial_state; // Cache the builder in a local variable for quick access. RegExpBuilder* builder = initial_state.builder(); while (true) { switch (current()) { case kEndMarker: - if (state->IsSubexpression()) { + if (stored_state->IsSubexpression()) { // Inside a parenthesized group when hitting end of input. return ReportError(JSMSG_MISSING_PAREN); } - MOZ_ASSERT(INITIAL == state->group_type()); + MOZ_ASSERT(INITIAL == stored_state->group_type()); // Parsing completed successfully. return builder->ToRegExp(); case ')': { - if (!state->IsSubexpression()) + if (!stored_state->IsSubexpression()) return ReportError(JSMSG_UNMATCHED_RIGHT_PAREN); - MOZ_ASSERT(INITIAL != state->group_type()); + MOZ_ASSERT(INITIAL != stored_state->group_type()); Advance(); // End disjunction parsing and convert builder content to new single @@ -1516,30 +1482,29 @@ RegExpParser<CharT>::ParseDisjunction() int end_capture_index = captures_started(); - int capture_index = state->capture_index(); - SubexpressionType group_type = state->group_type(); + int capture_index = stored_state->capture_index(); + SubexpressionType group_type = stored_state->group_type(); + + // Restore previous state. + stored_state = stored_state->previous_state(); + builder = stored_state->builder(); // Build result of subexpression. if (group_type == CAPTURE) { - RegExpCapture* capture = GetCapture(capture_index); - capture->set_body(body); + RegExpCapture* capture = alloc->newInfallible<RegExpCapture>(body, capture_index); + (*captures_)[capture_index - 1] = capture; body = capture; } else if (group_type != GROUPING) { - MOZ_ASSERT(group_type == POSITIVE_LOOKAROUND || - group_type == NEGATIVE_LOOKAROUND); - bool is_positive = (group_type == POSITIVE_LOOKAROUND); - body = alloc->newInfallible<RegExpLookaround>(body, + MOZ_ASSERT(group_type == POSITIVE_LOOKAHEAD || + group_type == NEGATIVE_LOOKAHEAD); + bool is_positive = (group_type == POSITIVE_LOOKAHEAD); + body = alloc->newInfallible<RegExpLookahead>(body, is_positive, end_capture_index - capture_index, - capture_index, - state->lookaround_type()); + capture_index); } - - // Restore previous state. - state = state->previous_state(); - builder = state->builder(); builder->AddAtom(body); - if (unicode_ && (group_type == POSITIVE_LOOKAROUND || group_type == NEGATIVE_LOOKAROUND)) + if (unicode_ && (group_type == POSITIVE_LOOKAHEAD || group_type == NEGATIVE_LOOKAHEAD)) continue; // For compatability with JSC and ES3, we allow quantifiers after // lookaheads, and break in all cases. @@ -1599,7 +1564,6 @@ RegExpParser<CharT>::ParseDisjunction() } case '(': { SubexpressionType subexpr_type = CAPTURE; - RegExpLookaround::Type lookaround_type = state->lookaround_type(); Advance(); if (current() == '?') { switch (Next()) { @@ -1607,39 +1571,26 @@ RegExpParser<CharT>::ParseDisjunction() subexpr_type = GROUPING; break; case '=': - lookaround_type = RegExpLookaround::LOOKAHEAD; - subexpr_type = POSITIVE_LOOKAROUND; + subexpr_type = POSITIVE_LOOKAHEAD; break; case '!': - lookaround_type = RegExpLookaround::LOOKAHEAD; - subexpr_type = NEGATIVE_LOOKAROUND; + subexpr_type = NEGATIVE_LOOKAHEAD; break; - case '<': - Advance(); - lookaround_type = RegExpLookaround::LOOKBEHIND; - if (Next() == '=') { - subexpr_type = POSITIVE_LOOKAROUND; - break; - } else if (Next() == '!') { - subexpr_type = NEGATIVE_LOOKAROUND; - break; - } - // We didn't get a positive or negative after '<'. - // That's an error. - return ReportError(JSMSG_INVALID_GROUP); default: return ReportError(JSMSG_INVALID_GROUP); } Advance(2); } else { + if (captures_ == nullptr) + captures_ = alloc->newInfallible<RegExpCaptureVector>(*alloc); if (captures_started() >= kMaxCaptures) return ReportError(JSMSG_TOO_MANY_PARENS); - captures_started_++; + captures_->append((RegExpCapture*) nullptr); } // Store current state and begin new disjunction parsing. - state = alloc->newInfallible<RegExpParserState>(alloc, state, subexpr_type, - lookaround_type, captures_started_); - builder = state->builder(); + stored_state = alloc->newInfallible<RegExpParserState>(alloc, stored_state, subexpr_type, + captures_started()); + builder = stored_state->builder(); continue; } case '[': { @@ -1694,18 +1645,19 @@ RegExpParser<CharT>::ParseDisjunction() case '7': case '8': case '9': { int index = 0; if (ParseBackReferenceIndex(&index)) { - if (state->IsInsideCaptureGroup(index)) { - // The backreference is inside the capture group it refers to. - // Nothing can possibly have been captured yet. - builder->AddEmpty(); - } else { - RegExpCapture* capture = GetCapture(index); - RegExpTree* atom = alloc->newInfallible<RegExpBackReference>(capture); - if (unicode_) - builder->AddAtom(UnicodeBackReferenceAtom(alloc, atom)); - else - builder->AddAtom(atom); + RegExpCapture* capture = nullptr; + if (captures_ != nullptr && index <= (int) captures_->length()) { + capture = (*captures_)[index - 1]; + } + if (capture == nullptr) { + builder->AddEmpty(); + break; } + RegExpTree* atom = alloc->newInfallible<RegExpBackReference>(capture); + if (unicode_) + builder->AddAtom(UnicodeBackReferenceAtom(alloc, atom)); + else + builder->AddAtom(atom); break; } if (unicode_) diff --git a/js/src/irregexp/RegExpParser.h b/js/src/irregexp/RegExpParser.h index ee57f0436..a58800a91 100644 --- a/js/src/irregexp/RegExpParser.h +++ b/js/src/irregexp/RegExpParser.h @@ -229,7 +229,7 @@ class RegExpParser bool simple() { return simple_; } bool contains_anchor() { return contains_anchor_; } void set_contains_anchor() { contains_anchor_ = true; } - int captures_started() { return captures_started_; } + int captures_started() { return captures_ == nullptr ? 0 : captures_->length(); } const CharT* position() { return next_pos_ - 1; } static const int kMaxCaptures = 1 << 16; @@ -239,8 +239,8 @@ class RegExpParser enum SubexpressionType { INITIAL, CAPTURE, // All positive values represent captures. - POSITIVE_LOOKAROUND, - NEGATIVE_LOOKAROUND, + POSITIVE_LOOKAHEAD, + NEGATIVE_LOOKAHEAD, GROUPING }; @@ -249,12 +249,10 @@ class RegExpParser RegExpParserState(LifoAlloc* alloc, RegExpParserState* previous_state, SubexpressionType group_type, - RegExpLookaround::Type lookaround_type, int disjunction_capture_index) : previous_state_(previous_state), builder_(alloc->newInfallible<RegExpBuilder>(alloc)), group_type_(group_type), - lookaround_type_(lookaround_type), disjunction_capture_index_(disjunction_capture_index) {} // Parser state of containing expression, if any. @@ -264,16 +262,11 @@ class RegExpParser RegExpBuilder* builder() { return builder_; } // Type of regexp being parsed (parenthesized group or entire regexp). SubexpressionType group_type() { return group_type_; } - // Lookahead or Lookbehind. - RegExpLookaround::Type lookaround_type() { return lookaround_type_; } // Index in captures array of first capture in this sub-expression, if any. // Also the capture index of this sub-expression itself, if group_type // is CAPTURE. int capture_index() { return disjunction_capture_index_; } - // Check whether the parser is inside a capture group with the given index. - bool IsInsideCaptureGroup(int index); - private: // Linked list implementation of stack of states. RegExpParserState* previous_state_; @@ -281,15 +274,10 @@ class RegExpParser RegExpBuilder* builder_; // Stored disjunction type (capture, look-ahead or grouping), if any. SubexpressionType group_type_; - // Stored read direction. - RegExpLookaround::Type lookaround_type_; // Stored disjunction's capture index (if any). int disjunction_capture_index_; }; - // Return the 1-indexed RegExpCapture object, allocate if necessary. - RegExpCapture* GetCapture(int index); - widechar current() { return current_; } bool has_more() { return has_more_; } bool has_next() { return next_pos_ < end_; } @@ -306,7 +294,6 @@ class RegExpParser const CharT* next_pos_; const CharT* end_; widechar current_; - int captures_started_; // The capture count is only valid after we have scanned for captures. int capture_count_; bool has_more_; diff --git a/js/xpconnect/tests/mochitest/test_bug1094930.html b/js/xpconnect/tests/mochitest/test_bug1094930.html index 434949360..674edfe47 100644 --- a/js/xpconnect/tests/mochitest/test_bug1094930.html +++ b/js/xpconnect/tests/mochitest/test_bug1094930.html @@ -16,14 +16,14 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1094930 <script type="application/javascript"> SimpleTest.waitForExplicitFinish(); var proto = { - createdCallback: function() { - ok(true, "createdCallback was called"); + connectedCallback: function() { + ok(true, "connectedCallback was called"); SimpleTest.finish() } }; var f = document.registerElement.call(frames[0].document, "x-foo", { prototype: proto }); - var inst = new f(); + frames[0].document.firstChild.appendChild(new f()); </script> </body> </html> diff --git a/layout/base/crashtests/crashtests.list b/layout/base/crashtests/crashtests.list index e2cb99e04..6ded4ff3f 100644 --- a/layout/base/crashtests/crashtests.list +++ b/layout/base/crashtests/crashtests.list @@ -448,7 +448,7 @@ load 876092.html load 876221.html load 897852.html asserts(4-6) asserts-if(Android&&!asyncPan,2) load 898913.html # bug 847368 -pref(layers.acceleration.disabled,true) pref(layers.force-active,true) load 919434.html +pref(layers.acceleration.enabled,false) pref(layers.force-active,true) load 919434.html load 926728.html load 930381.html load 931450.html diff --git a/layout/base/nsCSSFrameConstructor.cpp b/layout/base/nsCSSFrameConstructor.cpp index ec676ca92..34cfc6b59 100644 --- a/layout/base/nsCSSFrameConstructor.cpp +++ b/layout/base/nsCSSFrameConstructor.cpp @@ -3563,10 +3563,6 @@ nsCSSFrameConstructor::FindHTMLData(Element* aElement, return nullptr; } - if (aTag == nsGkAtoms::details && !HTMLDetailsElement::IsDetailsEnabled()) { - return nullptr; - } - static const FrameConstructionDataByTag sHTMLData[] = { SIMPLE_TAG_CHAIN(img, nsCSSFrameConstructor::FindImgData), SIMPLE_TAG_CHAIN(mozgeneratedcontentimage, @@ -5788,7 +5784,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState // ::before and ::after); we always want to create "internal" anonymous // content. auto* details = HTMLDetailsElement::FromContentOrNull(parent); - if (details && details->IsDetailsEnabled() && !details->Open() && + if (details && !details->Open() && (!aContent->IsRootOfNativeAnonymousSubtree() || aContent->IsGeneratedContentContainerForBefore() || aContent->IsGeneratedContentContainerForAfter())) { @@ -5956,7 +5952,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState } FrameConstructionItem* item = nullptr; - if (details && details->IsDetailsEnabled() && details->Open()) { + if (details && details->Open()) { auto* summary = HTMLSummaryElement::FromContentOrNull(aContent); if (summary && summary->IsMainSummary()) { // If details is open, the main summary needs to be rendered as if it is diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp index 0f4560afe..27236e3f4 100644 --- a/layout/build/nsLayoutStatics.cpp +++ b/layout/build/nsLayoutStatics.cpp @@ -412,8 +412,6 @@ nsLayoutStatics::Shutdown() DisplayItemClip::Shutdown(); - CustomElementRegistry::XPCOMShutdown(); - CacheObserver::Shutdown(); PromiseDebugging::Shutdown(); diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 183556ab9..a3c0d62c6 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -606,19 +606,19 @@ pref(layout.css.grid.enabled,true) load 1225376.html pref(layout.css.grid.enabled,true) load 1225592.html load 1229437-1.html load 1229437-2.html -pref(dom.details_element.enabled,true) load details-containing-only-text.html -pref(dom.details_element.enabled,true) load details-display-none-summary-1.html -pref(dom.details_element.enabled,true) load details-display-none-summary-2.html -pref(dom.details_element.enabled,true) load details-display-none-summary-3.html -pref(dom.details_element.enabled,true) load details-open-overflow-auto.html -pref(dom.details_element.enabled,true) load details-open-overflow-hidden.html -pref(dom.details_element.enabled,true) load details-three-columns.html +load details-containing-only-text.html +load details-display-none-summary-1.html +load details-display-none-summary-2.html +load details-display-none-summary-3.html +load details-open-overflow-auto.html +load details-open-overflow-hidden.html +load details-three-columns.html load first-letter-638937-1.html load first-letter-638937-2.html load flex-nested-abspos-1.html pref(dom.meta-viewport.enabled,true) test-pref(font.size.inflation.emPerLine,15) asserts(0-100) load font-inflation-762332.html # bug 762332 load outline-on-frameset.xhtml -pref(dom.details_element.enabled,true) load summary-position-out-of-flow.html +load summary-position-out-of-flow.html load text-overflow-bug666751-1.html load text-overflow-bug666751-2.html load text-overflow-bug670564.xhtml diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp index abf687c9b..afc4ed96f 100644 --- a/layout/generic/nsContainerFrame.cpp +++ b/layout/generic/nsContainerFrame.cpp @@ -1890,12 +1890,10 @@ nsContainerFrame::RenumberFrameAndDescendants(int32_t* aOrdinal, } // Do not renumber list for summary elements. - if (HTMLDetailsElement::IsDetailsEnabled()) { - HTMLSummaryElement* summary = - HTMLSummaryElement::FromContent(kid->GetContent()); - if (summary && summary->IsMainSummary()) { - return false; - } + HTMLSummaryElement* summary = + HTMLSummaryElement::FromContent(kid->GetContent()); + if (summary && summary->IsMainSummary()) { + return false; } bool kidRenumberedABullet = false; diff --git a/layout/reftests/details-summary/disabled-no-summary-ref.html b/layout/reftests/details-summary/disabled-no-summary-ref.html deleted file mode 100644 index 6ecdbcdc0..000000000 --- a/layout/reftests/details-summary/disabled-no-summary-ref.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<!-- Any copyright is dedicated to the Public Domain. - - http://creativecommons.org/publicdomain/zero/1.0/ --> - -<html> - <body> - <div> - <p>This is the details.</p> - </div> - </body> -</html> diff --git a/layout/reftests/details-summary/disabled-single-summary-ref.html b/layout/reftests/details-summary/disabled-single-summary-ref.html deleted file mode 100644 index f643af6dc..000000000 --- a/layout/reftests/details-summary/disabled-single-summary-ref.html +++ /dev/null @@ -1,12 +0,0 @@ -<!DOCTYPE html> -<!-- Any copyright is dedicated to the Public Domain. - - http://creativecommons.org/publicdomain/zero/1.0/ --> - -<html> - <body> - <div> - <div>Summary</div> - <p>This is the details.</p> - </div> - </body> -</html> diff --git a/layout/reftests/details-summary/reftest-stylo.list b/layout/reftests/details-summary/reftest-stylo.list index e23b1206b..2c6ec0d7b 100644 --- a/layout/reftests/details-summary/reftest-stylo.list +++ b/layout/reftests/details-summary/reftest-stylo.list @@ -1,10 +1,4 @@ # DO NOT EDIT! This is a auto-generated temporary list for Stylo testing -default-preferences pref(dom.details_element.enabled,true) - -# Disable <details> and <summary> -pref(dom.details_element.enabled,false) == single-summary.html single-summary.html -pref(dom.details_element.enabled,false) == open-single-summary.html open-single-summary.html -pref(dom.details_element.enabled,false) == no-summary.html no-summary.html # Basic <summary> handling == multiple-summary.html multiple-summary.html diff --git a/layout/reftests/details-summary/reftest.list b/layout/reftests/details-summary/reftest.list index 92b1404b5..e96581ad4 100644 --- a/layout/reftests/details-summary/reftest.list +++ b/layout/reftests/details-summary/reftest.list @@ -1,10 +1,3 @@ -default-preferences pref(dom.details_element.enabled,true) - -# Disable <details> and <summary> -pref(dom.details_element.enabled,false) == single-summary.html disabled-single-summary-ref.html -pref(dom.details_element.enabled,false) == open-single-summary.html disabled-single-summary-ref.html -pref(dom.details_element.enabled,false) == no-summary.html disabled-no-summary-ref.html - # Basic <summary> handling == multiple-summary.html single-summary.html == open-multiple-summary.html open-multiple-summary-ref.html diff --git a/layout/style/nsLayoutStylesheetCache.cpp b/layout/style/nsLayoutStylesheetCache.cpp index e8c6d09d7..0e6bc35ee 100644 --- a/layout/style/nsLayoutStylesheetCache.cpp +++ b/layout/style/nsLayoutStylesheetCache.cpp @@ -122,11 +122,6 @@ nsLayoutStylesheetCache::UASheet() StyleSheet* nsLayoutStylesheetCache::HTMLSheet() { - if (!mHTMLSheet) { - LoadSheetURL("resource://gre-resources/html.css", - &mHTMLSheet, eAgentSheetFeatures, eCrash); - } - return mHTMLSheet; } @@ -322,6 +317,8 @@ nsLayoutStylesheetCache::nsLayoutStylesheetCache(StyleBackendType aType) // per-profile, since they're profile-invariant. LoadSheetURL("resource://gre-resources/counterstyles.css", &mCounterStylesSheet, eAgentSheetFeatures, eCrash); + LoadSheetURL("resource://gre-resources/html.css", + &mHTMLSheet, eAgentSheetFeatures, eCrash); LoadSheetURL("chrome://global/content/minimal-xul.css", &mMinimalXULSheet, eAgentSheetFeatures, eCrash); LoadSheetURL("resource://gre-resources/quirk.css", @@ -382,8 +379,6 @@ nsLayoutStylesheetCache::For(StyleBackendType aType) // "layout.css.example-pref.enabled"); Preferences::RegisterCallback(&DependentPrefChanged, "layout.css.grid.enabled"); - Preferences::RegisterCallback(&DependentPrefChanged, - "dom.details_element.enabled"); } return cache; @@ -555,7 +550,6 @@ nsLayoutStylesheetCache::DependentPrefChanged(const char* aPref, void* aData) gStyleCache_Servo ? &gStyleCache_Servo->sheet_ : nullptr); INVALIDATE(mUASheet); // for layout.css.grid.enabled - INVALIDATE(mHTMLSheet); // for dom.details_element.enabled #undef INVALIDATE } diff --git a/layout/tools/reftest/reftestcommandline.py b/layout/tools/reftest/reftestcommandline.py index da76fbd9a..f983be528 100644 --- a/layout/tools/reftest/reftestcommandline.py +++ b/layout/tools/reftest/reftestcommandline.py @@ -323,7 +323,8 @@ class DesktopArgumentsParser(ReftestArgumentsParser): def _prefs_gpu(self): if mozinfo.os != "win": - return ["layers.acceleration.force-enabled=true"] + return ["layers.acceleration.enabled=true", + "layers.acceleration.force=true"] return [] def validate(self, options, reftest): diff --git a/layout/tools/reftest/runreftest.py b/layout/tools/reftest/runreftest.py index 7845903bd..7061b16ca 100644 --- a/layout/tools/reftest/runreftest.py +++ b/layout/tools/reftest/runreftest.py @@ -287,11 +287,6 @@ class RefTest(object): prefs['browser.tabs.remote.autostart'] = True prefs['extensions.e10sBlocksEnabling'] = False - # Bug 1262954: For winXP + e10s disable acceleration - if platform.system() in ("Windows", "Microsoft") and \ - '5.1' in platform.version() and options.e10s: - prefs['layers.acceleration.disabled'] = True - # Bug 1300355: Disable canvas cache for win7 as it uses # too much memory and causes OOMs. if platform.system() in ("Windows", "Microsoft") and \ diff --git a/mailnews/base/prefs/content/aw-incoming.js b/mailnews/base/prefs/content/aw-incoming.js index fcc063fed..5ea0c77ae 100644 --- a/mailnews/base/prefs/content/aw-incoming.js +++ b/mailnews/base/prefs/content/aw-incoming.js @@ -158,7 +158,10 @@ function setServerType() var serverType = document.getElementById("servertype").value; var deferStorageBox = document.getElementById("deferStorageBox"); var leaveMessages = document.getElementById("leaveMsgsOnSrvrBox"); - var port = serverType == "pop3" ? 110 : 143; + + // pop3 110 (unsecure) 995 (SSL) + // imap 143 (unsecure) 993 (SSL) + var port = serverType == "pop3" ? 995 : 993; document.getElementById("serverPort").value = port; document.getElementById("defaultPortValue").value = port; diff --git a/mailnews/mailnews.js b/mailnews/mailnews.js index 705a0a08a..7ebe2eaa7 100644 --- a/mailnews/mailnews.js +++ b/mailnews/mailnews.js @@ -450,7 +450,7 @@ pref("mail.server.default.valid", true); pref("mail.server.default.abbreviate", true); pref("mail.server.default.isSecure", false); pref("mail.server.default.authMethod", 3); // cleartext password. @see nsIMsgIncomingServer.authMethod. -pref("mail.server.default.socketType", 0); // @see nsIMsgIncomingServer.socketType +pref("mail.server.default.socketType", 3); // SSL/TLS. @see nsIMsgIncomingServer.socketType pref("mail.server.default.override_namespaces", true); pref("mail.server.default.deferred_to_account", ""); @@ -579,7 +579,7 @@ pref("mail.smtp.useMatchingDomainServer", false); pref("mail.smtp.useMatchingHostNameServer", false); pref("mail.smtpserver.default.authMethod", 3); // cleartext password. @see nsIMsgIncomingServer.authMethod. -pref("mail.smtpserver.default.try_ssl", 0); // @see nsISmtpServer.socketType +pref("mail.smtpserver.default.try_ssl", 3); // SSL/TLS. @see nsISmtpServer.socketType // For the next 3 prefs, see <http://www.bucksch.org/1/projects/mozilla/16507> pref("mail.display_glyph", true); // TXT->HTML :-) etc. in viewer diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp index 19487704f..840406635 100644 --- a/modules/libpref/Preferences.cpp +++ b/modules/libpref/Preferences.cpp @@ -1229,10 +1229,10 @@ static nsresult pref_InitInitialObjects() nsresult rv; // In omni.jar case, we load the following prefs: - // - jar:$gre/omni.jar!/greprefs.js + // - jar:$gre/omni.jar!/goanna.js // - jar:$gre/omni.jar!/defaults/pref/*.js // In non omni.jar case, we load: - // - $gre/greprefs.js + // - $gre/goanna.js // // In both cases, we also load: // - $gre/defaults/pref/*.js @@ -1259,8 +1259,8 @@ static nsresult pref_InitInitialObjects() RefPtr<nsZipArchive> jarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE); if (jarReader) { - // Load jar:$gre/omni.jar!/greprefs.js - rv = pref_ReadPrefFromJar(jarReader, "greprefs.js"); + // Load jar:$gre/omni.jar!/goanna.js + rv = pref_ReadPrefFromJar(jarReader, "goanna.js"); NS_ENSURE_SUCCESS(rv, rv); // Load jar:$gre/omni.jar!/defaults/pref/*.js @@ -1279,12 +1279,12 @@ static nsresult pref_InitInitialObjects() NS_WARNING("Error parsing preferences."); } } else { - // Load $gre/greprefs.js + // Load $gre/goanna.js nsCOMPtr<nsIFile> greprefsFile; rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(greprefsFile)); NS_ENSURE_SUCCESS(rv, rv); - rv = greprefsFile->AppendNative(NS_LITERAL_CSTRING("greprefs.js")); + rv = greprefsFile->AppendNative(NS_LITERAL_CSTRING("goanna.js")); NS_ENSURE_SUCCESS(rv, rv); rv = openPrefFile(greprefsFile); diff --git a/modules/libpref/greprefs.js b/modules/libpref/goanna.js index d59110b6a..d59110b6a 100644 --- a/modules/libpref/greprefs.js +++ b/modules/libpref/goanna.js diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 8f7ae0a58..2a47a8ad9 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -1166,7 +1166,6 @@ pref("dom.disable_window_open_feature.menubar", false); pref("dom.disable_window_open_feature.resizable", true); pref("dom.disable_window_open_feature.minimizable", false); pref("dom.disable_window_open_feature.status", true); -pref("dom.disable_window_showModalDialog", true); pref("dom.allow_scripts_to_close_windows", false); @@ -4498,7 +4497,16 @@ pref("network.tcp.keepalive.probe_count", 4); #endif // Whether to disable acceleration for all widgets. -pref("layers.acceleration.disabled", false); +#if defined(XP_UNIX) && !defined(XP_MACOSX) +// On Linux this is disabled by default for known issues with "free" drivers +pref("layers.acceleration.enabled", false); +#else +pref("layers.acceleration.enabled", true); +#endif +// Whether to force acceleration on, ignoring blacklists. +// This requires layers.acceleration.enabled to be set to true +pref("layers.acceleration.force", false); + // Preference that when switched at runtime will run a series of benchmarks // and output the result to stderr. pref("layers.bench.enabled", false); @@ -4507,18 +4515,6 @@ pref("layers.bench.enabled", false); pref("layers.gpu-process.dev.enabled", true); #endif -// Whether to force acceleration on, ignoring blacklists. -#ifdef ANDROID -// bug 838603 -- on Android, accidentally blacklisting OpenGL layers -// means a startup crash for everyone. -// Temporarily force-enable GL compositing. This is default-disabled -// deep within the bowels of the widgetry system. Remove me when GL -// compositing isn't default disabled in widget/android. -pref("layers.acceleration.force-enabled", true); -#else -pref("layers.acceleration.force-enabled", false); -#endif - pref("layers.acceleration.draw-fps", false); // Enable DEAA antialiasing for transformed layers in the compositor @@ -5329,9 +5325,6 @@ pref("dom.audiochannel.mutedByDefault", false); // HTML <dialog> element pref("dom.dialog_element.enabled", false); -// Enable <details> and <summary> tags. -pref("dom.details_element.enabled", true); - // Secure Element API #ifdef MOZ_SECUREELEMENT pref("dom.secureelement.enabled", false); diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build index 1c2c13e69..1c9a51650 100644 --- a/modules/libpref/moz.build +++ b/modules/libpref/moz.build @@ -43,6 +43,4 @@ FINAL_LIBRARY = 'xul' DEFINES['OS_ARCH'] = CONFIG['OS_ARCH'] DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT'] -FINAL_TARGET_PP_FILES += [ - 'greprefs.js', -] +FINAL_TARGET_PP_FILES += ['goanna.js'] diff --git a/netwerk/protocol/ftp/nsFtpConnectionThread.cpp b/netwerk/protocol/ftp/nsFtpConnectionThread.cpp index 0dae7ca92..6904bc33b 100644 --- a/netwerk/protocol/ftp/nsFtpConnectionThread.cpp +++ b/netwerk/protocol/ftp/nsFtpConnectionThread.cpp @@ -82,6 +82,9 @@ nsFtpState::nsFtpState() , mAnonymous(true) , mRetryPass(false) , mStorReplyReceived(false) + , mRlist1xxReceived(false) + , mRstor1xxReceived(false) + , mRretr1xxReceived(false) , mInternalError(NS_OK) , mReconnectAndLoginAgain(false) , mCacheConnection(true) @@ -1153,15 +1156,18 @@ nsFtpState::S_list() { FTP_STATE nsFtpState::R_list() { if (mResponseCode/100 == 1) { + mRlist1xxReceived = true; + // OK, time to start reading from the data connection. if (mDataStream && HasPendingCallback()) mDataStream->AsyncWait(this, 0, 0, CallbackTarget()); return FTP_READ_BUF; } - if (mResponseCode/100 == 2) { + if (mResponseCode/100 == 2 && mRlist1xxReceived) { //(DONE) mNextState = FTP_COMPLETE; + mRlist1xxReceived = false; return FTP_COMPLETE; } return FTP_ERROR; @@ -1181,13 +1187,16 @@ nsFtpState::S_retr() { FTP_STATE nsFtpState::R_retr() { - if (mResponseCode/100 == 2) { + if (mResponseCode/100 == 2 && mRretr1xxReceived) { //(DONE) mNextState = FTP_COMPLETE; + mRretr1xxReceived = false; return FTP_COMPLETE; } if (mResponseCode/100 == 1) { + mRretr1xxReceived = true; + if (mDataStream && HasPendingCallback()) mDataStream->AsyncWait(this, 0, 0, CallbackTarget()); return FTP_READ_BUF; @@ -1262,7 +1271,7 @@ nsFtpState::S_stor() { FTP_STATE nsFtpState::R_stor() { - if (mResponseCode/100 == 2) { + if (mResponseCode/100 == 2 && mRstor1xxReceived) { //(DONE) mNextState = FTP_COMPLETE; mStorReplyReceived = true; @@ -1270,11 +1279,12 @@ nsFtpState::R_stor() { // Call Close() if it was not called in nsFtpState::OnStoprequest() if (!mUploadRequest && !IsClosed()) Close(); - + mRstor1xxReceived = false; return FTP_COMPLETE; } if (mResponseCode/100 == 1) { + mRstor1xxReceived = true; LOG(("FTP:(%x) writing on DT\n", this)); return FTP_READ_BUF; } diff --git a/netwerk/protocol/ftp/nsFtpConnectionThread.h b/netwerk/protocol/ftp/nsFtpConnectionThread.h index b4e71bd10..2fe21ab8c 100644 --- a/netwerk/protocol/ftp/nsFtpConnectionThread.h +++ b/netwerk/protocol/ftp/nsFtpConnectionThread.h @@ -180,6 +180,12 @@ private: bool mRetryPass; // retrying the password bool mStorReplyReceived; // FALSE if waiting for STOR // completion status from server + bool mRlist1xxReceived; // TRUE if the server has sent a + // LIST 1xx response. + bool mRstor1xxReceived; // TRUE if the server has sent a + // STOR 1xx response. + bool mRretr1xxReceived; // TRUE if the server has sent a + // RETR 1xx response. nsresult mInternalError; // represents internal state errors bool mReconnectAndLoginAgain; bool mCacheConnection; diff --git a/netwerk/protocol/http/Http2Stream.cpp b/netwerk/protocol/http/Http2Stream.cpp index 22d8142c9..a9d926a53 100644 --- a/netwerk/protocol/http/Http2Stream.cpp +++ b/netwerk/protocol/http/Http2Stream.cpp @@ -1478,8 +1478,12 @@ bool Http2Stream::Do0RTT() { MOZ_ASSERT(mTransaction); - mAttempting0RTT = true; - return mTransaction->Do0RTT(); + if (mTransaction->Do0RTT()) { + mAttempting0RTT = true; + } else { + mAttempting0RTT = false; + } + return mAttempting0RTT; } nsresult diff --git a/old-configure.in b/old-configure.in index 9398ef0fc..a98951937 100644 --- a/old-configure.in +++ b/old-configure.in @@ -2006,44 +2006,6 @@ esac MOZ_CONFIG_NSPR() dnl ======================================================== -dnl system libevent Support -dnl ======================================================== -MOZ_ARG_WITH_STRING(system-libevent, -[ --with-system-libevent[=PFX] - Use system libevent [installed at prefix PFX]], - LIBEVENT_DIR=$withval) - -_SAVE_CFLAGS=$CFLAGS -_SAVE_LDFLAGS=$LDFLAGS -_SAVE_LIBS=$LIBS -if test "$LIBEVENT_DIR" = yes; then - PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent, - MOZ_SYSTEM_LIBEVENT=1, - LIBEVENT_DIR=/usr) -fi -if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then - MOZ_SYSTEM_LIBEVENT= -elif test -z "$MOZ_SYSTEM_LIBEVENT"; then - CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS" - LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS" - MOZ_CHECK_HEADER(event.h, - [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then - AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include]) - fi], - AC_MSG_ERROR([--with-system-libevent requested but event.h not found])) - AC_CHECK_LIB(event, event_init, - [MOZ_SYSTEM_LIBEVENT=1 - MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include" - MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"], - [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=]) -fi -CFLAGS=$_SAVE_CFLAGS -LDFLAGS=$_SAVE_LDFLAGS -LIBS=$_SAVE_LIBS - -AC_SUBST(MOZ_SYSTEM_LIBEVENT) - -dnl ======================================================== dnl = If NSS was not detected in the system, dnl = use the one in the source tree (mozilla/security/nss) dnl ======================================================== @@ -5624,7 +5586,6 @@ MC_BASILISK=$MC_BASILISK MC_PALEMOON=$MC_PALEMOON MOZ_EME=$MOZ_EME MOZ_WEBRTC=$MOZ_WEBRTC -MOZ_SYSTEM_LIBEVENT=$MOZ_SYSTEM_LIBEVENT MOZ_SYSTEM_NSS=$MOZ_SYSTEM_NSS MOZ_SYSTEM_NSPR=$MOZ_SYSTEM_NSPR MOZ_SYSTEM_JPEG=$MOZ_SYSTEM_JPEG diff --git a/parser/html/java/README.txt b/parser/html/java/README.txt index b358cc595..569a5c842 100644 --- a/parser/html/java/README.txt +++ b/parser/html/java/README.txt @@ -1,13 +1,13 @@ If this is your first time building the HTML5 parser, you need to execute the following commands (from this directory) to accomplish the translation: - make translate # perform the Java-to-C++ translation from the remote + make translate # perform the Java-to-C++ translation from the remote # sources make named_characters # Generate tables for named character tokenization If you make changes to the translator or the javaparser, you can rebuild by retyping 'make' in this directory. If you make changes to the HTML5 Java -implementation, you can retranslate the Java sources from the htmlparser +implementation, you can retranslate the Java sources from the htmlparser repository by retyping 'make translate' in this directory. The makefile supports the following targets: @@ -36,6 +36,43 @@ clean-javasrc: clean: Runs clean-javaparser, clean-htmlparser, and clean-javasrc. +## How to add an attribute + +# starting from the root of a UXP checkout +cd parser/html/java/htmlparser/src/ +$EDITOR nu/validator/htmlparser/impl/AttributeName.java +# Search for the word "uncomment" and uncomment stuff according to the comments that talk about uncommenting +# Duplicate the declaration a normal attribute (nothings special in SVG mode, etc.). Let's use "alt", since it's the first one. +# In the duplicate, replace ALT with the new name in all caps and "alt" with the new name in quotes in lower case. +# Search for "ALT,", duplicate that line and change the duplicate to say the new name in all caps followed by comma. +# Save. +javac nu/validator/htmlparser/impl/AttributeName.java +java nu.validator.htmlparser.impl.AttributeName +# Copy and paste the output into nu/validator/htmlparser/impl/AttributeName.java replacing the text below the comment "START GENERATED CODE" and above the very last "}". +# Recomment the bits that you uncommented earlier. +# Save. +cd ../.. # Back to parser/html/java/ +make translate + +## How to add an element + +# First, add an entry to parser/htmlparser/nsHTMLTagList.h or dom/svg/SVGTagList.h! +# Then, starting from the root of a UXP checkout +cd parser/html/java/htmlparser/src/ +$EDITOR nu/validator/htmlparser/impl/ElementName.java +# Search for the word "uncomment" and uncomment stuff according to the comments that talk about uncommenting +# Duplicate the declaration a normal element. Let's use "bdo", since it's the first normal one. +# In the duplicate, replace BDO with the new name in all caps and "bdo" with the new name in quotes in lower case (twice). +# Search for "BDO,", duplicate that line and change the duplicate to say the new name in all caps followed by comma. +# Save. +javac nu/validator/htmlparser/impl/ElementName.java +java nu.validator.htmlparser.impl.ElementName ../../../../../parser/htmlparser/nsHTMLTagList.h ../../../../../dom/svg/SVGTagList.h +# Copy and paste the output into nu/validator/htmlparser/impl/ElementName.java replacing the text below the comment "START GENERATED CODE" and above the very last "}". +# Recomment the bits that you uncommented earlier. +# Save. +cd ../.. # Back to parser/html/java/ +make translate + Ben Newman (23 September 2009) Henri Sivonen (11 August 2016) Matt A. Tobin (16 January 2020) diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/Creator.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/Creator.java new file mode 100644 index 000000000..0be53cd59 --- /dev/null +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/Creator.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Mozilla Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * Applied to an integer type to generate the unsigned variant in C++. + */ +package nu.validator.htmlparser.annotation; + +public @interface Creator { + +} diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/HtmlCreator.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/HtmlCreator.java new file mode 100644 index 000000000..a96bf0f0d --- /dev/null +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/HtmlCreator.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Mozilla Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * Applied to an integer type to generate the unsigned variant in C++. + */ +package nu.validator.htmlparser.annotation; + +public @interface HtmlCreator { + +} diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/SvgCreator.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/SvgCreator.java new file mode 100644 index 000000000..f317b09f1 --- /dev/null +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/SvgCreator.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Mozilla Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * Applied to an integer type to generate the unsigned variant in C++. + */ +package nu.validator.htmlparser.annotation; + +public @interface SvgCreator { + +} diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/Unsigned.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/Unsigned.java new file mode 100644 index 000000000..53606572a --- /dev/null +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/annotation/Unsigned.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Mozilla Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * Applied to an integer type to generate the unsigned variant in C++. + */ +package nu.validator.htmlparser.annotation; + +public @interface Unsigned { + +} diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/AttributeName.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/AttributeName.java index 48d82036c..aaf0b7b91 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/AttributeName.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/AttributeName.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2011 Mozilla Foundation + * Copyright (c) 2008-2017 Mozilla Foundation * Copyright (c) 2018-2020 Moonchild Productions * Copyright (c) 2020 Binary Outcast * @@ -25,13 +25,17 @@ package nu.validator.htmlparser.impl; import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import nu.validator.htmlparser.annotation.Inline; import nu.validator.htmlparser.annotation.Local; import nu.validator.htmlparser.annotation.NoLength; import nu.validator.htmlparser.annotation.NsUri; import nu.validator.htmlparser.annotation.Prefix; import nu.validator.htmlparser.annotation.QName; -import nu.validator.htmlparser.annotation.Virtual; +import nu.validator.htmlparser.annotation.Unsigned; import nu.validator.htmlparser.common.Interner; public final class AttributeName @@ -253,6 +257,24 @@ public final class AttributeName return arr; } + @Inline static int levelOrderBinarySearch(int[] data, int key) { + int n = data.length; + int i = 0; + + while (i < n) { + int val = data[i]; + if (val < key) { + i = 2 * i + 2; + } else if (val > key) { + i = 2 * i + 1; + } else { + return i; + } + } + + return -1; + } + /** * Returns an attribute name by buffer. * @@ -271,61 +293,63 @@ public final class AttributeName * whether to check ncnameness * @return an <code>AttributeName</code> corresponding to the argument data */ - static AttributeName nameByBuffer(@NoLength char[] buf, int offset, + @Inline static AttributeName nameByBuffer(@NoLength char[] buf, int offset, int length - // [NOCPP[ - , boolean checkNcName - // ]NOCPP] , Interner interner) { // XXX deal with offset - int hash = AttributeName.bufToHash(buf, length); - int index = Arrays.binarySearch(AttributeName.ATTRIBUTE_HASHES, hash); + @Unsigned int hash = AttributeName.bufToHash(buf, length); + int[] hashes; + hashes = AttributeName.ATTRIBUTE_HASHES; + int index = levelOrderBinarySearch(hashes, hash); if (index < 0) { - return AttributeName.createAttributeName( - Portability.newLocalNameFromBuffer(buf, offset, length, - interner) - // [NOCPP[ - , checkNcName - // ]NOCPP] - ); - } else { - AttributeName attributeName = AttributeName.ATTRIBUTE_NAMES[index]; - @Local String name = attributeName.getLocal(AttributeName.HTML); - if (!Portability.localEqualsBuffer(name, buf, offset, length)) { - return AttributeName.createAttributeName( - Portability.newLocalNameFromBuffer(buf, offset, length, - interner) - // [NOCPP[ - , checkNcName - // ]NOCPP] - ); - } - return attributeName; + return null; + } + AttributeName attributeName = AttributeName.ATTRIBUTE_NAMES[index]; + @Local String name = attributeName.getLocal(0); + if (!Portability.localEqualsBuffer(name, buf, offset, length)) { + return null; } + return attributeName; } /** - * This method has to return a unique integer for each well-known + * This method has to return a unique positive integer for each well-known * lower-cased attribute name. * * @param buf * @param len * @return */ - private static int bufToHash(@NoLength char[] buf, int len) { - int hash2 = 0; - int hash = len; - hash <<= 5; - hash += buf[0] - 0x60; - int j = len; - for (int i = 0; i < 4 && j > 0; i++) { - j--; - hash <<= 5; - hash += buf[j] - 0x60; - hash2 <<= 6; - hash2 += buf[i] - 0x5F; + @Inline private static @Unsigned int bufToHash(@NoLength char[] buf, int length) { + @Unsigned int len = length; + @Unsigned int first = buf[0]; + first <<= 19; + @Unsigned int second = 1 << 23; + @Unsigned int third = 0; + @Unsigned int fourth = 0; + @Unsigned int fifth = 0; + @Unsigned int sixth = 0; + if (length >= 4) { + second = buf[length - 4]; + second <<= 4; + third = buf[1]; + third <<= 9; + fourth = buf[length - 2]; + fourth <<= 14; + fifth = buf[3]; + fifth <<= 24; + sixth = buf[length - 1]; + sixth <<= 11; + } else if (length == 3) { + second = buf[1]; + second <<= 4; + third = buf[2]; + third <<= 9; + } else if (length == 2) { + second = buf[1]; + second <<= 24; } - return hash ^ hash2; + return len + first + second + third + fourth + fifth + sixth; } /** @@ -367,6 +391,8 @@ public final class AttributeName */ private final @Prefix @NoLength String[] prefix; + // CPPONLY: private final boolean custom; + // [NOCPP[ private final int flags; @@ -392,11 +418,11 @@ public final class AttributeName * @param xmlns * whether this is an xmlns attribute */ - protected AttributeName(@NsUri @NoLength String[] uri, + private AttributeName(@NsUri @NoLength String[] uri, @Local @NoLength String[] local, @Prefix @NoLength String[] prefix // [NOCPP[ , int flags - // ]NOCPP] + // ]NOCPP] ) { this.uri = uri; this.local = local; @@ -405,8 +431,27 @@ public final class AttributeName this.qName = COMPUTE_QNAME(local, prefix); this.flags = flags; // ]NOCPP] + // CPPONLY: this.custom = false; } + // CPPONLY: public AttributeName() { + // CPPONLY: this.uri = AttributeName.ALL_NO_NS; + // CPPONLY: this.local = AttributeName.SAME_LOCAL(null); + // CPPONLY: this.prefix = ALL_NO_PREFIX; + // CPPONLY: this.custom = true; + // CPPONLY: } + // CPPONLY: + // CPPONLY: @Inline public boolean isInterned() { + // CPPONLY: return !custom; + // CPPONLY: } + // CPPONLY: + // CPPONLY: @Inline public void setNameForNonInterned(@Local String name) { + // CPPONLY: assert custom; + // CPPONLY: local[0] = name; + // CPPONLY: local[1] = name; + // CPPONLY: local[2] = name; + // CPPONLY: } + /** * Creates an <code>AttributeName</code> for a local name. * @@ -416,7 +461,7 @@ public final class AttributeName * whether to check ncnameness * @return an <code>AttributeName</code> */ - private static AttributeName createAttributeName(@Local String name + static AttributeName createAttributeName(@Local String name // [NOCPP[ , boolean checkNcName // ]NOCPP] @@ -434,32 +479,12 @@ public final class AttributeName } /** - * Deletes runtime-allocated instances in C++. - */ - @Virtual void release() { - // No-op in Java. - // Implement as |delete this;| in subclass. - } - - /** * The C++ destructor. */ - @SuppressWarnings("unused") @Virtual private void destructor() { + @SuppressWarnings("unused") private void destructor() { Portability.deleteArray(local); } - /** - * Clones the attribute using an interner. Returns <code>this</code> in Java - * and for non-dynamic instances in C++. - * - * @param interner - * an interner - * @return a clone - */ - @Virtual public AttributeName cloneAttributeName(Interner interner) { - return this; - } - // [NOCPP[ /** * Creator for use when the XML violation policy requires an attribute name @@ -683,6 +708,25 @@ public final class AttributeName // return bufToHash(name.toCharArray(), name.length()); // } // +// private static void fillLevelOrderArray(List<AttributeName> sorted, int depth, +// int rootIdx, AttributeName[] levelOrder) { +// if (rootIdx >= levelOrder.length) { +// return; +// } +// +// if (depth > 0) { +// fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 1, levelOrder); +// } +// +// if (!sorted.isEmpty()) { +// levelOrder[rootIdx] = sorted.remove(0); +// } +// +// if (depth > 0) { +// fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 2, levelOrder); +// } +// } +// // /** // * Regenerate self // * @@ -690,13 +734,20 @@ public final class AttributeName // */ // public static void main(String[] args) { // Arrays.sort(ATTRIBUTE_NAMES); -// for (int i = 1; i < ATTRIBUTE_NAMES.length; i++) { -// if (ATTRIBUTE_NAMES[i].hash() == ATTRIBUTE_NAMES[i - 1].hash()) { -// System.err.println("Hash collision: " -// + ATTRIBUTE_NAMES[i].getLocal(HTML) + ", " -// + ATTRIBUTE_NAMES[i - 1].getLocal(HTML)); +// for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) { +// int hash = ATTRIBUTE_NAMES[i].hash(); +// if (hash < 0) { +// System.err.println("Negative hash: " + ATTRIBUTE_NAMES[i].local[0]); // return; // } +// for (int j = i + 1; j < ATTRIBUTE_NAMES.length; j++) { +// if (hash == ATTRIBUTE_NAMES[j].hash()) { +// System.err.println( +// "Hash collision: " + ATTRIBUTE_NAMES[i].local[0] + ", " +// + ATTRIBUTE_NAMES[j].local[0]); +// return; +// } +// } // } // for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) { // AttributeName att = ATTRIBUTE_NAMES[i]; @@ -704,1772 +755,1782 @@ public final class AttributeName // + att.constName() + " = new AttributeName" + att.toString() // + ";"); // } +// +// LinkedList<AttributeName> sortedNames = new LinkedList<AttributeName>(); +// Collections.addAll(sortedNames, ATTRIBUTE_NAMES); +// AttributeName[] levelOrder = new AttributeName[ATTRIBUTE_NAMES.length]; +// int bstDepth = (int) Math.ceil(Math.log(ATTRIBUTE_NAMES.length) / Math.log(2)); +// fillLevelOrderArray(sortedNames, bstDepth, 0, levelOrder); +// // System.out.println("private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = {"); -// for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) { -// AttributeName att = ATTRIBUTE_NAMES[i]; +// for (int i = 0; i < levelOrder.length; i++) { +// AttributeName att = levelOrder[i]; // System.out.println(att.constName() + ","); // } // System.out.println("};"); // System.out.println("private final static int[] ATTRIBUTE_HASHES = {"); -// for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) { -// AttributeName att = ATTRIBUTE_NAMES[i]; +// for (int i = 0; i < levelOrder.length; i++) { +// AttributeName att = levelOrder[i]; // System.out.println(Integer.toString(att.hash()) + ","); // } // System.out.println("};"); // } // START GENERATED CODE + public static final AttributeName ALT = new AttributeName(ALL_NO_NS, SAME_LOCAL("alt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DIR = new AttributeName(ALL_NO_NS, SAME_LOCAL("dir"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName DUR = new AttributeName(ALL_NO_NS, SAME_LOCAL("dur"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName END = new AttributeName(ALL_NO_NS, SAME_LOCAL("end"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("for"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName IN2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("in2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LOW = new AttributeName(ALL_NO_NS, SAME_LOCAL("low"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("min"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MAX = new AttributeName(ALL_NO_NS, SAME_LOCAL("max"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REL = new AttributeName(ALL_NO_NS, SAME_LOCAL("rel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REV = new AttributeName(ALL_NO_NS, SAME_LOCAL("rev"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SRC = new AttributeName(ALL_NO_NS, SAME_LOCAL("src"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName D = new AttributeName(ALL_NO_NS, SAME_LOCAL("d"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName K = new AttributeName(ALL_NO_NS, SAME_LOCAL("k"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName R = new AttributeName(ALL_NO_NS, SAME_LOCAL("r"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName X = new AttributeName(ALL_NO_NS, SAME_LOCAL("x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName Z = new AttributeName(ALL_NO_NS, SAME_LOCAL("z"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BY = new AttributeName(ALL_NO_NS, SAME_LOCAL("by"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CX = new AttributeName(ALL_NO_NS, SAME_LOCAL("cx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CY = new AttributeName(ALL_NO_NS, SAME_LOCAL("cy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DX = new AttributeName(ALL_NO_NS, SAME_LOCAL("dx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DY = new AttributeName(ALL_NO_NS, SAME_LOCAL("dy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName G2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("g2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CAP_HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("cap-height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName G1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("g1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FX = new AttributeName(ALL_NO_NS, SAME_LOCAL("fx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName K4 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k4"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName K2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName K3 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k3"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName K1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ID = new AttributeName(ALL_NO_NS, SAME_LOCAL("id"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName IN = new AttributeName(ALL_NO_NS, SAME_LOCAL("in"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName U2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("u2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName U1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("u1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RT = new AttributeName(ALL_NO_NS, SAME_LOCAL("rt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RX = new AttributeName(ALL_NO_NS, SAME_LOCAL("rx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RY = new AttributeName(ALL_NO_NS, SAME_LOCAL("ry"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TO = new AttributeName(ALL_NO_NS, SAME_LOCAL("to"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName Y2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("y2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName Y1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("y1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName X1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("x1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName Y1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("y1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName G2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("g2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName K2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName U2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("u2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName X2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("x2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ALT = new AttributeName(ALL_NO_NS, SAME_LOCAL("alt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DIR = new AttributeName(ALL_NO_NS, SAME_LOCAL("dir"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName DUR = new AttributeName(ALL_NO_NS, SAME_LOCAL("dur"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName END = new AttributeName(ALL_NO_NS, SAME_LOCAL("end"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("for"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName IN2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("in2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MAX = new AttributeName(ALL_NO_NS, SAME_LOCAL("max"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("min"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LOW = new AttributeName(ALL_NO_NS, SAME_LOCAL("low"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REL = new AttributeName(ALL_NO_NS, SAME_LOCAL("rel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REV = new AttributeName(ALL_NO_NS, SAME_LOCAL("rev"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SRC = new AttributeName(ALL_NO_NS, SAME_LOCAL("src"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName AXIS = new AttributeName(ALL_NO_NS, SAME_LOCAL("axis"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ABBR = new AttributeName(ALL_NO_NS, SAME_LOCAL("abbr"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BBOX = new AttributeName(ALL_NO_NS, SAME_LOCAL("bbox"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CITE = new AttributeName(ALL_NO_NS, SAME_LOCAL("cite"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("code"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BIAS = new AttributeName(ALL_NO_NS, SAME_LOCAL("bias"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLS = new AttributeName(ALL_NO_NS, SAME_LOCAL("cols"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CLIP = new AttributeName(ALL_NO_NS, SAME_LOCAL("clip"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CHAR = new AttributeName(ALL_NO_NS, SAME_LOCAL("char"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BASE = new AttributeName(ALL_NO_NS, SAME_LOCAL("base"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName EDGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("edge"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DATA = new AttributeName(ALL_NO_NS, SAME_LOCAL("data"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FILL = new AttributeName(ALL_NO_NS, SAME_LOCAL("fill"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FROM = new AttributeName(ALL_NO_NS, SAME_LOCAL("from"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("form"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("face"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HIGH = new AttributeName(ALL_NO_NS, SAME_LOCAL("high"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HREF = new AttributeName(ALL_NO_NS, SAME_LOCAL("href"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OPEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("open"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ICON = new AttributeName(ALL_NO_NS, SAME_LOCAL("icon"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NAME = new AttributeName(ALL_NO_NS, SAME_LOCAL("name"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("mode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MASK = new AttributeName(ALL_NO_NS, SAME_LOCAL("mask"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LINK = new AttributeName(ALL_NO_NS, SAME_LOCAL("link"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LANG = new AttributeName(LANG_NS, SAME_LOCAL("lang"), LANG_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LOOP = new AttributeName(ALL_NO_NS, SAME_LOCAL("loop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LIST = new AttributeName(ALL_NO_NS, SAME_LOCAL("list"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("type"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName WHEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("when"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName WRAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("wrap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TEXT = new AttributeName(ALL_NO_NS, SAME_LOCAL("text"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PATH = new AttributeName(ALL_NO_NS, SAME_LOCAL("path"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PING = new AttributeName(ALL_NO_NS, SAME_LOCAL("ping"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REFX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("refx", "refX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REFY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("refy", "refY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("size"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SEED = new AttributeName(ALL_NO_NS, SAME_LOCAL("seed"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ROWS = new AttributeName(ALL_NO_NS, SAME_LOCAL("rows"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("span"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STEP = new AttributeName(ALL_NO_NS, SAME_LOCAL("step"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName ROLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("role"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XREF = new AttributeName(ALL_NO_NS, SAME_LOCAL("xref"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ASYNC = new AttributeName(ALL_NO_NS, SAME_LOCAL("async"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName ALINK = new AttributeName(ALL_NO_NS, SAME_LOCAL("alink"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("align"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName CLOSE = new AttributeName(ALL_NO_NS, SAME_LOCAL("close"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CLASS = new AttributeName(ALL_NO_NS, SAME_LOCAL("class"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName Y2 = new AttributeName(ALL_NO_NS, SAME_LOCAL("y2"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName K3 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k3"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName K4 = new AttributeName(ALL_NO_NS, SAME_LOCAL("k4"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName XML_SPACE = new AttributeName(XML_NS, COLONIFIED_LOCAL("xml:space", "space"), XML_PREFIX, NCNAME_FOREIGN); + public static final AttributeName XML_LANG = new AttributeName(XML_NS, COLONIFIED_LOCAL("xml:lang", "lang"), XML_PREFIX, NCNAME_FOREIGN); + public static final AttributeName XML_BASE = new AttributeName(XML_NS, COLONIFIED_LOCAL("xml:base", "base"), XML_PREFIX, NCNAME_FOREIGN); + public static final AttributeName ARIA_GRAB = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-grab"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_VALUEMAX = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-valuemax"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_LABELLEDBY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-labelledby"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_DESCRIBEDBY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-describedby"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_DISABLED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-disabled"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_CHECKED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-checked"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_SELECTED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-selected"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_DROPEFFECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-dropeffect"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_REQUIRED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-required"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_EXPANDED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-expanded"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_PRESSED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-pressed"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_LEVEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-level"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_CHANNEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-channel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_HIDDEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-hidden"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_SECRET = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-secret"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_POSINSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-posinset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_ATOMIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-atomic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_INVALID = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-invalid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_TEMPLATEID = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-templateid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_VALUEMIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-valuemin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_MULTISELECTABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-multiselectable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_CONTROLS = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-controls"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_MULTILINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-multiline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_READONLY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-readonly"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_OWNS = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-owns"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_ACTIVEDESCENDANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-activedescendant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_RELEVANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-relevant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_DATATYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-datatype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_VALUENOW = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-valuenow"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_SORT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-sort"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_AUTOCOMPLETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-autocomplete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_FLOWTO = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-flowto"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_BUSY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-busy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_LIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-live"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_HASPOPUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-haspopup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARIA_SETSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-setsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName CLEAR = new AttributeName(ALL_NO_NS, SAME_LOCAL("clear"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName BEGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("begin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DEPTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("depth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DEFER = new AttributeName(ALL_NO_NS, SAME_LOCAL("defer"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName FENCE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fence"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FRAME = new AttributeName(ALL_NO_NS, SAME_LOCAL("frame"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName DATAFORMATAS = new AttributeName(ALL_NO_NS, SAME_LOCAL("dataformatas"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName DISABLED = new AttributeName(ALL_NO_NS, SAME_LOCAL("disabled"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName DATAFLD = new AttributeName(ALL_NO_NS, SAME_LOCAL("datafld"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DEFAULT = new AttributeName(ALL_NO_NS, SAME_LOCAL("default"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName DATASRC = new AttributeName(ALL_NO_NS, SAME_LOCAL("datasrc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DATA = new AttributeName(ALL_NO_NS, SAME_LOCAL("data"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName EQUALCOLUMNS = new AttributeName(ALL_NO_NS, SAME_LOCAL("equalcolumns"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName EQUALROWS = new AttributeName(ALL_NO_NS, SAME_LOCAL("equalrows"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("hspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ISMAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("ismap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName ONEND = new AttributeName(ALL_NO_NS, SAME_LOCAL("onend"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName INDEX = new AttributeName(ALL_NO_NS, SAME_LOCAL("index"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("order"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OTHER = new AttributeName(ALL_NO_NS, SAME_LOCAL("other"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncut"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NARGS = new AttributeName(ALL_NO_NS, SAME_LOCAL("nargs"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MEDIA = new AttributeName(ALL_NO_NS, SAME_LOCAL("media"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LABEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("label"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName LOCAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("local"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName WIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("width"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TITLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("title"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VLINK = new AttributeName(ALL_NO_NS, SAME_LOCAL("vlink"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VALUE = new AttributeName(ALL_NO_NS, SAME_LOCAL("value"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SLOPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("slope"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SHAPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("shape"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName SCOPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("scope"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName SCALE = new AttributeName(ALL_NO_NS, SAME_LOCAL("scale"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SPEED = new AttributeName(ALL_NO_NS, SAME_LOCAL("speed"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("style"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RULES = new AttributeName(ALL_NO_NS, SAME_LOCAL("rules"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName STEMH = new AttributeName(ALL_NO_NS, SAME_LOCAL("stemh"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SIZES = new AttributeName(ALL_NO_NS, SAME_LOCAL("sizes"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STEMV = new AttributeName(ALL_NO_NS, SAME_LOCAL("stemv"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName START = new AttributeName(ALL_NO_NS, SAME_LOCAL("start"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XMLNS = new AttributeName(XMLNS_NS, SAME_LOCAL("xmlns"), ALL_NO_PREFIX, IS_XMLNS); - public static final AttributeName ACCEPT = new AttributeName(ALL_NO_NS, SAME_LOCAL("accept"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ACCENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("accent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ASCENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("ascent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ACTIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("active"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName ALTIMG = new AttributeName(ALL_NO_NS, SAME_LOCAL("altimg"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ACTION = new AttributeName(ALL_NO_NS, SAME_LOCAL("action"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("border"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CURSOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("cursor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COORDS = new AttributeName(ALL_NO_NS, SAME_LOCAL("coords"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FILTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("filter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FORMAT = new AttributeName(ALL_NO_NS, SAME_LOCAL("format"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HIDDEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("hidden"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("hspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmove"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONLOAD = new AttributeName(ALL_NO_NS, SAME_LOCAL("onload"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAG = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondrag"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ORIGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("origin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONZOOM = new AttributeName(ALL_NO_NS, SAME_LOCAL("onzoom"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONHELP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onhelp"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONSTOP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onstop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDROP = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondrop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBLUR = new AttributeName(ALL_NO_NS, SAME_LOCAL("onblur"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OBJECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("object"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OFFSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("offset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ORIENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("orient"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCOPY = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncopy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NOWRAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("nowrap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName NOHREF = new AttributeName(ALL_NO_NS, SAME_LOCAL("nohref"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName MACROS = new AttributeName(ALL_NO_NS, SAME_LOCAL("macros"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName METHOD = new AttributeName(ALL_NO_NS, SAME_LOCAL("method"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName LOWSRC = new AttributeName(ALL_NO_NS, SAME_LOCAL("lowsrc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName LSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("lspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LQUOTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("lquote"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName USEMAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("usemap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName WIDTHS = new AttributeName(ALL_NO_NS, SAME_LOCAL("widths"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TARGET = new AttributeName(ALL_NO_NS, SAME_LOCAL("target"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VALUES = new AttributeName(ALL_NO_NS, SAME_LOCAL("values"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("valign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName VSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("vspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName POSTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("poster"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName POINTS = new AttributeName(ALL_NO_NS, SAME_LOCAL("points"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PROMPT = new AttributeName(ALL_NO_NS, SAME_LOCAL("prompt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SRCDOC = new AttributeName(ALL_NO_NS, SAME_LOCAL("srcdoc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCOPED = new AttributeName(ALL_NO_NS, SAME_LOCAL("scoped"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STRING = new AttributeName(ALL_NO_NS, SAME_LOCAL("string"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCHEME = new AttributeName(ALL_NO_NS, SAME_LOCAL("scheme"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RADIUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("radius"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RESULT = new AttributeName(ALL_NO_NS, SAME_LOCAL("result"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPEAT = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SRCSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("srcset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MOVABLELIMITS = new AttributeName(ALL_NO_NS, SAME_LOCAL("movablelimits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NOTATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("notation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDATASETCHANGED = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondatasetchanged"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDATAAVAILABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondataavailable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONPASTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onpaste"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDATASETCOMPLETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondatasetcomplete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName RSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("rspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ROWALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ROTATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("rotate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RQUOTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("rquote"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ALTTEXT = new AttributeName(ALL_NO_NS, SAME_LOCAL("alttext"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARCHIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("archive"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName AZIMUTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("azimuth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CLOSURE = new AttributeName(ALL_NO_NS, SAME_LOCAL("closure"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SEPARATOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("separator"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SEPARATORS = new AttributeName(ALL_NO_NS, SAME_LOCAL("separators"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName V_MATHEMATICAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-mathematical"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("vspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName V_HANGING = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-hanging"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName XCHANNELSELECTOR = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("xchannelselector", "xChannelSelector"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName YCHANNELSELECTOR = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("ychannelselector", "yChannelSelector"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARABIC_FORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("arabic-form"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ENABLE_BACKGROUND = new AttributeName(ALL_NO_NS, SAME_LOCAL("enable-background"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDBLCLICK = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondblclick"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONABORT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onabort"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CALCMODE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("calcmode", "calcMode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName CHECKED = new AttributeName(ALL_NO_NS, SAME_LOCAL("checked"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName CLASSID = new AttributeName(ALL_NO_NS, SAME_LOCAL("classid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CHAROFF = new AttributeName(ALL_NO_NS, SAME_LOCAL("charoff"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BGCOLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("bgcolor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLSPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("colspan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CHARSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("charset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COMPACT = new AttributeName(ALL_NO_NS, SAME_LOCAL("compact"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName CONTENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("content"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ENCTYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("enctype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName DATASRC = new AttributeName(ALL_NO_NS, SAME_LOCAL("datasrc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DATAFLD = new AttributeName(ALL_NO_NS, SAME_LOCAL("datafld"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DECLARE = new AttributeName(ALL_NO_NS, SAME_LOCAL("declare"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName DISPLAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("display"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DIVISOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("divisor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DEFAULT = new AttributeName(ALL_NO_NS, SAME_LOCAL("default"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); public static final AttributeName DESCENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("descent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KERNING = new AttributeName(ALL_NO_NS, SAME_LOCAL("kerning"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HANGING = new AttributeName(ALL_NO_NS, SAME_LOCAL("hanging"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HEADERS = new AttributeName(ALL_NO_NS, SAME_LOCAL("headers"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONPASTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onpaste"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCLICK = new AttributeName(ALL_NO_NS, SAME_LOCAL("onclick"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OPTIMUM = new AttributeName(ALL_NO_NS, SAME_LOCAL("optimum"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbegin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONKEYUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onkeyup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONERROR = new AttributeName(ALL_NO_NS, SAME_LOCAL("onerror"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONINPUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("oninput"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONABORT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onabort"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONSTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("onstart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONRESET = new AttributeName(ALL_NO_NS, SAME_LOCAL("onreset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FENCE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fence"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONSCROLL = new AttributeName(ALL_NO_NS, SAME_LOCAL("onscroll"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NOSHADE = new AttributeName(ALL_NO_NS, SAME_LOCAL("noshade"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName MINSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("minsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MAXSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("maxsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LARGEOP = new AttributeName(ALL_NO_NS, SAME_LOCAL("largeop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNICODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("unicode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TARGETX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("targetx", "targetX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TARGETY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("targety", "targetY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VIEWBOX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("viewbox", "viewBox"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VERSION = new AttributeName(ALL_NO_NS, SAME_LOCAL("version"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PATTERN = new AttributeName(ALL_NO_NS, SAME_LOCAL("pattern"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PROFILE = new AttributeName(ALL_NO_NS, SAME_LOCAL("profile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName SPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("spacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RESTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("restart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ROWSPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowspan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SPECULAREXPONENT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("specularexponent", "specularExponent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SPECULARCONSTANT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("specularconstant", "specularConstant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SPECIFICATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("specification"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName THICKMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("thickmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName UNICODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("unicode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName UNICODE_BIDI = new AttributeName(ALL_NO_NS, SAME_LOCAL("unicode-bidi"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName UNICODE_RANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("unicode-range"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("border"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ID = new AttributeName(ALL_NO_NS, SAME_LOCAL("id"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GRADIENTTRANSFORM = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("gradienttransform", "gradientTransform"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GRADIENTUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("gradientunits", "gradientUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HIDDEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("hidden"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HEADERS = new AttributeName(ALL_NO_NS, SAME_LOCAL("headers"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName READONLY = new AttributeName(ALL_NO_NS, SAME_LOCAL("readonly"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName RENDERING_INTENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("rendering-intent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SEED = new AttributeName(ALL_NO_NS, SAME_LOCAL("seed"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SRCDOC = new AttributeName(ALL_NO_NS, SAME_LOCAL("srcdoc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STDDEVIATION = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("stddeviation", "stdDeviation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName SANDBOX = new AttributeName(ALL_NO_NS, SAME_LOCAL("sandbox"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SUMMARY = new AttributeName(ALL_NO_NS, SAME_LOCAL("summary"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STANDBY = new AttributeName(ALL_NO_NS, SAME_LOCAL("standby"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPLACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("replace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName AUTOPLAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("autoplay"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ADDITIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("additive"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CALCMODE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("calcmode", "calcMode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CODETYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("codetype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CODEBASE = new AttributeName(ALL_NO_NS, SAME_LOCAL("codebase"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CONTROLS = new AttributeName(ALL_NO_NS, SAME_LOCAL("controls"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName V_IDEOGRAPHIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-ideographic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName WORD_SPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("word-spacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCENTUNDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("accentunder"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCEPT_CHARSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("accept-charset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCESSKEY = new AttributeName(ALL_NO_NS, SAME_LOCAL("accesskey"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCENT_HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("accent-height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("accent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ASCENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("ascent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCEPT = new AttributeName(ALL_NO_NS, SAME_LOCAL("accept"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName BEVELLED = new AttributeName(ALL_NO_NS, SAME_LOCAL("bevelled"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BASEFREQUENCY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("basefrequency", "baseFrequency"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BASELINE_SHIFT = new AttributeName(ALL_NO_NS, SAME_LOCAL("baseline-shift"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BASEPROFILE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("baseprofile", "baseProfile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName BASELINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("baseline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName EXPONENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("exponent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName EDGEMODE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("edgemode", "edgeMode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ENCODING = new AttributeName(ALL_NO_NS, SAME_LOCAL("encoding"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GLYPHREF = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("glyphref", "glyphRef"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BASE = new AttributeName(ALL_NO_NS, SAME_LOCAL("base"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("code"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CODETYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("codetype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CODEBASE = new AttributeName(ALL_NO_NS, SAME_LOCAL("codebase"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CITE = new AttributeName(ALL_NO_NS, SAME_LOCAL("cite"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DEFER = new AttributeName(ALL_NO_NS, SAME_LOCAL("defer"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); public static final AttributeName DATETIME = new AttributeName(ALL_NO_NS, SAME_LOCAL("datetime"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DISABLED = new AttributeName(ALL_NO_NS, SAME_LOCAL("disabled"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName FONTSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KEYTIMES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("keytimes", "keyTimes"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PANOSE_1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("panose-1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HREFLANG = new AttributeName(ALL_NO_NS, SAME_LOCAL("hreflang"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONRESIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onresize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBOUNCE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbounce"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONUNLOAD = new AttributeName(ALL_NO_NS, SAME_LOCAL("onunload"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFINISH = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfinish"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONSCROLL = new AttributeName(ALL_NO_NS, SAME_LOCAL("onscroll"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OPERATOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("operator"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OVERFLOW = new AttributeName(ALL_NO_NS, SAME_LOCAL("overflow"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONSUBMIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onsubmit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONREPEAT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrepeat"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONSELECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onselect"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NOTATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("notation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NORESIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("noresize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName MANIFEST = new AttributeName(ALL_NO_NS, SAME_LOCAL("manifest"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MATHSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MULTIPLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("multiple"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName LONGDESC = new AttributeName(ALL_NO_NS, SAME_LOCAL("longdesc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LANGUAGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("language"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TEMPLATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("template"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TABINDEX = new AttributeName(ALL_NO_NS, SAME_LOCAL("tabindex"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PROPERTY = new AttributeName(ALL_NO_NS, SAME_LOCAL("property"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName READONLY = new AttributeName(ALL_NO_NS, SAME_LOCAL("readonly"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName SELECTED = new AttributeName(ALL_NO_NS, SAME_LOCAL("selected"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName ROWLINES = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowlines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SEAMLESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("seamless"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ROWALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STRETCHY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stretchy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REQUIRED = new AttributeName(ALL_NO_NS, SAME_LOCAL("required"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName XML_BASE = new AttributeName(XML_NS, COLONIFIED_LOCAL("xml:base", "base"), XML_PREFIX, NCNAME_FOREIGN); - public static final AttributeName XML_LANG = new AttributeName(XML_NS, COLONIFIED_LOCAL("xml:lang", "lang"), XML_PREFIX, NCNAME_FOREIGN); - public static final AttributeName X_HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("x-height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_OWNS = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-owns"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName AUTOFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("autofocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); - public static final AttributeName ARIA_SORT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-sort"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ACCESSKEY = new AttributeName(ALL_NO_NS, SAME_LOCAL("accesskey"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_BUSY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-busy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_GRAB = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-grab"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName AMPLITUDE = new AttributeName(ALL_NO_NS, SAME_LOCAL("amplitude"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_LIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-live"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CLIP_RULE = new AttributeName(ALL_NO_NS, SAME_LOCAL("clip-rule"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CLIP_PATH = new AttributeName(ALL_NO_NS, SAME_LOCAL("clip-path"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName EQUALROWS = new AttributeName(ALL_NO_NS, SAME_LOCAL("equalrows"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ELEVATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("elevation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName DIRECTION = new AttributeName(ALL_NO_NS, SAME_LOCAL("direction"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DRAGGABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("draggable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FILL_RULE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fill-rule"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONTSTYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontstyle"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONT_SIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-size"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KEYSYSTEM = new AttributeName(ALL_NO_NS, SAME_LOCAL("keysystem"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KEYPOINTS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("keypoints", "keyPoints"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName EDGEMODE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("edgemode", "edgeMode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName EDGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("edge"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("face"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName HIDEFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("hidefocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMESSAGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmessage"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName INDEX = new AttributeName(ALL_NO_NS, SAME_LOCAL("index"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName IRRELEVANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("irrelevant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName INTERCEPT = new AttributeName(ALL_NO_NS, SAME_LOCAL("intercept"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAGEND = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragend"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOVEEND = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmoveend"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONINVALID = new AttributeName(ALL_NO_NS, SAME_LOCAL("oninvalid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName INTEGRITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("integrity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONKEYDOWN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onkeydown"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFOCUSIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfocusin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName INPUTMODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("inputmode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONROWEXIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowexit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MATHCOLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathcolor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MASKUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("maskunits", "maskUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MAXLENGTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("maxlength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName LINEBREAK = new AttributeName(ALL_NO_NS, SAME_LOCAL("linebreak"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TRANSFORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("transform"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName V_HANGING = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-hanging"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VALUETYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("valuetype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName POINTSATZ = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pointsatz", "pointsAtZ"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName POINTSATX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pointsatx", "pointsAtX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName POINTSATY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pointsaty", "pointsAtY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SYMMETRIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("symmetric"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCROLLING = new AttributeName(ALL_NO_NS, SAME_LOCAL("scrolling"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName LABEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("label"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LINETHICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("linethickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("mode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NAME = new AttributeName(ALL_NO_NS, SAME_LOCAL("name"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NORESIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("noresize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName ONBEFOREUNLOAD = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeunload"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONREPEAT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrepeat"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OBJECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("object"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONSELECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onselect"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("order"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OTHER = new AttributeName(ALL_NO_NS, SAME_LOCAL("other"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONRESET = new AttributeName(ALL_NO_NS, SAME_LOCAL("onreset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONCELLCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncellchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONREADYSTATECHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onreadystatechange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMESSAGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmessage"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbegin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONHELP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onhelp"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFOREPRINT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeprint"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ORIENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("orient"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ORIENTATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("orientation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFORECOPY = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforecopy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONSELECTSTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("onselectstart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFOREPASTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforepaste"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFOREUPDATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeupdate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDEACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondeactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFOREACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFORDEACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbefordeactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONKEYPRESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("onkeypress"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONKEYUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onkeyup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFOREEDITFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeeditfocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBEFORECUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforecut"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONKEYDOWN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onkeydown"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONRESIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onresize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REPEAT = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REPEAT_MAX = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-max"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REFERRERPOLICY = new AttributeName(ALL_NO_NS, SAME_LOCAL("referrerpolicy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RULES = new AttributeName(ALL_NO_NS, SAME_LOCAL("rules"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName REPEAT_MIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-min"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ROLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("role"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REPEATCOUNT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("repeatcount", "repeatCount"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REPEAT_START = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-start"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REPEAT_TEMPLATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-template"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName REPEATDUR = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("repeatdur", "repeatDur"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SELECTED = new AttributeName(ALL_NO_NS, SAME_LOCAL("selected"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName SPEED = new AttributeName(ALL_NO_NS, SAME_LOCAL("speed"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SIZES = new AttributeName(ALL_NO_NS, SAME_LOCAL("sizes"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SUPERSCRIPTSHIFT = new AttributeName(ALL_NO_NS, SAME_LOCAL("superscriptshift"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STRETCHY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stretchy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCHEME = new AttributeName(ALL_NO_NS, SAME_LOCAL("scheme"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SPREADMETHOD = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("spreadmethod", "spreadMethod"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName SELECTION = new AttributeName(ALL_NO_NS, SAME_LOCAL("selection"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SEPARATOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("separator"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XML_SPACE = new AttributeName(XML_NS, COLONIFIED_LOCAL("xml:space", "space"), XML_PREFIX, NCNAME_FOREIGN); - public static final AttributeName AUTOSUBMIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("autosubmit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName SIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("size"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("type"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName UNSELECTABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("unselectable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName UNDERLINE_POSITION = new AttributeName(ALL_NO_NS, SAME_LOCAL("underline-position"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName UNDERLINE_THICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("underline-thickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName X_HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("x-height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DIFFUSECONSTANT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("diffuseconstant", "diffuseConstant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HREF = new AttributeName(ALL_NO_NS, SAME_LOCAL("href"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HREFLANG = new AttributeName(ALL_NO_NS, SAME_LOCAL("hreflang"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONAFTERPRINT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onafterprint"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONAFTERUPDATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onafterupdate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PROFILE = new AttributeName(ALL_NO_NS, SAME_LOCAL("profile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SURFACESCALE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("surfacescale", "surfaceScale"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName XREF = new AttributeName(ALL_NO_NS, SAME_LOCAL("xref"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("align"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName ALIGNMENT_BASELINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("alignment-baseline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ALIGNMENTSCOPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("alignmentscope"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DRAGGABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("draggable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HANGING = new AttributeName(ALL_NO_NS, SAME_LOCAL("hanging"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName IMAGE_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("image-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LANGUAGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("language"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LANG = new AttributeName(LANG_NS, SAME_LOCAL("lang"), LANG_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LARGEOP = new AttributeName(ALL_NO_NS, SAME_LOCAL("largeop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LONGDESC = new AttributeName(ALL_NO_NS, SAME_LOCAL("longdesc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LENGTHADJUST = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("lengthadjust", "lengthAdjust"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MARGINHEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("marginheight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MARGINWIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("marginwidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NARGS = new AttributeName(ALL_NO_NS, SAME_LOCAL("nargs"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ORIGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("origin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PING = new AttributeName(ALL_NO_NS, SAME_LOCAL("ping"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TARGET = new AttributeName(ALL_NO_NS, SAME_LOCAL("target"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TARGETX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("targetx", "targetX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TARGETY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("targety", "targetY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ALPHABETIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("alphabetic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ARCHIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("archive"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HIGH = new AttributeName(ALL_NO_NS, SAME_LOCAL("high"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LIGHTING_COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("lighting-color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MATHEMATICAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathematical"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MATHBACKGROUND = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathbackground"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName METHOD = new AttributeName(ALL_NO_NS, SAME_LOCAL("method"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName MATHVARIANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathvariant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MATHCOLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathcolor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MATHSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NOSHADE = new AttributeName(ALL_NO_NS, SAME_LOCAL("noshade"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName ONCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PATHLENGTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pathlength", "pathLength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PATH = new AttributeName(ALL_NO_NS, SAME_LOCAL("path"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ALTIMG = new AttributeName(ALL_NO_NS, SAME_LOCAL("altimg"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ACTIONTYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("actiontype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ACCUMULATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("accumulate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_LEVEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-level"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLUMNSPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnspan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CAP_HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("cap-height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACTION = new AttributeName(ALL_NO_NS, SAME_LOCAL("action"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACTIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("active"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName ADDITIVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("additive"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BEGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("begin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DOMINANT_BASELINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("dominant-baseline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DIVISOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("divisor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DEFINITIONURL = new AttributeName(ALL_NO_NS, MATH_DIFFERENT("definitionurl", "definitionURL"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HORIZ_ADV_X = new AttributeName(ALL_NO_NS, SAME_LOCAL("horiz-adv-x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HORIZ_ORIGIN_X = new AttributeName(ALL_NO_NS, SAME_LOCAL("horiz-origin-x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HORIZ_ORIGIN_Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("horiz-origin-y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LIMITINGCONEANGLE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("limitingconeangle", "limitingConeAngle"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MEDIUMMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("mediummathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MEDIA = new AttributeName(ALL_NO_NS, SAME_LOCAL("media"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MANIFEST = new AttributeName(ALL_NO_NS, SAME_LOCAL("manifest"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFILTERCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfilterchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFINISH = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfinish"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OPTIMUM = new AttributeName(ALL_NO_NS, SAME_LOCAL("optimum"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RADIOGROUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("radiogroup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RADIUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("radius"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCRIPTLEVEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("scriptlevel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCRIPTSIZEMULTIPLIER = new AttributeName(ALL_NO_NS, SAME_LOCAL("scriptsizemultiplier"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STRING = new AttributeName(ALL_NO_NS, SAME_LOCAL("string"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STRIKETHROUGH_POSITION = new AttributeName(ALL_NO_NS, SAME_LOCAL("strikethrough-position"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STRIKETHROUGH_THICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("strikethrough-thickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCRIPTMINSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("scriptminsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TABINDEX = new AttributeName(ALL_NO_NS, SAME_LOCAL("tabindex"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("valign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName VISIBILITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("visibility"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName BACKGROUND = new AttributeName(ALL_NO_NS, SAME_LOCAL("background"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GLYPH_NAME = new AttributeName(ALL_NO_NS, SAME_LOCAL("glyph-name"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GROUPALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("groupalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONTFAMILY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontfamily"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONTWEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontweight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONT_STYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-style"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KEYSPLINES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("keysplines", "keySplines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HTTP_EQUIV = new AttributeName(ALL_NO_NS, SAME_LOCAL("http-equiv"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OCCURRENCE = new AttributeName(ALL_NO_NS, SAME_LOCAL("occurrence"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName IRRELEVANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("irrelevant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDBLCLICK = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondblclick"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAGDROP = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragdrop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONKEYPRESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("onkeypress"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONROWENTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowenter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAGOVER = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragover"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFOCUSOUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfocusout"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEOUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseout"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName NUMOCTAVES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("numoctaves", "numOctaves"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LINK = new AttributeName(ALL_NO_NS, SAME_LOCAL("link"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName MARKER_MID = new AttributeName(ALL_NO_NS, SAME_LOCAL("marker-mid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MARKERHEIGHT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("markerheight", "markerHeight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName MARKER_END = new AttributeName(ALL_NO_NS, SAME_LOCAL("marker-end"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TEXTLENGTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("textlength", "textLength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VISIBILITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("visibility"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VIEWTARGET = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("viewtarget", "viewTarget"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VERT_ADV_Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("vert-adv-y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PATHLENGTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pathlength", "pathLength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPEAT_MAX = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-max"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RADIOGROUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("radiogroup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STOP_COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("stop-color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SEPARATORS = new AttributeName(ALL_NO_NS, SAME_LOCAL("separators"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPEAT_MIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-min"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ROWSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MASK = new AttributeName(ALL_NO_NS, SAME_LOCAL("mask"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MARKER_START = new AttributeName(ALL_NO_NS, SAME_LOCAL("marker-start"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MARKERWIDTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("markerwidth", "markerWidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MASKUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("maskunits", "maskUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MARKERUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("markerunits", "markerUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MASKCONTENTUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("maskcontentunits", "maskContentUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName AMPLITUDE = new AttributeName(ALL_NO_NS, SAME_LOCAL("amplitude"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CELLSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("cellspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CELLPADDING = new AttributeName(ALL_NO_NS, SAME_LOCAL("cellpadding"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DECLARE = new AttributeName(ALL_NO_NS, SAME_LOCAL("declare"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName FILL_RULE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fill-rule"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FILL = new AttributeName(ALL_NO_NS, SAME_LOCAL("fill"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FILL_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fill-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MAXLENGTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("maxlength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONCLICK = new AttributeName(ALL_NO_NS, SAME_LOCAL("onclick"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBLUR = new AttributeName(ALL_NO_NS, SAME_LOCAL("onblur"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REPLACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("replace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName ROWLINES = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowlines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCALE = new AttributeName(ALL_NO_NS, SAME_LOCAL("scale"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("style"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TABLEVALUES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("tablevalues", "tableValues"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TITLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("title"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName V_ALPHABETIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-alphabetic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName AZIMUTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("azimuth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FORMAT = new AttributeName(ALL_NO_NS, SAME_LOCAL("format"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FRAMEBORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("frameborder"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FRAME = new AttributeName(ALL_NO_NS, SAME_LOCAL("frame"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName FRAMESPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("framespacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FROM = new AttributeName(ALL_NO_NS, SAME_LOCAL("from"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("form"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PROMPT = new AttributeName(ALL_NO_NS, SAME_LOCAL("prompt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PRIMITIVEUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("primitiveunits", "primitiveUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SYMMETRIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("symmetric"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STEMH = new AttributeName(ALL_NO_NS, SAME_LOCAL("stemh"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STEMV = new AttributeName(ALL_NO_NS, SAME_LOCAL("stemv"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SEAMLESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("seamless"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SUMMARY = new AttributeName(ALL_NO_NS, SAME_LOCAL("summary"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName USEMAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("usemap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ZOOMANDPAN = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("zoomandpan", "zoomAndPan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XLINK_TYPE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:type", "type"), XLINK_PREFIX, NCNAME_FOREIGN); - public static final AttributeName XLINK_ROLE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:role", "role"), XLINK_PREFIX, NCNAME_FOREIGN); + public static final AttributeName ASYNC = new AttributeName(ALL_NO_NS, SAME_LOCAL("async"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName ALINK = new AttributeName(ALL_NO_NS, SAME_LOCAL("alink"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName IN = new AttributeName(ALL_NO_NS, SAME_LOCAL("in"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ICON = new AttributeName(ALL_NO_NS, SAME_LOCAL("icon"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KERNELMATRIX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("kernelmatrix", "kernelMatrix"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KERNING = new AttributeName(ALL_NO_NS, SAME_LOCAL("kerning"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KERNELUNITLENGTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("kernelunitlength", "kernelUnitLength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONUNLOAD = new AttributeName(ALL_NO_NS, SAME_LOCAL("onunload"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OPEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("open"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONINVALID = new AttributeName(ALL_NO_NS, SAME_LOCAL("oninvalid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONEND = new AttributeName(ALL_NO_NS, SAME_LOCAL("onend"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONINPUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("oninput"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName POINTER_EVENTS = new AttributeName(ALL_NO_NS, SAME_LOCAL("pointer-events"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName POINTS = new AttributeName(ALL_NO_NS, SAME_LOCAL("points"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName POINTSATX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pointsatx", "pointsAtX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName POINTSATY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pointsaty", "pointsAtY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName POINTSATZ = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("pointsatz", "pointsAtZ"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("span"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STANDBY = new AttributeName(ALL_NO_NS, SAME_LOCAL("standby"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName THINMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("thinmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TRANSFORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("transform"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VLINK = new AttributeName(ALL_NO_NS, SAME_LOCAL("vlink"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName WHEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("when"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName XLINK_HREF = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:href", "href"), XLINK_PREFIX, NCNAME_FOREIGN); + public static final AttributeName XLINK_TITLE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:title", "title"), XLINK_PREFIX, NCNAME_FOREIGN); + public static final AttributeName XLINK_ROLE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:role", "role"), XLINK_PREFIX, NCNAME_FOREIGN); + public static final AttributeName XLINK_ARCROLE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:arcrole", "arcrole"), XLINK_PREFIX, NCNAME_FOREIGN); + public static final AttributeName XMLNS_XLINK = new AttributeName(XMLNS_NS, COLONIFIED_LOCAL("xmlns:xlink", "xlink"), XMLNS_PREFIX, IS_XMLNS); + public static final AttributeName XMLNS = new AttributeName(XMLNS_NS, SAME_LOCAL("xmlns"), ALL_NO_PREFIX, IS_XMLNS); + public static final AttributeName XLINK_TYPE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:type", "type"), XLINK_PREFIX, NCNAME_FOREIGN); public static final AttributeName XLINK_SHOW = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:show", "show"), XLINK_PREFIX, NCNAME_FOREIGN); - public static final AttributeName ACCENTUNDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("accentunder"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_SECRET = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-secret"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_ATOMIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-atomic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_HIDDEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-hidden"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_FLOWTO = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-flowto"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARABIC_FORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("arabic-form"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CELLPADDING = new AttributeName(ALL_NO_NS, SAME_LOCAL("cellpadding"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CELLSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("cellspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLUMNWIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnwidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CROSSORIGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("crossorigin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLUMNALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLUMNLINES = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnlines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CONTEXTMENU = new AttributeName(ALL_NO_NS, SAME_LOCAL("contextmenu"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BASEPROFILE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("baseprofile", "baseProfile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONT_FAMILY = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-family"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FRAMEBORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("frameborder"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FILTERUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("filterunits", "filterUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName XLINK_ACTUATE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:actuate", "actuate"), XLINK_PREFIX, NCNAME_FOREIGN); + public static final AttributeName AUTOPLAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("autoplay"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName AUTOSUBMIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("autosubmit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName AUTOCOMPLETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("autocomplete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName AUTOFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("autofocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName BGCOLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("bgcolor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLOR_PROFILE = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-profile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLOR_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLOR_INTERPOLATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-interpolation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLOR_INTERPOLATION_FILTERS = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-interpolation-filters"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ENCODING = new AttributeName(ALL_NO_NS, SAME_LOCAL("encoding"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName EXPONENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("exponent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName FLOOD_COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("flood-color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONT_WEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-weight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HORIZ_ADV_X = new AttributeName(ALL_NO_NS, SAME_LOCAL("horiz-adv-x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAGLEAVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragleave"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEMOVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmousemove"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ORIENTATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("orientation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEDOWN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmousedown"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEOVER = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseover"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAGENTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragenter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FLOOD_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("flood-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName IDEOGRAPHIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("ideographic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFORECUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforecut"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFORMINPUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onforminput"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDRAGSTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragstart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LQUOTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("lquote"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PANOSE_1 = new AttributeName(ALL_NO_NS, SAME_LOCAL("panose-1"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NUMOCTAVES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("numoctaves", "numOctaves"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONLOAD = new AttributeName(ALL_NO_NS, SAME_LOCAL("onload"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONBOUNCE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbounce"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONCONTROLSELECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncontrolselect"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONROWSINSERTED = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowsinserted"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEWHEEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmousewheel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONROWENTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowenter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEENTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseenter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEOVER = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseover"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFORMCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onformchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFOCUSIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfocusin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONROWEXIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowexit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOVEEND = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmoveend"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONCONTEXTMENU = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncontextmenu"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONZOOM = new AttributeName(ALL_NO_NS, SAME_LOCAL("onzoom"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONLOSECAPTURE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onlosecapture"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONCOPY = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncopy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ONMOVESTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmovestart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MARKERUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("markerunits", "markerUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MATHVARIANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathvariant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MARGINWIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("marginwidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MARKERWIDTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("markerwidth", "markerWidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TEXT_ANCHOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("text-anchor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TABLEVALUES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("tablevalues", "tableValues"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCRIPTLEVEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("scriptlevel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPEATCOUNT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("repeatcount", "repeatCount"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STITCHTILES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("stitchtiles", "stitchTiles"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STARTOFFSET = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("startoffset", "startOffset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCROLLDELAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("scrolldelay"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XMLNS_XLINK = new AttributeName(XMLNS_NS, COLONIFIED_LOCAL("xmlns:xlink", "xlink"), XMLNS_PREFIX, IS_XMLNS); - public static final AttributeName XLINK_TITLE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:title", "title"), XLINK_PREFIX, NCNAME_FOREIGN); - public static final AttributeName ARIA_INVALID = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-invalid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_PRESSED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-pressed"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_CHECKED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-checked"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName AUTOCOMPLETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("autocomplete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName ARIA_SETSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-setsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_CHANNEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-channel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName EQUALCOLUMNS = new AttributeName(ALL_NO_NS, SAME_LOCAL("equalcolumns"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DISPLAYSTYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("displaystyle"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DATAFORMATAS = new AttributeName(ALL_NO_NS, SAME_LOCAL("dataformatas"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); - public static final AttributeName FILL_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fill-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONT_VARIANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-variant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FONT_STRETCH = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-stretch"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FRAMESPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("framespacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KERNELMATRIX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("kernelmatrix", "kernelMatrix"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDEACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondeactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ONROWSDELETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowsdelete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ONMOUSELEAVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseleave"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFORMCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onformchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCELLCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncellchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEWHEEL = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmousewheel"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONMOUSEENTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseenter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONAFTERPRINT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onafterprint"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFORECOPY = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforecopy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MARGINHEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("marginheight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MARKERHEIGHT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("markerheight", "markerHeight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MARKER_START = new AttributeName(ALL_NO_NS, SAME_LOCAL("marker-start"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MATHEMATICAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathematical"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LENGTHADJUST = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("lengthadjust", "lengthAdjust"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNSELECTABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("unselectable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNICODE_BIDI = new AttributeName(ALL_NO_NS, SAME_LOCAL("unicode-bidi"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNITS_PER_EM = new AttributeName(ALL_NO_NS, SAME_LOCAL("units-per-em"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName WORD_SPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("word-spacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName WRITING_MODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("writing-mode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName V_ALPHABETIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-alphabetic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PATTERNUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("patternunits", "patternUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SPREADMETHOD = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("spreadmethod", "spreadMethod"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SURFACESCALE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("surfacescale", "surfaceScale"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmove"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEMOVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmousemove"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEOUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmouseout"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFORMINPUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onforminput"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONFOCUSOUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfocusout"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONMOUSEDOWN = new AttributeName(ALL_NO_NS, SAME_LOCAL("onmousedown"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TO = new AttributeName(ALL_NO_NS, SAME_LOCAL("to"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RQUOTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("rquote"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE_LINECAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-linecap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCROLLDELAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("scrolldelay"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE_DASHARRAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-dasharray"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE_DASHOFFSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-dashoffset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE_LINEJOIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-linejoin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE_MITERLIMIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-miterlimit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCROLLING = new AttributeName(ALL_NO_NS, SAME_LOCAL("scrolling"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); public static final AttributeName STROKE_WIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-width"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPEAT_START = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-start"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STDDEVIATION = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("stddeviation", "stdDeviation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STROKE_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COMPACT = new AttributeName(ALL_NO_NS, SAME_LOCAL("compact"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName CLIP = new AttributeName(ALL_NO_NS, SAME_LOCAL("clip"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLIP_RULE = new AttributeName(ALL_NO_NS, SAME_LOCAL("clip-rule"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLIP_PATH = new AttributeName(ALL_NO_NS, SAME_LOCAL("clip-path"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLIPPATHUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("clippathunits", "clipPathUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DISPLAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("display"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DISPLAYSTYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("displaystyle"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GLYPH_ORIENTATION_VERTICAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("glyph-orientation-vertical"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GLYPH_ORIENTATION_HORIZONTAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("glyph-orientation-horizontal"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GLYPHREF = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("glyphref", "glyphRef"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GLYPH_NAME = new AttributeName(ALL_NO_NS, SAME_LOCAL("glyph-name"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName HTTP_EQUIV = new AttributeName(ALL_NO_NS, SAME_LOCAL("http-equiv"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KEYPOINTS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("keypoints", "keyPoints"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LOOP = new AttributeName(ALL_NO_NS, SAME_LOCAL("loop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PROPERTY = new AttributeName(ALL_NO_NS, SAME_LOCAL("property"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCOPED = new AttributeName(ALL_NO_NS, SAME_LOCAL("scoped"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STEP = new AttributeName(ALL_NO_NS, SAME_LOCAL("step"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName SHAPE_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("shape-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SCOPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("scope"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName SHAPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("shape"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName SLOPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("slope"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STOP_COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("stop-color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName STOP_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stop-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_CONTROLS = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-controls"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_HASPOPUP = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-haspopup"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ACCENT_HEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("accent-height"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_VALUENOW = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-valuenow"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_RELEVANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-relevant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_POSINSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-posinset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_VALUEMAX = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-valuemax"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_READONLY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-readonly"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_SELECTED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-selected"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_REQUIRED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-required"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_EXPANDED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-expanded"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_DISABLED = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-disabled"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ATTRIBUTETYPE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("attributetype", "attributeType"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TEMPLATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("template"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName WRAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("wrap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ABBR = new AttributeName(ALL_NO_NS, SAME_LOCAL("abbr"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ATTRIBUTENAME = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("attributename", "attributeName"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_DATATYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-datatype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_VALUEMIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-valuemin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BASEFREQUENCY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("basefrequency", "baseFrequency"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLUMNSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLOR_PROFILE = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-profile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName CLIPPATHUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("clippathunits", "clipPathUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DEFINITIONURL = new AttributeName(ALL_NO_NS, MATH_DIFFERENT("definitionurl", "definitionURL"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GRADIENTUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("gradientunits", "gradientUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName FLOOD_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("flood-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONAFTERUPDATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onafterupdate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ATTRIBUTETYPE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("attributetype", "attributeType"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CHAR = new AttributeName(ALL_NO_NS, SAME_LOCAL("char"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COORDS = new AttributeName(ALL_NO_NS, SAME_LOCAL("coords"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CHAROFF = new AttributeName(ALL_NO_NS, SAME_LOCAL("charoff"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CHARSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("charset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MACROS = new AttributeName(ALL_NO_NS, SAME_LOCAL("macros"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName NOWRAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("nowrap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName NOHREF = new AttributeName(ALL_NO_NS, SAME_LOCAL("nohref"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName ONDRAG = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondrag"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDRAGENTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragenter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDRAGOVER = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragover"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONPROPERTYCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onpropertychange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDRAGEND = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragend"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDROP = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondrop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDRAGDROP = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragdrop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OVERLINE_POSITION = new AttributeName(ALL_NO_NS, SAME_LOCAL("overline-position"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONERROR = new AttributeName(ALL_NO_NS, SAME_LOCAL("onerror"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OPERATOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("operator"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OVERFLOW = new AttributeName(ALL_NO_NS, SAME_LOCAL("overflow"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDRAGSTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragstart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName ONERRORUPDATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onerrorupdate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFOREPASTE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforepaste"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONLOSECAPTURE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onlosecapture"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCONTEXTMENU = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncontextmenu"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONSELECTSTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("onselectstart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFOREPRINT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeprint"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MOVABLELIMITS = new AttributeName(ALL_NO_NS, SAME_LOCAL("movablelimits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LINETHICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("linethickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNICODE_RANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("unicode-range"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName THINMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("thinmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VERT_ORIGIN_X = new AttributeName(ALL_NO_NS, SAME_LOCAL("vert-origin-x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName VERT_ORIGIN_Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("vert-origin-y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName V_IDEOGRAPHIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-ideographic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OVERLINE_THICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("overline-thickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONDRAGLEAVE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondragleave"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STARTOFFSET = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("startoffset", "startOffset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName START = new AttributeName(ALL_NO_NS, SAME_LOCAL("start"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName AXIS = new AttributeName(ALL_NO_NS, SAME_LOCAL("axis"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BIAS = new AttributeName(ALL_NO_NS, SAME_LOCAL("bias"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLSPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("colspan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLASSID = new AttributeName(ALL_NO_NS, SAME_LOCAL("classid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CROSSORIGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("crossorigin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLS = new AttributeName(ALL_NO_NS, SAME_LOCAL("cols"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CURSOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("cursor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLOSURE = new AttributeName(ALL_NO_NS, SAME_LOCAL("closure"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLOSE = new AttributeName(ALL_NO_NS, SAME_LOCAL("close"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CLASS = new AttributeName(ALL_NO_NS, SAME_LOCAL("class"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName IS = new AttributeName(ALL_NO_NS, SAME_LOCAL("is"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KEYSYSTEM = new AttributeName(ALL_NO_NS, SAME_LOCAL("keysystem"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KEYSPLINES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("keysplines", "keySplines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LOWSRC = new AttributeName(ALL_NO_NS, SAME_LOCAL("lowsrc"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MAXSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("maxsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MINSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("minsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OFFSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("offset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName PRESERVEALPHA = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("preservealpha", "preserveAlpha"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCRIPTMINSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("scriptminsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SPECIFICATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("specification"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XLINK_ACTUATE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:actuate", "actuate"), XLINK_PREFIX, NCNAME_FOREIGN); - public static final AttributeName XLINK_ARCROLE = new AttributeName(XLINK_NS, COLONIFIED_LOCAL("xlink:arcrole", "arcrole"), XLINK_PREFIX, NCNAME_FOREIGN); - public static final AttributeName ACCEPT_CHARSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("accept-charset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ALIGNMENTSCOPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("alignmentscope"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_MULTILINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-multiline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName BASELINE_SHIFT = new AttributeName(ALL_NO_NS, SAME_LOCAL("baseline-shift"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HORIZ_ORIGIN_X = new AttributeName(ALL_NO_NS, SAME_LOCAL("horiz-origin-x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName HORIZ_ORIGIN_Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("horiz-origin-y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFOREUPDATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeupdate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONFILTERCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onfilterchange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONROWSINSERTED = new AttributeName(ALL_NO_NS, SAME_LOCAL("onrowsinserted"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFOREUNLOAD = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeunload"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MATHBACKGROUND = new AttributeName(ALL_NO_NS, SAME_LOCAL("mathbackground"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LETTER_SPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("letter-spacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LIGHTING_COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("lighting-color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName THICKMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("thickmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TEXT_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("text-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName V_MATHEMATICAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("v-mathematical"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName POINTER_EVENTS = new AttributeName(ALL_NO_NS, SAME_LOCAL("pointer-events"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PRIMITIVEUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("primitiveunits", "primitiveUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REFERRERPOLICY = new AttributeName(ALL_NO_NS, SAME_LOCAL("referrerpolicy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SYSTEMLANGUAGE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("systemlanguage", "systemLanguage"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE_LINECAP = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-linecap"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PRESERVEASPECTRATIO = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("preserveaspectratio", "preserveAspectRatio"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ROWSPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowspan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ROWSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("rowspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ROWS = new AttributeName(ALL_NO_NS, SAME_LOCAL("rows"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SRCSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("srcset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName SUBSCRIPTSHIFT = new AttributeName(ALL_NO_NS, SAME_LOCAL("subscriptshift"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE_OPACITY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-opacity"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_DROPEFFECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-dropeffect"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_LABELLEDBY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-labelledby"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_TEMPLATEID = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-templateid"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLOR_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VERSION = new AttributeName(ALL_NO_NS, SAME_LOCAL("version"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ALTTEXT = new AttributeName(ALL_NO_NS, SAME_LOCAL("alttext"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName CONTENTEDITABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("contenteditable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DIFFUSECONSTANT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("diffuseconstant", "diffuseConstant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDATAAVAILABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondataavailable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONCONTROLSELECT = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncontrolselect"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName IMAGE_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("image-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MEDIUMMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("mediummathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName TEXT_DECORATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("text-decoration"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SHAPE_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("shape-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE_LINEJOIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-linejoin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REPEAT_TEMPLATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("repeat-template"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_DESCRIBEDBY = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-describedby"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CONTROLS = new AttributeName(ALL_NO_NS, SAME_LOCAL("controls"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CONTENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("content"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CONTEXTMENU = new AttributeName(ALL_NO_NS, SAME_LOCAL("contextmenu"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DEPTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("depth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ENCTYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("enctype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName FONT_STRETCH = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-stretch"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FILTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("filter"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONTWEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontweight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONT_WEIGHT = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-weight"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONTSTYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontstyle"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONT_STYLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-style"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONTFAMILY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontfamily"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONT_FAMILY = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-family"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONT_VARIANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-variant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName FONT_SIZE_ADJUST = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-size-adjust"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName KERNELUNITLENGTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("kernelunitlength", "kernelUnitLength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFOREACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONPROPERTYCHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onpropertychange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDATASETCHANGED = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondatasetchanged"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName MASKCONTENTUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("maskcontentunits", "maskContentUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FILTERUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("filterunits", "filterUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONTSIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("fontsize"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FONT_SIZE = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-size"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName KEYTIMES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("keytimes", "keyTimes"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LETTER_SPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("letter-spacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName LIST = new AttributeName(ALL_NO_NS, SAME_LOCAL("list"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName MULTIPLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("multiple"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); + public static final AttributeName RT = new AttributeName(ALL_NO_NS, SAME_LOCAL("rt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONSTOP = new AttributeName(ALL_NO_NS, SAME_LOCAL("onstop"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONSTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("onstart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName POSTER = new AttributeName(ALL_NO_NS, SAME_LOCAL("poster"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName PATTERNTRANSFORM = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("patterntransform", "patternTransform"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PATTERN = new AttributeName(ALL_NO_NS, SAME_LOCAL("pattern"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PATTERNUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("patternunits", "patternUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName PATTERNCONTENTUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("patterncontentunits", "patternContentUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RESTART = new AttributeName(ALL_NO_NS, SAME_LOCAL("restart"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName STITCHTILES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("stitchtiles", "stitchTiles"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName SYSTEMLANGUAGE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("systemlanguage", "systemLanguage"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TEXT_RENDERING = new AttributeName(ALL_NO_NS, SAME_LOCAL("text-rendering"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VERT_ORIGIN_X = new AttributeName(ALL_NO_NS, SAME_LOCAL("vert-origin-x"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VERT_ADV_Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("vert-adv-y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VERT_ORIGIN_Y = new AttributeName(ALL_NO_NS, SAME_LOCAL("vert-origin-y"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TEXT_DECORATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("text-decoration"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TEXT_ANCHOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("text-anchor"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TEXTLENGTH = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("textlength", "textLength"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName TEXT = new AttributeName(ALL_NO_NS, SAME_LOCAL("text"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName UNITS_PER_EM = new AttributeName(ALL_NO_NS, SAME_LOCAL("units-per-em"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName WRITING_MODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("writing-mode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName WIDTHS = new AttributeName(ALL_NO_NS, SAME_LOCAL("widths"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName WIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("width"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ACCUMULATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("accumulate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLUMNSPAN = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnspan"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLUMNLINES = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnlines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLUMNALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLUMNSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName COLUMNWIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnwidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName GROUPALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("groupalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName INPUTMODE = new AttributeName(ALL_NO_NS, SAME_LOCAL("inputmode"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName OCCURRENCE = new AttributeName(ALL_NO_NS, SAME_LOCAL("occurrence"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONSUBMIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("onsubmit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ONCUT = new AttributeName(ALL_NO_NS, SAME_LOCAL("oncut"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REQUIRED = new AttributeName(ALL_NO_NS, SAME_LOCAL("required"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN); public static final AttributeName REQUIREDFEATURES = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("requiredfeatures", "requiredFeatures"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName RENDERING_INTENT = new AttributeName(ALL_NO_NS, SAME_LOCAL("rendering-intent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SPECULAREXPONENT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("specularexponent", "specularExponent"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SPECULARCONSTANT = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("specularconstant", "specularConstant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SUPERSCRIPTSHIFT = new AttributeName(ALL_NO_NS, SAME_LOCAL("superscriptshift"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE_DASHARRAY = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-dasharray"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName XCHANNELSELECTOR = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("xchannelselector", "xChannelSelector"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName YCHANNELSELECTOR = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("ychannelselector", "yChannelSelector"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_AUTOCOMPLETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-autocomplete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ENABLE_BACKGROUND = new AttributeName(ALL_NO_NS, SAME_LOCAL("enable-background"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName DOMINANT_BASELINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("dominant-baseline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GRADIENTTRANSFORM = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("gradienttransform", "gradientTransform"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFORDEACTIVATE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbefordeactivate"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONDATASETCOMPLETE = new AttributeName(ALL_NO_NS, SAME_LOCAL("ondatasetcomplete"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OVERLINE_POSITION = new AttributeName(ALL_NO_NS, SAME_LOCAL("overline-position"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONBEFOREEDITFOCUS = new AttributeName(ALL_NO_NS, SAME_LOCAL("onbeforeeditfocus"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName LIMITINGCONEANGLE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("limitingconeangle", "limitingConeAngle"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RESULT = new AttributeName(ALL_NO_NS, SAME_LOCAL("result"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REQUIREDEXTENSIONS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("requiredextensions", "requiredExtensions"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VALUES = new AttributeName(ALL_NO_NS, SAME_LOCAL("values"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VALUETYPE = new AttributeName(ALL_NO_NS, SAME_LOCAL("valuetype"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED); + public static final AttributeName VALUE = new AttributeName(ALL_NO_NS, SAME_LOCAL("value"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName ELEVATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("elevation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VIEWTARGET = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("viewtarget", "viewTarget"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName VIEWBOX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("viewbox", "viewBox"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CX = new AttributeName(ALL_NO_NS, SAME_LOCAL("cx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DX = new AttributeName(ALL_NO_NS, SAME_LOCAL("dx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FX = new AttributeName(ALL_NO_NS, SAME_LOCAL("fx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BBOX = new AttributeName(ALL_NO_NS, SAME_LOCAL("bbox"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RX = new AttributeName(ALL_NO_NS, SAME_LOCAL("rx"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REFX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("refx", "refX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName BY = new AttributeName(ALL_NO_NS, SAME_LOCAL("by"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName CY = new AttributeName(ALL_NO_NS, SAME_LOCAL("cy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName DY = new AttributeName(ALL_NO_NS, SAME_LOCAL("dy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName FY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName RY = new AttributeName(ALL_NO_NS, SAME_LOCAL("ry"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); + public static final AttributeName REFY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("refy", "refY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName VERYTHINMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("verythinmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE_DASHOFFSET = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-dashoffset"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STROKE_MITERLIMIT = new AttributeName(ALL_NO_NS, SAME_LOCAL("stroke-miterlimit"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ALIGNMENT_BASELINE = new AttributeName(ALL_NO_NS, SAME_LOCAL("alignment-baseline"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ONREADYSTATECHANGE = new AttributeName(ALL_NO_NS, SAME_LOCAL("onreadystatechange"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName OVERLINE_THICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("overline-thickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNDERLINE_POSITION = new AttributeName(ALL_NO_NS, SAME_LOCAL("underline-position"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName VERYTHICKMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("verythickmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName REQUIREDEXTENSIONS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("requiredextensions", "requiredExtensions"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLOR_INTERPOLATION = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-interpolation"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName UNDERLINE_THICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("underline-thickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PRESERVEASPECTRATIO = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("preserveaspectratio", "preserveAspectRatio"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName PATTERNCONTENTUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("patterncontentunits", "patternContentUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_MULTISELECTABLE = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-multiselectable"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName SCRIPTSIZEMULTIPLIER = new AttributeName(ALL_NO_NS, SAME_LOCAL("scriptsizemultiplier"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName ARIA_ACTIVEDESCENDANT = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-activedescendant"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName VERYVERYTHINMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("veryverythinmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); public static final AttributeName VERYVERYTHICKMATHSPACE = new AttributeName(ALL_NO_NS, SAME_LOCAL("veryverythickmathspace"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STRIKETHROUGH_POSITION = new AttributeName(ALL_NO_NS, SAME_LOCAL("strikethrough-position"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName STRIKETHROUGH_THICKNESS = new AttributeName(ALL_NO_NS, SAME_LOCAL("strikethrough-thickness"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GLYPH_ORIENTATION_VERTICAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("glyph-orientation-vertical"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName COLOR_INTERPOLATION_FILTERS = new AttributeName(ALL_NO_NS, SAME_LOCAL("color-interpolation-filters"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); - public static final AttributeName GLYPH_ORIENTATION_HORIZONTAL = new AttributeName(ALL_NO_NS, SAME_LOCAL("glyph-orientation-horizontal"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG); private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = { - D, - K, - R, - X, - Y, - Z, - BY, + STEMH, + REPEATCOUNT, + NOWRAP, + SRCDOC, + ADDITIVE, + ONFORMCHANGE, + KEYTIMES, + ARIA_SORT, + OBJECT, + IMAGE_RENDERING, + MARKER_START, + XLINK_ARCROLE, + CLIP, + LOWSRC, + COLUMNWIDTH, + XML_SPACE, + VSPACE, + EDGEMODE, + ONBEFOREUPDATE, + UNDERLINE_THICKNESS, + HIGH, + RADIUS, + ROWLINES, + ONEND, + ENCODING, + ONFORMINPUT, + SHAPE_RENDERING, + ONDRAGLEAVE, + CONTEXTMENU, + VERT_ORIGIN_X, CX, - CY, - DX, + X, + ARIA_HIDDEN, + HSPACE, + SPECULAREXPONENT, + BASELINE, + LINEBREAK, + ONBEGIN, + ONKEYDOWN, + STRETCHY, + SURFACESCALE, + NARGS, + NOSHADE, + LIMITINGCONEANGLE, + VALIGN, + DECLARE, + FRAMEBORDER, + IN, + STANDBY, + AUTOCOMPLETE, + ONLOAD, + ONMOVESTART, + STROKE_DASHOFFSET, + GLYPHREF, + ABBR, + ONDRAGDROP, + COLS, + ROWS, + FONT_STYLE, + PATTERNTRANSFORM, + WRITING_MODE, + RESULT, DY, - G2, - G1, - FX, - FY, - K4, - K2, - K3, - K1, + MIN, + Y1, + ARIA_CHECKED, + ARIA_CONTROLS, + DATAFORMATAS, + ONPASTE, + CALCMODE, ID, - IN, - U2, - U1, + ACCENT_HEIGHT, + CITE, + INDEX, + NAME, + ONRESET, + ORIENTATION, + ONKEYPRESS, + REFERRERPOLICY, + SELECTED, + SIZE, + HREFLANG, + ALIGNMENTSCOPE, + LONGDESC, + TARGETX, + METHOD, + ALTIMG, + DEFINITIONURL, + ONFILTERCHANGE, + STRIKETHROUGH_POSITION, + MARKER_MID, + MASKCONTENTUNITS, + MAXLENGTH, + TITLE, + FORM, + USEMAP, + KERNELUNITLENGTH, + POINTSATX, + WHEN, + XLINK_SHOW, + COLOR_RENDERING, + IDEOGRAPHIC, + ONMOUSEWHEEL, + ONCONTEXTMENU, + ONMOUSEMOVE, + RQUOTE, + SCROLLING, + DISPLAY, + LOOP, + STOP_COLOR, + COORDS, + ONDRAGOVER, + OVERFLOW, + BIAS, + CLASS, + PRESERVEALPHA, + ALTTEXT, + FILTER, + FONT_SIZE_ADJUST, RT, + RESTART, + TEXT_ANCHOR, + COLUMNSPAN, + ONSUBMIT, + VALUE, RX, - RY, - TO, - Y2, - Y1, - X1, - X2, - ALT, - DIR, - DUR, + VERYTHINMATHSPACE, END, - FOR, - IN2, - MAX, - MIN, - LOW, - REL, - REV, SRC, - AXIS, - ABBR, - BBOX, - CITE, - CODE, - BIAS, - COLS, - CLIP, - CHAR, - BASE, - EDGE, - DATA, - FILL, - FROM, - FORM, + G1, + X2, + ARIA_VALUEMAX, + ARIA_EXPANDED, + ARIA_INVALID, + ARIA_ACTIVEDESCENDANT, + ARIA_LIVE, + DATASRC, + MOVABLELIMITS, + ROTATE, + ARABIC_FORM, + ONSCROLL, + UNICODE, + HEADERS, + WORD_SPACING, + BEVELLED, + CODETYPE, + DATETIME, FACE, - HIGH, - HREF, - OPEN, - ICON, - NAME, - MODE, - MASK, - LINK, - LANG, - LOOP, - LIST, - TYPE, - WHEN, - WRAP, - TEXT, - PATH, - PING, - REFX, - REFY, - SIZE, - SEED, - ROWS, - SPAN, - STEP, - ROLE, - XREF, - ASYNC, - ALINK, - ALIGN, - CLOSE, - COLOR, - CLASS, - CLEAR, - BEGIN, - DEPTH, - DEFER, - FENCE, - FRAME, - ISMAP, - ONEND, - INDEX, + INTERCEPT, + LINETHICKNESS, + ONBEFOREUNLOAD, ORDER, - OTHER, - ONCUT, - NARGS, - MEDIA, - LABEL, - LOCAL, - WIDTH, - TITLE, - VLINK, - VALUE, - SLOPE, - SHAPE, - SCOPE, - SCALE, - SPEED, - STYLE, - RULES, - STEMH, + ONREADYSTATECHANGE, + ONBEFOREPRINT, + ONSELECTSTART, + ONBEFOREACTIVATE, + ONBEFOREEDITFOCUS, + REPEAT, + REPEAT_MIN, + REPEAT_TEMPLATE, SIZES, - STEMV, - START, - XMLNS, - ACCEPT, - ACCENT, - ASCENT, - ACTIVE, - ALTIMG, - ACTION, - BORDER, - CURSOR, - COORDS, - FILTER, - FORMAT, - HIDDEN, - HSPACE, + SPREADMETHOD, + UNSELECTABLE, + DIFFUSECONSTANT, + ONAFTERUPDATE, + ALIGN, HEIGHT, - ONMOVE, - ONLOAD, - ONDRAG, - ORIGIN, - ONZOOM, - ONHELP, - ONSTOP, - ONDROP, + LANG, + MARGINHEIGHT, + PING, + ALPHABETIC, + MATHEMATICAL, + MATHCOLOR, + PATHLENGTH, + ACTION, + DOMINANT_BASELINE, + HORIZ_ORIGIN_X, + MEDIA, + OPTIMUM, + SCRIPTSIZEMULTIPLIER, + SCRIPTMINSIZE, + BACKGROUND, + MARKER_END, + MASKUNITS, + CELLSPACING, + FILL, ONBLUR, - OBJECT, - OFFSET, - ORIENT, - ONCOPY, - NOWRAP, - NOHREF, - MACROS, - METHOD, - LOWSRC, - LSPACE, - LQUOTE, - USEMAP, - WIDTHS, - TARGET, - VALUES, - VALIGN, - VSPACE, - POSTER, - POINTS, - PROMPT, - SRCDOC, - SCOPED, - STRING, - SCHEME, - STROKE, - RADIUS, - RESULT, - REPEAT, - SRCSET, - RSPACE, - ROTATE, - RQUOTE, - ALTTEXT, - ARCHIVE, + STYLE, AZIMUTH, - CLOSURE, - CHECKED, - CLASSID, - CHAROFF, + FRAMESPACING, + PRIMITIVEUNITS, + SEAMLESS, + ASYNC, + KERNELMATRIX, + OPEN, + POINTER_EVENTS, + POINTSATZ, + TRANSFORM, + XLINK_TITLE, + XMLNS, + AUTOPLAY, BGCOLOR, - COLSPAN, - CHARSET, - COMPACT, - CONTENT, - ENCTYPE, - DATASRC, - DATAFLD, - DECLARE, - DISPLAY, - DIVISOR, - DEFAULT, - DESCENT, - KERNING, - HANGING, - HEADERS, - ONPASTE, - ONCLICK, - OPTIMUM, - ONBEGIN, - ONKEYUP, + COLOR, + FLOOD_COLOR, + PANOSE_1, + ONCONTROLSELECT, + ONMOUSEENTER, + ONROWEXIT, + ONLOSECAPTURE, + ONMOUSELEAVE, ONFOCUS, + ONMOUSEDOWN, + SCROLLDELAY, + STROKE_MITERLIMIT, + STROKE_OPACITY, + CLIP_PATH, + GLYPH_ORIENTATION_VERTICAL, + HTTP_EQUIV, + SCOPED, + SHAPE, + TEMPLATE, + ATTRIBUTETYPE, + CHARSET, + ONDRAG, + ONDRAGEND, ONERROR, - ONINPUT, - ONABORT, - ONSTART, - ONRESET, - OPACITY, - NOSHADE, + ONERRORUPDATE, + START, + CLASSID, + CLOSURE, + KEYSYSTEM, MINSIZE, - MAXSIZE, - LARGEOP, - UNICODE, - TARGETX, - TARGETY, - VIEWBOX, - VERSION, - PATTERN, - PROFILE, - SPACING, - RESTART, ROWSPAN, - SANDBOX, - SUMMARY, - STANDBY, - REPLACE, - AUTOPLAY, - ADDITIVE, - CALCMODE, - CODETYPE, - CODEBASE, + SUBSCRIPTSHIFT, CONTROLS, - BEVELLED, - BASELINE, - EXPONENT, - EDGEMODE, - ENCODING, - GLYPHREF, - DATETIME, - DISABLED, + ENCTYPE, + FONT_WEIGHT, + FONT_FAMILY, FONTSIZE, - KEYTIMES, - PANOSE_1, - HREFLANG, - ONRESIZE, - ONCHANGE, - ONBOUNCE, - ONUNLOAD, - ONFINISH, - ONSCROLL, - OPERATOR, - OVERFLOW, - ONSUBMIT, - ONREPEAT, - ONSELECT, - NOTATION, - NORESIZE, - MANIFEST, - MATHSIZE, - MULTIPLE, - LONGDESC, - LANGUAGE, - TEMPLATE, - TABINDEX, - PROPERTY, - READONLY, - SELECTED, - ROWLINES, - SEAMLESS, - ROWALIGN, - STRETCHY, + LIST, + ONSTART, + PATTERNUNITS, + SYSTEMLANGUAGE, + VERT_ORIGIN_Y, + TEXT, + WIDTH, + COLUMNALIGN, + INPUTMODE, REQUIRED, + VALUES, + VIEWTARGET, + FX, + BY, + RY, + VERYVERYTHINMATHSPACE, + DIR, + IN2, + REL, + K, + Z, + U1, + K2, + K3, XML_BASE, - XML_LANG, - X_HEIGHT, - ARIA_OWNS, - AUTOFOCUS, - ARIA_SORT, - ACCESSKEY, - ARIA_BUSY, - ARIA_GRAB, - AMPLITUDE, - ARIA_LIVE, - CLIP_RULE, - CLIP_PATH, - EQUALROWS, - ELEVATION, + ARIA_DESCRIBEDBY, + ARIA_DROPEFFECT, + ARIA_LEVEL, + ARIA_POSINSET, + ARIA_VALUEMIN, + ARIA_READONLY, + ARIA_DATATYPE, + ARIA_FLOWTO, + ARIA_SETSIZE, + DATAFLD, + EQUALCOLUMNS, + LOCAL, + ONDATASETCHANGED, + RSPACE, + SEPARATORS, + XCHANNELSELECTOR, + ONDBLCLICK, + DESCENT, + OPACITY, + SPECIFICATION, + UNICODE_RANGE, + GRADIENTUNITS, + RENDERING_INTENT, + SANDBOX, + ACCEPT_CHARSET, + ASCENT, + BASELINE_SHIFT, + CODE, + CODEBASE, + DEFER, DIRECTION, - DRAGGABLE, - FILL_RULE, - FONTSTYLE, - FONT_SIZE, - KEYSYSTEM, - KEYPOINTS, + EDGE, HIDEFOCUS, - ONMESSAGE, - INTERCEPT, - ONDRAGEND, - ONMOVEEND, - ONINVALID, + IRRELEVANT, INTEGRITY, - ONKEYDOWN, - ONFOCUSIN, - ONMOUSEUP, - INPUTMODE, - ONROWEXIT, - MATHCOLOR, - MASKUNITS, - MAXLENGTH, - LINEBREAK, - TRANSFORM, - V_HANGING, - VALUETYPE, - POINTSATZ, - POINTSATX, - POINTSATY, - SYMMETRIC, - SCROLLING, + LABEL, + MODE, + NORESIZE, + ONREPEAT, + ONSELECT, + OTHER, + ONCELLCHANGE, + ONMESSAGE, + ONHELP, + ORIENT, + ONBEFORECOPY, + ONBEFOREPASTE, + ONDEACTIVATE, + ONBEFORDEACTIVATE, + ONKEYUP, + ONBEFORECUT, + ONRESIZE, + REPEAT_MAX, + RULES, + ROLE, + REPEAT_START, REPEATDUR, + SPEED, + SUPERSCRIPTSHIFT, + SCHEME, SELECTION, - SEPARATOR, - XML_SPACE, - AUTOSUBMIT, - ALPHABETIC, + TYPE, + UNDERLINE_POSITION, + X_HEIGHT, + HREF, + ONAFTERPRINT, + PROFILE, + XREF, + ALIGNMENT_BASELINE, + DRAGGABLE, + HANGING, + LANGUAGE, + LARGEOP, + LENGTHADJUST, + MARGINWIDTH, + ORIGIN, + TARGET, + TARGETY, + ARCHIVE, + LIGHTING_COLOR, + MATHBACKGROUND, + MATHVARIANT, + MATHSIZE, + ONCHANGE, + PATH, ACTIONTYPE, - ACCUMULATE, - ARIA_LEVEL, - COLUMNSPAN, - CAP_HEIGHT, - BACKGROUND, - GLYPH_NAME, - GROUPALIGN, - FONTFAMILY, - FONTWEIGHT, - FONT_STYLE, - KEYSPLINES, - HTTP_EQUIV, - ONACTIVATE, - OCCURRENCE, - IRRELEVANT, - ONDBLCLICK, - ONDRAGDROP, - ONKEYPRESS, - ONROWENTER, - ONDRAGOVER, - ONFOCUSOUT, - ONMOUSEOUT, - NUMOCTAVES, - MARKER_MID, - MARKER_END, - TEXTLENGTH, - VISIBILITY, - VIEWTARGET, - VERT_ADV_Y, - PATHLENGTH, - REPEAT_MAX, - RADIOGROUP, - STOP_COLOR, - SEPARATORS, - REPEAT_MIN, - ROWSPACING, - ZOOMANDPAN, - XLINK_TYPE, - XLINK_ROLE, - XLINK_HREF, - XLINK_SHOW, - ACCENTUNDER, - ARIA_SECRET, - ARIA_ATOMIC, - ARIA_HIDDEN, - ARIA_FLOWTO, - ARABIC_FORM, - CELLPADDING, - CELLSPACING, - COLUMNWIDTH, - CROSSORIGIN, - COLUMNALIGN, - COLUMNLINES, - CONTEXTMENU, - BASEPROFILE, - FONT_FAMILY, - FRAMEBORDER, - FILTERUNITS, - FLOOD_COLOR, - FONT_WEIGHT, + ACTIVE, + BEGIN, + DIVISOR, HORIZ_ADV_X, - ONDRAGLEAVE, - ONMOUSEMOVE, - ORIENTATION, - ONMOUSEDOWN, - ONMOUSEOVER, - ONDRAGENTER, - IDEOGRAPHIC, - ONBEFORECUT, - ONFORMINPUT, - ONDRAGSTART, - ONMOVESTART, - MARKERUNITS, - MATHVARIANT, - MARGINWIDTH, + HORIZ_ORIGIN_Y, + MEDIUMMATHSPACE, + MANIFEST, + ONFINISH, + RADIOGROUP, + SCRIPTLEVEL, + STRING, + STRIKETHROUGH_THICKNESS, + TABINDEX, + VISIBILITY, + LINK, + MARKERHEIGHT, + MASK, MARKERWIDTH, - TEXT_ANCHOR, + MARKERUNITS, + AMPLITUDE, + CELLPADDING, + FILL_RULE, + FILL_OPACITY, + ONCLICK, + REPLACE, + SCALE, TABLEVALUES, - SCRIPTLEVEL, - REPEATCOUNT, - STITCHTILES, - STARTOFFSET, - SCROLLDELAY, + V_ALPHABETIC, + FORMAT, + FRAME, + FROM, + PROMPT, + SYMMETRIC, + STEMV, + SUMMARY, + ZOOMANDPAN, + ALINK, + ICON, + KERNING, + ONUNLOAD, + ONINVALID, + ONINPUT, + POINTS, + POINTSATY, + SPAN, + THINMATHSPACE, + VLINK, + XLINK_HREF, + XLINK_ROLE, XMLNS_XLINK, - XLINK_TITLE, - ARIA_INVALID, - ARIA_PRESSED, - ARIA_CHECKED, - AUTOCOMPLETE, - ARIA_SETSIZE, - ARIA_CHANNEL, - EQUALCOLUMNS, - DISPLAYSTYLE, - DATAFORMATAS, - FILL_OPACITY, - FONT_VARIANT, - FONT_STRETCH, - FRAMESPACING, - KERNELMATRIX, - ONDEACTIVATE, + XLINK_TYPE, + XLINK_ACTUATE, + AUTOSUBMIT, + AUTOFOCUS, + COLOR_PROFILE, + COLOR_INTERPOLATION, + COLOR_INTERPOLATION_FILTERS, + EXPONENT, + FLOOD_OPACITY, + LQUOTE, + NUMOCTAVES, + ONBOUNCE, + ONROWSINSERTED, + ONROWENTER, + ONMOUSEOVER, + ONFOCUSIN, + ONMOVEEND, + ONZOOM, + ONCOPY, ONROWSDELETE, - ONMOUSELEAVE, - ONFORMCHANGE, - ONCELLCHANGE, - ONMOUSEWHEEL, - ONMOUSEENTER, - ONAFTERPRINT, - ONBEFORECOPY, - MARGINHEIGHT, - MARKERHEIGHT, - MARKER_START, - MATHEMATICAL, - LENGTHADJUST, - UNSELECTABLE, - UNICODE_BIDI, - UNITS_PER_EM, - WORD_SPACING, - WRITING_MODE, - V_ALPHABETIC, - PATTERNUNITS, - SPREADMETHOD, - SURFACESCALE, + ONMOVE, + ONMOUSEUP, + ONMOUSEOUT, + ONFOCUSOUT, + TO, + STROKE_LINECAP, + STROKE_DASHARRAY, + STROKE_LINEJOIN, + STROKE, STROKE_WIDTH, - REPEAT_START, - STDDEVIATION, + COMPACT, + CLIP_RULE, + CLIPPATHUNITS, + DISPLAYSTYLE, + GLYPH_ORIENTATION_HORIZONTAL, + GLYPH_NAME, + KEYPOINTS, + PROPERTY, + STEP, + SCOPE, + SLOPE, STOP_OPACITY, - ARIA_CONTROLS, - ARIA_HASPOPUP, - ACCENT_HEIGHT, - ARIA_VALUENOW, - ARIA_RELEVANT, - ARIA_POSINSET, - ARIA_VALUEMAX, - ARIA_READONLY, - ARIA_SELECTED, - ARIA_REQUIRED, - ARIA_EXPANDED, - ARIA_DISABLED, - ATTRIBUTETYPE, + WRAP, ATTRIBUTENAME, - ARIA_DATATYPE, - ARIA_VALUEMIN, - BASEFREQUENCY, - COLUMNSPACING, - COLOR_PROFILE, - CLIPPATHUNITS, - DEFINITIONURL, - GRADIENTUNITS, - FLOOD_OPACITY, - ONAFTERUPDATE, - ONERRORUPDATE, - ONBEFOREPASTE, - ONLOSECAPTURE, - ONCONTEXTMENU, - ONSELECTSTART, - ONBEFOREPRINT, - MOVABLELIMITS, - LINETHICKNESS, - UNICODE_RANGE, - THINMATHSPACE, - VERT_ORIGIN_X, - VERT_ORIGIN_Y, - V_IDEOGRAPHIC, - PRESERVEALPHA, - SCRIPTMINSIZE, - SPECIFICATION, - XLINK_ACTUATE, - XLINK_ARCROLE, - ACCEPT_CHARSET, - ALIGNMENTSCOPE, - ARIA_MULTILINE, - BASELINE_SHIFT, - HORIZ_ORIGIN_X, - HORIZ_ORIGIN_Y, - ONBEFOREUPDATE, - ONFILTERCHANGE, - ONROWSINSERTED, - ONBEFOREUNLOAD, - MATHBACKGROUND, + CHAR, + CHAROFF, + MACROS, + NOHREF, + ONDRAGENTER, + ONPROPERTYCHANGE, + ONDROP, + OVERLINE_POSITION, + OPERATOR, + ONDRAGSTART, + OVERLINE_THICKNESS, + STARTOFFSET, + AXIS, + COLSPAN, + CROSSORIGIN, + CURSOR, + CLOSE, + IS, + KEYSPLINES, + MAXSIZE, + OFFSET, + PRESERVEASPECTRATIO, + ROWSPACING, + SRCSET, + VERSION, + CONTENTEDITABLE, + CONTENT, + DEPTH, + FONT_STRETCH, + FONTWEIGHT, + FONTSTYLE, + FONTFAMILY, + FONT_VARIANT, + FILTERUNITS, + FONT_SIZE, LETTER_SPACING, - LIGHTING_COLOR, - THICKMATHSPACE, + MULTIPLE, + ONSTOP, + POSTER, + PATTERN, + PATTERNCONTENTUNITS, + STITCHTILES, TEXT_RENDERING, - V_MATHEMATICAL, - POINTER_EVENTS, - PRIMITIVEUNITS, - REFERRERPOLICY, - SYSTEMLANGUAGE, - STROKE_LINECAP, - SUBSCRIPTSHIFT, - STROKE_OPACITY, - ARIA_DROPEFFECT, + VERT_ADV_Y, + TEXT_DECORATION, + TEXTLENGTH, + UNITS_PER_EM, + WIDTHS, + ACCUMULATE, + COLUMNLINES, + COLUMNSPACING, + GROUPALIGN, + OCCURRENCE, + ONCUT, + REQUIREDFEATURES, + REQUIREDEXTENSIONS, + VALUETYPE, + ELEVATION, + VIEWBOX, + DX, + BBOX, + REFX, + CY, + FY, + REFY, + VERYTHICKMATHSPACE, + VERYVERYTHICKMATHSPACE, + ALT, + DUR, + FOR, + LOW, + MAX, + REV, + D, + R, + Y, + CAP_HEIGHT, + K1, + X1, + G2, + U2, + Y2, + K4, + XML_LANG, + ARIA_GRAB, ARIA_LABELLEDBY, + ARIA_DISABLED, + ARIA_SELECTED, + ARIA_REQUIRED, + ARIA_PRESSED, + ARIA_CHANNEL, + ARIA_SECRET, + ARIA_ATOMIC, ARIA_TEMPLATEID, - COLOR_RENDERING, - CONTENTEDITABLE, - DIFFUSECONSTANT, + ARIA_MULTISELECTABLE, + ARIA_MULTILINE, + ARIA_OWNS, + ARIA_RELEVANT, + ARIA_VALUENOW, + ARIA_AUTOCOMPLETE, + ARIA_BUSY, + ARIA_HASPOPUP, + CLEAR, + DISABLED, + DEFAULT, + DATA, + EQUALROWS, + ISMAP, + LSPACE, + NOTATION, ONDATAAVAILABLE, - ONCONTROLSELECT, - IMAGE_RENDERING, - MEDIUMMATHSPACE, - TEXT_DECORATION, - SHAPE_RENDERING, - STROKE_LINEJOIN, - REPEAT_TEMPLATE, - ARIA_DESCRIBEDBY, - FONT_SIZE_ADJUST, - KERNELUNITLENGTH, - ONBEFOREACTIVATE, - ONPROPERTYCHANGE, - ONDATASETCHANGED, - MASKCONTENTUNITS, - PATTERNTRANSFORM, - REQUIREDFEATURES, - RENDERING_INTENT, - SPECULAREXPONENT, - SPECULARCONSTANT, - SUPERSCRIPTSHIFT, - STROKE_DASHARRAY, - XCHANNELSELECTOR, + ONDATASETCOMPLETE, + ROWALIGN, + SEPARATOR, + V_MATHEMATICAL, + V_HANGING, YCHANNELSELECTOR, - ARIA_AUTOCOMPLETE, ENABLE_BACKGROUND, - DOMINANT_BASELINE, + ONABORT, + CHECKED, + FENCE, + ONACTIVATE, + SPACING, + SPECULARCONSTANT, + THICKMATHSPACE, + UNICODE_BIDI, + BORDER, GRADIENTTRANSFORM, - ONBEFORDEACTIVATE, - ONDATASETCOMPLETE, - OVERLINE_POSITION, - ONBEFOREEDITFOCUS, - LIMITINGCONEANGLE, - VERYTHINMATHSPACE, - STROKE_DASHOFFSET, - STROKE_MITERLIMIT, - ALIGNMENT_BASELINE, - ONREADYSTATECHANGE, - OVERLINE_THICKNESS, - UNDERLINE_POSITION, - VERYTHICKMATHSPACE, - REQUIREDEXTENSIONS, - COLOR_INTERPOLATION, - UNDERLINE_THICKNESS, - PRESERVEASPECTRATIO, - PATTERNCONTENTUNITS, - ARIA_MULTISELECTABLE, - SCRIPTSIZEMULTIPLIER, - ARIA_ACTIVEDESCENDANT, - VERYVERYTHINMATHSPACE, - VERYVERYTHICKMATHSPACE, - STRIKETHROUGH_POSITION, - STRIKETHROUGH_THICKNESS, - GLYPH_ORIENTATION_VERTICAL, - COLOR_INTERPOLATION_FILTERS, - GLYPH_ORIENTATION_HORIZONTAL, + HIDDEN, + READONLY, + SEED, + STDDEVIATION, + V_IDEOGRAPHIC, + ACCENTUNDER, + ACCESSKEY, + ACCENT, + ACCEPT, + BASEFREQUENCY, + BASEPROFILE, + BASE, }; private final static int[] ATTRIBUTE_HASHES = { - 1153, - 1383, - 1601, - 1793, - 1827, - 1857, - 68600, - 69146, - 69177, - 70237, - 70270, - 71572, - 71669, - 72415, - 72444, - 74846, - 74904, - 74943, - 75001, - 75276, - 75590, - 84742, - 84839, - 85575, - 85963, - 85992, - 87204, - 88074, - 88171, - 89130, - 89163, - 3207892, - 3283895, - 3284791, - 3338752, - 3358197, - 3369562, - 3539124, - 3562402, - 3574260, - 3670335, - 3696933, - 3721879, - 135280021, - 135346322, - 136317019, - 136475749, - 136548517, - 136652214, - 136884919, - 136902418, - 136942992, - 137292068, - 139120259, - 139785574, - 142250603, - 142314056, - 142331176, - 142519584, - 144752417, - 145106895, - 146147200, - 146765926, - 148805544, - 149655723, - 149809441, - 150018784, - 150445028, - 150813181, - 150923321, - 152528754, - 152536216, - 152647366, - 152962785, - 155219321, - 155654904, - 157317483, - 157350248, - 157437941, - 157447478, - 157604838, - 157685404, - 157894402, - 158315188, - 166078431, - 169409980, - 169700259, - 169856932, - 170007032, - 170409695, - 170466488, - 170513710, - 170608367, - 173028944, - 173896963, - 176090625, - 176129212, - 179390001, - 179489057, - 179627464, - 179840468, - 179849042, - 180004216, - 181779081, - 183027151, - 183645319, - 183698797, - 185922012, - 185997252, - 188312483, - 188675799, - 190977533, - 190992569, - 191006194, - 191033518, - 191038774, - 191096249, - 191166163, - 191194426, - 191443343, - 191522106, - 191568039, - 200104642, - 202506661, - 202537381, - 202602917, - 203070590, - 203120766, - 203389054, - 203690071, - 203971238, - 203986524, - 209040857, - 209125756, - 212055489, - 212322418, - 212746849, - 213002877, - 213055164, - 213088023, - 213259873, - 213273386, - 213435118, - 213437318, - 213438231, - 213493071, - 213532268, - 213542834, - 213584431, - 213659891, - 215285828, - 215880731, - 216112976, - 216684637, - 217369699, - 217565298, - 217576549, - 218186795, - 219743185, - 220082234, - 221623802, - 221986406, - 222283890, - 223089542, - 223138630, - 223311265, - 224431494, - 224547358, - 224587256, - 224589550, - 224655650, - 224785518, - 224810917, - 224813302, - 225126263, - 225429618, - 225432950, - 225440869, - 236107233, - 236709921, - 236838947, - 237117095, - 237143271, - 237172455, - 237209953, - 237354143, - 237372743, - 237668065, - 237703073, - 237714273, - 239743521, - 240512803, - 240522627, - 240560417, - 240656513, - 241015715, - 241062755, - 241065383, - 243523041, - 245865199, - 246261793, - 246556195, - 246774817, - 246923491, - 246928419, - 246981667, - 247014847, - 247058369, - 247112833, - 247118177, - 247119137, - 247128739, - 247316903, - 249533729, - 250235623, - 250269543, - 251402351, - 252339047, - 253260911, - 253293679, - 254844367, - 255547879, - 256077281, - 256345377, - 258124199, - 258354465, - 258605063, - 258744193, - 258845603, - 258856961, - 258926689, - 269869248, - 270174334, - 270709417, - 270778994, - 270781796, - 271102503, - 271478858, - 271490090, - 272870654, - 273335275, - 273369140, - 273924313, - 274108530, - 274116736, - 276818662, - 277476156, - 279156579, - 279349675, - 280108533, - 280128712, - 280132869, - 280162403, - 280280292, - 280413430, - 280506130, - 280677397, - 280678580, - 280686710, - 280689066, - 282736758, - 283110901, - 283275116, - 283823226, - 283890012, - 284479340, - 284606461, - 286700477, - 286798916, - 290055764, - 291557706, - 291665349, - 291804100, - 292138018, - 292166446, - 292418738, - 292451039, - 300298041, - 300374839, - 300597935, - 303073389, - 303083839, - 303266673, - 303354997, - 303430688, - 303576261, - 303724281, - 303819694, - 304242723, - 304382625, - 306247792, - 307227811, - 307468786, - 307724489, - 310252031, - 310358241, - 310373094, - 310833159, - 311015256, - 313357609, - 313683893, - 313701861, - 313706996, - 313707317, - 313710350, - 313795700, - 314027746, - 314038181, - 314091299, - 314205627, - 314233813, - 316741830, - 316797986, - 317486755, - 317794164, - 320076137, - 322657125, - 322887778, - 323506876, - 323572412, - 323605180, - 325060058, - 325320188, - 325398738, - 325541490, - 325671619, - 333868843, - 336806130, - 337212108, - 337282686, - 337285434, - 337585223, - 338036037, - 338298087, - 338566051, - 340943551, - 341190970, - 342995704, - 343352124, - 343912673, - 344585053, - 346977248, - 347218098, - 347262163, - 347278576, - 347438191, - 347655959, - 347684788, - 347726430, - 347727772, - 347776035, - 347776629, - 349500753, - 350880161, - 350887073, - 353384123, - 355496998, - 355906922, - 355979793, - 356545959, - 358637867, - 358905016, - 359164318, - 359247286, - 359350571, - 359579447, - 365560330, - 367399355, - 367420285, - 367510727, - 368013212, - 370234760, - 370353345, - 370710317, - 371074566, - 371122285, - 371194213, - 371448425, - 371448430, - 371545055, - 371593469, - 371596922, - 371758751, - 371964792, - 372151328, - 376550136, - 376710172, - 376795771, - 376826271, - 376906556, - 380514830, - 380774774, - 380775037, - 381030322, - 381136500, - 381281631, - 381282269, - 381285504, - 381330595, - 381331422, - 381335911, - 381336484, - 383907298, - 383917408, - 384595009, - 384595013, - 387799894, - 387823201, - 392581647, - 392584937, - 392742684, - 392906485, - 393003349, - 400644707, - 400973830, - 404428547, - 404432113, - 404432865, - 404469244, - 404478897, - 404694860, - 406887479, - 408294949, - 408789955, - 410022510, - 410467324, - 410586448, - 410945965, - 411845275, - 414327152, - 414327932, - 414329781, - 414346257, - 414346439, - 414639928, - 414835998, - 414894517, - 414986533, - 417465377, - 417465381, - 417492216, - 418259232, - 419310946, - 420103495, - 420242342, - 420380455, - 420658662, - 420717432, - 423183880, - 424539259, - 425929170, - 425972964, - 426050649, - 426126450, - 426142833, - 426607922, - 437289840, - 437347469, - 437412335, - 437423943, - 437455540, - 437462252, - 437597991, - 437617485, - 437986305, - 437986507, - 437986828, - 437987072, - 438015591, - 438034813, - 438038966, - 438179623, - 438347971, - 438483573, - 438547062, - 438895551, - 441592676, - 442032555, - 443548979, - 447881379, - 447881655, - 447881895, - 447887844, - 448416189, - 448445746, - 448449012, - 450942191, - 452816744, - 453668677, - 454434495, - 456610076, - 456642844, - 456738709, - 457544600, - 459451897, - 459680944, - 468058810, - 468083581, - 470964084, - 471470955, - 471567278, - 472267822, - 481177859, - 481210627, - 481435874, - 481455115, - 481485378, - 481490218, - 485105638, - 486005878, - 486383494, - 487988916, - 488103783, - 490661867, - 491574090, - 491578272, - 492891370, - 493041952, - 493441205, - 493582844, - 493716979, - 504577572, - 504740359, - 505091638, - 505592418, - 505656212, - 509516275, - 514998531, - 515571132, - 515594682, - 518712698, - 521362273, - 526592419, - 526807354, - 527348842, - 538294791, - 544689535, - 545535009, - 548544752, - 548563346, - 548595116, - 551679010, - 558034099, - 560329411, - 560356209, - 560671018, - 560671152, - 560692590, - 560845442, - 569212097, - 569474241, - 572252718, - 575326764, - 576174758, - 576190819, - 582099184, - 582099438, - 582372519, - 582558889, - 586552164, - 591325418, - 594231990, - 594243961, - 605711268, - 615672071, - 616086845, - 621792370, - 624879850, - 627432831, - 640040548, - 654392808, - 658675477, - 659420283, - 672891587, - 694768102, - 705890982, - 725543146, - 759097578, - 761686526, - 795383908, - 878105336, - 908643300, - 945213471, + 1891069765, + 1756360955, + 1972151670, + 1740096054, + 1814656840, + 1922419228, + 2004199576, + 1680411449, + 1754606246, + 1785174319, + 1854466380, + 1910441773, + 1932959284, + 1988132214, + 2017010843, + 1037879561, + 1691145478, + 1749350104, + 1754860110, + 1758018291, + 1801312388, + 1823580230, + 1873656984, + 1905754853, + 1917295176, + 1922679531, + 1941409583, + 1972996699, + 2000162011, + 2009059485, + 2065170434, + 71303169, + 1680185931, + 1683805446, + 1723336432, + 1747939528, + 1752985897, + 1754698327, + 1754927689, + 1756804936, + 1773606972, + 1787699221, + 1804405895, + 1820262641, + 1825437894, + 1866496199, + 1884142379, + 1900544002, + 1907701479, + 1915295948, + 1922319046, + 1922630475, + 1924517489, + 1934970504, + 1965349396, + 1972904522, + 1983347764, + 1991392548, + 2001669450, + 2007019632, + 2010452700, + 2024763702, + 2082471938, + 57205395, + 885522434, + 1680165436, + 1680311085, + 1681694748, + 1687751191, + 1714745560, + 1732771842, + 1747348637, + 1748566068, + 1751507685, + 1754214628, + 1754645079, + 1754798923, + 1754872618, + 1756190926, + 1756704824, + 1757053236, + 1767875272, + 1781007934, + 1786821704, + 1791068279, + 1804054854, + 1814517574, + 1816178925, + 1821755934, + 1824005974, + 1854285018, + 1854497008, + 1871251689, + 1874788501, + 1884343396, + 1891937366, + 1903759600, + 1906419001, + 1909819252, + 1910527802, + 1916247343, + 1919297291, + 1922400908, + 1922566877, + 1922665179, + 1924206934, + 1924629705, + 1933369607, + 1937777860, + 1941454586, + 1966439670, + 1972744954, + 1972922984, + 1982640164, + 1983461061, + 1990062797, + 1999273799, + 2001578182, + 2001814704, + 2005925890, + 2008084807, + 2009079867, + 2016711994, + 2023146024, + 2026975253, + 2073034754, + 2093791505, + 53006051, + 60345635, + 876085250, + 901775362, + 1680140893, + 1680165613, + 1680230940, + 1680345685, + 1680446153, + 1681940503, + 1686731997, + 1689324870, + 1697174123, + 1721189160, + 1724189239, + 1734404167, + 1742183484, + 1747792072, + 1748503880, + 1748971848, + 1749856356, + 1751679545, + 1753297133, + 1754546894, + 1754643237, + 1754647074, + 1754792749, + 1754858317, + 1754860400, + 1754905345, + 1756147974, + 1756265690, + 1756428495, + 1756737685, + 1756874572, + 1757874716, + 1765800271, + 1771637325, + 1780879045, + 1784574102, + 1786740932, + 1787193500, + 1788842244, + 1797666394, + 1803839644, + 1804081401, + 1805715690, + 1814560070, + 1816104145, + 1817175198, + 1820727381, + 1822002839, + 1823841492, + 1824159037, + 1848600826, + 1854366938, + 1854497001, + 1865910331, + 1867462756, + 1872343590, + 1874270021, + 1881750231, + 1884267068, + 1889633006, + 1891182792, + 1898415413, + 1903612236, + 1905628916, + 1906408542, + 1906423097, + 1908462185, + 1910441627, + 1910503637, + 1915025672, + 1915757815, + 1916286197, + 1917857531, + 1921880376, + 1922384591, + 1922413292, + 1922482777, + 1922599757, + 1922665052, + 1922677495, + 1922699851, + 1924453467, + 1924583073, + 1924773438, + 1933123337, + 1934917290, + 1935597338, + 1941253366, + 1941438085, + 1942026440, + 1965561677, + 1966454567, + 1972656710, + 1972863609, + 1972908839, + 1972963917, + 1975062341, + 1983266615, + 1983416119, + 1987410233, + 1988788535, + 1991021879, + 1991643278, + 2000125224, + 2001210183, + 2001634459, + 2001710299, + 2001898808, + 2004957380, + 2006516551, + 2007064812, + 2008408414, + 2009061533, + 2009231684, + 2010716309, + 2016810187, + 2019887833, + 2024616088, + 2026741958, + 2060302634, + 2066743298, + 2081423362, + 2089811970, + 2093791509, + 52488851, + 55077603, + 59825747, + 64487425, + 72351745, + 883425282, + 894959618, + 911736834, + 1038141480, + 1680159328, + 1680165487, + 1680181850, + 1680198381, + 1680251485, + 1680323325, + 1680347981, + 1680433915, + 1680511804, + 1681844247, + 1682440540, + 1685882101, + 1687503600, + 1689048326, + 1689839946, + 1692408896, + 1704262346, + 1715466295, + 1721347639, + 1723340621, + 1724238365, + 1733919469, + 1739583824, + 1740130375, + 1747299630, + 1747455030, + 1747839118, + 1748306996, + 1748552744, + 1748869205, + 1749027145, + 1749399124, + 1751232761, + 1751649130, + 1751755561, + 1753049109, + 1753550036, + 1754434872, + 1754579720, + 1754612424, + 1754644293, + 1754647068, + 1754647353, + 1754751622, + 1754794646, + 1754835516, + 1754860061, + 1754860396, + 1754860401, + 1754899031, + 1754907227, + 1754958648, + 1756155098, + 1756219733, + 1756302628, + 1756426572, + 1756471625, + 1756710661, + 1756762256, + 1756836998, + 1756889417, + 1757421892, + 1757942610, + 1759379608, + 1767725700, + 1771569964, + 1772032615, + 1776114564, + 1780975314, + 1782518297, + 1784643703, + 1786622296, + 1786775671, + 1786851500, + 1787365531, + 1788254870, + 1790814502, + 1791070327, + 1797886599, + 1803561214, + 1804036350, + 1804069019, + 1804235064, + 1804978712, + 1805715716, + 1814558026, + 1814656326, + 1814986837, + 1816144023, + 1817175115, + 1817177246, + 1820637455, + 1820928104, + 1821958888, + 1823574314, + 1823829083, + 1823975206, + 1824081655, + 1824377064, + 1825677514, + 1853862084, + 1854302364, + 1854464212, + 1854474395, + 1854497003, + 1864698185, + 1865910347, + 1867448617, + 1867620412, + 1872034503, + 1873590471, + 1874261045, + 1874698443, + 1875753052, + 1884079398, + 1884246821, + 1884295780, + 1889569526, + 1890996553, + 1891098437, + 1891186903, + 1894552650, + 1898428101, + 1902640276, + 1903659239, + 1905541832, + 1905672729, + 1905902311, + 1906408598, + 1906421049, + 1907660596, + 1908195085, + 1909438149, + 1910328970, + 1910441770, + 1910487243, + 1910507338, + 1910572893, + 1915146282, + 1915341049, + 1916210285, + 1916278099, + 1916337499, + 1917327080, + 1917953597, + 1921061206, + 1921894426, + 1922354008, + 1922384686, + 1922413290, + 1922413307, + 1922470745, + 1922531929, + 1922567078, + 1922607670, + 1922632396, + 1922665174, + 1922671417, + 1922679386, + 1922679610, + 1923088386, + 1924443742, + 1924462384, + 1924570799, + 1924585254, + 1924738716, + 1932870919, + 1932986153, + 1933145837, + 1933508940, + 1934917372, + 1935099626, + 1937336473, + 1939976792, + 1941286708, + 1941435445, + 1941440197, + 1941550652, + 1943317364, + 1965512429, + 1966384692, + 1966442279, + 1971855414, + 1972196486, + 1972744939, + 1972750880, + 1972904518, + 1972904785, + 1972909592, + 1972962123, + 1972980466, + 1974849131, + 1982254612, + 1983157559, + 1983290011, + 1983398182, + 1983432389, + 1984430082, + 1987422362, + 1988784439, + 1989522022, + 1990107683, + 1991220282, + 1991625270, + 1993343287, + 2000096287, + 2000160071, + 2000752725, + 2001527900, + 2001634458, + 2001669449, + 2001710298, + 2001732764, + 2001826027, + 2001898809, + 2004846654, + 2005342360, + 2006459190, + 2006824246, + 2007021895, + 2007064819, + 2008401563, + 2009041198, + 2009061450, + 2009071951, + 2009141482, + 2009434924, + 2010542150, + 2015950026, + 2016787611, + 2016910397, + 2018908874, + 2023011418, + 2023342821, + 2024647008, + 2024794274, + 2026893641, + 2034765641, + 2060474743, + 2065694722, + 2066762276, + 2075005220, + 2081947650, + 2083520514, + 2091784484, + 2093791506, + 2093791510, + 50917059, + 52489043, + 53537523, + 56685811, + 57210387, + 59830867, + 60817409, + 68157441, + 71827457, + 808872090, + 878182402, + 884998146, + 892862466, + 900202498, + 902299650, + 928514050, + 1038063816, + 1680095865, + 1680159327, + 1680165421, + 1680165437, + 1680165533, + 1680165692, + 1680181996, + 1680198203, + 1680229115, + 1680231247, + 1680282148, + 1680315086, + 1680343801, + 1680345965, + 1680368221, + 1680413393, + 1680437801, + 1680452349, + 1681174213, + 1681733672, + 1681879063, + 1681969220, + 1682587945, + 1684319541, + 1685902598, + 1687164232, + 1687620127, + 1687751377, + 1689130184, + 1689788441, + 1691091102, + 1691293817, + 1692933184, + 1699185409, + 1704526375, + 1714763319, + 1716303957, + 1721305962, + 1723309623, + 1723336528, + 1723645710, + 1724197420, + 1731048742, + 1733874289, + 1734182982, + 1739561208, + 1739927860, + 1740119884, + 1741535501, + 1747295467, + 1747309881, + 1747446838, + 1747479606, + 1747800157, + 1747906667, + 1748021284, }; } diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/CoalescingTreeBuilder.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/CoalescingTreeBuilder.java index 01d76d700..3d87422aa 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/CoalescingTreeBuilder.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/CoalescingTreeBuilder.java @@ -22,10 +22,10 @@ package nu.validator.htmlparser.impl; -import nu.validator.htmlparser.annotation.NoLength; - import org.xml.sax.SAXException; +import nu.validator.htmlparser.annotation.NoLength; + /** * A common superclass for tree builders that coalesce their text nodes. * @@ -48,13 +48,6 @@ public abstract class CoalescingTreeBuilder<T> extends TreeBuilder<T> { appendCharacters(parent, new String(buf, start, length)); } - /** - * @see nu.validator.htmlparser.impl.TreeBuilder#appendIsindexPrompt(java.lang.Object) - */ - @Override protected void appendIsindexPrompt(T parent) throws SAXException { - appendCharacters(parent, "This is a searchable index. Enter search keywords: "); - } - protected abstract void appendCharacters(T parent, String text) throws SAXException; /** diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java index ee0493318..4e1acea50 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2016 Mozilla Foundation + * Copyright (c) 2008-2017 Mozilla Foundation * Copyright (c) 2018-2020 Moonchild Productions * Copyright (c) 2020 Binary Outcast * @@ -24,12 +24,26 @@ package nu.validator.htmlparser.impl; -import java.util.Arrays; +// uncomment to regenerate self +//import java.io.BufferedReader; +//import java.io.File; +//import java.io.FileInputStream; +//import java.io.IOException; +//import java.io.InputStreamReader; +//import java.util.Arrays; +//import java.util.Collections; +//import java.util.HashMap; +//import java.util.LinkedList; +//import java.util.List; +//import java.util.Map; +//import java.util.Map.Entry; +//import java.util.regex.Matcher; +//import java.util.regex.Pattern; import nu.validator.htmlparser.annotation.Inline; import nu.validator.htmlparser.annotation.Local; import nu.validator.htmlparser.annotation.NoLength; -import nu.validator.htmlparser.annotation.Virtual; +import nu.validator.htmlparser.annotation.Unsigned; import nu.validator.htmlparser.common.Interner; public final class ElementName @@ -43,14 +57,14 @@ public final class ElementName public static final int GROUP_MASK = 127; /** - * Indicates that the element is not a pre-interned element. Forbidden - * on preinterned elements. + * Indicates that the element is not a pre-interned element. Forbidden on + * preinterned elements. */ - public static final int CUSTOM = (1 << 30); + public static final int NOT_INTERNED = (1 << 30); /** - * Indicates that the element is in the "special" category. This bit - * should not be pre-set on MathML or SVG specials--only on HTML specials. + * Indicates that the element is in the "special" category. This bit should + * not be pre-set on MathML or SVG specials--only on HTML specials. */ public static final int SPECIAL = (1 << 29); @@ -61,8 +75,8 @@ public final class ElementName public static final int FOSTER_PARENTING = (1 << 28); /** - * The element is scoping. This bit should be pre-set on elements - * that are scoping as HTML. + * The element is scoping. This bit should be pre-set on elements that are + * scoping as HTML. */ public static final int SCOPING = (1 << 27); @@ -86,99 +100,277 @@ public final class ElementName */ public static final int OPTIONAL_END_TAG = (1 << 23); - public static final ElementName NULL_ELEMENT_NAME = new ElementName(null); + private @Local String name; - public final @Local String name; + private @Local String camelCaseName; - public final @Local String camelCaseName; + // CPPONLY: private @HtmlCreator Object htmlCreator; + + // CPPONLY: private @SvgCreator Object svgCreator; /** * The lowest 7 bits are the dispatch group. The high bits are flags. */ public final int flags; + @Inline public @Local String getName() { + return name; + } + + @Inline public @Local String getCamelCaseName() { + return camelCaseName; + } + + // CPPONLY: @Inline public @HtmlCreator Object getHtmlCreator() { + // CPPONLY: return htmlCreator; + // CPPONLY: } + + // CPPONLY: @Inline public @SvgCreator Object getSvgCreator() { + // CPPONLY: return svgCreator; + // CPPONLY: } + @Inline public int getFlags() { return flags; } - public int getGroup() { - return flags & GROUP_MASK; + @Inline public int getGroup() { + return flags & ElementName.GROUP_MASK; + } + + @Inline public boolean isInterned() { + return (flags & ElementName.NOT_INTERNED) == 0; } - public boolean isCustom() { - return (flags & CUSTOM) != 0; + @Inline static int levelOrderBinarySearch(int[] data, int key) { + int n = data.length; + int i = 0; + + while (i < n) { + int val = data[i]; + if (val < key) { + i = 2 * i + 2; + } else if (val > key) { + i = 2 * i + 1; + } else { + return i; + } + } + + return -1; } - static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) { - int hash = ElementName.bufToHash(buf, length); - int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash); + @Inline static ElementName elementNameByBuffer(@NoLength char[] buf, + int offset, int length, Interner interner) { + @Unsigned int hash = ElementName.bufToHash(buf, length); + int[] hashes; + hashes = ElementName.ELEMENT_HASHES; + int index = levelOrderBinarySearch(hashes, hash); if (index < 0) { - return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length, interner)); + return null; } else { ElementName elementName = ElementName.ELEMENT_NAMES[index]; @Local String name = elementName.name; if (!Portability.localEqualsBuffer(name, buf, offset, length)) { - return new ElementName(Portability.newLocalNameFromBuffer(buf, - offset, length, interner)); + return null; } return elementName; } } /** - * This method has to return a unique integer for each well-known + * This method has to return a unique positive integer for each well-known * lower-cased element name. * * @param buf * @param len * @return */ - private static int bufToHash(@NoLength char[] buf, int len) { - int hash = len; - hash <<= 5; - hash += buf[0] - 0x60; - int j = len; - for (int i = 0; i < 4 && j > 0; i++) { - j--; - hash <<= 5; - hash += buf[j] - 0x60; + @Inline private static @Unsigned int bufToHash(@NoLength char[] buf, + int length) { + @Unsigned int len = length; + @Unsigned int first = buf[0]; + first <<= 19; + @Unsigned int second = 1 << 23; + @Unsigned int third = 0; + @Unsigned int fourth = 0; + @Unsigned int fifth = 0; + if (length >= 4) { + second = buf[length - 4]; + second <<= 4; + third = buf[length - 3]; + third <<= 9; + fourth = buf[length - 2]; + fourth <<= 14; + fifth = buf[length - 1]; + fifth <<= 24; + } else if (length == 3) { + second = buf[1]; + second <<= 4; + third = buf[2]; + third <<= 9; + } else if (length == 2) { + second = buf[1]; + second <<= 24; } - return hash; + return len + first + second + third + fourth + fifth; } private ElementName(@Local String name, @Local String camelCaseName, + // CPPONLY: @HtmlCreator Object htmlCreator, @SvgCreator Object + // CPPONLY: svgCreator, int flags) { this.name = name; this.camelCaseName = camelCaseName; + // CPPONLY: this.htmlCreator = htmlCreator; + // CPPONLY: this.svgCreator = svgCreator; this.flags = flags; } - protected ElementName(@Local String name) { - this.name = name; - this.camelCaseName = name; - this.flags = TreeBuilder.OTHER | CUSTOM; + public ElementName() { + this.name = null; + this.camelCaseName = null; + // CPPONLY: this.htmlCreator = NS_NewHTMLUnknownElement; + // CPPONLY: this.svgCreator = NS_NewSVGUnknownElement; + this.flags = TreeBuilder.OTHER | NOT_INTERNED; } - @Virtual void release() { - // No-op in Java. - // Implement as delete this in subclass. - // Be sure to release the local name + public void destructor() { + // The translator adds refcount debug code here. } - @SuppressWarnings("unused") @Virtual private void destructor() { + @Inline public void setNameForNonInterned(@Local String name + // CPPONLY: , boolean custom + ) { + // No need to worry about refcounting the local name, because in the + // C++ case the scoped atom table remembers its own atoms. + this.name = name; + this.camelCaseName = name; + // CPPONLY: if (custom) { + // CPPONLY: this.htmlCreator = NS_NewCustomElement; + // CPPONLY: } else { + // CPPONLY: this.htmlCreator = NS_NewHTMLUnknownElement; + // CPPONLY: } + // The assertion below relies on TreeBuilder.OTHER being zero! + // TreeBuilder.OTHER isn't referenced here, because it would create + // a circular C++ header dependency given that this method is inlined. + assert this.flags == ElementName.NOT_INTERNED; } - @Virtual public ElementName cloneElementName(Interner interner) { - return this; - } + // CPPONLY: @Inline public boolean isCustom() { + // CPPONLY: return this.htmlCreator == NS_NewCustomElement; + // CPPONLY: } + + // CPPONLY: public static final ElementName ISINDEX = new ElementName( + // CPPONLY: "isindex", "isindex", + // CPPONLY: NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, + // CPPONLY: TreeBuilder.ISINDEX | SPECIAL); + // [NOCPP[ + public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.OTHER); + // ]NOCPP] + + public static final ElementName ANNOTATION_XML = new ElementName( + "annotation-xml", "annotation-xml", + // CPPONLY: NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, + TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML); // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate +// private static final Pattern HTML_TAG_DEF = Pattern.compile( +// "^HTML_TAG\\(([^,]+),\\s*([^,]+),\\s*[^,]+\\).*$"); +// +// private static final Pattern HTML_HTMLELEMENT_TAG_DEF = Pattern.compile( +// "^HTML_HTMLELEMENT_TAG\\(([^\\)]+)\\).*$"); +// +// private static final Pattern SVG_TAG_DEF = Pattern.compile( +// "^SVG_(?:FROM_PARSER_)?TAG\\(([^,]+),\\s*([^\\)]+)\\).*$"); +// +// private static final Map<String, String> htmlMap = new HashMap<String, String>(); +// +// private static final Map<String, String> svgMap = new HashMap<String, String>(); +// +// private static void ingestHtmlTags(File htmlList) throws IOException { +// // This doesn't need to be efficient, so let's make it easy to write. +// BufferedReader htmlReader = new BufferedReader( +// new InputStreamReader(new FileInputStream(htmlList), "utf-8")); +// try { +// String line; +// while ((line = htmlReader.readLine()) != null) { +// if (!line.startsWith("HTML_")) { +// continue; +// } +// if (line.startsWith("HTML_OTHER")) { +// continue; +// } +// Matcher m = HTML_TAG_DEF.matcher(line); +// if (m.matches()) { +// String iface = m.group(2); +// if ("Unknown".equals(iface)) { +// continue; +// } +// htmlMap.put(m.group(1), "NS_NewHTML" + iface + "Element"); +// } else { +// m = HTML_HTMLELEMENT_TAG_DEF.matcher(line); +// if (!m.matches()) { +// throw new RuntimeException( +// "Malformed HTML element definition: " + line); +// } +// htmlMap.put(m.group(1), "NS_NewHTMLElement"); +// } +// } +// } finally { +// htmlReader.close(); +// } +// } +// +// private static void ingestSvgTags(File svgList) throws IOException { +// // This doesn't need to be efficient, so let's make it easy to write. +// BufferedReader svgReader = new BufferedReader( +// new InputStreamReader(new FileInputStream(svgList), "utf-8")); +// try { +// String line; +// while ((line = svgReader.readLine()) != null) { +// if (!line.startsWith("SVG_")) { +// continue; +// } +// Matcher m = SVG_TAG_DEF.matcher(line); +// if (!m.matches()) { +// throw new RuntimeException( +// "Malformed SVG element definition: " + line); +// } +// String name = m.group(1); +// if ("svgSwitch".equals(name)) { +// name = "switch"; +// } +// svgMap.put(name, "NS_NewSVG" + m.group(2) + "Element"); +// } +// } finally { +// svgReader.close(); +// } +// } +// +// private static String htmlCreator(String name) { +// String creator = htmlMap.remove(name); +// if (creator != null) { +// return creator; +// } +// return "NS_NewHTMLUnknownElement"; +// } +// +// private static String svgCreator(String name) { +// String creator = svgMap.remove(name); +// if (creator != null) { +// return creator; +// } +// return "NS_NewSVGUnknownElement"; +// } +// // /** // * @see java.lang.Object#toString() // */ // @Override public String toString() { -// return "(\"" + name + "\", \"" + camelCaseName + "\", " + decomposedFlags() + ")"; +// return "(\"" + name + "\", \"" + camelCaseName + "\", \n// CPP" +// + "ONLY: " + htmlCreator(name) + ",\n// CPP" + "ONLY: " +// + svgCreator(camelCaseName) + ", \n" + decomposedFlags() + ")"; // } // // private String decomposedFlags() { @@ -210,6 +402,11 @@ public final class ElementName // for (int i = 0; i < name.length(); i++) { // char c = name.charAt(i); // if (c == '-') { +// // if (!"annotation-xml".equals(name)) { +// // throw new RuntimeException( +// // "Non-annotation-xml element name with hyphen: " +// // + name); +// // } // buf[i] = '_'; // } else if (c >= '0' && c <= '9') { // buf[i] = c; @@ -378,1237 +575,2506 @@ public final class ElementName // return null; // } // +// private static void fillLevelOrderArray(List<ElementName> sorted, int depth, +// int rootIdx, ElementName[] levelOrder) { +// if (rootIdx >= levelOrder.length) { +// return; +// } +// +// if (depth > 0) { +// fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 1, levelOrder); +// } +// +// if (!sorted.isEmpty()) { +// levelOrder[rootIdx] = sorted.remove(0); +// } +// +// if (depth > 0) { +// fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 2, levelOrder); +// } +// } +// // /** // * Regenerate self // * -// * @param args +// * The args should be the paths to m-c files +// * parser/htmlparser/nsHTMLTagList.h and dom/svg/SVGTagList.h. // */ // public static void main(String[] args) { +// File htmlList = new File(args[0]); +// File svgList = new File(args[1]); +// try { +// ingestHtmlTags(htmlList); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// try { +// ingestSvgTags(svgList); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// // Arrays.sort(ELEMENT_NAMES); -// for (int i = 1; i < ELEMENT_NAMES.length; i++) { -// if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) { -// System.err.println("Hash collision: " + ELEMENT_NAMES[i].name -// + ", " + ELEMENT_NAMES[i - 1].name); +// for (int i = 0; i < ELEMENT_NAMES.length; i++) { +// int hash = ELEMENT_NAMES[i].hash(); +// if (hash < 0) { +// System.err.println("Negative hash: " + ELEMENT_NAMES[i].name); // return; // } +// for (int j = i + 1; j < ELEMENT_NAMES.length; j++) { +// if (hash == ELEMENT_NAMES[j].hash()) { +// System.err.println( +// "Hash collision: " + ELEMENT_NAMES[i].name + ", " +// + ELEMENT_NAMES[j].name); +// return; +// } +// } // } // for (int i = 0; i < ELEMENT_NAMES.length; i++) { // ElementName el = ELEMENT_NAMES[i]; -// System.out.println("public static final ElementName " -// + el.constName() + " = new ElementName" + el.toString() -// + ";"); +// if ("isindex".equals(el.name)) { +// continue; +// } +// System.out.println( +// "public static final ElementName " + el.constName() +// + " = new ElementName" + el.toString() + ";"); // } -// System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {"); -// for (int i = 0; i < ELEMENT_NAMES.length; i++) { -// ElementName el = ELEMENT_NAMES[i]; +// +// LinkedList<ElementName> sortedNames = new LinkedList<ElementName>(); +// Collections.addAll(sortedNames, ELEMENT_NAMES); +// ElementName[] levelOrder = new ElementName[ELEMENT_NAMES.length]; +// int bstDepth = (int) Math.ceil( +// Math.log(ELEMENT_NAMES.length) / Math.log(2)); +// fillLevelOrderArray(sortedNames, bstDepth, 0, levelOrder); +// +// System.out.println( +// "private final static @NoLength ElementName[] ELEMENT_NAMES = {"); +// for (int i = 0; i < levelOrder.length; i++) { +// ElementName el = levelOrder[i]; // System.out.println(el.constName() + ","); // } // System.out.println("};"); // System.out.println("private final static int[] ELEMENT_HASHES = {"); -// for (int i = 0; i < ELEMENT_NAMES.length; i++) { -// ElementName el = ELEMENT_NAMES[i]; +// for (int i = 0; i < levelOrder.length; i++) { +// ElementName el = levelOrder[i]; // System.out.println(Integer.toString(el.hash()) + ","); // } // System.out.println("};"); +// +// for (Entry<String, String> entry : htmlMap.entrySet()) { +// System.err.println("Missing HTML element: " + entry.getKey()); +// } +// for (Entry<String, String> entry : svgMap.entrySet()) { +// System.err.println("Missing SVG element: " + entry.getKey()); +// } // } + // START GENERATED CODE - public static final ElementName A = new ElementName("a", "a", TreeBuilder.A); - public static final ElementName B = new ElementName("b", "b", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER); - public static final ElementName I = new ElementName("i", "i", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName P = new ElementName("p", "p", TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER); - public static final ElementName S = new ElementName("s", "s", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName U = new ElementName("u", "u", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR | SPECIAL); - public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER); - public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER); - public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); - public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName EM = new ElementName("em", "em", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER); - public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER); - public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); - public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); - public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); - public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); - public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); - public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); - public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER); - public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR | SPECIAL); - public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER); - public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER); - public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER); - public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); - public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); - public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); - public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); - public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); - public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER); - public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER); - public static final ElementName RB = new ElementName("rb", "rb", TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG); - public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); - public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); - public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); - public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); - public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); - public static final ElementName TT = new ElementName("tt", "tt", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); - public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER); - public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER); - public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER); - public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER); - public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER); - public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL | SPECIAL); - public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER); - public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER); - public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER); - public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER); - public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); - public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER); - public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER); - public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER); - public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.IMG | SPECIAL); - public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER); - public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER); - public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER); - public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER); - public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER); - public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER); - public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER); - public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER); - public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER); - public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER); - public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER); - public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER); - public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER); - public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING | SPECIAL); - public static final ElementName RTC = new ElementName("rtc", "rtc", TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG); - public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER); - public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER); - public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG); - public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER); - public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER); - public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER); - public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER); - public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER); - public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER); - public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_WBR | SPECIAL); - public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP | SPECIAL); - public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER); - public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_WBR | SPECIAL); - public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER); - public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE | SPECIAL); - public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER); - public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER); - public static final ElementName CODE = new ElementName("code", "code", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER); - public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER); - public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER); - public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER); - public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER); - public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); - public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER); - public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER); - public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM | SPECIAL); - public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT); - public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER); - public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG); - public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER); - public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); - public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER); - public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META | SPECIAL); - public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER); - public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER); - public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH); - public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER); - public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER); - public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER); - public static final ElementName MAIN = new ElementName("main", "main", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER); - public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); - public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER); - public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER); - public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR); - public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER); - public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER); - public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER); - public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER); - public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER); - public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER); - public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER); - public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER); - public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER); - public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER); - public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER); - public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER); - public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER); - public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER); - public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER); - public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER); - public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER); - public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER); - public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER); - public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER); - public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER); - public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED | SPECIAL); - public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME | SPECIAL); - public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER); - public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER); - public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER); - public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER); - public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE); - public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER); - public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT | SPECIAL); - public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OTHER); - public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER); - public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER); - public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER); - public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER); - public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER); - public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER); - public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER); - public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER); - public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); - public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER); - public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER); - public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); - public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER); - public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER); - public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE | SPECIAL); - public static final ElementName SMALL = new ElementName("small", "small", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); - public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE | SPECIAL | FOSTER_PARENTING | SCOPING); - public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE | SPECIAL | SCOPING_AS_SVG); - public static final ElementName TRACK = new ElementName("track", "track", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); - public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER); - public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER); - public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); - public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); - public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER); - public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER); - public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER); - public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER); - public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER); - public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER); - public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER); - public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER); - public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); - public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER); - public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER); - public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON | SPECIAL); - public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER); - public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); - public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER); - public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER); - public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER); - public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER); - public static final ElementName DIALOG = new ElementName("dialog", "dialog", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER); - public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER); - public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER); - public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER); - public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER); - public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME | SPECIAL); - public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN); - public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER); - public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER); - public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER); - public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER); - public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER); - public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK); - public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER); - public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER); - public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER); - public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER); - public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER); - public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER); - public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION | OPTIONAL_END_TAG); - public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT | SPECIAL | SCOPING); - public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT); - public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER); - public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK); - public static final ElementName STRIKE = new ElementName("strike", "strike", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER); - public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER); - public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT | SPECIAL); - public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER); - public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT | SPECIAL); - public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER); - public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER); - public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER); - public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER); - public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER); - public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER); - public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER); - public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER); - public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER); - public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER); - public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); - public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER); - public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER); - public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER); - public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION | SPECIAL | SCOPING); - public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER); - public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER); - public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER); - public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER); - public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER); - public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER); - public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER); - public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER); - public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER); - public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER); - public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER); - public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER); - public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER); - public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER); - public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX | SPECIAL); - public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER); - public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING | SPECIAL); - public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER); - public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER); - public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); - public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER); - public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER); - public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED | SPECIAL); - public static final ElementName PICTURE = new ElementName("picture", "picture", TreeBuilder.OTHER); - public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER); - public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER); - public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER); - public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER); - public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER); - public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER); - public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER); - public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); - public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER); - public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER); - public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG); - public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER); - public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER); - public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET | SPECIAL); - public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET | SPECIAL); - public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER); - public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER); - public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER); - public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER); - public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER); - public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER); - public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER); - public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER); - public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER); - public static final ElementName MENUITEM = new ElementName("menuitem", "menuitem", TreeBuilder.MENUITEM); - public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER); - public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES | SPECIAL); - public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT | SPECIAL); - public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP | OPTIONAL_END_TAG); - public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER); - public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER); - public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER); - public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER); - public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER); - public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER); - public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA | SPECIAL); - public static final ElementName TEMPLATE = new ElementName("template", "template", TreeBuilder.TEMPLATE | SPECIAL | SCOPING); - public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER); - public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER); - public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER); - public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER); - public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER); - public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER); - public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER); - public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER); - public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER); - public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER); - public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER); - public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER); - public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER); - public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER); - public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER); - public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT | SPECIAL); - public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER); - public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER); - public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER); - public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER); - public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); - public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER); - public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER); - public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER); - public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); - public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER); - public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK); - public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER); - public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER); - public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER); - public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER); - public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER); - public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER); - public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER); - public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER); - public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER); - public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER); - public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER); - public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER); - public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER); - public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER); - public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER); - public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER); - public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER); - public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER); - public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER); - public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER); - public static final ElementName FEDROPSHADOW = new ElementName("fedropshadow", "feDropShadow", TreeBuilder.OTHER); - public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER); - public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER); - public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER); - public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER); - public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER); - public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER); - public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); - public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER); - public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER); - public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER); - public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER); - public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER); - public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML); - public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER); - public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER); - public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER); - public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER); - public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER); - public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER); - public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER); - public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER); - public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER); - public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER); - public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER); - public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER); - public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER); - public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER); - public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER); - public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER); + public static final ElementName AND = new ElementName("and", "and", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARG = new ElementName("arg", "arg", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ABS = new ElementName("abs", "abs", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName BIG = new ElementName("big", "big", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName BDO = new ElementName("bdo", "bdo", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CSC = new ElementName("csc", "csc", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName COL = new ElementName("col", "col", + // CPPONLY: NS_NewHTMLTableColElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.COL | SPECIAL); + public static final ElementName COS = new ElementName("cos", "cos", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName COT = new ElementName("cot", "cot", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DEL = new ElementName("del", "del", + // CPPONLY: NS_NewHTMLModElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DFN = new ElementName("dfn", "dfn", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DIR = new ElementName("dir", "dir", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName DIV = new ElementName("div", "div", + // CPPONLY: NS_NewHTMLDivElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + public static final ElementName EXP = new ElementName("exp", "exp", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName GCD = new ElementName("gcd", "gcd", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName GEQ = new ElementName("geq", "geq", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName IMG = new ElementName("img", "img", + // CPPONLY: NS_NewHTMLImageElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.IMG | SPECIAL); + public static final ElementName INS = new ElementName("ins", "ins", + // CPPONLY: NS_NewHTMLModElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName INT = new ElementName("int", "int", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName KBD = new ElementName("kbd", "kbd", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LOG = new ElementName("log", "log", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LCM = new ElementName("lcm", "lcm", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LEQ = new ElementName("leq", "leq", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MTD = new ElementName("mtd", "mtd", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MIN = new ElementName("min", "min", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MAP = new ElementName("map", "map", + // CPPONLY: NS_NewHTMLMapElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MTR = new ElementName("mtr", "mtr", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MAX = new ElementName("max", "max", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NEQ = new ElementName("neq", "neq", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOT = new ElementName("not", "not", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NAV = new ElementName("nav", "nav", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName PRE = new ElementName("pre", "pre", + // CPPONLY: NS_NewHTMLPreElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.PRE_OR_LISTING | SPECIAL); + public static final ElementName A = new ElementName("a", "a", + // CPPONLY: NS_NewHTMLAnchorElement, + // CPPONLY: NS_NewSVGAElement, + TreeBuilder.A); + public static final ElementName B = new ElementName("b", "b", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName RTC = new ElementName("rtc", "rtc", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG); + public static final ElementName REM = new ElementName("rem", "rem", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SUB = new ElementName("sub", "sub", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + public static final ElementName SEC = new ElementName("sec", "sec", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SVG = new ElementName("svg", "svg", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGSVGElement, + TreeBuilder.SVG); + public static final ElementName SUM = new ElementName("sum", "sum", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SIN = new ElementName("sin", "sin", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SEP = new ElementName("sep", "sep", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SUP = new ElementName("sup", "sup", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + public static final ElementName SET = new ElementName("set", "set", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGSetElement, + TreeBuilder.OTHER); + public static final ElementName TAN = new ElementName("tan", "tan", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName USE = new ElementName("use", "use", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUseElement, + TreeBuilder.OTHER); + public static final ElementName VAR = new ElementName("var", "var", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + public static final ElementName G = new ElementName("g", "g", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGGElement, + TreeBuilder.OTHER); + public static final ElementName WBR = new ElementName("wbr", "wbr", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.AREA_OR_WBR | SPECIAL); + public static final ElementName XMP = new ElementName("xmp", "xmp", + // CPPONLY: NS_NewHTMLPreElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.XMP | SPECIAL); + public static final ElementName XOR = new ElementName("xor", "xor", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName I = new ElementName("i", "i", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName P = new ElementName("p", "p", + // CPPONLY: NS_NewHTMLParagraphElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName Q = new ElementName("q", "q", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName S = new ElementName("s", "s", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName U = new ElementName("u", "u", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName H1 = new ElementName("h1", "h1", + // CPPONLY: NS_NewHTMLHeadingElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + public static final ElementName H2 = new ElementName("h2", "h2", + // CPPONLY: NS_NewHTMLHeadingElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + public static final ElementName H3 = new ElementName("h3", "h3", + // CPPONLY: NS_NewHTMLHeadingElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + public static final ElementName H4 = new ElementName("h4", "h4", + // CPPONLY: NS_NewHTMLHeadingElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + public static final ElementName H5 = new ElementName("h5", "h5", + // CPPONLY: NS_NewHTMLHeadingElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + public static final ElementName H6 = new ElementName("h6", "h6", + // CPPONLY: NS_NewHTMLHeadingElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + public static final ElementName AREA = new ElementName("area", "area", + // CPPONLY: NS_NewHTMLAreaElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.AREA_OR_WBR | SPECIAL); + public static final ElementName DATA = new ElementName("data", "data", + // CPPONLY: NS_NewHTMLDataElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEFuncAElement, + TreeBuilder.OTHER); + public static final ElementName LAMBDA = new ElementName("lambda", "lambda", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName METADATA = new ElementName("metadata", "metadata", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGMetadataElement, + TreeBuilder.OTHER); + public static final ElementName META = new ElementName("meta", "meta", + // CPPONLY: NS_NewHTMLMetaElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.META | SPECIAL); + public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", + // CPPONLY: NS_NewHTMLTextAreaElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TEXTAREA | SPECIAL); + public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEFuncBElement, + TreeBuilder.OTHER); + public static final ElementName MSUB = new ElementName("msub", "msub", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RB = new ElementName("rb", "rb", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG); + public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DESC = new ElementName("desc", "desc", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGDescElement, + TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); + public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DD = new ElementName("dd", "dd", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); + public static final ElementName CARD = new ElementName("card", "card", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DISCARD = new ElementName("discard", "discard", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName EMBED = new ElementName("embed", "embed", + // CPPONLY: NS_NewHTMLSharedObjectElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.EMBED | SPECIAL); + public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEBlendElement, + TreeBuilder.OTHER); + public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEFloodElement, + TreeBuilder.OTHER); + public static final ElementName GRAD = new ElementName("grad", "grad", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName HEAD = new ElementName("head", "head", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.HEAD | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName LEGEND = new ElementName("legend", "legend", + // CPPONLY: NS_NewHTMLLegendElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOEMBED = new ElementName("noembed", "noembed", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.NOEMBED | SPECIAL); + public static final ElementName TD = new ElementName("td", "td", + // CPPONLY: NS_NewHTMLTableCellElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); + public static final ElementName THEAD = new ElementName("thead", "thead", + // CPPONLY: NS_NewHTMLTableSectionElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + public static final ElementName ASIDE = new ElementName("aside", "aside", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName ARTICLE = new ElementName("article", "article", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName ANIMATE = new ElementName("animate", "animate", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGAnimateElement, + TreeBuilder.OTHER); + public static final ElementName BASE = new ElementName("base", "base", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.BASE | SPECIAL); + public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + public static final ElementName CODE = new ElementName("code", "code", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName CIRCLE = new ElementName("circle", "circle", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGCircleElement, + TreeBuilder.OTHER); + public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName COMPOSE = new ElementName("compose", "compose", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CITE = new ElementName("cite", "cite", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DIVIDE = new ElementName("divide", "divide", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DEGREE = new ElementName("degree", "degree", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DECLARE = new ElementName("declare", "declare", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGEllipseElement, + TreeBuilder.OTHER); + public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFETurbulenceElement, + TreeBuilder.OTHER); + public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEMergeNodeElement, + TreeBuilder.OTHER); + public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEImageElement, + TreeBuilder.OTHER); + public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEMergeElement, + TreeBuilder.OTHER); + public static final ElementName FETILE = new ElementName("fetile", "feTile", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFETileElement, + TreeBuilder.OTHER); + public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FRAME = new ElementName("frame", "frame", + // CPPONLY: NS_NewHTMLFrameElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.FRAME | SPECIAL); + public static final ElementName FIGURE = new ElementName("figure", "figure", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName FALSE = new ElementName("false", "false", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFECompositeElement, + TreeBuilder.OTHER); + public static final ElementName IMAGE = new ElementName("image", "image", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGImageElement, + TreeBuilder.IMAGE); + public static final ElementName IFRAME = new ElementName("iframe", "iframe", + // CPPONLY: NS_NewHTMLIFrameElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.IFRAME | SPECIAL); + public static final ElementName INVERSE = new ElementName("inverse", "inverse", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LINE = new ElementName("line", "line", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGLineElement, + TreeBuilder.OTHER); + public static final ElementName LOGBASE = new ElementName("logbase", "logbase", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MSPACE = new ElementName("mspace", "mspace", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MODE = new ElementName("mode", "mode", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MARQUEE = new ElementName("marquee", "marquee", + // CPPONLY: NS_NewHTMLDivElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); + public static final ElementName MTABLE = new ElementName("mtable", "mtable", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NONE = new ElementName("none", "none", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PIECE = new ElementName("piece", "piece", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName POLYLINE = new ElementName("polyline", "polyline", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGPolylineElement, + TreeBuilder.OTHER); + public static final ElementName PICTURE = new ElementName("picture", "picture", + // CPPONLY: NS_NewHTMLPictureElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RULE = new ElementName("rule", "rule", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SOURCE = new ElementName("source", "source", + // CPPONLY: NS_NewHTMLSourceElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.PARAM_OR_SOURCE_OR_TRACK); + public static final ElementName STRIKE = new ElementName("strike", "strike", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName STYLE = new ElementName("style", "style", + // CPPONLY: NS_NewHTMLStyleElement, + // CPPONLY: NS_NewSVGStyleElement, + TreeBuilder.STYLE | SPECIAL); + public static final ElementName TABLE = new ElementName("table", "table", + // CPPONLY: NS_NewHTMLTableElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TABLE | SPECIAL | FOSTER_PARENTING | SCOPING); + public static final ElementName TITLE = new ElementName("title", "title", + // CPPONLY: NS_NewHTMLTitleElement, + // CPPONLY: NS_NewSVGTitleElement, + TreeBuilder.TITLE | SPECIAL | SCOPING_AS_SVG); + public static final ElementName TIME = new ElementName("time", "time", + // CPPONLY: NS_NewHTMLTimeElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TEMPLATE = new ElementName("template", "template", + // CPPONLY: NS_NewHTMLTemplateElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TEMPLATE | SPECIAL | SCOPING); + public static final ElementName TRUE = new ElementName("true", "true", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName VARIANCE = new ElementName("variance", "variance", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DIFF = new ElementName("diff", "diff", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FACTOROF = new ElementName("factorof", "factorof", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TREF = new ElementName("tref", "tref", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CEILING = new ElementName("ceiling", "ceiling", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DIALOG = new ElementName("dialog", "dialog", + // CPPONLY: NS_NewHTMLDialogElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEFuncGElement, + TreeBuilder.OTHER); + public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEDiffuseLightingElement, + TreeBuilder.OTHER); + public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFESpecularLightingElement, + TreeBuilder.OTHER); + public static final ElementName LISTING = new ElementName("listing", "listing", + // CPPONLY: NS_NewHTMLPreElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.PRE_OR_LISTING | SPECIAL); + public static final ElementName STRONG = new ElementName("strong", "strong", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CSCH = new ElementName("csch", "csch", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName COSH = new ElementName("cosh", "cosh", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGClipPathElement, + TreeBuilder.OTHER); + public static final ElementName COTH = new ElementName("coth", "coth", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName GLYPH = new ElementName("glyph", "glyph", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MGLYPH_OR_MALIGNMARK); + public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MATH = new ElementName("math", "math", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MATH); + public static final ElementName MPATH = new ElementName("mpath", "mpath", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGMPathElement, + TreeBuilder.OTHER); + public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PATH = new ElementName("path", "path", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGPathElement, + TreeBuilder.OTHER); + public static final ElementName TH = new ElementName("th", "th", + // CPPONLY: NS_NewHTMLTableCellElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); + public static final ElementName SECH = new ElementName("sech", "sech", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SWITCH = new ElementName("switch", "switch", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGSwitchElement, + TreeBuilder.OTHER); + public static final ElementName SINH = new ElementName("sinh", "sinh", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TANH = new ElementName("tanh", "tanh", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGTextPathElement, + TreeBuilder.OTHER); + public static final ElementName CI = new ElementName("ci", "ci", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LI = new ElementName("li", "li", + // CPPONLY: NS_NewHTMLLIElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MI = new ElementName("mi", "mi", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + public static final ElementName PI = new ElementName("pi", "pi", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LINK = new ElementName("link", "link", + // CPPONLY: NS_NewHTMLLinkElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); + public static final ElementName MARK = new ElementName("mark", "mark", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MGLYPH_OR_MALIGNMARK); + public static final ElementName MASK = new ElementName("mask", "mask", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGMaskElement, + TreeBuilder.OTHER); + public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TRACK = new ElementName("track", "track", + // CPPONLY: NS_NewHTMLTrackElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); + public static final ElementName DL = new ElementName("dl", "dl", + // CPPONLY: NS_NewHTMLSharedListElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); + public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CURL = new ElementName("curl", "curl", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FORALL = new ElementName("forall", "forall", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName HTML = new ElementName("html", "html", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG); + public static final ElementName INTERVAL = new ElementName("interval", "interval", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName OL = new ElementName("ol", "ol", + // CPPONLY: NS_NewHTMLSharedListElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); + public static final ElementName LABEL = new ElementName("label", "label", + // CPPONLY: NS_NewHTMLLabelElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName UL = new ElementName("ul", "ul", + // CPPONLY: NS_NewHTMLSharedListElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); + public static final ElementName REAL = new ElementName("real", "real", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SMALL = new ElementName("small", "small", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName SYMBOL = new ElementName("symbol", "symbol", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGSymbolElement, + TreeBuilder.OTHER); + public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGAnimateTransformElement, + TreeBuilder.OTHER); + public static final ElementName ACRONYM = new ElementName("acronym", "acronym", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName EM = new ElementName("em", "em", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName FORM = new ElementName("form", "form", + // CPPONLY: NS_NewHTMLFormElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.FORM | SPECIAL); + public static final ElementName MENUITEM = new ElementName("menuitem", "menuitem", + // CPPONLY: NS_NewHTMLMenuItemElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MENUITEM); + public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PARAM = new ElementName("param", "param", + // CPPONLY: NS_NewHTMLSharedElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); + public static final ElementName CN = new ElementName("cn", "cn", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCTAN = new ElementName("arctan", "arctan", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ANIMATION = new ElementName("animation", "animation", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGAnimateMotionElement, + TreeBuilder.OTHER); + public static final ElementName BUTTON = new ElementName("button", "button", + // CPPONLY: NS_NewHTMLButtonElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.BUTTON | SPECIAL); + public static final ElementName FN = new ElementName("fn", "fn", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CAPTION = new ElementName("caption", "caption", + // CPPONLY: NS_NewHTMLTableCaptionElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.CAPTION | SPECIAL | SCOPING); + public static final ElementName CONDITION = new ElementName("condition", "condition", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DOMAIN = new ElementName("domain", "domain", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName IN = new ElementName("in", "in", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName HKERN = new ElementName("hkern", "hkern", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LN = new ElementName("ln", "ln", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MN = new ElementName("mn", "mn", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + public static final ElementName KEYGEN = new ElementName("keygen", "keygen", + // CPPONLY: NS_NewHTMLSpanElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.KEYGEN); + public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MEAN = new ElementName("mean", "mean", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MEDIAN = new ElementName("median", "median", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MAIN = new ElementName("main", "main", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName MACTION = new ElementName("maction", "maction", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOTIN = new ElementName("notin", "notin", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName OPTION = new ElementName("option", "option", + // CPPONLY: NS_NewHTMLOptionElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OPTION | OPTIONAL_END_TAG); + public static final ElementName POLYGON = new ElementName("polygon", "polygon", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGPolygonElement, + TreeBuilder.OTHER); + public static final ElementName PATTERN = new ElementName("pattern", "pattern", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGPatternElement, + TreeBuilder.OTHER); + public static final ElementName RELN = new ElementName("reln", "reln", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SPAN = new ElementName("span", "span", + // CPPONLY: NS_NewHTMLSpanElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + public static final ElementName SECTION = new ElementName("section", "section", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName TSPAN = new ElementName("tspan", "tspan", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGTSpanElement, + TreeBuilder.OTHER); + public static final ElementName UNION = new ElementName("union", "union", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName VKERN = new ElementName("vkern", "vkern", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName AUDIO = new ElementName("audio", "audio", + // CPPONLY: NS_NewHTMLAudioElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MO = new ElementName("mo", "mo", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName VIDEO = new ElementName("video", "video", + // CPPONLY: NS_NewHTMLVideoElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", + // CPPONLY: NS_NewHTMLTableColElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEDisplacementMapElement, + TreeBuilder.OTHER); + public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MSUP = new ElementName("msup", "msup", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RP = new ElementName("rp", "rp", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); + public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", + // CPPONLY: NS_NewHTMLOptGroupElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OPTGROUP | OPTIONAL_END_TAG); + public static final ElementName SAMP = new ElementName("samp", "samp", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName STOP = new ElementName("stop", "stop", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGStopElement, + TreeBuilder.OTHER); + public static final ElementName EQ = new ElementName("eq", "eq", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName BR = new ElementName("br", "br", + // CPPONLY: NS_NewHTMLBRElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.BR | SPECIAL); + public static final ElementName ABBR = new ElementName("abbr", "abbr", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName BVAR = new ElementName("bvar", "bvar", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CENTER = new ElementName("center", "center", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + public static final ElementName CURSOR = new ElementName("cursor", "cursor", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName HR = new ElementName("hr", "hr", + // CPPONLY: NS_NewHTMLHRElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.HR | SPECIAL); + public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEFuncRElement, + TreeBuilder.OTHER); + public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEComponentTransferElement, + TreeBuilder.OTHER); + public static final ElementName FILTER = new ElementName("filter", "filter", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFilterElement, + TreeBuilder.OTHER); + public static final ElementName FOOTER = new ElementName("footer", "footer", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName FLOOR = new ElementName("floor", "floor", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEGaussianBlurElement, + TreeBuilder.OTHER); + public static final ElementName HEADER = new ElementName("header", "header", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName HANDLER = new ElementName("handler", "handler", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName OR = new ElementName("or", "or", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LISTENER = new ElementName("listener", "listener", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MUNDER = new ElementName("munder", "munder", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MARKER = new ElementName("marker", "marker", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGMarkerElement, + TreeBuilder.OTHER); + public static final ElementName METER = new ElementName("meter", "meter", + // CPPONLY: NS_NewHTMLMeterElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MOVER = new ElementName("mover", "mover", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MERROR = new ElementName("merror", "merror", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOBR = new ElementName("nobr", "nobr", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.NOBR); + public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName POWER = new ElementName("power", "power", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TR = new ElementName("tr", "tr", + // CPPONLY: NS_NewHTMLTableRowElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SELECTOR = new ElementName("selector", "selector", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName VECTOR = new ElementName("vector", "vector", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ARCCOS = new ElementName("arccos", "arccos", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName ADDRESS = new ElementName("address", "address", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName CANVAS = new ElementName("canvas", "canvas", + // CPPONLY: NS_NewHTMLCanvasElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DEFS = new ElementName("defs", "defs", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGDefsElement, + TreeBuilder.OTHER); + public static final ElementName DETAILS = new ElementName("details", "details", + // CPPONLY: NS_NewHTMLDetailsElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName EXISTS = new ElementName("exists", "exists", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName IMPLIES = new ElementName("implies", "implies", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName INTEGERS = new ElementName("integers", "integers", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MS = new ElementName("ms", "ms", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MINUS = new ElementName("minus", "minus", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.NOFRAMES | SPECIAL); + public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PRIMES = new ElementName("primes", "primes", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PROGRESS = new ElementName("progress", "progress", + // CPPONLY: NS_NewHTMLProgressElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PLUS = new ElementName("plus", "plus", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName REALS = new ElementName("reals", "reals", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RATIONALS = new ElementName("rationals", "rationals", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName TIMES = new ElementName("times", "times", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DT = new ElementName("dt", "dt", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName APPLET = new ElementName("applet", "applet", + // CPPONLY: NS_NewHTMLSharedObjectElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); + public static final ElementName ARCCOT = new ElementName("arccot", "arccot", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName BASEFONT = new ElementName("basefont", "basefont", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); + public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName CONTENT = new ElementName("content", "content", + // CPPONLY: NS_NewHTMLContentElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName GT = new ElementName("gt", "gt", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName DATALIST = new ElementName("datalist", "datalist", + // CPPONLY: NS_NewHTMLDataListElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGForeignObjectElement, + TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); + public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", + // CPPONLY: NS_NewHTMLFieldSetElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.FIELDSET | SPECIAL); + public static final ElementName FRAMESET = new ElementName("frameset", "frameset", + // CPPONLY: NS_NewHTMLFrameSetElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.FRAMESET | SPECIAL); + public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEOffsetElement, + TreeBuilder.OTHER); + public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFESpotLightElement, + TreeBuilder.OTHER); + public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEPointLightElement, + TreeBuilder.OTHER); + public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEDistantLightElement, + TreeBuilder.OTHER); + public static final ElementName FONT = new ElementName("font", "font", + // CPPONLY: NS_NewHTMLFontElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.FONT); + public static final ElementName LT = new ElementName("lt", "lt", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName INTERSECT = new ElementName("intersect", "intersect", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName IDENT = new ElementName("ident", "ident", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName INPUT = new ElementName("input", "input", + // CPPONLY: NS_NewHTMLInputElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.INPUT | SPECIAL); + public static final ElementName LIMIT = new ElementName("limit", "limit", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGLinearGradientElement, + TreeBuilder.OTHER); + public static final ElementName LIST = new ElementName("list", "list", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MOMENT = new ElementName("moment", "moment", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MROOT = new ElementName("mroot", "mroot", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MTEXT = new ElementName("mtext", "mtext", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.NOSCRIPT | SPECIAL); + public static final ElementName NEST = new ElementName("nest", "nest", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RT = new ElementName("rt", "rt", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); + public static final ElementName OBJECT = new ElementName("object", "object", + // CPPONLY: NS_NewHTMLObjectElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OBJECT | SPECIAL | SCOPING); + public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName OUTPUT = new ElementName("output", "output", + // CPPONLY: NS_NewHTMLOutputElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OUTPUT); + public static final ElementName PRODUCT = new ElementName("product", "product", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.PLAINTEXT | SPECIAL); + public static final ElementName TT = new ElementName("tt", "tt", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RECT = new ElementName("rect", "rect", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGRectElement, + TreeBuilder.OTHER); + public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGRadialGradientElement, + TreeBuilder.OTHER); + public static final ElementName ROOT = new ElementName("root", "root", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SELECT = new ElementName("select", "select", + // CPPONLY: NS_NewHTMLSelectElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.SELECT | SPECIAL); + public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SUBSET = new ElementName("subset", "subset", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SCRIPT = new ElementName("script", "script", + // CPPONLY: NS_NewHTMLScriptElement, + // CPPONLY: NS_NewSVGScriptElement, + TreeBuilder.SCRIPT | SPECIAL); + public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", + // CPPONLY: NS_NewHTMLTableSectionElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + public static final ElementName TEXT = new ElementName("text", "text", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGTextElement, + TreeBuilder.OTHER); + public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MENU = new ElementName("menu", "menu", + // CPPONLY: NS_NewHTMLMenuElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + public static final ElementName SDEV = new ElementName("sdev", "sdev", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FEDROPSHADOW = new ElementName("fedropshadow", "feDropShadow", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEDropShadowElement, + TreeBuilder.OTHER); + public static final ElementName MROW = new ElementName("mrow", "mrow", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName SHADOW = new ElementName("shadow", "shadow", + // CPPONLY: NS_NewHTMLShadowElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName VIEW = new ElementName("view", "view", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGViewElement, + TreeBuilder.OTHER); + public static final ElementName APPROX = new ElementName("approx", "approx", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEColorMatrixElement, + TreeBuilder.OTHER); + public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEConvolveMatrixElement, + TreeBuilder.OTHER); + public static final ElementName MATRIX = new ElementName("matrix", "matrix", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName APPLY = new ElementName("apply", "apply", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName BODY = new ElementName("body", "body", + // CPPONLY: NS_NewHTMLBodyElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG); + public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGFEMorphologyElement, + TreeBuilder.OTHER); + public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName INFINITY = new ElementName("infinity", "infinity", + // CPPONLY: NS_NewHTMLUnknownElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.OTHER); + public static final ElementName RUBY = new ElementName("ruby", "ruby", + // CPPONLY: NS_NewHTMLElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + public static final ElementName SUMMARY = new ElementName("summary", "summary", + // CPPONLY: NS_NewHTMLSummaryElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + public static final ElementName TBODY = new ElementName("tbody", "tbody", + // CPPONLY: NS_NewHTMLTableSectionElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); private final static @NoLength ElementName[] ELEMENT_NAMES = { - A, - B, + VKERN, + LOGBASE, + FIELDSET, + DATA, + LI, + COMPLEXES, + QUOTIENT, + PRE, + ARTICLE, + DIALOG, + ARCTAN, + LISTENER, + RATIONALS, + MROOT, + MATRIXROW, + GEQ, G, + DD, + ELLIPSE, + STYLE, + COTH, + INTERVAL, + MN, + BR, + POWER, + MMULTISCRIPTS, + CONTENT, + INTERSECT, + RT, + TFOOT, + APPLY, + COS, + MTD, + SUM, + U, + MSUB, + HEAD, + CONJUGATE, + FRAME, + OTHERWISE, + ALTGLYPHDEF, + ARCTANH, + TH, + TBREAK, + ANIMATETRANSFORM, + CAPTION, + OPTION, + MALIGNGROUP, + FECOMPONENTTRANSFER, + MERROR, + VECTOR, + IMPLIES, + PRIMES, + APPLET, + EMPTYSET, + FEPOINTLIGHT, + LOWLIMIT, + NOTSUBSET, + PRODUCT, + SELECT, + MENU, + FECOLORMATRIX, + INFINITY, + BIG, + DIR, + KBD, + MAX, + REM, + SET, I, - P, + H4, + METADATA, + DEFINITION_SRC, + EMBED, + NOEMBED, + CODE, + DEGREE, + FEIMAGE, + IMAGE, + MTABLE, + PIECEWISE, + TRANSPOSE, + PARTIALDIFF, + LISTING, + ARCCOTH, + MATH, + TANH, + LINK, + CURL, + REAL, + MENUITEM, + ANIMATEMOTION, + IN, + MEDIAN, + SPAN, + VIDEO, + OPTGROUP, + CENTER, + FEGAUSSIANBLUR, + MOVER, + NOBR, + SOLIDCOLOR, + ADDRESS, + DETAILS, + MS, + NOFRAMES, + PLUS, + TIMES, + BASEFONT, + DETERMINANT, + FONT_FACE_FORMAT, + FEOFFSET, + FONT, + INPUT, + LIST, + MOMENTABOUT, + NOSCRIPT, + OUTERPRODUCT, + PLAINTEXT, + RADIALGRADIENT, + SUBSET, + UPLIMIT, + FEDROPSHADOW, + VIEW, + ISINDEX, + FEMORPHOLOGY, + SUMMARY, + ARG, + CSC, + DEL, + EXP, + INS, + LCM, + MAP, + NOT, + B, + SEC, + SEP, + USE, + XMP, Q, - S, - U, - BR, + H2, + H6, + FEFUNCA, + TEXTAREA, + ARCSEC, + FONT_FACE_SRC, + CARD, + FEFLOOD, + MFENCED, + THEAD, + BASE, + COLOR_PROFILE, + DIVERGENCE, + DATATEMPLATE, + FETURBULENCE, + FETILE, + FALSE, + INVERSE, + MODE, + MENCLOSE, + POLYLINE, + SOURCE, + TITLE, + TRUE, + FACTOROF, + TREF, + FEDIFFUSELIGHTING, + ARCSECH, + ALTGLYPH, + COSH, + MGLYPH, + PREFETCH, + SWITCH, CI, - CN, - DD, + MI, + MALIGNMARK, DL, - DT, + FORALL, + LABEL, + SYMBOL, EM, - EQ, + PARAM, + ANIMATION, FN, - H1, - H2, - H3, - H4, - H5, - H6, - GT, - HR, - IN, - LI, - LN, - LT, - MI, - MN, + DOMAIN, + HKERN, + LAPLACIAN, + MACTION, + PATTERN, + TSPAN, MO, - MS, - OL, - OR, - PI, - RB, - RP, - RT, - TD, - TH, + FEDISPLACEMENTMAP, + MSUP, + STOP, + ANIMATECOLOR, + HR, + FOOTER, + HANDLER, + MARKER, + MUNDEROVER, + MLABELEDTR, + NOTANUMBER, TR, + SELECTOR, + ARCCOS, + CANVAS, + DEFS, + EXISTS, + INTEGERS, + MPRESCRIPTS, + MINUS, + NATURALNUMBERS, + PROGRESS, + REALS, + SEMANTICS, + DT, + ARCCOT, + CARTESIANPRODUCT, + GT, + DATALIST, + EQUIVALENT, + FOREIGNOBJECT, + FRAMESET, + FESPOTLIGHT, + FEDISTANTLIGHT, + LT, + IDENT, + LIMIT, + LINEARGRADIENT, + MOMENT, + MSQRT, + MTEXT, + NOTPRSUBSET, + NEST, + OBJECT, + OUTPUT, + PRSUBSET, TT, - UL, + RECT, + ROOT, + SCALARPRODUCT, + SCRIPT, + TEXT, + VECTORPRODUCT, + SDEV, + MROW, + SHADOW, + APPROX, + FECONVOLVEMATRIX, + MATRIX, + BODY, + IMAGINARY, + RUBY, + TBODY, AND, - ARG, ABS, - BIG, BDO, - CSC, COL, - COS, COT, - DEL, DFN, - DIR, DIV, - EXP, GCD, - GEQ, IMG, - INS, INT, - KBD, LOG, - LCM, LEQ, - MTD, MIN, - MAP, MTR, - MAX, NEQ, - NOT, NAV, - PRE, + A, RTC, - REM, SUB, - SEC, SVG, - SUM, SIN, - SEP, SUP, - SET, TAN, - USE, VAR, WBR, - XMP, XOR, + P, + S, + H1, + H3, + H5, AREA, - ABBR, - BASE, - BVAR, - BODY, - CARD, - CODE, - CITE, - CSCH, - COSH, - COTH, - CURL, + EULERGAMMA, + LAMBDA, + META, + FEFUNCB, + RB, + ARCCSC, DESC, - DIFF, - DEFS, - FORM, - FONT, + MFRAC, + BGSOUND, + DISCARD, + FEBLEND, GRAD, - HEAD, - HTML, - LINE, - LINK, - LIST, - META, - MSUB, - MODE, - MATH, - MARK, - MASK, - MEAN, - MAIN, - MSUP, - MENU, - MROW, - NONE, - NOBR, - NEST, - PATH, - PLUS, - RULE, - REAL, - RELN, - RECT, - ROOT, - RUBY, - SECH, - SINH, - SPAN, - SAMP, - STOP, - SDEV, - TIME, - TRUE, - TREF, - TANH, - TEXT, - VIEW, + LEGEND, + MPADDED, + TD, ASIDE, - AUDIO, - APPLY, - EMBED, - FRAME, - FALSE, - FLOOR, - GLYPH, - HKERN, - IMAGE, - IDENT, - INPUT, - LABEL, - LIMIT, - MFRAC, - MPATH, - METER, - MOVER, - MINUS, - MROOT, - MSQRT, - MTEXT, - NOTIN, - PIECE, - PARAM, - POWER, - REALS, - STYLE, - SMALL, - THEAD, - TABLE, - TITLE, - TRACK, - TSPAN, - TIMES, - TFOOT, - TBODY, - UNION, - VKERN, - VIDEO, - ARCSEC, - ARCCSC, - ARCTAN, - ARCSIN, - ARCCOS, - APPLET, - ARCCOT, - APPROX, - BUTTON, + ANIMATE, + BLOCKQUOTE, CIRCLE, - CENTER, - CURSOR, - CANVAS, + COMPOSE, + CITE, DIVIDE, - DEGREE, - DIALOG, - DOMAIN, - EXISTS, - FETILE, + DECLARE, + EXPONENTIALE, + FONT_FACE, + FEMERGENODE, + FEMERGE, + FONT_FACE_NAME, FIGURE, - FORALL, - FILTER, - FOOTER, - HGROUP, - HEADER, + FECOMPOSITE, IFRAME, - KEYGEN, - LAMBDA, - LEGEND, + LINE, MSPACE, - MTABLE, + MARQUEE, MSTYLE, - MGLYPH, - MEDIAN, - MUNDER, - MARKER, - MERROR, - MOMENT, - MATRIX, - OPTION, - OBJECT, - OUTPUT, - PRIMES, - SOURCE, + NONE, + PIECE, + PICTURE, + RULE, STRIKE, + TABLE, + TIME, + TEMPLATE, + VARIANCE, + DIFF, + GLYPHREF, + SETDIFF, + CEILING, + FEFUNCG, + FESPECULARLIGHTING, STRONG, - SWITCH, - SYMBOL, - SELECT, - SUBSET, - SCRIPT, - TBREAK, - VECTOR, - ARTICLE, - ANIMATE, - ARCSECH, ARCCSCH, - ARCTANH, ARCSINH, ARCCOSH, - ARCCOTH, - ACRONYM, - ADDRESS, - BGSOUND, - COMPOSE, - CEILING, - CSYMBOL, - CAPTION, - DISCARD, - DECLARE, - DETAILS, - ELLIPSE, - FEFUNCA, - FEFUNCB, - FEBLEND, - FEFLOOD, - FEIMAGE, - FEMERGE, - FEFUNCG, - FEFUNCR, - HANDLER, - INVERSE, - IMPLIES, - ISINDEX, - LOGBASE, - LISTING, - MFENCED, - MPADDED, - MARQUEE, - MACTION, - MSUBSUP, - NOEMBED, - PICTURE, - POLYGON, - PATTERN, - PRODUCT, - SETDIFF, - SECTION, - SUMMARY, - TENDSTO, - UPLIMIT, - ALTGLYPH, - BASEFONT, + CSCH, CLIPPATH, - CODOMAIN, - COLGROUP, - EMPTYSET, - FACTOROF, - FIELDSET, - FRAMESET, - FEOFFSET, - GLYPHREF, - INTERVAL, - INTEGERS, - INFINITY, - LISTENER, - LOWLIMIT, - METADATA, - MENCLOSE, - MENUITEM, - MPHANTOM, - NOFRAMES, - NOSCRIPT, - OPTGROUP, - POLYLINE, - PREFETCH, - PROGRESS, - PRSUBSET, - QUOTIENT, - SELECTOR, - TEXTAREA, - TEMPLATE, + GLYPH, + MISSING_GLYPH, + MPATH, + PATH, + SECH, + SINH, TEXTPATH, - VARIANCE, - ANIMATION, - CONJUGATE, - CONDITION, - COMPLEXES, - FONT_FACE, - FACTORIAL, - INTERSECT, - IMAGINARY, - LAPLACIAN, - MATRIXROW, - NOTSUBSET, - OTHERWISE, - PIECEWISE, - PLAINTEXT, - RATIONALS, - SEMANTICS, - TRANSPOSE, - ANNOTATION, - BLOCKQUOTE, - DIVERGENCE, - EULERGAMMA, - EQUIVALENT, - FIGCAPTION, + FONT_FACE_URI, IMAGINARYI, - MALIGNMARK, - MUNDEROVER, - MLABELEDTR, - NOTANUMBER, - SOLIDCOLOR, - ALTGLYPHDEF, - DETERMINANT, - FEMERGENODE, - FECOMPOSITE, - FESPOTLIGHT, - MALIGNGROUP, - MPRESCRIPTS, - MOMENTABOUT, - NOTPRSUBSET, - PARTIALDIFF, + PI, + MARK, + MASK, + TRACK, + CSYMBOL, + FACTORIAL, + HTML, + OL, + UL, + SMALL, ALTGLYPHITEM, - ANIMATECOLOR, - DATATEMPLATE, - EXPONENTIALE, - FETURBULENCE, - FEPOINTLIGHT, - FEDROPSHADOW, - FEMORPHOLOGY, - OUTERPRODUCT, - ANIMATEMOTION, - COLOR_PROFILE, - FONT_FACE_SRC, - FONT_FACE_URI, - FOREIGNOBJECT, - FECOLORMATRIX, - MISSING_GLYPH, - MMULTISCRIPTS, - SCALARPRODUCT, - VECTORPRODUCT, - ANNOTATION_XML, - DEFINITION_SRC, - FONT_FACE_NAME, - FEGAUSSIANBLUR, - FEDISTANTLIGHT, - LINEARGRADIENT, - NATURALNUMBERS, - RADIALGRADIENT, - ANIMATETRANSFORM, - CARTESIANPRODUCT, - FONT_FACE_FORMAT, - FECONVOLVEMATRIX, - FEDIFFUSELIGHTING, - FEDISPLACEMENTMAP, - FESPECULARLIGHTING, + ACRONYM, + FORM, + MPHANTOM, + CN, + ARCSIN, + ANNOTATION, + BUTTON, + CODOMAIN, + CONDITION, DOMAINOFAPPLICATION, - FECOMPONENTTRANSFER, + FIGCAPTION, + LN, + KEYGEN, + MEAN, + MAIN, + NOTIN, + POLYGON, + RELN, + SECTION, + UNION, + AUDIO, + TENDSTO, + COLGROUP, + HGROUP, + MSUBSUP, + RP, + SAMP, + EQ, + ABBR, + BVAR, + CURSOR, + FEFUNCR, + FILTER, + FLOOR, + HEADER, + OR, + MUNDER, + METER, }; private final static int[] ELEMENT_HASHES = { - 1057, - 1090, - 1255, - 1321, - 1552, - 1585, - 1651, - 1717, - 68162, - 68899, - 69059, - 69764, - 70020, - 70276, - 71077, - 71205, - 72134, - 72232, - 72264, - 72296, - 72328, - 72360, - 72392, - 73351, - 74312, - 75209, - 78124, - 78284, - 78476, - 79149, - 79309, - 79341, - 79469, - 81295, - 81487, - 82224, - 84050, - 84498, - 84626, - 86164, - 86292, - 86612, - 86676, - 87445, - 3183041, - 3186241, - 3198017, - 3218722, - 3226754, - 3247715, - 3256803, - 3263971, - 3264995, - 3289252, - 3291332, - 3295524, - 3299620, - 3326725, - 3379303, - 3392679, - 3448233, - 3460553, - 3461577, - 3510347, - 3546604, - 3552364, - 3556524, - 3576461, - 3586349, - 3588141, - 3590797, - 3596333, - 3622062, - 3625454, - 3627054, - 3675728, - 3739282, - 3749042, - 3771059, - 3771571, - 3776211, - 3782323, - 3782963, - 3784883, - 3785395, - 3788979, - 3815476, - 3839605, - 3885110, - 3917911, - 3948984, - 3951096, - 135304769, - 135858241, - 136498210, - 136906434, - 137138658, - 137512995, - 137531875, - 137548067, - 137629283, - 137645539, - 137646563, - 137775779, - 138529956, - 138615076, - 139040932, - 140954086, - 141179366, - 141690439, - 142738600, - 143013512, - 146979116, - 147175724, - 147475756, - 147902637, - 147936877, - 148017645, - 148131885, - 148228141, - 148229165, - 148309165, - 148317229, - 148395629, - 148551853, - 148618829, - 149076462, - 149490158, - 149572782, - 151277616, - 151639440, - 153268914, - 153486514, - 153563314, - 153750706, - 153763314, - 153914034, - 154406067, - 154417459, - 154600979, - 154678323, - 154680979, - 154866835, - 155366708, - 155375188, - 155391572, - 155465780, - 155869364, - 158045494, - 168988979, - 169321621, - 169652752, - 173151309, - 174240818, - 174247297, - 174669292, - 175391532, - 176638123, - 177380397, - 177879204, - 177886734, - 180753473, - 181020073, - 181503558, - 181686320, - 181999237, - 181999311, - 182048201, - 182074866, - 182078003, - 182083764, - 182920847, - 184716457, - 184976961, - 185145071, - 187281445, - 187872052, - 188100653, - 188875944, - 188919873, - 188920457, - 189107250, - 189203987, - 189371817, - 189414886, - 189567458, - 190266670, - 191318187, - 191337609, - 202479203, - 202493027, - 202835587, - 202843747, - 203013219, - 203036048, - 203045987, - 203177552, - 203898516, - 204648562, - 205067918, - 205078130, - 205096654, - 205689142, - 205690439, - 205766017, - 205988909, - 207213161, - 207794484, - 207800999, - 208023602, - 208213644, - 208213647, - 210261490, - 210310273, - 210940978, - 213325049, - 213946445, - 214055079, - 215125040, - 215134273, - 215135028, - 215237420, - 215418148, - 215553166, - 215553394, - 215563858, - 215627949, - 215754324, - 217529652, - 217713834, - 217732628, - 218731945, - 221417045, - 221424946, - 221493746, - 221515401, - 221658189, - 221908140, - 221910626, - 221921586, - 222659762, - 225001091, - 236105833, - 236113965, - 236194995, - 236195427, - 236206132, - 236206387, - 236211683, - 236212707, - 236381647, - 236571826, - 237124271, - 238210544, - 238270764, - 238435405, - 238501172, - 239224867, - 239257644, - 239710497, - 240307721, - 241208789, - 241241557, - 241318060, - 241319404, - 241343533, - 241344069, - 241405397, - 241765845, - 243864964, - 244502085, - 244946220, - 245109902, - 247647266, - 247707956, - 248648814, - 248648836, - 248682161, - 248986932, - 249058914, - 249697357, - 251841204, - 252132601, - 252135604, - 252317348, - 255007012, - 255278388, - 255641645, - 256365156, - 257566121, - 269763372, - 271202790, - 271863856, - 272049197, - 272127474, - 274339449, - 274939471, - 275388004, - 275388005, - 275388006, - 275977800, - 278267602, - 278513831, - 278712622, - 281613765, - 281683369, - 282120228, - 282250732, - 282498697, - 282508942, - 283743649, - 283787570, - 284710386, - 285391148, - 285478533, - 285854898, - 285873762, - 286931113, - 288964227, - 289445441, - 289591340, - 289689648, - 291671489, - 303512884, - 305319975, - 305610036, - 305764101, - 308448294, - 308675890, - 312085683, - 312264750, - 315032867, - 316391000, - 317331042, - 317902135, - 318950711, - 319447220, - 321499182, - 322538804, - 323145200, - 337067316, - 337826293, - 339905989, - 340833697, - 341457068, - 342310196, - 345302593, - 349554733, - 349771471, - 349786245, - 350819405, - 356072847, - 370349192, - 373962798, - 375558638, - 375574835, - 376053993, - 383276530, - 383373833, - 383407586, - 384439906, - 386079012, - 404133513, - 404307343, - 407031852, - 408072233, - 409112005, - 409608425, - 409713793, - 409771500, - 419040932, - 437730612, - 439529766, - 442616365, - 442813037, - 443157674, - 443295316, - 450118444, - 450482697, - 456789668, - 459935396, - 471217869, - 474073645, - 476230702, - 476665218, - 476717289, - 483014825, - 485083298, - 489306281, - 538364390, - 540675748, - 543819186, - 543958612, - 576960820, - 577242548, - 610515252, - 642202932, - 644420819, + 1909280949, + 1753057319, + 2001349704, + 1681770564, + 1818230786, + 1983002201, + 2007257240, + 58773795, + 1747176599, + 1782357526, + 1897999926, + 1970938456, + 1990969577, + 2005181733, + 2055515017, + 54061139, + 62390273, + 1730150402, + 1749395095, + 1756625221, + 1798693940, + 1868641064, + 1902641154, + 1963982850, + 1973040373, + 1988486813, + 1999917383, + 2002882873, + 2005925890, + 2008851557, + 2082727685, + 51965171, + 57200451, + 60350803, + 69730305, + 1703292116, + 1733890180, + 1748355193, + 1749813541, + 1754634617, + 1763839627, + 1797540167, + 1805647874, + 1857622310, + 1881498736, + 1899272519, + 1905563974, + 1938171179, + 1967788867, + 1971628838, + 1976348214, + 1986140359, + 1989812374, + 1998724870, + 2000825752, + 2001392796, + 2004557976, + 2005543977, + 2006560839, + 2008125638, + 2021937364, + 2068523853, + 2087049448, + 51434643, + 52488851, + 56151587, + 57210387, + 59826259, + 60354131, + 63438849, + 926941186, + 1686489160, + 1715300574, + 1732381397, + 1737099991, + 1748100148, + 1748642422, + 1749715159, + 1751288021, + 1753467414, + 1755158905, + 1757259017, + 1771722827, + 1786534215, + 1797645367, + 1803929812, + 1807501636, + 1853642948, + 1865773108, + 1873350948, + 1887579800, + 1898223949, + 1900544002, + 1904285766, + 1907435316, + 1925844629, + 1939219752, + 1966223078, + 1968053806, + 1971466997, + 1971938532, + 1974771450, + 1982173479, + 1983633431, + 1986527234, + 1988763672, + 1990074116, + 1991909525, + 1999397992, + 2000439531, + 2001281328, + 2001349736, + 2001495140, + 2003183333, + 2004719812, + 2005279787, + 2005719336, + 2006036556, + 2006896969, + 2007781534, + 2008165414, + 2009276567, + 2051837468, + 2060065124, + 2070023911, + 2085266636, + 2092255447, + 50910499, + 51957043, + 52485715, + 53012355, + 55110883, + 56680499, + 57206291, + 57732851, + 59768833, + 60345427, + 60352083, + 61395251, + 62973651, + 67633153, + 893386754, + 960495618, + 1682547543, + 1689922072, + 1713515574, + 1716349149, + 1731545140, + 1733076167, + 1736576231, + 1740181637, + 1747814436, + 1748228205, + 1748607578, + 1748879564, + 1749656156, + 1749801286, + 1749917205, + 1751493207, + 1753343188, + 1753588936, + 1755076808, + 1756474198, + 1757146773, + 1757293380, + 1766632184, + 1773808452, + 1783388497, + 1797361975, + 1797585096, + 1798677556, + 1803876550, + 1805233752, + 1806806678, + 1813512194, + 1818755074, + 1854228698, + 1864368130, + 1867237670, + 1870268949, + 1874102998, + 1881669634, + 1889085973, + 1898223945, + 1898971138, + 1899694294, + 1901940917, + 1903761465, + 1904515399, + 1906135367, + 1907959605, + 1919418370, + 1934172497, + 1938173140, + 1941221172, + 1965334268, + 1967128578, + 1967795958, + 1968840263, + 1971461414, + 1971467002, + 1971703386, + 1971981018, + 1973420034, + 1974775352, + 1982106678, + 1982935782, + 1983533124, + 1984294038, + 1986351224, + 1988486811, + 1988502165, + 1988972590, + 1990037800, + 1990969429, + 1991350601, + 1998585858, + 1998883894, + 1999745104, + 2000158722, + 2000525512, + 2000965834, + 2001309869, + 2001349720, + 2001392795, + 2001392798, + 2002780162, + 2003062853, + 2004557973, + 2004635806, + 2005160150, + 2005231925, + 2005324101, + 2005543979, + 2005766372, + 2006028454, + 2006329158, + 2006592552, + 2006974466, + 2007601444, + 2007803172, + 2008133709, + 2008340774, + 2008994116, + 2009706573, + 2041712436, + 2055514836, + 2058653206, + 2066000646, + 2068523856, + 2072193862, + 2083120164, + 2087012585, + 2091479332, + 2092557349, + 50908899, + 50916387, + 51438659, + 51961587, + 51965683, + 52486755, + 52490899, + 54054451, + 55104723, + 55111395, + 56677619, + 56682579, + 57205395, + 57207619, + 57731155, + 57733651, + 59244545, + 59821379, + 60345171, + 60347747, + 60351123, + 60352339, + 60875283, + 61925907, + 62450211, + 62974707, + 67108865, + 68681729, + 876609538, + 910163970, + 943718402, + 1679960596, + 1682186266, + 1685703382, + 1686491348, + 1699324759, + 1703936002, + 1713736758, + 1715310660, + 1719741029, + 1730965751, + 1732069431, + 1733054663, + 1733372532, + 1736200310, + 1736576583, + 1738539010, + 1747048757, + 1747306711, + 1747838298, + 1748225318, + 1748346119, + 1748359220, + 1748621670, + 1748846791, + 1749272732, + 1749649513, + 1749673195, + 1749723735, + 1749813486, + 1749905526, + 1749932347, + 1751386406, + 1752979652, + 1753319686, + 1753362711, + 1753479494, + 1754031332, + 1754894485, + 1755148615, + 1756098852, + 1756600614, + 1757137429, + 1757157700, + 1757268168, + 1758044696, + 1765431364, + 1766992520, + 1773295687, + 1781815495, + 1783210839, + 1783388498, + 1790207270, + 1797368887, + 1797544247, + 1797628983, + 1798417460, + 1798686984, + 1800730821, + 1803876557, + 1803929861, + 1805502724, + 1806799156, + 1806981428, + 1807599880, + 1817013469, + 1818700314, + 1820327938, + 1854228692, + 1854245076, + 1857653029, + 1865714391, + 1867061545, + 1868312196, + 1870135298, + 1873281026, + 1874053333, + 1881288348, + 1881613047, + 1884120164, + 1887743720, + 1897398274, + 1898130486, + 1898223946, + 1898753862, + 1899170008, + 1899272521, + 1899796819, + 1900845386, + 1902116866, + 1903302038, + 1904283860, + 1904412884, + 1904946933, + 1906087319, + 1907085604, + 1907661127, + 1908709605, + 1914900309, + 1925049415, + 1932928296, + 1935549734, + 1938172967, + 1938817026, + 1941178676, + 1948778498, + 1965115924, + 1965634084, + 1966386470, + 1967760215, + 1967795910, + 1967957189, + 1968836118, + 1970798594, + 1971457766, + 1971465813, }; } diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java index f1749e0b3..437e83031 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java @@ -22,17 +22,17 @@ package nu.validator.htmlparser.impl; +import java.util.HashMap; + +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + import nu.validator.htmlparser.annotation.Inline; import nu.validator.htmlparser.annotation.NoLength; import nu.validator.htmlparser.common.TokenHandler; import nu.validator.htmlparser.common.TransitionHandler; import nu.validator.htmlparser.common.XmlViolationPolicy; -import java.util.HashMap; - -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - public class ErrorReportingTokenizer extends Tokenizer { /** @@ -388,7 +388,7 @@ public class ErrorReportingTokenizer extends Tokenizer { && ElementName.IFRAME != endTagExpectation) { err((stateSave == Tokenizer.DATA ? "CDATA" : "RCDATA") + " element \u201C" - + endTagExpectation.name + + endTagExpectation.getName() + "\u201D contained the string \u201C</\u201D, but it was not the start of the end tag. (HTML4-only error)"); } } diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/HtmlAttributes.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/HtmlAttributes.java index 45c9c6c3e..c24ae74f2 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/HtmlAttributes.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/HtmlAttributes.java @@ -25,7 +25,9 @@ package nu.validator.htmlparser.impl; -import nu.validator.htmlparser.annotation.Auto; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; + import nu.validator.htmlparser.annotation.IdType; import nu.validator.htmlparser.annotation.Local; import nu.validator.htmlparser.annotation.NsUri; @@ -34,9 +36,6 @@ import nu.validator.htmlparser.annotation.QName; import nu.validator.htmlparser.common.Interner; import nu.validator.htmlparser.common.XmlViolationPolicy; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; - /** * Be careful with this class. QName is the name in from HTML tokenization. * Otherwise, please refer to the interface doc. @@ -46,14 +45,10 @@ import org.xml.sax.SAXException; */ public final class HtmlAttributes implements Attributes { - // [NOCPP[ - private static final AttributeName[] EMPTY_ATTRIBUTENAMES = new AttributeName[0]; private static final String[] EMPTY_STRINGS = new String[0]; - // ]NOCPP] - public static final HtmlAttributes EMPTY_ATTRIBUTES = new HtmlAttributes( AttributeName.HTML); @@ -61,13 +56,9 @@ public final class HtmlAttributes implements Attributes { private int length; - private @Auto AttributeName[] names; - - private @Auto String[] values; // XXX perhaps make this @NoLength? - - // CPPONLY: private @Auto int[] lines; // XXX perhaps make this @NoLength? + private AttributeName[] names; - // [NOCPP[ + private String[] values; private String idValue; @@ -77,21 +68,15 @@ public final class HtmlAttributes implements Attributes { private String[] xmlnsValues; - // ]NOCPP] - public HtmlAttributes(int mode) { this.mode = mode; this.length = 0; /* * The length of 5 covers covers 98.3% of elements - * according to Hixie, but lets round to the next power of two for - * jemalloc. + * according to Hixie. */ - this.names = new AttributeName[8]; - this.values = new String[8]; - // CPPONLY: this.lines = new int[8]; - - // [NOCPP[ + this.names = new AttributeName[5]; + this.values = new String[5]; this.idValue = null; @@ -101,25 +86,6 @@ public final class HtmlAttributes implements Attributes { this.xmlnsValues = HtmlAttributes.EMPTY_STRINGS; - // ]NOCPP] - } - /* - public HtmlAttributes(HtmlAttributes other) { - this.mode = other.mode; - this.length = other.length; - this.names = new AttributeName[other.length]; - this.values = new String[other.length]; - // [NOCPP[ - this.idValue = other.idValue; - this.xmlnsLength = other.xmlnsLength; - this.xmlnsNames = new AttributeName[other.xmlnsLength]; - this.xmlnsValues = new String[other.xmlnsLength]; - // ]NOCPP] - } - */ - - void destructor() { - clear(0); } /** @@ -161,7 +127,6 @@ public final class HtmlAttributes implements Attributes { * @return the local name at index */ public @Local String getLocalNameNoBoundsCheck(int index) { - // CPPONLY: assert index < length && index >= 0: "Index out of bounds"; return names[index].getLocal(mode); } @@ -171,7 +136,6 @@ public final class HtmlAttributes implements Attributes { * @return the namespace URI at index */ public @NsUri String getURINoBoundsCheck(int index) { - // CPPONLY: assert index < length && index >= 0: "Index out of bounds"; return names[index].getUri(mode); } @@ -181,7 +145,6 @@ public final class HtmlAttributes implements Attributes { * @return the namespace prefix at index */ public @Prefix String getPrefixNoBoundsCheck(int index) { - // CPPONLY: assert index < length && index >= 0: "Index out of bounds"; return names[index].getPrefix(mode); } @@ -191,7 +154,6 @@ public final class HtmlAttributes implements Attributes { * @return the attribute value at index */ public String getValueNoBoundsCheck(int index) { - // CPPONLY: assert index < length && index >= 0: "Index out of bounds"; return values[index]; } @@ -201,21 +163,9 @@ public final class HtmlAttributes implements Attributes { * @return the attribute name at index */ public AttributeName getAttributeNameNoBoundsCheck(int index) { - // CPPONLY: assert index < length && index >= 0: "Index out of bounds"; return names[index]; } - // CPPONLY: /** - // CPPONLY: * Obtains a line number without bounds check. - // CPPONLY: * @param index a valid attribute index - // CPPONLY: * @return the line number at index or -1 if unknown - // CPPONLY: */ - // CPPONLY: public int getLineNoBoundsCheck(int index) { - // CPPONLY: assert index < length && index >= 0: "Index out of bounds"; - // CPPONLY: return lines[index]; - // CPPONLY: } - - // [NOCPP[ /** * Variant of <code>getQName(int index)</code> without bounds check. @@ -404,15 +354,9 @@ public final class HtmlAttributes implements Attributes { } } - // ]NOCPP] - void addAttribute(AttributeName name, String value - // [NOCPP[ , XmlViolationPolicy xmlnsPolicy - // ]NOCPP] - // CPPONLY: , int line ) throws SAXException { - // [NOCPP[ if (name == AttributeName.ID) { idValue = value; } @@ -441,8 +385,6 @@ public final class HtmlAttributes implements Attributes { } } - // ]NOCPP] - if (names.length == length) { int newLen = length << 1; // The first growth covers virtually // 100% of elements according to @@ -453,53 +395,25 @@ public final class HtmlAttributes implements Attributes { String[] newValues = new String[newLen]; System.arraycopy(values, 0, newValues, 0, values.length); values = newValues; - // CPPONLY: int[] newLines = new int[newLen]; - // CPPONLY: System.arraycopy(lines, 0, newLines, 0, lines.length); - // CPPONLY: lines = newLines; } names[length] = name; values[length] = value; - // CPPONLY: lines[length] = line; length++; } void clear(int m) { for (int i = 0; i < length; i++) { - names[i].release(); names[i] = null; - Portability.releaseString(values[i]); values[i] = null; } length = 0; mode = m; - // [NOCPP[ idValue = null; for (int i = 0; i < xmlnsLength; i++) { xmlnsNames[i] = null; xmlnsValues[i] = null; } xmlnsLength = 0; - // ]NOCPP] - } - - /** - * This is used in C++ to release special <code>isindex</code> - * attribute values whose ownership is not transferred. - */ - void releaseValue(int i) { - Portability.releaseString(values[i]); - } - - /** - * This is only used for <code>AttributeName</code> ownership transfer - * in the isindex case to avoid freeing custom names twice in C++. - */ - void clearWithoutReleasingContents() { - for (int i = 0; i < length; i++) { - names[i] = null; - values[i] = null; - } - length = 0; } boolean contains(AttributeName name) { @@ -508,13 +422,11 @@ public final class HtmlAttributes implements Attributes { return true; } } - // [NOCPP[ for (int i = 0; i < xmlnsLength; i++) { if (name.equalsAnother(xmlnsNames[i])) { return true; } } - // ]NOCPP] return false; } @@ -529,27 +441,20 @@ public final class HtmlAttributes implements Attributes { public HtmlAttributes cloneAttributes(Interner interner) throws SAXException { assert (length == 0 - // [NOCPP[ && xmlnsLength == 0 - // ]NOCPP] ) || mode == 0 || mode == 3; HtmlAttributes clone = new HtmlAttributes(0); for (int i = 0; i < length; i++) { - clone.addAttribute(names[i].cloneAttributeName(interner), - Portability.newStringFromString(values[i]) - // [NOCPP[ + clone.addAttribute(names[i], + values[i] , XmlViolationPolicy.ALLOW - // ]NOCPP] - // CPPONLY: , lines[i] ); } - // [NOCPP[ for (int i = 0; i < xmlnsLength; i++) { clone.addAttribute(xmlnsNames[i], xmlnsValues[i], XmlViolationPolicy.ALLOW); } - // ]NOCPP] return clone; // XXX!!! } @@ -568,9 +473,10 @@ public final class HtmlAttributes implements Attributes { for (int j = 0; j < otherLength; j++) { if (ownLocal == other.names[j].getLocal(AttributeName.HTML)) { found = true; - if (!Portability.stringEqualsString(values[i], other.values[j])) { + if (!values[i].equals(other.values[j])) { return false; } + break; } } if (!found) { @@ -579,9 +485,7 @@ public final class HtmlAttributes implements Attributes { } return true; } - - // [NOCPP[ - + void processNonNcNames(TreeBuilder<?> treeBuilder, XmlViolationPolicy namePolicy) throws SAXException { for (int i = 0; i < length; i++) { AttributeName attName = names[i]; @@ -613,8 +517,4 @@ public final class HtmlAttributes implements Attributes { } } } - - - // ]NOCPP] - } diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/StackNode.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/StackNode.java index b671bc903..5225145e0 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/StackNode.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/StackNode.java @@ -45,6 +45,11 @@ final class StackNode<T> { private int refcount = 1; + /* + * Only valid for formatting elements + */ + // CPPONLY: private @HtmlCreator Object htmlCreator; + // [NOCPP[ private final TaintableLocatorImpl locator; @@ -87,6 +92,10 @@ final class StackNode<T> { // ]NOCPP] + // CPPONLY: public @HtmlCreator Object getHtmlCreator() { + // CPPONLY: return htmlCreator; + // CPPONLY: } + /** * Constructor for copying. This doesn't take another <code>StackNode</code> * because in C++ the caller is reponsible for reobtaining the local names @@ -100,9 +109,10 @@ final class StackNode<T> { * @param attributes */ StackNode(int flags, @NsUri String ns, @Local String name, T node, - @Local String popName, HtmlAttributes attributes + @Local String popName, HtmlAttributes attributes, + // CPPONLY: @HtmlCreator Object htmlCreator // [NOCPP[ - , TaintableLocatorImpl locator + TaintableLocatorImpl locator // ]NOCPP] ) { this.flags = flags; @@ -112,6 +122,10 @@ final class StackNode<T> { this.node = node; this.attributes = attributes; this.refcount = 1; + /* + * Need to track creator for formatting elements when copying. + */ + // CPPONLY: this.htmlCreator = htmlCreator; // [NOCPP[ this.locator = locator; // ]NOCPP] @@ -129,13 +143,17 @@ final class StackNode<T> { // ]NOCPP] ) { this.flags = elementName.getFlags(); - this.name = elementName.name; - this.popName = elementName.name; + this.name = elementName.getName(); + this.popName = elementName.getName(); this.ns = "http://www.w3.org/1999/xhtml"; this.node = node; this.attributes = null; this.refcount = 1; - assert !elementName.isCustom() : "Don't use this constructor for custom elements."; + assert elementName.isInterned() : "Don't use this constructor for custom elements."; + /* + * Not used for formatting elements, so no need to track creator. + */ + // CPPONLY: this.htmlCreator = null; // [NOCPP[ this.locator = locator; // ]NOCPP] @@ -154,13 +172,18 @@ final class StackNode<T> { // ]NOCPP] ) { this.flags = elementName.getFlags(); - this.name = elementName.name; - this.popName = elementName.name; + this.name = elementName.getName(); + this.popName = elementName.getName(); this.ns = "http://www.w3.org/1999/xhtml"; this.node = node; this.attributes = attributes; this.refcount = 1; - assert !elementName.isCustom() : "Don't use this constructor for custom elements."; + assert elementName.isInterned() : "Don't use this constructor for custom elements."; + /* + * Need to track creator for formatting elements in order to be able + * to clone them. + */ + // CPPONLY: this.htmlCreator = elementName.getHtmlCreator(); // [NOCPP[ this.locator = locator; // ]NOCPP] @@ -179,12 +202,16 @@ final class StackNode<T> { // ]NOCPP] ) { this.flags = elementName.getFlags(); - this.name = elementName.name; + this.name = elementName.getName(); this.popName = popName; this.ns = "http://www.w3.org/1999/xhtml"; this.node = node; this.attributes = null; this.refcount = 1; + /* + * Not used for formatting elements, so no need to track creator. + */ + // CPPONLY: this.htmlCreator = null; // [NOCPP[ this.locator = locator; // ]NOCPP] @@ -206,12 +233,16 @@ final class StackNode<T> { // ]NOCPP] ) { this.flags = prepareSvgFlags(elementName.getFlags()); - this.name = elementName.name; + this.name = elementName.getName(); this.popName = popName; this.ns = "http://www.w3.org/2000/svg"; this.node = node; this.attributes = null; this.refcount = 1; + /* + * Not used for formatting elements, so no need to track creator. + */ + // CPPONLY: this.htmlCreator = null; // [NOCPP[ this.locator = locator; // ]NOCPP] @@ -233,12 +264,16 @@ final class StackNode<T> { ) { this.flags = prepareMathFlags(elementName.getFlags(), markAsIntegrationPoint); - this.name = elementName.name; + this.name = elementName.getName(); this.popName = popName; this.ns = "http://www.w3.org/1998/Math/MathML"; this.node = node; this.attributes = null; this.refcount = 1; + /* + * Not used for formatting elements, so no need to track creator. + */ + // CPPONLY: this.htmlCreator = null; // [NOCPP[ this.locator = locator; // ]NOCPP] diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/Tokenizer.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/Tokenizer.java index 125ef3266..996bd9ceb 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/Tokenizer.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/Tokenizer.java @@ -417,15 +417,31 @@ public class Tokenizer implements Locator { protected boolean endTag; /** - * The current tag token name. + * <code>true</code> iff the current element/attribute name contains + * a hyphen. + */ + private boolean containsHyphen; + + /** + * The current tag token name. One of + * 1) null, + * 2) non-owning reference to nonInternedTagName + * 3) non-owning reference to a pre-interned ElementName */ private ElementName tagName = null; /** + * The recycled ElementName instance for the non-pre-interned cases. + */ + private ElementName nonInternedTagName = null; + + /** * The current attribute name. */ protected AttributeName attributeName = null; + // CPPONLY: private AttributeName nonInternedAttributeName = null; + // [NOCPP[ /** @@ -519,8 +535,11 @@ public class Tokenizer implements Locator { this.charRefBuf = new char[32]; this.bmpChar = new char[1]; this.astralChar = new char[2]; + this.containsHyphen = false; this.tagName = null; + this.nonInternedTagName = new ElementName(); this.attributeName = null; + // CPPONLY: this.nonInternedAttributeName = new AttributeName(); this.doctypeName = null; this.publicIdentifier = null; this.systemIdentifier = null; @@ -548,8 +567,11 @@ public class Tokenizer implements Locator { this.charRefBuf = new char[32]; this.bmpChar = new char[1]; this.astralChar = new char[2]; + this.containsHyphen = false; this.tagName = null; + this.nonInternedTagName = new ElementName(); this.attributeName = null; + // CPPONLY: this.nonInternedAttributeName = new AttributeName(); this.doctypeName = null; this.publicIdentifier = null; this.systemIdentifier = null; @@ -710,6 +732,7 @@ public class Tokenizer implements Locator { @Auto char[] asArray = Portability.newCharArrayFromLocal(endTagExpectation); this.endTagExpectation = ElementName.elementNameByBuffer(asArray, 0, asArray.length, interner); + assert this.endTagExpectation != null; endTagExpectationToArray(); } @@ -1110,8 +1133,30 @@ public class Tokenizer implements Locator { } private void strBufToElementNameString() { - tagName = ElementName.elementNameByBuffer(strBuf, 0, strBufLen, - interner); + if (containsHyphen) { + // We've got a custom element or annotation-xml. + @Local String annotationName = ElementName.ANNOTATION_XML.getName(); + if (Portability.localEqualsBuffer(annotationName, strBuf, 0, strBufLen)) { + tagName = ElementName.ANNOTATION_XML; + } else { + nonInternedTagName.setNameForNonInterned(Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen, + interner) + // CPPONLY: , true + ); + tagName = nonInternedTagName; + } + } else { + tagName = ElementName.elementNameByBuffer(strBuf, 0, strBufLen, + interner); + if (tagName == null) { + nonInternedTagName.setNameForNonInterned(Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen, + interner) + // CPPONLY: , false + ); + tagName = nonInternedTagName; + } + } + containsHyphen = false; clearStrBufAfterUse(); } @@ -1144,7 +1189,6 @@ public class Tokenizer implements Locator { tokenHandler.startTag(tagName, attrs, selfClosing); // CPPONLY: } } - tagName.release(); tagName = null; if (newAttributesEachTime) { attributes = null; @@ -1159,11 +1203,17 @@ public class Tokenizer implements Locator { } private void attributeNameComplete() throws SAXException { - attributeName = AttributeName.nameByBuffer(strBuf, 0, strBufLen - // [NOCPP[ - , namePolicy != XmlViolationPolicy.ALLOW - // ]NOCPP] - , interner); + attributeName = AttributeName.nameByBuffer(strBuf, 0, strBufLen, interner); + if (attributeName == null) { + // [NOCPP[ + attributeName = AttributeName.createAttributeName( + Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen, + interner), + namePolicy != XmlViolationPolicy.ALLOW); + // ]NOCPP] + // CPPONLY: nonInternedAttributeName.setNameForNonInterned(Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen, interner)); + // CPPONLY: attributeName = nonInternedAttributeName; + } clearStrBufAfterUse(); if (attributes == null) { @@ -1180,7 +1230,6 @@ public class Tokenizer implements Locator { */ if (attributes.contains(attributeName)) { errDuplicateAttribute(); - attributeName.release(); attributeName = null; } } @@ -1229,8 +1278,7 @@ public class Tokenizer implements Locator { // [NOCPP[ } // ]NOCPP] - attributeName = null; // attributeName has been adopted by the - // |attributes| object + attributeName = null; } else { clearStrBufAfterUse(); } @@ -1261,8 +1309,7 @@ public class Tokenizer implements Locator { // ]NOCPP] // CPPONLY: , attributeLine ); - attributeName = null; // attributeName has been adopted by the - // |attributes| object + attributeName = null; } else { // We have a duplicate attribute. Explicitly discard its value. clearStrBufAfterUse(); @@ -1563,6 +1610,7 @@ public class Tokenizer implements Locator { */ clearStrBufBeforeUse(); appendStrBuf((char) (c + 0x20)); + containsHyphen = false; /* then switch to the tag name state. */ state = transition(state, Tokenizer.TAG_NAME, reconsume, pos); /* @@ -1583,6 +1631,7 @@ public class Tokenizer implements Locator { */ clearStrBufBeforeUse(); appendStrBuf(c); + containsHyphen = false; /* then switch to the tag name state. */ state = transition(state, Tokenizer.TAG_NAME, reconsume, pos); /* @@ -1726,6 +1775,8 @@ public class Tokenizer implements Locator { * tag name. */ c += 0x20; + } else if (c == '-') { + containsHyphen = true; } /* * Anything else Append the current input @@ -1733,6 +1784,7 @@ public class Tokenizer implements Locator { * name. */ appendStrBuf(c); + containsHyphen = false; /* * Stay in the tag name state. */ @@ -6650,14 +6702,12 @@ public class Tokenizer implements Locator { Portability.releaseString(publicIdentifier); publicIdentifier = null; } - if (tagName != null) { - tagName.release(); - tagName = null; - } - if (attributeName != null) { - attributeName.release(); - attributeName = null; - } + tagName = null; + nonInternedTagName.setNameForNonInterned(null + // CPPONLY: , false + ); + attributeName = null; + // CPPONLY: nonInternedAttributeName.setNameForNonInterned(null); tokenHandler.endTokenization(); if (attributes != null) { // [NOCPP[ @@ -6734,14 +6784,9 @@ public class Tokenizer implements Locator { endTag = false; shouldSuspend = false; initDoctypeFields(); - if (tagName != null) { - tagName.release(); - tagName = null; - } - if (attributeName != null) { - attributeName.release(); - attributeName = null; - } + containsHyphen = false; + tagName = null; + attributeName = null; if (newAttributesEachTime) { if (attributes != null) { Portability.delete(attributes); @@ -6801,23 +6846,35 @@ public class Tokenizer implements Locator { publicIdentifier = Portability.newStringFromString(other.publicIdentifier); } - if (tagName != null) { - tagName.release(); - } + containsHyphen = other.containsHyphen; if (other.tagName == null) { tagName = null; + } else if (other.tagName.isInterned()) { + tagName = other.tagName; } else { - tagName = other.tagName.cloneElementName(interner); + // In the C++ case, the atoms in the other tokenizer are from a + // different tokenizer-scoped atom table. Therefore, we have to + // obtain the correspoding atom from our own atom table. + nonInternedTagName.setNameForNonInterned(Portability.newLocalFromLocal(other.tagName.getName(), interner) + // CPPONLY: , other.tagName.isCustom() + ); + tagName = nonInternedTagName; } - if (attributeName != null) { - attributeName.release(); - } - if (other.attributeName == null) { - attributeName = null; - } else { - attributeName = other.attributeName.cloneAttributeName(interner); - } + // [NOCPP[ + attributeName = other.attributeName; + // ]NOCPP] + // CPPONLY: if (other.attributeName == null) { + // CPPONLY: attributeName = null; + // CPPONLY: } else if (other.attributeName.isInterned()) { + // CPPONLY: attributeName = other.attributeName; + // CPPONLY: } else { + // CPPONLY: // In the C++ case, the atoms in the other tokenizer are from a + // CPPONLY: // different tokenizer-scoped atom table. Therefore, we have to + // CPPONLY: // obtain the correspoding atom from our own atom table. + // CPPONLY: nonInternedAttributeName.setNameForNonInterned(Portability.newLocalFromLocal(other.attributeName.getLocal(AttributeName.HTML), interner)); + // CPPONLY: attributeName = nonInternedAttributeName; + // CPPONLY: } Portability.delete(attributes); if (other.attributes == null) { @@ -7058,6 +7115,9 @@ public class Tokenizer implements Locator { } void destructor() { + Portability.delete(nonInternedTagName); + // CPPONLY: Portability.delete(nonInternedAttributeName); + nonInternedTagName = null; // The translator will write refcount tracing stuff here Portability.delete(attributes); attributes = null; diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/TreeBuilder.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/TreeBuilder.java index de7d8478d..d77715a3e 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/TreeBuilder.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/TreeBuilder.java @@ -478,6 +478,18 @@ public abstract class TreeBuilder<T> implements TokenHandler, protected void fatal() throws SAXException { } + // CPPONLY: @Inline private @Creator Object htmlCreator(@HtmlCreator Object htmlCreator) { + // CPPONLY: @Creator Object creator; + // CPPONLY: creator.html = htmlCreator; + // CPPONLY: return creator; + // CPPONLY: } + // CPPONLY: + // CPPONLY: @Inline private @Creator Object svgCreator(@SvgCreator Object svgCreator) { + // CPPONLY: @Creator Object creator; + // CPPONLY: creator.svg = svgCreator; + // CPPONLY: return creator; + // CPPONLY: } + // [NOCPP[ protected final void fatal(Exception e) throws SAXException { @@ -634,7 +646,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, } // This is the SVG variant of the StackNode constructor. StackNode<T> node = new StackNode<T>(elementName, - elementName.camelCaseName, elt + elementName.getCamelCaseName(), elt // [NOCPP[ , errorHandler == null ? null : new TaintableLocatorImpl(tokenizer) @@ -664,7 +676,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, } // This is the MathML variant of the StackNode constructor. StackNode<T> node = new StackNode<T>(elementName, elt, - elementName.name, false + elementName.getName(), false // [NOCPP[ , errorHandler == null ? null : new TaintableLocatorImpl(tokenizer) @@ -714,7 +726,8 @@ public abstract class TreeBuilder<T> implements TokenHandler, // CPPONLY: if (tokenizer.isViewingXmlSource()) { // CPPONLY: T elt = createElement("http://www.w3.org/2000/svg", // CPPONLY: "svg", - // CPPONLY: tokenizer.emptyAttributes(), null); + // CPPONLY: tokenizer.emptyAttributes(), null, + // CPPONLY: svgCreator(NS_NewSVGSVGElement)); // CPPONLY: StackNode<T> node = new StackNode<T>(ElementName.SVG, // CPPONLY: "svg", // CPPONLY: elt); @@ -1665,7 +1678,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, needToDropLF = false; starttagloop: for (;;) { int group = elementName.getGroup(); - @Local String name = elementName.name; + @Local String name = elementName.getName(); if (isInForeign()) { StackNode<T> currentNode = stack[currentPtr]; @NsUri String currNs = currentNode.ns; @@ -1958,8 +1971,8 @@ public abstract class TreeBuilder<T> implements TokenHandler, attributes.getValue(AttributeName.TYPE))) { break intableloop; } - appendVoidElementToCurrent( - name, attributes, + appendVoidInputToCurrent( + attributes, formPointer); selfClosing = false; attributes = null; // CPP @@ -2224,7 +2237,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, case B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: case FONT: reconstructTheActiveFormattingElements(); - maybeForgetEarlierDuplicateFormattingElement(elementName.name, attributes); + maybeForgetEarlierDuplicateFormattingElement(elementName.getName(), attributes); appendToCurrentNodeAndPushFormattingElementMayFoster( elementName, attributes); @@ -2321,90 +2334,79 @@ public abstract class TreeBuilder<T> implements TokenHandler, case INPUT: reconstructTheActiveFormattingElements(); appendVoidElementToCurrentMayFoster( - name, attributes, + elementName, attributes, formPointer); selfClosing = false; attributes = null; // CPP break starttagloop; - case ISINDEX: - errIsindex(); - if (formPointer != null && !isTemplateContents()) { - break starttagloop; - } - implicitlyCloseP(); - HtmlAttributes formAttrs = new HtmlAttributes(0); - int actionIndex = attributes.getIndex(AttributeName.ACTION); - if (actionIndex > -1) { - formAttrs.addAttribute( - AttributeName.ACTION, - attributes.getValueNoBoundsCheck(actionIndex) - // [NOCPP[ - , XmlViolationPolicy.ALLOW - // ]NOCPP] - // CPPONLY: , attributes.getLineNoBoundsCheck(actionIndex) - ); - } - appendToCurrentNodeAndPushFormElementMayFoster(formAttrs); - appendVoidElementToCurrentMayFoster( - ElementName.HR, - HtmlAttributes.EMPTY_ATTRIBUTES); - appendToCurrentNodeAndPushElementMayFoster( - ElementName.LABEL, - HtmlAttributes.EMPTY_ATTRIBUTES); - int promptIndex = attributes.getIndex(AttributeName.PROMPT); - if (promptIndex > -1) { - @Auto char[] prompt = Portability.newCharArrayFromString(attributes.getValueNoBoundsCheck(promptIndex)); - appendCharacters(stack[currentPtr].node, - prompt, 0, prompt.length); - } else { - appendIsindexPrompt(stack[currentPtr].node); - } - HtmlAttributes inputAttributes = new HtmlAttributes( - 0); - inputAttributes.addAttribute( - AttributeName.NAME, - Portability.newStringFromLiteral("isindex") - // [NOCPP[ - , XmlViolationPolicy.ALLOW - // ]NOCPP] - // CPPONLY: , tokenizer.getLineNumber() - ); - for (int i = 0; i < attributes.getLength(); i++) { - AttributeName attributeQName = attributes.getAttributeNameNoBoundsCheck(i); - if (AttributeName.NAME == attributeQName - || AttributeName.PROMPT == attributeQName) { - attributes.releaseValue(i); - } else if (AttributeName.ACTION != attributeQName) { - inputAttributes.addAttribute( - attributeQName, - attributes.getValueNoBoundsCheck(i) - // [NOCPP[ - , XmlViolationPolicy.ALLOW - // ]NOCPP] - // CPPONLY: , attributes.getLineNoBoundsCheck(i) - ); - } - } - attributes.clearWithoutReleasingContents(); - appendVoidElementToCurrentMayFoster( - "input", - inputAttributes, formPointer); - pop(); // label - appendVoidElementToCurrentMayFoster( - ElementName.HR, - HtmlAttributes.EMPTY_ATTRIBUTES); - pop(); // form - - if (!isTemplateContents()) { - formPointer = null; - } - - selfClosing = false; - // Portability.delete(formAttrs); - // Portability.delete(inputAttributes); - // Don't delete attributes, they are deleted - // later - break starttagloop; + // CPPONLY:case ISINDEX: + // CPPONLY: errIsindex(); + // CPPONLY: if (formPointer != null && !isTemplateContents()) { + // CPPONLY: break starttagloop; + // CPPONLY: } + // CPPONLY: implicitlyCloseP(); + // CPPONLY: HtmlAttributes formAttrs = new HtmlAttributes(0); + // CPPONLY: int actionIndex = attributes.getIndex(AttributeName.ACTION); + // CPPONLY: if (actionIndex > -1) { + // CPPONLY: formAttrs.addAttribute( + // CPPONLY: AttributeName.ACTION, + // CPPONLY: attributes.getValueNoBoundsCheck(actionIndex), + // CPPONLY: attributes.getLineNoBoundsCheck(actionIndex) + // CPPONLY: ); + // CPPONLY: } + // CPPONLY: appendToCurrentNodeAndPushFormElementMayFoster(formAttrs); + // CPPONLY: appendVoidElementToCurrentMayFoster( + // CPPONLY: ElementName.HR, + // CPPONLY: HtmlAttributes.EMPTY_ATTRIBUTES); + // CPPONLY: appendToCurrentNodeAndPushElementMayFoster( + // CPPONLY: ElementName.LABEL, + // CPPONLY: HtmlAttributes.EMPTY_ATTRIBUTES); + // CPPONLY: int promptIndex = attributes.getIndex(AttributeName.PROMPT); + // CPPONLY: if (promptIndex > -1) { + // CPPONLY: @Auto char[] prompt = Portability.newCharArrayFromString(attributes.getValueNoBoundsCheck(promptIndex)); + // CPPONLY: appendCharacters(stack[currentPtr].node, + // CPPONLY: prompt, 0, prompt.length); + // CPPONLY: } else { + // CPPONLY: appendIsindexPrompt(stack[currentPtr].node); + // CPPONLY: } + // CPPONLY: HtmlAttributes inputAttributes = new HtmlAttributes( + // CPPONLY: 0); + // CPPONLY: inputAttributes.addAttribute( + // CPPONLY: AttributeName.NAME, + // CPPONLY: Portability.newStringFromLiteral("isindex"), + // CPPONLY: tokenizer.getLineNumber() + // CPPONLY: ); + // CPPONLY: for (int i = 0; i < attributes.getLength(); i++) { + // CPPONLY: @Local String attributeQName = attributes.getLocalNameNoBoundsCheck(i); + // CPPONLY: if ("name" == attributeQName + // CPPONLY: || "prompt" == attributeQName) { + // CPPONLY: attributes.releaseValue(i); + // CPPONLY: } else if ("action" != attributeQName) { + // CPPONLY: inputAttributes.AddAttributeWithLocal( + // CPPONLY: attributeQName, + // CPPONLY: attributes.getValueNoBoundsCheck(i), + // CPPONLY: attributes.getLineNoBoundsCheck(i) + // CPPONLY: ); + // CPPONLY: } + // CPPONLY: } + // CPPONLY: attributes.clearWithoutReleasingContents(); + // CPPONLY: appendVoidElementToCurrentMayFoster( + // CPPONLY: ElementName.INPUT, + // CPPONLY: inputAttributes, formPointer); + // CPPONLY: pop(); // label + // CPPONLY: appendVoidElementToCurrentMayFoster( + // CPPONLY: ElementName.HR, + // CPPONLY: HtmlAttributes.EMPTY_ATTRIBUTES); + // CPPONLY: pop(); // form + // CPPONLY: + // CPPONLY: if (!isTemplateContents()) { + // CPPONLY: formPointer = null; + // CPPONLY: } + // CPPONLY: + // CPPONLY: selfClosing = false; + // CPPONLY: // Don't delete attributes, they are deleted + // CPPONLY: // later + // CPPONLY: break starttagloop; case TEXTAREA: appendToCurrentNodeAndPushElementMayFoster( elementName, @@ -3376,7 +3378,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, needToDropLF = false; int eltPos; int group = elementName.getGroup(); - @Local String name = elementName.name; + @Local String name = elementName.getName(); endtagloop: for (;;) { if (isInForeign()) { if (stack[currentPtr].name != name) { @@ -3837,7 +3839,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, case INPUT: case KEYGEN: // XXX?? case HR: - case ISINDEX: + // CPPONLY: case ISINDEX: case IFRAME: case NOEMBED: // XXX??? case NOFRAMES: // XXX?? @@ -4809,9 +4811,12 @@ public abstract class TreeBuilder<T> implements TokenHandler, assert node == listOfActiveFormattingElements[nodeListPos]; assert node == stack[nodePos]; T clone = createElement("http://www.w3.org/1999/xhtml", - node.name, node.attributes.cloneAttributes(null), commonAncestor.node); + node.name, node.attributes.cloneAttributes(null), commonAncestor.node + // CPPONLY: , htmlCreator(node.getHtmlCreator()) + ); StackNode<T> newNode = new StackNode<T>(node.getFlags(), node.ns, node.name, clone, node.popName, node.attributes + // CPPONLY: , node.getHtmlCreator() // [NOCPP[ , node.getLocator() // ]NOCPP] @@ -4838,11 +4843,14 @@ public abstract class TreeBuilder<T> implements TokenHandler, } T clone = createElement("http://www.w3.org/1999/xhtml", formattingElt.name, - formattingElt.attributes.cloneAttributes(null), furthestBlock.node); + formattingElt.attributes.cloneAttributes(null), furthestBlock.node + // CPPONLY: , htmlCreator(formattingElt.getHtmlCreator()) + ); StackNode<T> formattingClone = new StackNode<T>( formattingElt.getFlags(), formattingElt.ns, formattingElt.name, clone, formattingElt.popName, formattingElt.attributes + // CPPONLY: , formattingElt.getHtmlCreator() // [NOCPP[ , errorHandler == null ? null : new TaintableLocatorImpl(tokenizer) // ]NOCPP] @@ -5022,16 +5030,21 @@ public abstract class TreeBuilder<T> implements TokenHandler, T clone; if (currentNode.isFosterParenting()) { clone = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", entry.name, - entry.attributes.cloneAttributes(null)); + entry.attributes.cloneAttributes(null) + // CPPONLY: , htmlCreator(entry.getHtmlCreator()) + ); } else { clone = createElement("http://www.w3.org/1999/xhtml", entry.name, - entry.attributes.cloneAttributes(null), currentNode.node); + entry.attributes.cloneAttributes(null), currentNode.node + // CPPONLY: , htmlCreator(entry.getHtmlCreator()) + ); appendElement(clone, currentNode.node); } StackNode<T> entryClone = new StackNode<T>(entry.getFlags(), entry.ns, entry.name, clone, entry.popName, entry.attributes + // CPPONLY: , entry.getHtmlCreator() // [NOCPP[ , entry.getLocator() // ]NOCPP] @@ -5062,23 +5075,33 @@ public abstract class TreeBuilder<T> implements TokenHandler, } private T createAndInsertFosterParentedElement(@NsUri String ns, @Local String name, - HtmlAttributes attributes) throws SAXException { - return createAndInsertFosterParentedElement(ns, name, attributes, null); + HtmlAttributes attributes + // CPPONLY: , @Creator Object creator + ) throws SAXException { + return createAndInsertFosterParentedElement(ns, name, attributes, null + // CPPONLY: , creator + ); } private T createAndInsertFosterParentedElement(@NsUri String ns, @Local String name, - HtmlAttributes attributes, T form) throws SAXException { + HtmlAttributes attributes, T form + // CPPONLY: , @Creator Object creator + ) throws SAXException { int tablePos = findLastOrRoot(TreeBuilder.TABLE); int templatePos = findLastOrRoot(TreeBuilder.TEMPLATE); if (templatePos >= tablePos) { - T child = createElement(ns, name, attributes, form, stack[templatePos].node); + T child = createElement(ns, name, attributes, form, stack[templatePos].node + // CPPONLY: , creator + ); appendElement(child, stack[templatePos].node); return child; } StackNode<T> node = stack[tablePos]; - return createAndInsertFosterParentedElement(ns, name, attributes, form, node.node, stack[tablePos - 1].node); + return createAndInsertFosterParentedElement(ns, name, attributes, form, node.node, stack[tablePos - 1].node + // CPPONLY: , creator + ); } private boolean isInStack(StackNode<T> node) { @@ -5236,7 +5259,12 @@ public abstract class TreeBuilder<T> implements TokenHandler, checkAttributes(attributes, "http://www.w3.org/1999/xhtml"); // ]NOCPP] T currentNode = stack[currentPtr].node; - T elt = createElement("http://www.w3.org/1999/xhtml", "head", attributes, currentNode); + T elt = createElement("http://www.w3.org/1999/xhtml", "head", attributes, currentNode + /* + * head uses NS_NewHTMLSharedElement creator + */ + // CPPONLY: , htmlCreator(NS_NewHTMLSharedElement) + ); appendElement(elt, currentNode); headPointer = elt; StackNode<T> node = new StackNode<T>(ElementName.HEAD, @@ -5268,9 +5296,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", "form", attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", "form", attributes + // CPPONLY: , htmlCreator(NS_NewHTMLFormElement) + ); } else { - elt = createElement("http://www.w3.org/1999/xhtml", "form", attributes, current.node); + elt = createElement("http://www.w3.org/1999/xhtml", "form", attributes, current.node + // CPPONLY: , htmlCreator(NS_NewHTMLFormElement) + ); appendElement(elt, current.node); } @@ -5301,9 +5333,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", elementName.name, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", elementName.getName(), attributes + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); } else { - elt = createElement("http://www.w3.org/1999/xhtml", elementName.name, attributes, current.node); + elt = createElement("http://www.w3.org/1999/xhtml", elementName.getName(), attributes, current.node + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); appendElement(elt, current.node); } StackNode<T> node = new StackNode<T>(elementName, elt, clone @@ -5324,7 +5360,9 @@ public abstract class TreeBuilder<T> implements TokenHandler, // ]NOCPP] // This method can't be called for custom elements T currentNode = stack[currentPtr].node; - T elt = createElement("http://www.w3.org/1999/xhtml", elementName.name, attributes, currentNode); + T elt = createElement("http://www.w3.org/1999/xhtml", elementName.getName(), attributes, currentNode + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); appendElement(elt, currentNode); if (ElementName.TEMPLATE == elementName) { elt = getDocumentFragmentForTemplate(elt); @@ -5340,10 +5378,10 @@ public abstract class TreeBuilder<T> implements TokenHandler, private void appendToCurrentNodeAndPushElementMayFoster(ElementName elementName, HtmlAttributes attributes) throws SAXException { - @Local String popName = elementName.name; + @Local String popName = elementName.getName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/1999/xhtml"); - if (elementName.isCustom()) { + if (!elementName.isInterned()) { popName = checkPopName(popName); } // ]NOCPP] @@ -5351,9 +5389,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", popName, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", popName, attributes + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); } else { - elt = createElement("http://www.w3.org/1999/xhtml", popName, attributes, current.node); + elt = createElement("http://www.w3.org/1999/xhtml", popName, attributes, current.node + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); appendElement(elt, current.node); } StackNode<T> node = new StackNode<T>(elementName, elt, popName @@ -5367,10 +5409,10 @@ public abstract class TreeBuilder<T> implements TokenHandler, private void appendToCurrentNodeAndPushElementMayFosterMathML( ElementName elementName, HtmlAttributes attributes) throws SAXException { - @Local String popName = elementName.name; + @Local String popName = elementName.getName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/1998/Math/MathML"); - if (elementName.isCustom()) { + if (!elementName.isInterned()) { popName = checkPopName(popName); } // ]NOCPP] @@ -5385,9 +5427,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1998/Math/MathML", popName, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1998/Math/MathML", popName, attributes + // CPPONLY: , htmlCreator(null) + ); } else { - elt = createElement("http://www.w3.org/1998/Math/MathML", popName, attributes, current.node); + elt = createElement("http://www.w3.org/1998/Math/MathML", popName, attributes, current.node + // CPPONLY: , htmlCreator(null) + ); appendElement(elt, current.node); } StackNode<T> node = new StackNode<T>(elementName, elt, popName, @@ -5423,10 +5469,10 @@ public abstract class TreeBuilder<T> implements TokenHandler, private void appendToCurrentNodeAndPushElementMayFosterSVG( ElementName elementName, HtmlAttributes attributes) throws SAXException { - @Local String popName = elementName.camelCaseName; + @Local String popName = elementName.getCamelCaseName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/2000/svg"); - if (elementName.isCustom()) { + if (!elementName.isInterned()) { popName = checkPopName(popName); } // ]NOCPP] @@ -5434,9 +5480,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/2000/svg", popName, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/2000/svg", popName, attributes + // CPPONLY: , svgCreator(elementName.getSvgCreator()) + ); } else { - elt = createElement("http://www.w3.org/2000/svg", popName, attributes, current.node); + elt = createElement("http://www.w3.org/2000/svg", popName, attributes, current.node + // CPPONLY: , svgCreator(elementName.getSvgCreator()) + ); appendElement(elt, current.node); } StackNode<T> node = new StackNode<T>(elementName, popName, elt @@ -5459,11 +5509,15 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", elementName.name, - attributes, formOwner); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", elementName.getName(), + attributes, formOwner + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); } else { - elt = createElement("http://www.w3.org/1999/xhtml", elementName.name, - attributes, formOwner, current.node); + elt = createElement("http://www.w3.org/1999/xhtml", elementName.getName(), + attributes, formOwner, current.node + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); appendElement(elt, current.node); } StackNode<T> node = new StackNode<T>(elementName, elt @@ -5475,7 +5529,8 @@ public abstract class TreeBuilder<T> implements TokenHandler, } private void appendVoidElementToCurrentMayFoster( - @Local String name, HtmlAttributes attributes, T form) throws SAXException { + ElementName elementName, HtmlAttributes attributes, T form) throws SAXException { + @Local String name = elementName.getName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/1999/xhtml"); // ]NOCPP] @@ -5486,10 +5541,14 @@ public abstract class TreeBuilder<T> implements TokenHandler, if (current.isFosterParenting()) { fatal(); elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", name, - attributes, formOwner); + attributes, formOwner + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); } else { elt = createElement("http://www.w3.org/1999/xhtml", name, - attributes, formOwner, current.node); + attributes, formOwner, current.node + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); appendElement(elt, current.node); } elementPushed("http://www.w3.org/1999/xhtml", name, elt); @@ -5499,10 +5558,10 @@ public abstract class TreeBuilder<T> implements TokenHandler, private void appendVoidElementToCurrentMayFoster( ElementName elementName, HtmlAttributes attributes) throws SAXException { - @Local String popName = elementName.name; + @Local String popName = elementName.getName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/1999/xhtml"); - if (elementName.isCustom()) { + if (!elementName.isInterned()) { popName = checkPopName(popName); } // ]NOCPP] @@ -5510,9 +5569,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", popName, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1999/xhtml", popName, attributes + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); } else { - elt = createElement("http://www.w3.org/1999/xhtml", popName, attributes, current.node); + elt = createElement("http://www.w3.org/1999/xhtml", popName, attributes, current.node + // CPPONLY: , htmlCreator(elementName.getHtmlCreator()) + ); appendElement(elt, current.node); } elementPushed("http://www.w3.org/1999/xhtml", popName, elt); @@ -5522,10 +5585,10 @@ public abstract class TreeBuilder<T> implements TokenHandler, private void appendVoidElementToCurrentMayFosterSVG( ElementName elementName, HtmlAttributes attributes) throws SAXException { - @Local String popName = elementName.camelCaseName; + @Local String popName = elementName.getCamelCaseName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/2000/svg"); - if (elementName.isCustom()) { + if (!elementName.isInterned()) { popName = checkPopName(popName); } // ]NOCPP] @@ -5533,9 +5596,13 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/2000/svg", popName, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/2000/svg", popName, attributes + // CPPONLY: , svgCreator(elementName.getSvgCreator()) + ); } else { - elt = createElement("http://www.w3.org/2000/svg", popName, attributes, current.node); + elt = createElement("http://www.w3.org/2000/svg", popName, attributes, current.node + // CPPONLY: , svgCreator(elementName.getSvgCreator()) + ); appendElement(elt, current.node); } elementPushed("http://www.w3.org/2000/svg", popName, elt); @@ -5545,10 +5612,10 @@ public abstract class TreeBuilder<T> implements TokenHandler, private void appendVoidElementToCurrentMayFosterMathML( ElementName elementName, HtmlAttributes attributes) throws SAXException { - @Local String popName = elementName.name; + @Local String popName = elementName.getName(); // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/1998/Math/MathML"); - if (elementName.isCustom()) { + if (!elementName.isInterned()) { popName = checkPopName(popName); } // ]NOCPP] @@ -5556,27 +5623,32 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> current = stack[currentPtr]; if (current.isFosterParenting()) { fatal(); - elt = createAndInsertFosterParentedElement("http://www.w3.org/1998/Math/MathML", popName, attributes); + elt = createAndInsertFosterParentedElement("http://www.w3.org/1998/Math/MathML", popName, attributes + // CPPONLY: , htmlCreator(null) + ); } else { - elt = createElement("http://www.w3.org/1998/Math/MathML", popName, attributes, current.node); + elt = createElement("http://www.w3.org/1998/Math/MathML", popName, attributes, current.node + // CPPONLY: , htmlCreator(null) + ); appendElement(elt, current.node); } elementPushed("http://www.w3.org/1998/Math/MathML", popName, elt); elementPopped("http://www.w3.org/1998/Math/MathML", popName, elt); } - private void appendVoidElementToCurrent( - @Local String name, HtmlAttributes attributes, T form) throws SAXException { + private void appendVoidInputToCurrent(HtmlAttributes attributes, T form) throws SAXException { // [NOCPP[ checkAttributes(attributes, "http://www.w3.org/1999/xhtml"); // ]NOCPP] // Can't be called for custom elements T currentNode = stack[currentPtr].node; - T elt = createElement("http://www.w3.org/1999/xhtml", name, attributes, - form == null || fragment || isTemplateContents() ? null : form, currentNode); + T elt = createElement("http://www.w3.org/1999/xhtml", "input", attributes, + form == null || fragment || isTemplateContents() ? null : form, currentNode + // CPPONLY: , htmlCreator(NS_NewHTMLInputElement) + ); appendElement(elt, currentNode); - elementPushed("http://www.w3.org/1999/xhtml", name, elt); - elementPopped("http://www.w3.org/1999/xhtml", name, elt); + elementPushed("http://www.w3.org/1999/xhtml", "input", elt); + elementPopped("http://www.w3.org/1999/xhtml", "input", elt); } private void appendVoidFormToCurrent(HtmlAttributes attributes) throws SAXException { @@ -5585,7 +5657,9 @@ public abstract class TreeBuilder<T> implements TokenHandler, // ]NOCPP] T currentNode = stack[currentPtr].node; T elt = createElement("http://www.w3.org/1999/xhtml", "form", - attributes, currentNode); + attributes, currentNode + // CPPONLY: , htmlCreator(NS_NewHTMLFormElement) + ); formPointer = elt; // ownership transferred to form pointer appendElement(elt, currentNode); @@ -5637,11 +5711,17 @@ public abstract class TreeBuilder<T> implements TokenHandler, } protected abstract T createElement(@NsUri String ns, @Local String name, - HtmlAttributes attributes, T intendedParent) throws SAXException; + HtmlAttributes attributes, T intendedParent + // CPPONLY: , @Creator Object creator + ) throws SAXException; protected T createElement(@NsUri String ns, @Local String name, - HtmlAttributes attributes, T form, T intendedParent) throws SAXException { - return createElement("http://www.w3.org/1999/xhtml", name, attributes, intendedParent); + HtmlAttributes attributes, T form, T intendedParent + // CPPONLY: , @Creator Object creator + ) throws SAXException { + return createElement("http://www.w3.org/1999/xhtml", name, attributes, intendedParent + // CPPONLY: , creator + ); } protected abstract T createHtmlElementSetAsRoot(HtmlAttributes attributes) @@ -5670,7 +5750,9 @@ public abstract class TreeBuilder<T> implements TokenHandler, // ]NOCPP] protected T createAndInsertFosterParentedElement(@NsUri String ns, @Local String name, - HtmlAttributes attributes, T form, T table, T stackParent) throws SAXException { + HtmlAttributes attributes, T form, T table, T stackParent + // CPPONLY: , @Creator Object creator + ) throws SAXException { return createAndInsertFosterParentedElement(ns, name, attributes, table, stackParent); }; @@ -5681,7 +5763,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, protected abstract void appendCharacters(T parent, @NoLength char[] buf, int start, int length) throws SAXException; - protected abstract void appendIsindexPrompt(T parent) throws SAXException; + // CPPONLY: protected abstract void appendIsindexPrompt(T parent) throws SAXException; protected abstract void appendComment(T parent, @NoLength char[] buf, int start, int length) throws SAXException; @@ -5952,6 +6034,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> newNode = new StackNode<T>(node.getFlags(), node.ns, node.name, node.node, node.popName, node.attributes.cloneAttributes(null) + // CPPONLY: , node.getHtmlCreator() // [NOCPP[ , node.getLocator() // ]NOCPP] @@ -5969,6 +6052,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, StackNode<T> newNode = new StackNode<T>(node.getFlags(), node.ns, node.name, node.node, node.popName, null + // CPPONLY: , node.getHtmlCreator() // [NOCPP[ , node.getLocator() // ]NOCPP] @@ -6074,6 +6158,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, Portability.newLocalFromLocal(node.name, interner), node.node, Portability.newLocalFromLocal(node.popName, interner), node.attributes.cloneAttributes(null) + // CPPONLY: , node.getHtmlCreator() // [NOCPP[ , node.getLocator() // ]NOCPP] @@ -6091,6 +6176,7 @@ public abstract class TreeBuilder<T> implements TokenHandler, Portability.newLocalFromLocal(node.name, interner), node.node, Portability.newLocalFromLocal(node.popName, interner), null + // CPPONLY: , node.getHtmlCreator() // [NOCPP[ , node.getLocator() // ]NOCPP] @@ -6377,9 +6463,9 @@ public abstract class TreeBuilder<T> implements TokenHandler, err("Saw a start tag \u201Cimage\u201D."); } - private void errIsindex() throws SAXException { - err("\u201Cisindex\u201D seen."); - } + // CPPONLY: private void errIsindex() throws SAXException { + // CPPONLY: err("\u201Cisindex\u201D seen."); + // CPPONLY: } private void errFooSeenWhenFooOpen(@Local String name) throws SAXException { if (errorHandler == null) { diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXStreamer.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXStreamer.java index 07ff5da4a..d2dc60bdb 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXStreamer.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXStreamer.java @@ -23,26 +23,24 @@ package nu.validator.htmlparser.sax; -import nu.validator.htmlparser.impl.HtmlAttributes; -import nu.validator.htmlparser.impl.TreeBuilder; - import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.ext.LexicalHandler; -class SAXStreamer extends TreeBuilder<Attributes>{ +import nu.validator.htmlparser.impl.HtmlAttributes; +import nu.validator.htmlparser.impl.TreeBuilder; - private static final char[] ISINDEX_PROMPT = "This is a searchable index. Enter search keywords: ".toCharArray(); +class SAXStreamer extends TreeBuilder<Attributes>{ private ContentHandler contentHandler = null; private LexicalHandler lexicalHandler = null; - + SAXStreamer() { super(); } - + @Override protected void addAttributesToElement(Attributes element, HtmlAttributes attributes) throws SAXException { Attributes existingAttrs = element; @@ -59,14 +57,6 @@ class SAXStreamer extends TreeBuilder<Attributes>{ contentHandler.characters(buf, start, length); } - /** - * @see nu.validator.htmlparser.impl.TreeBuilder#appendIsindexPrompt(java.lang.Object) - */ - @Override protected void appendIsindexPrompt(Attributes parent) - throws SAXException { - contentHandler.characters(ISINDEX_PROMPT, 0, ISINDEX_PROMPT.length); - } - @Override protected void appendChildrenToNewParent(Attributes oldParent, Attributes newParent) throws SAXException { fatal(); diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXTreeBuilder.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXTreeBuilder.java index ef51d2a51..3e099b579 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXTreeBuilder.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/sax/SAXTreeBuilder.java @@ -23,6 +23,8 @@ package nu.validator.htmlparser.sax; +import org.xml.sax.SAXException; + import nu.validator.htmlparser.impl.HtmlAttributes; import nu.validator.htmlparser.impl.TreeBuilder; import nu.validator.saxtree.Characters; @@ -34,12 +36,8 @@ import nu.validator.saxtree.Element; import nu.validator.saxtree.Node; import nu.validator.saxtree.ParentNode; -import org.xml.sax.SAXException; - class SAXTreeBuilder extends TreeBuilder<Element> { - private static final char[] ISINDEX_PROMPT = "This is a searchable index. Enter search keywords: ".toCharArray(); - private Document document; private Node cachedTable = null; @@ -65,14 +63,6 @@ class SAXTreeBuilder extends TreeBuilder<Element> { parent.appendChild(new Characters(tokenizer, buf, start, length)); } - /** - * @see nu.validator.htmlparser.impl.TreeBuilder#appendIsindexPrompt(java.lang.Object) - */ - @Override protected void appendIsindexPrompt(Element parent) - throws SAXException { - parent.appendChild(new Characters(tokenizer, ISINDEX_PROMPT, 0, ISINDEX_PROMPT.length)); - } - @Override protected boolean hasChildren(Element element) { return element.getFirstChild() != null; diff --git a/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/JSONArrayTokenHandler.java b/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/JSONArrayTokenHandler.java index 2fcfc4960..430bbdc44 100644 --- a/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/JSONArrayTokenHandler.java +++ b/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/JSONArrayTokenHandler.java @@ -23,11 +23,6 @@ package nu.validator.htmlparser.test; -import nu.validator.htmlparser.common.TokenHandler; -import nu.validator.htmlparser.impl.ElementName; -import nu.validator.htmlparser.impl.HtmlAttributes; -import nu.validator.htmlparser.impl.Tokenizer; - import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; @@ -38,6 +33,11 @@ import com.sdicons.json.model.JSONNull; import com.sdicons.json.model.JSONObject; import com.sdicons.json.model.JSONString; +import nu.validator.htmlparser.common.TokenHandler; +import nu.validator.htmlparser.impl.ElementName; +import nu.validator.htmlparser.impl.HtmlAttributes; +import nu.validator.htmlparser.impl.Tokenizer; + public class JSONArrayTokenHandler implements TokenHandler, ErrorHandler { private static final JSONString DOCTYPE = new JSONString("DOCTYPE"); @@ -102,7 +102,7 @@ public class JSONArrayTokenHandler implements TokenHandler, ErrorHandler { } public void endTag(ElementName eltName) throws SAXException { - String name = eltName.name; + String name = eltName.getName(); flushCharacters(); JSONArray token = new JSONArray(); token.getValue().add(END_TAG); @@ -123,7 +123,7 @@ public class JSONArrayTokenHandler implements TokenHandler, ErrorHandler { public void startTag(ElementName eltName, HtmlAttributes attributes, boolean selfClosing) throws SAXException { - String name = eltName.name; + String name = eltName.getName(); flushCharacters(); JSONArray token = new JSONArray(); token.getValue().add(START_TAG); diff --git a/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/TokenPrinter.java b/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/TokenPrinter.java index 0fa5972c8..03b8c8597 100644 --- a/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/TokenPrinter.java +++ b/parser/html/java/htmlparser/test-src/nu/validator/htmlparser/test/TokenPrinter.java @@ -29,6 +29,11 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; +import org.xml.sax.ErrorHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + import nu.validator.htmlparser.common.TokenHandler; import nu.validator.htmlparser.impl.ElementName; import nu.validator.htmlparser.impl.ErrorReportingTokenizer; @@ -36,11 +41,6 @@ import nu.validator.htmlparser.impl.HtmlAttributes; import nu.validator.htmlparser.impl.Tokenizer; import nu.validator.htmlparser.io.Driver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - public class TokenPrinter implements TokenHandler, ErrorHandler { private final Writer writer; @@ -94,7 +94,7 @@ public class TokenPrinter implements TokenHandler, ErrorHandler { public void endTag(ElementName eltName) throws SAXException { try { writer.write(')'); - writer.write(eltName.name); + writer.write(eltName.getName()); writer.write('\n'); } catch (IOException e) { throw new SAXException(e); @@ -117,7 +117,7 @@ public class TokenPrinter implements TokenHandler, ErrorHandler { throws SAXException { try { writer.write('('); - writer.write(eltName.name); + writer.write(eltName.getName()); writer.write('\n'); for (int i = 0; i < attributes.getLength(); i++) { writer.write('A'); diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java index 337394a89..432f08b90 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java @@ -72,6 +72,10 @@ public class AnnotationHelperVisitor<T> extends VoidVisitorAdapter<T> { return hasAnnotation("NoLength"); } + protected boolean unsigned() { + return hasAnnotation("Unsigned"); + } + protected boolean auto() { return hasAnnotation("Auto"); } @@ -88,6 +92,18 @@ public class AnnotationHelperVisitor<T> extends VoidVisitorAdapter<T> { return hasAnnotation("CharacterName"); } + protected boolean creator() { + return hasAnnotation("Creator"); + } + + protected boolean htmlCreator() { + return hasAnnotation("HtmlCreator"); + } + + protected boolean svgCreator() { + return hasAnnotation("SvgCreator"); + } + private boolean hasAnnotation(String anno) { if (currentAnnotations == null) { return false; diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java index 80216da0e..963d1ac68 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java @@ -117,7 +117,8 @@ public class CppTypes { "nsHtml5String", "nsNameSpaceManager", "nsIContent", "nsTraceRefcnt", "jArray", "nsHtml5ArrayCopy", "nsAHtml5TreeBuilderState", "nsHtml5Atoms", "nsHtml5ByteReadable", "nsIUnicodeDecoder", - "nsHtml5Macros", "nsIContentHandle" }; + "nsHtml5Macros", "nsIContentHandle", "nsHtml5Portability", + "nsHtml5ContentCreatorFunction"}; private static final String[] OTHER_DECLATIONS = {}; @@ -192,6 +193,10 @@ public class CppTypes { return "int32_t"; } + public String unsignedIntType() { + return "uint32_t"; + } + public String stringType() { return "nsHtml5String"; } @@ -228,6 +233,18 @@ public class CppTypes { return "nsIContentHandle*"; } + public String htmlCreatorType() { + return "mozilla::dom::HTMLContentCreatorFunction"; + } + + public String svgCreatorType() { + return "mozilla::dom::SVGContentCreatorFunction"; + } + + public String creatorType() { + return "nsHtml5ContentCreatorFunction"; + } + public String xhtmlNamespaceLiteral() { return "kNameSpaceID_XHTML"; } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java index f4f00070a..a97a9eba1 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java @@ -331,13 +331,7 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { } else if ("errorHandler".equals(n.getName())) { printer.print(cppTypes.errorHandler()); } else { - String prefixedName = javaClassName + "." + n.getName(); - String constant = symbolTable.cppDefinesByJavaNames.get(prefixedName); - if (constant != null) { - printer.print(constant); - } else { - printer.print(n.getName()); - } + printer.print(n.getName()); } } @@ -448,14 +442,6 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { printer.print("#include \""); printer.print(className); printer.printLn(".h\""); - if ("AttributeName".equals(javaClassName) - || "ElementName".equals(javaClassName)) { - printer.print("#include \""); - printer.print(cppTypes.classPrefix()); - printer.print("Releasable"); - printer.print(javaClassName); - printer.printLn(".h\""); - } printer.printLn(); } @@ -494,7 +480,15 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { name = cppTypes.stringType(); } } else if ("T".equals(name) || "Object".equals(name)) { - name = cppTypes.nodeType(); + if (htmlCreator()) { + name = cppTypes.htmlCreatorType(); + } else if (svgCreator()) { + name = cppTypes.svgCreatorType(); + } else if (creator()) { + name = cppTypes.creatorType(); + } else { + name = cppTypes.nodeType(); + } } else if ("TokenHandler".equals(name)) { name = cppTypes.classPrefix() + "TreeBuilder*"; } else if ("EncodingDeclarationHandler".equals(name)) { @@ -548,7 +542,11 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { case Float: throw new IllegalStateException("Unsupported primitive."); case Int: - printer.print(cppTypes.intType()); + if (unsigned()) { + printer.print(cppTypes.unsignedIntType()); + } else { + printer.print(cppTypes.intType()); + } break; case Long: throw new IllegalStateException("Unsupported primitive."); @@ -740,10 +738,14 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { printer.print(" "); printer.print(className); printer.print("::"); - if ("AttributeName".equals(n.getType().toString())) { - printer.print("ATTR_"); - } else if ("ElementName".equals(n.getType().toString())) { - printer.print("ELT_"); + String clazzName = n.getType().toString(); + String field = declarator.getId().toString(); + if (symbolTable.isAttributeOrElementName(clazzName, field)) { + if ("AttributeName".equals(clazzName)) { + printer.print("ATTR_"); + } else if ("ElementName".equals(clazzName)) { + printer.print("ELT_"); + } } declarator.getId().accept(this, arg); printer.print(" = "); @@ -1079,26 +1081,22 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { if ("DocumentMode".equals(scope.toString())) { // printer.print(cppTypes.documentModeType()); // printer.print("."); + } else if ("creator".equals(scope.toString()) || "this.creator".equals(scope.toString())) { + scope.accept(this, arg); + printer.print("."); } else { scope.accept(this, arg); printer.print("->"); } } else { - String prefixedName = clazzName + "." + field; - String constant = symbolTable.cppDefinesByJavaNames.get(prefixedName); - if (constant != null) { - printer.print(constant); - return; - } else { - printer.print(cppTypes.classPrefix()); - printer.print(clazzName); - printer.print("::"); - if (symbolTable.isNotAnAttributeOrElementName(field)) { - if ("AttributeName".equals(clazzName)) { - printer.print("ATTR_"); - } else if ("ElementName".equals(clazzName)) { - printer.print("ELT_"); - } + printer.print(cppTypes.classPrefix()); + printer.print(clazzName); + printer.print("::"); + if (symbolTable.isAttributeOrElementName(clazzName, field)) { + if ("AttributeName".equals(clazzName)) { + printer.print("ATTR_"); + } else if ("ElementName".equals(clazzName)) { + printer.print("ELT_"); } } } @@ -1337,7 +1335,8 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { if (clazzName == null) { scope.accept(this, arg); if ("length".equals(n.getName()) - || "charAt".equals(n.getName())) { + || "charAt".equals(n.getName()) + || "creator".equals(scope.toString())) { printer.print("."); } else { printer.print("->"); @@ -1383,19 +1382,12 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { suppressPointer = true; printTypeArgs(n.getTypeArgs(), arg); - if ("createAttributeName".equals(currentMethod) - || "elementNameByBuffer".equals(currentMethod)) { - printer.print(cppTypes.classPrefix()); - printer.print("Releasable"); - printer.print(n.getType().getName()); - } else { - n.getType().accept(this, arg); - } + n.getType().accept(this, arg); suppressPointer = false; if ("AttributeName".equals(n.getType().getName())) { List<Expression> args = n.getArgs(); - while (args.size() > 3) { + while (args != null && args.size() > 3) { args.remove(3); } } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/HVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/HVisitor.java index 25cf7aef1..902eb348a 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/HVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/HVisitor.java @@ -37,7 +37,6 @@ package nu.validator.htmlparser.cpptranslate; -import java.util.LinkedList; import java.util.List; import japa.parser.ast.body.FieldDeclaration; @@ -45,12 +44,9 @@ import japa.parser.ast.body.MethodDeclaration; import japa.parser.ast.body.ModifierSet; import japa.parser.ast.body.Parameter; import japa.parser.ast.body.VariableDeclarator; -import japa.parser.ast.expr.IntegerLiteralExpr; -import japa.parser.ast.expr.MethodCallExpr; import japa.parser.ast.stmt.BlockStmt; import japa.parser.ast.type.PrimitiveType; import japa.parser.ast.type.ReferenceType; -import japa.parser.ast.type.Type; public class HVisitor extends CppVisitor { @@ -60,8 +56,6 @@ public class HVisitor extends CppVisitor { private Visibility previousVisibility = Visibility.NONE; - private List<String> defines = new LinkedList<String>(); - /** * @see nu.validator.htmlparser.cpptranslate.CppVisitor#printMethodNamespace() */ @@ -145,10 +139,10 @@ public class HVisitor extends CppVisitor { */ @Override protected void endClassDeclaration() { printModifiers(ModifierSet.PUBLIC | ModifierSet.STATIC); - printer.printLn("void initializeStatics();"); + printer.printLn("void initializeStatics();"); printModifiers(ModifierSet.PUBLIC | ModifierSet.STATIC); - printer.printLn("void releaseStatics();"); - + printer.printLn("void releaseStatics();"); + printer.unindent(); printer.unindent(); @@ -161,13 +155,6 @@ public class HVisitor extends CppVisitor { printer.printLn("};"); printer.printLn(); - - for (String define : defines) { - printer.printLn(define); - } - - printer.printLn(); - printer.printLn(); printer.printLn("#endif"); } @@ -226,18 +213,16 @@ public class HVisitor extends CppVisitor { throw new IllegalStateException( "More than one variable declared by one declarator."); } - String name = javaClassName + "." + declarator.getId().getName(); - String value = declarator.getInit().toString(); - if ("Integer.MAX_VALUE".equals(value)) { - value = cppTypes.maxInteger(); - } - String longName = definePrefix + declarator.getId().getName(); - if (symbolTable.cppDefinesByJavaNames.containsKey(name)) { - throw new IllegalStateException( - "Duplicate #define constant local name: " + name); - } - symbolTable.cppDefinesByJavaNames.put(name, longName); - defines.add("#define " + longName + " " + value); + printModifiers(modifiers); + printer.print("const "); + n.getType().accept(this, arg); + printer.print(" "); + declarator.getId().accept(this, arg); + printer.print(" = "); + declarator.getInit().accept(this, arg); + printer.printLn(";"); + printer.printLn(); + symbolTable.addPrimitiveConstant(javaClassName, declarator.getId().toString()); } else { if (n.getType() instanceof ReferenceType) { ReferenceType rt = (ReferenceType) n.getType(); diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/Main.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/Main.java index 53347bd42..307d7d8a6 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/Main.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/Main.java @@ -37,28 +37,26 @@ package nu.validator.htmlparser.cpptranslate; -import japa.parser.JavaParser; -import japa.parser.ParseException; -import japa.parser.ast.CompilationUnit; - import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; +import japa.parser.JavaParser; +import japa.parser.ParseException; +import japa.parser.ast.CompilationUnit; + public class Main { static final String[] H_LIST = { + "AttributeName", + "ElementName", "Tokenizer", "TreeBuilder", "MetaScanner", - "AttributeName", - "ElementName", - "HtmlAttributes", "StackNode", "UTF16Buffer", "StateSnapshot", @@ -66,12 +64,11 @@ public class Main { }; private static final String[] CPP_LIST = { + "AttributeName", + "ElementName", "Tokenizer", "TreeBuilder", "MetaScanner", - "AttributeName", - "ElementName", - "HtmlAttributes", "StackNode", "UTF16Buffer", "StateSnapshot", diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/SymbolTable.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/SymbolTable.java index 970a2b64b..3619c923a 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/SymbolTable.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/SymbolTable.java @@ -38,11 +38,13 @@ package nu.validator.htmlparser.cpptranslate; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; public class SymbolTable { - public final Map<String, String> cppDefinesByJavaNames = new HashMap<String, String>(); + private final Set<StringPair> primitiveConstants = new HashSet<StringPair>(); private final Map<StringPair, Type> fields = new HashMap<StringPair, Type>(); @@ -51,17 +53,24 @@ public class SymbolTable { /** * This is a sad hack to work around the fact the there's no real symbol * table yet. - * - * @param name + * + * @param field * @return */ - public boolean isNotAnAttributeOrElementName(String name) { - return !("ATTRIBUTE_HASHES".equals(name) - || "ATTRIBUTE_NAMES".equals(name) - || "ELEMENT_HASHES".equals(name) - || "ELEMENT_NAMES".equals(name) || "ALL_NO_NS".equals(name)); + public boolean isAttributeOrElementName(String klazz, String field) { + if (isPrimitiveConstant(klazz, field)) { + return false; + } + return !("ATTRIBUTE_HASHES".equals(field) + || "ATTRIBUTE_NAMES".equals(field) + || "ELEMENT_HASHES".equals(field) + || "ELEMENT_NAMES".equals(field) || "ALL_NO_NS".equals(field)); } - + + public void addPrimitiveConstant(String klazz, String field) { + primitiveConstants.add(new StringPair(klazz, field)); + } + public void putFieldType(String klazz, String field, Type type) { fields.put(new StringPair(klazz, field), type); } @@ -69,7 +78,11 @@ public class SymbolTable { public void putMethodReturnType(String klazz, String method, Type type) { methodReturns.put(new StringPair(klazz, method), type); } - + + public boolean isPrimitiveConstant(String klazz, String field) { + return primitiveConstants.contains(new StringPair(klazz, field)); + } + public Type getFieldType(String klazz, String field) { return fields.get(new StringPair(klazz, field)); } diff --git a/parser/html/moz.build b/parser/html/moz.build index cd6031abe..3556a0071 100644 --- a/parser/html/moz.build +++ b/parser/html/moz.build @@ -19,7 +19,10 @@ EXPORTS += [ 'nsHtml5AtomList.h', 'nsHtml5Atoms.h', 'nsHtml5AtomTable.h', + 'nsHtml5AttributeEntry.h', + 'nsHtml5AttributeName.h', 'nsHtml5ByteReadable.h', + 'nsHtml5ContentCreatorFunction.h', 'nsHtml5DependentUTF16Buffer.h', 'nsHtml5DocumentBuilder.h', 'nsHtml5DocumentMode.h', @@ -34,6 +37,7 @@ EXPORTS += [ 'nsHtml5OwningUTF16Buffer.h', 'nsHtml5Parser.h', 'nsHtml5PlainTextUtils.h', + 'nsHtml5Portability.h', 'nsHtml5RefPtr.h', 'nsHtml5Speculation.h', 'nsHtml5SpeculativeLoad.h', @@ -71,8 +75,6 @@ UNIFIED_SOURCES += [ 'nsHtml5Parser.cpp', 'nsHtml5PlainTextUtils.cpp', 'nsHtml5Portability.cpp', - 'nsHtml5ReleasableAttributeName.cpp', - 'nsHtml5ReleasableElementName.cpp', 'nsHtml5Speculation.cpp', 'nsHtml5SpeculativeLoad.cpp', 'nsHtml5StackNode.cpp', diff --git a/parser/html/nsHtml5AtomList.h b/parser/html/nsHtml5AtomList.h index ce9fcd682..71617e4ea 100644 --- a/parser/html/nsHtml5AtomList.h +++ b/parser/html/nsHtml5AtomList.h @@ -20,730 +20,657 @@ * DEALINGS IN THE SOFTWARE. */ -HTML5_ATOM(emptystring, "") -HTML5_ATOM(title, "title") -HTML5_ATOM(desc, "desc") -HTML5_ATOM(foreignObject, "foreignObject") -HTML5_ATOM(mi, "mi") -HTML5_ATOM(mo, "mo") -HTML5_ATOM(mn, "mn") -HTML5_ATOM(ms, "ms") -HTML5_ATOM(mtext, "mtext") -HTML5_ATOM(annotation_xml, "annotation-xml") -HTML5_ATOM(template_, "template") -HTML5_ATOM(textarea, "textarea") -HTML5_ATOM(style, "style") -HTML5_ATOM(xmp, "xmp") -HTML5_ATOM(iframe, "iframe") -HTML5_ATOM(noembed, "noembed") -HTML5_ATOM(noframes, "noframes") -HTML5_ATOM(noscript, "noscript") -HTML5_ATOM(plaintext, "plaintext") -HTML5_ATOM(script, "script") -HTML5_ATOM(svg, "svg") -HTML5_ATOM(table, "table") -HTML5_ATOM(caption, "caption") -HTML5_ATOM(p, "p") -HTML5_ATOM(address, "address") -HTML5_ATOM(div, "div") -HTML5_ATOM(a, "a") -HTML5_ATOM(nobr, "nobr") -HTML5_ATOM(input, "input") -HTML5_ATOM(option, "option") -HTML5_ATOM(ruby, "ruby") -HTML5_ATOM(rtc, "rtc") -HTML5_ATOM(select, "select") -HTML5_ATOM(optgroup, "optgroup") -HTML5_ATOM(tbody, "tbody") -HTML5_ATOM(tfoot, "tfoot") -HTML5_ATOM(thead, "thead") -HTML5_ATOM(frameset, "frameset") -HTML5_ATOM(button, "button") -HTML5_ATOM(ul, "ul") -HTML5_ATOM(ol, "ol") -HTML5_ATOM(html, "html") -HTML5_ATOM(td, "td") -HTML5_ATOM(th, "th") -HTML5_ATOM(tr, "tr") -HTML5_ATOM(colgroup, "colgroup") -HTML5_ATOM(head, "head") -HTML5_ATOM(body, "body") -HTML5_ATOM(form, "form") HTML5_ATOM(xmlns, "xmlns") HTML5_ATOM(xlink, "xlink") HTML5_ATOM(xml, "xml") +HTML5_ATOM(alt, "alt") +HTML5_ATOM(dir, "dir") +HTML5_ATOM(dur, "dur") +HTML5_ATOM(end, "end") +HTML5_ATOM(for_, "for") +HTML5_ATOM(in2, "in2") +HTML5_ATOM(low, "low") +HTML5_ATOM(min, "min") +HTML5_ATOM(max, "max") +HTML5_ATOM(rel, "rel") +HTML5_ATOM(rev, "rev") +HTML5_ATOM(src, "src") HTML5_ATOM(d, "d") HTML5_ATOM(k, "k") HTML5_ATOM(r, "r") HTML5_ATOM(x, "x") HTML5_ATOM(y, "y") HTML5_ATOM(z, "z") -HTML5_ATOM(by, "by") -HTML5_ATOM(cx, "cx") -HTML5_ATOM(cy, "cy") -HTML5_ATOM(dx, "dx") -HTML5_ATOM(dy, "dy") -HTML5_ATOM(g2, "g2") +HTML5_ATOM(cap_height, "cap-height") HTML5_ATOM(g1, "g1") -HTML5_ATOM(fx, "fx") -HTML5_ATOM(fy, "fy") -HTML5_ATOM(k4, "k4") -HTML5_ATOM(k2, "k2") -HTML5_ATOM(k3, "k3") HTML5_ATOM(k1, "k1") -HTML5_ATOM(id, "id") -HTML5_ATOM(in, "in") -HTML5_ATOM(u2, "u2") HTML5_ATOM(u1, "u1") -HTML5_ATOM(rt, "rt") -HTML5_ATOM(rx, "rx") -HTML5_ATOM(ry, "ry") -HTML5_ATOM(to, "to") -HTML5_ATOM(y2, "y2") -HTML5_ATOM(y1, "y1") HTML5_ATOM(x1, "x1") +HTML5_ATOM(y1, "y1") +HTML5_ATOM(g2, "g2") +HTML5_ATOM(k2, "k2") +HTML5_ATOM(u2, "u2") HTML5_ATOM(x2, "x2") -HTML5_ATOM(alt, "alt") -HTML5_ATOM(dir, "dir") -HTML5_ATOM(dur, "dur") -HTML5_ATOM(end, "end") -HTML5_ATOM(for_, "for") -HTML5_ATOM(in2, "in2") -HTML5_ATOM(max, "max") -HTML5_ATOM(min, "min") -HTML5_ATOM(low, "low") -HTML5_ATOM(rel, "rel") -HTML5_ATOM(rev, "rev") -HTML5_ATOM(src, "src") -HTML5_ATOM(axis, "axis") -HTML5_ATOM(abbr, "abbr") -HTML5_ATOM(bbox, "bbox") -HTML5_ATOM(cite, "cite") -HTML5_ATOM(code, "code") -HTML5_ATOM(bias, "bias") -HTML5_ATOM(cols, "cols") -HTML5_ATOM(clip, "clip") -HTML5_ATOM(char_, "char") -HTML5_ATOM(base, "base") -HTML5_ATOM(edge, "edge") -HTML5_ATOM(data, "data") -HTML5_ATOM(fill, "fill") -HTML5_ATOM(from, "from") -HTML5_ATOM(face, "face") -HTML5_ATOM(high, "high") -HTML5_ATOM(href, "href") -HTML5_ATOM(open, "open") -HTML5_ATOM(icon, "icon") -HTML5_ATOM(name, "name") -HTML5_ATOM(mode, "mode") -HTML5_ATOM(mask, "mask") -HTML5_ATOM(link, "link") +HTML5_ATOM(y2, "y2") +HTML5_ATOM(k3, "k3") +HTML5_ATOM(k4, "k4") +HTML5_ATOM(xml_space, "xml:space") +HTML5_ATOM(space, "space") +HTML5_ATOM(xml_lang, "xml:lang") HTML5_ATOM(lang, "lang") -HTML5_ATOM(loop, "loop") -HTML5_ATOM(list, "list") -HTML5_ATOM(type, "type") -HTML5_ATOM(when, "when") -HTML5_ATOM(wrap, "wrap") -HTML5_ATOM(text, "text") -HTML5_ATOM(path, "path") -HTML5_ATOM(ping, "ping") -HTML5_ATOM(refx, "refx") -HTML5_ATOM(refX, "refX") -HTML5_ATOM(refy, "refy") -HTML5_ATOM(refY, "refY") -HTML5_ATOM(size, "size") -HTML5_ATOM(seed, "seed") -HTML5_ATOM(rows, "rows") -HTML5_ATOM(span, "span") -HTML5_ATOM(step, "step") -HTML5_ATOM(role, "role") -HTML5_ATOM(xref, "xref") -HTML5_ATOM(async, "async") -HTML5_ATOM(alink, "alink") -HTML5_ATOM(align, "align") -HTML5_ATOM(close, "close") -HTML5_ATOM(color, "color") -HTML5_ATOM(class_, "class") +HTML5_ATOM(xml_base, "xml:base") +HTML5_ATOM(base, "base") +HTML5_ATOM(aria_grab, "aria-grab") +HTML5_ATOM(aria_valuemax, "aria-valuemax") +HTML5_ATOM(aria_labelledby, "aria-labelledby") +HTML5_ATOM(aria_describedby, "aria-describedby") +HTML5_ATOM(aria_disabled, "aria-disabled") +HTML5_ATOM(aria_checked, "aria-checked") +HTML5_ATOM(aria_selected, "aria-selected") +HTML5_ATOM(aria_dropeffect, "aria-dropeffect") +HTML5_ATOM(aria_required, "aria-required") +HTML5_ATOM(aria_expanded, "aria-expanded") +HTML5_ATOM(aria_pressed, "aria-pressed") +HTML5_ATOM(aria_level, "aria-level") +HTML5_ATOM(aria_channel, "aria-channel") +HTML5_ATOM(aria_hidden, "aria-hidden") +HTML5_ATOM(aria_secret, "aria-secret") +HTML5_ATOM(aria_posinset, "aria-posinset") +HTML5_ATOM(aria_atomic, "aria-atomic") +HTML5_ATOM(aria_invalid, "aria-invalid") +HTML5_ATOM(aria_templateid, "aria-templateid") +HTML5_ATOM(aria_valuemin, "aria-valuemin") +HTML5_ATOM(aria_multiselectable, "aria-multiselectable") +HTML5_ATOM(aria_controls, "aria-controls") +HTML5_ATOM(aria_multiline, "aria-multiline") +HTML5_ATOM(aria_readonly, "aria-readonly") +HTML5_ATOM(aria_owns, "aria-owns") +HTML5_ATOM(aria_activedescendant, "aria-activedescendant") +HTML5_ATOM(aria_relevant, "aria-relevant") +HTML5_ATOM(aria_datatype, "aria-datatype") +HTML5_ATOM(aria_valuenow, "aria-valuenow") +HTML5_ATOM(aria_sort, "aria-sort") +HTML5_ATOM(aria_autocomplete, "aria-autocomplete") +HTML5_ATOM(aria_flowto, "aria-flowto") +HTML5_ATOM(aria_busy, "aria-busy") +HTML5_ATOM(aria_live, "aria-live") +HTML5_ATOM(aria_haspopup, "aria-haspopup") +HTML5_ATOM(aria_setsize, "aria-setsize") HTML5_ATOM(clear, "clear") -HTML5_ATOM(begin, "begin") -HTML5_ATOM(depth, "depth") -HTML5_ATOM(defer, "defer") -HTML5_ATOM(fence, "fence") -HTML5_ATOM(frame, "frame") +HTML5_ATOM(dataformatas, "dataformatas") +HTML5_ATOM(disabled, "disabled") +HTML5_ATOM(datafld, "datafld") +HTML5_ATOM(default_, "default") +HTML5_ATOM(datasrc, "datasrc") +HTML5_ATOM(data, "data") +HTML5_ATOM(equalcolumns, "equalcolumns") +HTML5_ATOM(equalrows, "equalrows") +HTML5_ATOM(hspace, "hspace") HTML5_ATOM(ismap, "ismap") -HTML5_ATOM(onend, "onend") -HTML5_ATOM(index, "index") -HTML5_ATOM(order, "order") -HTML5_ATOM(other, "other") -HTML5_ATOM(oncut, "oncut") -HTML5_ATOM(nargs, "nargs") -HTML5_ATOM(media, "media") -HTML5_ATOM(label, "label") HTML5_ATOM(local, "local") -HTML5_ATOM(width, "width") -HTML5_ATOM(vlink, "vlink") -HTML5_ATOM(value, "value") -HTML5_ATOM(slope, "slope") -HTML5_ATOM(shape, "shape") -HTML5_ATOM(scope, "scope") -HTML5_ATOM(scale, "scale") -HTML5_ATOM(speed, "speed") -HTML5_ATOM(rules, "rules") -HTML5_ATOM(stemh, "stemh") -HTML5_ATOM(sizes, "sizes") -HTML5_ATOM(stemv, "stemv") -HTML5_ATOM(start, "start") -HTML5_ATOM(accept, "accept") -HTML5_ATOM(accent, "accent") -HTML5_ATOM(ascent, "ascent") -HTML5_ATOM(active, "active") -HTML5_ATOM(altimg, "altimg") -HTML5_ATOM(action, "action") -HTML5_ATOM(border, "border") -HTML5_ATOM(cursor, "cursor") -HTML5_ATOM(coords, "coords") -HTML5_ATOM(filter, "filter") -HTML5_ATOM(format, "format") -HTML5_ATOM(hidden, "hidden") -HTML5_ATOM(hspace, "hspace") -HTML5_ATOM(height, "height") -HTML5_ATOM(onmove, "onmove") -HTML5_ATOM(onload, "onload") -HTML5_ATOM(ondrag, "ondrag") -HTML5_ATOM(origin, "origin") -HTML5_ATOM(onzoom, "onzoom") -HTML5_ATOM(onhelp, "onhelp") -HTML5_ATOM(onstop, "onstop") -HTML5_ATOM(ondrop, "ondrop") -HTML5_ATOM(onblur, "onblur") -HTML5_ATOM(object, "object") -HTML5_ATOM(offset, "offset") -HTML5_ATOM(orient, "orient") -HTML5_ATOM(oncopy, "oncopy") -HTML5_ATOM(nowrap, "nowrap") -HTML5_ATOM(nohref, "nohref") -HTML5_ATOM(macros, "macros") -HTML5_ATOM(method, "method") -HTML5_ATOM(lowsrc, "lowsrc") HTML5_ATOM(lspace, "lspace") -HTML5_ATOM(lquote, "lquote") -HTML5_ATOM(usemap, "usemap") -HTML5_ATOM(widths, "widths") -HTML5_ATOM(target, "target") -HTML5_ATOM(values, "values") -HTML5_ATOM(valign, "valign") -HTML5_ATOM(vspace, "vspace") -HTML5_ATOM(poster, "poster") -HTML5_ATOM(points, "points") -HTML5_ATOM(prompt, "prompt") -HTML5_ATOM(srcdoc, "srcdoc") -HTML5_ATOM(scoped, "scoped") -HTML5_ATOM(string, "string") -HTML5_ATOM(scheme, "scheme") -HTML5_ATOM(stroke, "stroke") -HTML5_ATOM(radius, "radius") -HTML5_ATOM(result, "result") -HTML5_ATOM(repeat, "repeat") -HTML5_ATOM(srcset, "srcset") +HTML5_ATOM(movablelimits, "movablelimits") +HTML5_ATOM(notation, "notation") +HTML5_ATOM(ondatasetchanged, "ondatasetchanged") +HTML5_ATOM(ondataavailable, "ondataavailable") +HTML5_ATOM(onpaste, "onpaste") +HTML5_ATOM(ondatasetcomplete, "ondatasetcomplete") HTML5_ATOM(rspace, "rspace") +HTML5_ATOM(rowalign, "rowalign") HTML5_ATOM(rotate, "rotate") -HTML5_ATOM(rquote, "rquote") -HTML5_ATOM(alttext, "alttext") -HTML5_ATOM(archive, "archive") -HTML5_ATOM(azimuth, "azimuth") -HTML5_ATOM(closure, "closure") +HTML5_ATOM(separator, "separator") +HTML5_ATOM(separators, "separators") +HTML5_ATOM(v_mathematical, "v-mathematical") +HTML5_ATOM(vspace, "vspace") +HTML5_ATOM(v_hanging, "v-hanging") +HTML5_ATOM(xchannelselector, "xchannelselector") +HTML5_ATOM(xChannelSelector, "xChannelSelector") +HTML5_ATOM(ychannelselector, "ychannelselector") +HTML5_ATOM(yChannelSelector, "yChannelSelector") +HTML5_ATOM(arabic_form, "arabic-form") +HTML5_ATOM(enable_background, "enable-background") +HTML5_ATOM(ondblclick, "ondblclick") +HTML5_ATOM(onabort, "onabort") +HTML5_ATOM(calcmode, "calcmode") +HTML5_ATOM(calcMode, "calcMode") HTML5_ATOM(checked, "checked") -HTML5_ATOM(classid, "classid") -HTML5_ATOM(charoff, "charoff") -HTML5_ATOM(bgcolor, "bgcolor") -HTML5_ATOM(colspan, "colspan") -HTML5_ATOM(charset, "charset") -HTML5_ATOM(compact, "compact") -HTML5_ATOM(content, "content") -HTML5_ATOM(enctype, "enctype") -HTML5_ATOM(datasrc, "datasrc") -HTML5_ATOM(datafld, "datafld") -HTML5_ATOM(declare, "declare") -HTML5_ATOM(display, "display") -HTML5_ATOM(divisor, "divisor") -HTML5_ATOM(default_, "default") HTML5_ATOM(descent, "descent") -HTML5_ATOM(kerning, "kerning") -HTML5_ATOM(hanging, "hanging") -HTML5_ATOM(headers, "headers") -HTML5_ATOM(onpaste, "onpaste") -HTML5_ATOM(onclick, "onclick") -HTML5_ATOM(optimum, "optimum") -HTML5_ATOM(onbegin, "onbegin") -HTML5_ATOM(onkeyup, "onkeyup") -HTML5_ATOM(onfocus, "onfocus") -HTML5_ATOM(onerror, "onerror") -HTML5_ATOM(oninput, "oninput") -HTML5_ATOM(onabort, "onabort") -HTML5_ATOM(onstart, "onstart") -HTML5_ATOM(onreset, "onreset") +HTML5_ATOM(fence, "fence") +HTML5_ATOM(onscroll, "onscroll") +HTML5_ATOM(onactivate, "onactivate") HTML5_ATOM(opacity, "opacity") -HTML5_ATOM(noshade, "noshade") -HTML5_ATOM(minsize, "minsize") -HTML5_ATOM(maxsize, "maxsize") -HTML5_ATOM(largeop, "largeop") -HTML5_ATOM(unicode_, "unicode") -HTML5_ATOM(targetx, "targetx") -HTML5_ATOM(targetX, "targetX") -HTML5_ATOM(targety, "targety") -HTML5_ATOM(targetY, "targetY") -HTML5_ATOM(viewbox, "viewbox") -HTML5_ATOM(viewBox, "viewBox") -HTML5_ATOM(version, "version") -HTML5_ATOM(pattern, "pattern") -HTML5_ATOM(profile, "profile") HTML5_ATOM(spacing, "spacing") -HTML5_ATOM(restart, "restart") -HTML5_ATOM(rowspan, "rowspan") +HTML5_ATOM(specularexponent, "specularexponent") +HTML5_ATOM(specularExponent, "specularExponent") +HTML5_ATOM(specularconstant, "specularconstant") +HTML5_ATOM(specularConstant, "specularConstant") +HTML5_ATOM(specification, "specification") +HTML5_ATOM(thickmathspace, "thickmathspace") +HTML5_ATOM(unicode_, "unicode") +HTML5_ATOM(unicode_bidi, "unicode-bidi") +HTML5_ATOM(unicode_range, "unicode-range") +HTML5_ATOM(border, "border") +HTML5_ATOM(id, "id") +HTML5_ATOM(gradienttransform, "gradienttransform") +HTML5_ATOM(gradientTransform, "gradientTransform") +HTML5_ATOM(gradientunits, "gradientunits") +HTML5_ATOM(gradientUnits, "gradientUnits") +HTML5_ATOM(hidden, "hidden") +HTML5_ATOM(headers, "headers") +HTML5_ATOM(readonly, "readonly") +HTML5_ATOM(rendering_intent, "rendering-intent") +HTML5_ATOM(seed, "seed") +HTML5_ATOM(srcdoc, "srcdoc") +HTML5_ATOM(stddeviation, "stddeviation") +HTML5_ATOM(stdDeviation, "stdDeviation") HTML5_ATOM(sandbox, "sandbox") -HTML5_ATOM(summary, "summary") -HTML5_ATOM(standby, "standby") -HTML5_ATOM(replace, "replace") -HTML5_ATOM(autoplay, "autoplay") -HTML5_ATOM(additive, "additive") -HTML5_ATOM(calcmode, "calcmode") -HTML5_ATOM(calcMode, "calcMode") -HTML5_ATOM(codetype, "codetype") -HTML5_ATOM(codebase, "codebase") -HTML5_ATOM(controls, "controls") +HTML5_ATOM(v_ideographic, "v-ideographic") +HTML5_ATOM(word_spacing, "word-spacing") +HTML5_ATOM(accentunder, "accentunder") +HTML5_ATOM(accept_charset, "accept-charset") +HTML5_ATOM(accesskey, "accesskey") +HTML5_ATOM(accent_height, "accent-height") +HTML5_ATOM(accent, "accent") +HTML5_ATOM(ascent, "ascent") +HTML5_ATOM(accept, "accept") HTML5_ATOM(bevelled, "bevelled") +HTML5_ATOM(basefrequency, "basefrequency") +HTML5_ATOM(baseFrequency, "baseFrequency") +HTML5_ATOM(baseline_shift, "baseline-shift") +HTML5_ATOM(baseprofile, "baseprofile") +HTML5_ATOM(baseProfile, "baseProfile") HTML5_ATOM(baseline, "baseline") -HTML5_ATOM(exponent, "exponent") -HTML5_ATOM(edgemode, "edgemode") -HTML5_ATOM(edgeMode, "edgeMode") -HTML5_ATOM(encoding, "encoding") -HTML5_ATOM(glyphref, "glyphref") -HTML5_ATOM(glyphRef, "glyphRef") +HTML5_ATOM(code, "code") +HTML5_ATOM(codetype, "codetype") +HTML5_ATOM(codebase, "codebase") +HTML5_ATOM(cite, "cite") +HTML5_ATOM(defer, "defer") HTML5_ATOM(datetime, "datetime") -HTML5_ATOM(disabled, "disabled") -HTML5_ATOM(fontsize, "fontsize") -HTML5_ATOM(keytimes, "keytimes") -HTML5_ATOM(keyTimes, "keyTimes") -HTML5_ATOM(panose_1, "panose-1") -HTML5_ATOM(hreflang, "hreflang") -HTML5_ATOM(onresize, "onresize") -HTML5_ATOM(onchange, "onchange") -HTML5_ATOM(onbounce, "onbounce") -HTML5_ATOM(onunload, "onunload") -HTML5_ATOM(onfinish, "onfinish") -HTML5_ATOM(onscroll, "onscroll") -HTML5_ATOM(operator_, "operator") -HTML5_ATOM(overflow, "overflow") -HTML5_ATOM(onsubmit, "onsubmit") -HTML5_ATOM(onrepeat, "onrepeat") -HTML5_ATOM(onselect, "onselect") -HTML5_ATOM(notation, "notation") -HTML5_ATOM(noresize, "noresize") -HTML5_ATOM(manifest, "manifest") -HTML5_ATOM(mathsize, "mathsize") -HTML5_ATOM(multiple, "multiple") -HTML5_ATOM(longdesc, "longdesc") -HTML5_ATOM(language, "language") -HTML5_ATOM(tabindex, "tabindex") -HTML5_ATOM(property, "property") -HTML5_ATOM(readonly, "readonly") -HTML5_ATOM(selected, "selected") -HTML5_ATOM(rowlines, "rowlines") -HTML5_ATOM(seamless, "seamless") -HTML5_ATOM(rowalign, "rowalign") -HTML5_ATOM(stretchy, "stretchy") -HTML5_ATOM(required, "required") -HTML5_ATOM(xml_base, "xml:base") -HTML5_ATOM(xml_lang, "xml:lang") -HTML5_ATOM(x_height, "x-height") -HTML5_ATOM(aria_owns, "aria-owns") -HTML5_ATOM(autofocus, "autofocus") -HTML5_ATOM(aria_sort, "aria-sort") -HTML5_ATOM(accesskey, "accesskey") -HTML5_ATOM(aria_busy, "aria-busy") -HTML5_ATOM(aria_grab, "aria-grab") -HTML5_ATOM(amplitude, "amplitude") -HTML5_ATOM(aria_live, "aria-live") -HTML5_ATOM(clip_rule, "clip-rule") -HTML5_ATOM(clip_path, "clip-path") -HTML5_ATOM(equalrows, "equalrows") -HTML5_ATOM(elevation, "elevation") HTML5_ATOM(direction, "direction") -HTML5_ATOM(draggable, "draggable") -HTML5_ATOM(fill_rule, "fill-rule") -HTML5_ATOM(fontstyle, "fontstyle") -HTML5_ATOM(font_size, "font-size") -HTML5_ATOM(keysystem, "keysystem") -HTML5_ATOM(keypoints, "keypoints") -HTML5_ATOM(keyPoints, "keyPoints") +HTML5_ATOM(edgemode, "edgemode") +HTML5_ATOM(edgeMode, "edgeMode") +HTML5_ATOM(edge, "edge") +HTML5_ATOM(face, "face") HTML5_ATOM(hidefocus, "hidefocus") -HTML5_ATOM(onmessage, "onmessage") +HTML5_ATOM(index, "index") +HTML5_ATOM(irrelevant, "irrelevant") HTML5_ATOM(intercept, "intercept") -HTML5_ATOM(ondragend, "ondragend") -HTML5_ATOM(onmoveend, "onmoveend") -HTML5_ATOM(oninvalid, "oninvalid") HTML5_ATOM(integrity, "integrity") -HTML5_ATOM(onkeydown, "onkeydown") -HTML5_ATOM(onfocusin, "onfocusin") -HTML5_ATOM(onmouseup, "onmouseup") -HTML5_ATOM(inputmode, "inputmode") -HTML5_ATOM(onrowexit, "onrowexit") -HTML5_ATOM(mathcolor, "mathcolor") -HTML5_ATOM(maskunits, "maskunits") -HTML5_ATOM(maskUnits, "maskUnits") -HTML5_ATOM(maxlength, "maxlength") HTML5_ATOM(linebreak, "linebreak") -HTML5_ATOM(transform, "transform") -HTML5_ATOM(v_hanging, "v-hanging") -HTML5_ATOM(valuetype, "valuetype") -HTML5_ATOM(pointsatz, "pointsatz") -HTML5_ATOM(pointsAtZ, "pointsAtZ") -HTML5_ATOM(pointsatx, "pointsatx") -HTML5_ATOM(pointsAtX, "pointsAtX") -HTML5_ATOM(pointsaty, "pointsaty") -HTML5_ATOM(pointsAtY, "pointsAtY") -HTML5_ATOM(symmetric, "symmetric") -HTML5_ATOM(scrolling, "scrolling") +HTML5_ATOM(label, "label") +HTML5_ATOM(linethickness, "linethickness") +HTML5_ATOM(mode, "mode") +HTML5_ATOM(name, "name") +HTML5_ATOM(noresize, "noresize") +HTML5_ATOM(onbeforeunload, "onbeforeunload") +HTML5_ATOM(onrepeat, "onrepeat") +HTML5_ATOM(object, "object") +HTML5_ATOM(onselect, "onselect") +HTML5_ATOM(order, "order") +HTML5_ATOM(other, "other") +HTML5_ATOM(onreset, "onreset") +HTML5_ATOM(oncellchange, "oncellchange") +HTML5_ATOM(onreadystatechange, "onreadystatechange") +HTML5_ATOM(onmessage, "onmessage") +HTML5_ATOM(onbegin, "onbegin") +HTML5_ATOM(onhelp, "onhelp") +HTML5_ATOM(onbeforeprint, "onbeforeprint") +HTML5_ATOM(orient, "orient") +HTML5_ATOM(orientation, "orientation") +HTML5_ATOM(onbeforecopy, "onbeforecopy") +HTML5_ATOM(onselectstart, "onselectstart") +HTML5_ATOM(onbeforepaste, "onbeforepaste") +HTML5_ATOM(onbeforeupdate, "onbeforeupdate") +HTML5_ATOM(ondeactivate, "ondeactivate") +HTML5_ATOM(onbeforeactivate, "onbeforeactivate") +HTML5_ATOM(onbefordeactivate, "onbefordeactivate") +HTML5_ATOM(onkeypress, "onkeypress") +HTML5_ATOM(onkeyup, "onkeyup") +HTML5_ATOM(onbeforeeditfocus, "onbeforeeditfocus") +HTML5_ATOM(onbeforecut, "onbeforecut") +HTML5_ATOM(onkeydown, "onkeydown") +HTML5_ATOM(onresize, "onresize") +HTML5_ATOM(repeat, "repeat") +HTML5_ATOM(repeat_max, "repeat-max") +HTML5_ATOM(referrerpolicy, "referrerpolicy") +HTML5_ATOM(rules, "rules") +HTML5_ATOM(repeat_min, "repeat-min") +HTML5_ATOM(role, "role") +HTML5_ATOM(repeatcount, "repeatcount") +HTML5_ATOM(repeatCount, "repeatCount") +HTML5_ATOM(repeat_start, "repeat-start") +HTML5_ATOM(repeat_template, "repeat-template") HTML5_ATOM(repeatdur, "repeatdur") HTML5_ATOM(repeatDur, "repeatDur") +HTML5_ATOM(selected, "selected") +HTML5_ATOM(speed, "speed") +HTML5_ATOM(sizes, "sizes") +HTML5_ATOM(superscriptshift, "superscriptshift") +HTML5_ATOM(stretchy, "stretchy") +HTML5_ATOM(scheme, "scheme") +HTML5_ATOM(spreadmethod, "spreadmethod") +HTML5_ATOM(spreadMethod, "spreadMethod") HTML5_ATOM(selection, "selection") -HTML5_ATOM(separator, "separator") -HTML5_ATOM(xml_space, "xml:space") -HTML5_ATOM(space, "space") -HTML5_ATOM(autosubmit, "autosubmit") +HTML5_ATOM(size, "size") +HTML5_ATOM(type, "type") +HTML5_ATOM(unselectable, "unselectable") +HTML5_ATOM(underline_position, "underline-position") +HTML5_ATOM(underline_thickness, "underline-thickness") +HTML5_ATOM(x_height, "x-height") +HTML5_ATOM(diffuseconstant, "diffuseconstant") +HTML5_ATOM(diffuseConstant, "diffuseConstant") +HTML5_ATOM(href, "href") +HTML5_ATOM(hreflang, "hreflang") +HTML5_ATOM(onafterprint, "onafterprint") +HTML5_ATOM(onafterupdate, "onafterupdate") +HTML5_ATOM(profile, "profile") +HTML5_ATOM(surfacescale, "surfacescale") +HTML5_ATOM(surfaceScale, "surfaceScale") +HTML5_ATOM(xref, "xref") +HTML5_ATOM(align, "align") +HTML5_ATOM(alignment_baseline, "alignment-baseline") +HTML5_ATOM(alignmentscope, "alignmentscope") +HTML5_ATOM(draggable, "draggable") +HTML5_ATOM(height, "height") +HTML5_ATOM(hanging, "hanging") +HTML5_ATOM(image_rendering, "image-rendering") +HTML5_ATOM(language, "language") +HTML5_ATOM(largeop, "largeop") +HTML5_ATOM(longdesc, "longdesc") +HTML5_ATOM(lengthadjust, "lengthadjust") +HTML5_ATOM(lengthAdjust, "lengthAdjust") +HTML5_ATOM(marginheight, "marginheight") +HTML5_ATOM(marginwidth, "marginwidth") +HTML5_ATOM(nargs, "nargs") +HTML5_ATOM(origin, "origin") +HTML5_ATOM(ping, "ping") +HTML5_ATOM(target, "target") +HTML5_ATOM(targetx, "targetx") +HTML5_ATOM(targetX, "targetX") +HTML5_ATOM(targety, "targety") +HTML5_ATOM(targetY, "targetY") HTML5_ATOM(alphabetic, "alphabetic") +HTML5_ATOM(archive, "archive") +HTML5_ATOM(high, "high") +HTML5_ATOM(lighting_color, "lighting-color") +HTML5_ATOM(mathematical, "mathematical") +HTML5_ATOM(mathbackground, "mathbackground") +HTML5_ATOM(method, "method") +HTML5_ATOM(mathvariant, "mathvariant") +HTML5_ATOM(mathcolor, "mathcolor") +HTML5_ATOM(mathsize, "mathsize") +HTML5_ATOM(noshade, "noshade") +HTML5_ATOM(onchange, "onchange") +HTML5_ATOM(pathlength, "pathlength") +HTML5_ATOM(pathLength, "pathLength") +HTML5_ATOM(path, "path") +HTML5_ATOM(altimg, "altimg") HTML5_ATOM(actiontype, "actiontype") -HTML5_ATOM(accumulate, "accumulate") -HTML5_ATOM(aria_level, "aria-level") -HTML5_ATOM(columnspan, "columnspan") -HTML5_ATOM(cap_height, "cap-height") +HTML5_ATOM(action, "action") +HTML5_ATOM(active, "active") +HTML5_ATOM(additive, "additive") +HTML5_ATOM(begin, "begin") +HTML5_ATOM(dominant_baseline, "dominant-baseline") +HTML5_ATOM(divisor, "divisor") +HTML5_ATOM(definitionurl, "definitionurl") +HTML5_ATOM(definitionURL, "definitionURL") +HTML5_ATOM(horiz_adv_x, "horiz-adv-x") +HTML5_ATOM(horiz_origin_x, "horiz-origin-x") +HTML5_ATOM(horiz_origin_y, "horiz-origin-y") +HTML5_ATOM(limitingconeangle, "limitingconeangle") +HTML5_ATOM(limitingConeAngle, "limitingConeAngle") +HTML5_ATOM(mediummathspace, "mediummathspace") +HTML5_ATOM(media, "media") +HTML5_ATOM(manifest, "manifest") +HTML5_ATOM(onfilterchange, "onfilterchange") +HTML5_ATOM(onfinish, "onfinish") +HTML5_ATOM(optimum, "optimum") +HTML5_ATOM(radiogroup, "radiogroup") +HTML5_ATOM(radius, "radius") +HTML5_ATOM(scriptlevel, "scriptlevel") +HTML5_ATOM(scriptsizemultiplier, "scriptsizemultiplier") +HTML5_ATOM(string, "string") +HTML5_ATOM(strikethrough_position, "strikethrough-position") +HTML5_ATOM(strikethrough_thickness, "strikethrough-thickness") +HTML5_ATOM(scriptminsize, "scriptminsize") +HTML5_ATOM(tabindex, "tabindex") +HTML5_ATOM(valign, "valign") +HTML5_ATOM(visibility, "visibility") HTML5_ATOM(background, "background") -HTML5_ATOM(glyph_name, "glyph-name") -HTML5_ATOM(groupalign, "groupalign") -HTML5_ATOM(fontfamily, "fontfamily") -HTML5_ATOM(fontweight, "fontweight") -HTML5_ATOM(font_style, "font-style") -HTML5_ATOM(keysplines, "keysplines") -HTML5_ATOM(keySplines, "keySplines") -HTML5_ATOM(http_equiv, "http-equiv") -HTML5_ATOM(onactivate, "onactivate") -HTML5_ATOM(occurrence, "occurrence") -HTML5_ATOM(irrelevant, "irrelevant") -HTML5_ATOM(ondblclick, "ondblclick") -HTML5_ATOM(ondragdrop, "ondragdrop") -HTML5_ATOM(onkeypress, "onkeypress") -HTML5_ATOM(onrowenter, "onrowenter") -HTML5_ATOM(ondragover, "ondragover") -HTML5_ATOM(onfocusout, "onfocusout") -HTML5_ATOM(onmouseout, "onmouseout") -HTML5_ATOM(numoctaves, "numoctaves") -HTML5_ATOM(numOctaves, "numOctaves") +HTML5_ATOM(link, "link") HTML5_ATOM(marker_mid, "marker-mid") +HTML5_ATOM(markerheight, "markerheight") +HTML5_ATOM(markerHeight, "markerHeight") HTML5_ATOM(marker_end, "marker-end") -HTML5_ATOM(textlength, "textlength") -HTML5_ATOM(textLength, "textLength") -HTML5_ATOM(visibility, "visibility") -HTML5_ATOM(viewtarget, "viewtarget") -HTML5_ATOM(viewTarget, "viewTarget") -HTML5_ATOM(vert_adv_y, "vert-adv-y") -HTML5_ATOM(pathlength, "pathlength") -HTML5_ATOM(pathLength, "pathLength") -HTML5_ATOM(repeat_max, "repeat-max") -HTML5_ATOM(radiogroup, "radiogroup") -HTML5_ATOM(stop_color, "stop-color") -HTML5_ATOM(separators, "separators") -HTML5_ATOM(repeat_min, "repeat-min") -HTML5_ATOM(rowspacing, "rowspacing") +HTML5_ATOM(mask, "mask") +HTML5_ATOM(marker_start, "marker-start") +HTML5_ATOM(markerwidth, "markerwidth") +HTML5_ATOM(markerWidth, "markerWidth") +HTML5_ATOM(maskunits, "maskunits") +HTML5_ATOM(maskUnits, "maskUnits") +HTML5_ATOM(markerunits, "markerunits") +HTML5_ATOM(markerUnits, "markerUnits") +HTML5_ATOM(maskcontentunits, "maskcontentunits") +HTML5_ATOM(maskContentUnits, "maskContentUnits") +HTML5_ATOM(amplitude, "amplitude") +HTML5_ATOM(cellspacing, "cellspacing") +HTML5_ATOM(cellpadding, "cellpadding") +HTML5_ATOM(declare, "declare") +HTML5_ATOM(fill_rule, "fill-rule") +HTML5_ATOM(fill, "fill") +HTML5_ATOM(fill_opacity, "fill-opacity") +HTML5_ATOM(maxlength, "maxlength") +HTML5_ATOM(onclick, "onclick") +HTML5_ATOM(onblur, "onblur") +HTML5_ATOM(replace, "replace") +HTML5_ATOM(rowlines, "rowlines") +HTML5_ATOM(scale, "scale") +HTML5_ATOM(style, "style") +HTML5_ATOM(tablevalues, "tablevalues") +HTML5_ATOM(tableValues, "tableValues") +HTML5_ATOM(title, "title") +HTML5_ATOM(v_alphabetic, "v-alphabetic") +HTML5_ATOM(azimuth, "azimuth") +HTML5_ATOM(format, "format") +HTML5_ATOM(frameborder, "frameborder") +HTML5_ATOM(frame, "frame") +HTML5_ATOM(framespacing, "framespacing") +HTML5_ATOM(from, "from") +HTML5_ATOM(form, "form") +HTML5_ATOM(prompt, "prompt") +HTML5_ATOM(primitiveunits, "primitiveunits") +HTML5_ATOM(primitiveUnits, "primitiveUnits") +HTML5_ATOM(symmetric, "symmetric") +HTML5_ATOM(stemh, "stemh") +HTML5_ATOM(stemv, "stemv") +HTML5_ATOM(seamless, "seamless") +HTML5_ATOM(summary, "summary") +HTML5_ATOM(usemap, "usemap") HTML5_ATOM(zoomandpan, "zoomandpan") HTML5_ATOM(zoomAndPan, "zoomAndPan") -HTML5_ATOM(xlink_type, "xlink:type") -HTML5_ATOM(xlink_role, "xlink:role") +HTML5_ATOM(async, "async") +HTML5_ATOM(alink, "alink") +HTML5_ATOM(in, "in") +HTML5_ATOM(icon, "icon") +HTML5_ATOM(kernelmatrix, "kernelmatrix") +HTML5_ATOM(kernelMatrix, "kernelMatrix") +HTML5_ATOM(kerning, "kerning") +HTML5_ATOM(kernelunitlength, "kernelunitlength") +HTML5_ATOM(kernelUnitLength, "kernelUnitLength") +HTML5_ATOM(onunload, "onunload") +HTML5_ATOM(open, "open") +HTML5_ATOM(oninvalid, "oninvalid") +HTML5_ATOM(onend, "onend") +HTML5_ATOM(oninput, "oninput") +HTML5_ATOM(pointer_events, "pointer-events") +HTML5_ATOM(points, "points") +HTML5_ATOM(pointsatx, "pointsatx") +HTML5_ATOM(pointsAtX, "pointsAtX") +HTML5_ATOM(pointsaty, "pointsaty") +HTML5_ATOM(pointsAtY, "pointsAtY") +HTML5_ATOM(pointsatz, "pointsatz") +HTML5_ATOM(pointsAtZ, "pointsAtZ") +HTML5_ATOM(span, "span") +HTML5_ATOM(standby, "standby") +HTML5_ATOM(thinmathspace, "thinmathspace") +HTML5_ATOM(transform, "transform") +HTML5_ATOM(vlink, "vlink") +HTML5_ATOM(when, "when") HTML5_ATOM(xlink_href, "xlink:href") +HTML5_ATOM(xlink_title, "xlink:title") +HTML5_ATOM(xlink_role, "xlink:role") +HTML5_ATOM(xlink_arcrole, "xlink:arcrole") +HTML5_ATOM(arcrole, "arcrole") +HTML5_ATOM(xmlns_xlink, "xmlns:xlink") +HTML5_ATOM(xlink_type, "xlink:type") HTML5_ATOM(xlink_show, "xlink:show") HTML5_ATOM(show, "show") -HTML5_ATOM(accentunder, "accentunder") -HTML5_ATOM(aria_secret, "aria-secret") -HTML5_ATOM(aria_atomic, "aria-atomic") -HTML5_ATOM(aria_hidden, "aria-hidden") -HTML5_ATOM(aria_flowto, "aria-flowto") -HTML5_ATOM(arabic_form, "arabic-form") -HTML5_ATOM(cellpadding, "cellpadding") -HTML5_ATOM(cellspacing, "cellspacing") -HTML5_ATOM(columnwidth, "columnwidth") -HTML5_ATOM(crossorigin, "crossorigin") -HTML5_ATOM(columnalign, "columnalign") -HTML5_ATOM(columnlines, "columnlines") -HTML5_ATOM(contextmenu, "contextmenu") -HTML5_ATOM(baseprofile, "baseprofile") -HTML5_ATOM(baseProfile, "baseProfile") -HTML5_ATOM(font_family, "font-family") -HTML5_ATOM(frameborder, "frameborder") -HTML5_ATOM(filterunits, "filterunits") -HTML5_ATOM(filterUnits, "filterUnits") +HTML5_ATOM(xlink_actuate, "xlink:actuate") +HTML5_ATOM(actuate, "actuate") +HTML5_ATOM(autoplay, "autoplay") +HTML5_ATOM(autosubmit, "autosubmit") +HTML5_ATOM(autocomplete, "autocomplete") +HTML5_ATOM(autofocus, "autofocus") +HTML5_ATOM(bgcolor, "bgcolor") +HTML5_ATOM(color_profile, "color-profile") +HTML5_ATOM(color_rendering, "color-rendering") +HTML5_ATOM(color_interpolation, "color-interpolation") +HTML5_ATOM(color, "color") +HTML5_ATOM(color_interpolation_filters, "color-interpolation-filters") +HTML5_ATOM(encoding, "encoding") +HTML5_ATOM(exponent, "exponent") HTML5_ATOM(flood_color, "flood-color") -HTML5_ATOM(font_weight, "font-weight") -HTML5_ATOM(horiz_adv_x, "horiz-adv-x") -HTML5_ATOM(ondragleave, "ondragleave") -HTML5_ATOM(onmousemove, "onmousemove") -HTML5_ATOM(orientation, "orientation") -HTML5_ATOM(onmousedown, "onmousedown") -HTML5_ATOM(onmouseover, "onmouseover") -HTML5_ATOM(ondragenter, "ondragenter") +HTML5_ATOM(flood_opacity, "flood-opacity") HTML5_ATOM(ideographic, "ideographic") -HTML5_ATOM(onbeforecut, "onbeforecut") -HTML5_ATOM(onforminput, "onforminput") -HTML5_ATOM(ondragstart, "ondragstart") +HTML5_ATOM(lquote, "lquote") +HTML5_ATOM(panose_1, "panose-1") +HTML5_ATOM(numoctaves, "numoctaves") +HTML5_ATOM(numOctaves, "numOctaves") +HTML5_ATOM(onload, "onload") +HTML5_ATOM(onbounce, "onbounce") +HTML5_ATOM(oncontrolselect, "oncontrolselect") +HTML5_ATOM(onrowsinserted, "onrowsinserted") +HTML5_ATOM(onmousewheel, "onmousewheel") +HTML5_ATOM(onrowenter, "onrowenter") +HTML5_ATOM(onmouseenter, "onmouseenter") +HTML5_ATOM(onmouseover, "onmouseover") +HTML5_ATOM(onformchange, "onformchange") +HTML5_ATOM(onfocusin, "onfocusin") +HTML5_ATOM(onrowexit, "onrowexit") +HTML5_ATOM(onmoveend, "onmoveend") +HTML5_ATOM(oncontextmenu, "oncontextmenu") +HTML5_ATOM(onzoom, "onzoom") +HTML5_ATOM(onlosecapture, "onlosecapture") +HTML5_ATOM(oncopy, "oncopy") HTML5_ATOM(onmovestart, "onmovestart") -HTML5_ATOM(markerunits, "markerunits") -HTML5_ATOM(markerUnits, "markerUnits") -HTML5_ATOM(mathvariant, "mathvariant") -HTML5_ATOM(marginwidth, "marginwidth") -HTML5_ATOM(markerwidth, "markerwidth") -HTML5_ATOM(markerWidth, "markerWidth") -HTML5_ATOM(text_anchor, "text-anchor") -HTML5_ATOM(tablevalues, "tablevalues") -HTML5_ATOM(tableValues, "tableValues") -HTML5_ATOM(scriptlevel, "scriptlevel") -HTML5_ATOM(repeatcount, "repeatcount") -HTML5_ATOM(repeatCount, "repeatCount") -HTML5_ATOM(stitchtiles, "stitchtiles") -HTML5_ATOM(stitchTiles, "stitchTiles") -HTML5_ATOM(startoffset, "startoffset") -HTML5_ATOM(startOffset, "startOffset") -HTML5_ATOM(scrolldelay, "scrolldelay") -HTML5_ATOM(xmlns_xlink, "xmlns:xlink") -HTML5_ATOM(xlink_title, "xlink:title") -HTML5_ATOM(aria_invalid, "aria-invalid") -HTML5_ATOM(aria_pressed, "aria-pressed") -HTML5_ATOM(aria_checked, "aria-checked") -HTML5_ATOM(autocomplete, "autocomplete") -HTML5_ATOM(aria_setsize, "aria-setsize") -HTML5_ATOM(aria_channel, "aria-channel") -HTML5_ATOM(equalcolumns, "equalcolumns") -HTML5_ATOM(displaystyle, "displaystyle") -HTML5_ATOM(dataformatas, "dataformatas") -HTML5_ATOM(fill_opacity, "fill-opacity") -HTML5_ATOM(font_variant, "font-variant") -HTML5_ATOM(font_stretch, "font-stretch") -HTML5_ATOM(framespacing, "framespacing") -HTML5_ATOM(kernelmatrix, "kernelmatrix") -HTML5_ATOM(kernelMatrix, "kernelMatrix") -HTML5_ATOM(ondeactivate, "ondeactivate") HTML5_ATOM(onrowsdelete, "onrowsdelete") HTML5_ATOM(onmouseleave, "onmouseleave") -HTML5_ATOM(onformchange, "onformchange") -HTML5_ATOM(oncellchange, "oncellchange") -HTML5_ATOM(onmousewheel, "onmousewheel") -HTML5_ATOM(onmouseenter, "onmouseenter") -HTML5_ATOM(onafterprint, "onafterprint") -HTML5_ATOM(onbeforecopy, "onbeforecopy") -HTML5_ATOM(marginheight, "marginheight") -HTML5_ATOM(markerheight, "markerheight") -HTML5_ATOM(markerHeight, "markerHeight") -HTML5_ATOM(marker_start, "marker-start") -HTML5_ATOM(mathematical, "mathematical") -HTML5_ATOM(lengthadjust, "lengthadjust") -HTML5_ATOM(lengthAdjust, "lengthAdjust") -HTML5_ATOM(unselectable, "unselectable") -HTML5_ATOM(unicode_bidi, "unicode-bidi") -HTML5_ATOM(units_per_em, "units-per-em") -HTML5_ATOM(word_spacing, "word-spacing") -HTML5_ATOM(writing_mode, "writing-mode") -HTML5_ATOM(v_alphabetic, "v-alphabetic") -HTML5_ATOM(patternunits, "patternunits") -HTML5_ATOM(patternUnits, "patternUnits") -HTML5_ATOM(spreadmethod, "spreadmethod") -HTML5_ATOM(spreadMethod, "spreadMethod") -HTML5_ATOM(surfacescale, "surfacescale") -HTML5_ATOM(surfaceScale, "surfaceScale") +HTML5_ATOM(onmove, "onmove") +HTML5_ATOM(onmousemove, "onmousemove") +HTML5_ATOM(onmouseup, "onmouseup") +HTML5_ATOM(onfocus, "onfocus") +HTML5_ATOM(onmouseout, "onmouseout") +HTML5_ATOM(onforminput, "onforminput") +HTML5_ATOM(onfocusout, "onfocusout") +HTML5_ATOM(onmousedown, "onmousedown") +HTML5_ATOM(to, "to") +HTML5_ATOM(rquote, "rquote") +HTML5_ATOM(stroke_linecap, "stroke-linecap") +HTML5_ATOM(scrolldelay, "scrolldelay") +HTML5_ATOM(stroke_dasharray, "stroke-dasharray") +HTML5_ATOM(stroke_dashoffset, "stroke-dashoffset") +HTML5_ATOM(stroke_linejoin, "stroke-linejoin") +HTML5_ATOM(stroke_miterlimit, "stroke-miterlimit") +HTML5_ATOM(stroke, "stroke") +HTML5_ATOM(scrolling, "scrolling") HTML5_ATOM(stroke_width, "stroke-width") -HTML5_ATOM(repeat_start, "repeat-start") -HTML5_ATOM(stddeviation, "stddeviation") -HTML5_ATOM(stdDeviation, "stdDeviation") +HTML5_ATOM(stroke_opacity, "stroke-opacity") +HTML5_ATOM(compact, "compact") +HTML5_ATOM(clip, "clip") +HTML5_ATOM(clip_rule, "clip-rule") +HTML5_ATOM(clip_path, "clip-path") +HTML5_ATOM(clippathunits, "clippathunits") +HTML5_ATOM(clipPathUnits, "clipPathUnits") +HTML5_ATOM(display, "display") +HTML5_ATOM(displaystyle, "displaystyle") +HTML5_ATOM(glyph_orientation_vertical, "glyph-orientation-vertical") +HTML5_ATOM(glyph_orientation_horizontal, "glyph-orientation-horizontal") +HTML5_ATOM(glyphref, "glyphref") +HTML5_ATOM(glyphRef, "glyphRef") +HTML5_ATOM(glyph_name, "glyph-name") +HTML5_ATOM(http_equiv, "http-equiv") +HTML5_ATOM(keypoints, "keypoints") +HTML5_ATOM(keyPoints, "keyPoints") +HTML5_ATOM(loop, "loop") +HTML5_ATOM(property, "property") +HTML5_ATOM(scoped, "scoped") +HTML5_ATOM(step, "step") +HTML5_ATOM(shape_rendering, "shape-rendering") +HTML5_ATOM(scope, "scope") +HTML5_ATOM(shape, "shape") +HTML5_ATOM(slope, "slope") +HTML5_ATOM(stop_color, "stop-color") HTML5_ATOM(stop_opacity, "stop-opacity") -HTML5_ATOM(aria_controls, "aria-controls") -HTML5_ATOM(aria_haspopup, "aria-haspopup") -HTML5_ATOM(accent_height, "accent-height") -HTML5_ATOM(aria_valuenow, "aria-valuenow") -HTML5_ATOM(aria_relevant, "aria-relevant") -HTML5_ATOM(aria_posinset, "aria-posinset") -HTML5_ATOM(aria_valuemax, "aria-valuemax") -HTML5_ATOM(aria_readonly, "aria-readonly") -HTML5_ATOM(aria_selected, "aria-selected") -HTML5_ATOM(aria_required, "aria-required") -HTML5_ATOM(aria_expanded, "aria-expanded") -HTML5_ATOM(aria_disabled, "aria-disabled") -HTML5_ATOM(attributetype, "attributetype") -HTML5_ATOM(attributeType, "attributeType") +HTML5_ATOM(template_, "template") +HTML5_ATOM(wrap, "wrap") +HTML5_ATOM(abbr, "abbr") HTML5_ATOM(attributename, "attributename") HTML5_ATOM(attributeName, "attributeName") -HTML5_ATOM(aria_datatype, "aria-datatype") -HTML5_ATOM(aria_valuemin, "aria-valuemin") -HTML5_ATOM(basefrequency, "basefrequency") -HTML5_ATOM(baseFrequency, "baseFrequency") -HTML5_ATOM(columnspacing, "columnspacing") -HTML5_ATOM(color_profile, "color-profile") -HTML5_ATOM(clippathunits, "clippathunits") -HTML5_ATOM(clipPathUnits, "clipPathUnits") -HTML5_ATOM(definitionurl, "definitionurl") -HTML5_ATOM(definitionURL, "definitionURL") -HTML5_ATOM(gradientunits, "gradientunits") -HTML5_ATOM(gradientUnits, "gradientUnits") -HTML5_ATOM(flood_opacity, "flood-opacity") -HTML5_ATOM(onafterupdate, "onafterupdate") +HTML5_ATOM(attributetype, "attributetype") +HTML5_ATOM(attributeType, "attributeType") +HTML5_ATOM(char_, "char") +HTML5_ATOM(coords, "coords") +HTML5_ATOM(charoff, "charoff") +HTML5_ATOM(charset, "charset") +HTML5_ATOM(macros, "macros") +HTML5_ATOM(nowrap, "nowrap") +HTML5_ATOM(nohref, "nohref") +HTML5_ATOM(ondrag, "ondrag") +HTML5_ATOM(ondragenter, "ondragenter") +HTML5_ATOM(ondragover, "ondragover") +HTML5_ATOM(onpropertychange, "onpropertychange") +HTML5_ATOM(ondragend, "ondragend") +HTML5_ATOM(ondrop, "ondrop") +HTML5_ATOM(ondragdrop, "ondragdrop") +HTML5_ATOM(overline_position, "overline-position") +HTML5_ATOM(onerror, "onerror") +HTML5_ATOM(operator_, "operator") +HTML5_ATOM(overflow, "overflow") +HTML5_ATOM(ondragstart, "ondragstart") HTML5_ATOM(onerrorupdate, "onerrorupdate") -HTML5_ATOM(onbeforepaste, "onbeforepaste") -HTML5_ATOM(onlosecapture, "onlosecapture") -HTML5_ATOM(oncontextmenu, "oncontextmenu") -HTML5_ATOM(onselectstart, "onselectstart") -HTML5_ATOM(onbeforeprint, "onbeforeprint") -HTML5_ATOM(movablelimits, "movablelimits") -HTML5_ATOM(linethickness, "linethickness") -HTML5_ATOM(unicode_range, "unicode-range") -HTML5_ATOM(thinmathspace, "thinmathspace") -HTML5_ATOM(vert_origin_x, "vert-origin-x") -HTML5_ATOM(vert_origin_y, "vert-origin-y") -HTML5_ATOM(v_ideographic, "v-ideographic") +HTML5_ATOM(overline_thickness, "overline-thickness") +HTML5_ATOM(ondragleave, "ondragleave") +HTML5_ATOM(startoffset, "startoffset") +HTML5_ATOM(startOffset, "startOffset") +HTML5_ATOM(start, "start") +HTML5_ATOM(axis, "axis") +HTML5_ATOM(bias, "bias") +HTML5_ATOM(colspan, "colspan") +HTML5_ATOM(classid, "classid") +HTML5_ATOM(crossorigin, "crossorigin") +HTML5_ATOM(cols, "cols") +HTML5_ATOM(cursor, "cursor") +HTML5_ATOM(closure, "closure") +HTML5_ATOM(close, "close") +HTML5_ATOM(class_, "class") +HTML5_ATOM(is, "is") +HTML5_ATOM(keysystem, "keysystem") +HTML5_ATOM(keysplines, "keysplines") +HTML5_ATOM(keySplines, "keySplines") +HTML5_ATOM(lowsrc, "lowsrc") +HTML5_ATOM(maxsize, "maxsize") +HTML5_ATOM(minsize, "minsize") +HTML5_ATOM(offset, "offset") HTML5_ATOM(preservealpha, "preservealpha") HTML5_ATOM(preserveAlpha, "preserveAlpha") -HTML5_ATOM(scriptminsize, "scriptminsize") -HTML5_ATOM(specification, "specification") -HTML5_ATOM(xlink_actuate, "xlink:actuate") -HTML5_ATOM(actuate, "actuate") -HTML5_ATOM(xlink_arcrole, "xlink:arcrole") -HTML5_ATOM(arcrole, "arcrole") -HTML5_ATOM(accept_charset, "accept-charset") -HTML5_ATOM(alignmentscope, "alignmentscope") -HTML5_ATOM(aria_multiline, "aria-multiline") -HTML5_ATOM(baseline_shift, "baseline-shift") -HTML5_ATOM(horiz_origin_x, "horiz-origin-x") -HTML5_ATOM(horiz_origin_y, "horiz-origin-y") -HTML5_ATOM(onbeforeupdate, "onbeforeupdate") -HTML5_ATOM(onfilterchange, "onfilterchange") -HTML5_ATOM(onrowsinserted, "onrowsinserted") -HTML5_ATOM(onbeforeunload, "onbeforeunload") -HTML5_ATOM(mathbackground, "mathbackground") -HTML5_ATOM(letter_spacing, "letter-spacing") -HTML5_ATOM(lighting_color, "lighting-color") -HTML5_ATOM(thickmathspace, "thickmathspace") -HTML5_ATOM(text_rendering, "text-rendering") -HTML5_ATOM(v_mathematical, "v-mathematical") -HTML5_ATOM(pointer_events, "pointer-events") -HTML5_ATOM(primitiveunits, "primitiveunits") -HTML5_ATOM(primitiveUnits, "primitiveUnits") -HTML5_ATOM(referrerpolicy, "referrerpolicy") -HTML5_ATOM(systemlanguage, "systemlanguage") -HTML5_ATOM(systemLanguage, "systemLanguage") -HTML5_ATOM(stroke_linecap, "stroke-linecap") +HTML5_ATOM(preserveaspectratio, "preserveaspectratio") +HTML5_ATOM(preserveAspectRatio, "preserveAspectRatio") +HTML5_ATOM(rowspan, "rowspan") +HTML5_ATOM(rowspacing, "rowspacing") +HTML5_ATOM(rows, "rows") +HTML5_ATOM(srcset, "srcset") HTML5_ATOM(subscriptshift, "subscriptshift") -HTML5_ATOM(stroke_opacity, "stroke-opacity") -HTML5_ATOM(aria_dropeffect, "aria-dropeffect") -HTML5_ATOM(aria_labelledby, "aria-labelledby") -HTML5_ATOM(aria_templateid, "aria-templateid") -HTML5_ATOM(color_rendering, "color-rendering") +HTML5_ATOM(version, "version") +HTML5_ATOM(alttext, "alttext") HTML5_ATOM(contenteditable, "contenteditable") -HTML5_ATOM(diffuseconstant, "diffuseconstant") -HTML5_ATOM(diffuseConstant, "diffuseConstant") -HTML5_ATOM(ondataavailable, "ondataavailable") -HTML5_ATOM(oncontrolselect, "oncontrolselect") -HTML5_ATOM(image_rendering, "image-rendering") -HTML5_ATOM(mediummathspace, "mediummathspace") -HTML5_ATOM(text_decoration, "text-decoration") -HTML5_ATOM(shape_rendering, "shape-rendering") -HTML5_ATOM(stroke_linejoin, "stroke-linejoin") -HTML5_ATOM(repeat_template, "repeat-template") -HTML5_ATOM(aria_describedby, "aria-describedby") +HTML5_ATOM(controls, "controls") +HTML5_ATOM(content, "content") +HTML5_ATOM(contextmenu, "contextmenu") +HTML5_ATOM(depth, "depth") +HTML5_ATOM(enctype, "enctype") +HTML5_ATOM(font_stretch, "font-stretch") +HTML5_ATOM(filter, "filter") +HTML5_ATOM(fontweight, "fontweight") +HTML5_ATOM(font_weight, "font-weight") +HTML5_ATOM(fontstyle, "fontstyle") +HTML5_ATOM(font_style, "font-style") +HTML5_ATOM(fontfamily, "fontfamily") +HTML5_ATOM(font_family, "font-family") +HTML5_ATOM(font_variant, "font-variant") HTML5_ATOM(font_size_adjust, "font-size-adjust") -HTML5_ATOM(kernelunitlength, "kernelunitlength") -HTML5_ATOM(kernelUnitLength, "kernelUnitLength") -HTML5_ATOM(onbeforeactivate, "onbeforeactivate") -HTML5_ATOM(onpropertychange, "onpropertychange") -HTML5_ATOM(ondatasetchanged, "ondatasetchanged") -HTML5_ATOM(maskcontentunits, "maskcontentunits") -HTML5_ATOM(maskContentUnits, "maskContentUnits") +HTML5_ATOM(filterunits, "filterunits") +HTML5_ATOM(filterUnits, "filterUnits") +HTML5_ATOM(fontsize, "fontsize") +HTML5_ATOM(font_size, "font-size") +HTML5_ATOM(keytimes, "keytimes") +HTML5_ATOM(keyTimes, "keyTimes") +HTML5_ATOM(letter_spacing, "letter-spacing") +HTML5_ATOM(list, "list") +HTML5_ATOM(multiple, "multiple") +HTML5_ATOM(rt, "rt") +HTML5_ATOM(onstop, "onstop") +HTML5_ATOM(onstart, "onstart") +HTML5_ATOM(poster, "poster") HTML5_ATOM(patterntransform, "patterntransform") HTML5_ATOM(patternTransform, "patternTransform") +HTML5_ATOM(pattern, "pattern") +HTML5_ATOM(patternunits, "patternunits") +HTML5_ATOM(patternUnits, "patternUnits") +HTML5_ATOM(patterncontentunits, "patterncontentunits") +HTML5_ATOM(patternContentUnits, "patternContentUnits") +HTML5_ATOM(restart, "restart") +HTML5_ATOM(stitchtiles, "stitchtiles") +HTML5_ATOM(stitchTiles, "stitchTiles") +HTML5_ATOM(systemlanguage, "systemlanguage") +HTML5_ATOM(systemLanguage, "systemLanguage") +HTML5_ATOM(text_rendering, "text-rendering") +HTML5_ATOM(vert_origin_x, "vert-origin-x") +HTML5_ATOM(vert_adv_y, "vert-adv-y") +HTML5_ATOM(vert_origin_y, "vert-origin-y") +HTML5_ATOM(text_decoration, "text-decoration") +HTML5_ATOM(text_anchor, "text-anchor") +HTML5_ATOM(textlength, "textlength") +HTML5_ATOM(textLength, "textLength") +HTML5_ATOM(text, "text") +HTML5_ATOM(units_per_em, "units-per-em") +HTML5_ATOM(writing_mode, "writing-mode") +HTML5_ATOM(widths, "widths") +HTML5_ATOM(width, "width") +HTML5_ATOM(accumulate, "accumulate") +HTML5_ATOM(columnspan, "columnspan") +HTML5_ATOM(columnlines, "columnlines") +HTML5_ATOM(columnalign, "columnalign") +HTML5_ATOM(columnspacing, "columnspacing") +HTML5_ATOM(columnwidth, "columnwidth") +HTML5_ATOM(groupalign, "groupalign") +HTML5_ATOM(inputmode, "inputmode") +HTML5_ATOM(occurrence, "occurrence") +HTML5_ATOM(onsubmit, "onsubmit") +HTML5_ATOM(oncut, "oncut") +HTML5_ATOM(required, "required") HTML5_ATOM(requiredfeatures, "requiredfeatures") HTML5_ATOM(requiredFeatures, "requiredFeatures") -HTML5_ATOM(rendering_intent, "rendering-intent") -HTML5_ATOM(specularexponent, "specularexponent") -HTML5_ATOM(specularExponent, "specularExponent") -HTML5_ATOM(specularconstant, "specularconstant") -HTML5_ATOM(specularConstant, "specularConstant") -HTML5_ATOM(superscriptshift, "superscriptshift") -HTML5_ATOM(stroke_dasharray, "stroke-dasharray") -HTML5_ATOM(xchannelselector, "xchannelselector") -HTML5_ATOM(xChannelSelector, "xChannelSelector") -HTML5_ATOM(ychannelselector, "ychannelselector") -HTML5_ATOM(yChannelSelector, "yChannelSelector") -HTML5_ATOM(aria_autocomplete, "aria-autocomplete") -HTML5_ATOM(enable_background, "enable-background") -HTML5_ATOM(dominant_baseline, "dominant-baseline") -HTML5_ATOM(gradienttransform, "gradienttransform") -HTML5_ATOM(gradientTransform, "gradientTransform") -HTML5_ATOM(onbefordeactivate, "onbefordeactivate") -HTML5_ATOM(ondatasetcomplete, "ondatasetcomplete") -HTML5_ATOM(overline_position, "overline-position") -HTML5_ATOM(onbeforeeditfocus, "onbeforeeditfocus") -HTML5_ATOM(limitingconeangle, "limitingconeangle") -HTML5_ATOM(limitingConeAngle, "limitingConeAngle") -HTML5_ATOM(verythinmathspace, "verythinmathspace") -HTML5_ATOM(stroke_dashoffset, "stroke-dashoffset") -HTML5_ATOM(stroke_miterlimit, "stroke-miterlimit") -HTML5_ATOM(alignment_baseline, "alignment-baseline") -HTML5_ATOM(onreadystatechange, "onreadystatechange") -HTML5_ATOM(overline_thickness, "overline-thickness") -HTML5_ATOM(underline_position, "underline-position") -HTML5_ATOM(verythickmathspace, "verythickmathspace") +HTML5_ATOM(result, "result") HTML5_ATOM(requiredextensions, "requiredextensions") HTML5_ATOM(requiredExtensions, "requiredExtensions") -HTML5_ATOM(color_interpolation, "color-interpolation") -HTML5_ATOM(underline_thickness, "underline-thickness") -HTML5_ATOM(preserveaspectratio, "preserveaspectratio") -HTML5_ATOM(preserveAspectRatio, "preserveAspectRatio") -HTML5_ATOM(patterncontentunits, "patterncontentunits") -HTML5_ATOM(patternContentUnits, "patternContentUnits") -HTML5_ATOM(aria_multiselectable, "aria-multiselectable") -HTML5_ATOM(scriptsizemultiplier, "scriptsizemultiplier") -HTML5_ATOM(aria_activedescendant, "aria-activedescendant") +HTML5_ATOM(values, "values") +HTML5_ATOM(valuetype, "valuetype") +HTML5_ATOM(value, "value") +HTML5_ATOM(elevation, "elevation") +HTML5_ATOM(viewtarget, "viewtarget") +HTML5_ATOM(viewTarget, "viewTarget") +HTML5_ATOM(viewbox, "viewbox") +HTML5_ATOM(viewBox, "viewBox") +HTML5_ATOM(cx, "cx") +HTML5_ATOM(dx, "dx") +HTML5_ATOM(fx, "fx") +HTML5_ATOM(bbox, "bbox") +HTML5_ATOM(rx, "rx") +HTML5_ATOM(refx, "refx") +HTML5_ATOM(refX, "refX") +HTML5_ATOM(by, "by") +HTML5_ATOM(cy, "cy") +HTML5_ATOM(dy, "dy") +HTML5_ATOM(fy, "fy") +HTML5_ATOM(ry, "ry") +HTML5_ATOM(refy, "refy") +HTML5_ATOM(refY, "refY") +HTML5_ATOM(verythinmathspace, "verythinmathspace") +HTML5_ATOM(verythickmathspace, "verythickmathspace") HTML5_ATOM(veryverythinmathspace, "veryverythinmathspace") HTML5_ATOM(veryverythickmathspace, "veryverythickmathspace") -HTML5_ATOM(strikethrough_position, "strikethrough-position") -HTML5_ATOM(strikethrough_thickness, "strikethrough-thickness") -HTML5_ATOM(glyph_orientation_vertical, "glyph-orientation-vertical") -HTML5_ATOM(color_interpolation_filters, "color-interpolation-filters") -HTML5_ATOM(glyph_orientation_horizontal, "glyph-orientation-horizontal") -HTML5_ATOM(b, "b") -HTML5_ATOM(g, "g") -HTML5_ATOM(i, "i") -HTML5_ATOM(q, "q") -HTML5_ATOM(s, "s") -HTML5_ATOM(u, "u") -HTML5_ATOM(br, "br") -HTML5_ATOM(ci, "ci") -HTML5_ATOM(cn, "cn") -HTML5_ATOM(dd, "dd") -HTML5_ATOM(dl, "dl") -HTML5_ATOM(dt, "dt") -HTML5_ATOM(em, "em") -HTML5_ATOM(eq, "eq") -HTML5_ATOM(fn, "fn") -HTML5_ATOM(h1, "h1") -HTML5_ATOM(h2, "h2") -HTML5_ATOM(h3, "h3") -HTML5_ATOM(h4, "h4") -HTML5_ATOM(h5, "h5") -HTML5_ATOM(h6, "h6") -HTML5_ATOM(gt, "gt") -HTML5_ATOM(hr, "hr") -HTML5_ATOM(li, "li") -HTML5_ATOM(ln, "ln") -HTML5_ATOM(lt, "lt") -HTML5_ATOM(or_, "or") -HTML5_ATOM(pi, "pi") -HTML5_ATOM(rb, "rb") -HTML5_ATOM(rp, "rp") -HTML5_ATOM(tt, "tt") +HTML5_ATOM(isindex, "isindex") +HTML5_ATOM(annotation_xml, "annotation-xml") HTML5_ATOM(and_, "and") HTML5_ATOM(arg, "arg") HTML5_ATOM(abs, "abs") @@ -755,6 +682,7 @@ HTML5_ATOM(cos, "cos") HTML5_ATOM(cot, "cot") HTML5_ATOM(del, "del") HTML5_ATOM(dfn, "dfn") +HTML5_ATOM(div, "div") HTML5_ATOM(exp, "exp") HTML5_ATOM(gcd, "gcd") HTML5_ATOM(geq, "geq") @@ -772,9 +700,13 @@ HTML5_ATOM(neq, "neq") HTML5_ATOM(not_, "not") HTML5_ATOM(nav, "nav") HTML5_ATOM(pre, "pre") +HTML5_ATOM(a, "a") +HTML5_ATOM(b, "b") +HTML5_ATOM(rtc, "rtc") HTML5_ATOM(rem, "rem") HTML5_ATOM(sub, "sub") HTML5_ATOM(sec, "sec") +HTML5_ATOM(svg, "svg") HTML5_ATOM(sum, "sum") HTML5_ATOM(sin, "sin") HTML5_ATOM(sep, "sep") @@ -783,293 +715,364 @@ HTML5_ATOM(set, "set") HTML5_ATOM(tan, "tan") HTML5_ATOM(use, "use") HTML5_ATOM(var, "var") +HTML5_ATOM(g, "g") HTML5_ATOM(wbr, "wbr") +HTML5_ATOM(xmp, "xmp") HTML5_ATOM(xor_, "xor") +HTML5_ATOM(i, "i") +HTML5_ATOM(p, "p") +HTML5_ATOM(q, "q") +HTML5_ATOM(s, "s") +HTML5_ATOM(u, "u") +HTML5_ATOM(h1, "h1") +HTML5_ATOM(h2, "h2") +HTML5_ATOM(h3, "h3") +HTML5_ATOM(h4, "h4") +HTML5_ATOM(h5, "h5") +HTML5_ATOM(h6, "h6") HTML5_ATOM(area, "area") -HTML5_ATOM(bvar, "bvar") -HTML5_ATOM(card, "card") -HTML5_ATOM(csch, "csch") -HTML5_ATOM(cosh, "cosh") -HTML5_ATOM(coth, "coth") -HTML5_ATOM(curl, "curl") -HTML5_ATOM(diff, "diff") -HTML5_ATOM(defs, "defs") -HTML5_ATOM(font, "font") -HTML5_ATOM(grad, "grad") -HTML5_ATOM(line, "line") +HTML5_ATOM(eulergamma, "eulergamma") +HTML5_ATOM(fefunca, "fefunca") +HTML5_ATOM(feFuncA, "feFuncA") +HTML5_ATOM(lambda, "lambda") +HTML5_ATOM(metadata, "metadata") HTML5_ATOM(meta, "meta") +HTML5_ATOM(textarea, "textarea") +HTML5_ATOM(fefuncb, "fefuncb") +HTML5_ATOM(feFuncB, "feFuncB") HTML5_ATOM(msub, "msub") -HTML5_ATOM(math, "math") -HTML5_ATOM(mark, "mark") -HTML5_ATOM(mean, "mean") -HTML5_ATOM(main, "main") -HTML5_ATOM(msup, "msup") -HTML5_ATOM(menu, "menu") -HTML5_ATOM(mrow, "mrow") -HTML5_ATOM(none, "none") -HTML5_ATOM(nest, "nest") -HTML5_ATOM(plus, "plus") -HTML5_ATOM(rule, "rule") -HTML5_ATOM(real, "real") -HTML5_ATOM(reln, "reln") -HTML5_ATOM(rect, "rect") -HTML5_ATOM(root, "root") -HTML5_ATOM(sech, "sech") -HTML5_ATOM(sinh, "sinh") -HTML5_ATOM(samp, "samp") -HTML5_ATOM(stop, "stop") -HTML5_ATOM(sdev, "sdev") -HTML5_ATOM(time, "time") -HTML5_ATOM(true_, "true") -HTML5_ATOM(tref, "tref") -HTML5_ATOM(tanh, "tanh") -HTML5_ATOM(view, "view") -HTML5_ATOM(aside, "aside") -HTML5_ATOM(audio, "audio") -HTML5_ATOM(apply, "apply") -HTML5_ATOM(embed, "embed") -HTML5_ATOM(false_, "false") -HTML5_ATOM(floor, "floor") -HTML5_ATOM(glyph, "glyph") -HTML5_ATOM(hkern, "hkern") -HTML5_ATOM(image, "image") -HTML5_ATOM(ident, "ident") -HTML5_ATOM(limit, "limit") -HTML5_ATOM(mfrac, "mfrac") -HTML5_ATOM(mpath, "mpath") -HTML5_ATOM(meter, "meter") -HTML5_ATOM(mover, "mover") -HTML5_ATOM(minus, "minus") -HTML5_ATOM(mroot, "mroot") -HTML5_ATOM(msqrt, "msqrt") -HTML5_ATOM(notin, "notin") -HTML5_ATOM(piece, "piece") -HTML5_ATOM(param, "param") -HTML5_ATOM(power, "power") -HTML5_ATOM(reals, "reals") -HTML5_ATOM(small_, "small") -HTML5_ATOM(track, "track") -HTML5_ATOM(tspan, "tspan") -HTML5_ATOM(times, "times") -HTML5_ATOM(union_, "union") -HTML5_ATOM(vkern, "vkern") -HTML5_ATOM(video, "video") +HTML5_ATOM(rb, "rb") HTML5_ATOM(arcsec, "arcsec") HTML5_ATOM(arccsc, "arccsc") -HTML5_ATOM(arctan, "arctan") -HTML5_ATOM(arcsin, "arcsin") -HTML5_ATOM(arccos, "arccos") -HTML5_ATOM(applet, "applet") -HTML5_ATOM(arccot, "arccot") -HTML5_ATOM(approx, "approx") +HTML5_ATOM(definition_src, "definition-src") +HTML5_ATOM(desc, "desc") +HTML5_ATOM(font_face_src, "font-face-src") +HTML5_ATOM(mfrac, "mfrac") +HTML5_ATOM(dd, "dd") +HTML5_ATOM(bgsound, "bgsound") +HTML5_ATOM(card, "card") +HTML5_ATOM(discard, "discard") +HTML5_ATOM(embed, "embed") +HTML5_ATOM(feblend, "feblend") +HTML5_ATOM(feBlend, "feBlend") +HTML5_ATOM(feflood, "feflood") +HTML5_ATOM(feFlood, "feFlood") +HTML5_ATOM(grad, "grad") +HTML5_ATOM(head, "head") +HTML5_ATOM(legend, "legend") +HTML5_ATOM(mfenced, "mfenced") +HTML5_ATOM(mpadded, "mpadded") +HTML5_ATOM(noembed, "noembed") +HTML5_ATOM(td, "td") +HTML5_ATOM(thead, "thead") +HTML5_ATOM(aside, "aside") +HTML5_ATOM(article, "article") +HTML5_ATOM(animate, "animate") +HTML5_ATOM(blockquote, "blockquote") HTML5_ATOM(circle, "circle") -HTML5_ATOM(center, "center") -HTML5_ATOM(canvas, "canvas") +HTML5_ATOM(compose, "compose") +HTML5_ATOM(conjugate, "conjugate") +HTML5_ATOM(divergence, "divergence") HTML5_ATOM(divide, "divide") HTML5_ATOM(degree, "degree") -HTML5_ATOM(dialog, "dialog") -HTML5_ATOM(domain, "domain") -HTML5_ATOM(exists, "exists") +HTML5_ATOM(datatemplate, "datatemplate") +HTML5_ATOM(exponentiale, "exponentiale") +HTML5_ATOM(ellipse, "ellipse") +HTML5_ATOM(font_face, "font-face") +HTML5_ATOM(feturbulence, "feturbulence") +HTML5_ATOM(feTurbulence, "feTurbulence") +HTML5_ATOM(femergenode, "femergenode") +HTML5_ATOM(feMergeNode, "feMergeNode") +HTML5_ATOM(feimage, "feimage") +HTML5_ATOM(feImage, "feImage") +HTML5_ATOM(femerge, "femerge") +HTML5_ATOM(feMerge, "feMerge") HTML5_ATOM(fetile, "fetile") HTML5_ATOM(feTile, "feTile") +HTML5_ATOM(font_face_name, "font-face-name") HTML5_ATOM(figure, "figure") -HTML5_ATOM(forall, "forall") -HTML5_ATOM(footer, "footer") -HTML5_ATOM(hgroup, "hgroup") -HTML5_ATOM(header, "header") -HTML5_ATOM(keygen, "keygen") -HTML5_ATOM(lambda, "lambda") -HTML5_ATOM(legend, "legend") +HTML5_ATOM(false_, "false") +HTML5_ATOM(fecomposite, "fecomposite") +HTML5_ATOM(feComposite, "feComposite") +HTML5_ATOM(image, "image") +HTML5_ATOM(iframe, "iframe") +HTML5_ATOM(inverse, "inverse") +HTML5_ATOM(line, "line") +HTML5_ATOM(logbase, "logbase") HTML5_ATOM(mspace, "mspace") +HTML5_ATOM(marquee, "marquee") HTML5_ATOM(mtable, "mtable") HTML5_ATOM(mstyle, "mstyle") -HTML5_ATOM(mglyph, "mglyph") -HTML5_ATOM(median, "median") -HTML5_ATOM(munder, "munder") -HTML5_ATOM(marker, "marker") -HTML5_ATOM(merror, "merror") -HTML5_ATOM(moment, "moment") -HTML5_ATOM(matrix, "matrix") -HTML5_ATOM(output, "output") -HTML5_ATOM(primes, "primes") +HTML5_ATOM(menclose, "menclose") +HTML5_ATOM(none, "none") +HTML5_ATOM(otherwise, "otherwise") +HTML5_ATOM(piece, "piece") +HTML5_ATOM(polyline, "polyline") +HTML5_ATOM(picture, "picture") +HTML5_ATOM(piecewise, "piecewise") +HTML5_ATOM(rule, "rule") HTML5_ATOM(source, "source") HTML5_ATOM(strike, "strike") +HTML5_ATOM(table, "table") +HTML5_ATOM(time, "time") +HTML5_ATOM(transpose, "transpose") +HTML5_ATOM(true_, "true") +HTML5_ATOM(variance, "variance") +HTML5_ATOM(altglyphdef, "altglyphdef") +HTML5_ATOM(altGlyphDef, "altGlyphDef") +HTML5_ATOM(diff, "diff") +HTML5_ATOM(factorof, "factorof") +HTML5_ATOM(partialdiff, "partialdiff") +HTML5_ATOM(setdiff, "setdiff") +HTML5_ATOM(tref, "tref") +HTML5_ATOM(ceiling, "ceiling") +HTML5_ATOM(dialog, "dialog") +HTML5_ATOM(fefuncg, "fefuncg") +HTML5_ATOM(feFuncG, "feFuncG") +HTML5_ATOM(fediffuselighting, "fediffuselighting") +HTML5_ATOM(feDiffuseLighting, "feDiffuseLighting") +HTML5_ATOM(fespecularlighting, "fespecularlighting") +HTML5_ATOM(feSpecularLighting, "feSpecularLighting") +HTML5_ATOM(listing, "listing") HTML5_ATOM(strong, "strong") -HTML5_ATOM(switch_, "switch") -HTML5_ATOM(symbol, "symbol") -HTML5_ATOM(subset, "subset") -HTML5_ATOM(tbreak, "tbreak") -HTML5_ATOM(vector, "vector") -HTML5_ATOM(article, "article") -HTML5_ATOM(animate, "animate") HTML5_ATOM(arcsech, "arcsech") HTML5_ATOM(arccsch, "arccsch") HTML5_ATOM(arctanh, "arctanh") HTML5_ATOM(arcsinh, "arcsinh") -HTML5_ATOM(arccosh, "arccosh") -HTML5_ATOM(arccoth, "arccoth") -HTML5_ATOM(acronym, "acronym") -HTML5_ATOM(bgsound, "bgsound") -HTML5_ATOM(compose, "compose") -HTML5_ATOM(ceiling, "ceiling") -HTML5_ATOM(csymbol, "csymbol") -HTML5_ATOM(discard, "discard") -HTML5_ATOM(details, "details") -HTML5_ATOM(ellipse, "ellipse") -HTML5_ATOM(fefunca, "fefunca") -HTML5_ATOM(feFuncA, "feFuncA") -HTML5_ATOM(fefuncb, "fefuncb") -HTML5_ATOM(feFuncB, "feFuncB") -HTML5_ATOM(feblend, "feblend") -HTML5_ATOM(feBlend, "feBlend") -HTML5_ATOM(feflood, "feflood") -HTML5_ATOM(feFlood, "feFlood") -HTML5_ATOM(feimage, "feimage") -HTML5_ATOM(feImage, "feImage") -HTML5_ATOM(femerge, "femerge") -HTML5_ATOM(feMerge, "feMerge") -HTML5_ATOM(fefuncg, "fefuncg") -HTML5_ATOM(feFuncG, "feFuncG") -HTML5_ATOM(fefuncr, "fefuncr") -HTML5_ATOM(feFuncR, "feFuncR") -HTML5_ATOM(handler, "handler") -HTML5_ATOM(inverse, "inverse") -HTML5_ATOM(implies, "implies") -HTML5_ATOM(isindex, "isindex") -HTML5_ATOM(logbase, "logbase") -HTML5_ATOM(listing, "listing") -HTML5_ATOM(mfenced, "mfenced") -HTML5_ATOM(mpadded, "mpadded") -HTML5_ATOM(marquee, "marquee") -HTML5_ATOM(maction, "maction") -HTML5_ATOM(msubsup, "msubsup") -HTML5_ATOM(picture, "picture") -HTML5_ATOM(polygon, "polygon") -HTML5_ATOM(product, "product") -HTML5_ATOM(setdiff, "setdiff") -HTML5_ATOM(section, "section") -HTML5_ATOM(tendsto, "tendsto") -HTML5_ATOM(uplimit, "uplimit") HTML5_ATOM(altglyph, "altglyph") HTML5_ATOM(altGlyph, "altGlyph") -HTML5_ATOM(basefont, "basefont") +HTML5_ATOM(arccosh, "arccosh") +HTML5_ATOM(arccoth, "arccoth") +HTML5_ATOM(csch, "csch") +HTML5_ATOM(cosh, "cosh") HTML5_ATOM(clippath, "clippath") HTML5_ATOM(clipPath, "clipPath") -HTML5_ATOM(codomain, "codomain") -HTML5_ATOM(emptyset, "emptyset") -HTML5_ATOM(factorof, "factorof") -HTML5_ATOM(fieldset, "fieldset") -HTML5_ATOM(feoffset, "feoffset") -HTML5_ATOM(feOffset, "feOffset") -HTML5_ATOM(interval, "interval") -HTML5_ATOM(integers, "integers") -HTML5_ATOM(infinity, "infinity") -HTML5_ATOM(listener, "listener") -HTML5_ATOM(lowlimit, "lowlimit") -HTML5_ATOM(metadata, "metadata") -HTML5_ATOM(menclose, "menclose") -HTML5_ATOM(menuitem, "menuitem") -HTML5_ATOM(mphantom, "mphantom") -HTML5_ATOM(polyline, "polyline") +HTML5_ATOM(coth, "coth") +HTML5_ATOM(glyph, "glyph") +HTML5_ATOM(mglyph, "mglyph") +HTML5_ATOM(missing_glyph, "missing-glyph") +HTML5_ATOM(math, "math") +HTML5_ATOM(mpath, "mpath") HTML5_ATOM(prefetch, "prefetch") -HTML5_ATOM(progress, "progress") -HTML5_ATOM(prsubset, "prsubset") -HTML5_ATOM(quotient, "quotient") -HTML5_ATOM(selector, "selector") +HTML5_ATOM(th, "th") +HTML5_ATOM(sech, "sech") +HTML5_ATOM(switch_, "switch") +HTML5_ATOM(sinh, "sinh") +HTML5_ATOM(tanh, "tanh") HTML5_ATOM(textpath, "textpath") HTML5_ATOM(textPath, "textPath") -HTML5_ATOM(variance, "variance") -HTML5_ATOM(animation, "animation") -HTML5_ATOM(conjugate, "conjugate") -HTML5_ATOM(condition, "condition") -HTML5_ATOM(complexes, "complexes") -HTML5_ATOM(font_face, "font-face") +HTML5_ATOM(ci, "ci") +HTML5_ATOM(font_face_uri, "font-face-uri") +HTML5_ATOM(li, "li") +HTML5_ATOM(imaginaryi, "imaginaryi") +HTML5_ATOM(mi, "mi") +HTML5_ATOM(pi, "pi") +HTML5_ATOM(mark, "mark") +HTML5_ATOM(malignmark, "malignmark") +HTML5_ATOM(tbreak, "tbreak") +HTML5_ATOM(track, "track") +HTML5_ATOM(dl, "dl") +HTML5_ATOM(csymbol, "csymbol") +HTML5_ATOM(curl, "curl") HTML5_ATOM(factorial, "factorial") -HTML5_ATOM(intersect, "intersect") -HTML5_ATOM(imaginary, "imaginary") -HTML5_ATOM(laplacian, "laplacian") -HTML5_ATOM(matrixrow, "matrixrow") -HTML5_ATOM(notsubset, "notsubset") -HTML5_ATOM(otherwise, "otherwise") -HTML5_ATOM(piecewise, "piecewise") -HTML5_ATOM(rationals, "rationals") -HTML5_ATOM(semantics, "semantics") -HTML5_ATOM(transpose, "transpose") +HTML5_ATOM(forall, "forall") +HTML5_ATOM(html, "html") +HTML5_ATOM(interval, "interval") +HTML5_ATOM(ol, "ol") +HTML5_ATOM(ul, "ul") +HTML5_ATOM(real, "real") +HTML5_ATOM(small_, "small") +HTML5_ATOM(symbol, "symbol") +HTML5_ATOM(altglyphitem, "altglyphitem") +HTML5_ATOM(altGlyphItem, "altGlyphItem") +HTML5_ATOM(animatetransform, "animatetransform") +HTML5_ATOM(animateTransform, "animateTransform") +HTML5_ATOM(acronym, "acronym") +HTML5_ATOM(em, "em") +HTML5_ATOM(menuitem, "menuitem") +HTML5_ATOM(mphantom, "mphantom") +HTML5_ATOM(param, "param") +HTML5_ATOM(cn, "cn") +HTML5_ATOM(arctan, "arctan") +HTML5_ATOM(arcsin, "arcsin") +HTML5_ATOM(animation, "animation") HTML5_ATOM(annotation, "annotation") -HTML5_ATOM(blockquote, "blockquote") -HTML5_ATOM(divergence, "divergence") -HTML5_ATOM(eulergamma, "eulergamma") -HTML5_ATOM(equivalent, "equivalent") +HTML5_ATOM(animatemotion, "animatemotion") +HTML5_ATOM(animateMotion, "animateMotion") +HTML5_ATOM(button, "button") +HTML5_ATOM(fn, "fn") +HTML5_ATOM(codomain, "codomain") +HTML5_ATOM(caption, "caption") +HTML5_ATOM(condition, "condition") +HTML5_ATOM(domain, "domain") +HTML5_ATOM(domainofapplication, "domainofapplication") HTML5_ATOM(figcaption, "figcaption") -HTML5_ATOM(imaginaryi, "imaginaryi") -HTML5_ATOM(malignmark, "malignmark") +HTML5_ATOM(hkern, "hkern") +HTML5_ATOM(ln, "ln") +HTML5_ATOM(mn, "mn") +HTML5_ATOM(keygen, "keygen") +HTML5_ATOM(laplacian, "laplacian") +HTML5_ATOM(mean, "mean") +HTML5_ATOM(median, "median") +HTML5_ATOM(main, "main") +HTML5_ATOM(maction, "maction") +HTML5_ATOM(notin, "notin") +HTML5_ATOM(option, "option") +HTML5_ATOM(polygon, "polygon") +HTML5_ATOM(reln, "reln") +HTML5_ATOM(section, "section") +HTML5_ATOM(tspan, "tspan") +HTML5_ATOM(union_, "union") +HTML5_ATOM(vkern, "vkern") +HTML5_ATOM(audio, "audio") +HTML5_ATOM(mo, "mo") +HTML5_ATOM(tendsto, "tendsto") +HTML5_ATOM(video, "video") +HTML5_ATOM(colgroup, "colgroup") +HTML5_ATOM(fedisplacementmap, "fedisplacementmap") +HTML5_ATOM(feDisplacementMap, "feDisplacementMap") +HTML5_ATOM(hgroup, "hgroup") +HTML5_ATOM(maligngroup, "maligngroup") +HTML5_ATOM(msubsup, "msubsup") +HTML5_ATOM(msup, "msup") +HTML5_ATOM(rp, "rp") +HTML5_ATOM(optgroup, "optgroup") +HTML5_ATOM(samp, "samp") +HTML5_ATOM(stop, "stop") +HTML5_ATOM(eq, "eq") +HTML5_ATOM(br, "br") +HTML5_ATOM(animatecolor, "animatecolor") +HTML5_ATOM(animateColor, "animateColor") +HTML5_ATOM(bvar, "bvar") +HTML5_ATOM(center, "center") +HTML5_ATOM(hr, "hr") +HTML5_ATOM(fefuncr, "fefuncr") +HTML5_ATOM(feFuncR, "feFuncR") +HTML5_ATOM(fecomponenttransfer, "fecomponenttransfer") +HTML5_ATOM(feComponentTransfer, "feComponentTransfer") +HTML5_ATOM(footer, "footer") +HTML5_ATOM(floor, "floor") +HTML5_ATOM(fegaussianblur, "fegaussianblur") +HTML5_ATOM(feGaussianBlur, "feGaussianBlur") +HTML5_ATOM(header, "header") +HTML5_ATOM(handler, "handler") +HTML5_ATOM(or_, "or") +HTML5_ATOM(listener, "listener") +HTML5_ATOM(munder, "munder") +HTML5_ATOM(marker, "marker") +HTML5_ATOM(meter, "meter") +HTML5_ATOM(mover, "mover") HTML5_ATOM(munderover, "munderover") +HTML5_ATOM(merror, "merror") HTML5_ATOM(mlabeledtr, "mlabeledtr") +HTML5_ATOM(nobr, "nobr") HTML5_ATOM(notanumber, "notanumber") +HTML5_ATOM(power, "power") +HTML5_ATOM(tr, "tr") HTML5_ATOM(solidcolor, "solidcolor") -HTML5_ATOM(altglyphdef, "altglyphdef") -HTML5_ATOM(altGlyphDef, "altGlyphDef") +HTML5_ATOM(selector, "selector") +HTML5_ATOM(vector, "vector") +HTML5_ATOM(arccos, "arccos") +HTML5_ATOM(address, "address") +HTML5_ATOM(canvas, "canvas") +HTML5_ATOM(complexes, "complexes") +HTML5_ATOM(defs, "defs") +HTML5_ATOM(details, "details") +HTML5_ATOM(exists, "exists") +HTML5_ATOM(implies, "implies") +HTML5_ATOM(integers, "integers") +HTML5_ATOM(ms, "ms") +HTML5_ATOM(mprescripts, "mprescripts") +HTML5_ATOM(mmultiscripts, "mmultiscripts") +HTML5_ATOM(minus, "minus") +HTML5_ATOM(noframes, "noframes") +HTML5_ATOM(naturalnumbers, "naturalnumbers") +HTML5_ATOM(primes, "primes") +HTML5_ATOM(progress, "progress") +HTML5_ATOM(plus, "plus") +HTML5_ATOM(reals, "reals") +HTML5_ATOM(rationals, "rationals") +HTML5_ATOM(semantics, "semantics") +HTML5_ATOM(times, "times") +HTML5_ATOM(dt, "dt") +HTML5_ATOM(applet, "applet") +HTML5_ATOM(arccot, "arccot") +HTML5_ATOM(basefont, "basefont") +HTML5_ATOM(cartesianproduct, "cartesianproduct") +HTML5_ATOM(gt, "gt") HTML5_ATOM(determinant, "determinant") -HTML5_ATOM(femergenode, "femergenode") -HTML5_ATOM(feMergeNode, "feMergeNode") -HTML5_ATOM(fecomposite, "fecomposite") -HTML5_ATOM(feComposite, "feComposite") +HTML5_ATOM(datalist, "datalist") +HTML5_ATOM(emptyset, "emptyset") +HTML5_ATOM(equivalent, "equivalent") +HTML5_ATOM(font_face_format, "font-face-format") +HTML5_ATOM(foreignobject, "foreignobject") +HTML5_ATOM(foreignObject, "foreignObject") +HTML5_ATOM(fieldset, "fieldset") +HTML5_ATOM(frameset, "frameset") +HTML5_ATOM(feoffset, "feoffset") +HTML5_ATOM(feOffset, "feOffset") HTML5_ATOM(fespotlight, "fespotlight") HTML5_ATOM(feSpotLight, "feSpotLight") -HTML5_ATOM(maligngroup, "maligngroup") -HTML5_ATOM(mprescripts, "mprescripts") -HTML5_ATOM(momentabout, "momentabout") -HTML5_ATOM(notprsubset, "notprsubset") -HTML5_ATOM(partialdiff, "partialdiff") -HTML5_ATOM(altglyphitem, "altglyphitem") -HTML5_ATOM(altGlyphItem, "altGlyphItem") -HTML5_ATOM(animatecolor, "animatecolor") -HTML5_ATOM(animateColor, "animateColor") -HTML5_ATOM(datatemplate, "datatemplate") -HTML5_ATOM(exponentiale, "exponentiale") -HTML5_ATOM(feturbulence, "feturbulence") -HTML5_ATOM(feTurbulence, "feTurbulence") HTML5_ATOM(fepointlight, "fepointlight") HTML5_ATOM(fePointLight, "fePointLight") -HTML5_ATOM(fedropshadow, "fedropshadow") -HTML5_ATOM(feDropShadow, "feDropShadow") -HTML5_ATOM(femorphology, "femorphology") -HTML5_ATOM(feMorphology, "feMorphology") -HTML5_ATOM(outerproduct, "outerproduct") -HTML5_ATOM(animatemotion, "animatemotion") -HTML5_ATOM(animateMotion, "animateMotion") -HTML5_ATOM(font_face_src, "font-face-src") -HTML5_ATOM(font_face_uri, "font-face-uri") -HTML5_ATOM(foreignobject, "foreignobject") -HTML5_ATOM(fecolormatrix, "fecolormatrix") -HTML5_ATOM(feColorMatrix, "feColorMatrix") -HTML5_ATOM(missing_glyph, "missing-glyph") -HTML5_ATOM(mmultiscripts, "mmultiscripts") -HTML5_ATOM(scalarproduct, "scalarproduct") -HTML5_ATOM(vectorproduct, "vectorproduct") -HTML5_ATOM(definition_src, "definition-src") -HTML5_ATOM(font_face_name, "font-face-name") -HTML5_ATOM(fegaussianblur, "fegaussianblur") -HTML5_ATOM(feGaussianBlur, "feGaussianBlur") HTML5_ATOM(fedistantlight, "fedistantlight") HTML5_ATOM(feDistantLight, "feDistantLight") +HTML5_ATOM(font, "font") +HTML5_ATOM(lt, "lt") +HTML5_ATOM(intersect, "intersect") +HTML5_ATOM(ident, "ident") +HTML5_ATOM(input, "input") +HTML5_ATOM(limit, "limit") +HTML5_ATOM(lowlimit, "lowlimit") HTML5_ATOM(lineargradient, "lineargradient") HTML5_ATOM(linearGradient, "linearGradient") -HTML5_ATOM(naturalnumbers, "naturalnumbers") +HTML5_ATOM(moment, "moment") +HTML5_ATOM(mroot, "mroot") +HTML5_ATOM(msqrt, "msqrt") +HTML5_ATOM(momentabout, "momentabout") +HTML5_ATOM(mtext, "mtext") +HTML5_ATOM(notsubset, "notsubset") +HTML5_ATOM(notprsubset, "notprsubset") +HTML5_ATOM(noscript, "noscript") +HTML5_ATOM(nest, "nest") +HTML5_ATOM(outerproduct, "outerproduct") +HTML5_ATOM(output, "output") +HTML5_ATOM(product, "product") +HTML5_ATOM(prsubset, "prsubset") +HTML5_ATOM(plaintext, "plaintext") +HTML5_ATOM(tt, "tt") +HTML5_ATOM(quotient, "quotient") +HTML5_ATOM(rect, "rect") HTML5_ATOM(radialgradient, "radialgradient") HTML5_ATOM(radialGradient, "radialGradient") -HTML5_ATOM(animatetransform, "animatetransform") -HTML5_ATOM(animateTransform, "animateTransform") -HTML5_ATOM(cartesianproduct, "cartesianproduct") -HTML5_ATOM(font_face_format, "font-face-format") +HTML5_ATOM(root, "root") +HTML5_ATOM(select, "select") +HTML5_ATOM(scalarproduct, "scalarproduct") +HTML5_ATOM(subset, "subset") +HTML5_ATOM(script, "script") +HTML5_ATOM(tfoot, "tfoot") +HTML5_ATOM(uplimit, "uplimit") +HTML5_ATOM(vectorproduct, "vectorproduct") +HTML5_ATOM(menu, "menu") +HTML5_ATOM(sdev, "sdev") +HTML5_ATOM(fedropshadow, "fedropshadow") +HTML5_ATOM(feDropShadow, "feDropShadow") +HTML5_ATOM(mrow, "mrow") +HTML5_ATOM(matrixrow, "matrixrow") +HTML5_ATOM(shadow, "shadow") +HTML5_ATOM(view, "view") +HTML5_ATOM(approx, "approx") +HTML5_ATOM(fecolormatrix, "fecolormatrix") +HTML5_ATOM(feColorMatrix, "feColorMatrix") HTML5_ATOM(feconvolvematrix, "feconvolvematrix") HTML5_ATOM(feConvolveMatrix, "feConvolveMatrix") -HTML5_ATOM(fediffuselighting, "fediffuselighting") -HTML5_ATOM(feDiffuseLighting, "feDiffuseLighting") -HTML5_ATOM(fedisplacementmap, "fedisplacementmap") -HTML5_ATOM(feDisplacementMap, "feDisplacementMap") -HTML5_ATOM(fespecularlighting, "fespecularlighting") -HTML5_ATOM(feSpecularLighting, "feSpecularLighting") -HTML5_ATOM(domainofapplication, "domainofapplication") -HTML5_ATOM(fecomponenttransfer, "fecomponenttransfer") -HTML5_ATOM(feComponentTransfer, "feComponentTransfer") +HTML5_ATOM(matrix, "matrix") +HTML5_ATOM(apply, "apply") +HTML5_ATOM(body, "body") +HTML5_ATOM(femorphology, "femorphology") +HTML5_ATOM(feMorphology, "feMorphology") +HTML5_ATOM(imaginary, "imaginary") +HTML5_ATOM(infinity, "infinity") +HTML5_ATOM(ruby, "ruby") +HTML5_ATOM(tbody, "tbody") +HTML5_ATOM(emptystring, "") diff --git a/parser/html/nsHtml5AttributeEntry.h b/parser/html/nsHtml5AttributeEntry.h new file mode 100644 index 000000000..75dd10842 --- /dev/null +++ b/parser/html/nsHtml5AttributeEntry.h @@ -0,0 +1,91 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsHtml5AttributeEntry_h +#define nsHtml5AttributeEntry_h + +#include "nsHtml5AttributeName.h" + +class nsHtml5AttributeEntry final +{ +public: + nsHtml5AttributeEntry(nsHtml5AttributeName* aName, + nsHtml5String aValue, + int32_t aLine) + : mLine(aLine) + , mValue(aValue) + { + // Let's hope the compiler coalesces the following as appropriate. + mLocals[0] = aName->getLocal(0); + mLocals[1] = aName->getLocal(1); + mLocals[2] = aName->getLocal(2); + mPrefixes[0] = aName->getPrefix(0); + mPrefixes[1] = aName->getPrefix(1); + mPrefixes[2] = aName->getPrefix(2); + mUris[0] = aName->getUri(0); + mUris[1] = aName->getUri(1); + mUris[2] = aName->getUri(2); + } + + // Isindex-only so doesn't need to deal with SVG and MathML + nsHtml5AttributeEntry(nsIAtom* aName, nsHtml5String aValue, int32_t aLine) + : mLine(aLine) + , mValue(aValue) + { + // Let's hope the compiler coalesces the following as appropriate. + mLocals[0] = aName; + mLocals[1] = aName; + mLocals[2] = aName; + mPrefixes[0] = nullptr; + mPrefixes[1] = nullptr; + mPrefixes[2] = nullptr; + mUris[0] = kNameSpaceID_None; + mUris[1] = kNameSpaceID_None; + mUris[2] = kNameSpaceID_None; + } + + inline nsIAtom* GetLocal(int32_t aMode) { return mLocals[aMode]; } + + inline nsIAtom* GetPrefix(int32_t aMode) { return mPrefixes[aMode]; } + + inline int32_t GetUri(int32_t aMode) { return mUris[aMode]; } + + inline nsHtml5String GetValue() { return mValue; } + + inline int32_t GetLine() { return mLine; } + + inline void ReleaseValue() { mValue.Release(); } + + inline nsHtml5AttributeEntry Clone(nsHtml5AtomTable* aInterner) + { + // Copy the memory + nsHtml5AttributeEntry clone(*this); + // Increment refcount for value + clone.mValue = this->mValue.Clone(); + if (aInterner) { + // Now if we have an interner, we'll need to rewrite non-static atoms. + // Only the local names may be non-static, in which case all three + // are the same. + nsIAtom* local = GetLocal(0); + if (!local->IsStaticAtom()) { + nsAutoString str; + local->ToString(str); + local = aInterner->GetAtom(str); + clone.mLocals[0] = local; + clone.mLocals[1] = local; + clone.mLocals[2] = local; + } + } + return clone; + } + +private: + nsIAtom* mLocals[3]; + nsIAtom* mPrefixes[3]; + int32_t mUris[3]; + int32_t mLine; + nsHtml5String mValue; +}; + +#endif // nsHtml5AttributeEntry_h diff --git a/parser/html/nsHtml5AttributeName.cpp b/parser/html/nsHtml5AttributeName.cpp index 7e1cb7dd0..2b1ffd507 100644 --- a/parser/html/nsHtml5AttributeName.cpp +++ b/parser/html/nsHtml5AttributeName.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2011 Mozilla Foundation + * Copyright (c) 2008-2017 Mozilla Foundation * Copyright (c) 2018-2020 Moonchild Productions * Copyright (c) 2020 Binary Outcast * @@ -43,19 +43,19 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" +#include "nsHtml5ElementName.h" #include "nsHtml5Tokenizer.h" #include "nsHtml5TreeBuilder.h" #include "nsHtml5MetaScanner.h" -#include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" #include "nsHtml5StackNode.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5StateSnapshot.h" #include "nsHtml5Portability.h" #include "nsHtml5AttributeName.h" -#include "nsHtml5ReleasableAttributeName.h" int32_t* nsHtml5AttributeName::ALL_NO_NS = 0; int32_t* nsHtml5AttributeName::XMLNS_NS = 0; @@ -105,59 +105,30 @@ nsHtml5AttributeName::SAME_LOCAL(nsIAtom* name) return arr; } -nsHtml5AttributeName* -nsHtml5AttributeName::nameByBuffer(char16_t* buf, int32_t offset, int32_t length, nsHtml5AtomTable* interner) -{ - int32_t hash = nsHtml5AttributeName::bufToHash(buf, length); - int32_t index = nsHtml5AttributeName::ATTRIBUTE_HASHES.binarySearch(hash); - if (index < 0) { - return nsHtml5AttributeName::createAttributeName(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length, interner)); - } else { - nsHtml5AttributeName* attributeName = nsHtml5AttributeName::ATTRIBUTE_NAMES[index]; - nsIAtom* name = attributeName->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML); - if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) { - return nsHtml5AttributeName::createAttributeName(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length, interner)); - } - return attributeName; - } -} - -int32_t -nsHtml5AttributeName::bufToHash(char16_t* buf, int32_t len) -{ - int32_t hash2 = 0; - int32_t hash = len; - hash <<= 5; - hash += buf[0] - 0x60; - int32_t j = len; - for (int32_t i = 0; i < 4 && j > 0; i++) { - j--; - hash <<= 5; - hash += buf[j] - 0x60; - hash2 <<= 6; - hash2 += buf[i] - 0x5F; - } - return hash ^ hash2; -} - nsHtml5AttributeName::nsHtml5AttributeName(int32_t* uri, nsIAtom** local, nsIAtom** prefix) : uri(uri), local(local), - prefix(prefix) + prefix(prefix), + custom(false) { MOZ_COUNT_CTOR(nsHtml5AttributeName); } -nsHtml5AttributeName* -nsHtml5AttributeName::createAttributeName(nsIAtom* name) + +nsHtml5AttributeName::nsHtml5AttributeName() + : uri(nsHtml5AttributeName::ALL_NO_NS), + local(nsHtml5AttributeName::SAME_LOCAL(nullptr)), + prefix(ALL_NO_PREFIX), + custom(true) { - return new nsHtml5ReleasableAttributeName(nsHtml5AttributeName::ALL_NO_NS, nsHtml5AttributeName::SAME_LOCAL(name), ALL_NO_PREFIX); + MOZ_COUNT_CTOR(nsHtml5AttributeName); } -void -nsHtml5AttributeName::release() +nsHtml5AttributeName* +nsHtml5AttributeName::createAttributeName(nsIAtom* name) { + return new nsHtml5AttributeName(nsHtml5AttributeName::ALL_NO_NS, nsHtml5AttributeName::SAME_LOCAL(name), ALL_NO_PREFIX); } @@ -167,12 +138,6 @@ nsHtml5AttributeName::~nsHtml5AttributeName() delete[] local; } -nsHtml5AttributeName* -nsHtml5AttributeName::cloneAttributeName(nsHtml5AtomTable* interner) -{ - return this; -} - int32_t nsHtml5AttributeName::getUri(int32_t mode) { @@ -194,594 +159,595 @@ nsHtml5AttributeName::getPrefix(int32_t mode) bool nsHtml5AttributeName::equalsAnother(nsHtml5AttributeName* another) { - return this->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML) == another->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML); + return this->getLocal(nsHtml5AttributeName::HTML) == another->getLocal(nsHtml5AttributeName::HTML); } +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DUR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_END = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IN2 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOW = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MAX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REV = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SRC = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_D = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_R = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_X = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_Y = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_Z = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_G2 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CAP_HEIGHT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_G1 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K4 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K2 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K3 = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K1 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ID = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_U2 = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_U1 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TO = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_Y2 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_Y1 = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_X1 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_Y1 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_G2 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K2 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_U2 = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_X2 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DUR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_END = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IN2 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MAX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOW = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REV = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SRC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AXIS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ABBR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BBOX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CITE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BIAS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHAR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EDGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATA = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FROM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FORM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HIGH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HREF = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPEN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ICON = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NAME = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MASK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LINK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LANG = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOOP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LIST = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WHEN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WRAP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPAN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STEP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XREF = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ASYNC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALINK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALIGN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLOSE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLASS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_Y2 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K3 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_K4 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XML_SPACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XML_LANG = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XML_BASE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_GRAB = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_VALUEMAX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_LABELLEDBY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DESCRIBEDBY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DISABLED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_CHECKED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SELECTED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DROPEFFECT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_REQUIRED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_EXPANDED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_PRESSED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_LEVEL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_CHANNEL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_HIDDEN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SECRET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_POSINSET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_ATOMIC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_INVALID = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_TEMPLATEID = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_VALUEMIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_MULTISELECTABLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_CONTROLS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_MULTILINE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_READONLY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_OWNS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_ACTIVEDESCENDANT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_RELEVANT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DATATYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_VALUENOW = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SORT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_AUTOCOMPLETE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_FLOWTO = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_BUSY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_LIVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_HASPOPUP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SETSIZE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLEAR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BEGIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEPTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEFER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FENCE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAME = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATAFORMATAS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DISABLED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATAFLD = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEFAULT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATASRC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATA = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EQUALCOLUMNS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EQUALROWS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HSPACE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ISMAP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONEND = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_INDEX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORDER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OTHER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCUT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NARGS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MEDIA = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LABEL = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOCAL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WIDTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TITLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VLINK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALUE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SLOPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SHAPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCOPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCALE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPEED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STYLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RULES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STEMH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SIZES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STEMV = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_START = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XMLNS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCEPT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ASCENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACTIVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALTIMG = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACTION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BORDER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CURSOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COORDS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILTER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FORMAT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HIDDEN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONLOAD = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAG = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORIGIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONZOOM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONHELP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSTOP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDROP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBLUR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OBJECT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OFFSET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORIENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCOPY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOWRAP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOHREF = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MACROS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_METHOD = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOWSRC = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LQUOTE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_USEMAP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WIDTHS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TARGET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALUES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALIGN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POSTER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PROMPT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SRCDOC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCOPED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCHEME = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RADIUS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RESULT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SRCSET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MOVABLELIMITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOTATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDATASETCHANGED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDATAAVAILABLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONPASTE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDATASETCOMPLETE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RSPACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWALIGN = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROTATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RQUOTE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALTTEXT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARCHIVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AZIMUTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLOSURE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEPARATOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEPARATORS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_MATHEMATICAL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VSPACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_HANGING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XCHANNELSELECTOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_YCHANNELSELECTOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARABIC_FORM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ENABLE_BACKGROUND = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDBLCLICK = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONABORT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CALCMODE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHECKED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLASSID = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHAROFF = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BGCOLOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLSPAN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHARSET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COMPACT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ENCTYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATASRC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATAFLD = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DECLARE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DISPLAY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIVISOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEFAULT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DESCENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KERNING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HANGING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HEADERS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONPASTE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCLICK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPTIMUM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEGIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONKEYUP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFOCUS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONERROR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONINPUT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONABORT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSTART = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONRESET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FENCE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSCROLL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONACTIVATE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPACITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOSHADE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MINSIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MAXSIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LARGEOP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNICODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TARGETX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TARGETY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VIEWBOX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERSION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PROFILE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPACING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RESTART = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWSPAN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPECULAREXPONENT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPECULARCONSTANT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPECIFICATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_THICKMATHSPACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNICODE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNICODE_BIDI = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNICODE_RANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BORDER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ID = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GRADIENTTRANSFORM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GRADIENTUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HIDDEN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HEADERS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_READONLY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RENDERING_INTENT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SRCDOC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STDDEVIATION = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SANDBOX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SUMMARY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STANDBY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPLACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOPLAY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ADDITIVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CALCMODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CODETYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CODEBASE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTROLS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_IDEOGRAPHIC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WORD_SPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCENTUNDER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCEPT_CHARSET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCESSKEY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCENT_HEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCENT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ASCENT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCEPT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BEVELLED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASEFREQUENCY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASELINE_SHIFT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASEPROFILE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASELINE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EXPONENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EDGEMODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ENCODING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPHREF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CODE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CODETYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CODEBASE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CITE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEFER = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATETIME = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DISABLED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTSIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYTIMES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PANOSE_1 = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HREFLANG = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONRESIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCHANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBOUNCE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONUNLOAD = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFINISH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSCROLL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPERATOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OVERFLOW = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSUBMIT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONREPEAT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSELECT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOTATION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NORESIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MANIFEST = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHSIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MULTIPLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LONGDESC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LANGUAGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEMPLATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TABINDEX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PROPERTY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_READONLY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SELECTED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWLINES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEAMLESS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWALIGN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRETCHY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REQUIRED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XML_BASE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XML_LANG = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_X_HEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_OWNS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOFOCUS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SORT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCESSKEY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_BUSY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_GRAB = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AMPLITUDE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_LIVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIP_RULE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIP_PATH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EQUALROWS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ELEVATION = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIRECTION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DRAGGABLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILL_RULE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTSTYLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_SIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYSYSTEM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYPOINTS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EDGEMODE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EDGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FACE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HIDEFOCUS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMESSAGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_INDEX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IRRELEVANT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_INTERCEPT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGEND = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOVEEND = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONINVALID = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_INTEGRITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONKEYDOWN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFOCUSIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEUP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_INPUTMODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWEXIT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHCOLOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MASKUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MAXLENGTH = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LINEBREAK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TRANSFORM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_HANGING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALUETYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTSATZ = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTSATX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTSATY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SYMMETRIC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCROLLING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LABEL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LINETHICKNESS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MODE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NAME = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NORESIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREUNLOAD = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONREPEAT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OBJECT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSELECT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORDER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OTHER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONRESET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCELLCHANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONREADYSTATECHANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMESSAGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEGIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONHELP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREPRINT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORIENT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORIENTATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFORECOPY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSELECTSTART = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREPASTE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREUPDATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDEACTIVATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREACTIVATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFORDEACTIVATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONKEYPRESS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONKEYUP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREEDITFOCUS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFORECUT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONKEYDOWN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONRESIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_MAX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFERRERPOLICY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RULES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_MIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEATCOUNT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_START = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_TEMPLATE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEATDUR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SELECTED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPEED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SIZES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SUPERSCRIPTSHIFT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRETCHY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCHEME = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPREADMETHOD = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SELECTION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEPARATOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XML_SPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOSUBMIT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNSELECTABLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNDERLINE_POSITION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNDERLINE_THICKNESS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_X_HEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIFFUSECONSTANT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HREF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HREFLANG = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONAFTERPRINT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONAFTERUPDATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PROFILE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SURFACESCALE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XREF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALIGN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALIGNMENT_BASELINE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALIGNMENTSCOPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DRAGGABLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HANGING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IMAGE_RENDERING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LANGUAGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LANG = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LARGEOP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LONGDESC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LENGTHADJUST = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARGINHEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARGINWIDTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NARGS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORIGIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TARGET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TARGETX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TARGETY = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALPHABETIC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARCHIVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HIGH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LIGHTING_COLOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHEMATICAL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHBACKGROUND = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_METHOD = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHVARIANT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHCOLOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHSIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOSHADE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCHANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATHLENGTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALTIMG = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACTIONTYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCUMULATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_LEVEL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNSPAN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CAP_HEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACTION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACTIVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ADDITIVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BEGIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DOMINANT_BASELINE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIVISOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEFINITIONURL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HORIZ_ADV_X = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HORIZ_ORIGIN_X = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HORIZ_ORIGIN_Y = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LIMITINGCONEANGLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MEDIUMMATHSPACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MEDIA = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MANIFEST = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFILTERCHANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFINISH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPTIMUM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RADIOGROUP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RADIUS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCRIPTLEVEL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCRIPTSIZEMULTIPLIER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRIKETHROUGH_POSITION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRIKETHROUGH_THICKNESS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCRIPTMINSIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TABINDEX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALIGN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VISIBILITY = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BACKGROUND = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_NAME = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GROUPALIGN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTFAMILY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTWEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_STYLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYSPLINES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HTTP_EQUIV = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONACTIVATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OCCURRENCE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IRRELEVANT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDBLCLICK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGDROP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONKEYPRESS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWENTER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGOVER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFOCUSOUT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEOUT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NUMOCTAVES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LINK = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKER_MID = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKERHEIGHT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKER_END = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXTLENGTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VISIBILITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VIEWTARGET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERT_ADV_Y = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATHLENGTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_MAX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RADIOGROUP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STOP_COLOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEPARATORS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_MIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWSPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MASK = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKER_START = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKERWIDTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MASKUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKERUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MASKCONTENTUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AMPLITUDE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CELLSPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CELLPADDING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DECLARE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILL_RULE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILL_OPACITY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MAXLENGTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCLICK = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBLUR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPLACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWLINES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCALE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STYLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TABLEVALUES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TITLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_ALPHABETIC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AZIMUTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FORMAT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAMEBORDER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAME = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAMESPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FROM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FORM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PROMPT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PRIMITIVEUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SYMMETRIC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STEMH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STEMV = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SEAMLESS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SUMMARY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_USEMAP = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ZOOMANDPAN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_TYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_ROLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ASYNC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALINK = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ICON = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KERNELMATRIX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KERNING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KERNELUNITLENGTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONUNLOAD = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPEN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONINVALID = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONEND = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONINPUT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTER_EVENTS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTSATX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTSATY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTSATZ = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPAN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STANDBY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_THINMATHSPACE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TRANSFORM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VLINK = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WHEN = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_HREF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_TITLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_ROLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_ARCROLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XMLNS_XLINK = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XMLNS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_TYPE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_SHOW = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCENTUNDER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SECRET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_ATOMIC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_HIDDEN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_FLOWTO = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARABIC_FORM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CELLPADDING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CELLSPACING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNWIDTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CROSSORIGIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNALIGN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNLINES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTEXTMENU = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASEPROFILE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_FAMILY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAMEBORDER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILTERUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_ACTUATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOPLAY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOSUBMIT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOCOMPLETE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOFOCUS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BGCOLOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_PROFILE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_RENDERING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_INTERPOLATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_INTERPOLATION_FILTERS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ENCODING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EXPONENT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FLOOD_COLOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_WEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HORIZ_ADV_X = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGLEAVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEMOVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ORIENTATION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEDOWN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEOVER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGENTER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FLOOD_OPACITY = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IDEOGRAPHIC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFORECUT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFORMINPUT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGSTART = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LQUOTE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PANOSE_1 = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NUMOCTAVES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONLOAD = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBOUNCE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCONTROLSELECT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWSINSERTED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEWHEEL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWENTER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEENTER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEOVER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFORMCHANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFOCUSIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWEXIT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOVEEND = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCONTEXTMENU = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONZOOM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONLOSECAPTURE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCOPY = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOVESTART = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKERUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHVARIANT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARGINWIDTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKERWIDTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT_ANCHOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TABLEVALUES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCRIPTLEVEL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEATCOUNT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STITCHTILES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STARTOFFSET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCROLLDELAY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XMLNS_XLINK = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_TITLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_INVALID = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_PRESSED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_CHECKED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AUTOCOMPLETE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SETSIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_CHANNEL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EQUALCOLUMNS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DISPLAYSTYLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DATAFORMATAS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILL_OPACITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_VARIANT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_STRETCH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAMESPACING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KERNELMATRIX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDEACTIVATE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWSDELETE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSELEAVE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFORMCHANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCELLCHANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEWHEEL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEENTER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONAFTERPRINT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFORECOPY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARGINHEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKERHEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MARKER_START = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHEMATICAL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LENGTHADJUST = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNSELECTABLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNICODE_BIDI = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNITS_PER_EM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WORD_SPACING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WRITING_MODE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_ALPHABETIC = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERNUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPREADMETHOD = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SURFACESCALE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEMOVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEUP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFOCUS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEOUT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFORMINPUT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFOCUSOUT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONMOUSEDOWN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TO = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RQUOTE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_LINECAP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCROLLDELAY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_DASHARRAY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_DASHOFFSET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_LINEJOIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_MITERLIMIT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCROLLING = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_WIDTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_START = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STDDEVIATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_OPACITY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COMPACT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIP_RULE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIP_PATH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIPPATHUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DISPLAY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DISPLAYSTYLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_ORIENTATION_VERTICAL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_ORIENTATION_HORIZONTAL = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPHREF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_NAME = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HTTP_EQUIV = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYPOINTS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOOP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PROPERTY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCOPED = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STEP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SHAPE_RENDERING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCOPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SHAPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SLOPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STOP_COLOR = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STOP_OPACITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_CONTROLS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_HASPOPUP = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCENT_HEIGHT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_VALUENOW = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_RELEVANT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_POSINSET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_VALUEMAX = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_READONLY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SELECTED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_REQUIRED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_EXPANDED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DISABLED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ATTRIBUTETYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEMPLATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WRAP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ABBR = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ATTRIBUTENAME = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DATATYPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_VALUEMIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASEFREQUENCY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNSPACING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_PROFILE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLIPPATHUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEFINITIONURL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GRADIENTUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FLOOD_OPACITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONAFTERUPDATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ATTRIBUTETYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHAR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COORDS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHAROFF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CHARSET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MACROS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOWRAP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_NOHREF = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAG = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGENTER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGOVER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONPROPERTYCHANGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGEND = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDROP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGDROP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OVERLINE_POSITION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONERROR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OPERATOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OVERFLOW = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGSTART = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONERRORUPDATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREPASTE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONLOSECAPTURE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCONTEXTMENU = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSELECTSTART = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREPRINT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MOVABLELIMITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LINETHICKNESS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNICODE_RANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_THINMATHSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERT_ORIGIN_X = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERT_ORIGIN_Y = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_IDEOGRAPHIC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OVERLINE_THICKNESS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDRAGLEAVE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STARTOFFSET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_START = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_AXIS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BIAS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLSPAN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLASSID = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CROSSORIGIN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CURSOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLOSURE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLOSE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CLASS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYSYSTEM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYSPLINES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LOWSRC = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MAXSIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MINSIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OFFSET = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PRESERVEALPHA = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCRIPTMINSIZE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPECIFICATION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_ACTUATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XLINK_ARCROLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCEPT_CHARSET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALIGNMENTSCOPE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_MULTILINE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASELINE_SHIFT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HORIZ_ORIGIN_X = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_HORIZ_ORIGIN_Y = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREUPDATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONFILTERCHANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONROWSINSERTED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREUNLOAD = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MATHBACKGROUND = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LETTER_SPACING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LIGHTING_COLOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_THICKMATHSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT_RENDERING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_V_MATHEMATICAL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POINTER_EVENTS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PRIMITIVEUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFERRERPOLICY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SYSTEMLANGUAGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_LINECAP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PRESERVEASPECTRATIO = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWSPAN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWSPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ROWS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SRCSET = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SUBSCRIPTSHIFT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_OPACITY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DROPEFFECT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_LABELLEDBY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_TEMPLATEID = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_RENDERING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERSION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALTTEXT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTENTEDITABLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DIFFUSECONSTANT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDATAAVAILABLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCONTROLSELECT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_IMAGE_RENDERING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MEDIUMMATHSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT_DECORATION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SHAPE_RENDERING = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_LINEJOIN = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REPEAT_TEMPLATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_DESCRIBEDBY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTROLS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTENT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTEXTMENU = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DEPTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ENCTYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_STRETCH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILTER = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTWEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_WEIGHT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTSTYLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_STYLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTFAMILY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_FAMILY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_VARIANT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_SIZE_ADJUST = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KERNELUNITLENGTH = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREACTIVATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONPROPERTYCHANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDATASETCHANGED = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MASKCONTENTUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILTERUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONTSIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_SIZE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_KEYTIMES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LETTER_SPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LIST = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_MULTIPLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSTOP = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSTART = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_POSTER = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERNTRANSFORM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERNUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERNCONTENTUNITS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RESTART = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STITCHTILES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SYSTEMLANGUAGE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT_RENDERING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERT_ORIGIN_X = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERT_ADV_Y = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERT_ORIGIN_Y = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT_DECORATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT_ANCHOR = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXTLENGTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_TEXT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNITS_PER_EM = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WRITING_MODE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WIDTHS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_WIDTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ACCUMULATE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNSPAN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNLINES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNALIGN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNSPACING = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNWIDTH = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GROUPALIGN = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_INPUTMODE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OCCURRENCE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONSUBMIT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONCUT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REQUIRED = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REQUIREDFEATURES = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RENDERING_INTENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPECULAREXPONENT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SPECULARCONSTANT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SUPERSCRIPTSHIFT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_DASHARRAY = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_XCHANNELSELECTOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_YCHANNELSELECTOR = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_AUTOCOMPLETE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ENABLE_BACKGROUND = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DOMINANT_BASELINE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GRADIENTTRANSFORM = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFORDEACTIVATE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONDATASETCOMPLETE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OVERLINE_POSITION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONBEFOREEDITFOCUS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_LIMITINGCONEANGLE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RESULT = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REQUIREDEXTENSIONS = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALUES = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALUETYPE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VALUE = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ELEVATION = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VIEWTARGET = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VIEWBOX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BBOX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFX = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RY = nullptr; +nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFY = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERYTHINMATHSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_DASHOFFSET = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STROKE_MITERLIMIT = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ALIGNMENT_BASELINE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ONREADYSTATECHANGE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_OVERLINE_THICKNESS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNDERLINE_POSITION = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERYTHICKMATHSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REQUIREDEXTENSIONS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_INTERPOLATION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_UNDERLINE_THICKNESS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PRESERVEASPECTRATIO = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_PATTERNCONTENTUNITS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_MULTISELECTABLE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_SCRIPTSIZEMULTIPLIER = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_ACTIVEDESCENDANT = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERYVERYTHINMATHSPACE = nullptr; nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERYVERYTHICKMATHSPACE = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRIKETHROUGH_POSITION = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRIKETHROUGH_THICKNESS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_ORIENTATION_VERTICAL = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_INTERPOLATION_FILTERS = nullptr; -nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_ORIENTATION_HORIZONTAL = nullptr; nsHtml5AttributeName** nsHtml5AttributeName::ATTRIBUTE_NAMES = 0; -static int32_t const ATTRIBUTE_HASHES_DATA[] = { 1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150813181, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191443343, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224431494, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225126263, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 290055764, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 310252031, 310358241, 310373094, 310833159, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 313795700, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371593469, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 492891370, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 878105336, 908643300, 945213471 }; +static int32_t const ATTRIBUTE_HASHES_DATA[] = { 1891069765, 1756360955, 1972151670, 1740096054, 1814656840, 1922419228, 2004199576, 1680411449, 1754606246, 1785174319, 1854466380, 1910441773, 1932959284, 1988132214, 2017010843, 1037879561, 1691145478, 1749350104, 1754860110, 1758018291, 1801312388, 1823580230, 1873656984, 1905754853, 1917295176, 1922679531, 1941409583, 1972996699, 2000162011, 2009059485, 2065170434, 71303169, 1680185931, 1683805446, 1723336432, 1747939528, 1752985897, 1754698327, 1754927689, 1756804936, 1773606972, 1787699221, 1804405895, 1820262641, 1825437894, 1866496199, 1884142379, 1900544002, 1907701479, 1915295948, 1922319046, 1922630475, 1924517489, 1934970504, 1965349396, 1972904522, 1983347764, 1991392548, 2001669450, 2007019632, 2010452700, 2024763702, 2082471938, 57205395, 885522434, 1680165436, 1680311085, 1681694748, 1687751191, 1714745560, 1732771842, 1747348637, 1748566068, 1751507685, 1754214628, 1754645079, 1754798923, 1754872618, 1756190926, 1756704824, 1757053236, 1767875272, 1781007934, 1786821704, 1791068279, 1804054854, 1814517574, 1816178925, 1821755934, 1824005974, 1854285018, 1854497008, 1871251689, 1874788501, 1884343396, 1891937366, 1903759600, 1906419001, 1909819252, 1910527802, 1916247343, 1919297291, 1922400908, 1922566877, 1922665179, 1924206934, 1924629705, 1933369607, 1937777860, 1941454586, 1966439670, 1972744954, 1972922984, 1982640164, 1983461061, 1990062797, 1999273799, 2001578182, 2001814704, 2005925890, 2008084807, 2009079867, 2016711994, 2023146024, 2026975253, 2073034754, 2093791505, 53006051, 60345635, 876085250, 901775362, 1680140893, 1680165613, 1680230940, 1680345685, 1680446153, 1681940503, 1686731997, 1689324870, 1697174123, 1721189160, 1724189239, 1734404167, 1742183484, 1747792072, 1748503880, 1748971848, 1749856356, 1751679545, 1753297133, 1754546894, 1754643237, 1754647074, 1754792749, 1754858317, 1754860400, 1754905345, 1756147974, 1756265690, 1756428495, 1756737685, 1756874572, 1757874716, 1765800271, 1771637325, 1780879045, 1784574102, 1786740932, 1787193500, 1788842244, 1797666394, 1803839644, 1804081401, 1805715690, 1814560070, 1816104145, 1817175198, 1820727381, 1822002839, 1823841492, 1824159037, 1848600826, 1854366938, 1854497001, 1865910331, 1867462756, 1872343590, 1874270021, 1881750231, 1884267068, 1889633006, 1891182792, 1898415413, 1903612236, 1905628916, 1906408542, 1906423097, 1908462185, 1910441627, 1910503637, 1915025672, 1915757815, 1916286197, 1917857531, 1921880376, 1922384591, 1922413292, 1922482777, 1922599757, 1922665052, 1922677495, 1922699851, 1924453467, 1924583073, 1924773438, 1933123337, 1934917290, 1935597338, 1941253366, 1941438085, 1942026440, 1965561677, 1966454567, 1972656710, 1972863609, 1972908839, 1972963917, 1975062341, 1983266615, 1983416119, 1987410233, 1988788535, 1991021879, 1991643278, 2000125224, 2001210183, 2001634459, 2001710299, 2001898808, 2004957380, 2006516551, 2007064812, 2008408414, 2009061533, 2009231684, 2010716309, 2016810187, 2019887833, 2024616088, 2026741958, 2060302634, 2066743298, 2081423362, 2089811970, 2093791509, 52488851, 55077603, 59825747, 64487425, 72351745, 883425282, 894959618, 911736834, 1038141480, 1680159328, 1680165487, 1680181850, 1680198381, 1680251485, 1680323325, 1680347981, 1680433915, 1680511804, 1681844247, 1682440540, 1685882101, 1687503600, 1689048326, 1689839946, 1692408896, 1704262346, 1715466295, 1721347639, 1723340621, 1724238365, 1733919469, 1739583824, 1740130375, 1747299630, 1747455030, 1747839118, 1748306996, 1748552744, 1748869205, 1749027145, 1749399124, 1751232761, 1751649130, 1751755561, 1753049109, 1753550036, 1754434872, 1754579720, 1754612424, 1754644293, 1754647068, 1754647353, 1754751622, 1754794646, 1754835516, 1754860061, 1754860396, 1754860401, 1754899031, 1754907227, 1754958648, 1756155098, 1756219733, 1756302628, 1756426572, 1756471625, 1756710661, 1756762256, 1756836998, 1756889417, 1757421892, 1757942610, 1759379608, 1767725700, 1771569964, 1772032615, 1776114564, 1780975314, 1782518297, 1784643703, 1786622296, 1786775671, 1786851500, 1787365531, 1788254870, 1790814502, 1791070327, 1797886599, 1803561214, 1804036350, 1804069019, 1804235064, 1804978712, 1805715716, 1814558026, 1814656326, 1814986837, 1816144023, 1817175115, 1817177246, 1820637455, 1820928104, 1821958888, 1823574314, 1823829083, 1823975206, 1824081655, 1824377064, 1825677514, 1853862084, 1854302364, 1854464212, 1854474395, 1854497003, 1864698185, 1865910347, 1867448617, 1867620412, 1872034503, 1873590471, 1874261045, 1874698443, 1875753052, 1884079398, 1884246821, 1884295780, 1889569526, 1890996553, 1891098437, 1891186903, 1894552650, 1898428101, 1902640276, 1903659239, 1905541832, 1905672729, 1905902311, 1906408598, 1906421049, 1907660596, 1908195085, 1909438149, 1910328970, 1910441770, 1910487243, 1910507338, 1910572893, 1915146282, 1915341049, 1916210285, 1916278099, 1916337499, 1917327080, 1917953597, 1921061206, 1921894426, 1922354008, 1922384686, 1922413290, 1922413307, 1922470745, 1922531929, 1922567078, 1922607670, 1922632396, 1922665174, 1922671417, 1922679386, 1922679610, 1923088386, 1924443742, 1924462384, 1924570799, 1924585254, 1924738716, 1932870919, 1932986153, 1933145837, 1933508940, 1934917372, 1935099626, 1937336473, 1939976792, 1941286708, 1941435445, 1941440197, 1941550652, 1943317364, 1965512429, 1966384692, 1966442279, 1971855414, 1972196486, 1972744939, 1972750880, 1972904518, 1972904785, 1972909592, 1972962123, 1972980466, 1974849131, 1982254612, 1983157559, 1983290011, 1983398182, 1983432389, 1984430082, 1987422362, 1988784439, 1989522022, 1990107683, 1991220282, 1991625270, 1993343287, 2000096287, 2000160071, 2000752725, 2001527900, 2001634458, 2001669449, 2001710298, 2001732764, 2001826027, 2001898809, 2004846654, 2005342360, 2006459190, 2006824246, 2007021895, 2007064819, 2008401563, 2009041198, 2009061450, 2009071951, 2009141482, 2009434924, 2010542150, 2015950026, 2016787611, 2016910397, 2018908874, 2023011418, 2023342821, 2024647008, 2024794274, 2026893641, 2034765641, 2060474743, 2065694722, 2066762276, 2075005220, 2081947650, 2083520514, 2091784484, 2093791506, 2093791510, 50917059, 52489043, 53537523, 56685811, 57210387, 59830867, 60817409, 68157441, 71827457, 808872090, 878182402, 884998146, 892862466, 900202498, 902299650, 928514050, 1038063816, 1680095865, 1680159327, 1680165421, 1680165437, 1680165533, 1680165692, 1680181996, 1680198203, 1680229115, 1680231247, 1680282148, 1680315086, 1680343801, 1680345965, 1680368221, 1680413393, 1680437801, 1680452349, 1681174213, 1681733672, 1681879063, 1681969220, 1682587945, 1684319541, 1685902598, 1687164232, 1687620127, 1687751377, 1689130184, 1689788441, 1691091102, 1691293817, 1692933184, 1699185409, 1704526375, 1714763319, 1716303957, 1721305962, 1723309623, 1723336528, 1723645710, 1724197420, 1731048742, 1733874289, 1734182982, 1739561208, 1739927860, 1740119884, 1741535501, 1747295467, 1747309881, 1747446838, 1747479606, 1747800157, 1747906667, 1748021284 }; staticJArray<int32_t,int32_t> nsHtml5AttributeName::ATTRIBUTE_HASHES = { ATTRIBUTE_HASHES_DATA, MOZ_ARRAY_LENGTH(ATTRIBUTE_HASHES_DATA) }; void nsHtml5AttributeName::initializeStatics() @@ -818,1173 +784,1175 @@ nsHtml5AttributeName::initializeStatics() XML_PREFIX[0] = nullptr; XML_PREFIX[1] = nsHtml5Atoms::xml; XML_PREFIX[2] = nsHtml5Atoms::xml; + ATTR_ALT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alt), ALL_NO_PREFIX); + ATTR_DIR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dir), ALL_NO_PREFIX); + ATTR_DUR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dur), ALL_NO_PREFIX); + ATTR_END = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::end), ALL_NO_PREFIX); + ATTR_FOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::for_), ALL_NO_PREFIX); + ATTR_IN2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::in2), ALL_NO_PREFIX); + ATTR_LOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::low), ALL_NO_PREFIX); + ATTR_MIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::min), ALL_NO_PREFIX); + ATTR_MAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::max), ALL_NO_PREFIX); + ATTR_REL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rel), ALL_NO_PREFIX); + ATTR_REV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rev), ALL_NO_PREFIX); + ATTR_SRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::src), ALL_NO_PREFIX); ATTR_D = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::d), ALL_NO_PREFIX); ATTR_K = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k), ALL_NO_PREFIX); ATTR_R = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::r), ALL_NO_PREFIX); ATTR_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x), ALL_NO_PREFIX); ATTR_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y), ALL_NO_PREFIX); ATTR_Z = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::z), ALL_NO_PREFIX); - ATTR_BY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::by), ALL_NO_PREFIX); - ATTR_CX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cx), ALL_NO_PREFIX); - ATTR_CY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cy), ALL_NO_PREFIX); - ATTR_DX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dx), ALL_NO_PREFIX); - ATTR_DY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dy), ALL_NO_PREFIX); - ATTR_G2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::g2), ALL_NO_PREFIX); + ATTR_CAP_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cap_height), ALL_NO_PREFIX); ATTR_G1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::g1), ALL_NO_PREFIX); - ATTR_FX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fx), ALL_NO_PREFIX); - ATTR_FY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fy), ALL_NO_PREFIX); - ATTR_K4 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k4), ALL_NO_PREFIX); - ATTR_K2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k2), ALL_NO_PREFIX); - ATTR_K3 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k3), ALL_NO_PREFIX); ATTR_K1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k1), ALL_NO_PREFIX); - ATTR_ID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::id), ALL_NO_PREFIX); - ATTR_IN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::in), ALL_NO_PREFIX); - ATTR_U2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::u2), ALL_NO_PREFIX); ATTR_U1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::u1), ALL_NO_PREFIX); - ATTR_RT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rt), ALL_NO_PREFIX); - ATTR_RX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rx), ALL_NO_PREFIX); - ATTR_RY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ry), ALL_NO_PREFIX); - ATTR_TO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::to), ALL_NO_PREFIX); - ATTR_Y2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y2), ALL_NO_PREFIX); - ATTR_Y1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y1), ALL_NO_PREFIX); ATTR_X1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x1), ALL_NO_PREFIX); + ATTR_Y1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y1), ALL_NO_PREFIX); + ATTR_G2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::g2), ALL_NO_PREFIX); + ATTR_K2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k2), ALL_NO_PREFIX); + ATTR_U2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::u2), ALL_NO_PREFIX); ATTR_X2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x2), ALL_NO_PREFIX); - ATTR_ALT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alt), ALL_NO_PREFIX); - ATTR_DIR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dir), ALL_NO_PREFIX); - ATTR_DUR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dur), ALL_NO_PREFIX); - ATTR_END = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::end), ALL_NO_PREFIX); - ATTR_FOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::for_), ALL_NO_PREFIX); - ATTR_IN2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::in2), ALL_NO_PREFIX); - ATTR_MAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::max), ALL_NO_PREFIX); - ATTR_MIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::min), ALL_NO_PREFIX); - ATTR_LOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::low), ALL_NO_PREFIX); - ATTR_REL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rel), ALL_NO_PREFIX); - ATTR_REV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rev), ALL_NO_PREFIX); - ATTR_SRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::src), ALL_NO_PREFIX); - ATTR_AXIS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::axis), ALL_NO_PREFIX); - ATTR_ABBR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::abbr), ALL_NO_PREFIX); - ATTR_BBOX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bbox), ALL_NO_PREFIX); - ATTR_CITE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cite), ALL_NO_PREFIX); - ATTR_CODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::code), ALL_NO_PREFIX); - ATTR_BIAS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bias), ALL_NO_PREFIX); - ATTR_COLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cols), ALL_NO_PREFIX); - ATTR_CLIP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip), ALL_NO_PREFIX); - ATTR_CHAR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::char_), ALL_NO_PREFIX); - ATTR_BASE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::base), ALL_NO_PREFIX); - ATTR_EDGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::edge), ALL_NO_PREFIX); - ATTR_DATA = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::data), ALL_NO_PREFIX); - ATTR_FILL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill), ALL_NO_PREFIX); - ATTR_FROM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::from), ALL_NO_PREFIX); - ATTR_FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::form), ALL_NO_PREFIX); - ATTR_FACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::face), ALL_NO_PREFIX); - ATTR_HIGH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::high), ALL_NO_PREFIX); - ATTR_HREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::href), ALL_NO_PREFIX); - ATTR_OPEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::open), ALL_NO_PREFIX); - ATTR_ICON = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::icon), ALL_NO_PREFIX); - ATTR_NAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::name), ALL_NO_PREFIX); - ATTR_MODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mode), ALL_NO_PREFIX); - ATTR_MASK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mask), ALL_NO_PREFIX); - ATTR_LINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::link), ALL_NO_PREFIX); - ATTR_LANG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lang), ALL_NO_PREFIX); - ATTR_LOOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::loop), ALL_NO_PREFIX); - ATTR_LIST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::list), ALL_NO_PREFIX); - ATTR_TYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::type), ALL_NO_PREFIX); - ATTR_WHEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::when), ALL_NO_PREFIX); - ATTR_WRAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::wrap), ALL_NO_PREFIX); - ATTR_TEXT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text), ALL_NO_PREFIX); - ATTR_PATH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::path), ALL_NO_PREFIX); - ATTR_PING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ping), ALL_NO_PREFIX); - ATTR_REFX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::refx, nsHtml5Atoms::refX), ALL_NO_PREFIX); - ATTR_REFY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::refy, nsHtml5Atoms::refY), ALL_NO_PREFIX); - ATTR_SIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::size), ALL_NO_PREFIX); - ATTR_SEED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::seed), ALL_NO_PREFIX); - ATTR_ROWS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rows), ALL_NO_PREFIX); - ATTR_SPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::span), ALL_NO_PREFIX); - ATTR_STEP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::step), ALL_NO_PREFIX); - ATTR_ROLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::role), ALL_NO_PREFIX); - ATTR_XREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::xref), ALL_NO_PREFIX); - ATTR_ASYNC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::async), ALL_NO_PREFIX); - ATTR_ALINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alink), ALL_NO_PREFIX); - ATTR_ALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::align), ALL_NO_PREFIX); - ATTR_CLOSE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::close), ALL_NO_PREFIX); - ATTR_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color), ALL_NO_PREFIX); - ATTR_CLASS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::class_), ALL_NO_PREFIX); + ATTR_Y2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y2), ALL_NO_PREFIX); + ATTR_K3 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k3), ALL_NO_PREFIX); + ATTR_K4 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k4), ALL_NO_PREFIX); + ATTR_XML_SPACE = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_space, nsHtml5Atoms::space), XML_PREFIX); + ATTR_XML_LANG = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_lang, nsHtml5Atoms::lang), XML_PREFIX); + ATTR_XML_BASE = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_base, nsHtml5Atoms::base), XML_PREFIX); + ATTR_ARIA_GRAB = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_grab), ALL_NO_PREFIX); + ATTR_ARIA_VALUEMAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuemax), ALL_NO_PREFIX); + ATTR_ARIA_LABELLEDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_labelledby), ALL_NO_PREFIX); + ATTR_ARIA_DESCRIBEDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_describedby), ALL_NO_PREFIX); + ATTR_ARIA_DISABLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_disabled), ALL_NO_PREFIX); + ATTR_ARIA_CHECKED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_checked), ALL_NO_PREFIX); + ATTR_ARIA_SELECTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_selected), ALL_NO_PREFIX); + ATTR_ARIA_DROPEFFECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_dropeffect), ALL_NO_PREFIX); + ATTR_ARIA_REQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_required), ALL_NO_PREFIX); + ATTR_ARIA_EXPANDED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_expanded), ALL_NO_PREFIX); + ATTR_ARIA_PRESSED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_pressed), ALL_NO_PREFIX); + ATTR_ARIA_LEVEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_level), ALL_NO_PREFIX); + ATTR_ARIA_CHANNEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_channel), ALL_NO_PREFIX); + ATTR_ARIA_HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_hidden), ALL_NO_PREFIX); + ATTR_ARIA_SECRET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_secret), ALL_NO_PREFIX); + ATTR_ARIA_POSINSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_posinset), ALL_NO_PREFIX); + ATTR_ARIA_ATOMIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_atomic), ALL_NO_PREFIX); + ATTR_ARIA_INVALID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_invalid), ALL_NO_PREFIX); + ATTR_ARIA_TEMPLATEID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_templateid), ALL_NO_PREFIX); + ATTR_ARIA_VALUEMIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuemin), ALL_NO_PREFIX); + ATTR_ARIA_MULTISELECTABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_multiselectable), ALL_NO_PREFIX); + ATTR_ARIA_CONTROLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_controls), ALL_NO_PREFIX); + ATTR_ARIA_MULTILINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_multiline), ALL_NO_PREFIX); + ATTR_ARIA_READONLY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_readonly), ALL_NO_PREFIX); + ATTR_ARIA_OWNS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_owns), ALL_NO_PREFIX); + ATTR_ARIA_ACTIVEDESCENDANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_activedescendant), ALL_NO_PREFIX); + ATTR_ARIA_RELEVANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_relevant), ALL_NO_PREFIX); + ATTR_ARIA_DATATYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_datatype), ALL_NO_PREFIX); + ATTR_ARIA_VALUENOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuenow), ALL_NO_PREFIX); + ATTR_ARIA_SORT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_sort), ALL_NO_PREFIX); + ATTR_ARIA_AUTOCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_autocomplete), ALL_NO_PREFIX); + ATTR_ARIA_FLOWTO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_flowto), ALL_NO_PREFIX); + ATTR_ARIA_BUSY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_busy), ALL_NO_PREFIX); + ATTR_ARIA_LIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_live), ALL_NO_PREFIX); + ATTR_ARIA_HASPOPUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_haspopup), ALL_NO_PREFIX); + ATTR_ARIA_SETSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_setsize), ALL_NO_PREFIX); ATTR_CLEAR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clear), ALL_NO_PREFIX); - ATTR_BEGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::begin), ALL_NO_PREFIX); - ATTR_DEPTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::depth), ALL_NO_PREFIX); - ATTR_DEFER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::defer), ALL_NO_PREFIX); - ATTR_FENCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fence), ALL_NO_PREFIX); - ATTR_FRAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frame), ALL_NO_PREFIX); + ATTR_DATAFORMATAS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dataformatas), ALL_NO_PREFIX); + ATTR_DISABLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::disabled), ALL_NO_PREFIX); + ATTR_DATAFLD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datafld), ALL_NO_PREFIX); + ATTR_DEFAULT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::default_), ALL_NO_PREFIX); + ATTR_DATASRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datasrc), ALL_NO_PREFIX); + ATTR_DATA = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::data), ALL_NO_PREFIX); + ATTR_EQUALCOLUMNS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::equalcolumns), ALL_NO_PREFIX); + ATTR_EQUALROWS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::equalrows), ALL_NO_PREFIX); + ATTR_HSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hspace), ALL_NO_PREFIX); ATTR_ISMAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ismap), ALL_NO_PREFIX); - ATTR_ONEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onend), ALL_NO_PREFIX); - ATTR_INDEX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::index), ALL_NO_PREFIX); - ATTR_ORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::order), ALL_NO_PREFIX); - ATTR_OTHER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::other), ALL_NO_PREFIX); - ATTR_ONCUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncut), ALL_NO_PREFIX); - ATTR_NARGS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nargs), ALL_NO_PREFIX); - ATTR_MEDIA = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::media), ALL_NO_PREFIX); - ATTR_LABEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::label), ALL_NO_PREFIX); ATTR_LOCAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::local), ALL_NO_PREFIX); - ATTR_WIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::width), ALL_NO_PREFIX); - ATTR_TITLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::title), ALL_NO_PREFIX); - ATTR_VLINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vlink), ALL_NO_PREFIX); - ATTR_VALUE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::value), ALL_NO_PREFIX); - ATTR_SLOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::slope), ALL_NO_PREFIX); - ATTR_SHAPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::shape), ALL_NO_PREFIX); - ATTR_SCOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scope), ALL_NO_PREFIX); - ATTR_SCALE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scale), ALL_NO_PREFIX); - ATTR_SPEED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::speed), ALL_NO_PREFIX); - ATTR_STYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::style), ALL_NO_PREFIX); - ATTR_RULES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rules), ALL_NO_PREFIX); - ATTR_STEMH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stemh), ALL_NO_PREFIX); - ATTR_SIZES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::sizes), ALL_NO_PREFIX); - ATTR_STEMV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stemv), ALL_NO_PREFIX); - ATTR_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::start), ALL_NO_PREFIX); - ATTR_XMLNS = new nsHtml5AttributeName(XMLNS_NS, SAME_LOCAL(nsHtml5Atoms::xmlns), ALL_NO_PREFIX); - ATTR_ACCEPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accept), ALL_NO_PREFIX); - ATTR_ACCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accent), ALL_NO_PREFIX); - ATTR_ASCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ascent), ALL_NO_PREFIX); - ATTR_ACTIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::active), ALL_NO_PREFIX); - ATTR_ALTIMG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::altimg), ALL_NO_PREFIX); - ATTR_ACTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::action), ALL_NO_PREFIX); - ATTR_BORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::border), ALL_NO_PREFIX); - ATTR_CURSOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cursor), ALL_NO_PREFIX); - ATTR_COORDS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::coords), ALL_NO_PREFIX); - ATTR_FILTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::filter), ALL_NO_PREFIX); - ATTR_FORMAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::format), ALL_NO_PREFIX); - ATTR_HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hidden), ALL_NO_PREFIX); - ATTR_HSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hspace), ALL_NO_PREFIX); - ATTR_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::height), ALL_NO_PREFIX); - ATTR_ONMOVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmove), ALL_NO_PREFIX); - ATTR_ONLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onload), ALL_NO_PREFIX); - ATTR_ONDRAG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondrag), ALL_NO_PREFIX); - ATTR_ORIGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::origin), ALL_NO_PREFIX); - ATTR_ONZOOM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onzoom), ALL_NO_PREFIX); - ATTR_ONHELP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onhelp), ALL_NO_PREFIX); - ATTR_ONSTOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onstop), ALL_NO_PREFIX); - ATTR_ONDROP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondrop), ALL_NO_PREFIX); - ATTR_ONBLUR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onblur), ALL_NO_PREFIX); - ATTR_OBJECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::object), ALL_NO_PREFIX); - ATTR_OFFSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::offset), ALL_NO_PREFIX); - ATTR_ORIENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::orient), ALL_NO_PREFIX); - ATTR_ONCOPY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncopy), ALL_NO_PREFIX); - ATTR_NOWRAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nowrap), ALL_NO_PREFIX); - ATTR_NOHREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nohref), ALL_NO_PREFIX); - ATTR_MACROS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::macros), ALL_NO_PREFIX); - ATTR_METHOD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::method), ALL_NO_PREFIX); - ATTR_LOWSRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lowsrc), ALL_NO_PREFIX); ATTR_LSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lspace), ALL_NO_PREFIX); - ATTR_LQUOTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lquote), ALL_NO_PREFIX); - ATTR_USEMAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::usemap), ALL_NO_PREFIX); - ATTR_WIDTHS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::widths), ALL_NO_PREFIX); - ATTR_TARGET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::target), ALL_NO_PREFIX); - ATTR_VALUES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::values), ALL_NO_PREFIX); - ATTR_VALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::valign), ALL_NO_PREFIX); - ATTR_VSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vspace), ALL_NO_PREFIX); - ATTR_POSTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::poster), ALL_NO_PREFIX); - ATTR_POINTS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::points), ALL_NO_PREFIX); - ATTR_PROMPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::prompt), ALL_NO_PREFIX); - ATTR_SRCDOC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::srcdoc), ALL_NO_PREFIX); - ATTR_SCOPED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scoped), ALL_NO_PREFIX); - ATTR_STRING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::string), ALL_NO_PREFIX); - ATTR_SCHEME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scheme), ALL_NO_PREFIX); - ATTR_STROKE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke), ALL_NO_PREFIX); - ATTR_RADIUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::radius), ALL_NO_PREFIX); - ATTR_RESULT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::result), ALL_NO_PREFIX); - ATTR_REPEAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat), ALL_NO_PREFIX); - ATTR_SRCSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::srcset), ALL_NO_PREFIX); + ATTR_MOVABLELIMITS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::movablelimits), ALL_NO_PREFIX); + ATTR_NOTATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::notation), ALL_NO_PREFIX); + ATTR_ONDATASETCHANGED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondatasetchanged), ALL_NO_PREFIX); + ATTR_ONDATAAVAILABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondataavailable), ALL_NO_PREFIX); + ATTR_ONPASTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onpaste), ALL_NO_PREFIX); + ATTR_ONDATASETCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondatasetcomplete), ALL_NO_PREFIX); ATTR_RSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rspace), ALL_NO_PREFIX); + ATTR_ROWALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowalign), ALL_NO_PREFIX); ATTR_ROTATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rotate), ALL_NO_PREFIX); - ATTR_RQUOTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rquote), ALL_NO_PREFIX); - ATTR_ALTTEXT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alttext), ALL_NO_PREFIX); - ATTR_ARCHIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::archive), ALL_NO_PREFIX); - ATTR_AZIMUTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::azimuth), ALL_NO_PREFIX); - ATTR_CLOSURE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::closure), ALL_NO_PREFIX); + ATTR_SEPARATOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::separator), ALL_NO_PREFIX); + ATTR_SEPARATORS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::separators), ALL_NO_PREFIX); + ATTR_V_MATHEMATICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_mathematical), ALL_NO_PREFIX); + ATTR_VSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vspace), ALL_NO_PREFIX); + ATTR_V_HANGING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_hanging), ALL_NO_PREFIX); + ATTR_XCHANNELSELECTOR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::xchannelselector, nsHtml5Atoms::xChannelSelector), ALL_NO_PREFIX); + ATTR_YCHANNELSELECTOR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::ychannelselector, nsHtml5Atoms::yChannelSelector), ALL_NO_PREFIX); + ATTR_ARABIC_FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::arabic_form), ALL_NO_PREFIX); + ATTR_ENABLE_BACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::enable_background), ALL_NO_PREFIX); + ATTR_ONDBLCLICK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondblclick), ALL_NO_PREFIX); + ATTR_ONABORT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onabort), ALL_NO_PREFIX); + ATTR_CALCMODE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::calcmode, nsHtml5Atoms::calcMode), ALL_NO_PREFIX); ATTR_CHECKED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::checked), ALL_NO_PREFIX); - ATTR_CLASSID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::classid), ALL_NO_PREFIX); - ATTR_CHAROFF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::charoff), ALL_NO_PREFIX); - ATTR_BGCOLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bgcolor), ALL_NO_PREFIX); - ATTR_COLSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::colspan), ALL_NO_PREFIX); - ATTR_CHARSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::charset), ALL_NO_PREFIX); - ATTR_COMPACT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::compact), ALL_NO_PREFIX); - ATTR_CONTENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::content), ALL_NO_PREFIX); - ATTR_ENCTYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::enctype), ALL_NO_PREFIX); - ATTR_DATASRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datasrc), ALL_NO_PREFIX); - ATTR_DATAFLD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datafld), ALL_NO_PREFIX); - ATTR_DECLARE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::declare), ALL_NO_PREFIX); - ATTR_DISPLAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::display), ALL_NO_PREFIX); - ATTR_DIVISOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::divisor), ALL_NO_PREFIX); - ATTR_DEFAULT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::default_), ALL_NO_PREFIX); ATTR_DESCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::descent), ALL_NO_PREFIX); - ATTR_KERNING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::kerning), ALL_NO_PREFIX); - ATTR_HANGING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hanging), ALL_NO_PREFIX); - ATTR_HEADERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::headers), ALL_NO_PREFIX); - ATTR_ONPASTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onpaste), ALL_NO_PREFIX); - ATTR_ONCLICK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onclick), ALL_NO_PREFIX); - ATTR_OPTIMUM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::optimum), ALL_NO_PREFIX); - ATTR_ONBEGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbegin), ALL_NO_PREFIX); - ATTR_ONKEYUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeyup), ALL_NO_PREFIX); - ATTR_ONFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocus), ALL_NO_PREFIX); - ATTR_ONERROR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onerror), ALL_NO_PREFIX); - ATTR_ONINPUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oninput), ALL_NO_PREFIX); - ATTR_ONABORT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onabort), ALL_NO_PREFIX); - ATTR_ONSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onstart), ALL_NO_PREFIX); - ATTR_ONRESET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onreset), ALL_NO_PREFIX); + ATTR_FENCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fence), ALL_NO_PREFIX); + ATTR_ONSCROLL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onscroll), ALL_NO_PREFIX); + ATTR_ONACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onactivate), ALL_NO_PREFIX); ATTR_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::opacity), ALL_NO_PREFIX); - ATTR_NOSHADE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::noshade), ALL_NO_PREFIX); - ATTR_MINSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::minsize), ALL_NO_PREFIX); - ATTR_MAXSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::maxsize), ALL_NO_PREFIX); - ATTR_LARGEOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::largeop), ALL_NO_PREFIX); - ATTR_UNICODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_), ALL_NO_PREFIX); - ATTR_TARGETX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::targetx, nsHtml5Atoms::targetX), ALL_NO_PREFIX); - ATTR_TARGETY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::targety, nsHtml5Atoms::targetY), ALL_NO_PREFIX); - ATTR_VIEWBOX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::viewbox, nsHtml5Atoms::viewBox), ALL_NO_PREFIX); - ATTR_VERSION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::version), ALL_NO_PREFIX); - ATTR_PATTERN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::pattern), ALL_NO_PREFIX); - ATTR_PROFILE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::profile), ALL_NO_PREFIX); ATTR_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::spacing), ALL_NO_PREFIX); - ATTR_RESTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::restart), ALL_NO_PREFIX); - ATTR_ROWSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowspan), ALL_NO_PREFIX); + ATTR_SPECULAREXPONENT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::specularexponent, nsHtml5Atoms::specularExponent), ALL_NO_PREFIX); + ATTR_SPECULARCONSTANT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::specularconstant, nsHtml5Atoms::specularConstant), ALL_NO_PREFIX); + ATTR_SPECIFICATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::specification), ALL_NO_PREFIX); + ATTR_THICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::thickmathspace), ALL_NO_PREFIX); + ATTR_UNICODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_), ALL_NO_PREFIX); + ATTR_UNICODE_BIDI = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_bidi), ALL_NO_PREFIX); + ATTR_UNICODE_RANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_range), ALL_NO_PREFIX); + ATTR_BORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::border), ALL_NO_PREFIX); + ATTR_ID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::id), ALL_NO_PREFIX); + ATTR_GRADIENTTRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::gradienttransform, nsHtml5Atoms::gradientTransform), ALL_NO_PREFIX); + ATTR_GRADIENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::gradientunits, nsHtml5Atoms::gradientUnits), ALL_NO_PREFIX); + ATTR_HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hidden), ALL_NO_PREFIX); + ATTR_HEADERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::headers), ALL_NO_PREFIX); + ATTR_READONLY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::readonly), ALL_NO_PREFIX); + ATTR_RENDERING_INTENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rendering_intent), ALL_NO_PREFIX); + ATTR_SEED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::seed), ALL_NO_PREFIX); + ATTR_SRCDOC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::srcdoc), ALL_NO_PREFIX); + ATTR_STDDEVIATION = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::stddeviation, nsHtml5Atoms::stdDeviation), ALL_NO_PREFIX); ATTR_SANDBOX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::sandbox), ALL_NO_PREFIX); - ATTR_SUMMARY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::summary), ALL_NO_PREFIX); - ATTR_STANDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::standby), ALL_NO_PREFIX); - ATTR_REPLACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::replace), ALL_NO_PREFIX); - ATTR_AUTOPLAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autoplay), ALL_NO_PREFIX); - ATTR_ADDITIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::additive), ALL_NO_PREFIX); - ATTR_CALCMODE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::calcmode, nsHtml5Atoms::calcMode), ALL_NO_PREFIX); - ATTR_CODETYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::codetype), ALL_NO_PREFIX); - ATTR_CODEBASE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::codebase), ALL_NO_PREFIX); - ATTR_CONTROLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::controls), ALL_NO_PREFIX); + ATTR_V_IDEOGRAPHIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_ideographic), ALL_NO_PREFIX); + ATTR_WORD_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::word_spacing), ALL_NO_PREFIX); + ATTR_ACCENTUNDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accentunder), ALL_NO_PREFIX); + ATTR_ACCEPT_CHARSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accept_charset), ALL_NO_PREFIX); + ATTR_ACCESSKEY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accesskey), ALL_NO_PREFIX); + ATTR_ACCENT_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accent_height), ALL_NO_PREFIX); + ATTR_ACCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accent), ALL_NO_PREFIX); + ATTR_ASCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ascent), ALL_NO_PREFIX); + ATTR_ACCEPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accept), ALL_NO_PREFIX); ATTR_BEVELLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bevelled), ALL_NO_PREFIX); + ATTR_BASEFREQUENCY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::basefrequency, nsHtml5Atoms::baseFrequency), ALL_NO_PREFIX); + ATTR_BASELINE_SHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::baseline_shift), ALL_NO_PREFIX); + ATTR_BASEPROFILE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::baseprofile, nsHtml5Atoms::baseProfile), ALL_NO_PREFIX); ATTR_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::baseline), ALL_NO_PREFIX); - ATTR_EXPONENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::exponent), ALL_NO_PREFIX); - ATTR_EDGEMODE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::edgemode, nsHtml5Atoms::edgeMode), ALL_NO_PREFIX); - ATTR_ENCODING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::encoding), ALL_NO_PREFIX); - ATTR_GLYPHREF = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::glyphref, nsHtml5Atoms::glyphRef), ALL_NO_PREFIX); + ATTR_BASE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::base), ALL_NO_PREFIX); + ATTR_CODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::code), ALL_NO_PREFIX); + ATTR_CODETYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::codetype), ALL_NO_PREFIX); + ATTR_CODEBASE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::codebase), ALL_NO_PREFIX); + ATTR_CITE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cite), ALL_NO_PREFIX); + ATTR_DEFER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::defer), ALL_NO_PREFIX); ATTR_DATETIME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datetime), ALL_NO_PREFIX); - ATTR_DISABLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::disabled), ALL_NO_PREFIX); - ATTR_FONTSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontsize), ALL_NO_PREFIX); - ATTR_KEYTIMES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keytimes, nsHtml5Atoms::keyTimes), ALL_NO_PREFIX); - ATTR_PANOSE_1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::panose_1), ALL_NO_PREFIX); - ATTR_HREFLANG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hreflang), ALL_NO_PREFIX); - ATTR_ONRESIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onresize), ALL_NO_PREFIX); - ATTR_ONCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onchange), ALL_NO_PREFIX); - ATTR_ONBOUNCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbounce), ALL_NO_PREFIX); - ATTR_ONUNLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onunload), ALL_NO_PREFIX); - ATTR_ONFINISH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfinish), ALL_NO_PREFIX); - ATTR_ONSCROLL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onscroll), ALL_NO_PREFIX); - ATTR_OPERATOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::operator_), ALL_NO_PREFIX); - ATTR_OVERFLOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overflow), ALL_NO_PREFIX); - ATTR_ONSUBMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onsubmit), ALL_NO_PREFIX); - ATTR_ONREPEAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrepeat), ALL_NO_PREFIX); - ATTR_ONSELECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onselect), ALL_NO_PREFIX); - ATTR_NOTATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::notation), ALL_NO_PREFIX); - ATTR_NORESIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::noresize), ALL_NO_PREFIX); - ATTR_MANIFEST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::manifest), ALL_NO_PREFIX); - ATTR_MATHSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathsize), ALL_NO_PREFIX); - ATTR_MULTIPLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::multiple), ALL_NO_PREFIX); - ATTR_LONGDESC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::longdesc), ALL_NO_PREFIX); - ATTR_LANGUAGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::language), ALL_NO_PREFIX); - ATTR_TEMPLATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::template_), ALL_NO_PREFIX); - ATTR_TABINDEX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::tabindex), ALL_NO_PREFIX); - ATTR_PROPERTY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::property), ALL_NO_PREFIX); - ATTR_READONLY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::readonly), ALL_NO_PREFIX); - ATTR_SELECTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::selected), ALL_NO_PREFIX); - ATTR_ROWLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowlines), ALL_NO_PREFIX); - ATTR_SEAMLESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::seamless), ALL_NO_PREFIX); - ATTR_ROWALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowalign), ALL_NO_PREFIX); - ATTR_STRETCHY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stretchy), ALL_NO_PREFIX); - ATTR_REQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::required), ALL_NO_PREFIX); - ATTR_XML_BASE = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_base, nsHtml5Atoms::base), XML_PREFIX); - ATTR_XML_LANG = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_lang, nsHtml5Atoms::lang), XML_PREFIX); - ATTR_X_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x_height), ALL_NO_PREFIX); - ATTR_ARIA_OWNS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_owns), ALL_NO_PREFIX); - ATTR_AUTOFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autofocus), ALL_NO_PREFIX); - ATTR_ARIA_SORT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_sort), ALL_NO_PREFIX); - ATTR_ACCESSKEY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accesskey), ALL_NO_PREFIX); - ATTR_ARIA_BUSY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_busy), ALL_NO_PREFIX); - ATTR_ARIA_GRAB = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_grab), ALL_NO_PREFIX); - ATTR_AMPLITUDE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::amplitude), ALL_NO_PREFIX); - ATTR_ARIA_LIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_live), ALL_NO_PREFIX); - ATTR_CLIP_RULE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip_rule), ALL_NO_PREFIX); - ATTR_CLIP_PATH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip_path), ALL_NO_PREFIX); - ATTR_EQUALROWS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::equalrows), ALL_NO_PREFIX); - ATTR_ELEVATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::elevation), ALL_NO_PREFIX); ATTR_DIRECTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::direction), ALL_NO_PREFIX); - ATTR_DRAGGABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::draggable), ALL_NO_PREFIX); - ATTR_FILL_RULE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill_rule), ALL_NO_PREFIX); - ATTR_FONTSTYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontstyle), ALL_NO_PREFIX); - ATTR_FONT_SIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_size), ALL_NO_PREFIX); - ATTR_KEYSYSTEM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::keysystem), ALL_NO_PREFIX); - ATTR_KEYPOINTS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keypoints, nsHtml5Atoms::keyPoints), ALL_NO_PREFIX); + ATTR_EDGEMODE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::edgemode, nsHtml5Atoms::edgeMode), ALL_NO_PREFIX); + ATTR_EDGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::edge), ALL_NO_PREFIX); + ATTR_FACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::face), ALL_NO_PREFIX); ATTR_HIDEFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hidefocus), ALL_NO_PREFIX); - ATTR_ONMESSAGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmessage), ALL_NO_PREFIX); + ATTR_INDEX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::index), ALL_NO_PREFIX); + ATTR_IRRELEVANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::irrelevant), ALL_NO_PREFIX); ATTR_INTERCEPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::intercept), ALL_NO_PREFIX); - ATTR_ONDRAGEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragend), ALL_NO_PREFIX); - ATTR_ONMOVEEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmoveend), ALL_NO_PREFIX); - ATTR_ONINVALID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oninvalid), ALL_NO_PREFIX); ATTR_INTEGRITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::integrity), ALL_NO_PREFIX); - ATTR_ONKEYDOWN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeydown), ALL_NO_PREFIX); - ATTR_ONFOCUSIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocusin), ALL_NO_PREFIX); - ATTR_ONMOUSEUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseup), ALL_NO_PREFIX); - ATTR_INPUTMODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::inputmode), ALL_NO_PREFIX); - ATTR_ONROWEXIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowexit), ALL_NO_PREFIX); - ATTR_MATHCOLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathcolor), ALL_NO_PREFIX); - ATTR_MASKUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::maskunits, nsHtml5Atoms::maskUnits), ALL_NO_PREFIX); - ATTR_MAXLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::maxlength), ALL_NO_PREFIX); ATTR_LINEBREAK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::linebreak), ALL_NO_PREFIX); - ATTR_TRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::transform), ALL_NO_PREFIX); - ATTR_V_HANGING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_hanging), ALL_NO_PREFIX); - ATTR_VALUETYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::valuetype), ALL_NO_PREFIX); - ATTR_POINTSATZ = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsatz, nsHtml5Atoms::pointsAtZ), ALL_NO_PREFIX); - ATTR_POINTSATX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsatx, nsHtml5Atoms::pointsAtX), ALL_NO_PREFIX); - ATTR_POINTSATY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsaty, nsHtml5Atoms::pointsAtY), ALL_NO_PREFIX); - ATTR_SYMMETRIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::symmetric), ALL_NO_PREFIX); - ATTR_SCROLLING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scrolling), ALL_NO_PREFIX); + ATTR_LABEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::label), ALL_NO_PREFIX); + ATTR_LINETHICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::linethickness), ALL_NO_PREFIX); + ATTR_MODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mode), ALL_NO_PREFIX); + ATTR_NAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::name), ALL_NO_PREFIX); + ATTR_NORESIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::noresize), ALL_NO_PREFIX); + ATTR_ONBEFOREUNLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeunload), ALL_NO_PREFIX); + ATTR_ONREPEAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrepeat), ALL_NO_PREFIX); + ATTR_OBJECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::object), ALL_NO_PREFIX); + ATTR_ONSELECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onselect), ALL_NO_PREFIX); + ATTR_ORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::order), ALL_NO_PREFIX); + ATTR_OTHER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::other), ALL_NO_PREFIX); + ATTR_ONRESET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onreset), ALL_NO_PREFIX); + ATTR_ONCELLCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncellchange), ALL_NO_PREFIX); + ATTR_ONREADYSTATECHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onreadystatechange), ALL_NO_PREFIX); + ATTR_ONMESSAGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmessage), ALL_NO_PREFIX); + ATTR_ONBEGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbegin), ALL_NO_PREFIX); + ATTR_ONHELP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onhelp), ALL_NO_PREFIX); + ATTR_ONBEFOREPRINT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeprint), ALL_NO_PREFIX); + ATTR_ORIENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::orient), ALL_NO_PREFIX); + ATTR_ORIENTATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::orientation), ALL_NO_PREFIX); + ATTR_ONBEFORECOPY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforecopy), ALL_NO_PREFIX); + ATTR_ONSELECTSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onselectstart), ALL_NO_PREFIX); + ATTR_ONBEFOREPASTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforepaste), ALL_NO_PREFIX); + ATTR_ONBEFOREUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeupdate), ALL_NO_PREFIX); + ATTR_ONDEACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondeactivate), ALL_NO_PREFIX); + ATTR_ONBEFOREACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeactivate), ALL_NO_PREFIX); + ATTR_ONBEFORDEACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbefordeactivate), ALL_NO_PREFIX); + ATTR_ONKEYPRESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeypress), ALL_NO_PREFIX); + ATTR_ONKEYUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeyup), ALL_NO_PREFIX); + ATTR_ONBEFOREEDITFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeeditfocus), ALL_NO_PREFIX); + ATTR_ONBEFORECUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforecut), ALL_NO_PREFIX); + ATTR_ONKEYDOWN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeydown), ALL_NO_PREFIX); + ATTR_ONRESIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onresize), ALL_NO_PREFIX); + ATTR_REPEAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat), ALL_NO_PREFIX); + ATTR_REPEAT_MAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_max), ALL_NO_PREFIX); + ATTR_REFERRERPOLICY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::referrerpolicy), ALL_NO_PREFIX); + ATTR_RULES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rules), ALL_NO_PREFIX); + ATTR_REPEAT_MIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_min), ALL_NO_PREFIX); + ATTR_ROLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::role), ALL_NO_PREFIX); + ATTR_REPEATCOUNT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::repeatcount, nsHtml5Atoms::repeatCount), ALL_NO_PREFIX); + ATTR_REPEAT_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_start), ALL_NO_PREFIX); + ATTR_REPEAT_TEMPLATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_template), ALL_NO_PREFIX); ATTR_REPEATDUR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::repeatdur, nsHtml5Atoms::repeatDur), ALL_NO_PREFIX); + ATTR_SELECTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::selected), ALL_NO_PREFIX); + ATTR_SPEED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::speed), ALL_NO_PREFIX); + ATTR_SIZES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::sizes), ALL_NO_PREFIX); + ATTR_SUPERSCRIPTSHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::superscriptshift), ALL_NO_PREFIX); + ATTR_STRETCHY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stretchy), ALL_NO_PREFIX); + ATTR_SCHEME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scheme), ALL_NO_PREFIX); + ATTR_SPREADMETHOD = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::spreadmethod, nsHtml5Atoms::spreadMethod), ALL_NO_PREFIX); ATTR_SELECTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::selection), ALL_NO_PREFIX); - ATTR_SEPARATOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::separator), ALL_NO_PREFIX); - ATTR_XML_SPACE = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_space, nsHtml5Atoms::space), XML_PREFIX); - ATTR_AUTOSUBMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autosubmit), ALL_NO_PREFIX); + ATTR_SIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::size), ALL_NO_PREFIX); + ATTR_TYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::type), ALL_NO_PREFIX); + ATTR_UNSELECTABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unselectable), ALL_NO_PREFIX); + ATTR_UNDERLINE_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::underline_position), ALL_NO_PREFIX); + ATTR_UNDERLINE_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::underline_thickness), ALL_NO_PREFIX); + ATTR_X_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x_height), ALL_NO_PREFIX); + ATTR_DIFFUSECONSTANT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::diffuseconstant, nsHtml5Atoms::diffuseConstant), ALL_NO_PREFIX); + ATTR_HREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::href), ALL_NO_PREFIX); + ATTR_HREFLANG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hreflang), ALL_NO_PREFIX); + ATTR_ONAFTERPRINT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onafterprint), ALL_NO_PREFIX); + ATTR_ONAFTERUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onafterupdate), ALL_NO_PREFIX); + ATTR_PROFILE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::profile), ALL_NO_PREFIX); + ATTR_SURFACESCALE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::surfacescale, nsHtml5Atoms::surfaceScale), ALL_NO_PREFIX); + ATTR_XREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::xref), ALL_NO_PREFIX); + ATTR_ALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::align), ALL_NO_PREFIX); + ATTR_ALIGNMENT_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alignment_baseline), ALL_NO_PREFIX); + ATTR_ALIGNMENTSCOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alignmentscope), ALL_NO_PREFIX); + ATTR_DRAGGABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::draggable), ALL_NO_PREFIX); + ATTR_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::height), ALL_NO_PREFIX); + ATTR_HANGING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hanging), ALL_NO_PREFIX); + ATTR_IMAGE_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::image_rendering), ALL_NO_PREFIX); + ATTR_LANGUAGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::language), ALL_NO_PREFIX); + ATTR_LANG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lang), ALL_NO_PREFIX); + ATTR_LARGEOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::largeop), ALL_NO_PREFIX); + ATTR_LONGDESC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::longdesc), ALL_NO_PREFIX); + ATTR_LENGTHADJUST = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::lengthadjust, nsHtml5Atoms::lengthAdjust), ALL_NO_PREFIX); + ATTR_MARGINHEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marginheight), ALL_NO_PREFIX); + ATTR_MARGINWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marginwidth), ALL_NO_PREFIX); + ATTR_NARGS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nargs), ALL_NO_PREFIX); + ATTR_ORIGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::origin), ALL_NO_PREFIX); + ATTR_PING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ping), ALL_NO_PREFIX); + ATTR_TARGET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::target), ALL_NO_PREFIX); + ATTR_TARGETX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::targetx, nsHtml5Atoms::targetX), ALL_NO_PREFIX); + ATTR_TARGETY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::targety, nsHtml5Atoms::targetY), ALL_NO_PREFIX); ATTR_ALPHABETIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alphabetic), ALL_NO_PREFIX); + ATTR_ARCHIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::archive), ALL_NO_PREFIX); + ATTR_HIGH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::high), ALL_NO_PREFIX); + ATTR_LIGHTING_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lighting_color), ALL_NO_PREFIX); + ATTR_MATHEMATICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathematical), ALL_NO_PREFIX); + ATTR_MATHBACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathbackground), ALL_NO_PREFIX); + ATTR_METHOD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::method), ALL_NO_PREFIX); + ATTR_MATHVARIANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathvariant), ALL_NO_PREFIX); + ATTR_MATHCOLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathcolor), ALL_NO_PREFIX); + ATTR_MATHSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathsize), ALL_NO_PREFIX); + ATTR_NOSHADE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::noshade), ALL_NO_PREFIX); + ATTR_ONCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onchange), ALL_NO_PREFIX); + ATTR_PATHLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pathlength, nsHtml5Atoms::pathLength), ALL_NO_PREFIX); + ATTR_PATH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::path), ALL_NO_PREFIX); + ATTR_ALTIMG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::altimg), ALL_NO_PREFIX); ATTR_ACTIONTYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::actiontype), ALL_NO_PREFIX); - ATTR_ACCUMULATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accumulate), ALL_NO_PREFIX); - ATTR_ARIA_LEVEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_level), ALL_NO_PREFIX); - ATTR_COLUMNSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnspan), ALL_NO_PREFIX); - ATTR_CAP_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cap_height), ALL_NO_PREFIX); + ATTR_ACTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::action), ALL_NO_PREFIX); + ATTR_ACTIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::active), ALL_NO_PREFIX); + ATTR_ADDITIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::additive), ALL_NO_PREFIX); + ATTR_BEGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::begin), ALL_NO_PREFIX); + ATTR_DOMINANT_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dominant_baseline), ALL_NO_PREFIX); + ATTR_DIVISOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::divisor), ALL_NO_PREFIX); + ATTR_DEFINITIONURL = new nsHtml5AttributeName(ALL_NO_NS, MATH_DIFFERENT(nsHtml5Atoms::definitionurl, nsHtml5Atoms::definitionURL), ALL_NO_PREFIX); + ATTR_HORIZ_ADV_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_adv_x), ALL_NO_PREFIX); + ATTR_HORIZ_ORIGIN_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_origin_x), ALL_NO_PREFIX); + ATTR_HORIZ_ORIGIN_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_origin_y), ALL_NO_PREFIX); + ATTR_LIMITINGCONEANGLE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::limitingconeangle, nsHtml5Atoms::limitingConeAngle), ALL_NO_PREFIX); + ATTR_MEDIUMMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mediummathspace), ALL_NO_PREFIX); + ATTR_MEDIA = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::media), ALL_NO_PREFIX); + ATTR_MANIFEST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::manifest), ALL_NO_PREFIX); + ATTR_ONFILTERCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfilterchange), ALL_NO_PREFIX); + ATTR_ONFINISH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfinish), ALL_NO_PREFIX); + ATTR_OPTIMUM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::optimum), ALL_NO_PREFIX); + ATTR_RADIOGROUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::radiogroup), ALL_NO_PREFIX); + ATTR_RADIUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::radius), ALL_NO_PREFIX); + ATTR_SCRIPTLEVEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptlevel), ALL_NO_PREFIX); + ATTR_SCRIPTSIZEMULTIPLIER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptsizemultiplier), ALL_NO_PREFIX); + ATTR_STRING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::string), ALL_NO_PREFIX); + ATTR_STRIKETHROUGH_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_position), ALL_NO_PREFIX); + ATTR_STRIKETHROUGH_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_thickness), ALL_NO_PREFIX); + ATTR_SCRIPTMINSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptminsize), ALL_NO_PREFIX); + ATTR_TABINDEX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::tabindex), ALL_NO_PREFIX); + ATTR_VALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::valign), ALL_NO_PREFIX); + ATTR_VISIBILITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::visibility), ALL_NO_PREFIX); ATTR_BACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::background), ALL_NO_PREFIX); - ATTR_GLYPH_NAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_name), ALL_NO_PREFIX); - ATTR_GROUPALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::groupalign), ALL_NO_PREFIX); - ATTR_FONTFAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontfamily), ALL_NO_PREFIX); - ATTR_FONTWEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontweight), ALL_NO_PREFIX); - ATTR_FONT_STYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_style), ALL_NO_PREFIX); - ATTR_KEYSPLINES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keysplines, nsHtml5Atoms::keySplines), ALL_NO_PREFIX); - ATTR_HTTP_EQUIV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::http_equiv), ALL_NO_PREFIX); - ATTR_ONACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onactivate), ALL_NO_PREFIX); - ATTR_OCCURRENCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::occurrence), ALL_NO_PREFIX); - ATTR_IRRELEVANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::irrelevant), ALL_NO_PREFIX); - ATTR_ONDBLCLICK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondblclick), ALL_NO_PREFIX); - ATTR_ONDRAGDROP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragdrop), ALL_NO_PREFIX); - ATTR_ONKEYPRESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeypress), ALL_NO_PREFIX); - ATTR_ONROWENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowenter), ALL_NO_PREFIX); - ATTR_ONDRAGOVER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragover), ALL_NO_PREFIX); - ATTR_ONFOCUSOUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocusout), ALL_NO_PREFIX); - ATTR_ONMOUSEOUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseout), ALL_NO_PREFIX); - ATTR_NUMOCTAVES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::numoctaves, nsHtml5Atoms::numOctaves), ALL_NO_PREFIX); + ATTR_LINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::link), ALL_NO_PREFIX); ATTR_MARKER_MID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_mid), ALL_NO_PREFIX); + ATTR_MARKERHEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerheight, nsHtml5Atoms::markerHeight), ALL_NO_PREFIX); ATTR_MARKER_END = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_end), ALL_NO_PREFIX); - ATTR_TEXTLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::textlength, nsHtml5Atoms::textLength), ALL_NO_PREFIX); - ATTR_VISIBILITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::visibility), ALL_NO_PREFIX); - ATTR_VIEWTARGET = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::viewtarget, nsHtml5Atoms::viewTarget), ALL_NO_PREFIX); - ATTR_VERT_ADV_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_adv_y), ALL_NO_PREFIX); - ATTR_PATHLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pathlength, nsHtml5Atoms::pathLength), ALL_NO_PREFIX); - ATTR_REPEAT_MAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_max), ALL_NO_PREFIX); - ATTR_RADIOGROUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::radiogroup), ALL_NO_PREFIX); - ATTR_STOP_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stop_color), ALL_NO_PREFIX); - ATTR_SEPARATORS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::separators), ALL_NO_PREFIX); - ATTR_REPEAT_MIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_min), ALL_NO_PREFIX); - ATTR_ROWSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowspacing), ALL_NO_PREFIX); + ATTR_MASK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mask), ALL_NO_PREFIX); + ATTR_MARKER_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_start), ALL_NO_PREFIX); + ATTR_MARKERWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerwidth, nsHtml5Atoms::markerWidth), ALL_NO_PREFIX); + ATTR_MASKUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::maskunits, nsHtml5Atoms::maskUnits), ALL_NO_PREFIX); + ATTR_MARKERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerunits, nsHtml5Atoms::markerUnits), ALL_NO_PREFIX); + ATTR_MASKCONTENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::maskcontentunits, nsHtml5Atoms::maskContentUnits), ALL_NO_PREFIX); + ATTR_AMPLITUDE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::amplitude), ALL_NO_PREFIX); + ATTR_CELLSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellspacing), ALL_NO_PREFIX); + ATTR_CELLPADDING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellpadding), ALL_NO_PREFIX); + ATTR_DECLARE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::declare), ALL_NO_PREFIX); + ATTR_FILL_RULE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill_rule), ALL_NO_PREFIX); + ATTR_FILL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill), ALL_NO_PREFIX); + ATTR_FILL_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill_opacity), ALL_NO_PREFIX); + ATTR_MAXLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::maxlength), ALL_NO_PREFIX); + ATTR_ONCLICK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onclick), ALL_NO_PREFIX); + ATTR_ONBLUR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onblur), ALL_NO_PREFIX); + ATTR_REPLACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::replace), ALL_NO_PREFIX); + ATTR_ROWLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowlines), ALL_NO_PREFIX); + ATTR_SCALE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scale), ALL_NO_PREFIX); + ATTR_STYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::style), ALL_NO_PREFIX); + ATTR_TABLEVALUES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::tablevalues, nsHtml5Atoms::tableValues), ALL_NO_PREFIX); + ATTR_TITLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::title), ALL_NO_PREFIX); + ATTR_V_ALPHABETIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_alphabetic), ALL_NO_PREFIX); + ATTR_AZIMUTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::azimuth), ALL_NO_PREFIX); + ATTR_FORMAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::format), ALL_NO_PREFIX); + ATTR_FRAMEBORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frameborder), ALL_NO_PREFIX); + ATTR_FRAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frame), ALL_NO_PREFIX); + ATTR_FRAMESPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::framespacing), ALL_NO_PREFIX); + ATTR_FROM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::from), ALL_NO_PREFIX); + ATTR_FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::form), ALL_NO_PREFIX); + ATTR_PROMPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::prompt), ALL_NO_PREFIX); + ATTR_PRIMITIVEUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::primitiveunits, nsHtml5Atoms::primitiveUnits), ALL_NO_PREFIX); + ATTR_SYMMETRIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::symmetric), ALL_NO_PREFIX); + ATTR_STEMH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stemh), ALL_NO_PREFIX); + ATTR_STEMV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stemv), ALL_NO_PREFIX); + ATTR_SEAMLESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::seamless), ALL_NO_PREFIX); + ATTR_SUMMARY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::summary), ALL_NO_PREFIX); + ATTR_USEMAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::usemap), ALL_NO_PREFIX); ATTR_ZOOMANDPAN = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::zoomandpan, nsHtml5Atoms::zoomAndPan), ALL_NO_PREFIX); - ATTR_XLINK_TYPE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_type, nsHtml5Atoms::type), XLINK_PREFIX); - ATTR_XLINK_ROLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_role, nsHtml5Atoms::role), XLINK_PREFIX); + ATTR_ASYNC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::async), ALL_NO_PREFIX); + ATTR_ALINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alink), ALL_NO_PREFIX); + ATTR_IN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::in), ALL_NO_PREFIX); + ATTR_ICON = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::icon), ALL_NO_PREFIX); + ATTR_KERNELMATRIX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::kernelmatrix, nsHtml5Atoms::kernelMatrix), ALL_NO_PREFIX); + ATTR_KERNING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::kerning), ALL_NO_PREFIX); + ATTR_KERNELUNITLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::kernelunitlength, nsHtml5Atoms::kernelUnitLength), ALL_NO_PREFIX); + ATTR_ONUNLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onunload), ALL_NO_PREFIX); + ATTR_OPEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::open), ALL_NO_PREFIX); + ATTR_ONINVALID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oninvalid), ALL_NO_PREFIX); + ATTR_ONEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onend), ALL_NO_PREFIX); + ATTR_ONINPUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oninput), ALL_NO_PREFIX); + ATTR_POINTER_EVENTS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::pointer_events), ALL_NO_PREFIX); + ATTR_POINTS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::points), ALL_NO_PREFIX); + ATTR_POINTSATX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsatx, nsHtml5Atoms::pointsAtX), ALL_NO_PREFIX); + ATTR_POINTSATY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsaty, nsHtml5Atoms::pointsAtY), ALL_NO_PREFIX); + ATTR_POINTSATZ = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsatz, nsHtml5Atoms::pointsAtZ), ALL_NO_PREFIX); + ATTR_SPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::span), ALL_NO_PREFIX); + ATTR_STANDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::standby), ALL_NO_PREFIX); + ATTR_THINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::thinmathspace), ALL_NO_PREFIX); + ATTR_TRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::transform), ALL_NO_PREFIX); + ATTR_VLINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vlink), ALL_NO_PREFIX); + ATTR_WHEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::when), ALL_NO_PREFIX); ATTR_XLINK_HREF = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_href, nsHtml5Atoms::href), XLINK_PREFIX); + ATTR_XLINK_TITLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_title, nsHtml5Atoms::title), XLINK_PREFIX); + ATTR_XLINK_ROLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_role, nsHtml5Atoms::role), XLINK_PREFIX); + ATTR_XLINK_ARCROLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_arcrole, nsHtml5Atoms::arcrole), XLINK_PREFIX); + ATTR_XMLNS_XLINK = new nsHtml5AttributeName(XMLNS_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xmlns_xlink, nsHtml5Atoms::xlink), XMLNS_PREFIX); + ATTR_XMLNS = new nsHtml5AttributeName(XMLNS_NS, SAME_LOCAL(nsHtml5Atoms::xmlns), ALL_NO_PREFIX); + ATTR_XLINK_TYPE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_type, nsHtml5Atoms::type), XLINK_PREFIX); ATTR_XLINK_SHOW = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_show, nsHtml5Atoms::show), XLINK_PREFIX); - ATTR_ACCENTUNDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accentunder), ALL_NO_PREFIX); - ATTR_ARIA_SECRET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_secret), ALL_NO_PREFIX); - ATTR_ARIA_ATOMIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_atomic), ALL_NO_PREFIX); - ATTR_ARIA_HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_hidden), ALL_NO_PREFIX); - ATTR_ARIA_FLOWTO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_flowto), ALL_NO_PREFIX); - ATTR_ARABIC_FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::arabic_form), ALL_NO_PREFIX); - ATTR_CELLPADDING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellpadding), ALL_NO_PREFIX); - ATTR_CELLSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellspacing), ALL_NO_PREFIX); - ATTR_COLUMNWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnwidth), ALL_NO_PREFIX); - ATTR_CROSSORIGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::crossorigin), ALL_NO_PREFIX); - ATTR_COLUMNALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnalign), ALL_NO_PREFIX); - ATTR_COLUMNLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnlines), ALL_NO_PREFIX); - ATTR_CONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::contextmenu), ALL_NO_PREFIX); - ATTR_BASEPROFILE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::baseprofile, nsHtml5Atoms::baseProfile), ALL_NO_PREFIX); - ATTR_FONT_FAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_family), ALL_NO_PREFIX); - ATTR_FRAMEBORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frameborder), ALL_NO_PREFIX); - ATTR_FILTERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::filterunits, nsHtml5Atoms::filterUnits), ALL_NO_PREFIX); + ATTR_XLINK_ACTUATE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_actuate, nsHtml5Atoms::actuate), XLINK_PREFIX); + ATTR_AUTOPLAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autoplay), ALL_NO_PREFIX); + ATTR_AUTOSUBMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autosubmit), ALL_NO_PREFIX); + ATTR_AUTOCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autocomplete), ALL_NO_PREFIX); + ATTR_AUTOFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autofocus), ALL_NO_PREFIX); + ATTR_BGCOLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bgcolor), ALL_NO_PREFIX); + ATTR_COLOR_PROFILE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_profile), ALL_NO_PREFIX); + ATTR_COLOR_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_rendering), ALL_NO_PREFIX); + ATTR_COLOR_INTERPOLATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation), ALL_NO_PREFIX); + ATTR_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color), ALL_NO_PREFIX); + ATTR_COLOR_INTERPOLATION_FILTERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation_filters), ALL_NO_PREFIX); + ATTR_ENCODING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::encoding), ALL_NO_PREFIX); + ATTR_EXPONENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::exponent), ALL_NO_PREFIX); ATTR_FLOOD_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::flood_color), ALL_NO_PREFIX); - ATTR_FONT_WEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_weight), ALL_NO_PREFIX); - ATTR_HORIZ_ADV_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_adv_x), ALL_NO_PREFIX); - ATTR_ONDRAGLEAVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragleave), ALL_NO_PREFIX); - ATTR_ONMOUSEMOVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousemove), ALL_NO_PREFIX); - ATTR_ORIENTATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::orientation), ALL_NO_PREFIX); - ATTR_ONMOUSEDOWN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousedown), ALL_NO_PREFIX); - ATTR_ONMOUSEOVER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseover), ALL_NO_PREFIX); - ATTR_ONDRAGENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragenter), ALL_NO_PREFIX); + ATTR_FLOOD_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::flood_opacity), ALL_NO_PREFIX); ATTR_IDEOGRAPHIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ideographic), ALL_NO_PREFIX); - ATTR_ONBEFORECUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforecut), ALL_NO_PREFIX); - ATTR_ONFORMINPUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onforminput), ALL_NO_PREFIX); - ATTR_ONDRAGSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragstart), ALL_NO_PREFIX); + ATTR_LQUOTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lquote), ALL_NO_PREFIX); + ATTR_PANOSE_1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::panose_1), ALL_NO_PREFIX); + ATTR_NUMOCTAVES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::numoctaves, nsHtml5Atoms::numOctaves), ALL_NO_PREFIX); + ATTR_ONLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onload), ALL_NO_PREFIX); + ATTR_ONBOUNCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbounce), ALL_NO_PREFIX); + ATTR_ONCONTROLSELECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncontrolselect), ALL_NO_PREFIX); + ATTR_ONROWSINSERTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowsinserted), ALL_NO_PREFIX); + ATTR_ONMOUSEWHEEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousewheel), ALL_NO_PREFIX); + ATTR_ONROWENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowenter), ALL_NO_PREFIX); + ATTR_ONMOUSEENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseenter), ALL_NO_PREFIX); + ATTR_ONMOUSEOVER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseover), ALL_NO_PREFIX); + ATTR_ONFORMCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onformchange), ALL_NO_PREFIX); + ATTR_ONFOCUSIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocusin), ALL_NO_PREFIX); + ATTR_ONROWEXIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowexit), ALL_NO_PREFIX); + ATTR_ONMOVEEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmoveend), ALL_NO_PREFIX); + ATTR_ONCONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncontextmenu), ALL_NO_PREFIX); + ATTR_ONZOOM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onzoom), ALL_NO_PREFIX); + ATTR_ONLOSECAPTURE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onlosecapture), ALL_NO_PREFIX); + ATTR_ONCOPY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncopy), ALL_NO_PREFIX); ATTR_ONMOVESTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmovestart), ALL_NO_PREFIX); - ATTR_MARKERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerunits, nsHtml5Atoms::markerUnits), ALL_NO_PREFIX); - ATTR_MATHVARIANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathvariant), ALL_NO_PREFIX); - ATTR_MARGINWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marginwidth), ALL_NO_PREFIX); - ATTR_MARKERWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerwidth, nsHtml5Atoms::markerWidth), ALL_NO_PREFIX); - ATTR_TEXT_ANCHOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_anchor), ALL_NO_PREFIX); - ATTR_TABLEVALUES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::tablevalues, nsHtml5Atoms::tableValues), ALL_NO_PREFIX); - ATTR_SCRIPTLEVEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptlevel), ALL_NO_PREFIX); - ATTR_REPEATCOUNT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::repeatcount, nsHtml5Atoms::repeatCount), ALL_NO_PREFIX); - ATTR_STITCHTILES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::stitchtiles, nsHtml5Atoms::stitchTiles), ALL_NO_PREFIX); - ATTR_STARTOFFSET = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::startoffset, nsHtml5Atoms::startOffset), ALL_NO_PREFIX); - ATTR_SCROLLDELAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scrolldelay), ALL_NO_PREFIX); - ATTR_XMLNS_XLINK = new nsHtml5AttributeName(XMLNS_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xmlns_xlink, nsHtml5Atoms::xlink), XMLNS_PREFIX); - ATTR_XLINK_TITLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_title, nsHtml5Atoms::title), XLINK_PREFIX); - ATTR_ARIA_INVALID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_invalid), ALL_NO_PREFIX); - ATTR_ARIA_PRESSED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_pressed), ALL_NO_PREFIX); - ATTR_ARIA_CHECKED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_checked), ALL_NO_PREFIX); - ATTR_AUTOCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autocomplete), ALL_NO_PREFIX); - ATTR_ARIA_SETSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_setsize), ALL_NO_PREFIX); - ATTR_ARIA_CHANNEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_channel), ALL_NO_PREFIX); - ATTR_EQUALCOLUMNS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::equalcolumns), ALL_NO_PREFIX); - ATTR_DISPLAYSTYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::displaystyle), ALL_NO_PREFIX); - ATTR_DATAFORMATAS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dataformatas), ALL_NO_PREFIX); - ATTR_FILL_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill_opacity), ALL_NO_PREFIX); - ATTR_FONT_VARIANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_variant), ALL_NO_PREFIX); - ATTR_FONT_STRETCH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_stretch), ALL_NO_PREFIX); - ATTR_FRAMESPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::framespacing), ALL_NO_PREFIX); - ATTR_KERNELMATRIX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::kernelmatrix, nsHtml5Atoms::kernelMatrix), ALL_NO_PREFIX); - ATTR_ONDEACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondeactivate), ALL_NO_PREFIX); ATTR_ONROWSDELETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowsdelete), ALL_NO_PREFIX); ATTR_ONMOUSELEAVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseleave), ALL_NO_PREFIX); - ATTR_ONFORMCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onformchange), ALL_NO_PREFIX); - ATTR_ONCELLCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncellchange), ALL_NO_PREFIX); - ATTR_ONMOUSEWHEEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousewheel), ALL_NO_PREFIX); - ATTR_ONMOUSEENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseenter), ALL_NO_PREFIX); - ATTR_ONAFTERPRINT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onafterprint), ALL_NO_PREFIX); - ATTR_ONBEFORECOPY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforecopy), ALL_NO_PREFIX); - ATTR_MARGINHEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marginheight), ALL_NO_PREFIX); - ATTR_MARKERHEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerheight, nsHtml5Atoms::markerHeight), ALL_NO_PREFIX); - ATTR_MARKER_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_start), ALL_NO_PREFIX); - ATTR_MATHEMATICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathematical), ALL_NO_PREFIX); - ATTR_LENGTHADJUST = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::lengthadjust, nsHtml5Atoms::lengthAdjust), ALL_NO_PREFIX); - ATTR_UNSELECTABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unselectable), ALL_NO_PREFIX); - ATTR_UNICODE_BIDI = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_bidi), ALL_NO_PREFIX); - ATTR_UNITS_PER_EM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::units_per_em), ALL_NO_PREFIX); - ATTR_WORD_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::word_spacing), ALL_NO_PREFIX); - ATTR_WRITING_MODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::writing_mode), ALL_NO_PREFIX); - ATTR_V_ALPHABETIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_alphabetic), ALL_NO_PREFIX); - ATTR_PATTERNUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patternunits, nsHtml5Atoms::patternUnits), ALL_NO_PREFIX); - ATTR_SPREADMETHOD = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::spreadmethod, nsHtml5Atoms::spreadMethod), ALL_NO_PREFIX); - ATTR_SURFACESCALE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::surfacescale, nsHtml5Atoms::surfaceScale), ALL_NO_PREFIX); + ATTR_ONMOVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmove), ALL_NO_PREFIX); + ATTR_ONMOUSEMOVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousemove), ALL_NO_PREFIX); + ATTR_ONMOUSEUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseup), ALL_NO_PREFIX); + ATTR_ONFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocus), ALL_NO_PREFIX); + ATTR_ONMOUSEOUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseout), ALL_NO_PREFIX); + ATTR_ONFORMINPUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onforminput), ALL_NO_PREFIX); + ATTR_ONFOCUSOUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocusout), ALL_NO_PREFIX); + ATTR_ONMOUSEDOWN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousedown), ALL_NO_PREFIX); + ATTR_TO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::to), ALL_NO_PREFIX); + ATTR_RQUOTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rquote), ALL_NO_PREFIX); + ATTR_STROKE_LINECAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_linecap), ALL_NO_PREFIX); + ATTR_SCROLLDELAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scrolldelay), ALL_NO_PREFIX); + ATTR_STROKE_DASHARRAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_dasharray), ALL_NO_PREFIX); + ATTR_STROKE_DASHOFFSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_dashoffset), ALL_NO_PREFIX); + ATTR_STROKE_LINEJOIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_linejoin), ALL_NO_PREFIX); + ATTR_STROKE_MITERLIMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_miterlimit), ALL_NO_PREFIX); + ATTR_STROKE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke), ALL_NO_PREFIX); + ATTR_SCROLLING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scrolling), ALL_NO_PREFIX); ATTR_STROKE_WIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_width), ALL_NO_PREFIX); - ATTR_REPEAT_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_start), ALL_NO_PREFIX); - ATTR_STDDEVIATION = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::stddeviation, nsHtml5Atoms::stdDeviation), ALL_NO_PREFIX); + ATTR_STROKE_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_opacity), ALL_NO_PREFIX); + ATTR_COMPACT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::compact), ALL_NO_PREFIX); + ATTR_CLIP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip), ALL_NO_PREFIX); + ATTR_CLIP_RULE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip_rule), ALL_NO_PREFIX); + ATTR_CLIP_PATH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip_path), ALL_NO_PREFIX); + ATTR_CLIPPATHUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::clippathunits, nsHtml5Atoms::clipPathUnits), ALL_NO_PREFIX); + ATTR_DISPLAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::display), ALL_NO_PREFIX); + ATTR_DISPLAYSTYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::displaystyle), ALL_NO_PREFIX); + ATTR_GLYPH_ORIENTATION_VERTICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_vertical), ALL_NO_PREFIX); + ATTR_GLYPH_ORIENTATION_HORIZONTAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_horizontal), ALL_NO_PREFIX); + ATTR_GLYPHREF = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::glyphref, nsHtml5Atoms::glyphRef), ALL_NO_PREFIX); + ATTR_GLYPH_NAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_name), ALL_NO_PREFIX); + ATTR_HTTP_EQUIV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::http_equiv), ALL_NO_PREFIX); + ATTR_KEYPOINTS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keypoints, nsHtml5Atoms::keyPoints), ALL_NO_PREFIX); + ATTR_LOOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::loop), ALL_NO_PREFIX); + ATTR_PROPERTY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::property), ALL_NO_PREFIX); + ATTR_SCOPED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scoped), ALL_NO_PREFIX); + ATTR_STEP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::step), ALL_NO_PREFIX); + ATTR_SHAPE_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::shape_rendering), ALL_NO_PREFIX); + ATTR_SCOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scope), ALL_NO_PREFIX); + ATTR_SHAPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::shape), ALL_NO_PREFIX); + ATTR_SLOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::slope), ALL_NO_PREFIX); + ATTR_STOP_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stop_color), ALL_NO_PREFIX); ATTR_STOP_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stop_opacity), ALL_NO_PREFIX); - ATTR_ARIA_CONTROLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_controls), ALL_NO_PREFIX); - ATTR_ARIA_HASPOPUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_haspopup), ALL_NO_PREFIX); - ATTR_ACCENT_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accent_height), ALL_NO_PREFIX); - ATTR_ARIA_VALUENOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuenow), ALL_NO_PREFIX); - ATTR_ARIA_RELEVANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_relevant), ALL_NO_PREFIX); - ATTR_ARIA_POSINSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_posinset), ALL_NO_PREFIX); - ATTR_ARIA_VALUEMAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuemax), ALL_NO_PREFIX); - ATTR_ARIA_READONLY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_readonly), ALL_NO_PREFIX); - ATTR_ARIA_SELECTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_selected), ALL_NO_PREFIX); - ATTR_ARIA_REQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_required), ALL_NO_PREFIX); - ATTR_ARIA_EXPANDED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_expanded), ALL_NO_PREFIX); - ATTR_ARIA_DISABLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_disabled), ALL_NO_PREFIX); - ATTR_ATTRIBUTETYPE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::attributetype, nsHtml5Atoms::attributeType), ALL_NO_PREFIX); + ATTR_TEMPLATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::template_), ALL_NO_PREFIX); + ATTR_WRAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::wrap), ALL_NO_PREFIX); + ATTR_ABBR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::abbr), ALL_NO_PREFIX); ATTR_ATTRIBUTENAME = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::attributename, nsHtml5Atoms::attributeName), ALL_NO_PREFIX); - ATTR_ARIA_DATATYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_datatype), ALL_NO_PREFIX); - ATTR_ARIA_VALUEMIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuemin), ALL_NO_PREFIX); - ATTR_BASEFREQUENCY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::basefrequency, nsHtml5Atoms::baseFrequency), ALL_NO_PREFIX); - ATTR_COLUMNSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnspacing), ALL_NO_PREFIX); - ATTR_COLOR_PROFILE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_profile), ALL_NO_PREFIX); - ATTR_CLIPPATHUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::clippathunits, nsHtml5Atoms::clipPathUnits), ALL_NO_PREFIX); - ATTR_DEFINITIONURL = new nsHtml5AttributeName(ALL_NO_NS, MATH_DIFFERENT(nsHtml5Atoms::definitionurl, nsHtml5Atoms::definitionURL), ALL_NO_PREFIX); - ATTR_GRADIENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::gradientunits, nsHtml5Atoms::gradientUnits), ALL_NO_PREFIX); - ATTR_FLOOD_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::flood_opacity), ALL_NO_PREFIX); - ATTR_ONAFTERUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onafterupdate), ALL_NO_PREFIX); + ATTR_ATTRIBUTETYPE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::attributetype, nsHtml5Atoms::attributeType), ALL_NO_PREFIX); + ATTR_CHAR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::char_), ALL_NO_PREFIX); + ATTR_COORDS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::coords), ALL_NO_PREFIX); + ATTR_CHAROFF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::charoff), ALL_NO_PREFIX); + ATTR_CHARSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::charset), ALL_NO_PREFIX); + ATTR_MACROS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::macros), ALL_NO_PREFIX); + ATTR_NOWRAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nowrap), ALL_NO_PREFIX); + ATTR_NOHREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nohref), ALL_NO_PREFIX); + ATTR_ONDRAG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondrag), ALL_NO_PREFIX); + ATTR_ONDRAGENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragenter), ALL_NO_PREFIX); + ATTR_ONDRAGOVER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragover), ALL_NO_PREFIX); + ATTR_ONPROPERTYCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onpropertychange), ALL_NO_PREFIX); + ATTR_ONDRAGEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragend), ALL_NO_PREFIX); + ATTR_ONDROP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondrop), ALL_NO_PREFIX); + ATTR_ONDRAGDROP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragdrop), ALL_NO_PREFIX); + ATTR_OVERLINE_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overline_position), ALL_NO_PREFIX); + ATTR_ONERROR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onerror), ALL_NO_PREFIX); + ATTR_OPERATOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::operator_), ALL_NO_PREFIX); + ATTR_OVERFLOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overflow), ALL_NO_PREFIX); + ATTR_ONDRAGSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragstart), ALL_NO_PREFIX); ATTR_ONERRORUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onerrorupdate), ALL_NO_PREFIX); - ATTR_ONBEFOREPASTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforepaste), ALL_NO_PREFIX); - ATTR_ONLOSECAPTURE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onlosecapture), ALL_NO_PREFIX); - ATTR_ONCONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncontextmenu), ALL_NO_PREFIX); - ATTR_ONSELECTSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onselectstart), ALL_NO_PREFIX); - ATTR_ONBEFOREPRINT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeprint), ALL_NO_PREFIX); - ATTR_MOVABLELIMITS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::movablelimits), ALL_NO_PREFIX); - ATTR_LINETHICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::linethickness), ALL_NO_PREFIX); - ATTR_UNICODE_RANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_range), ALL_NO_PREFIX); - ATTR_THINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::thinmathspace), ALL_NO_PREFIX); - ATTR_VERT_ORIGIN_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_origin_x), ALL_NO_PREFIX); - ATTR_VERT_ORIGIN_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_origin_y), ALL_NO_PREFIX); - ATTR_V_IDEOGRAPHIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_ideographic), ALL_NO_PREFIX); + ATTR_OVERLINE_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overline_thickness), ALL_NO_PREFIX); + ATTR_ONDRAGLEAVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragleave), ALL_NO_PREFIX); + ATTR_STARTOFFSET = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::startoffset, nsHtml5Atoms::startOffset), ALL_NO_PREFIX); + ATTR_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::start), ALL_NO_PREFIX); + ATTR_AXIS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::axis), ALL_NO_PREFIX); + ATTR_BIAS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bias), ALL_NO_PREFIX); + ATTR_COLSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::colspan), ALL_NO_PREFIX); + ATTR_CLASSID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::classid), ALL_NO_PREFIX); + ATTR_CROSSORIGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::crossorigin), ALL_NO_PREFIX); + ATTR_COLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cols), ALL_NO_PREFIX); + ATTR_CURSOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cursor), ALL_NO_PREFIX); + ATTR_CLOSURE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::closure), ALL_NO_PREFIX); + ATTR_CLOSE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::close), ALL_NO_PREFIX); + ATTR_CLASS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::class_), ALL_NO_PREFIX); + ATTR_IS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::is), ALL_NO_PREFIX); + ATTR_KEYSYSTEM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::keysystem), ALL_NO_PREFIX); + ATTR_KEYSPLINES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keysplines, nsHtml5Atoms::keySplines), ALL_NO_PREFIX); + ATTR_LOWSRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lowsrc), ALL_NO_PREFIX); + ATTR_MAXSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::maxsize), ALL_NO_PREFIX); + ATTR_MINSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::minsize), ALL_NO_PREFIX); + ATTR_OFFSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::offset), ALL_NO_PREFIX); ATTR_PRESERVEALPHA = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::preservealpha, nsHtml5Atoms::preserveAlpha), ALL_NO_PREFIX); - ATTR_SCRIPTMINSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptminsize), ALL_NO_PREFIX); - ATTR_SPECIFICATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::specification), ALL_NO_PREFIX); - ATTR_XLINK_ACTUATE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_actuate, nsHtml5Atoms::actuate), XLINK_PREFIX); - ATTR_XLINK_ARCROLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_arcrole, nsHtml5Atoms::arcrole), XLINK_PREFIX); - ATTR_ACCEPT_CHARSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accept_charset), ALL_NO_PREFIX); - ATTR_ALIGNMENTSCOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alignmentscope), ALL_NO_PREFIX); - ATTR_ARIA_MULTILINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_multiline), ALL_NO_PREFIX); - ATTR_BASELINE_SHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::baseline_shift), ALL_NO_PREFIX); - ATTR_HORIZ_ORIGIN_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_origin_x), ALL_NO_PREFIX); - ATTR_HORIZ_ORIGIN_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_origin_y), ALL_NO_PREFIX); - ATTR_ONBEFOREUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeupdate), ALL_NO_PREFIX); - ATTR_ONFILTERCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfilterchange), ALL_NO_PREFIX); - ATTR_ONROWSINSERTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowsinserted), ALL_NO_PREFIX); - ATTR_ONBEFOREUNLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeunload), ALL_NO_PREFIX); - ATTR_MATHBACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathbackground), ALL_NO_PREFIX); - ATTR_LETTER_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::letter_spacing), ALL_NO_PREFIX); - ATTR_LIGHTING_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lighting_color), ALL_NO_PREFIX); - ATTR_THICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::thickmathspace), ALL_NO_PREFIX); - ATTR_TEXT_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_rendering), ALL_NO_PREFIX); - ATTR_V_MATHEMATICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_mathematical), ALL_NO_PREFIX); - ATTR_POINTER_EVENTS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::pointer_events), ALL_NO_PREFIX); - ATTR_PRIMITIVEUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::primitiveunits, nsHtml5Atoms::primitiveUnits), ALL_NO_PREFIX); - ATTR_REFERRERPOLICY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::referrerpolicy), ALL_NO_PREFIX); - ATTR_SYSTEMLANGUAGE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::systemlanguage, nsHtml5Atoms::systemLanguage), ALL_NO_PREFIX); - ATTR_STROKE_LINECAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_linecap), ALL_NO_PREFIX); + ATTR_PRESERVEASPECTRATIO = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::preserveaspectratio, nsHtml5Atoms::preserveAspectRatio), ALL_NO_PREFIX); + ATTR_ROWSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowspan), ALL_NO_PREFIX); + ATTR_ROWSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowspacing), ALL_NO_PREFIX); + ATTR_ROWS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rows), ALL_NO_PREFIX); + ATTR_SRCSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::srcset), ALL_NO_PREFIX); ATTR_SUBSCRIPTSHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::subscriptshift), ALL_NO_PREFIX); - ATTR_STROKE_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_opacity), ALL_NO_PREFIX); - ATTR_ARIA_DROPEFFECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_dropeffect), ALL_NO_PREFIX); - ATTR_ARIA_LABELLEDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_labelledby), ALL_NO_PREFIX); - ATTR_ARIA_TEMPLATEID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_templateid), ALL_NO_PREFIX); - ATTR_COLOR_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_rendering), ALL_NO_PREFIX); + ATTR_VERSION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::version), ALL_NO_PREFIX); + ATTR_ALTTEXT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alttext), ALL_NO_PREFIX); ATTR_CONTENTEDITABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::contenteditable), ALL_NO_PREFIX); - ATTR_DIFFUSECONSTANT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::diffuseconstant, nsHtml5Atoms::diffuseConstant), ALL_NO_PREFIX); - ATTR_ONDATAAVAILABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondataavailable), ALL_NO_PREFIX); - ATTR_ONCONTROLSELECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncontrolselect), ALL_NO_PREFIX); - ATTR_IMAGE_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::image_rendering), ALL_NO_PREFIX); - ATTR_MEDIUMMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mediummathspace), ALL_NO_PREFIX); - ATTR_TEXT_DECORATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_decoration), ALL_NO_PREFIX); - ATTR_SHAPE_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::shape_rendering), ALL_NO_PREFIX); - ATTR_STROKE_LINEJOIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_linejoin), ALL_NO_PREFIX); - ATTR_REPEAT_TEMPLATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_template), ALL_NO_PREFIX); - ATTR_ARIA_DESCRIBEDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_describedby), ALL_NO_PREFIX); + ATTR_CONTROLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::controls), ALL_NO_PREFIX); + ATTR_CONTENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::content), ALL_NO_PREFIX); + ATTR_CONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::contextmenu), ALL_NO_PREFIX); + ATTR_DEPTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::depth), ALL_NO_PREFIX); + ATTR_ENCTYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::enctype), ALL_NO_PREFIX); + ATTR_FONT_STRETCH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_stretch), ALL_NO_PREFIX); + ATTR_FILTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::filter), ALL_NO_PREFIX); + ATTR_FONTWEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontweight), ALL_NO_PREFIX); + ATTR_FONT_WEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_weight), ALL_NO_PREFIX); + ATTR_FONTSTYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontstyle), ALL_NO_PREFIX); + ATTR_FONT_STYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_style), ALL_NO_PREFIX); + ATTR_FONTFAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontfamily), ALL_NO_PREFIX); + ATTR_FONT_FAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_family), ALL_NO_PREFIX); + ATTR_FONT_VARIANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_variant), ALL_NO_PREFIX); ATTR_FONT_SIZE_ADJUST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_size_adjust), ALL_NO_PREFIX); - ATTR_KERNELUNITLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::kernelunitlength, nsHtml5Atoms::kernelUnitLength), ALL_NO_PREFIX); - ATTR_ONBEFOREACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeactivate), ALL_NO_PREFIX); - ATTR_ONPROPERTYCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onpropertychange), ALL_NO_PREFIX); - ATTR_ONDATASETCHANGED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondatasetchanged), ALL_NO_PREFIX); - ATTR_MASKCONTENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::maskcontentunits, nsHtml5Atoms::maskContentUnits), ALL_NO_PREFIX); + ATTR_FILTERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::filterunits, nsHtml5Atoms::filterUnits), ALL_NO_PREFIX); + ATTR_FONTSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontsize), ALL_NO_PREFIX); + ATTR_FONT_SIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_size), ALL_NO_PREFIX); + ATTR_KEYTIMES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keytimes, nsHtml5Atoms::keyTimes), ALL_NO_PREFIX); + ATTR_LETTER_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::letter_spacing), ALL_NO_PREFIX); + ATTR_LIST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::list), ALL_NO_PREFIX); + ATTR_MULTIPLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::multiple), ALL_NO_PREFIX); + ATTR_RT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rt), ALL_NO_PREFIX); + ATTR_ONSTOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onstop), ALL_NO_PREFIX); + ATTR_ONSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onstart), ALL_NO_PREFIX); + ATTR_POSTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::poster), ALL_NO_PREFIX); ATTR_PATTERNTRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patterntransform, nsHtml5Atoms::patternTransform), ALL_NO_PREFIX); + ATTR_PATTERN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::pattern), ALL_NO_PREFIX); + ATTR_PATTERNUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patternunits, nsHtml5Atoms::patternUnits), ALL_NO_PREFIX); + ATTR_PATTERNCONTENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patterncontentunits, nsHtml5Atoms::patternContentUnits), ALL_NO_PREFIX); + ATTR_RESTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::restart), ALL_NO_PREFIX); + ATTR_STITCHTILES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::stitchtiles, nsHtml5Atoms::stitchTiles), ALL_NO_PREFIX); + ATTR_SYSTEMLANGUAGE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::systemlanguage, nsHtml5Atoms::systemLanguage), ALL_NO_PREFIX); + ATTR_TEXT_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_rendering), ALL_NO_PREFIX); + ATTR_VERT_ORIGIN_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_origin_x), ALL_NO_PREFIX); + ATTR_VERT_ADV_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_adv_y), ALL_NO_PREFIX); + ATTR_VERT_ORIGIN_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_origin_y), ALL_NO_PREFIX); + ATTR_TEXT_DECORATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_decoration), ALL_NO_PREFIX); + ATTR_TEXT_ANCHOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_anchor), ALL_NO_PREFIX); + ATTR_TEXTLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::textlength, nsHtml5Atoms::textLength), ALL_NO_PREFIX); + ATTR_TEXT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text), ALL_NO_PREFIX); + ATTR_UNITS_PER_EM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::units_per_em), ALL_NO_PREFIX); + ATTR_WRITING_MODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::writing_mode), ALL_NO_PREFIX); + ATTR_WIDTHS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::widths), ALL_NO_PREFIX); + ATTR_WIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::width), ALL_NO_PREFIX); + ATTR_ACCUMULATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accumulate), ALL_NO_PREFIX); + ATTR_COLUMNSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnspan), ALL_NO_PREFIX); + ATTR_COLUMNLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnlines), ALL_NO_PREFIX); + ATTR_COLUMNALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnalign), ALL_NO_PREFIX); + ATTR_COLUMNSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnspacing), ALL_NO_PREFIX); + ATTR_COLUMNWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnwidth), ALL_NO_PREFIX); + ATTR_GROUPALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::groupalign), ALL_NO_PREFIX); + ATTR_INPUTMODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::inputmode), ALL_NO_PREFIX); + ATTR_OCCURRENCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::occurrence), ALL_NO_PREFIX); + ATTR_ONSUBMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onsubmit), ALL_NO_PREFIX); + ATTR_ONCUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncut), ALL_NO_PREFIX); + ATTR_REQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::required), ALL_NO_PREFIX); ATTR_REQUIREDFEATURES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::requiredfeatures, nsHtml5Atoms::requiredFeatures), ALL_NO_PREFIX); - ATTR_RENDERING_INTENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rendering_intent), ALL_NO_PREFIX); - ATTR_SPECULAREXPONENT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::specularexponent, nsHtml5Atoms::specularExponent), ALL_NO_PREFIX); - ATTR_SPECULARCONSTANT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::specularconstant, nsHtml5Atoms::specularConstant), ALL_NO_PREFIX); - ATTR_SUPERSCRIPTSHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::superscriptshift), ALL_NO_PREFIX); - ATTR_STROKE_DASHARRAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_dasharray), ALL_NO_PREFIX); - ATTR_XCHANNELSELECTOR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::xchannelselector, nsHtml5Atoms::xChannelSelector), ALL_NO_PREFIX); - ATTR_YCHANNELSELECTOR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::ychannelselector, nsHtml5Atoms::yChannelSelector), ALL_NO_PREFIX); - ATTR_ARIA_AUTOCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_autocomplete), ALL_NO_PREFIX); - ATTR_ENABLE_BACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::enable_background), ALL_NO_PREFIX); - ATTR_DOMINANT_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dominant_baseline), ALL_NO_PREFIX); - ATTR_GRADIENTTRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::gradienttransform, nsHtml5Atoms::gradientTransform), ALL_NO_PREFIX); - ATTR_ONBEFORDEACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbefordeactivate), ALL_NO_PREFIX); - ATTR_ONDATASETCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondatasetcomplete), ALL_NO_PREFIX); - ATTR_OVERLINE_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overline_position), ALL_NO_PREFIX); - ATTR_ONBEFOREEDITFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeeditfocus), ALL_NO_PREFIX); - ATTR_LIMITINGCONEANGLE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::limitingconeangle, nsHtml5Atoms::limitingConeAngle), ALL_NO_PREFIX); + ATTR_RESULT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::result), ALL_NO_PREFIX); + ATTR_REQUIREDEXTENSIONS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::requiredextensions, nsHtml5Atoms::requiredExtensions), ALL_NO_PREFIX); + ATTR_VALUES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::values), ALL_NO_PREFIX); + ATTR_VALUETYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::valuetype), ALL_NO_PREFIX); + ATTR_VALUE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::value), ALL_NO_PREFIX); + ATTR_ELEVATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::elevation), ALL_NO_PREFIX); + ATTR_VIEWTARGET = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::viewtarget, nsHtml5Atoms::viewTarget), ALL_NO_PREFIX); + ATTR_VIEWBOX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::viewbox, nsHtml5Atoms::viewBox), ALL_NO_PREFIX); + ATTR_CX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cx), ALL_NO_PREFIX); + ATTR_DX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dx), ALL_NO_PREFIX); + ATTR_FX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fx), ALL_NO_PREFIX); + ATTR_BBOX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bbox), ALL_NO_PREFIX); + ATTR_RX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rx), ALL_NO_PREFIX); + ATTR_REFX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::refx, nsHtml5Atoms::refX), ALL_NO_PREFIX); + ATTR_BY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::by), ALL_NO_PREFIX); + ATTR_CY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cy), ALL_NO_PREFIX); + ATTR_DY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dy), ALL_NO_PREFIX); + ATTR_FY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fy), ALL_NO_PREFIX); + ATTR_RY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ry), ALL_NO_PREFIX); + ATTR_REFY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::refy, nsHtml5Atoms::refY), ALL_NO_PREFIX); ATTR_VERYTHINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::verythinmathspace), ALL_NO_PREFIX); - ATTR_STROKE_DASHOFFSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_dashoffset), ALL_NO_PREFIX); - ATTR_STROKE_MITERLIMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_miterlimit), ALL_NO_PREFIX); - ATTR_ALIGNMENT_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alignment_baseline), ALL_NO_PREFIX); - ATTR_ONREADYSTATECHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onreadystatechange), ALL_NO_PREFIX); - ATTR_OVERLINE_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overline_thickness), ALL_NO_PREFIX); - ATTR_UNDERLINE_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::underline_position), ALL_NO_PREFIX); ATTR_VERYTHICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::verythickmathspace), ALL_NO_PREFIX); - ATTR_REQUIREDEXTENSIONS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::requiredextensions, nsHtml5Atoms::requiredExtensions), ALL_NO_PREFIX); - ATTR_COLOR_INTERPOLATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation), ALL_NO_PREFIX); - ATTR_UNDERLINE_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::underline_thickness), ALL_NO_PREFIX); - ATTR_PRESERVEASPECTRATIO = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::preserveaspectratio, nsHtml5Atoms::preserveAspectRatio), ALL_NO_PREFIX); - ATTR_PATTERNCONTENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patterncontentunits, nsHtml5Atoms::patternContentUnits), ALL_NO_PREFIX); - ATTR_ARIA_MULTISELECTABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_multiselectable), ALL_NO_PREFIX); - ATTR_SCRIPTSIZEMULTIPLIER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptsizemultiplier), ALL_NO_PREFIX); - ATTR_ARIA_ACTIVEDESCENDANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_activedescendant), ALL_NO_PREFIX); ATTR_VERYVERYTHINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::veryverythinmathspace), ALL_NO_PREFIX); ATTR_VERYVERYTHICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::veryverythickmathspace), ALL_NO_PREFIX); - ATTR_STRIKETHROUGH_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_position), ALL_NO_PREFIX); - ATTR_STRIKETHROUGH_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_thickness), ALL_NO_PREFIX); - ATTR_GLYPH_ORIENTATION_VERTICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_vertical), ALL_NO_PREFIX); - ATTR_COLOR_INTERPOLATION_FILTERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation_filters), ALL_NO_PREFIX); - ATTR_GLYPH_ORIENTATION_HORIZONTAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_horizontal), ALL_NO_PREFIX); - ATTRIBUTE_NAMES = new nsHtml5AttributeName*[583]; - ATTRIBUTE_NAMES[0] = ATTR_D; - ATTRIBUTE_NAMES[1] = ATTR_K; - ATTRIBUTE_NAMES[2] = ATTR_R; - ATTRIBUTE_NAMES[3] = ATTR_X; - ATTRIBUTE_NAMES[4] = ATTR_Y; - ATTRIBUTE_NAMES[5] = ATTR_Z; - ATTRIBUTE_NAMES[6] = ATTR_BY; - ATTRIBUTE_NAMES[7] = ATTR_CX; - ATTRIBUTE_NAMES[8] = ATTR_CY; - ATTRIBUTE_NAMES[9] = ATTR_DX; - ATTRIBUTE_NAMES[10] = ATTR_DY; - ATTRIBUTE_NAMES[11] = ATTR_G2; - ATTRIBUTE_NAMES[12] = ATTR_G1; - ATTRIBUTE_NAMES[13] = ATTR_FX; - ATTRIBUTE_NAMES[14] = ATTR_FY; - ATTRIBUTE_NAMES[15] = ATTR_K4; - ATTRIBUTE_NAMES[16] = ATTR_K2; - ATTRIBUTE_NAMES[17] = ATTR_K3; - ATTRIBUTE_NAMES[18] = ATTR_K1; - ATTRIBUTE_NAMES[19] = ATTR_ID; - ATTRIBUTE_NAMES[20] = ATTR_IN; - ATTRIBUTE_NAMES[21] = ATTR_U2; - ATTRIBUTE_NAMES[22] = ATTR_U1; - ATTRIBUTE_NAMES[23] = ATTR_RT; - ATTRIBUTE_NAMES[24] = ATTR_RX; - ATTRIBUTE_NAMES[25] = ATTR_RY; - ATTRIBUTE_NAMES[26] = ATTR_TO; - ATTRIBUTE_NAMES[27] = ATTR_Y2; - ATTRIBUTE_NAMES[28] = ATTR_Y1; - ATTRIBUTE_NAMES[29] = ATTR_X1; - ATTRIBUTE_NAMES[30] = ATTR_X2; - ATTRIBUTE_NAMES[31] = ATTR_ALT; - ATTRIBUTE_NAMES[32] = ATTR_DIR; - ATTRIBUTE_NAMES[33] = ATTR_DUR; - ATTRIBUTE_NAMES[34] = ATTR_END; - ATTRIBUTE_NAMES[35] = ATTR_FOR; - ATTRIBUTE_NAMES[36] = ATTR_IN2; - ATTRIBUTE_NAMES[37] = ATTR_MAX; - ATTRIBUTE_NAMES[38] = ATTR_MIN; - ATTRIBUTE_NAMES[39] = ATTR_LOW; - ATTRIBUTE_NAMES[40] = ATTR_REL; - ATTRIBUTE_NAMES[41] = ATTR_REV; - ATTRIBUTE_NAMES[42] = ATTR_SRC; - ATTRIBUTE_NAMES[43] = ATTR_AXIS; - ATTRIBUTE_NAMES[44] = ATTR_ABBR; - ATTRIBUTE_NAMES[45] = ATTR_BBOX; - ATTRIBUTE_NAMES[46] = ATTR_CITE; - ATTRIBUTE_NAMES[47] = ATTR_CODE; - ATTRIBUTE_NAMES[48] = ATTR_BIAS; - ATTRIBUTE_NAMES[49] = ATTR_COLS; - ATTRIBUTE_NAMES[50] = ATTR_CLIP; - ATTRIBUTE_NAMES[51] = ATTR_CHAR; - ATTRIBUTE_NAMES[52] = ATTR_BASE; - ATTRIBUTE_NAMES[53] = ATTR_EDGE; - ATTRIBUTE_NAMES[54] = ATTR_DATA; - ATTRIBUTE_NAMES[55] = ATTR_FILL; - ATTRIBUTE_NAMES[56] = ATTR_FROM; - ATTRIBUTE_NAMES[57] = ATTR_FORM; - ATTRIBUTE_NAMES[58] = ATTR_FACE; - ATTRIBUTE_NAMES[59] = ATTR_HIGH; - ATTRIBUTE_NAMES[60] = ATTR_HREF; - ATTRIBUTE_NAMES[61] = ATTR_OPEN; - ATTRIBUTE_NAMES[62] = ATTR_ICON; - ATTRIBUTE_NAMES[63] = ATTR_NAME; - ATTRIBUTE_NAMES[64] = ATTR_MODE; - ATTRIBUTE_NAMES[65] = ATTR_MASK; - ATTRIBUTE_NAMES[66] = ATTR_LINK; - ATTRIBUTE_NAMES[67] = ATTR_LANG; - ATTRIBUTE_NAMES[68] = ATTR_LOOP; - ATTRIBUTE_NAMES[69] = ATTR_LIST; - ATTRIBUTE_NAMES[70] = ATTR_TYPE; - ATTRIBUTE_NAMES[71] = ATTR_WHEN; - ATTRIBUTE_NAMES[72] = ATTR_WRAP; - ATTRIBUTE_NAMES[73] = ATTR_TEXT; - ATTRIBUTE_NAMES[74] = ATTR_PATH; - ATTRIBUTE_NAMES[75] = ATTR_PING; - ATTRIBUTE_NAMES[76] = ATTR_REFX; - ATTRIBUTE_NAMES[77] = ATTR_REFY; - ATTRIBUTE_NAMES[78] = ATTR_SIZE; - ATTRIBUTE_NAMES[79] = ATTR_SEED; - ATTRIBUTE_NAMES[80] = ATTR_ROWS; - ATTRIBUTE_NAMES[81] = ATTR_SPAN; - ATTRIBUTE_NAMES[82] = ATTR_STEP; - ATTRIBUTE_NAMES[83] = ATTR_ROLE; - ATTRIBUTE_NAMES[84] = ATTR_XREF; - ATTRIBUTE_NAMES[85] = ATTR_ASYNC; - ATTRIBUTE_NAMES[86] = ATTR_ALINK; - ATTRIBUTE_NAMES[87] = ATTR_ALIGN; - ATTRIBUTE_NAMES[88] = ATTR_CLOSE; - ATTRIBUTE_NAMES[89] = ATTR_COLOR; - ATTRIBUTE_NAMES[90] = ATTR_CLASS; - ATTRIBUTE_NAMES[91] = ATTR_CLEAR; - ATTRIBUTE_NAMES[92] = ATTR_BEGIN; - ATTRIBUTE_NAMES[93] = ATTR_DEPTH; - ATTRIBUTE_NAMES[94] = ATTR_DEFER; - ATTRIBUTE_NAMES[95] = ATTR_FENCE; - ATTRIBUTE_NAMES[96] = ATTR_FRAME; - ATTRIBUTE_NAMES[97] = ATTR_ISMAP; - ATTRIBUTE_NAMES[98] = ATTR_ONEND; - ATTRIBUTE_NAMES[99] = ATTR_INDEX; - ATTRIBUTE_NAMES[100] = ATTR_ORDER; - ATTRIBUTE_NAMES[101] = ATTR_OTHER; - ATTRIBUTE_NAMES[102] = ATTR_ONCUT; - ATTRIBUTE_NAMES[103] = ATTR_NARGS; - ATTRIBUTE_NAMES[104] = ATTR_MEDIA; - ATTRIBUTE_NAMES[105] = ATTR_LABEL; - ATTRIBUTE_NAMES[106] = ATTR_LOCAL; - ATTRIBUTE_NAMES[107] = ATTR_WIDTH; - ATTRIBUTE_NAMES[108] = ATTR_TITLE; - ATTRIBUTE_NAMES[109] = ATTR_VLINK; - ATTRIBUTE_NAMES[110] = ATTR_VALUE; - ATTRIBUTE_NAMES[111] = ATTR_SLOPE; - ATTRIBUTE_NAMES[112] = ATTR_SHAPE; - ATTRIBUTE_NAMES[113] = ATTR_SCOPE; - ATTRIBUTE_NAMES[114] = ATTR_SCALE; - ATTRIBUTE_NAMES[115] = ATTR_SPEED; - ATTRIBUTE_NAMES[116] = ATTR_STYLE; - ATTRIBUTE_NAMES[117] = ATTR_RULES; - ATTRIBUTE_NAMES[118] = ATTR_STEMH; - ATTRIBUTE_NAMES[119] = ATTR_SIZES; - ATTRIBUTE_NAMES[120] = ATTR_STEMV; - ATTRIBUTE_NAMES[121] = ATTR_START; - ATTRIBUTE_NAMES[122] = ATTR_XMLNS; - ATTRIBUTE_NAMES[123] = ATTR_ACCEPT; - ATTRIBUTE_NAMES[124] = ATTR_ACCENT; - ATTRIBUTE_NAMES[125] = ATTR_ASCENT; - ATTRIBUTE_NAMES[126] = ATTR_ACTIVE; - ATTRIBUTE_NAMES[127] = ATTR_ALTIMG; - ATTRIBUTE_NAMES[128] = ATTR_ACTION; - ATTRIBUTE_NAMES[129] = ATTR_BORDER; - ATTRIBUTE_NAMES[130] = ATTR_CURSOR; - ATTRIBUTE_NAMES[131] = ATTR_COORDS; - ATTRIBUTE_NAMES[132] = ATTR_FILTER; - ATTRIBUTE_NAMES[133] = ATTR_FORMAT; - ATTRIBUTE_NAMES[134] = ATTR_HIDDEN; - ATTRIBUTE_NAMES[135] = ATTR_HSPACE; - ATTRIBUTE_NAMES[136] = ATTR_HEIGHT; - ATTRIBUTE_NAMES[137] = ATTR_ONMOVE; - ATTRIBUTE_NAMES[138] = ATTR_ONLOAD; - ATTRIBUTE_NAMES[139] = ATTR_ONDRAG; - ATTRIBUTE_NAMES[140] = ATTR_ORIGIN; - ATTRIBUTE_NAMES[141] = ATTR_ONZOOM; - ATTRIBUTE_NAMES[142] = ATTR_ONHELP; - ATTRIBUTE_NAMES[143] = ATTR_ONSTOP; - ATTRIBUTE_NAMES[144] = ATTR_ONDROP; - ATTRIBUTE_NAMES[145] = ATTR_ONBLUR; - ATTRIBUTE_NAMES[146] = ATTR_OBJECT; - ATTRIBUTE_NAMES[147] = ATTR_OFFSET; - ATTRIBUTE_NAMES[148] = ATTR_ORIENT; - ATTRIBUTE_NAMES[149] = ATTR_ONCOPY; - ATTRIBUTE_NAMES[150] = ATTR_NOWRAP; - ATTRIBUTE_NAMES[151] = ATTR_NOHREF; - ATTRIBUTE_NAMES[152] = ATTR_MACROS; - ATTRIBUTE_NAMES[153] = ATTR_METHOD; - ATTRIBUTE_NAMES[154] = ATTR_LOWSRC; - ATTRIBUTE_NAMES[155] = ATTR_LSPACE; - ATTRIBUTE_NAMES[156] = ATTR_LQUOTE; - ATTRIBUTE_NAMES[157] = ATTR_USEMAP; - ATTRIBUTE_NAMES[158] = ATTR_WIDTHS; - ATTRIBUTE_NAMES[159] = ATTR_TARGET; - ATTRIBUTE_NAMES[160] = ATTR_VALUES; - ATTRIBUTE_NAMES[161] = ATTR_VALIGN; - ATTRIBUTE_NAMES[162] = ATTR_VSPACE; - ATTRIBUTE_NAMES[163] = ATTR_POSTER; - ATTRIBUTE_NAMES[164] = ATTR_POINTS; - ATTRIBUTE_NAMES[165] = ATTR_PROMPT; - ATTRIBUTE_NAMES[166] = ATTR_SRCDOC; - ATTRIBUTE_NAMES[167] = ATTR_SCOPED; - ATTRIBUTE_NAMES[168] = ATTR_STRING; - ATTRIBUTE_NAMES[169] = ATTR_SCHEME; - ATTRIBUTE_NAMES[170] = ATTR_STROKE; - ATTRIBUTE_NAMES[171] = ATTR_RADIUS; - ATTRIBUTE_NAMES[172] = ATTR_RESULT; - ATTRIBUTE_NAMES[173] = ATTR_REPEAT; - ATTRIBUTE_NAMES[174] = ATTR_SRCSET; - ATTRIBUTE_NAMES[175] = ATTR_RSPACE; - ATTRIBUTE_NAMES[176] = ATTR_ROTATE; - ATTRIBUTE_NAMES[177] = ATTR_RQUOTE; - ATTRIBUTE_NAMES[178] = ATTR_ALTTEXT; - ATTRIBUTE_NAMES[179] = ATTR_ARCHIVE; - ATTRIBUTE_NAMES[180] = ATTR_AZIMUTH; - ATTRIBUTE_NAMES[181] = ATTR_CLOSURE; - ATTRIBUTE_NAMES[182] = ATTR_CHECKED; - ATTRIBUTE_NAMES[183] = ATTR_CLASSID; - ATTRIBUTE_NAMES[184] = ATTR_CHAROFF; - ATTRIBUTE_NAMES[185] = ATTR_BGCOLOR; - ATTRIBUTE_NAMES[186] = ATTR_COLSPAN; - ATTRIBUTE_NAMES[187] = ATTR_CHARSET; - ATTRIBUTE_NAMES[188] = ATTR_COMPACT; - ATTRIBUTE_NAMES[189] = ATTR_CONTENT; - ATTRIBUTE_NAMES[190] = ATTR_ENCTYPE; - ATTRIBUTE_NAMES[191] = ATTR_DATASRC; - ATTRIBUTE_NAMES[192] = ATTR_DATAFLD; - ATTRIBUTE_NAMES[193] = ATTR_DECLARE; - ATTRIBUTE_NAMES[194] = ATTR_DISPLAY; - ATTRIBUTE_NAMES[195] = ATTR_DIVISOR; - ATTRIBUTE_NAMES[196] = ATTR_DEFAULT; - ATTRIBUTE_NAMES[197] = ATTR_DESCENT; - ATTRIBUTE_NAMES[198] = ATTR_KERNING; - ATTRIBUTE_NAMES[199] = ATTR_HANGING; - ATTRIBUTE_NAMES[200] = ATTR_HEADERS; - ATTRIBUTE_NAMES[201] = ATTR_ONPASTE; - ATTRIBUTE_NAMES[202] = ATTR_ONCLICK; - ATTRIBUTE_NAMES[203] = ATTR_OPTIMUM; - ATTRIBUTE_NAMES[204] = ATTR_ONBEGIN; - ATTRIBUTE_NAMES[205] = ATTR_ONKEYUP; - ATTRIBUTE_NAMES[206] = ATTR_ONFOCUS; - ATTRIBUTE_NAMES[207] = ATTR_ONERROR; - ATTRIBUTE_NAMES[208] = ATTR_ONINPUT; - ATTRIBUTE_NAMES[209] = ATTR_ONABORT; - ATTRIBUTE_NAMES[210] = ATTR_ONSTART; - ATTRIBUTE_NAMES[211] = ATTR_ONRESET; - ATTRIBUTE_NAMES[212] = ATTR_OPACITY; - ATTRIBUTE_NAMES[213] = ATTR_NOSHADE; - ATTRIBUTE_NAMES[214] = ATTR_MINSIZE; - ATTRIBUTE_NAMES[215] = ATTR_MAXSIZE; - ATTRIBUTE_NAMES[216] = ATTR_LARGEOP; - ATTRIBUTE_NAMES[217] = ATTR_UNICODE; - ATTRIBUTE_NAMES[218] = ATTR_TARGETX; - ATTRIBUTE_NAMES[219] = ATTR_TARGETY; - ATTRIBUTE_NAMES[220] = ATTR_VIEWBOX; - ATTRIBUTE_NAMES[221] = ATTR_VERSION; - ATTRIBUTE_NAMES[222] = ATTR_PATTERN; - ATTRIBUTE_NAMES[223] = ATTR_PROFILE; - ATTRIBUTE_NAMES[224] = ATTR_SPACING; - ATTRIBUTE_NAMES[225] = ATTR_RESTART; - ATTRIBUTE_NAMES[226] = ATTR_ROWSPAN; - ATTRIBUTE_NAMES[227] = ATTR_SANDBOX; - ATTRIBUTE_NAMES[228] = ATTR_SUMMARY; - ATTRIBUTE_NAMES[229] = ATTR_STANDBY; - ATTRIBUTE_NAMES[230] = ATTR_REPLACE; - ATTRIBUTE_NAMES[231] = ATTR_AUTOPLAY; - ATTRIBUTE_NAMES[232] = ATTR_ADDITIVE; - ATTRIBUTE_NAMES[233] = ATTR_CALCMODE; - ATTRIBUTE_NAMES[234] = ATTR_CODETYPE; - ATTRIBUTE_NAMES[235] = ATTR_CODEBASE; - ATTRIBUTE_NAMES[236] = ATTR_CONTROLS; - ATTRIBUTE_NAMES[237] = ATTR_BEVELLED; - ATTRIBUTE_NAMES[238] = ATTR_BASELINE; - ATTRIBUTE_NAMES[239] = ATTR_EXPONENT; - ATTRIBUTE_NAMES[240] = ATTR_EDGEMODE; - ATTRIBUTE_NAMES[241] = ATTR_ENCODING; - ATTRIBUTE_NAMES[242] = ATTR_GLYPHREF; - ATTRIBUTE_NAMES[243] = ATTR_DATETIME; - ATTRIBUTE_NAMES[244] = ATTR_DISABLED; - ATTRIBUTE_NAMES[245] = ATTR_FONTSIZE; - ATTRIBUTE_NAMES[246] = ATTR_KEYTIMES; - ATTRIBUTE_NAMES[247] = ATTR_PANOSE_1; - ATTRIBUTE_NAMES[248] = ATTR_HREFLANG; - ATTRIBUTE_NAMES[249] = ATTR_ONRESIZE; - ATTRIBUTE_NAMES[250] = ATTR_ONCHANGE; - ATTRIBUTE_NAMES[251] = ATTR_ONBOUNCE; - ATTRIBUTE_NAMES[252] = ATTR_ONUNLOAD; - ATTRIBUTE_NAMES[253] = ATTR_ONFINISH; - ATTRIBUTE_NAMES[254] = ATTR_ONSCROLL; - ATTRIBUTE_NAMES[255] = ATTR_OPERATOR; - ATTRIBUTE_NAMES[256] = ATTR_OVERFLOW; - ATTRIBUTE_NAMES[257] = ATTR_ONSUBMIT; - ATTRIBUTE_NAMES[258] = ATTR_ONREPEAT; - ATTRIBUTE_NAMES[259] = ATTR_ONSELECT; - ATTRIBUTE_NAMES[260] = ATTR_NOTATION; - ATTRIBUTE_NAMES[261] = ATTR_NORESIZE; - ATTRIBUTE_NAMES[262] = ATTR_MANIFEST; - ATTRIBUTE_NAMES[263] = ATTR_MATHSIZE; - ATTRIBUTE_NAMES[264] = ATTR_MULTIPLE; - ATTRIBUTE_NAMES[265] = ATTR_LONGDESC; - ATTRIBUTE_NAMES[266] = ATTR_LANGUAGE; - ATTRIBUTE_NAMES[267] = ATTR_TEMPLATE; - ATTRIBUTE_NAMES[268] = ATTR_TABINDEX; - ATTRIBUTE_NAMES[269] = ATTR_PROPERTY; - ATTRIBUTE_NAMES[270] = ATTR_READONLY; - ATTRIBUTE_NAMES[271] = ATTR_SELECTED; - ATTRIBUTE_NAMES[272] = ATTR_ROWLINES; - ATTRIBUTE_NAMES[273] = ATTR_SEAMLESS; - ATTRIBUTE_NAMES[274] = ATTR_ROWALIGN; - ATTRIBUTE_NAMES[275] = ATTR_STRETCHY; - ATTRIBUTE_NAMES[276] = ATTR_REQUIRED; - ATTRIBUTE_NAMES[277] = ATTR_XML_BASE; - ATTRIBUTE_NAMES[278] = ATTR_XML_LANG; - ATTRIBUTE_NAMES[279] = ATTR_X_HEIGHT; - ATTRIBUTE_NAMES[280] = ATTR_ARIA_OWNS; - ATTRIBUTE_NAMES[281] = ATTR_AUTOFOCUS; - ATTRIBUTE_NAMES[282] = ATTR_ARIA_SORT; - ATTRIBUTE_NAMES[283] = ATTR_ACCESSKEY; - ATTRIBUTE_NAMES[284] = ATTR_ARIA_BUSY; - ATTRIBUTE_NAMES[285] = ATTR_ARIA_GRAB; - ATTRIBUTE_NAMES[286] = ATTR_AMPLITUDE; - ATTRIBUTE_NAMES[287] = ATTR_ARIA_LIVE; - ATTRIBUTE_NAMES[288] = ATTR_CLIP_RULE; - ATTRIBUTE_NAMES[289] = ATTR_CLIP_PATH; - ATTRIBUTE_NAMES[290] = ATTR_EQUALROWS; - ATTRIBUTE_NAMES[291] = ATTR_ELEVATION; - ATTRIBUTE_NAMES[292] = ATTR_DIRECTION; - ATTRIBUTE_NAMES[293] = ATTR_DRAGGABLE; - ATTRIBUTE_NAMES[294] = ATTR_FILL_RULE; - ATTRIBUTE_NAMES[295] = ATTR_FONTSTYLE; - ATTRIBUTE_NAMES[296] = ATTR_FONT_SIZE; - ATTRIBUTE_NAMES[297] = ATTR_KEYSYSTEM; - ATTRIBUTE_NAMES[298] = ATTR_KEYPOINTS; - ATTRIBUTE_NAMES[299] = ATTR_HIDEFOCUS; - ATTRIBUTE_NAMES[300] = ATTR_ONMESSAGE; - ATTRIBUTE_NAMES[301] = ATTR_INTERCEPT; - ATTRIBUTE_NAMES[302] = ATTR_ONDRAGEND; - ATTRIBUTE_NAMES[303] = ATTR_ONMOVEEND; - ATTRIBUTE_NAMES[304] = ATTR_ONINVALID; - ATTRIBUTE_NAMES[305] = ATTR_INTEGRITY; - ATTRIBUTE_NAMES[306] = ATTR_ONKEYDOWN; - ATTRIBUTE_NAMES[307] = ATTR_ONFOCUSIN; - ATTRIBUTE_NAMES[308] = ATTR_ONMOUSEUP; - ATTRIBUTE_NAMES[309] = ATTR_INPUTMODE; - ATTRIBUTE_NAMES[310] = ATTR_ONROWEXIT; - ATTRIBUTE_NAMES[311] = ATTR_MATHCOLOR; - ATTRIBUTE_NAMES[312] = ATTR_MASKUNITS; - ATTRIBUTE_NAMES[313] = ATTR_MAXLENGTH; - ATTRIBUTE_NAMES[314] = ATTR_LINEBREAK; - ATTRIBUTE_NAMES[315] = ATTR_TRANSFORM; - ATTRIBUTE_NAMES[316] = ATTR_V_HANGING; - ATTRIBUTE_NAMES[317] = ATTR_VALUETYPE; - ATTRIBUTE_NAMES[318] = ATTR_POINTSATZ; - ATTRIBUTE_NAMES[319] = ATTR_POINTSATX; - ATTRIBUTE_NAMES[320] = ATTR_POINTSATY; - ATTRIBUTE_NAMES[321] = ATTR_SYMMETRIC; - ATTRIBUTE_NAMES[322] = ATTR_SCROLLING; - ATTRIBUTE_NAMES[323] = ATTR_REPEATDUR; + ATTRIBUTE_NAMES = new nsHtml5AttributeName*[584]; + ATTRIBUTE_NAMES[0] = ATTR_STEMH; + ATTRIBUTE_NAMES[1] = ATTR_REPEATCOUNT; + ATTRIBUTE_NAMES[2] = ATTR_NOWRAP; + ATTRIBUTE_NAMES[3] = ATTR_SRCDOC; + ATTRIBUTE_NAMES[4] = ATTR_ADDITIVE; + ATTRIBUTE_NAMES[5] = ATTR_ONFORMCHANGE; + ATTRIBUTE_NAMES[6] = ATTR_KEYTIMES; + ATTRIBUTE_NAMES[7] = ATTR_ARIA_SORT; + ATTRIBUTE_NAMES[8] = ATTR_OBJECT; + ATTRIBUTE_NAMES[9] = ATTR_IMAGE_RENDERING; + ATTRIBUTE_NAMES[10] = ATTR_MARKER_START; + ATTRIBUTE_NAMES[11] = ATTR_XLINK_ARCROLE; + ATTRIBUTE_NAMES[12] = ATTR_CLIP; + ATTRIBUTE_NAMES[13] = ATTR_LOWSRC; + ATTRIBUTE_NAMES[14] = ATTR_COLUMNWIDTH; + ATTRIBUTE_NAMES[15] = ATTR_XML_SPACE; + ATTRIBUTE_NAMES[16] = ATTR_VSPACE; + ATTRIBUTE_NAMES[17] = ATTR_EDGEMODE; + ATTRIBUTE_NAMES[18] = ATTR_ONBEFOREUPDATE; + ATTRIBUTE_NAMES[19] = ATTR_UNDERLINE_THICKNESS; + ATTRIBUTE_NAMES[20] = ATTR_HIGH; + ATTRIBUTE_NAMES[21] = ATTR_RADIUS; + ATTRIBUTE_NAMES[22] = ATTR_ROWLINES; + ATTRIBUTE_NAMES[23] = ATTR_ONEND; + ATTRIBUTE_NAMES[24] = ATTR_ENCODING; + ATTRIBUTE_NAMES[25] = ATTR_ONFORMINPUT; + ATTRIBUTE_NAMES[26] = ATTR_SHAPE_RENDERING; + ATTRIBUTE_NAMES[27] = ATTR_ONDRAGLEAVE; + ATTRIBUTE_NAMES[28] = ATTR_CONTEXTMENU; + ATTRIBUTE_NAMES[29] = ATTR_VERT_ORIGIN_X; + ATTRIBUTE_NAMES[30] = ATTR_CX; + ATTRIBUTE_NAMES[31] = ATTR_X; + ATTRIBUTE_NAMES[32] = ATTR_ARIA_HIDDEN; + ATTRIBUTE_NAMES[33] = ATTR_HSPACE; + ATTRIBUTE_NAMES[34] = ATTR_SPECULAREXPONENT; + ATTRIBUTE_NAMES[35] = ATTR_BASELINE; + ATTRIBUTE_NAMES[36] = ATTR_LINEBREAK; + ATTRIBUTE_NAMES[37] = ATTR_ONBEGIN; + ATTRIBUTE_NAMES[38] = ATTR_ONKEYDOWN; + ATTRIBUTE_NAMES[39] = ATTR_STRETCHY; + ATTRIBUTE_NAMES[40] = ATTR_SURFACESCALE; + ATTRIBUTE_NAMES[41] = ATTR_NARGS; + ATTRIBUTE_NAMES[42] = ATTR_NOSHADE; + ATTRIBUTE_NAMES[43] = ATTR_LIMITINGCONEANGLE; + ATTRIBUTE_NAMES[44] = ATTR_VALIGN; + ATTRIBUTE_NAMES[45] = ATTR_DECLARE; + ATTRIBUTE_NAMES[46] = ATTR_FRAMEBORDER; + ATTRIBUTE_NAMES[47] = ATTR_IN; + ATTRIBUTE_NAMES[48] = ATTR_STANDBY; + ATTRIBUTE_NAMES[49] = ATTR_AUTOCOMPLETE; + ATTRIBUTE_NAMES[50] = ATTR_ONLOAD; + ATTRIBUTE_NAMES[51] = ATTR_ONMOVESTART; + ATTRIBUTE_NAMES[52] = ATTR_STROKE_DASHOFFSET; + ATTRIBUTE_NAMES[53] = ATTR_GLYPHREF; + ATTRIBUTE_NAMES[54] = ATTR_ABBR; + ATTRIBUTE_NAMES[55] = ATTR_ONDRAGDROP; + ATTRIBUTE_NAMES[56] = ATTR_COLS; + ATTRIBUTE_NAMES[57] = ATTR_ROWS; + ATTRIBUTE_NAMES[58] = ATTR_FONT_STYLE; + ATTRIBUTE_NAMES[59] = ATTR_PATTERNTRANSFORM; + ATTRIBUTE_NAMES[60] = ATTR_WRITING_MODE; + ATTRIBUTE_NAMES[61] = ATTR_RESULT; + ATTRIBUTE_NAMES[62] = ATTR_DY; + ATTRIBUTE_NAMES[63] = ATTR_MIN; + ATTRIBUTE_NAMES[64] = ATTR_Y1; + ATTRIBUTE_NAMES[65] = ATTR_ARIA_CHECKED; + ATTRIBUTE_NAMES[66] = ATTR_ARIA_CONTROLS; + ATTRIBUTE_NAMES[67] = ATTR_DATAFORMATAS; + ATTRIBUTE_NAMES[68] = ATTR_ONPASTE; + ATTRIBUTE_NAMES[69] = ATTR_CALCMODE; + ATTRIBUTE_NAMES[70] = ATTR_ID; + ATTRIBUTE_NAMES[71] = ATTR_ACCENT_HEIGHT; + ATTRIBUTE_NAMES[72] = ATTR_CITE; + ATTRIBUTE_NAMES[73] = ATTR_INDEX; + ATTRIBUTE_NAMES[74] = ATTR_NAME; + ATTRIBUTE_NAMES[75] = ATTR_ONRESET; + ATTRIBUTE_NAMES[76] = ATTR_ORIENTATION; + ATTRIBUTE_NAMES[77] = ATTR_ONKEYPRESS; + ATTRIBUTE_NAMES[78] = ATTR_REFERRERPOLICY; + ATTRIBUTE_NAMES[79] = ATTR_SELECTED; + ATTRIBUTE_NAMES[80] = ATTR_SIZE; + ATTRIBUTE_NAMES[81] = ATTR_HREFLANG; + ATTRIBUTE_NAMES[82] = ATTR_ALIGNMENTSCOPE; + ATTRIBUTE_NAMES[83] = ATTR_LONGDESC; + ATTRIBUTE_NAMES[84] = ATTR_TARGETX; + ATTRIBUTE_NAMES[85] = ATTR_METHOD; + ATTRIBUTE_NAMES[86] = ATTR_ALTIMG; + ATTRIBUTE_NAMES[87] = ATTR_DEFINITIONURL; + ATTRIBUTE_NAMES[88] = ATTR_ONFILTERCHANGE; + ATTRIBUTE_NAMES[89] = ATTR_STRIKETHROUGH_POSITION; + ATTRIBUTE_NAMES[90] = ATTR_MARKER_MID; + ATTRIBUTE_NAMES[91] = ATTR_MASKCONTENTUNITS; + ATTRIBUTE_NAMES[92] = ATTR_MAXLENGTH; + ATTRIBUTE_NAMES[93] = ATTR_TITLE; + ATTRIBUTE_NAMES[94] = ATTR_FORM; + ATTRIBUTE_NAMES[95] = ATTR_USEMAP; + ATTRIBUTE_NAMES[96] = ATTR_KERNELUNITLENGTH; + ATTRIBUTE_NAMES[97] = ATTR_POINTSATX; + ATTRIBUTE_NAMES[98] = ATTR_WHEN; + ATTRIBUTE_NAMES[99] = ATTR_XLINK_SHOW; + ATTRIBUTE_NAMES[100] = ATTR_COLOR_RENDERING; + ATTRIBUTE_NAMES[101] = ATTR_IDEOGRAPHIC; + ATTRIBUTE_NAMES[102] = ATTR_ONMOUSEWHEEL; + ATTRIBUTE_NAMES[103] = ATTR_ONCONTEXTMENU; + ATTRIBUTE_NAMES[104] = ATTR_ONMOUSEMOVE; + ATTRIBUTE_NAMES[105] = ATTR_RQUOTE; + ATTRIBUTE_NAMES[106] = ATTR_SCROLLING; + ATTRIBUTE_NAMES[107] = ATTR_DISPLAY; + ATTRIBUTE_NAMES[108] = ATTR_LOOP; + ATTRIBUTE_NAMES[109] = ATTR_STOP_COLOR; + ATTRIBUTE_NAMES[110] = ATTR_COORDS; + ATTRIBUTE_NAMES[111] = ATTR_ONDRAGOVER; + ATTRIBUTE_NAMES[112] = ATTR_OVERFLOW; + ATTRIBUTE_NAMES[113] = ATTR_BIAS; + ATTRIBUTE_NAMES[114] = ATTR_CLASS; + ATTRIBUTE_NAMES[115] = ATTR_PRESERVEALPHA; + ATTRIBUTE_NAMES[116] = ATTR_ALTTEXT; + ATTRIBUTE_NAMES[117] = ATTR_FILTER; + ATTRIBUTE_NAMES[118] = ATTR_FONT_SIZE_ADJUST; + ATTRIBUTE_NAMES[119] = ATTR_RT; + ATTRIBUTE_NAMES[120] = ATTR_RESTART; + ATTRIBUTE_NAMES[121] = ATTR_TEXT_ANCHOR; + ATTRIBUTE_NAMES[122] = ATTR_COLUMNSPAN; + ATTRIBUTE_NAMES[123] = ATTR_ONSUBMIT; + ATTRIBUTE_NAMES[124] = ATTR_VALUE; + ATTRIBUTE_NAMES[125] = ATTR_RX; + ATTRIBUTE_NAMES[126] = ATTR_VERYTHINMATHSPACE; + ATTRIBUTE_NAMES[127] = ATTR_END; + ATTRIBUTE_NAMES[128] = ATTR_SRC; + ATTRIBUTE_NAMES[129] = ATTR_G1; + ATTRIBUTE_NAMES[130] = ATTR_X2; + ATTRIBUTE_NAMES[131] = ATTR_ARIA_VALUEMAX; + ATTRIBUTE_NAMES[132] = ATTR_ARIA_EXPANDED; + ATTRIBUTE_NAMES[133] = ATTR_ARIA_INVALID; + ATTRIBUTE_NAMES[134] = ATTR_ARIA_ACTIVEDESCENDANT; + ATTRIBUTE_NAMES[135] = ATTR_ARIA_LIVE; + ATTRIBUTE_NAMES[136] = ATTR_DATASRC; + ATTRIBUTE_NAMES[137] = ATTR_MOVABLELIMITS; + ATTRIBUTE_NAMES[138] = ATTR_ROTATE; + ATTRIBUTE_NAMES[139] = ATTR_ARABIC_FORM; + ATTRIBUTE_NAMES[140] = ATTR_ONSCROLL; + ATTRIBUTE_NAMES[141] = ATTR_UNICODE; + ATTRIBUTE_NAMES[142] = ATTR_HEADERS; + ATTRIBUTE_NAMES[143] = ATTR_WORD_SPACING; + ATTRIBUTE_NAMES[144] = ATTR_BEVELLED; + ATTRIBUTE_NAMES[145] = ATTR_CODETYPE; + ATTRIBUTE_NAMES[146] = ATTR_DATETIME; + ATTRIBUTE_NAMES[147] = ATTR_FACE; + ATTRIBUTE_NAMES[148] = ATTR_INTERCEPT; + ATTRIBUTE_NAMES[149] = ATTR_LINETHICKNESS; + ATTRIBUTE_NAMES[150] = ATTR_ONBEFOREUNLOAD; + ATTRIBUTE_NAMES[151] = ATTR_ORDER; + ATTRIBUTE_NAMES[152] = ATTR_ONREADYSTATECHANGE; + ATTRIBUTE_NAMES[153] = ATTR_ONBEFOREPRINT; + ATTRIBUTE_NAMES[154] = ATTR_ONSELECTSTART; + ATTRIBUTE_NAMES[155] = ATTR_ONBEFOREACTIVATE; + ATTRIBUTE_NAMES[156] = ATTR_ONBEFOREEDITFOCUS; + ATTRIBUTE_NAMES[157] = ATTR_REPEAT; + ATTRIBUTE_NAMES[158] = ATTR_REPEAT_MIN; + ATTRIBUTE_NAMES[159] = ATTR_REPEAT_TEMPLATE; + ATTRIBUTE_NAMES[160] = ATTR_SIZES; + ATTRIBUTE_NAMES[161] = ATTR_SPREADMETHOD; + ATTRIBUTE_NAMES[162] = ATTR_UNSELECTABLE; + ATTRIBUTE_NAMES[163] = ATTR_DIFFUSECONSTANT; + ATTRIBUTE_NAMES[164] = ATTR_ONAFTERUPDATE; + ATTRIBUTE_NAMES[165] = ATTR_ALIGN; + ATTRIBUTE_NAMES[166] = ATTR_HEIGHT; + ATTRIBUTE_NAMES[167] = ATTR_LANG; + ATTRIBUTE_NAMES[168] = ATTR_MARGINHEIGHT; + ATTRIBUTE_NAMES[169] = ATTR_PING; + ATTRIBUTE_NAMES[170] = ATTR_ALPHABETIC; + ATTRIBUTE_NAMES[171] = ATTR_MATHEMATICAL; + ATTRIBUTE_NAMES[172] = ATTR_MATHCOLOR; + ATTRIBUTE_NAMES[173] = ATTR_PATHLENGTH; + ATTRIBUTE_NAMES[174] = ATTR_ACTION; + ATTRIBUTE_NAMES[175] = ATTR_DOMINANT_BASELINE; + ATTRIBUTE_NAMES[176] = ATTR_HORIZ_ORIGIN_X; + ATTRIBUTE_NAMES[177] = ATTR_MEDIA; + ATTRIBUTE_NAMES[178] = ATTR_OPTIMUM; + ATTRIBUTE_NAMES[179] = ATTR_SCRIPTSIZEMULTIPLIER; + ATTRIBUTE_NAMES[180] = ATTR_SCRIPTMINSIZE; + ATTRIBUTE_NAMES[181] = ATTR_BACKGROUND; + ATTRIBUTE_NAMES[182] = ATTR_MARKER_END; + ATTRIBUTE_NAMES[183] = ATTR_MASKUNITS; + ATTRIBUTE_NAMES[184] = ATTR_CELLSPACING; + ATTRIBUTE_NAMES[185] = ATTR_FILL; + ATTRIBUTE_NAMES[186] = ATTR_ONBLUR; + ATTRIBUTE_NAMES[187] = ATTR_STYLE; + ATTRIBUTE_NAMES[188] = ATTR_AZIMUTH; + ATTRIBUTE_NAMES[189] = ATTR_FRAMESPACING; + ATTRIBUTE_NAMES[190] = ATTR_PRIMITIVEUNITS; + ATTRIBUTE_NAMES[191] = ATTR_SEAMLESS; + ATTRIBUTE_NAMES[192] = ATTR_ASYNC; + ATTRIBUTE_NAMES[193] = ATTR_KERNELMATRIX; + ATTRIBUTE_NAMES[194] = ATTR_OPEN; + ATTRIBUTE_NAMES[195] = ATTR_POINTER_EVENTS; + ATTRIBUTE_NAMES[196] = ATTR_POINTSATZ; + ATTRIBUTE_NAMES[197] = ATTR_TRANSFORM; + ATTRIBUTE_NAMES[198] = ATTR_XLINK_TITLE; + ATTRIBUTE_NAMES[199] = ATTR_XMLNS; + ATTRIBUTE_NAMES[200] = ATTR_AUTOPLAY; + ATTRIBUTE_NAMES[201] = ATTR_BGCOLOR; + ATTRIBUTE_NAMES[202] = ATTR_COLOR; + ATTRIBUTE_NAMES[203] = ATTR_FLOOD_COLOR; + ATTRIBUTE_NAMES[204] = ATTR_PANOSE_1; + ATTRIBUTE_NAMES[205] = ATTR_ONCONTROLSELECT; + ATTRIBUTE_NAMES[206] = ATTR_ONMOUSEENTER; + ATTRIBUTE_NAMES[207] = ATTR_ONROWEXIT; + ATTRIBUTE_NAMES[208] = ATTR_ONLOSECAPTURE; + ATTRIBUTE_NAMES[209] = ATTR_ONMOUSELEAVE; + ATTRIBUTE_NAMES[210] = ATTR_ONFOCUS; + ATTRIBUTE_NAMES[211] = ATTR_ONMOUSEDOWN; + ATTRIBUTE_NAMES[212] = ATTR_SCROLLDELAY; + ATTRIBUTE_NAMES[213] = ATTR_STROKE_MITERLIMIT; + ATTRIBUTE_NAMES[214] = ATTR_STROKE_OPACITY; + ATTRIBUTE_NAMES[215] = ATTR_CLIP_PATH; + ATTRIBUTE_NAMES[216] = ATTR_GLYPH_ORIENTATION_VERTICAL; + ATTRIBUTE_NAMES[217] = ATTR_HTTP_EQUIV; + ATTRIBUTE_NAMES[218] = ATTR_SCOPED; + ATTRIBUTE_NAMES[219] = ATTR_SHAPE; + ATTRIBUTE_NAMES[220] = ATTR_TEMPLATE; + ATTRIBUTE_NAMES[221] = ATTR_ATTRIBUTETYPE; + ATTRIBUTE_NAMES[222] = ATTR_CHARSET; + ATTRIBUTE_NAMES[223] = ATTR_ONDRAG; + ATTRIBUTE_NAMES[224] = ATTR_ONDRAGEND; + ATTRIBUTE_NAMES[225] = ATTR_ONERROR; + ATTRIBUTE_NAMES[226] = ATTR_ONERRORUPDATE; + ATTRIBUTE_NAMES[227] = ATTR_START; + ATTRIBUTE_NAMES[228] = ATTR_CLASSID; + ATTRIBUTE_NAMES[229] = ATTR_CLOSURE; + ATTRIBUTE_NAMES[230] = ATTR_KEYSYSTEM; + ATTRIBUTE_NAMES[231] = ATTR_MINSIZE; + ATTRIBUTE_NAMES[232] = ATTR_ROWSPAN; + ATTRIBUTE_NAMES[233] = ATTR_SUBSCRIPTSHIFT; + ATTRIBUTE_NAMES[234] = ATTR_CONTROLS; + ATTRIBUTE_NAMES[235] = ATTR_ENCTYPE; + ATTRIBUTE_NAMES[236] = ATTR_FONT_WEIGHT; + ATTRIBUTE_NAMES[237] = ATTR_FONT_FAMILY; + ATTRIBUTE_NAMES[238] = ATTR_FONTSIZE; + ATTRIBUTE_NAMES[239] = ATTR_LIST; + ATTRIBUTE_NAMES[240] = ATTR_ONSTART; + ATTRIBUTE_NAMES[241] = ATTR_PATTERNUNITS; + ATTRIBUTE_NAMES[242] = ATTR_SYSTEMLANGUAGE; + ATTRIBUTE_NAMES[243] = ATTR_VERT_ORIGIN_Y; + ATTRIBUTE_NAMES[244] = ATTR_TEXT; + ATTRIBUTE_NAMES[245] = ATTR_WIDTH; + ATTRIBUTE_NAMES[246] = ATTR_COLUMNALIGN; + ATTRIBUTE_NAMES[247] = ATTR_INPUTMODE; + ATTRIBUTE_NAMES[248] = ATTR_REQUIRED; + ATTRIBUTE_NAMES[249] = ATTR_VALUES; + ATTRIBUTE_NAMES[250] = ATTR_VIEWTARGET; + ATTRIBUTE_NAMES[251] = ATTR_FX; + ATTRIBUTE_NAMES[252] = ATTR_BY; + ATTRIBUTE_NAMES[253] = ATTR_RY; + ATTRIBUTE_NAMES[254] = ATTR_VERYVERYTHINMATHSPACE; + ATTRIBUTE_NAMES[255] = ATTR_DIR; + ATTRIBUTE_NAMES[256] = ATTR_IN2; + ATTRIBUTE_NAMES[257] = ATTR_REL; + ATTRIBUTE_NAMES[258] = ATTR_K; + ATTRIBUTE_NAMES[259] = ATTR_Z; + ATTRIBUTE_NAMES[260] = ATTR_U1; + ATTRIBUTE_NAMES[261] = ATTR_K2; + ATTRIBUTE_NAMES[262] = ATTR_K3; + ATTRIBUTE_NAMES[263] = ATTR_XML_BASE; + ATTRIBUTE_NAMES[264] = ATTR_ARIA_DESCRIBEDBY; + ATTRIBUTE_NAMES[265] = ATTR_ARIA_DROPEFFECT; + ATTRIBUTE_NAMES[266] = ATTR_ARIA_LEVEL; + ATTRIBUTE_NAMES[267] = ATTR_ARIA_POSINSET; + ATTRIBUTE_NAMES[268] = ATTR_ARIA_VALUEMIN; + ATTRIBUTE_NAMES[269] = ATTR_ARIA_READONLY; + ATTRIBUTE_NAMES[270] = ATTR_ARIA_DATATYPE; + ATTRIBUTE_NAMES[271] = ATTR_ARIA_FLOWTO; + ATTRIBUTE_NAMES[272] = ATTR_ARIA_SETSIZE; + ATTRIBUTE_NAMES[273] = ATTR_DATAFLD; + ATTRIBUTE_NAMES[274] = ATTR_EQUALCOLUMNS; + ATTRIBUTE_NAMES[275] = ATTR_LOCAL; + ATTRIBUTE_NAMES[276] = ATTR_ONDATASETCHANGED; + ATTRIBUTE_NAMES[277] = ATTR_RSPACE; + ATTRIBUTE_NAMES[278] = ATTR_SEPARATORS; + ATTRIBUTE_NAMES[279] = ATTR_XCHANNELSELECTOR; + ATTRIBUTE_NAMES[280] = ATTR_ONDBLCLICK; + ATTRIBUTE_NAMES[281] = ATTR_DESCENT; + ATTRIBUTE_NAMES[282] = ATTR_OPACITY; + ATTRIBUTE_NAMES[283] = ATTR_SPECIFICATION; + ATTRIBUTE_NAMES[284] = ATTR_UNICODE_RANGE; + ATTRIBUTE_NAMES[285] = ATTR_GRADIENTUNITS; + ATTRIBUTE_NAMES[286] = ATTR_RENDERING_INTENT; + ATTRIBUTE_NAMES[287] = ATTR_SANDBOX; + ATTRIBUTE_NAMES[288] = ATTR_ACCEPT_CHARSET; + ATTRIBUTE_NAMES[289] = ATTR_ASCENT; + ATTRIBUTE_NAMES[290] = ATTR_BASELINE_SHIFT; + ATTRIBUTE_NAMES[291] = ATTR_CODE; + ATTRIBUTE_NAMES[292] = ATTR_CODEBASE; + ATTRIBUTE_NAMES[293] = ATTR_DEFER; + ATTRIBUTE_NAMES[294] = ATTR_DIRECTION; + ATTRIBUTE_NAMES[295] = ATTR_EDGE; + ATTRIBUTE_NAMES[296] = ATTR_HIDEFOCUS; + ATTRIBUTE_NAMES[297] = ATTR_IRRELEVANT; + ATTRIBUTE_NAMES[298] = ATTR_INTEGRITY; + ATTRIBUTE_NAMES[299] = ATTR_LABEL; + ATTRIBUTE_NAMES[300] = ATTR_MODE; + ATTRIBUTE_NAMES[301] = ATTR_NORESIZE; + ATTRIBUTE_NAMES[302] = ATTR_ONREPEAT; + ATTRIBUTE_NAMES[303] = ATTR_ONSELECT; + ATTRIBUTE_NAMES[304] = ATTR_OTHER; + ATTRIBUTE_NAMES[305] = ATTR_ONCELLCHANGE; + ATTRIBUTE_NAMES[306] = ATTR_ONMESSAGE; + ATTRIBUTE_NAMES[307] = ATTR_ONHELP; + ATTRIBUTE_NAMES[308] = ATTR_ORIENT; + ATTRIBUTE_NAMES[309] = ATTR_ONBEFORECOPY; + ATTRIBUTE_NAMES[310] = ATTR_ONBEFOREPASTE; + ATTRIBUTE_NAMES[311] = ATTR_ONDEACTIVATE; + ATTRIBUTE_NAMES[312] = ATTR_ONBEFORDEACTIVATE; + ATTRIBUTE_NAMES[313] = ATTR_ONKEYUP; + ATTRIBUTE_NAMES[314] = ATTR_ONBEFORECUT; + ATTRIBUTE_NAMES[315] = ATTR_ONRESIZE; + ATTRIBUTE_NAMES[316] = ATTR_REPEAT_MAX; + ATTRIBUTE_NAMES[317] = ATTR_RULES; + ATTRIBUTE_NAMES[318] = ATTR_ROLE; + ATTRIBUTE_NAMES[319] = ATTR_REPEAT_START; + ATTRIBUTE_NAMES[320] = ATTR_REPEATDUR; + ATTRIBUTE_NAMES[321] = ATTR_SPEED; + ATTRIBUTE_NAMES[322] = ATTR_SUPERSCRIPTSHIFT; + ATTRIBUTE_NAMES[323] = ATTR_SCHEME; ATTRIBUTE_NAMES[324] = ATTR_SELECTION; - ATTRIBUTE_NAMES[325] = ATTR_SEPARATOR; - ATTRIBUTE_NAMES[326] = ATTR_XML_SPACE; - ATTRIBUTE_NAMES[327] = ATTR_AUTOSUBMIT; - ATTRIBUTE_NAMES[328] = ATTR_ALPHABETIC; - ATTRIBUTE_NAMES[329] = ATTR_ACTIONTYPE; - ATTRIBUTE_NAMES[330] = ATTR_ACCUMULATE; - ATTRIBUTE_NAMES[331] = ATTR_ARIA_LEVEL; - ATTRIBUTE_NAMES[332] = ATTR_COLUMNSPAN; - ATTRIBUTE_NAMES[333] = ATTR_CAP_HEIGHT; - ATTRIBUTE_NAMES[334] = ATTR_BACKGROUND; - ATTRIBUTE_NAMES[335] = ATTR_GLYPH_NAME; - ATTRIBUTE_NAMES[336] = ATTR_GROUPALIGN; - ATTRIBUTE_NAMES[337] = ATTR_FONTFAMILY; - ATTRIBUTE_NAMES[338] = ATTR_FONTWEIGHT; - ATTRIBUTE_NAMES[339] = ATTR_FONT_STYLE; - ATTRIBUTE_NAMES[340] = ATTR_KEYSPLINES; - ATTRIBUTE_NAMES[341] = ATTR_HTTP_EQUIV; - ATTRIBUTE_NAMES[342] = ATTR_ONACTIVATE; - ATTRIBUTE_NAMES[343] = ATTR_OCCURRENCE; - ATTRIBUTE_NAMES[344] = ATTR_IRRELEVANT; - ATTRIBUTE_NAMES[345] = ATTR_ONDBLCLICK; - ATTRIBUTE_NAMES[346] = ATTR_ONDRAGDROP; - ATTRIBUTE_NAMES[347] = ATTR_ONKEYPRESS; - ATTRIBUTE_NAMES[348] = ATTR_ONROWENTER; - ATTRIBUTE_NAMES[349] = ATTR_ONDRAGOVER; - ATTRIBUTE_NAMES[350] = ATTR_ONFOCUSOUT; - ATTRIBUTE_NAMES[351] = ATTR_ONMOUSEOUT; - ATTRIBUTE_NAMES[352] = ATTR_NUMOCTAVES; - ATTRIBUTE_NAMES[353] = ATTR_MARKER_MID; - ATTRIBUTE_NAMES[354] = ATTR_MARKER_END; - ATTRIBUTE_NAMES[355] = ATTR_TEXTLENGTH; - ATTRIBUTE_NAMES[356] = ATTR_VISIBILITY; - ATTRIBUTE_NAMES[357] = ATTR_VIEWTARGET; - ATTRIBUTE_NAMES[358] = ATTR_VERT_ADV_Y; - ATTRIBUTE_NAMES[359] = ATTR_PATHLENGTH; - ATTRIBUTE_NAMES[360] = ATTR_REPEAT_MAX; - ATTRIBUTE_NAMES[361] = ATTR_RADIOGROUP; - ATTRIBUTE_NAMES[362] = ATTR_STOP_COLOR; - ATTRIBUTE_NAMES[363] = ATTR_SEPARATORS; - ATTRIBUTE_NAMES[364] = ATTR_REPEAT_MIN; - ATTRIBUTE_NAMES[365] = ATTR_ROWSPACING; - ATTRIBUTE_NAMES[366] = ATTR_ZOOMANDPAN; - ATTRIBUTE_NAMES[367] = ATTR_XLINK_TYPE; - ATTRIBUTE_NAMES[368] = ATTR_XLINK_ROLE; - ATTRIBUTE_NAMES[369] = ATTR_XLINK_HREF; - ATTRIBUTE_NAMES[370] = ATTR_XLINK_SHOW; - ATTRIBUTE_NAMES[371] = ATTR_ACCENTUNDER; - ATTRIBUTE_NAMES[372] = ATTR_ARIA_SECRET; - ATTRIBUTE_NAMES[373] = ATTR_ARIA_ATOMIC; - ATTRIBUTE_NAMES[374] = ATTR_ARIA_HIDDEN; - ATTRIBUTE_NAMES[375] = ATTR_ARIA_FLOWTO; - ATTRIBUTE_NAMES[376] = ATTR_ARABIC_FORM; - ATTRIBUTE_NAMES[377] = ATTR_CELLPADDING; - ATTRIBUTE_NAMES[378] = ATTR_CELLSPACING; - ATTRIBUTE_NAMES[379] = ATTR_COLUMNWIDTH; - ATTRIBUTE_NAMES[380] = ATTR_CROSSORIGIN; - ATTRIBUTE_NAMES[381] = ATTR_COLUMNALIGN; - ATTRIBUTE_NAMES[382] = ATTR_COLUMNLINES; - ATTRIBUTE_NAMES[383] = ATTR_CONTEXTMENU; - ATTRIBUTE_NAMES[384] = ATTR_BASEPROFILE; - ATTRIBUTE_NAMES[385] = ATTR_FONT_FAMILY; - ATTRIBUTE_NAMES[386] = ATTR_FRAMEBORDER; - ATTRIBUTE_NAMES[387] = ATTR_FILTERUNITS; - ATTRIBUTE_NAMES[388] = ATTR_FLOOD_COLOR; - ATTRIBUTE_NAMES[389] = ATTR_FONT_WEIGHT; - ATTRIBUTE_NAMES[390] = ATTR_HORIZ_ADV_X; - ATTRIBUTE_NAMES[391] = ATTR_ONDRAGLEAVE; - ATTRIBUTE_NAMES[392] = ATTR_ONMOUSEMOVE; - ATTRIBUTE_NAMES[393] = ATTR_ORIENTATION; - ATTRIBUTE_NAMES[394] = ATTR_ONMOUSEDOWN; - ATTRIBUTE_NAMES[395] = ATTR_ONMOUSEOVER; - ATTRIBUTE_NAMES[396] = ATTR_ONDRAGENTER; - ATTRIBUTE_NAMES[397] = ATTR_IDEOGRAPHIC; - ATTRIBUTE_NAMES[398] = ATTR_ONBEFORECUT; - ATTRIBUTE_NAMES[399] = ATTR_ONFORMINPUT; - ATTRIBUTE_NAMES[400] = ATTR_ONDRAGSTART; - ATTRIBUTE_NAMES[401] = ATTR_ONMOVESTART; - ATTRIBUTE_NAMES[402] = ATTR_MARKERUNITS; - ATTRIBUTE_NAMES[403] = ATTR_MATHVARIANT; - ATTRIBUTE_NAMES[404] = ATTR_MARGINWIDTH; - ATTRIBUTE_NAMES[405] = ATTR_MARKERWIDTH; - ATTRIBUTE_NAMES[406] = ATTR_TEXT_ANCHOR; - ATTRIBUTE_NAMES[407] = ATTR_TABLEVALUES; - ATTRIBUTE_NAMES[408] = ATTR_SCRIPTLEVEL; - ATTRIBUTE_NAMES[409] = ATTR_REPEATCOUNT; - ATTRIBUTE_NAMES[410] = ATTR_STITCHTILES; - ATTRIBUTE_NAMES[411] = ATTR_STARTOFFSET; - ATTRIBUTE_NAMES[412] = ATTR_SCROLLDELAY; - ATTRIBUTE_NAMES[413] = ATTR_XMLNS_XLINK; - ATTRIBUTE_NAMES[414] = ATTR_XLINK_TITLE; - ATTRIBUTE_NAMES[415] = ATTR_ARIA_INVALID; - ATTRIBUTE_NAMES[416] = ATTR_ARIA_PRESSED; - ATTRIBUTE_NAMES[417] = ATTR_ARIA_CHECKED; - ATTRIBUTE_NAMES[418] = ATTR_AUTOCOMPLETE; - ATTRIBUTE_NAMES[419] = ATTR_ARIA_SETSIZE; - ATTRIBUTE_NAMES[420] = ATTR_ARIA_CHANNEL; - ATTRIBUTE_NAMES[421] = ATTR_EQUALCOLUMNS; - ATTRIBUTE_NAMES[422] = ATTR_DISPLAYSTYLE; - ATTRIBUTE_NAMES[423] = ATTR_DATAFORMATAS; - ATTRIBUTE_NAMES[424] = ATTR_FILL_OPACITY; - ATTRIBUTE_NAMES[425] = ATTR_FONT_VARIANT; - ATTRIBUTE_NAMES[426] = ATTR_FONT_STRETCH; - ATTRIBUTE_NAMES[427] = ATTR_FRAMESPACING; - ATTRIBUTE_NAMES[428] = ATTR_KERNELMATRIX; - ATTRIBUTE_NAMES[429] = ATTR_ONDEACTIVATE; - ATTRIBUTE_NAMES[430] = ATTR_ONROWSDELETE; - ATTRIBUTE_NAMES[431] = ATTR_ONMOUSELEAVE; - ATTRIBUTE_NAMES[432] = ATTR_ONFORMCHANGE; - ATTRIBUTE_NAMES[433] = ATTR_ONCELLCHANGE; - ATTRIBUTE_NAMES[434] = ATTR_ONMOUSEWHEEL; - ATTRIBUTE_NAMES[435] = ATTR_ONMOUSEENTER; - ATTRIBUTE_NAMES[436] = ATTR_ONAFTERPRINT; - ATTRIBUTE_NAMES[437] = ATTR_ONBEFORECOPY; - ATTRIBUTE_NAMES[438] = ATTR_MARGINHEIGHT; - ATTRIBUTE_NAMES[439] = ATTR_MARKERHEIGHT; - ATTRIBUTE_NAMES[440] = ATTR_MARKER_START; - ATTRIBUTE_NAMES[441] = ATTR_MATHEMATICAL; - ATTRIBUTE_NAMES[442] = ATTR_LENGTHADJUST; - ATTRIBUTE_NAMES[443] = ATTR_UNSELECTABLE; - ATTRIBUTE_NAMES[444] = ATTR_UNICODE_BIDI; - ATTRIBUTE_NAMES[445] = ATTR_UNITS_PER_EM; - ATTRIBUTE_NAMES[446] = ATTR_WORD_SPACING; - ATTRIBUTE_NAMES[447] = ATTR_WRITING_MODE; - ATTRIBUTE_NAMES[448] = ATTR_V_ALPHABETIC; - ATTRIBUTE_NAMES[449] = ATTR_PATTERNUNITS; - ATTRIBUTE_NAMES[450] = ATTR_SPREADMETHOD; - ATTRIBUTE_NAMES[451] = ATTR_SURFACESCALE; - ATTRIBUTE_NAMES[452] = ATTR_STROKE_WIDTH; - ATTRIBUTE_NAMES[453] = ATTR_REPEAT_START; - ATTRIBUTE_NAMES[454] = ATTR_STDDEVIATION; - ATTRIBUTE_NAMES[455] = ATTR_STOP_OPACITY; - ATTRIBUTE_NAMES[456] = ATTR_ARIA_CONTROLS; - ATTRIBUTE_NAMES[457] = ATTR_ARIA_HASPOPUP; - ATTRIBUTE_NAMES[458] = ATTR_ACCENT_HEIGHT; - ATTRIBUTE_NAMES[459] = ATTR_ARIA_VALUENOW; - ATTRIBUTE_NAMES[460] = ATTR_ARIA_RELEVANT; - ATTRIBUTE_NAMES[461] = ATTR_ARIA_POSINSET; - ATTRIBUTE_NAMES[462] = ATTR_ARIA_VALUEMAX; - ATTRIBUTE_NAMES[463] = ATTR_ARIA_READONLY; - ATTRIBUTE_NAMES[464] = ATTR_ARIA_SELECTED; - ATTRIBUTE_NAMES[465] = ATTR_ARIA_REQUIRED; - ATTRIBUTE_NAMES[466] = ATTR_ARIA_EXPANDED; - ATTRIBUTE_NAMES[467] = ATTR_ARIA_DISABLED; - ATTRIBUTE_NAMES[468] = ATTR_ATTRIBUTETYPE; - ATTRIBUTE_NAMES[469] = ATTR_ATTRIBUTENAME; - ATTRIBUTE_NAMES[470] = ATTR_ARIA_DATATYPE; - ATTRIBUTE_NAMES[471] = ATTR_ARIA_VALUEMIN; - ATTRIBUTE_NAMES[472] = ATTR_BASEFREQUENCY; - ATTRIBUTE_NAMES[473] = ATTR_COLUMNSPACING; - ATTRIBUTE_NAMES[474] = ATTR_COLOR_PROFILE; - ATTRIBUTE_NAMES[475] = ATTR_CLIPPATHUNITS; - ATTRIBUTE_NAMES[476] = ATTR_DEFINITIONURL; - ATTRIBUTE_NAMES[477] = ATTR_GRADIENTUNITS; - ATTRIBUTE_NAMES[478] = ATTR_FLOOD_OPACITY; - ATTRIBUTE_NAMES[479] = ATTR_ONAFTERUPDATE; - ATTRIBUTE_NAMES[480] = ATTR_ONERRORUPDATE; - ATTRIBUTE_NAMES[481] = ATTR_ONBEFOREPASTE; - ATTRIBUTE_NAMES[482] = ATTR_ONLOSECAPTURE; - ATTRIBUTE_NAMES[483] = ATTR_ONCONTEXTMENU; - ATTRIBUTE_NAMES[484] = ATTR_ONSELECTSTART; - ATTRIBUTE_NAMES[485] = ATTR_ONBEFOREPRINT; - ATTRIBUTE_NAMES[486] = ATTR_MOVABLELIMITS; - ATTRIBUTE_NAMES[487] = ATTR_LINETHICKNESS; - ATTRIBUTE_NAMES[488] = ATTR_UNICODE_RANGE; - ATTRIBUTE_NAMES[489] = ATTR_THINMATHSPACE; - ATTRIBUTE_NAMES[490] = ATTR_VERT_ORIGIN_X; - ATTRIBUTE_NAMES[491] = ATTR_VERT_ORIGIN_Y; - ATTRIBUTE_NAMES[492] = ATTR_V_IDEOGRAPHIC; - ATTRIBUTE_NAMES[493] = ATTR_PRESERVEALPHA; - ATTRIBUTE_NAMES[494] = ATTR_SCRIPTMINSIZE; - ATTRIBUTE_NAMES[495] = ATTR_SPECIFICATION; - ATTRIBUTE_NAMES[496] = ATTR_XLINK_ACTUATE; - ATTRIBUTE_NAMES[497] = ATTR_XLINK_ARCROLE; - ATTRIBUTE_NAMES[498] = ATTR_ACCEPT_CHARSET; - ATTRIBUTE_NAMES[499] = ATTR_ALIGNMENTSCOPE; - ATTRIBUTE_NAMES[500] = ATTR_ARIA_MULTILINE; - ATTRIBUTE_NAMES[501] = ATTR_BASELINE_SHIFT; - ATTRIBUTE_NAMES[502] = ATTR_HORIZ_ORIGIN_X; - ATTRIBUTE_NAMES[503] = ATTR_HORIZ_ORIGIN_Y; - ATTRIBUTE_NAMES[504] = ATTR_ONBEFOREUPDATE; - ATTRIBUTE_NAMES[505] = ATTR_ONFILTERCHANGE; - ATTRIBUTE_NAMES[506] = ATTR_ONROWSINSERTED; - ATTRIBUTE_NAMES[507] = ATTR_ONBEFOREUNLOAD; - ATTRIBUTE_NAMES[508] = ATTR_MATHBACKGROUND; - ATTRIBUTE_NAMES[509] = ATTR_LETTER_SPACING; - ATTRIBUTE_NAMES[510] = ATTR_LIGHTING_COLOR; - ATTRIBUTE_NAMES[511] = ATTR_THICKMATHSPACE; - ATTRIBUTE_NAMES[512] = ATTR_TEXT_RENDERING; - ATTRIBUTE_NAMES[513] = ATTR_V_MATHEMATICAL; - ATTRIBUTE_NAMES[514] = ATTR_POINTER_EVENTS; - ATTRIBUTE_NAMES[515] = ATTR_PRIMITIVEUNITS; - ATTRIBUTE_NAMES[516] = ATTR_REFERRERPOLICY; - ATTRIBUTE_NAMES[517] = ATTR_SYSTEMLANGUAGE; - ATTRIBUTE_NAMES[518] = ATTR_STROKE_LINECAP; - ATTRIBUTE_NAMES[519] = ATTR_SUBSCRIPTSHIFT; - ATTRIBUTE_NAMES[520] = ATTR_STROKE_OPACITY; - ATTRIBUTE_NAMES[521] = ATTR_ARIA_DROPEFFECT; - ATTRIBUTE_NAMES[522] = ATTR_ARIA_LABELLEDBY; - ATTRIBUTE_NAMES[523] = ATTR_ARIA_TEMPLATEID; - ATTRIBUTE_NAMES[524] = ATTR_COLOR_RENDERING; - ATTRIBUTE_NAMES[525] = ATTR_CONTENTEDITABLE; - ATTRIBUTE_NAMES[526] = ATTR_DIFFUSECONSTANT; - ATTRIBUTE_NAMES[527] = ATTR_ONDATAAVAILABLE; - ATTRIBUTE_NAMES[528] = ATTR_ONCONTROLSELECT; - ATTRIBUTE_NAMES[529] = ATTR_IMAGE_RENDERING; - ATTRIBUTE_NAMES[530] = ATTR_MEDIUMMATHSPACE; - ATTRIBUTE_NAMES[531] = ATTR_TEXT_DECORATION; - ATTRIBUTE_NAMES[532] = ATTR_SHAPE_RENDERING; - ATTRIBUTE_NAMES[533] = ATTR_STROKE_LINEJOIN; - ATTRIBUTE_NAMES[534] = ATTR_REPEAT_TEMPLATE; - ATTRIBUTE_NAMES[535] = ATTR_ARIA_DESCRIBEDBY; - ATTRIBUTE_NAMES[536] = ATTR_FONT_SIZE_ADJUST; - ATTRIBUTE_NAMES[537] = ATTR_KERNELUNITLENGTH; - ATTRIBUTE_NAMES[538] = ATTR_ONBEFOREACTIVATE; - ATTRIBUTE_NAMES[539] = ATTR_ONPROPERTYCHANGE; - ATTRIBUTE_NAMES[540] = ATTR_ONDATASETCHANGED; - ATTRIBUTE_NAMES[541] = ATTR_MASKCONTENTUNITS; - ATTRIBUTE_NAMES[542] = ATTR_PATTERNTRANSFORM; - ATTRIBUTE_NAMES[543] = ATTR_REQUIREDFEATURES; - ATTRIBUTE_NAMES[544] = ATTR_RENDERING_INTENT; - ATTRIBUTE_NAMES[545] = ATTR_SPECULAREXPONENT; - ATTRIBUTE_NAMES[546] = ATTR_SPECULARCONSTANT; - ATTRIBUTE_NAMES[547] = ATTR_SUPERSCRIPTSHIFT; - ATTRIBUTE_NAMES[548] = ATTR_STROKE_DASHARRAY; - ATTRIBUTE_NAMES[549] = ATTR_XCHANNELSELECTOR; - ATTRIBUTE_NAMES[550] = ATTR_YCHANNELSELECTOR; - ATTRIBUTE_NAMES[551] = ATTR_ARIA_AUTOCOMPLETE; - ATTRIBUTE_NAMES[552] = ATTR_ENABLE_BACKGROUND; - ATTRIBUTE_NAMES[553] = ATTR_DOMINANT_BASELINE; - ATTRIBUTE_NAMES[554] = ATTR_GRADIENTTRANSFORM; - ATTRIBUTE_NAMES[555] = ATTR_ONBEFORDEACTIVATE; - ATTRIBUTE_NAMES[556] = ATTR_ONDATASETCOMPLETE; - ATTRIBUTE_NAMES[557] = ATTR_OVERLINE_POSITION; - ATTRIBUTE_NAMES[558] = ATTR_ONBEFOREEDITFOCUS; - ATTRIBUTE_NAMES[559] = ATTR_LIMITINGCONEANGLE; - ATTRIBUTE_NAMES[560] = ATTR_VERYTHINMATHSPACE; - ATTRIBUTE_NAMES[561] = ATTR_STROKE_DASHOFFSET; - ATTRIBUTE_NAMES[562] = ATTR_STROKE_MITERLIMIT; - ATTRIBUTE_NAMES[563] = ATTR_ALIGNMENT_BASELINE; - ATTRIBUTE_NAMES[564] = ATTR_ONREADYSTATECHANGE; - ATTRIBUTE_NAMES[565] = ATTR_OVERLINE_THICKNESS; - ATTRIBUTE_NAMES[566] = ATTR_UNDERLINE_POSITION; - ATTRIBUTE_NAMES[567] = ATTR_VERYTHICKMATHSPACE; - ATTRIBUTE_NAMES[568] = ATTR_REQUIREDEXTENSIONS; - ATTRIBUTE_NAMES[569] = ATTR_COLOR_INTERPOLATION; - ATTRIBUTE_NAMES[570] = ATTR_UNDERLINE_THICKNESS; - ATTRIBUTE_NAMES[571] = ATTR_PRESERVEASPECTRATIO; - ATTRIBUTE_NAMES[572] = ATTR_PATTERNCONTENTUNITS; - ATTRIBUTE_NAMES[573] = ATTR_ARIA_MULTISELECTABLE; - ATTRIBUTE_NAMES[574] = ATTR_SCRIPTSIZEMULTIPLIER; - ATTRIBUTE_NAMES[575] = ATTR_ARIA_ACTIVEDESCENDANT; - ATTRIBUTE_NAMES[576] = ATTR_VERYVERYTHINMATHSPACE; - ATTRIBUTE_NAMES[577] = ATTR_VERYVERYTHICKMATHSPACE; - ATTRIBUTE_NAMES[578] = ATTR_STRIKETHROUGH_POSITION; - ATTRIBUTE_NAMES[579] = ATTR_STRIKETHROUGH_THICKNESS; - ATTRIBUTE_NAMES[580] = ATTR_GLYPH_ORIENTATION_VERTICAL; - ATTRIBUTE_NAMES[581] = ATTR_COLOR_INTERPOLATION_FILTERS; - ATTRIBUTE_NAMES[582] = ATTR_GLYPH_ORIENTATION_HORIZONTAL; + ATTRIBUTE_NAMES[325] = ATTR_TYPE; + ATTRIBUTE_NAMES[326] = ATTR_UNDERLINE_POSITION; + ATTRIBUTE_NAMES[327] = ATTR_X_HEIGHT; + ATTRIBUTE_NAMES[328] = ATTR_HREF; + ATTRIBUTE_NAMES[329] = ATTR_ONAFTERPRINT; + ATTRIBUTE_NAMES[330] = ATTR_PROFILE; + ATTRIBUTE_NAMES[331] = ATTR_XREF; + ATTRIBUTE_NAMES[332] = ATTR_ALIGNMENT_BASELINE; + ATTRIBUTE_NAMES[333] = ATTR_DRAGGABLE; + ATTRIBUTE_NAMES[334] = ATTR_HANGING; + ATTRIBUTE_NAMES[335] = ATTR_LANGUAGE; + ATTRIBUTE_NAMES[336] = ATTR_LARGEOP; + ATTRIBUTE_NAMES[337] = ATTR_LENGTHADJUST; + ATTRIBUTE_NAMES[338] = ATTR_MARGINWIDTH; + ATTRIBUTE_NAMES[339] = ATTR_ORIGIN; + ATTRIBUTE_NAMES[340] = ATTR_TARGET; + ATTRIBUTE_NAMES[341] = ATTR_TARGETY; + ATTRIBUTE_NAMES[342] = ATTR_ARCHIVE; + ATTRIBUTE_NAMES[343] = ATTR_LIGHTING_COLOR; + ATTRIBUTE_NAMES[344] = ATTR_MATHBACKGROUND; + ATTRIBUTE_NAMES[345] = ATTR_MATHVARIANT; + ATTRIBUTE_NAMES[346] = ATTR_MATHSIZE; + ATTRIBUTE_NAMES[347] = ATTR_ONCHANGE; + ATTRIBUTE_NAMES[348] = ATTR_PATH; + ATTRIBUTE_NAMES[349] = ATTR_ACTIONTYPE; + ATTRIBUTE_NAMES[350] = ATTR_ACTIVE; + ATTRIBUTE_NAMES[351] = ATTR_BEGIN; + ATTRIBUTE_NAMES[352] = ATTR_DIVISOR; + ATTRIBUTE_NAMES[353] = ATTR_HORIZ_ADV_X; + ATTRIBUTE_NAMES[354] = ATTR_HORIZ_ORIGIN_Y; + ATTRIBUTE_NAMES[355] = ATTR_MEDIUMMATHSPACE; + ATTRIBUTE_NAMES[356] = ATTR_MANIFEST; + ATTRIBUTE_NAMES[357] = ATTR_ONFINISH; + ATTRIBUTE_NAMES[358] = ATTR_RADIOGROUP; + ATTRIBUTE_NAMES[359] = ATTR_SCRIPTLEVEL; + ATTRIBUTE_NAMES[360] = ATTR_STRING; + ATTRIBUTE_NAMES[361] = ATTR_STRIKETHROUGH_THICKNESS; + ATTRIBUTE_NAMES[362] = ATTR_TABINDEX; + ATTRIBUTE_NAMES[363] = ATTR_VISIBILITY; + ATTRIBUTE_NAMES[364] = ATTR_LINK; + ATTRIBUTE_NAMES[365] = ATTR_MARKERHEIGHT; + ATTRIBUTE_NAMES[366] = ATTR_MASK; + ATTRIBUTE_NAMES[367] = ATTR_MARKERWIDTH; + ATTRIBUTE_NAMES[368] = ATTR_MARKERUNITS; + ATTRIBUTE_NAMES[369] = ATTR_AMPLITUDE; + ATTRIBUTE_NAMES[370] = ATTR_CELLPADDING; + ATTRIBUTE_NAMES[371] = ATTR_FILL_RULE; + ATTRIBUTE_NAMES[372] = ATTR_FILL_OPACITY; + ATTRIBUTE_NAMES[373] = ATTR_ONCLICK; + ATTRIBUTE_NAMES[374] = ATTR_REPLACE; + ATTRIBUTE_NAMES[375] = ATTR_SCALE; + ATTRIBUTE_NAMES[376] = ATTR_TABLEVALUES; + ATTRIBUTE_NAMES[377] = ATTR_V_ALPHABETIC; + ATTRIBUTE_NAMES[378] = ATTR_FORMAT; + ATTRIBUTE_NAMES[379] = ATTR_FRAME; + ATTRIBUTE_NAMES[380] = ATTR_FROM; + ATTRIBUTE_NAMES[381] = ATTR_PROMPT; + ATTRIBUTE_NAMES[382] = ATTR_SYMMETRIC; + ATTRIBUTE_NAMES[383] = ATTR_STEMV; + ATTRIBUTE_NAMES[384] = ATTR_SUMMARY; + ATTRIBUTE_NAMES[385] = ATTR_ZOOMANDPAN; + ATTRIBUTE_NAMES[386] = ATTR_ALINK; + ATTRIBUTE_NAMES[387] = ATTR_ICON; + ATTRIBUTE_NAMES[388] = ATTR_KERNING; + ATTRIBUTE_NAMES[389] = ATTR_ONUNLOAD; + ATTRIBUTE_NAMES[390] = ATTR_ONINVALID; + ATTRIBUTE_NAMES[391] = ATTR_ONINPUT; + ATTRIBUTE_NAMES[392] = ATTR_POINTS; + ATTRIBUTE_NAMES[393] = ATTR_POINTSATY; + ATTRIBUTE_NAMES[394] = ATTR_SPAN; + ATTRIBUTE_NAMES[395] = ATTR_THINMATHSPACE; + ATTRIBUTE_NAMES[396] = ATTR_VLINK; + ATTRIBUTE_NAMES[397] = ATTR_XLINK_HREF; + ATTRIBUTE_NAMES[398] = ATTR_XLINK_ROLE; + ATTRIBUTE_NAMES[399] = ATTR_XMLNS_XLINK; + ATTRIBUTE_NAMES[400] = ATTR_XLINK_TYPE; + ATTRIBUTE_NAMES[401] = ATTR_XLINK_ACTUATE; + ATTRIBUTE_NAMES[402] = ATTR_AUTOSUBMIT; + ATTRIBUTE_NAMES[403] = ATTR_AUTOFOCUS; + ATTRIBUTE_NAMES[404] = ATTR_COLOR_PROFILE; + ATTRIBUTE_NAMES[405] = ATTR_COLOR_INTERPOLATION; + ATTRIBUTE_NAMES[406] = ATTR_COLOR_INTERPOLATION_FILTERS; + ATTRIBUTE_NAMES[407] = ATTR_EXPONENT; + ATTRIBUTE_NAMES[408] = ATTR_FLOOD_OPACITY; + ATTRIBUTE_NAMES[409] = ATTR_LQUOTE; + ATTRIBUTE_NAMES[410] = ATTR_NUMOCTAVES; + ATTRIBUTE_NAMES[411] = ATTR_ONBOUNCE; + ATTRIBUTE_NAMES[412] = ATTR_ONROWSINSERTED; + ATTRIBUTE_NAMES[413] = ATTR_ONROWENTER; + ATTRIBUTE_NAMES[414] = ATTR_ONMOUSEOVER; + ATTRIBUTE_NAMES[415] = ATTR_ONFOCUSIN; + ATTRIBUTE_NAMES[416] = ATTR_ONMOVEEND; + ATTRIBUTE_NAMES[417] = ATTR_ONZOOM; + ATTRIBUTE_NAMES[418] = ATTR_ONCOPY; + ATTRIBUTE_NAMES[419] = ATTR_ONROWSDELETE; + ATTRIBUTE_NAMES[420] = ATTR_ONMOVE; + ATTRIBUTE_NAMES[421] = ATTR_ONMOUSEUP; + ATTRIBUTE_NAMES[422] = ATTR_ONMOUSEOUT; + ATTRIBUTE_NAMES[423] = ATTR_ONFOCUSOUT; + ATTRIBUTE_NAMES[424] = ATTR_TO; + ATTRIBUTE_NAMES[425] = ATTR_STROKE_LINECAP; + ATTRIBUTE_NAMES[426] = ATTR_STROKE_DASHARRAY; + ATTRIBUTE_NAMES[427] = ATTR_STROKE_LINEJOIN; + ATTRIBUTE_NAMES[428] = ATTR_STROKE; + ATTRIBUTE_NAMES[429] = ATTR_STROKE_WIDTH; + ATTRIBUTE_NAMES[430] = ATTR_COMPACT; + ATTRIBUTE_NAMES[431] = ATTR_CLIP_RULE; + ATTRIBUTE_NAMES[432] = ATTR_CLIPPATHUNITS; + ATTRIBUTE_NAMES[433] = ATTR_DISPLAYSTYLE; + ATTRIBUTE_NAMES[434] = ATTR_GLYPH_ORIENTATION_HORIZONTAL; + ATTRIBUTE_NAMES[435] = ATTR_GLYPH_NAME; + ATTRIBUTE_NAMES[436] = ATTR_KEYPOINTS; + ATTRIBUTE_NAMES[437] = ATTR_PROPERTY; + ATTRIBUTE_NAMES[438] = ATTR_STEP; + ATTRIBUTE_NAMES[439] = ATTR_SCOPE; + ATTRIBUTE_NAMES[440] = ATTR_SLOPE; + ATTRIBUTE_NAMES[441] = ATTR_STOP_OPACITY; + ATTRIBUTE_NAMES[442] = ATTR_WRAP; + ATTRIBUTE_NAMES[443] = ATTR_ATTRIBUTENAME; + ATTRIBUTE_NAMES[444] = ATTR_CHAR; + ATTRIBUTE_NAMES[445] = ATTR_CHAROFF; + ATTRIBUTE_NAMES[446] = ATTR_MACROS; + ATTRIBUTE_NAMES[447] = ATTR_NOHREF; + ATTRIBUTE_NAMES[448] = ATTR_ONDRAGENTER; + ATTRIBUTE_NAMES[449] = ATTR_ONPROPERTYCHANGE; + ATTRIBUTE_NAMES[450] = ATTR_ONDROP; + ATTRIBUTE_NAMES[451] = ATTR_OVERLINE_POSITION; + ATTRIBUTE_NAMES[452] = ATTR_OPERATOR; + ATTRIBUTE_NAMES[453] = ATTR_ONDRAGSTART; + ATTRIBUTE_NAMES[454] = ATTR_OVERLINE_THICKNESS; + ATTRIBUTE_NAMES[455] = ATTR_STARTOFFSET; + ATTRIBUTE_NAMES[456] = ATTR_AXIS; + ATTRIBUTE_NAMES[457] = ATTR_COLSPAN; + ATTRIBUTE_NAMES[458] = ATTR_CROSSORIGIN; + ATTRIBUTE_NAMES[459] = ATTR_CURSOR; + ATTRIBUTE_NAMES[460] = ATTR_CLOSE; + ATTRIBUTE_NAMES[461] = ATTR_IS; + ATTRIBUTE_NAMES[462] = ATTR_KEYSPLINES; + ATTRIBUTE_NAMES[463] = ATTR_MAXSIZE; + ATTRIBUTE_NAMES[464] = ATTR_OFFSET; + ATTRIBUTE_NAMES[465] = ATTR_PRESERVEASPECTRATIO; + ATTRIBUTE_NAMES[466] = ATTR_ROWSPACING; + ATTRIBUTE_NAMES[467] = ATTR_SRCSET; + ATTRIBUTE_NAMES[468] = ATTR_VERSION; + ATTRIBUTE_NAMES[469] = ATTR_CONTENTEDITABLE; + ATTRIBUTE_NAMES[470] = ATTR_CONTENT; + ATTRIBUTE_NAMES[471] = ATTR_DEPTH; + ATTRIBUTE_NAMES[472] = ATTR_FONT_STRETCH; + ATTRIBUTE_NAMES[473] = ATTR_FONTWEIGHT; + ATTRIBUTE_NAMES[474] = ATTR_FONTSTYLE; + ATTRIBUTE_NAMES[475] = ATTR_FONTFAMILY; + ATTRIBUTE_NAMES[476] = ATTR_FONT_VARIANT; + ATTRIBUTE_NAMES[477] = ATTR_FILTERUNITS; + ATTRIBUTE_NAMES[478] = ATTR_FONT_SIZE; + ATTRIBUTE_NAMES[479] = ATTR_LETTER_SPACING; + ATTRIBUTE_NAMES[480] = ATTR_MULTIPLE; + ATTRIBUTE_NAMES[481] = ATTR_ONSTOP; + ATTRIBUTE_NAMES[482] = ATTR_POSTER; + ATTRIBUTE_NAMES[483] = ATTR_PATTERN; + ATTRIBUTE_NAMES[484] = ATTR_PATTERNCONTENTUNITS; + ATTRIBUTE_NAMES[485] = ATTR_STITCHTILES; + ATTRIBUTE_NAMES[486] = ATTR_TEXT_RENDERING; + ATTRIBUTE_NAMES[487] = ATTR_VERT_ADV_Y; + ATTRIBUTE_NAMES[488] = ATTR_TEXT_DECORATION; + ATTRIBUTE_NAMES[489] = ATTR_TEXTLENGTH; + ATTRIBUTE_NAMES[490] = ATTR_UNITS_PER_EM; + ATTRIBUTE_NAMES[491] = ATTR_WIDTHS; + ATTRIBUTE_NAMES[492] = ATTR_ACCUMULATE; + ATTRIBUTE_NAMES[493] = ATTR_COLUMNLINES; + ATTRIBUTE_NAMES[494] = ATTR_COLUMNSPACING; + ATTRIBUTE_NAMES[495] = ATTR_GROUPALIGN; + ATTRIBUTE_NAMES[496] = ATTR_OCCURRENCE; + ATTRIBUTE_NAMES[497] = ATTR_ONCUT; + ATTRIBUTE_NAMES[498] = ATTR_REQUIREDFEATURES; + ATTRIBUTE_NAMES[499] = ATTR_REQUIREDEXTENSIONS; + ATTRIBUTE_NAMES[500] = ATTR_VALUETYPE; + ATTRIBUTE_NAMES[501] = ATTR_ELEVATION; + ATTRIBUTE_NAMES[502] = ATTR_VIEWBOX; + ATTRIBUTE_NAMES[503] = ATTR_DX; + ATTRIBUTE_NAMES[504] = ATTR_BBOX; + ATTRIBUTE_NAMES[505] = ATTR_REFX; + ATTRIBUTE_NAMES[506] = ATTR_CY; + ATTRIBUTE_NAMES[507] = ATTR_FY; + ATTRIBUTE_NAMES[508] = ATTR_REFY; + ATTRIBUTE_NAMES[509] = ATTR_VERYTHICKMATHSPACE; + ATTRIBUTE_NAMES[510] = ATTR_VERYVERYTHICKMATHSPACE; + ATTRIBUTE_NAMES[511] = ATTR_ALT; + ATTRIBUTE_NAMES[512] = ATTR_DUR; + ATTRIBUTE_NAMES[513] = ATTR_FOR; + ATTRIBUTE_NAMES[514] = ATTR_LOW; + ATTRIBUTE_NAMES[515] = ATTR_MAX; + ATTRIBUTE_NAMES[516] = ATTR_REV; + ATTRIBUTE_NAMES[517] = ATTR_D; + ATTRIBUTE_NAMES[518] = ATTR_R; + ATTRIBUTE_NAMES[519] = ATTR_Y; + ATTRIBUTE_NAMES[520] = ATTR_CAP_HEIGHT; + ATTRIBUTE_NAMES[521] = ATTR_K1; + ATTRIBUTE_NAMES[522] = ATTR_X1; + ATTRIBUTE_NAMES[523] = ATTR_G2; + ATTRIBUTE_NAMES[524] = ATTR_U2; + ATTRIBUTE_NAMES[525] = ATTR_Y2; + ATTRIBUTE_NAMES[526] = ATTR_K4; + ATTRIBUTE_NAMES[527] = ATTR_XML_LANG; + ATTRIBUTE_NAMES[528] = ATTR_ARIA_GRAB; + ATTRIBUTE_NAMES[529] = ATTR_ARIA_LABELLEDBY; + ATTRIBUTE_NAMES[530] = ATTR_ARIA_DISABLED; + ATTRIBUTE_NAMES[531] = ATTR_ARIA_SELECTED; + ATTRIBUTE_NAMES[532] = ATTR_ARIA_REQUIRED; + ATTRIBUTE_NAMES[533] = ATTR_ARIA_PRESSED; + ATTRIBUTE_NAMES[534] = ATTR_ARIA_CHANNEL; + ATTRIBUTE_NAMES[535] = ATTR_ARIA_SECRET; + ATTRIBUTE_NAMES[536] = ATTR_ARIA_ATOMIC; + ATTRIBUTE_NAMES[537] = ATTR_ARIA_TEMPLATEID; + ATTRIBUTE_NAMES[538] = ATTR_ARIA_MULTISELECTABLE; + ATTRIBUTE_NAMES[539] = ATTR_ARIA_MULTILINE; + ATTRIBUTE_NAMES[540] = ATTR_ARIA_OWNS; + ATTRIBUTE_NAMES[541] = ATTR_ARIA_RELEVANT; + ATTRIBUTE_NAMES[542] = ATTR_ARIA_VALUENOW; + ATTRIBUTE_NAMES[543] = ATTR_ARIA_AUTOCOMPLETE; + ATTRIBUTE_NAMES[544] = ATTR_ARIA_BUSY; + ATTRIBUTE_NAMES[545] = ATTR_ARIA_HASPOPUP; + ATTRIBUTE_NAMES[546] = ATTR_CLEAR; + ATTRIBUTE_NAMES[547] = ATTR_DISABLED; + ATTRIBUTE_NAMES[548] = ATTR_DEFAULT; + ATTRIBUTE_NAMES[549] = ATTR_DATA; + ATTRIBUTE_NAMES[550] = ATTR_EQUALROWS; + ATTRIBUTE_NAMES[551] = ATTR_ISMAP; + ATTRIBUTE_NAMES[552] = ATTR_LSPACE; + ATTRIBUTE_NAMES[553] = ATTR_NOTATION; + ATTRIBUTE_NAMES[554] = ATTR_ONDATAAVAILABLE; + ATTRIBUTE_NAMES[555] = ATTR_ONDATASETCOMPLETE; + ATTRIBUTE_NAMES[556] = ATTR_ROWALIGN; + ATTRIBUTE_NAMES[557] = ATTR_SEPARATOR; + ATTRIBUTE_NAMES[558] = ATTR_V_MATHEMATICAL; + ATTRIBUTE_NAMES[559] = ATTR_V_HANGING; + ATTRIBUTE_NAMES[560] = ATTR_YCHANNELSELECTOR; + ATTRIBUTE_NAMES[561] = ATTR_ENABLE_BACKGROUND; + ATTRIBUTE_NAMES[562] = ATTR_ONABORT; + ATTRIBUTE_NAMES[563] = ATTR_CHECKED; + ATTRIBUTE_NAMES[564] = ATTR_FENCE; + ATTRIBUTE_NAMES[565] = ATTR_ONACTIVATE; + ATTRIBUTE_NAMES[566] = ATTR_SPACING; + ATTRIBUTE_NAMES[567] = ATTR_SPECULARCONSTANT; + ATTRIBUTE_NAMES[568] = ATTR_THICKMATHSPACE; + ATTRIBUTE_NAMES[569] = ATTR_UNICODE_BIDI; + ATTRIBUTE_NAMES[570] = ATTR_BORDER; + ATTRIBUTE_NAMES[571] = ATTR_GRADIENTTRANSFORM; + ATTRIBUTE_NAMES[572] = ATTR_HIDDEN; + ATTRIBUTE_NAMES[573] = ATTR_READONLY; + ATTRIBUTE_NAMES[574] = ATTR_SEED; + ATTRIBUTE_NAMES[575] = ATTR_STDDEVIATION; + ATTRIBUTE_NAMES[576] = ATTR_V_IDEOGRAPHIC; + ATTRIBUTE_NAMES[577] = ATTR_ACCENTUNDER; + ATTRIBUTE_NAMES[578] = ATTR_ACCESSKEY; + ATTRIBUTE_NAMES[579] = ATTR_ACCENT; + ATTRIBUTE_NAMES[580] = ATTR_ACCEPT; + ATTRIBUTE_NAMES[581] = ATTR_BASEFREQUENCY; + ATTRIBUTE_NAMES[582] = ATTR_BASEPROFILE; + ATTRIBUTE_NAMES[583] = ATTR_BASE; } void @@ -1998,589 +1966,590 @@ nsHtml5AttributeName::releaseStatics() delete[] XMLNS_PREFIX; delete[] XLINK_PREFIX; delete[] XML_PREFIX; + delete ATTR_ALT; + delete ATTR_DIR; + delete ATTR_DUR; + delete ATTR_END; + delete ATTR_FOR; + delete ATTR_IN2; + delete ATTR_LOW; + delete ATTR_MIN; + delete ATTR_MAX; + delete ATTR_REL; + delete ATTR_REV; + delete ATTR_SRC; delete ATTR_D; delete ATTR_K; delete ATTR_R; delete ATTR_X; delete ATTR_Y; delete ATTR_Z; - delete ATTR_BY; - delete ATTR_CX; - delete ATTR_CY; - delete ATTR_DX; - delete ATTR_DY; - delete ATTR_G2; + delete ATTR_CAP_HEIGHT; delete ATTR_G1; - delete ATTR_FX; - delete ATTR_FY; - delete ATTR_K4; - delete ATTR_K2; - delete ATTR_K3; delete ATTR_K1; - delete ATTR_ID; - delete ATTR_IN; - delete ATTR_U2; delete ATTR_U1; - delete ATTR_RT; - delete ATTR_RX; - delete ATTR_RY; - delete ATTR_TO; - delete ATTR_Y2; - delete ATTR_Y1; delete ATTR_X1; + delete ATTR_Y1; + delete ATTR_G2; + delete ATTR_K2; + delete ATTR_U2; delete ATTR_X2; - delete ATTR_ALT; - delete ATTR_DIR; - delete ATTR_DUR; - delete ATTR_END; - delete ATTR_FOR; - delete ATTR_IN2; - delete ATTR_MAX; - delete ATTR_MIN; - delete ATTR_LOW; - delete ATTR_REL; - delete ATTR_REV; - delete ATTR_SRC; - delete ATTR_AXIS; - delete ATTR_ABBR; - delete ATTR_BBOX; - delete ATTR_CITE; - delete ATTR_CODE; - delete ATTR_BIAS; - delete ATTR_COLS; - delete ATTR_CLIP; - delete ATTR_CHAR; - delete ATTR_BASE; - delete ATTR_EDGE; - delete ATTR_DATA; - delete ATTR_FILL; - delete ATTR_FROM; - delete ATTR_FORM; - delete ATTR_FACE; - delete ATTR_HIGH; - delete ATTR_HREF; - delete ATTR_OPEN; - delete ATTR_ICON; - delete ATTR_NAME; - delete ATTR_MODE; - delete ATTR_MASK; - delete ATTR_LINK; - delete ATTR_LANG; - delete ATTR_LOOP; - delete ATTR_LIST; - delete ATTR_TYPE; - delete ATTR_WHEN; - delete ATTR_WRAP; - delete ATTR_TEXT; - delete ATTR_PATH; - delete ATTR_PING; - delete ATTR_REFX; - delete ATTR_REFY; - delete ATTR_SIZE; - delete ATTR_SEED; - delete ATTR_ROWS; - delete ATTR_SPAN; - delete ATTR_STEP; - delete ATTR_ROLE; - delete ATTR_XREF; - delete ATTR_ASYNC; - delete ATTR_ALINK; - delete ATTR_ALIGN; - delete ATTR_CLOSE; - delete ATTR_COLOR; - delete ATTR_CLASS; + delete ATTR_Y2; + delete ATTR_K3; + delete ATTR_K4; + delete ATTR_XML_SPACE; + delete ATTR_XML_LANG; + delete ATTR_XML_BASE; + delete ATTR_ARIA_GRAB; + delete ATTR_ARIA_VALUEMAX; + delete ATTR_ARIA_LABELLEDBY; + delete ATTR_ARIA_DESCRIBEDBY; + delete ATTR_ARIA_DISABLED; + delete ATTR_ARIA_CHECKED; + delete ATTR_ARIA_SELECTED; + delete ATTR_ARIA_DROPEFFECT; + delete ATTR_ARIA_REQUIRED; + delete ATTR_ARIA_EXPANDED; + delete ATTR_ARIA_PRESSED; + delete ATTR_ARIA_LEVEL; + delete ATTR_ARIA_CHANNEL; + delete ATTR_ARIA_HIDDEN; + delete ATTR_ARIA_SECRET; + delete ATTR_ARIA_POSINSET; + delete ATTR_ARIA_ATOMIC; + delete ATTR_ARIA_INVALID; + delete ATTR_ARIA_TEMPLATEID; + delete ATTR_ARIA_VALUEMIN; + delete ATTR_ARIA_MULTISELECTABLE; + delete ATTR_ARIA_CONTROLS; + delete ATTR_ARIA_MULTILINE; + delete ATTR_ARIA_READONLY; + delete ATTR_ARIA_OWNS; + delete ATTR_ARIA_ACTIVEDESCENDANT; + delete ATTR_ARIA_RELEVANT; + delete ATTR_ARIA_DATATYPE; + delete ATTR_ARIA_VALUENOW; + delete ATTR_ARIA_SORT; + delete ATTR_ARIA_AUTOCOMPLETE; + delete ATTR_ARIA_FLOWTO; + delete ATTR_ARIA_BUSY; + delete ATTR_ARIA_LIVE; + delete ATTR_ARIA_HASPOPUP; + delete ATTR_ARIA_SETSIZE; delete ATTR_CLEAR; - delete ATTR_BEGIN; - delete ATTR_DEPTH; - delete ATTR_DEFER; - delete ATTR_FENCE; - delete ATTR_FRAME; + delete ATTR_DATAFORMATAS; + delete ATTR_DISABLED; + delete ATTR_DATAFLD; + delete ATTR_DEFAULT; + delete ATTR_DATASRC; + delete ATTR_DATA; + delete ATTR_EQUALCOLUMNS; + delete ATTR_EQUALROWS; + delete ATTR_HSPACE; delete ATTR_ISMAP; - delete ATTR_ONEND; - delete ATTR_INDEX; - delete ATTR_ORDER; - delete ATTR_OTHER; - delete ATTR_ONCUT; - delete ATTR_NARGS; - delete ATTR_MEDIA; - delete ATTR_LABEL; delete ATTR_LOCAL; - delete ATTR_WIDTH; - delete ATTR_TITLE; - delete ATTR_VLINK; - delete ATTR_VALUE; - delete ATTR_SLOPE; - delete ATTR_SHAPE; - delete ATTR_SCOPE; - delete ATTR_SCALE; - delete ATTR_SPEED; - delete ATTR_STYLE; - delete ATTR_RULES; - delete ATTR_STEMH; - delete ATTR_SIZES; - delete ATTR_STEMV; - delete ATTR_START; - delete ATTR_XMLNS; - delete ATTR_ACCEPT; - delete ATTR_ACCENT; - delete ATTR_ASCENT; - delete ATTR_ACTIVE; - delete ATTR_ALTIMG; - delete ATTR_ACTION; - delete ATTR_BORDER; - delete ATTR_CURSOR; - delete ATTR_COORDS; - delete ATTR_FILTER; - delete ATTR_FORMAT; - delete ATTR_HIDDEN; - delete ATTR_HSPACE; - delete ATTR_HEIGHT; - delete ATTR_ONMOVE; - delete ATTR_ONLOAD; - delete ATTR_ONDRAG; - delete ATTR_ORIGIN; - delete ATTR_ONZOOM; - delete ATTR_ONHELP; - delete ATTR_ONSTOP; - delete ATTR_ONDROP; - delete ATTR_ONBLUR; - delete ATTR_OBJECT; - delete ATTR_OFFSET; - delete ATTR_ORIENT; - delete ATTR_ONCOPY; - delete ATTR_NOWRAP; - delete ATTR_NOHREF; - delete ATTR_MACROS; - delete ATTR_METHOD; - delete ATTR_LOWSRC; delete ATTR_LSPACE; - delete ATTR_LQUOTE; - delete ATTR_USEMAP; - delete ATTR_WIDTHS; - delete ATTR_TARGET; - delete ATTR_VALUES; - delete ATTR_VALIGN; - delete ATTR_VSPACE; - delete ATTR_POSTER; - delete ATTR_POINTS; - delete ATTR_PROMPT; - delete ATTR_SRCDOC; - delete ATTR_SCOPED; - delete ATTR_STRING; - delete ATTR_SCHEME; - delete ATTR_STROKE; - delete ATTR_RADIUS; - delete ATTR_RESULT; - delete ATTR_REPEAT; - delete ATTR_SRCSET; + delete ATTR_MOVABLELIMITS; + delete ATTR_NOTATION; + delete ATTR_ONDATASETCHANGED; + delete ATTR_ONDATAAVAILABLE; + delete ATTR_ONPASTE; + delete ATTR_ONDATASETCOMPLETE; delete ATTR_RSPACE; + delete ATTR_ROWALIGN; delete ATTR_ROTATE; - delete ATTR_RQUOTE; - delete ATTR_ALTTEXT; - delete ATTR_ARCHIVE; - delete ATTR_AZIMUTH; - delete ATTR_CLOSURE; + delete ATTR_SEPARATOR; + delete ATTR_SEPARATORS; + delete ATTR_V_MATHEMATICAL; + delete ATTR_VSPACE; + delete ATTR_V_HANGING; + delete ATTR_XCHANNELSELECTOR; + delete ATTR_YCHANNELSELECTOR; + delete ATTR_ARABIC_FORM; + delete ATTR_ENABLE_BACKGROUND; + delete ATTR_ONDBLCLICK; + delete ATTR_ONABORT; + delete ATTR_CALCMODE; delete ATTR_CHECKED; - delete ATTR_CLASSID; - delete ATTR_CHAROFF; - delete ATTR_BGCOLOR; - delete ATTR_COLSPAN; - delete ATTR_CHARSET; - delete ATTR_COMPACT; - delete ATTR_CONTENT; - delete ATTR_ENCTYPE; - delete ATTR_DATASRC; - delete ATTR_DATAFLD; - delete ATTR_DECLARE; - delete ATTR_DISPLAY; - delete ATTR_DIVISOR; - delete ATTR_DEFAULT; delete ATTR_DESCENT; - delete ATTR_KERNING; - delete ATTR_HANGING; - delete ATTR_HEADERS; - delete ATTR_ONPASTE; - delete ATTR_ONCLICK; - delete ATTR_OPTIMUM; - delete ATTR_ONBEGIN; - delete ATTR_ONKEYUP; - delete ATTR_ONFOCUS; - delete ATTR_ONERROR; - delete ATTR_ONINPUT; - delete ATTR_ONABORT; - delete ATTR_ONSTART; - delete ATTR_ONRESET; + delete ATTR_FENCE; + delete ATTR_ONSCROLL; + delete ATTR_ONACTIVATE; delete ATTR_OPACITY; - delete ATTR_NOSHADE; - delete ATTR_MINSIZE; - delete ATTR_MAXSIZE; - delete ATTR_LARGEOP; - delete ATTR_UNICODE; - delete ATTR_TARGETX; - delete ATTR_TARGETY; - delete ATTR_VIEWBOX; - delete ATTR_VERSION; - delete ATTR_PATTERN; - delete ATTR_PROFILE; delete ATTR_SPACING; - delete ATTR_RESTART; - delete ATTR_ROWSPAN; + delete ATTR_SPECULAREXPONENT; + delete ATTR_SPECULARCONSTANT; + delete ATTR_SPECIFICATION; + delete ATTR_THICKMATHSPACE; + delete ATTR_UNICODE; + delete ATTR_UNICODE_BIDI; + delete ATTR_UNICODE_RANGE; + delete ATTR_BORDER; + delete ATTR_ID; + delete ATTR_GRADIENTTRANSFORM; + delete ATTR_GRADIENTUNITS; + delete ATTR_HIDDEN; + delete ATTR_HEADERS; + delete ATTR_READONLY; + delete ATTR_RENDERING_INTENT; + delete ATTR_SEED; + delete ATTR_SRCDOC; + delete ATTR_STDDEVIATION; delete ATTR_SANDBOX; - delete ATTR_SUMMARY; - delete ATTR_STANDBY; - delete ATTR_REPLACE; - delete ATTR_AUTOPLAY; - delete ATTR_ADDITIVE; - delete ATTR_CALCMODE; - delete ATTR_CODETYPE; - delete ATTR_CODEBASE; - delete ATTR_CONTROLS; + delete ATTR_V_IDEOGRAPHIC; + delete ATTR_WORD_SPACING; + delete ATTR_ACCENTUNDER; + delete ATTR_ACCEPT_CHARSET; + delete ATTR_ACCESSKEY; + delete ATTR_ACCENT_HEIGHT; + delete ATTR_ACCENT; + delete ATTR_ASCENT; + delete ATTR_ACCEPT; delete ATTR_BEVELLED; + delete ATTR_BASEFREQUENCY; + delete ATTR_BASELINE_SHIFT; + delete ATTR_BASEPROFILE; delete ATTR_BASELINE; - delete ATTR_EXPONENT; - delete ATTR_EDGEMODE; - delete ATTR_ENCODING; - delete ATTR_GLYPHREF; + delete ATTR_BASE; + delete ATTR_CODE; + delete ATTR_CODETYPE; + delete ATTR_CODEBASE; + delete ATTR_CITE; + delete ATTR_DEFER; delete ATTR_DATETIME; - delete ATTR_DISABLED; - delete ATTR_FONTSIZE; - delete ATTR_KEYTIMES; - delete ATTR_PANOSE_1; - delete ATTR_HREFLANG; - delete ATTR_ONRESIZE; - delete ATTR_ONCHANGE; - delete ATTR_ONBOUNCE; - delete ATTR_ONUNLOAD; - delete ATTR_ONFINISH; - delete ATTR_ONSCROLL; - delete ATTR_OPERATOR; - delete ATTR_OVERFLOW; - delete ATTR_ONSUBMIT; - delete ATTR_ONREPEAT; - delete ATTR_ONSELECT; - delete ATTR_NOTATION; - delete ATTR_NORESIZE; - delete ATTR_MANIFEST; - delete ATTR_MATHSIZE; - delete ATTR_MULTIPLE; - delete ATTR_LONGDESC; - delete ATTR_LANGUAGE; - delete ATTR_TEMPLATE; - delete ATTR_TABINDEX; - delete ATTR_PROPERTY; - delete ATTR_READONLY; - delete ATTR_SELECTED; - delete ATTR_ROWLINES; - delete ATTR_SEAMLESS; - delete ATTR_ROWALIGN; - delete ATTR_STRETCHY; - delete ATTR_REQUIRED; - delete ATTR_XML_BASE; - delete ATTR_XML_LANG; - delete ATTR_X_HEIGHT; - delete ATTR_ARIA_OWNS; - delete ATTR_AUTOFOCUS; - delete ATTR_ARIA_SORT; - delete ATTR_ACCESSKEY; - delete ATTR_ARIA_BUSY; - delete ATTR_ARIA_GRAB; - delete ATTR_AMPLITUDE; - delete ATTR_ARIA_LIVE; - delete ATTR_CLIP_RULE; - delete ATTR_CLIP_PATH; - delete ATTR_EQUALROWS; - delete ATTR_ELEVATION; delete ATTR_DIRECTION; - delete ATTR_DRAGGABLE; - delete ATTR_FILL_RULE; - delete ATTR_FONTSTYLE; - delete ATTR_FONT_SIZE; - delete ATTR_KEYSYSTEM; - delete ATTR_KEYPOINTS; + delete ATTR_EDGEMODE; + delete ATTR_EDGE; + delete ATTR_FACE; delete ATTR_HIDEFOCUS; - delete ATTR_ONMESSAGE; + delete ATTR_INDEX; + delete ATTR_IRRELEVANT; delete ATTR_INTERCEPT; - delete ATTR_ONDRAGEND; - delete ATTR_ONMOVEEND; - delete ATTR_ONINVALID; delete ATTR_INTEGRITY; - delete ATTR_ONKEYDOWN; - delete ATTR_ONFOCUSIN; - delete ATTR_ONMOUSEUP; - delete ATTR_INPUTMODE; - delete ATTR_ONROWEXIT; - delete ATTR_MATHCOLOR; - delete ATTR_MASKUNITS; - delete ATTR_MAXLENGTH; delete ATTR_LINEBREAK; - delete ATTR_TRANSFORM; - delete ATTR_V_HANGING; - delete ATTR_VALUETYPE; - delete ATTR_POINTSATZ; - delete ATTR_POINTSATX; - delete ATTR_POINTSATY; - delete ATTR_SYMMETRIC; - delete ATTR_SCROLLING; + delete ATTR_LABEL; + delete ATTR_LINETHICKNESS; + delete ATTR_MODE; + delete ATTR_NAME; + delete ATTR_NORESIZE; + delete ATTR_ONBEFOREUNLOAD; + delete ATTR_ONREPEAT; + delete ATTR_OBJECT; + delete ATTR_ONSELECT; + delete ATTR_ORDER; + delete ATTR_OTHER; + delete ATTR_ONRESET; + delete ATTR_ONCELLCHANGE; + delete ATTR_ONREADYSTATECHANGE; + delete ATTR_ONMESSAGE; + delete ATTR_ONBEGIN; + delete ATTR_ONHELP; + delete ATTR_ONBEFOREPRINT; + delete ATTR_ORIENT; + delete ATTR_ORIENTATION; + delete ATTR_ONBEFORECOPY; + delete ATTR_ONSELECTSTART; + delete ATTR_ONBEFOREPASTE; + delete ATTR_ONBEFOREUPDATE; + delete ATTR_ONDEACTIVATE; + delete ATTR_ONBEFOREACTIVATE; + delete ATTR_ONBEFORDEACTIVATE; + delete ATTR_ONKEYPRESS; + delete ATTR_ONKEYUP; + delete ATTR_ONBEFOREEDITFOCUS; + delete ATTR_ONBEFORECUT; + delete ATTR_ONKEYDOWN; + delete ATTR_ONRESIZE; + delete ATTR_REPEAT; + delete ATTR_REPEAT_MAX; + delete ATTR_REFERRERPOLICY; + delete ATTR_RULES; + delete ATTR_REPEAT_MIN; + delete ATTR_ROLE; + delete ATTR_REPEATCOUNT; + delete ATTR_REPEAT_START; + delete ATTR_REPEAT_TEMPLATE; delete ATTR_REPEATDUR; + delete ATTR_SELECTED; + delete ATTR_SPEED; + delete ATTR_SIZES; + delete ATTR_SUPERSCRIPTSHIFT; + delete ATTR_STRETCHY; + delete ATTR_SCHEME; + delete ATTR_SPREADMETHOD; delete ATTR_SELECTION; - delete ATTR_SEPARATOR; - delete ATTR_XML_SPACE; - delete ATTR_AUTOSUBMIT; + delete ATTR_SIZE; + delete ATTR_TYPE; + delete ATTR_UNSELECTABLE; + delete ATTR_UNDERLINE_POSITION; + delete ATTR_UNDERLINE_THICKNESS; + delete ATTR_X_HEIGHT; + delete ATTR_DIFFUSECONSTANT; + delete ATTR_HREF; + delete ATTR_HREFLANG; + delete ATTR_ONAFTERPRINT; + delete ATTR_ONAFTERUPDATE; + delete ATTR_PROFILE; + delete ATTR_SURFACESCALE; + delete ATTR_XREF; + delete ATTR_ALIGN; + delete ATTR_ALIGNMENT_BASELINE; + delete ATTR_ALIGNMENTSCOPE; + delete ATTR_DRAGGABLE; + delete ATTR_HEIGHT; + delete ATTR_HANGING; + delete ATTR_IMAGE_RENDERING; + delete ATTR_LANGUAGE; + delete ATTR_LANG; + delete ATTR_LARGEOP; + delete ATTR_LONGDESC; + delete ATTR_LENGTHADJUST; + delete ATTR_MARGINHEIGHT; + delete ATTR_MARGINWIDTH; + delete ATTR_NARGS; + delete ATTR_ORIGIN; + delete ATTR_PING; + delete ATTR_TARGET; + delete ATTR_TARGETX; + delete ATTR_TARGETY; delete ATTR_ALPHABETIC; + delete ATTR_ARCHIVE; + delete ATTR_HIGH; + delete ATTR_LIGHTING_COLOR; + delete ATTR_MATHEMATICAL; + delete ATTR_MATHBACKGROUND; + delete ATTR_METHOD; + delete ATTR_MATHVARIANT; + delete ATTR_MATHCOLOR; + delete ATTR_MATHSIZE; + delete ATTR_NOSHADE; + delete ATTR_ONCHANGE; + delete ATTR_PATHLENGTH; + delete ATTR_PATH; + delete ATTR_ALTIMG; delete ATTR_ACTIONTYPE; - delete ATTR_ACCUMULATE; - delete ATTR_ARIA_LEVEL; - delete ATTR_COLUMNSPAN; - delete ATTR_CAP_HEIGHT; + delete ATTR_ACTION; + delete ATTR_ACTIVE; + delete ATTR_ADDITIVE; + delete ATTR_BEGIN; + delete ATTR_DOMINANT_BASELINE; + delete ATTR_DIVISOR; + delete ATTR_DEFINITIONURL; + delete ATTR_HORIZ_ADV_X; + delete ATTR_HORIZ_ORIGIN_X; + delete ATTR_HORIZ_ORIGIN_Y; + delete ATTR_LIMITINGCONEANGLE; + delete ATTR_MEDIUMMATHSPACE; + delete ATTR_MEDIA; + delete ATTR_MANIFEST; + delete ATTR_ONFILTERCHANGE; + delete ATTR_ONFINISH; + delete ATTR_OPTIMUM; + delete ATTR_RADIOGROUP; + delete ATTR_RADIUS; + delete ATTR_SCRIPTLEVEL; + delete ATTR_SCRIPTSIZEMULTIPLIER; + delete ATTR_STRING; + delete ATTR_STRIKETHROUGH_POSITION; + delete ATTR_STRIKETHROUGH_THICKNESS; + delete ATTR_SCRIPTMINSIZE; + delete ATTR_TABINDEX; + delete ATTR_VALIGN; + delete ATTR_VISIBILITY; delete ATTR_BACKGROUND; - delete ATTR_GLYPH_NAME; - delete ATTR_GROUPALIGN; - delete ATTR_FONTFAMILY; - delete ATTR_FONTWEIGHT; - delete ATTR_FONT_STYLE; - delete ATTR_KEYSPLINES; - delete ATTR_HTTP_EQUIV; - delete ATTR_ONACTIVATE; - delete ATTR_OCCURRENCE; - delete ATTR_IRRELEVANT; - delete ATTR_ONDBLCLICK; - delete ATTR_ONDRAGDROP; - delete ATTR_ONKEYPRESS; - delete ATTR_ONROWENTER; - delete ATTR_ONDRAGOVER; - delete ATTR_ONFOCUSOUT; - delete ATTR_ONMOUSEOUT; - delete ATTR_NUMOCTAVES; + delete ATTR_LINK; delete ATTR_MARKER_MID; + delete ATTR_MARKERHEIGHT; delete ATTR_MARKER_END; - delete ATTR_TEXTLENGTH; - delete ATTR_VISIBILITY; - delete ATTR_VIEWTARGET; - delete ATTR_VERT_ADV_Y; - delete ATTR_PATHLENGTH; - delete ATTR_REPEAT_MAX; - delete ATTR_RADIOGROUP; - delete ATTR_STOP_COLOR; - delete ATTR_SEPARATORS; - delete ATTR_REPEAT_MIN; - delete ATTR_ROWSPACING; + delete ATTR_MASK; + delete ATTR_MARKER_START; + delete ATTR_MARKERWIDTH; + delete ATTR_MASKUNITS; + delete ATTR_MARKERUNITS; + delete ATTR_MASKCONTENTUNITS; + delete ATTR_AMPLITUDE; + delete ATTR_CELLSPACING; + delete ATTR_CELLPADDING; + delete ATTR_DECLARE; + delete ATTR_FILL_RULE; + delete ATTR_FILL; + delete ATTR_FILL_OPACITY; + delete ATTR_MAXLENGTH; + delete ATTR_ONCLICK; + delete ATTR_ONBLUR; + delete ATTR_REPLACE; + delete ATTR_ROWLINES; + delete ATTR_SCALE; + delete ATTR_STYLE; + delete ATTR_TABLEVALUES; + delete ATTR_TITLE; + delete ATTR_V_ALPHABETIC; + delete ATTR_AZIMUTH; + delete ATTR_FORMAT; + delete ATTR_FRAMEBORDER; + delete ATTR_FRAME; + delete ATTR_FRAMESPACING; + delete ATTR_FROM; + delete ATTR_FORM; + delete ATTR_PROMPT; + delete ATTR_PRIMITIVEUNITS; + delete ATTR_SYMMETRIC; + delete ATTR_STEMH; + delete ATTR_STEMV; + delete ATTR_SEAMLESS; + delete ATTR_SUMMARY; + delete ATTR_USEMAP; delete ATTR_ZOOMANDPAN; - delete ATTR_XLINK_TYPE; - delete ATTR_XLINK_ROLE; + delete ATTR_ASYNC; + delete ATTR_ALINK; + delete ATTR_IN; + delete ATTR_ICON; + delete ATTR_KERNELMATRIX; + delete ATTR_KERNING; + delete ATTR_KERNELUNITLENGTH; + delete ATTR_ONUNLOAD; + delete ATTR_OPEN; + delete ATTR_ONINVALID; + delete ATTR_ONEND; + delete ATTR_ONINPUT; + delete ATTR_POINTER_EVENTS; + delete ATTR_POINTS; + delete ATTR_POINTSATX; + delete ATTR_POINTSATY; + delete ATTR_POINTSATZ; + delete ATTR_SPAN; + delete ATTR_STANDBY; + delete ATTR_THINMATHSPACE; + delete ATTR_TRANSFORM; + delete ATTR_VLINK; + delete ATTR_WHEN; delete ATTR_XLINK_HREF; + delete ATTR_XLINK_TITLE; + delete ATTR_XLINK_ROLE; + delete ATTR_XLINK_ARCROLE; + delete ATTR_XMLNS_XLINK; + delete ATTR_XMLNS; + delete ATTR_XLINK_TYPE; delete ATTR_XLINK_SHOW; - delete ATTR_ACCENTUNDER; - delete ATTR_ARIA_SECRET; - delete ATTR_ARIA_ATOMIC; - delete ATTR_ARIA_HIDDEN; - delete ATTR_ARIA_FLOWTO; - delete ATTR_ARABIC_FORM; - delete ATTR_CELLPADDING; - delete ATTR_CELLSPACING; - delete ATTR_COLUMNWIDTH; - delete ATTR_CROSSORIGIN; - delete ATTR_COLUMNALIGN; - delete ATTR_COLUMNLINES; - delete ATTR_CONTEXTMENU; - delete ATTR_BASEPROFILE; - delete ATTR_FONT_FAMILY; - delete ATTR_FRAMEBORDER; - delete ATTR_FILTERUNITS; + delete ATTR_XLINK_ACTUATE; + delete ATTR_AUTOPLAY; + delete ATTR_AUTOSUBMIT; + delete ATTR_AUTOCOMPLETE; + delete ATTR_AUTOFOCUS; + delete ATTR_BGCOLOR; + delete ATTR_COLOR_PROFILE; + delete ATTR_COLOR_RENDERING; + delete ATTR_COLOR_INTERPOLATION; + delete ATTR_COLOR; + delete ATTR_COLOR_INTERPOLATION_FILTERS; + delete ATTR_ENCODING; + delete ATTR_EXPONENT; delete ATTR_FLOOD_COLOR; - delete ATTR_FONT_WEIGHT; - delete ATTR_HORIZ_ADV_X; - delete ATTR_ONDRAGLEAVE; - delete ATTR_ONMOUSEMOVE; - delete ATTR_ORIENTATION; - delete ATTR_ONMOUSEDOWN; - delete ATTR_ONMOUSEOVER; - delete ATTR_ONDRAGENTER; + delete ATTR_FLOOD_OPACITY; delete ATTR_IDEOGRAPHIC; - delete ATTR_ONBEFORECUT; - delete ATTR_ONFORMINPUT; - delete ATTR_ONDRAGSTART; + delete ATTR_LQUOTE; + delete ATTR_PANOSE_1; + delete ATTR_NUMOCTAVES; + delete ATTR_ONLOAD; + delete ATTR_ONBOUNCE; + delete ATTR_ONCONTROLSELECT; + delete ATTR_ONROWSINSERTED; + delete ATTR_ONMOUSEWHEEL; + delete ATTR_ONROWENTER; + delete ATTR_ONMOUSEENTER; + delete ATTR_ONMOUSEOVER; + delete ATTR_ONFORMCHANGE; + delete ATTR_ONFOCUSIN; + delete ATTR_ONROWEXIT; + delete ATTR_ONMOVEEND; + delete ATTR_ONCONTEXTMENU; + delete ATTR_ONZOOM; + delete ATTR_ONLOSECAPTURE; + delete ATTR_ONCOPY; delete ATTR_ONMOVESTART; - delete ATTR_MARKERUNITS; - delete ATTR_MATHVARIANT; - delete ATTR_MARGINWIDTH; - delete ATTR_MARKERWIDTH; - delete ATTR_TEXT_ANCHOR; - delete ATTR_TABLEVALUES; - delete ATTR_SCRIPTLEVEL; - delete ATTR_REPEATCOUNT; - delete ATTR_STITCHTILES; - delete ATTR_STARTOFFSET; - delete ATTR_SCROLLDELAY; - delete ATTR_XMLNS_XLINK; - delete ATTR_XLINK_TITLE; - delete ATTR_ARIA_INVALID; - delete ATTR_ARIA_PRESSED; - delete ATTR_ARIA_CHECKED; - delete ATTR_AUTOCOMPLETE; - delete ATTR_ARIA_SETSIZE; - delete ATTR_ARIA_CHANNEL; - delete ATTR_EQUALCOLUMNS; - delete ATTR_DISPLAYSTYLE; - delete ATTR_DATAFORMATAS; - delete ATTR_FILL_OPACITY; - delete ATTR_FONT_VARIANT; - delete ATTR_FONT_STRETCH; - delete ATTR_FRAMESPACING; - delete ATTR_KERNELMATRIX; - delete ATTR_ONDEACTIVATE; delete ATTR_ONROWSDELETE; delete ATTR_ONMOUSELEAVE; - delete ATTR_ONFORMCHANGE; - delete ATTR_ONCELLCHANGE; - delete ATTR_ONMOUSEWHEEL; - delete ATTR_ONMOUSEENTER; - delete ATTR_ONAFTERPRINT; - delete ATTR_ONBEFORECOPY; - delete ATTR_MARGINHEIGHT; - delete ATTR_MARKERHEIGHT; - delete ATTR_MARKER_START; - delete ATTR_MATHEMATICAL; - delete ATTR_LENGTHADJUST; - delete ATTR_UNSELECTABLE; - delete ATTR_UNICODE_BIDI; - delete ATTR_UNITS_PER_EM; - delete ATTR_WORD_SPACING; - delete ATTR_WRITING_MODE; - delete ATTR_V_ALPHABETIC; - delete ATTR_PATTERNUNITS; - delete ATTR_SPREADMETHOD; - delete ATTR_SURFACESCALE; + delete ATTR_ONMOVE; + delete ATTR_ONMOUSEMOVE; + delete ATTR_ONMOUSEUP; + delete ATTR_ONFOCUS; + delete ATTR_ONMOUSEOUT; + delete ATTR_ONFORMINPUT; + delete ATTR_ONFOCUSOUT; + delete ATTR_ONMOUSEDOWN; + delete ATTR_TO; + delete ATTR_RQUOTE; + delete ATTR_STROKE_LINECAP; + delete ATTR_SCROLLDELAY; + delete ATTR_STROKE_DASHARRAY; + delete ATTR_STROKE_DASHOFFSET; + delete ATTR_STROKE_LINEJOIN; + delete ATTR_STROKE_MITERLIMIT; + delete ATTR_STROKE; + delete ATTR_SCROLLING; delete ATTR_STROKE_WIDTH; - delete ATTR_REPEAT_START; - delete ATTR_STDDEVIATION; + delete ATTR_STROKE_OPACITY; + delete ATTR_COMPACT; + delete ATTR_CLIP; + delete ATTR_CLIP_RULE; + delete ATTR_CLIP_PATH; + delete ATTR_CLIPPATHUNITS; + delete ATTR_DISPLAY; + delete ATTR_DISPLAYSTYLE; + delete ATTR_GLYPH_ORIENTATION_VERTICAL; + delete ATTR_GLYPH_ORIENTATION_HORIZONTAL; + delete ATTR_GLYPHREF; + delete ATTR_GLYPH_NAME; + delete ATTR_HTTP_EQUIV; + delete ATTR_KEYPOINTS; + delete ATTR_LOOP; + delete ATTR_PROPERTY; + delete ATTR_SCOPED; + delete ATTR_STEP; + delete ATTR_SHAPE_RENDERING; + delete ATTR_SCOPE; + delete ATTR_SHAPE; + delete ATTR_SLOPE; + delete ATTR_STOP_COLOR; delete ATTR_STOP_OPACITY; - delete ATTR_ARIA_CONTROLS; - delete ATTR_ARIA_HASPOPUP; - delete ATTR_ACCENT_HEIGHT; - delete ATTR_ARIA_VALUENOW; - delete ATTR_ARIA_RELEVANT; - delete ATTR_ARIA_POSINSET; - delete ATTR_ARIA_VALUEMAX; - delete ATTR_ARIA_READONLY; - delete ATTR_ARIA_SELECTED; - delete ATTR_ARIA_REQUIRED; - delete ATTR_ARIA_EXPANDED; - delete ATTR_ARIA_DISABLED; - delete ATTR_ATTRIBUTETYPE; + delete ATTR_TEMPLATE; + delete ATTR_WRAP; + delete ATTR_ABBR; delete ATTR_ATTRIBUTENAME; - delete ATTR_ARIA_DATATYPE; - delete ATTR_ARIA_VALUEMIN; - delete ATTR_BASEFREQUENCY; - delete ATTR_COLUMNSPACING; - delete ATTR_COLOR_PROFILE; - delete ATTR_CLIPPATHUNITS; - delete ATTR_DEFINITIONURL; - delete ATTR_GRADIENTUNITS; - delete ATTR_FLOOD_OPACITY; - delete ATTR_ONAFTERUPDATE; + delete ATTR_ATTRIBUTETYPE; + delete ATTR_CHAR; + delete ATTR_COORDS; + delete ATTR_CHAROFF; + delete ATTR_CHARSET; + delete ATTR_MACROS; + delete ATTR_NOWRAP; + delete ATTR_NOHREF; + delete ATTR_ONDRAG; + delete ATTR_ONDRAGENTER; + delete ATTR_ONDRAGOVER; + delete ATTR_ONPROPERTYCHANGE; + delete ATTR_ONDRAGEND; + delete ATTR_ONDROP; + delete ATTR_ONDRAGDROP; + delete ATTR_OVERLINE_POSITION; + delete ATTR_ONERROR; + delete ATTR_OPERATOR; + delete ATTR_OVERFLOW; + delete ATTR_ONDRAGSTART; delete ATTR_ONERRORUPDATE; - delete ATTR_ONBEFOREPASTE; - delete ATTR_ONLOSECAPTURE; - delete ATTR_ONCONTEXTMENU; - delete ATTR_ONSELECTSTART; - delete ATTR_ONBEFOREPRINT; - delete ATTR_MOVABLELIMITS; - delete ATTR_LINETHICKNESS; - delete ATTR_UNICODE_RANGE; - delete ATTR_THINMATHSPACE; - delete ATTR_VERT_ORIGIN_X; - delete ATTR_VERT_ORIGIN_Y; - delete ATTR_V_IDEOGRAPHIC; + delete ATTR_OVERLINE_THICKNESS; + delete ATTR_ONDRAGLEAVE; + delete ATTR_STARTOFFSET; + delete ATTR_START; + delete ATTR_AXIS; + delete ATTR_BIAS; + delete ATTR_COLSPAN; + delete ATTR_CLASSID; + delete ATTR_CROSSORIGIN; + delete ATTR_COLS; + delete ATTR_CURSOR; + delete ATTR_CLOSURE; + delete ATTR_CLOSE; + delete ATTR_CLASS; + delete ATTR_IS; + delete ATTR_KEYSYSTEM; + delete ATTR_KEYSPLINES; + delete ATTR_LOWSRC; + delete ATTR_MAXSIZE; + delete ATTR_MINSIZE; + delete ATTR_OFFSET; delete ATTR_PRESERVEALPHA; - delete ATTR_SCRIPTMINSIZE; - delete ATTR_SPECIFICATION; - delete ATTR_XLINK_ACTUATE; - delete ATTR_XLINK_ARCROLE; - delete ATTR_ACCEPT_CHARSET; - delete ATTR_ALIGNMENTSCOPE; - delete ATTR_ARIA_MULTILINE; - delete ATTR_BASELINE_SHIFT; - delete ATTR_HORIZ_ORIGIN_X; - delete ATTR_HORIZ_ORIGIN_Y; - delete ATTR_ONBEFOREUPDATE; - delete ATTR_ONFILTERCHANGE; - delete ATTR_ONROWSINSERTED; - delete ATTR_ONBEFOREUNLOAD; - delete ATTR_MATHBACKGROUND; - delete ATTR_LETTER_SPACING; - delete ATTR_LIGHTING_COLOR; - delete ATTR_THICKMATHSPACE; - delete ATTR_TEXT_RENDERING; - delete ATTR_V_MATHEMATICAL; - delete ATTR_POINTER_EVENTS; - delete ATTR_PRIMITIVEUNITS; - delete ATTR_REFERRERPOLICY; - delete ATTR_SYSTEMLANGUAGE; - delete ATTR_STROKE_LINECAP; + delete ATTR_PRESERVEASPECTRATIO; + delete ATTR_ROWSPAN; + delete ATTR_ROWSPACING; + delete ATTR_ROWS; + delete ATTR_SRCSET; delete ATTR_SUBSCRIPTSHIFT; - delete ATTR_STROKE_OPACITY; - delete ATTR_ARIA_DROPEFFECT; - delete ATTR_ARIA_LABELLEDBY; - delete ATTR_ARIA_TEMPLATEID; - delete ATTR_COLOR_RENDERING; + delete ATTR_VERSION; + delete ATTR_ALTTEXT; delete ATTR_CONTENTEDITABLE; - delete ATTR_DIFFUSECONSTANT; - delete ATTR_ONDATAAVAILABLE; - delete ATTR_ONCONTROLSELECT; - delete ATTR_IMAGE_RENDERING; - delete ATTR_MEDIUMMATHSPACE; - delete ATTR_TEXT_DECORATION; - delete ATTR_SHAPE_RENDERING; - delete ATTR_STROKE_LINEJOIN; - delete ATTR_REPEAT_TEMPLATE; - delete ATTR_ARIA_DESCRIBEDBY; + delete ATTR_CONTROLS; + delete ATTR_CONTENT; + delete ATTR_CONTEXTMENU; + delete ATTR_DEPTH; + delete ATTR_ENCTYPE; + delete ATTR_FONT_STRETCH; + delete ATTR_FILTER; + delete ATTR_FONTWEIGHT; + delete ATTR_FONT_WEIGHT; + delete ATTR_FONTSTYLE; + delete ATTR_FONT_STYLE; + delete ATTR_FONTFAMILY; + delete ATTR_FONT_FAMILY; + delete ATTR_FONT_VARIANT; delete ATTR_FONT_SIZE_ADJUST; - delete ATTR_KERNELUNITLENGTH; - delete ATTR_ONBEFOREACTIVATE; - delete ATTR_ONPROPERTYCHANGE; - delete ATTR_ONDATASETCHANGED; - delete ATTR_MASKCONTENTUNITS; + delete ATTR_FILTERUNITS; + delete ATTR_FONTSIZE; + delete ATTR_FONT_SIZE; + delete ATTR_KEYTIMES; + delete ATTR_LETTER_SPACING; + delete ATTR_LIST; + delete ATTR_MULTIPLE; + delete ATTR_RT; + delete ATTR_ONSTOP; + delete ATTR_ONSTART; + delete ATTR_POSTER; delete ATTR_PATTERNTRANSFORM; + delete ATTR_PATTERN; + delete ATTR_PATTERNUNITS; + delete ATTR_PATTERNCONTENTUNITS; + delete ATTR_RESTART; + delete ATTR_STITCHTILES; + delete ATTR_SYSTEMLANGUAGE; + delete ATTR_TEXT_RENDERING; + delete ATTR_VERT_ORIGIN_X; + delete ATTR_VERT_ADV_Y; + delete ATTR_VERT_ORIGIN_Y; + delete ATTR_TEXT_DECORATION; + delete ATTR_TEXT_ANCHOR; + delete ATTR_TEXTLENGTH; + delete ATTR_TEXT; + delete ATTR_UNITS_PER_EM; + delete ATTR_WRITING_MODE; + delete ATTR_WIDTHS; + delete ATTR_WIDTH; + delete ATTR_ACCUMULATE; + delete ATTR_COLUMNSPAN; + delete ATTR_COLUMNLINES; + delete ATTR_COLUMNALIGN; + delete ATTR_COLUMNSPACING; + delete ATTR_COLUMNWIDTH; + delete ATTR_GROUPALIGN; + delete ATTR_INPUTMODE; + delete ATTR_OCCURRENCE; + delete ATTR_ONSUBMIT; + delete ATTR_ONCUT; + delete ATTR_REQUIRED; delete ATTR_REQUIREDFEATURES; - delete ATTR_RENDERING_INTENT; - delete ATTR_SPECULAREXPONENT; - delete ATTR_SPECULARCONSTANT; - delete ATTR_SUPERSCRIPTSHIFT; - delete ATTR_STROKE_DASHARRAY; - delete ATTR_XCHANNELSELECTOR; - delete ATTR_YCHANNELSELECTOR; - delete ATTR_ARIA_AUTOCOMPLETE; - delete ATTR_ENABLE_BACKGROUND; - delete ATTR_DOMINANT_BASELINE; - delete ATTR_GRADIENTTRANSFORM; - delete ATTR_ONBEFORDEACTIVATE; - delete ATTR_ONDATASETCOMPLETE; - delete ATTR_OVERLINE_POSITION; - delete ATTR_ONBEFOREEDITFOCUS; - delete ATTR_LIMITINGCONEANGLE; + delete ATTR_RESULT; + delete ATTR_REQUIREDEXTENSIONS; + delete ATTR_VALUES; + delete ATTR_VALUETYPE; + delete ATTR_VALUE; + delete ATTR_ELEVATION; + delete ATTR_VIEWTARGET; + delete ATTR_VIEWBOX; + delete ATTR_CX; + delete ATTR_DX; + delete ATTR_FX; + delete ATTR_BBOX; + delete ATTR_RX; + delete ATTR_REFX; + delete ATTR_BY; + delete ATTR_CY; + delete ATTR_DY; + delete ATTR_FY; + delete ATTR_RY; + delete ATTR_REFY; delete ATTR_VERYTHINMATHSPACE; - delete ATTR_STROKE_DASHOFFSET; - delete ATTR_STROKE_MITERLIMIT; - delete ATTR_ALIGNMENT_BASELINE; - delete ATTR_ONREADYSTATECHANGE; - delete ATTR_OVERLINE_THICKNESS; - delete ATTR_UNDERLINE_POSITION; delete ATTR_VERYTHICKMATHSPACE; - delete ATTR_REQUIREDEXTENSIONS; - delete ATTR_COLOR_INTERPOLATION; - delete ATTR_UNDERLINE_THICKNESS; - delete ATTR_PRESERVEASPECTRATIO; - delete ATTR_PATTERNCONTENTUNITS; - delete ATTR_ARIA_MULTISELECTABLE; - delete ATTR_SCRIPTSIZEMULTIPLIER; - delete ATTR_ARIA_ACTIVEDESCENDANT; delete ATTR_VERYVERYTHINMATHSPACE; delete ATTR_VERYVERYTHICKMATHSPACE; - delete ATTR_STRIKETHROUGH_POSITION; - delete ATTR_STRIKETHROUGH_THICKNESS; - delete ATTR_GLYPH_ORIENTATION_VERTICAL; - delete ATTR_COLOR_INTERPOLATION_FILTERS; - delete ATTR_GLYPH_ORIENTATION_HORIZONTAL; delete[] ATTRIBUTE_NAMES; } diff --git a/parser/html/nsHtml5AttributeName.h b/parser/html/nsHtml5AttributeName.h index e12fb35cc..d44ea6667 100644 --- a/parser/html/nsHtml5AttributeName.h +++ b/parser/html/nsHtml5AttributeName.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2011 Mozilla Foundation + * Copyright (c) 2008-2017 Mozilla Foundation * Copyright (c) 2018-2020 Moonchild Productions * Copyright (c) 2020 Binary Outcast * @@ -44,14 +44,15 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; +class nsHtml5ElementName; class nsHtml5Tokenizer; class nsHtml5TreeBuilder; class nsHtml5MetaScanner; -class nsHtml5ElementName; -class nsHtml5HtmlAttributes; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -76,607 +77,692 @@ class nsHtml5AttributeName static nsIAtom** COLONIFIED_LOCAL(nsIAtom* name, nsIAtom* suffix); public: static nsIAtom** SAME_LOCAL(nsIAtom* name); - static nsHtml5AttributeName* nameByBuffer(char16_t* buf, int32_t offset, int32_t length, nsHtml5AtomTable* interner); + inline static int32_t levelOrderBinarySearch(jArray<int32_t,int32_t> data, int32_t key) + { + int32_t n = data.length; + int32_t i = 0; + while (i < n) { + int32_t val = data[i]; + if (val < key) { + i = 2 * i + 2; + } else if (val > key) { + i = 2 * i + 1; + } else { + return i; + } + } + return -1; + } + + inline static nsHtml5AttributeName* nameByBuffer(char16_t* buf, int32_t offset, int32_t length, nsHtml5AtomTable* interner) + { + uint32_t hash = nsHtml5AttributeName::bufToHash(buf, length); + jArray<int32_t,int32_t> hashes; + hashes = nsHtml5AttributeName::ATTRIBUTE_HASHES; + int32_t index = levelOrderBinarySearch(hashes, hash); + if (index < 0) { + return nullptr; + } + nsHtml5AttributeName* attributeName = nsHtml5AttributeName::ATTRIBUTE_NAMES[index]; + nsIAtom* name = attributeName->getLocal(0); + if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) { + return nullptr; + } + return attributeName; + } + + private: + inline static uint32_t bufToHash(char16_t* buf, int32_t length) + { + uint32_t len = length; + uint32_t first = buf[0]; + first <<= 19; + uint32_t second = 1 << 23; + uint32_t third = 0; + uint32_t fourth = 0; + uint32_t fifth = 0; + uint32_t sixth = 0; + if (length >= 4) { + second = buf[length - 4]; + second <<= 4; + third = buf[1]; + third <<= 9; + fourth = buf[length - 2]; + fourth <<= 14; + fifth = buf[3]; + fifth <<= 24; + sixth = buf[length - 1]; + sixth <<= 11; + } else if (length == 3) { + second = buf[1]; + second <<= 4; + third = buf[2]; + third <<= 9; + } else if (length == 2) { + second = buf[1]; + second <<= 24; + } + return len + first + second + third + fourth + fifth + sixth; + } + + public: + static const int32_t HTML = 0; + + static const int32_t MATHML = 1; + + static const int32_t SVG = 2; + private: - static int32_t bufToHash(char16_t* buf, int32_t len); int32_t* uri; nsIAtom** local; nsIAtom** prefix; - protected: + bool custom; nsHtml5AttributeName(int32_t* uri, nsIAtom** local, nsIAtom** prefix); - private: - static nsHtml5AttributeName* createAttributeName(nsIAtom* name); public: - virtual void release(); - virtual ~nsHtml5AttributeName(); - virtual nsHtml5AttributeName* cloneAttributeName(nsHtml5AtomTable* interner); + nsHtml5AttributeName(); + inline bool isInterned() + { + return !custom; + } + + inline void setNameForNonInterned(nsIAtom* name) + { + MOZ_ASSERT(custom); + local[0] = name; + local[1] = name; + local[2] = name; + } + + static nsHtml5AttributeName* createAttributeName(nsIAtom* name); + ~nsHtml5AttributeName(); int32_t getUri(int32_t mode); nsIAtom* getLocal(int32_t mode); nsIAtom* getPrefix(int32_t mode); bool equalsAnother(nsHtml5AttributeName* another); + static nsHtml5AttributeName* ATTR_ALT; + static nsHtml5AttributeName* ATTR_DIR; + static nsHtml5AttributeName* ATTR_DUR; + static nsHtml5AttributeName* ATTR_END; + static nsHtml5AttributeName* ATTR_FOR; + static nsHtml5AttributeName* ATTR_IN2; + static nsHtml5AttributeName* ATTR_LOW; + static nsHtml5AttributeName* ATTR_MIN; + static nsHtml5AttributeName* ATTR_MAX; + static nsHtml5AttributeName* ATTR_REL; + static nsHtml5AttributeName* ATTR_REV; + static nsHtml5AttributeName* ATTR_SRC; static nsHtml5AttributeName* ATTR_D; static nsHtml5AttributeName* ATTR_K; static nsHtml5AttributeName* ATTR_R; static nsHtml5AttributeName* ATTR_X; static nsHtml5AttributeName* ATTR_Y; static nsHtml5AttributeName* ATTR_Z; - static nsHtml5AttributeName* ATTR_BY; - static nsHtml5AttributeName* ATTR_CX; - static nsHtml5AttributeName* ATTR_CY; - static nsHtml5AttributeName* ATTR_DX; - static nsHtml5AttributeName* ATTR_DY; - static nsHtml5AttributeName* ATTR_G2; + static nsHtml5AttributeName* ATTR_CAP_HEIGHT; static nsHtml5AttributeName* ATTR_G1; - static nsHtml5AttributeName* ATTR_FX; - static nsHtml5AttributeName* ATTR_FY; - static nsHtml5AttributeName* ATTR_K4; - static nsHtml5AttributeName* ATTR_K2; - static nsHtml5AttributeName* ATTR_K3; static nsHtml5AttributeName* ATTR_K1; - static nsHtml5AttributeName* ATTR_ID; - static nsHtml5AttributeName* ATTR_IN; - static nsHtml5AttributeName* ATTR_U2; static nsHtml5AttributeName* ATTR_U1; - static nsHtml5AttributeName* ATTR_RT; - static nsHtml5AttributeName* ATTR_RX; - static nsHtml5AttributeName* ATTR_RY; - static nsHtml5AttributeName* ATTR_TO; - static nsHtml5AttributeName* ATTR_Y2; - static nsHtml5AttributeName* ATTR_Y1; static nsHtml5AttributeName* ATTR_X1; + static nsHtml5AttributeName* ATTR_Y1; + static nsHtml5AttributeName* ATTR_G2; + static nsHtml5AttributeName* ATTR_K2; + static nsHtml5AttributeName* ATTR_U2; static nsHtml5AttributeName* ATTR_X2; - static nsHtml5AttributeName* ATTR_ALT; - static nsHtml5AttributeName* ATTR_DIR; - static nsHtml5AttributeName* ATTR_DUR; - static nsHtml5AttributeName* ATTR_END; - static nsHtml5AttributeName* ATTR_FOR; - static nsHtml5AttributeName* ATTR_IN2; - static nsHtml5AttributeName* ATTR_MAX; - static nsHtml5AttributeName* ATTR_MIN; - static nsHtml5AttributeName* ATTR_LOW; - static nsHtml5AttributeName* ATTR_REL; - static nsHtml5AttributeName* ATTR_REV; - static nsHtml5AttributeName* ATTR_SRC; - static nsHtml5AttributeName* ATTR_AXIS; - static nsHtml5AttributeName* ATTR_ABBR; - static nsHtml5AttributeName* ATTR_BBOX; - static nsHtml5AttributeName* ATTR_CITE; - static nsHtml5AttributeName* ATTR_CODE; - static nsHtml5AttributeName* ATTR_BIAS; - static nsHtml5AttributeName* ATTR_COLS; - static nsHtml5AttributeName* ATTR_CLIP; - static nsHtml5AttributeName* ATTR_CHAR; - static nsHtml5AttributeName* ATTR_BASE; - static nsHtml5AttributeName* ATTR_EDGE; - static nsHtml5AttributeName* ATTR_DATA; - static nsHtml5AttributeName* ATTR_FILL; - static nsHtml5AttributeName* ATTR_FROM; - static nsHtml5AttributeName* ATTR_FORM; - static nsHtml5AttributeName* ATTR_FACE; - static nsHtml5AttributeName* ATTR_HIGH; - static nsHtml5AttributeName* ATTR_HREF; - static nsHtml5AttributeName* ATTR_OPEN; - static nsHtml5AttributeName* ATTR_ICON; - static nsHtml5AttributeName* ATTR_NAME; - static nsHtml5AttributeName* ATTR_MODE; - static nsHtml5AttributeName* ATTR_MASK; - static nsHtml5AttributeName* ATTR_LINK; - static nsHtml5AttributeName* ATTR_LANG; - static nsHtml5AttributeName* ATTR_LOOP; - static nsHtml5AttributeName* ATTR_LIST; - static nsHtml5AttributeName* ATTR_TYPE; - static nsHtml5AttributeName* ATTR_WHEN; - static nsHtml5AttributeName* ATTR_WRAP; - static nsHtml5AttributeName* ATTR_TEXT; - static nsHtml5AttributeName* ATTR_PATH; - static nsHtml5AttributeName* ATTR_PING; - static nsHtml5AttributeName* ATTR_REFX; - static nsHtml5AttributeName* ATTR_REFY; - static nsHtml5AttributeName* ATTR_SIZE; - static nsHtml5AttributeName* ATTR_SEED; - static nsHtml5AttributeName* ATTR_ROWS; - static nsHtml5AttributeName* ATTR_SPAN; - static nsHtml5AttributeName* ATTR_STEP; - static nsHtml5AttributeName* ATTR_ROLE; - static nsHtml5AttributeName* ATTR_XREF; - static nsHtml5AttributeName* ATTR_ASYNC; - static nsHtml5AttributeName* ATTR_ALINK; - static nsHtml5AttributeName* ATTR_ALIGN; - static nsHtml5AttributeName* ATTR_CLOSE; - static nsHtml5AttributeName* ATTR_COLOR; - static nsHtml5AttributeName* ATTR_CLASS; + static nsHtml5AttributeName* ATTR_Y2; + static nsHtml5AttributeName* ATTR_K3; + static nsHtml5AttributeName* ATTR_K4; + static nsHtml5AttributeName* ATTR_XML_SPACE; + static nsHtml5AttributeName* ATTR_XML_LANG; + static nsHtml5AttributeName* ATTR_XML_BASE; + static nsHtml5AttributeName* ATTR_ARIA_GRAB; + static nsHtml5AttributeName* ATTR_ARIA_VALUEMAX; + static nsHtml5AttributeName* ATTR_ARIA_LABELLEDBY; + static nsHtml5AttributeName* ATTR_ARIA_DESCRIBEDBY; + static nsHtml5AttributeName* ATTR_ARIA_DISABLED; + static nsHtml5AttributeName* ATTR_ARIA_CHECKED; + static nsHtml5AttributeName* ATTR_ARIA_SELECTED; + static nsHtml5AttributeName* ATTR_ARIA_DROPEFFECT; + static nsHtml5AttributeName* ATTR_ARIA_REQUIRED; + static nsHtml5AttributeName* ATTR_ARIA_EXPANDED; + static nsHtml5AttributeName* ATTR_ARIA_PRESSED; + static nsHtml5AttributeName* ATTR_ARIA_LEVEL; + static nsHtml5AttributeName* ATTR_ARIA_CHANNEL; + static nsHtml5AttributeName* ATTR_ARIA_HIDDEN; + static nsHtml5AttributeName* ATTR_ARIA_SECRET; + static nsHtml5AttributeName* ATTR_ARIA_POSINSET; + static nsHtml5AttributeName* ATTR_ARIA_ATOMIC; + static nsHtml5AttributeName* ATTR_ARIA_INVALID; + static nsHtml5AttributeName* ATTR_ARIA_TEMPLATEID; + static nsHtml5AttributeName* ATTR_ARIA_VALUEMIN; + static nsHtml5AttributeName* ATTR_ARIA_MULTISELECTABLE; + static nsHtml5AttributeName* ATTR_ARIA_CONTROLS; + static nsHtml5AttributeName* ATTR_ARIA_MULTILINE; + static nsHtml5AttributeName* ATTR_ARIA_READONLY; + static nsHtml5AttributeName* ATTR_ARIA_OWNS; + static nsHtml5AttributeName* ATTR_ARIA_ACTIVEDESCENDANT; + static nsHtml5AttributeName* ATTR_ARIA_RELEVANT; + static nsHtml5AttributeName* ATTR_ARIA_DATATYPE; + static nsHtml5AttributeName* ATTR_ARIA_VALUENOW; + static nsHtml5AttributeName* ATTR_ARIA_SORT; + static nsHtml5AttributeName* ATTR_ARIA_AUTOCOMPLETE; + static nsHtml5AttributeName* ATTR_ARIA_FLOWTO; + static nsHtml5AttributeName* ATTR_ARIA_BUSY; + static nsHtml5AttributeName* ATTR_ARIA_LIVE; + static nsHtml5AttributeName* ATTR_ARIA_HASPOPUP; + static nsHtml5AttributeName* ATTR_ARIA_SETSIZE; static nsHtml5AttributeName* ATTR_CLEAR; - static nsHtml5AttributeName* ATTR_BEGIN; - static nsHtml5AttributeName* ATTR_DEPTH; - static nsHtml5AttributeName* ATTR_DEFER; - static nsHtml5AttributeName* ATTR_FENCE; - static nsHtml5AttributeName* ATTR_FRAME; + static nsHtml5AttributeName* ATTR_DATAFORMATAS; + static nsHtml5AttributeName* ATTR_DISABLED; + static nsHtml5AttributeName* ATTR_DATAFLD; + static nsHtml5AttributeName* ATTR_DEFAULT; + static nsHtml5AttributeName* ATTR_DATASRC; + static nsHtml5AttributeName* ATTR_DATA; + static nsHtml5AttributeName* ATTR_EQUALCOLUMNS; + static nsHtml5AttributeName* ATTR_EQUALROWS; + static nsHtml5AttributeName* ATTR_HSPACE; static nsHtml5AttributeName* ATTR_ISMAP; - static nsHtml5AttributeName* ATTR_ONEND; - static nsHtml5AttributeName* ATTR_INDEX; - static nsHtml5AttributeName* ATTR_ORDER; - static nsHtml5AttributeName* ATTR_OTHER; - static nsHtml5AttributeName* ATTR_ONCUT; - static nsHtml5AttributeName* ATTR_NARGS; - static nsHtml5AttributeName* ATTR_MEDIA; - static nsHtml5AttributeName* ATTR_LABEL; static nsHtml5AttributeName* ATTR_LOCAL; - static nsHtml5AttributeName* ATTR_WIDTH; - static nsHtml5AttributeName* ATTR_TITLE; - static nsHtml5AttributeName* ATTR_VLINK; - static nsHtml5AttributeName* ATTR_VALUE; - static nsHtml5AttributeName* ATTR_SLOPE; - static nsHtml5AttributeName* ATTR_SHAPE; - static nsHtml5AttributeName* ATTR_SCOPE; - static nsHtml5AttributeName* ATTR_SCALE; - static nsHtml5AttributeName* ATTR_SPEED; - static nsHtml5AttributeName* ATTR_STYLE; - static nsHtml5AttributeName* ATTR_RULES; - static nsHtml5AttributeName* ATTR_STEMH; - static nsHtml5AttributeName* ATTR_SIZES; - static nsHtml5AttributeName* ATTR_STEMV; - static nsHtml5AttributeName* ATTR_START; - static nsHtml5AttributeName* ATTR_XMLNS; - static nsHtml5AttributeName* ATTR_ACCEPT; - static nsHtml5AttributeName* ATTR_ACCENT; - static nsHtml5AttributeName* ATTR_ASCENT; - static nsHtml5AttributeName* ATTR_ACTIVE; - static nsHtml5AttributeName* ATTR_ALTIMG; - static nsHtml5AttributeName* ATTR_ACTION; - static nsHtml5AttributeName* ATTR_BORDER; - static nsHtml5AttributeName* ATTR_CURSOR; - static nsHtml5AttributeName* ATTR_COORDS; - static nsHtml5AttributeName* ATTR_FILTER; - static nsHtml5AttributeName* ATTR_FORMAT; - static nsHtml5AttributeName* ATTR_HIDDEN; - static nsHtml5AttributeName* ATTR_HSPACE; - static nsHtml5AttributeName* ATTR_HEIGHT; - static nsHtml5AttributeName* ATTR_ONMOVE; - static nsHtml5AttributeName* ATTR_ONLOAD; - static nsHtml5AttributeName* ATTR_ONDRAG; - static nsHtml5AttributeName* ATTR_ORIGIN; - static nsHtml5AttributeName* ATTR_ONZOOM; - static nsHtml5AttributeName* ATTR_ONHELP; - static nsHtml5AttributeName* ATTR_ONSTOP; - static nsHtml5AttributeName* ATTR_ONDROP; - static nsHtml5AttributeName* ATTR_ONBLUR; - static nsHtml5AttributeName* ATTR_OBJECT; - static nsHtml5AttributeName* ATTR_OFFSET; - static nsHtml5AttributeName* ATTR_ORIENT; - static nsHtml5AttributeName* ATTR_ONCOPY; - static nsHtml5AttributeName* ATTR_NOWRAP; - static nsHtml5AttributeName* ATTR_NOHREF; - static nsHtml5AttributeName* ATTR_MACROS; - static nsHtml5AttributeName* ATTR_METHOD; - static nsHtml5AttributeName* ATTR_LOWSRC; static nsHtml5AttributeName* ATTR_LSPACE; - static nsHtml5AttributeName* ATTR_LQUOTE; - static nsHtml5AttributeName* ATTR_USEMAP; - static nsHtml5AttributeName* ATTR_WIDTHS; - static nsHtml5AttributeName* ATTR_TARGET; - static nsHtml5AttributeName* ATTR_VALUES; - static nsHtml5AttributeName* ATTR_VALIGN; - static nsHtml5AttributeName* ATTR_VSPACE; - static nsHtml5AttributeName* ATTR_POSTER; - static nsHtml5AttributeName* ATTR_POINTS; - static nsHtml5AttributeName* ATTR_PROMPT; - static nsHtml5AttributeName* ATTR_SRCDOC; - static nsHtml5AttributeName* ATTR_SCOPED; - static nsHtml5AttributeName* ATTR_STRING; - static nsHtml5AttributeName* ATTR_SCHEME; - static nsHtml5AttributeName* ATTR_STROKE; - static nsHtml5AttributeName* ATTR_RADIUS; - static nsHtml5AttributeName* ATTR_RESULT; - static nsHtml5AttributeName* ATTR_REPEAT; - static nsHtml5AttributeName* ATTR_SRCSET; + static nsHtml5AttributeName* ATTR_MOVABLELIMITS; + static nsHtml5AttributeName* ATTR_NOTATION; + static nsHtml5AttributeName* ATTR_ONDATASETCHANGED; + static nsHtml5AttributeName* ATTR_ONDATAAVAILABLE; + static nsHtml5AttributeName* ATTR_ONPASTE; + static nsHtml5AttributeName* ATTR_ONDATASETCOMPLETE; static nsHtml5AttributeName* ATTR_RSPACE; + static nsHtml5AttributeName* ATTR_ROWALIGN; static nsHtml5AttributeName* ATTR_ROTATE; - static nsHtml5AttributeName* ATTR_RQUOTE; - static nsHtml5AttributeName* ATTR_ALTTEXT; - static nsHtml5AttributeName* ATTR_ARCHIVE; - static nsHtml5AttributeName* ATTR_AZIMUTH; - static nsHtml5AttributeName* ATTR_CLOSURE; + static nsHtml5AttributeName* ATTR_SEPARATOR; + static nsHtml5AttributeName* ATTR_SEPARATORS; + static nsHtml5AttributeName* ATTR_V_MATHEMATICAL; + static nsHtml5AttributeName* ATTR_VSPACE; + static nsHtml5AttributeName* ATTR_V_HANGING; + static nsHtml5AttributeName* ATTR_XCHANNELSELECTOR; + static nsHtml5AttributeName* ATTR_YCHANNELSELECTOR; + static nsHtml5AttributeName* ATTR_ARABIC_FORM; + static nsHtml5AttributeName* ATTR_ENABLE_BACKGROUND; + static nsHtml5AttributeName* ATTR_ONDBLCLICK; + static nsHtml5AttributeName* ATTR_ONABORT; + static nsHtml5AttributeName* ATTR_CALCMODE; static nsHtml5AttributeName* ATTR_CHECKED; - static nsHtml5AttributeName* ATTR_CLASSID; - static nsHtml5AttributeName* ATTR_CHAROFF; - static nsHtml5AttributeName* ATTR_BGCOLOR; - static nsHtml5AttributeName* ATTR_COLSPAN; - static nsHtml5AttributeName* ATTR_CHARSET; - static nsHtml5AttributeName* ATTR_COMPACT; - static nsHtml5AttributeName* ATTR_CONTENT; - static nsHtml5AttributeName* ATTR_ENCTYPE; - static nsHtml5AttributeName* ATTR_DATASRC; - static nsHtml5AttributeName* ATTR_DATAFLD; - static nsHtml5AttributeName* ATTR_DECLARE; - static nsHtml5AttributeName* ATTR_DISPLAY; - static nsHtml5AttributeName* ATTR_DIVISOR; - static nsHtml5AttributeName* ATTR_DEFAULT; static nsHtml5AttributeName* ATTR_DESCENT; - static nsHtml5AttributeName* ATTR_KERNING; - static nsHtml5AttributeName* ATTR_HANGING; - static nsHtml5AttributeName* ATTR_HEADERS; - static nsHtml5AttributeName* ATTR_ONPASTE; - static nsHtml5AttributeName* ATTR_ONCLICK; - static nsHtml5AttributeName* ATTR_OPTIMUM; - static nsHtml5AttributeName* ATTR_ONBEGIN; - static nsHtml5AttributeName* ATTR_ONKEYUP; - static nsHtml5AttributeName* ATTR_ONFOCUS; - static nsHtml5AttributeName* ATTR_ONERROR; - static nsHtml5AttributeName* ATTR_ONINPUT; - static nsHtml5AttributeName* ATTR_ONABORT; - static nsHtml5AttributeName* ATTR_ONSTART; - static nsHtml5AttributeName* ATTR_ONRESET; + static nsHtml5AttributeName* ATTR_FENCE; + static nsHtml5AttributeName* ATTR_ONSCROLL; + static nsHtml5AttributeName* ATTR_ONACTIVATE; static nsHtml5AttributeName* ATTR_OPACITY; - static nsHtml5AttributeName* ATTR_NOSHADE; - static nsHtml5AttributeName* ATTR_MINSIZE; - static nsHtml5AttributeName* ATTR_MAXSIZE; - static nsHtml5AttributeName* ATTR_LARGEOP; - static nsHtml5AttributeName* ATTR_UNICODE; - static nsHtml5AttributeName* ATTR_TARGETX; - static nsHtml5AttributeName* ATTR_TARGETY; - static nsHtml5AttributeName* ATTR_VIEWBOX; - static nsHtml5AttributeName* ATTR_VERSION; - static nsHtml5AttributeName* ATTR_PATTERN; - static nsHtml5AttributeName* ATTR_PROFILE; static nsHtml5AttributeName* ATTR_SPACING; - static nsHtml5AttributeName* ATTR_RESTART; - static nsHtml5AttributeName* ATTR_ROWSPAN; + static nsHtml5AttributeName* ATTR_SPECULAREXPONENT; + static nsHtml5AttributeName* ATTR_SPECULARCONSTANT; + static nsHtml5AttributeName* ATTR_SPECIFICATION; + static nsHtml5AttributeName* ATTR_THICKMATHSPACE; + static nsHtml5AttributeName* ATTR_UNICODE; + static nsHtml5AttributeName* ATTR_UNICODE_BIDI; + static nsHtml5AttributeName* ATTR_UNICODE_RANGE; + static nsHtml5AttributeName* ATTR_BORDER; + static nsHtml5AttributeName* ATTR_ID; + static nsHtml5AttributeName* ATTR_GRADIENTTRANSFORM; + static nsHtml5AttributeName* ATTR_GRADIENTUNITS; + static nsHtml5AttributeName* ATTR_HIDDEN; + static nsHtml5AttributeName* ATTR_HEADERS; + static nsHtml5AttributeName* ATTR_READONLY; + static nsHtml5AttributeName* ATTR_RENDERING_INTENT; + static nsHtml5AttributeName* ATTR_SEED; + static nsHtml5AttributeName* ATTR_SRCDOC; + static nsHtml5AttributeName* ATTR_STDDEVIATION; static nsHtml5AttributeName* ATTR_SANDBOX; - static nsHtml5AttributeName* ATTR_SUMMARY; - static nsHtml5AttributeName* ATTR_STANDBY; - static nsHtml5AttributeName* ATTR_REPLACE; - static nsHtml5AttributeName* ATTR_AUTOPLAY; - static nsHtml5AttributeName* ATTR_ADDITIVE; - static nsHtml5AttributeName* ATTR_CALCMODE; - static nsHtml5AttributeName* ATTR_CODETYPE; - static nsHtml5AttributeName* ATTR_CODEBASE; - static nsHtml5AttributeName* ATTR_CONTROLS; + static nsHtml5AttributeName* ATTR_V_IDEOGRAPHIC; + static nsHtml5AttributeName* ATTR_WORD_SPACING; + static nsHtml5AttributeName* ATTR_ACCENTUNDER; + static nsHtml5AttributeName* ATTR_ACCEPT_CHARSET; + static nsHtml5AttributeName* ATTR_ACCESSKEY; + static nsHtml5AttributeName* ATTR_ACCENT_HEIGHT; + static nsHtml5AttributeName* ATTR_ACCENT; + static nsHtml5AttributeName* ATTR_ASCENT; + static nsHtml5AttributeName* ATTR_ACCEPT; static nsHtml5AttributeName* ATTR_BEVELLED; + static nsHtml5AttributeName* ATTR_BASEFREQUENCY; + static nsHtml5AttributeName* ATTR_BASELINE_SHIFT; + static nsHtml5AttributeName* ATTR_BASEPROFILE; static nsHtml5AttributeName* ATTR_BASELINE; - static nsHtml5AttributeName* ATTR_EXPONENT; - static nsHtml5AttributeName* ATTR_EDGEMODE; - static nsHtml5AttributeName* ATTR_ENCODING; - static nsHtml5AttributeName* ATTR_GLYPHREF; + static nsHtml5AttributeName* ATTR_BASE; + static nsHtml5AttributeName* ATTR_CODE; + static nsHtml5AttributeName* ATTR_CODETYPE; + static nsHtml5AttributeName* ATTR_CODEBASE; + static nsHtml5AttributeName* ATTR_CITE; + static nsHtml5AttributeName* ATTR_DEFER; static nsHtml5AttributeName* ATTR_DATETIME; - static nsHtml5AttributeName* ATTR_DISABLED; - static nsHtml5AttributeName* ATTR_FONTSIZE; - static nsHtml5AttributeName* ATTR_KEYTIMES; - static nsHtml5AttributeName* ATTR_PANOSE_1; - static nsHtml5AttributeName* ATTR_HREFLANG; - static nsHtml5AttributeName* ATTR_ONRESIZE; - static nsHtml5AttributeName* ATTR_ONCHANGE; - static nsHtml5AttributeName* ATTR_ONBOUNCE; - static nsHtml5AttributeName* ATTR_ONUNLOAD; - static nsHtml5AttributeName* ATTR_ONFINISH; - static nsHtml5AttributeName* ATTR_ONSCROLL; - static nsHtml5AttributeName* ATTR_OPERATOR; - static nsHtml5AttributeName* ATTR_OVERFLOW; - static nsHtml5AttributeName* ATTR_ONSUBMIT; - static nsHtml5AttributeName* ATTR_ONREPEAT; - static nsHtml5AttributeName* ATTR_ONSELECT; - static nsHtml5AttributeName* ATTR_NOTATION; - static nsHtml5AttributeName* ATTR_NORESIZE; - static nsHtml5AttributeName* ATTR_MANIFEST; - static nsHtml5AttributeName* ATTR_MATHSIZE; - static nsHtml5AttributeName* ATTR_MULTIPLE; - static nsHtml5AttributeName* ATTR_LONGDESC; - static nsHtml5AttributeName* ATTR_LANGUAGE; - static nsHtml5AttributeName* ATTR_TEMPLATE; - static nsHtml5AttributeName* ATTR_TABINDEX; - static nsHtml5AttributeName* ATTR_PROPERTY; - static nsHtml5AttributeName* ATTR_READONLY; - static nsHtml5AttributeName* ATTR_SELECTED; - static nsHtml5AttributeName* ATTR_ROWLINES; - static nsHtml5AttributeName* ATTR_SEAMLESS; - static nsHtml5AttributeName* ATTR_ROWALIGN; - static nsHtml5AttributeName* ATTR_STRETCHY; - static nsHtml5AttributeName* ATTR_REQUIRED; - static nsHtml5AttributeName* ATTR_XML_BASE; - static nsHtml5AttributeName* ATTR_XML_LANG; - static nsHtml5AttributeName* ATTR_X_HEIGHT; - static nsHtml5AttributeName* ATTR_ARIA_OWNS; - static nsHtml5AttributeName* ATTR_AUTOFOCUS; - static nsHtml5AttributeName* ATTR_ARIA_SORT; - static nsHtml5AttributeName* ATTR_ACCESSKEY; - static nsHtml5AttributeName* ATTR_ARIA_BUSY; - static nsHtml5AttributeName* ATTR_ARIA_GRAB; - static nsHtml5AttributeName* ATTR_AMPLITUDE; - static nsHtml5AttributeName* ATTR_ARIA_LIVE; - static nsHtml5AttributeName* ATTR_CLIP_RULE; - static nsHtml5AttributeName* ATTR_CLIP_PATH; - static nsHtml5AttributeName* ATTR_EQUALROWS; - static nsHtml5AttributeName* ATTR_ELEVATION; static nsHtml5AttributeName* ATTR_DIRECTION; - static nsHtml5AttributeName* ATTR_DRAGGABLE; - static nsHtml5AttributeName* ATTR_FILL_RULE; - static nsHtml5AttributeName* ATTR_FONTSTYLE; - static nsHtml5AttributeName* ATTR_FONT_SIZE; - static nsHtml5AttributeName* ATTR_KEYSYSTEM; - static nsHtml5AttributeName* ATTR_KEYPOINTS; + static nsHtml5AttributeName* ATTR_EDGEMODE; + static nsHtml5AttributeName* ATTR_EDGE; + static nsHtml5AttributeName* ATTR_FACE; static nsHtml5AttributeName* ATTR_HIDEFOCUS; - static nsHtml5AttributeName* ATTR_ONMESSAGE; + static nsHtml5AttributeName* ATTR_INDEX; + static nsHtml5AttributeName* ATTR_IRRELEVANT; static nsHtml5AttributeName* ATTR_INTERCEPT; - static nsHtml5AttributeName* ATTR_ONDRAGEND; - static nsHtml5AttributeName* ATTR_ONMOVEEND; - static nsHtml5AttributeName* ATTR_ONINVALID; static nsHtml5AttributeName* ATTR_INTEGRITY; - static nsHtml5AttributeName* ATTR_ONKEYDOWN; - static nsHtml5AttributeName* ATTR_ONFOCUSIN; - static nsHtml5AttributeName* ATTR_ONMOUSEUP; - static nsHtml5AttributeName* ATTR_INPUTMODE; - static nsHtml5AttributeName* ATTR_ONROWEXIT; - static nsHtml5AttributeName* ATTR_MATHCOLOR; - static nsHtml5AttributeName* ATTR_MASKUNITS; - static nsHtml5AttributeName* ATTR_MAXLENGTH; static nsHtml5AttributeName* ATTR_LINEBREAK; - static nsHtml5AttributeName* ATTR_TRANSFORM; - static nsHtml5AttributeName* ATTR_V_HANGING; - static nsHtml5AttributeName* ATTR_VALUETYPE; - static nsHtml5AttributeName* ATTR_POINTSATZ; - static nsHtml5AttributeName* ATTR_POINTSATX; - static nsHtml5AttributeName* ATTR_POINTSATY; - static nsHtml5AttributeName* ATTR_SYMMETRIC; - static nsHtml5AttributeName* ATTR_SCROLLING; + static nsHtml5AttributeName* ATTR_LABEL; + static nsHtml5AttributeName* ATTR_LINETHICKNESS; + static nsHtml5AttributeName* ATTR_MODE; + static nsHtml5AttributeName* ATTR_NAME; + static nsHtml5AttributeName* ATTR_NORESIZE; + static nsHtml5AttributeName* ATTR_ONBEFOREUNLOAD; + static nsHtml5AttributeName* ATTR_ONREPEAT; + static nsHtml5AttributeName* ATTR_OBJECT; + static nsHtml5AttributeName* ATTR_ONSELECT; + static nsHtml5AttributeName* ATTR_ORDER; + static nsHtml5AttributeName* ATTR_OTHER; + static nsHtml5AttributeName* ATTR_ONRESET; + static nsHtml5AttributeName* ATTR_ONCELLCHANGE; + static nsHtml5AttributeName* ATTR_ONREADYSTATECHANGE; + static nsHtml5AttributeName* ATTR_ONMESSAGE; + static nsHtml5AttributeName* ATTR_ONBEGIN; + static nsHtml5AttributeName* ATTR_ONHELP; + static nsHtml5AttributeName* ATTR_ONBEFOREPRINT; + static nsHtml5AttributeName* ATTR_ORIENT; + static nsHtml5AttributeName* ATTR_ORIENTATION; + static nsHtml5AttributeName* ATTR_ONBEFORECOPY; + static nsHtml5AttributeName* ATTR_ONSELECTSTART; + static nsHtml5AttributeName* ATTR_ONBEFOREPASTE; + static nsHtml5AttributeName* ATTR_ONBEFOREUPDATE; + static nsHtml5AttributeName* ATTR_ONDEACTIVATE; + static nsHtml5AttributeName* ATTR_ONBEFOREACTIVATE; + static nsHtml5AttributeName* ATTR_ONBEFORDEACTIVATE; + static nsHtml5AttributeName* ATTR_ONKEYPRESS; + static nsHtml5AttributeName* ATTR_ONKEYUP; + static nsHtml5AttributeName* ATTR_ONBEFOREEDITFOCUS; + static nsHtml5AttributeName* ATTR_ONBEFORECUT; + static nsHtml5AttributeName* ATTR_ONKEYDOWN; + static nsHtml5AttributeName* ATTR_ONRESIZE; + static nsHtml5AttributeName* ATTR_REPEAT; + static nsHtml5AttributeName* ATTR_REPEAT_MAX; + static nsHtml5AttributeName* ATTR_REFERRERPOLICY; + static nsHtml5AttributeName* ATTR_RULES; + static nsHtml5AttributeName* ATTR_REPEAT_MIN; + static nsHtml5AttributeName* ATTR_ROLE; + static nsHtml5AttributeName* ATTR_REPEATCOUNT; + static nsHtml5AttributeName* ATTR_REPEAT_START; + static nsHtml5AttributeName* ATTR_REPEAT_TEMPLATE; static nsHtml5AttributeName* ATTR_REPEATDUR; + static nsHtml5AttributeName* ATTR_SELECTED; + static nsHtml5AttributeName* ATTR_SPEED; + static nsHtml5AttributeName* ATTR_SIZES; + static nsHtml5AttributeName* ATTR_SUPERSCRIPTSHIFT; + static nsHtml5AttributeName* ATTR_STRETCHY; + static nsHtml5AttributeName* ATTR_SCHEME; + static nsHtml5AttributeName* ATTR_SPREADMETHOD; static nsHtml5AttributeName* ATTR_SELECTION; - static nsHtml5AttributeName* ATTR_SEPARATOR; - static nsHtml5AttributeName* ATTR_XML_SPACE; - static nsHtml5AttributeName* ATTR_AUTOSUBMIT; + static nsHtml5AttributeName* ATTR_SIZE; + static nsHtml5AttributeName* ATTR_TYPE; + static nsHtml5AttributeName* ATTR_UNSELECTABLE; + static nsHtml5AttributeName* ATTR_UNDERLINE_POSITION; + static nsHtml5AttributeName* ATTR_UNDERLINE_THICKNESS; + static nsHtml5AttributeName* ATTR_X_HEIGHT; + static nsHtml5AttributeName* ATTR_DIFFUSECONSTANT; + static nsHtml5AttributeName* ATTR_HREF; + static nsHtml5AttributeName* ATTR_HREFLANG; + static nsHtml5AttributeName* ATTR_ONAFTERPRINT; + static nsHtml5AttributeName* ATTR_ONAFTERUPDATE; + static nsHtml5AttributeName* ATTR_PROFILE; + static nsHtml5AttributeName* ATTR_SURFACESCALE; + static nsHtml5AttributeName* ATTR_XREF; + static nsHtml5AttributeName* ATTR_ALIGN; + static nsHtml5AttributeName* ATTR_ALIGNMENT_BASELINE; + static nsHtml5AttributeName* ATTR_ALIGNMENTSCOPE; + static nsHtml5AttributeName* ATTR_DRAGGABLE; + static nsHtml5AttributeName* ATTR_HEIGHT; + static nsHtml5AttributeName* ATTR_HANGING; + static nsHtml5AttributeName* ATTR_IMAGE_RENDERING; + static nsHtml5AttributeName* ATTR_LANGUAGE; + static nsHtml5AttributeName* ATTR_LANG; + static nsHtml5AttributeName* ATTR_LARGEOP; + static nsHtml5AttributeName* ATTR_LONGDESC; + static nsHtml5AttributeName* ATTR_LENGTHADJUST; + static nsHtml5AttributeName* ATTR_MARGINHEIGHT; + static nsHtml5AttributeName* ATTR_MARGINWIDTH; + static nsHtml5AttributeName* ATTR_NARGS; + static nsHtml5AttributeName* ATTR_ORIGIN; + static nsHtml5AttributeName* ATTR_PING; + static nsHtml5AttributeName* ATTR_TARGET; + static nsHtml5AttributeName* ATTR_TARGETX; + static nsHtml5AttributeName* ATTR_TARGETY; static nsHtml5AttributeName* ATTR_ALPHABETIC; + static nsHtml5AttributeName* ATTR_ARCHIVE; + static nsHtml5AttributeName* ATTR_HIGH; + static nsHtml5AttributeName* ATTR_LIGHTING_COLOR; + static nsHtml5AttributeName* ATTR_MATHEMATICAL; + static nsHtml5AttributeName* ATTR_MATHBACKGROUND; + static nsHtml5AttributeName* ATTR_METHOD; + static nsHtml5AttributeName* ATTR_MATHVARIANT; + static nsHtml5AttributeName* ATTR_MATHCOLOR; + static nsHtml5AttributeName* ATTR_MATHSIZE; + static nsHtml5AttributeName* ATTR_NOSHADE; + static nsHtml5AttributeName* ATTR_ONCHANGE; + static nsHtml5AttributeName* ATTR_PATHLENGTH; + static nsHtml5AttributeName* ATTR_PATH; + static nsHtml5AttributeName* ATTR_ALTIMG; static nsHtml5AttributeName* ATTR_ACTIONTYPE; - static nsHtml5AttributeName* ATTR_ACCUMULATE; - static nsHtml5AttributeName* ATTR_ARIA_LEVEL; - static nsHtml5AttributeName* ATTR_COLUMNSPAN; - static nsHtml5AttributeName* ATTR_CAP_HEIGHT; + static nsHtml5AttributeName* ATTR_ACTION; + static nsHtml5AttributeName* ATTR_ACTIVE; + static nsHtml5AttributeName* ATTR_ADDITIVE; + static nsHtml5AttributeName* ATTR_BEGIN; + static nsHtml5AttributeName* ATTR_DOMINANT_BASELINE; + static nsHtml5AttributeName* ATTR_DIVISOR; + static nsHtml5AttributeName* ATTR_DEFINITIONURL; + static nsHtml5AttributeName* ATTR_HORIZ_ADV_X; + static nsHtml5AttributeName* ATTR_HORIZ_ORIGIN_X; + static nsHtml5AttributeName* ATTR_HORIZ_ORIGIN_Y; + static nsHtml5AttributeName* ATTR_LIMITINGCONEANGLE; + static nsHtml5AttributeName* ATTR_MEDIUMMATHSPACE; + static nsHtml5AttributeName* ATTR_MEDIA; + static nsHtml5AttributeName* ATTR_MANIFEST; + static nsHtml5AttributeName* ATTR_ONFILTERCHANGE; + static nsHtml5AttributeName* ATTR_ONFINISH; + static nsHtml5AttributeName* ATTR_OPTIMUM; + static nsHtml5AttributeName* ATTR_RADIOGROUP; + static nsHtml5AttributeName* ATTR_RADIUS; + static nsHtml5AttributeName* ATTR_SCRIPTLEVEL; + static nsHtml5AttributeName* ATTR_SCRIPTSIZEMULTIPLIER; + static nsHtml5AttributeName* ATTR_STRING; + static nsHtml5AttributeName* ATTR_STRIKETHROUGH_POSITION; + static nsHtml5AttributeName* ATTR_STRIKETHROUGH_THICKNESS; + static nsHtml5AttributeName* ATTR_SCRIPTMINSIZE; + static nsHtml5AttributeName* ATTR_TABINDEX; + static nsHtml5AttributeName* ATTR_VALIGN; + static nsHtml5AttributeName* ATTR_VISIBILITY; static nsHtml5AttributeName* ATTR_BACKGROUND; - static nsHtml5AttributeName* ATTR_GLYPH_NAME; - static nsHtml5AttributeName* ATTR_GROUPALIGN; - static nsHtml5AttributeName* ATTR_FONTFAMILY; - static nsHtml5AttributeName* ATTR_FONTWEIGHT; - static nsHtml5AttributeName* ATTR_FONT_STYLE; - static nsHtml5AttributeName* ATTR_KEYSPLINES; - static nsHtml5AttributeName* ATTR_HTTP_EQUIV; - static nsHtml5AttributeName* ATTR_ONACTIVATE; - static nsHtml5AttributeName* ATTR_OCCURRENCE; - static nsHtml5AttributeName* ATTR_IRRELEVANT; - static nsHtml5AttributeName* ATTR_ONDBLCLICK; - static nsHtml5AttributeName* ATTR_ONDRAGDROP; - static nsHtml5AttributeName* ATTR_ONKEYPRESS; - static nsHtml5AttributeName* ATTR_ONROWENTER; - static nsHtml5AttributeName* ATTR_ONDRAGOVER; - static nsHtml5AttributeName* ATTR_ONFOCUSOUT; - static nsHtml5AttributeName* ATTR_ONMOUSEOUT; - static nsHtml5AttributeName* ATTR_NUMOCTAVES; + static nsHtml5AttributeName* ATTR_LINK; static nsHtml5AttributeName* ATTR_MARKER_MID; + static nsHtml5AttributeName* ATTR_MARKERHEIGHT; static nsHtml5AttributeName* ATTR_MARKER_END; - static nsHtml5AttributeName* ATTR_TEXTLENGTH; - static nsHtml5AttributeName* ATTR_VISIBILITY; - static nsHtml5AttributeName* ATTR_VIEWTARGET; - static nsHtml5AttributeName* ATTR_VERT_ADV_Y; - static nsHtml5AttributeName* ATTR_PATHLENGTH; - static nsHtml5AttributeName* ATTR_REPEAT_MAX; - static nsHtml5AttributeName* ATTR_RADIOGROUP; - static nsHtml5AttributeName* ATTR_STOP_COLOR; - static nsHtml5AttributeName* ATTR_SEPARATORS; - static nsHtml5AttributeName* ATTR_REPEAT_MIN; - static nsHtml5AttributeName* ATTR_ROWSPACING; + static nsHtml5AttributeName* ATTR_MASK; + static nsHtml5AttributeName* ATTR_MARKER_START; + static nsHtml5AttributeName* ATTR_MARKERWIDTH; + static nsHtml5AttributeName* ATTR_MASKUNITS; + static nsHtml5AttributeName* ATTR_MARKERUNITS; + static nsHtml5AttributeName* ATTR_MASKCONTENTUNITS; + static nsHtml5AttributeName* ATTR_AMPLITUDE; + static nsHtml5AttributeName* ATTR_CELLSPACING; + static nsHtml5AttributeName* ATTR_CELLPADDING; + static nsHtml5AttributeName* ATTR_DECLARE; + static nsHtml5AttributeName* ATTR_FILL_RULE; + static nsHtml5AttributeName* ATTR_FILL; + static nsHtml5AttributeName* ATTR_FILL_OPACITY; + static nsHtml5AttributeName* ATTR_MAXLENGTH; + static nsHtml5AttributeName* ATTR_ONCLICK; + static nsHtml5AttributeName* ATTR_ONBLUR; + static nsHtml5AttributeName* ATTR_REPLACE; + static nsHtml5AttributeName* ATTR_ROWLINES; + static nsHtml5AttributeName* ATTR_SCALE; + static nsHtml5AttributeName* ATTR_STYLE; + static nsHtml5AttributeName* ATTR_TABLEVALUES; + static nsHtml5AttributeName* ATTR_TITLE; + static nsHtml5AttributeName* ATTR_V_ALPHABETIC; + static nsHtml5AttributeName* ATTR_AZIMUTH; + static nsHtml5AttributeName* ATTR_FORMAT; + static nsHtml5AttributeName* ATTR_FRAMEBORDER; + static nsHtml5AttributeName* ATTR_FRAME; + static nsHtml5AttributeName* ATTR_FRAMESPACING; + static nsHtml5AttributeName* ATTR_FROM; + static nsHtml5AttributeName* ATTR_FORM; + static nsHtml5AttributeName* ATTR_PROMPT; + static nsHtml5AttributeName* ATTR_PRIMITIVEUNITS; + static nsHtml5AttributeName* ATTR_SYMMETRIC; + static nsHtml5AttributeName* ATTR_STEMH; + static nsHtml5AttributeName* ATTR_STEMV; + static nsHtml5AttributeName* ATTR_SEAMLESS; + static nsHtml5AttributeName* ATTR_SUMMARY; + static nsHtml5AttributeName* ATTR_USEMAP; static nsHtml5AttributeName* ATTR_ZOOMANDPAN; - static nsHtml5AttributeName* ATTR_XLINK_TYPE; - static nsHtml5AttributeName* ATTR_XLINK_ROLE; + static nsHtml5AttributeName* ATTR_ASYNC; + static nsHtml5AttributeName* ATTR_ALINK; + static nsHtml5AttributeName* ATTR_IN; + static nsHtml5AttributeName* ATTR_ICON; + static nsHtml5AttributeName* ATTR_KERNELMATRIX; + static nsHtml5AttributeName* ATTR_KERNING; + static nsHtml5AttributeName* ATTR_KERNELUNITLENGTH; + static nsHtml5AttributeName* ATTR_ONUNLOAD; + static nsHtml5AttributeName* ATTR_OPEN; + static nsHtml5AttributeName* ATTR_ONINVALID; + static nsHtml5AttributeName* ATTR_ONEND; + static nsHtml5AttributeName* ATTR_ONINPUT; + static nsHtml5AttributeName* ATTR_POINTER_EVENTS; + static nsHtml5AttributeName* ATTR_POINTS; + static nsHtml5AttributeName* ATTR_POINTSATX; + static nsHtml5AttributeName* ATTR_POINTSATY; + static nsHtml5AttributeName* ATTR_POINTSATZ; + static nsHtml5AttributeName* ATTR_SPAN; + static nsHtml5AttributeName* ATTR_STANDBY; + static nsHtml5AttributeName* ATTR_THINMATHSPACE; + static nsHtml5AttributeName* ATTR_TRANSFORM; + static nsHtml5AttributeName* ATTR_VLINK; + static nsHtml5AttributeName* ATTR_WHEN; static nsHtml5AttributeName* ATTR_XLINK_HREF; + static nsHtml5AttributeName* ATTR_XLINK_TITLE; + static nsHtml5AttributeName* ATTR_XLINK_ROLE; + static nsHtml5AttributeName* ATTR_XLINK_ARCROLE; + static nsHtml5AttributeName* ATTR_XMLNS_XLINK; + static nsHtml5AttributeName* ATTR_XMLNS; + static nsHtml5AttributeName* ATTR_XLINK_TYPE; static nsHtml5AttributeName* ATTR_XLINK_SHOW; - static nsHtml5AttributeName* ATTR_ACCENTUNDER; - static nsHtml5AttributeName* ATTR_ARIA_SECRET; - static nsHtml5AttributeName* ATTR_ARIA_ATOMIC; - static nsHtml5AttributeName* ATTR_ARIA_HIDDEN; - static nsHtml5AttributeName* ATTR_ARIA_FLOWTO; - static nsHtml5AttributeName* ATTR_ARABIC_FORM; - static nsHtml5AttributeName* ATTR_CELLPADDING; - static nsHtml5AttributeName* ATTR_CELLSPACING; - static nsHtml5AttributeName* ATTR_COLUMNWIDTH; - static nsHtml5AttributeName* ATTR_CROSSORIGIN; - static nsHtml5AttributeName* ATTR_COLUMNALIGN; - static nsHtml5AttributeName* ATTR_COLUMNLINES; - static nsHtml5AttributeName* ATTR_CONTEXTMENU; - static nsHtml5AttributeName* ATTR_BASEPROFILE; - static nsHtml5AttributeName* ATTR_FONT_FAMILY; - static nsHtml5AttributeName* ATTR_FRAMEBORDER; - static nsHtml5AttributeName* ATTR_FILTERUNITS; + static nsHtml5AttributeName* ATTR_XLINK_ACTUATE; + static nsHtml5AttributeName* ATTR_AUTOPLAY; + static nsHtml5AttributeName* ATTR_AUTOSUBMIT; + static nsHtml5AttributeName* ATTR_AUTOCOMPLETE; + static nsHtml5AttributeName* ATTR_AUTOFOCUS; + static nsHtml5AttributeName* ATTR_BGCOLOR; + static nsHtml5AttributeName* ATTR_COLOR_PROFILE; + static nsHtml5AttributeName* ATTR_COLOR_RENDERING; + static nsHtml5AttributeName* ATTR_COLOR_INTERPOLATION; + static nsHtml5AttributeName* ATTR_COLOR; + static nsHtml5AttributeName* ATTR_COLOR_INTERPOLATION_FILTERS; + static nsHtml5AttributeName* ATTR_ENCODING; + static nsHtml5AttributeName* ATTR_EXPONENT; static nsHtml5AttributeName* ATTR_FLOOD_COLOR; - static nsHtml5AttributeName* ATTR_FONT_WEIGHT; - static nsHtml5AttributeName* ATTR_HORIZ_ADV_X; - static nsHtml5AttributeName* ATTR_ONDRAGLEAVE; - static nsHtml5AttributeName* ATTR_ONMOUSEMOVE; - static nsHtml5AttributeName* ATTR_ORIENTATION; - static nsHtml5AttributeName* ATTR_ONMOUSEDOWN; - static nsHtml5AttributeName* ATTR_ONMOUSEOVER; - static nsHtml5AttributeName* ATTR_ONDRAGENTER; + static nsHtml5AttributeName* ATTR_FLOOD_OPACITY; static nsHtml5AttributeName* ATTR_IDEOGRAPHIC; - static nsHtml5AttributeName* ATTR_ONBEFORECUT; - static nsHtml5AttributeName* ATTR_ONFORMINPUT; - static nsHtml5AttributeName* ATTR_ONDRAGSTART; + static nsHtml5AttributeName* ATTR_LQUOTE; + static nsHtml5AttributeName* ATTR_PANOSE_1; + static nsHtml5AttributeName* ATTR_NUMOCTAVES; + static nsHtml5AttributeName* ATTR_ONLOAD; + static nsHtml5AttributeName* ATTR_ONBOUNCE; + static nsHtml5AttributeName* ATTR_ONCONTROLSELECT; + static nsHtml5AttributeName* ATTR_ONROWSINSERTED; + static nsHtml5AttributeName* ATTR_ONMOUSEWHEEL; + static nsHtml5AttributeName* ATTR_ONROWENTER; + static nsHtml5AttributeName* ATTR_ONMOUSEENTER; + static nsHtml5AttributeName* ATTR_ONMOUSEOVER; + static nsHtml5AttributeName* ATTR_ONFORMCHANGE; + static nsHtml5AttributeName* ATTR_ONFOCUSIN; + static nsHtml5AttributeName* ATTR_ONROWEXIT; + static nsHtml5AttributeName* ATTR_ONMOVEEND; + static nsHtml5AttributeName* ATTR_ONCONTEXTMENU; + static nsHtml5AttributeName* ATTR_ONZOOM; + static nsHtml5AttributeName* ATTR_ONLOSECAPTURE; + static nsHtml5AttributeName* ATTR_ONCOPY; static nsHtml5AttributeName* ATTR_ONMOVESTART; - static nsHtml5AttributeName* ATTR_MARKERUNITS; - static nsHtml5AttributeName* ATTR_MATHVARIANT; - static nsHtml5AttributeName* ATTR_MARGINWIDTH; - static nsHtml5AttributeName* ATTR_MARKERWIDTH; - static nsHtml5AttributeName* ATTR_TEXT_ANCHOR; - static nsHtml5AttributeName* ATTR_TABLEVALUES; - static nsHtml5AttributeName* ATTR_SCRIPTLEVEL; - static nsHtml5AttributeName* ATTR_REPEATCOUNT; - static nsHtml5AttributeName* ATTR_STITCHTILES; - static nsHtml5AttributeName* ATTR_STARTOFFSET; - static nsHtml5AttributeName* ATTR_SCROLLDELAY; - static nsHtml5AttributeName* ATTR_XMLNS_XLINK; - static nsHtml5AttributeName* ATTR_XLINK_TITLE; - static nsHtml5AttributeName* ATTR_ARIA_INVALID; - static nsHtml5AttributeName* ATTR_ARIA_PRESSED; - static nsHtml5AttributeName* ATTR_ARIA_CHECKED; - static nsHtml5AttributeName* ATTR_AUTOCOMPLETE; - static nsHtml5AttributeName* ATTR_ARIA_SETSIZE; - static nsHtml5AttributeName* ATTR_ARIA_CHANNEL; - static nsHtml5AttributeName* ATTR_EQUALCOLUMNS; - static nsHtml5AttributeName* ATTR_DISPLAYSTYLE; - static nsHtml5AttributeName* ATTR_DATAFORMATAS; - static nsHtml5AttributeName* ATTR_FILL_OPACITY; - static nsHtml5AttributeName* ATTR_FONT_VARIANT; - static nsHtml5AttributeName* ATTR_FONT_STRETCH; - static nsHtml5AttributeName* ATTR_FRAMESPACING; - static nsHtml5AttributeName* ATTR_KERNELMATRIX; - static nsHtml5AttributeName* ATTR_ONDEACTIVATE; static nsHtml5AttributeName* ATTR_ONROWSDELETE; static nsHtml5AttributeName* ATTR_ONMOUSELEAVE; - static nsHtml5AttributeName* ATTR_ONFORMCHANGE; - static nsHtml5AttributeName* ATTR_ONCELLCHANGE; - static nsHtml5AttributeName* ATTR_ONMOUSEWHEEL; - static nsHtml5AttributeName* ATTR_ONMOUSEENTER; - static nsHtml5AttributeName* ATTR_ONAFTERPRINT; - static nsHtml5AttributeName* ATTR_ONBEFORECOPY; - static nsHtml5AttributeName* ATTR_MARGINHEIGHT; - static nsHtml5AttributeName* ATTR_MARKERHEIGHT; - static nsHtml5AttributeName* ATTR_MARKER_START; - static nsHtml5AttributeName* ATTR_MATHEMATICAL; - static nsHtml5AttributeName* ATTR_LENGTHADJUST; - static nsHtml5AttributeName* ATTR_UNSELECTABLE; - static nsHtml5AttributeName* ATTR_UNICODE_BIDI; - static nsHtml5AttributeName* ATTR_UNITS_PER_EM; - static nsHtml5AttributeName* ATTR_WORD_SPACING; - static nsHtml5AttributeName* ATTR_WRITING_MODE; - static nsHtml5AttributeName* ATTR_V_ALPHABETIC; - static nsHtml5AttributeName* ATTR_PATTERNUNITS; - static nsHtml5AttributeName* ATTR_SPREADMETHOD; - static nsHtml5AttributeName* ATTR_SURFACESCALE; + static nsHtml5AttributeName* ATTR_ONMOVE; + static nsHtml5AttributeName* ATTR_ONMOUSEMOVE; + static nsHtml5AttributeName* ATTR_ONMOUSEUP; + static nsHtml5AttributeName* ATTR_ONFOCUS; + static nsHtml5AttributeName* ATTR_ONMOUSEOUT; + static nsHtml5AttributeName* ATTR_ONFORMINPUT; + static nsHtml5AttributeName* ATTR_ONFOCUSOUT; + static nsHtml5AttributeName* ATTR_ONMOUSEDOWN; + static nsHtml5AttributeName* ATTR_TO; + static nsHtml5AttributeName* ATTR_RQUOTE; + static nsHtml5AttributeName* ATTR_STROKE_LINECAP; + static nsHtml5AttributeName* ATTR_SCROLLDELAY; + static nsHtml5AttributeName* ATTR_STROKE_DASHARRAY; + static nsHtml5AttributeName* ATTR_STROKE_DASHOFFSET; + static nsHtml5AttributeName* ATTR_STROKE_LINEJOIN; + static nsHtml5AttributeName* ATTR_STROKE_MITERLIMIT; + static nsHtml5AttributeName* ATTR_STROKE; + static nsHtml5AttributeName* ATTR_SCROLLING; static nsHtml5AttributeName* ATTR_STROKE_WIDTH; - static nsHtml5AttributeName* ATTR_REPEAT_START; - static nsHtml5AttributeName* ATTR_STDDEVIATION; + static nsHtml5AttributeName* ATTR_STROKE_OPACITY; + static nsHtml5AttributeName* ATTR_COMPACT; + static nsHtml5AttributeName* ATTR_CLIP; + static nsHtml5AttributeName* ATTR_CLIP_RULE; + static nsHtml5AttributeName* ATTR_CLIP_PATH; + static nsHtml5AttributeName* ATTR_CLIPPATHUNITS; + static nsHtml5AttributeName* ATTR_DISPLAY; + static nsHtml5AttributeName* ATTR_DISPLAYSTYLE; + static nsHtml5AttributeName* ATTR_GLYPH_ORIENTATION_VERTICAL; + static nsHtml5AttributeName* ATTR_GLYPH_ORIENTATION_HORIZONTAL; + static nsHtml5AttributeName* ATTR_GLYPHREF; + static nsHtml5AttributeName* ATTR_GLYPH_NAME; + static nsHtml5AttributeName* ATTR_HTTP_EQUIV; + static nsHtml5AttributeName* ATTR_KEYPOINTS; + static nsHtml5AttributeName* ATTR_LOOP; + static nsHtml5AttributeName* ATTR_PROPERTY; + static nsHtml5AttributeName* ATTR_SCOPED; + static nsHtml5AttributeName* ATTR_STEP; + static nsHtml5AttributeName* ATTR_SHAPE_RENDERING; + static nsHtml5AttributeName* ATTR_SCOPE; + static nsHtml5AttributeName* ATTR_SHAPE; + static nsHtml5AttributeName* ATTR_SLOPE; + static nsHtml5AttributeName* ATTR_STOP_COLOR; static nsHtml5AttributeName* ATTR_STOP_OPACITY; - static nsHtml5AttributeName* ATTR_ARIA_CONTROLS; - static nsHtml5AttributeName* ATTR_ARIA_HASPOPUP; - static nsHtml5AttributeName* ATTR_ACCENT_HEIGHT; - static nsHtml5AttributeName* ATTR_ARIA_VALUENOW; - static nsHtml5AttributeName* ATTR_ARIA_RELEVANT; - static nsHtml5AttributeName* ATTR_ARIA_POSINSET; - static nsHtml5AttributeName* ATTR_ARIA_VALUEMAX; - static nsHtml5AttributeName* ATTR_ARIA_READONLY; - static nsHtml5AttributeName* ATTR_ARIA_SELECTED; - static nsHtml5AttributeName* ATTR_ARIA_REQUIRED; - static nsHtml5AttributeName* ATTR_ARIA_EXPANDED; - static nsHtml5AttributeName* ATTR_ARIA_DISABLED; - static nsHtml5AttributeName* ATTR_ATTRIBUTETYPE; + static nsHtml5AttributeName* ATTR_TEMPLATE; + static nsHtml5AttributeName* ATTR_WRAP; + static nsHtml5AttributeName* ATTR_ABBR; static nsHtml5AttributeName* ATTR_ATTRIBUTENAME; - static nsHtml5AttributeName* ATTR_ARIA_DATATYPE; - static nsHtml5AttributeName* ATTR_ARIA_VALUEMIN; - static nsHtml5AttributeName* ATTR_BASEFREQUENCY; - static nsHtml5AttributeName* ATTR_COLUMNSPACING; - static nsHtml5AttributeName* ATTR_COLOR_PROFILE; - static nsHtml5AttributeName* ATTR_CLIPPATHUNITS; - static nsHtml5AttributeName* ATTR_DEFINITIONURL; - static nsHtml5AttributeName* ATTR_GRADIENTUNITS; - static nsHtml5AttributeName* ATTR_FLOOD_OPACITY; - static nsHtml5AttributeName* ATTR_ONAFTERUPDATE; + static nsHtml5AttributeName* ATTR_ATTRIBUTETYPE; + static nsHtml5AttributeName* ATTR_CHAR; + static nsHtml5AttributeName* ATTR_COORDS; + static nsHtml5AttributeName* ATTR_CHAROFF; + static nsHtml5AttributeName* ATTR_CHARSET; + static nsHtml5AttributeName* ATTR_MACROS; + static nsHtml5AttributeName* ATTR_NOWRAP; + static nsHtml5AttributeName* ATTR_NOHREF; + static nsHtml5AttributeName* ATTR_ONDRAG; + static nsHtml5AttributeName* ATTR_ONDRAGENTER; + static nsHtml5AttributeName* ATTR_ONDRAGOVER; + static nsHtml5AttributeName* ATTR_ONPROPERTYCHANGE; + static nsHtml5AttributeName* ATTR_ONDRAGEND; + static nsHtml5AttributeName* ATTR_ONDROP; + static nsHtml5AttributeName* ATTR_ONDRAGDROP; + static nsHtml5AttributeName* ATTR_OVERLINE_POSITION; + static nsHtml5AttributeName* ATTR_ONERROR; + static nsHtml5AttributeName* ATTR_OPERATOR; + static nsHtml5AttributeName* ATTR_OVERFLOW; + static nsHtml5AttributeName* ATTR_ONDRAGSTART; static nsHtml5AttributeName* ATTR_ONERRORUPDATE; - static nsHtml5AttributeName* ATTR_ONBEFOREPASTE; - static nsHtml5AttributeName* ATTR_ONLOSECAPTURE; - static nsHtml5AttributeName* ATTR_ONCONTEXTMENU; - static nsHtml5AttributeName* ATTR_ONSELECTSTART; - static nsHtml5AttributeName* ATTR_ONBEFOREPRINT; - static nsHtml5AttributeName* ATTR_MOVABLELIMITS; - static nsHtml5AttributeName* ATTR_LINETHICKNESS; - static nsHtml5AttributeName* ATTR_UNICODE_RANGE; - static nsHtml5AttributeName* ATTR_THINMATHSPACE; - static nsHtml5AttributeName* ATTR_VERT_ORIGIN_X; - static nsHtml5AttributeName* ATTR_VERT_ORIGIN_Y; - static nsHtml5AttributeName* ATTR_V_IDEOGRAPHIC; + static nsHtml5AttributeName* ATTR_OVERLINE_THICKNESS; + static nsHtml5AttributeName* ATTR_ONDRAGLEAVE; + static nsHtml5AttributeName* ATTR_STARTOFFSET; + static nsHtml5AttributeName* ATTR_START; + static nsHtml5AttributeName* ATTR_AXIS; + static nsHtml5AttributeName* ATTR_BIAS; + static nsHtml5AttributeName* ATTR_COLSPAN; + static nsHtml5AttributeName* ATTR_CLASSID; + static nsHtml5AttributeName* ATTR_CROSSORIGIN; + static nsHtml5AttributeName* ATTR_COLS; + static nsHtml5AttributeName* ATTR_CURSOR; + static nsHtml5AttributeName* ATTR_CLOSURE; + static nsHtml5AttributeName* ATTR_CLOSE; + static nsHtml5AttributeName* ATTR_CLASS; + static nsHtml5AttributeName* ATTR_IS; + static nsHtml5AttributeName* ATTR_KEYSYSTEM; + static nsHtml5AttributeName* ATTR_KEYSPLINES; + static nsHtml5AttributeName* ATTR_LOWSRC; + static nsHtml5AttributeName* ATTR_MAXSIZE; + static nsHtml5AttributeName* ATTR_MINSIZE; + static nsHtml5AttributeName* ATTR_OFFSET; static nsHtml5AttributeName* ATTR_PRESERVEALPHA; - static nsHtml5AttributeName* ATTR_SCRIPTMINSIZE; - static nsHtml5AttributeName* ATTR_SPECIFICATION; - static nsHtml5AttributeName* ATTR_XLINK_ACTUATE; - static nsHtml5AttributeName* ATTR_XLINK_ARCROLE; - static nsHtml5AttributeName* ATTR_ACCEPT_CHARSET; - static nsHtml5AttributeName* ATTR_ALIGNMENTSCOPE; - static nsHtml5AttributeName* ATTR_ARIA_MULTILINE; - static nsHtml5AttributeName* ATTR_BASELINE_SHIFT; - static nsHtml5AttributeName* ATTR_HORIZ_ORIGIN_X; - static nsHtml5AttributeName* ATTR_HORIZ_ORIGIN_Y; - static nsHtml5AttributeName* ATTR_ONBEFOREUPDATE; - static nsHtml5AttributeName* ATTR_ONFILTERCHANGE; - static nsHtml5AttributeName* ATTR_ONROWSINSERTED; - static nsHtml5AttributeName* ATTR_ONBEFOREUNLOAD; - static nsHtml5AttributeName* ATTR_MATHBACKGROUND; - static nsHtml5AttributeName* ATTR_LETTER_SPACING; - static nsHtml5AttributeName* ATTR_LIGHTING_COLOR; - static nsHtml5AttributeName* ATTR_THICKMATHSPACE; - static nsHtml5AttributeName* ATTR_TEXT_RENDERING; - static nsHtml5AttributeName* ATTR_V_MATHEMATICAL; - static nsHtml5AttributeName* ATTR_POINTER_EVENTS; - static nsHtml5AttributeName* ATTR_PRIMITIVEUNITS; - static nsHtml5AttributeName* ATTR_REFERRERPOLICY; - static nsHtml5AttributeName* ATTR_SYSTEMLANGUAGE; - static nsHtml5AttributeName* ATTR_STROKE_LINECAP; + static nsHtml5AttributeName* ATTR_PRESERVEASPECTRATIO; + static nsHtml5AttributeName* ATTR_ROWSPAN; + static nsHtml5AttributeName* ATTR_ROWSPACING; + static nsHtml5AttributeName* ATTR_ROWS; + static nsHtml5AttributeName* ATTR_SRCSET; static nsHtml5AttributeName* ATTR_SUBSCRIPTSHIFT; - static nsHtml5AttributeName* ATTR_STROKE_OPACITY; - static nsHtml5AttributeName* ATTR_ARIA_DROPEFFECT; - static nsHtml5AttributeName* ATTR_ARIA_LABELLEDBY; - static nsHtml5AttributeName* ATTR_ARIA_TEMPLATEID; - static nsHtml5AttributeName* ATTR_COLOR_RENDERING; + static nsHtml5AttributeName* ATTR_VERSION; + static nsHtml5AttributeName* ATTR_ALTTEXT; static nsHtml5AttributeName* ATTR_CONTENTEDITABLE; - static nsHtml5AttributeName* ATTR_DIFFUSECONSTANT; - static nsHtml5AttributeName* ATTR_ONDATAAVAILABLE; - static nsHtml5AttributeName* ATTR_ONCONTROLSELECT; - static nsHtml5AttributeName* ATTR_IMAGE_RENDERING; - static nsHtml5AttributeName* ATTR_MEDIUMMATHSPACE; - static nsHtml5AttributeName* ATTR_TEXT_DECORATION; - static nsHtml5AttributeName* ATTR_SHAPE_RENDERING; - static nsHtml5AttributeName* ATTR_STROKE_LINEJOIN; - static nsHtml5AttributeName* ATTR_REPEAT_TEMPLATE; - static nsHtml5AttributeName* ATTR_ARIA_DESCRIBEDBY; + static nsHtml5AttributeName* ATTR_CONTROLS; + static nsHtml5AttributeName* ATTR_CONTENT; + static nsHtml5AttributeName* ATTR_CONTEXTMENU; + static nsHtml5AttributeName* ATTR_DEPTH; + static nsHtml5AttributeName* ATTR_ENCTYPE; + static nsHtml5AttributeName* ATTR_FONT_STRETCH; + static nsHtml5AttributeName* ATTR_FILTER; + static nsHtml5AttributeName* ATTR_FONTWEIGHT; + static nsHtml5AttributeName* ATTR_FONT_WEIGHT; + static nsHtml5AttributeName* ATTR_FONTSTYLE; + static nsHtml5AttributeName* ATTR_FONT_STYLE; + static nsHtml5AttributeName* ATTR_FONTFAMILY; + static nsHtml5AttributeName* ATTR_FONT_FAMILY; + static nsHtml5AttributeName* ATTR_FONT_VARIANT; static nsHtml5AttributeName* ATTR_FONT_SIZE_ADJUST; - static nsHtml5AttributeName* ATTR_KERNELUNITLENGTH; - static nsHtml5AttributeName* ATTR_ONBEFOREACTIVATE; - static nsHtml5AttributeName* ATTR_ONPROPERTYCHANGE; - static nsHtml5AttributeName* ATTR_ONDATASETCHANGED; - static nsHtml5AttributeName* ATTR_MASKCONTENTUNITS; + static nsHtml5AttributeName* ATTR_FILTERUNITS; + static nsHtml5AttributeName* ATTR_FONTSIZE; + static nsHtml5AttributeName* ATTR_FONT_SIZE; + static nsHtml5AttributeName* ATTR_KEYTIMES; + static nsHtml5AttributeName* ATTR_LETTER_SPACING; + static nsHtml5AttributeName* ATTR_LIST; + static nsHtml5AttributeName* ATTR_MULTIPLE; + static nsHtml5AttributeName* ATTR_RT; + static nsHtml5AttributeName* ATTR_ONSTOP; + static nsHtml5AttributeName* ATTR_ONSTART; + static nsHtml5AttributeName* ATTR_POSTER; static nsHtml5AttributeName* ATTR_PATTERNTRANSFORM; + static nsHtml5AttributeName* ATTR_PATTERN; + static nsHtml5AttributeName* ATTR_PATTERNUNITS; + static nsHtml5AttributeName* ATTR_PATTERNCONTENTUNITS; + static nsHtml5AttributeName* ATTR_RESTART; + static nsHtml5AttributeName* ATTR_STITCHTILES; + static nsHtml5AttributeName* ATTR_SYSTEMLANGUAGE; + static nsHtml5AttributeName* ATTR_TEXT_RENDERING; + static nsHtml5AttributeName* ATTR_VERT_ORIGIN_X; + static nsHtml5AttributeName* ATTR_VERT_ADV_Y; + static nsHtml5AttributeName* ATTR_VERT_ORIGIN_Y; + static nsHtml5AttributeName* ATTR_TEXT_DECORATION; + static nsHtml5AttributeName* ATTR_TEXT_ANCHOR; + static nsHtml5AttributeName* ATTR_TEXTLENGTH; + static nsHtml5AttributeName* ATTR_TEXT; + static nsHtml5AttributeName* ATTR_UNITS_PER_EM; + static nsHtml5AttributeName* ATTR_WRITING_MODE; + static nsHtml5AttributeName* ATTR_WIDTHS; + static nsHtml5AttributeName* ATTR_WIDTH; + static nsHtml5AttributeName* ATTR_ACCUMULATE; + static nsHtml5AttributeName* ATTR_COLUMNSPAN; + static nsHtml5AttributeName* ATTR_COLUMNLINES; + static nsHtml5AttributeName* ATTR_COLUMNALIGN; + static nsHtml5AttributeName* ATTR_COLUMNSPACING; + static nsHtml5AttributeName* ATTR_COLUMNWIDTH; + static nsHtml5AttributeName* ATTR_GROUPALIGN; + static nsHtml5AttributeName* ATTR_INPUTMODE; + static nsHtml5AttributeName* ATTR_OCCURRENCE; + static nsHtml5AttributeName* ATTR_ONSUBMIT; + static nsHtml5AttributeName* ATTR_ONCUT; + static nsHtml5AttributeName* ATTR_REQUIRED; static nsHtml5AttributeName* ATTR_REQUIREDFEATURES; - static nsHtml5AttributeName* ATTR_RENDERING_INTENT; - static nsHtml5AttributeName* ATTR_SPECULAREXPONENT; - static nsHtml5AttributeName* ATTR_SPECULARCONSTANT; - static nsHtml5AttributeName* ATTR_SUPERSCRIPTSHIFT; - static nsHtml5AttributeName* ATTR_STROKE_DASHARRAY; - static nsHtml5AttributeName* ATTR_XCHANNELSELECTOR; - static nsHtml5AttributeName* ATTR_YCHANNELSELECTOR; - static nsHtml5AttributeName* ATTR_ARIA_AUTOCOMPLETE; - static nsHtml5AttributeName* ATTR_ENABLE_BACKGROUND; - static nsHtml5AttributeName* ATTR_DOMINANT_BASELINE; - static nsHtml5AttributeName* ATTR_GRADIENTTRANSFORM; - static nsHtml5AttributeName* ATTR_ONBEFORDEACTIVATE; - static nsHtml5AttributeName* ATTR_ONDATASETCOMPLETE; - static nsHtml5AttributeName* ATTR_OVERLINE_POSITION; - static nsHtml5AttributeName* ATTR_ONBEFOREEDITFOCUS; - static nsHtml5AttributeName* ATTR_LIMITINGCONEANGLE; + static nsHtml5AttributeName* ATTR_RESULT; + static nsHtml5AttributeName* ATTR_REQUIREDEXTENSIONS; + static nsHtml5AttributeName* ATTR_VALUES; + static nsHtml5AttributeName* ATTR_VALUETYPE; + static nsHtml5AttributeName* ATTR_VALUE; + static nsHtml5AttributeName* ATTR_ELEVATION; + static nsHtml5AttributeName* ATTR_VIEWTARGET; + static nsHtml5AttributeName* ATTR_VIEWBOX; + static nsHtml5AttributeName* ATTR_CX; + static nsHtml5AttributeName* ATTR_DX; + static nsHtml5AttributeName* ATTR_FX; + static nsHtml5AttributeName* ATTR_BBOX; + static nsHtml5AttributeName* ATTR_RX; + static nsHtml5AttributeName* ATTR_REFX; + static nsHtml5AttributeName* ATTR_BY; + static nsHtml5AttributeName* ATTR_CY; + static nsHtml5AttributeName* ATTR_DY; + static nsHtml5AttributeName* ATTR_FY; + static nsHtml5AttributeName* ATTR_RY; + static nsHtml5AttributeName* ATTR_REFY; static nsHtml5AttributeName* ATTR_VERYTHINMATHSPACE; - static nsHtml5AttributeName* ATTR_STROKE_DASHOFFSET; - static nsHtml5AttributeName* ATTR_STROKE_MITERLIMIT; - static nsHtml5AttributeName* ATTR_ALIGNMENT_BASELINE; - static nsHtml5AttributeName* ATTR_ONREADYSTATECHANGE; - static nsHtml5AttributeName* ATTR_OVERLINE_THICKNESS; - static nsHtml5AttributeName* ATTR_UNDERLINE_POSITION; static nsHtml5AttributeName* ATTR_VERYTHICKMATHSPACE; - static nsHtml5AttributeName* ATTR_REQUIREDEXTENSIONS; - static nsHtml5AttributeName* ATTR_COLOR_INTERPOLATION; - static nsHtml5AttributeName* ATTR_UNDERLINE_THICKNESS; - static nsHtml5AttributeName* ATTR_PRESERVEASPECTRATIO; - static nsHtml5AttributeName* ATTR_PATTERNCONTENTUNITS; - static nsHtml5AttributeName* ATTR_ARIA_MULTISELECTABLE; - static nsHtml5AttributeName* ATTR_SCRIPTSIZEMULTIPLIER; - static nsHtml5AttributeName* ATTR_ARIA_ACTIVEDESCENDANT; static nsHtml5AttributeName* ATTR_VERYVERYTHINMATHSPACE; static nsHtml5AttributeName* ATTR_VERYVERYTHICKMATHSPACE; - static nsHtml5AttributeName* ATTR_STRIKETHROUGH_POSITION; - static nsHtml5AttributeName* ATTR_STRIKETHROUGH_THICKNESS; - static nsHtml5AttributeName* ATTR_GLYPH_ORIENTATION_VERTICAL; - static nsHtml5AttributeName* ATTR_COLOR_INTERPOLATION_FILTERS; - static nsHtml5AttributeName* ATTR_GLYPH_ORIENTATION_HORIZONTAL; private: static nsHtml5AttributeName** ATTRIBUTE_NAMES; static staticJArray<int32_t,int32_t> ATTRIBUTE_HASHES; @@ -685,10 +771,5 @@ class nsHtml5AttributeName static void releaseStatics(); }; -#define NS_HTML5ATTRIBUTE_NAME_HTML 0 -#define NS_HTML5ATTRIBUTE_NAME_MATHML 1 -#define NS_HTML5ATTRIBUTE_NAME_SVG 2 - - #endif diff --git a/parser/html/nsHtml5ContentCreatorFunction.h b/parser/html/nsHtml5ContentCreatorFunction.h new file mode 100644 index 000000000..f46246a41 --- /dev/null +++ b/parser/html/nsHtml5ContentCreatorFunction.h @@ -0,0 +1,17 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsHtml5ContentCreatorFunction_h +#define nsHtml5ContentCreatorFunction_h + +#include "nsGenericHTMLElement.h" +#include "mozilla/dom/SVGElementFactory.h" + +union nsHtml5ContentCreatorFunction +{ + mozilla::dom::HTMLContentCreatorFunction html; + mozilla::dom::SVGContentCreatorFunction svg; +}; + +#endif // nsHtml5ContentCreatorFunction_h diff --git a/parser/html/nsHtml5ElementName.cpp b/parser/html/nsHtml5ElementName.cpp index f997f4781..84a056012 100644 --- a/parser/html/nsHtml5ElementName.cpp +++ b/parser/html/nsHtml5ElementName.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2016 Mozilla Foundation + * Copyright (c) 2008-2017 Mozilla Foundation * Copyright (c) 2018-2020 Moonchild Productions * Copyright (c) 2020 Binary Outcast * @@ -43,144 +43,50 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" +#include "nsHtml5AttributeName.h" #include "nsHtml5Tokenizer.h" #include "nsHtml5TreeBuilder.h" #include "nsHtml5MetaScanner.h" -#include "nsHtml5AttributeName.h" -#include "nsHtml5HtmlAttributes.h" #include "nsHtml5StackNode.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5StateSnapshot.h" #include "nsHtml5Portability.h" #include "nsHtml5ElementName.h" -#include "nsHtml5ReleasableElementName.h" - -nsHtml5ElementName* nsHtml5ElementName::ELT_NULL_ELEMENT_NAME = nullptr; -int32_t -nsHtml5ElementName::getGroup() -{ - return flags & NS_HTML5ELEMENT_NAME_GROUP_MASK; -} - -bool -nsHtml5ElementName::isCustom() -{ - return (flags & NS_HTML5ELEMENT_NAME_CUSTOM); -} - -nsHtml5ElementName* -nsHtml5ElementName::elementNameByBuffer(char16_t* buf, int32_t offset, int32_t length, nsHtml5AtomTable* interner) -{ - int32_t hash = nsHtml5ElementName::bufToHash(buf, length); - int32_t index = nsHtml5ElementName::ELEMENT_HASHES.binarySearch(hash); - if (index < 0) { - return new nsHtml5ReleasableElementName(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length, interner)); - } else { - nsHtml5ElementName* elementName = nsHtml5ElementName::ELEMENT_NAMES[index]; - nsIAtom* name = elementName->name; - if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) { - return new nsHtml5ReleasableElementName(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length, interner)); - } - return elementName; - } -} - -int32_t -nsHtml5ElementName::bufToHash(char16_t* buf, int32_t len) -{ - int32_t hash = len; - hash <<= 5; - hash += buf[0] - 0x60; - int32_t j = len; - for (int32_t i = 0; i < 4 && j > 0; i++) { - j--; - hash <<= 5; - hash += buf[j] - 0x60; - } - return hash; -} -nsHtml5ElementName::nsHtml5ElementName(nsIAtom* name, nsIAtom* camelCaseName, int32_t flags) +nsHtml5ElementName::nsHtml5ElementName(nsIAtom* name, nsIAtom* camelCaseName, mozilla::dom::HTMLContentCreatorFunction htmlCreator, mozilla::dom::SVGContentCreatorFunction svgCreator, int32_t flags) : name(name), camelCaseName(camelCaseName), + htmlCreator(htmlCreator), + svgCreator(svgCreator), flags(flags) { MOZ_COUNT_CTOR(nsHtml5ElementName); } -nsHtml5ElementName::nsHtml5ElementName(nsIAtom* name) - : name(name), - camelCaseName(name), - flags(NS_HTML5TREE_BUILDER_OTHER | NS_HTML5ELEMENT_NAME_CUSTOM) +nsHtml5ElementName::nsHtml5ElementName() + : name(nullptr), + camelCaseName(nullptr), + htmlCreator(NS_NewHTMLUnknownElement), + svgCreator(NS_NewSVGUnknownElement), + flags(nsHtml5TreeBuilder::OTHER | NOT_INTERNED) { MOZ_COUNT_CTOR(nsHtml5ElementName); } -void -nsHtml5ElementName::release() -{ -} - nsHtml5ElementName::~nsHtml5ElementName() { MOZ_COUNT_DTOR(nsHtml5ElementName); } -nsHtml5ElementName* -nsHtml5ElementName::cloneElementName(nsHtml5AtomTable* interner) -{ - return this; -} - -nsHtml5ElementName* nsHtml5ElementName::ELT_A = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_B = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_G = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_I = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_P = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_Q = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_S = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_U = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CI = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EQ = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_H1 = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_H2 = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_H3 = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_H4 = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_H5 = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_H6 = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_GT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_IN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LI = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MI = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MO = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_OL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_OR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PI = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RB = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_UL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ISINDEX = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_AND = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARG = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ABS = nullptr; @@ -213,6 +119,8 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_NEQ = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_NOT = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_NAV = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_PRE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_A = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_B = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_RTC = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_REM = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_SUB = nullptr; @@ -226,1169 +134,1176 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_SET = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_TAN = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_USE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_VAR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_G = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_WBR = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_XMP = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_XOR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_I = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_P = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_Q = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_S = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_U = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_H1 = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_H2 = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_H3 = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_H4 = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_H5 = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_H6 = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_AREA = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ABBR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BASE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BVAR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BODY = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CARD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CODE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CITE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CSCH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_COSH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_COTH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CURL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DESC = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DIFF = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DEFS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FORM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FONT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_GRAD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HEAD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HTML = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LINE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LINK = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LIST = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DATA = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EULERGAMMA = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCA = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LAMBDA = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_METADATA = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_META = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TEXTAREA = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCB = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MSUB = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MODE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MATH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MARK = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MASK = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MEAN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MAIN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MSUP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MENU = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MROW = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NONE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NOBR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NEST = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PATH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PLUS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RULE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_REAL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RELN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RECT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ROOT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RUBY = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SECH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SINH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SPAN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SAMP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_STOP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SDEV = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TIME = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TRUE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TREF = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TANH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TEXT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_VIEW = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ASIDE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_AUDIO = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_APPLY = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EMBED = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FRAME = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FALSE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FLOOR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_GLYPH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HKERN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_IMAGE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_IDENT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_INPUT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LABEL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LIMIT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MFRAC = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MPATH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_METER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MOVER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MINUS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MROOT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MSQRT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MTEXT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NOTIN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PIECE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PARAM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_POWER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_REALS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_STYLE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SMALL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_THEAD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TABLE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TITLE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TRACK = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TSPAN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TIMES = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TFOOT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TBODY = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_UNION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_VKERN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_VIDEO = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RB = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCSEC = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCSC = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ARCTAN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ARCSIN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCOS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_APPLET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCOT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_APPROX = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BUTTON = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DEFINITION_SRC = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DESC = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_SRC = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MFRAC = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BGSOUND = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CARD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DISCARD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EMBED = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEBLEND = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEFLOOD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_GRAD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HEAD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LEGEND = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MFENCED = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MPADDED = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NOEMBED = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_THEAD = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ASIDE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ARTICLE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BASE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BLOCKQUOTE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CODE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_CIRCLE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CENTER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CURSOR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CANVAS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_COLOR_PROFILE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_COMPOSE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CONJUGATE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CITE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DIVERGENCE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_DIVIDE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_DEGREE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DIALOG = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAIN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EXISTS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DECLARE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DATATEMPLATE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EXPONENTIALE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ELLIPSE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FETURBULENCE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEMERGENODE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEIMAGE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEMERGE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_FETILE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_NAME = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FRAME = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_FIGURE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FORALL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FILTER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FOOTER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HGROUP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HEADER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FALSE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FECOMPOSITE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_IMAGE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_IFRAME = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_KEYGEN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LAMBDA = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LEGEND = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_INVERSE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LINE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LOGBASE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MSPACE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MODE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MARQUEE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MTABLE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MSTYLE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MGLYPH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MEDIAN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MUNDER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MARKER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MERROR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MOMENT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MATRIX = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_OPTION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_OBJECT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_OUTPUT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PRIMES = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MENCLOSE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NONE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_OTHERWISE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PIECE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_POLYLINE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PICTURE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PIECEWISE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RULE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_SOURCE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_STRIKE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_STYLE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TABLE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TITLE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TIME = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TRANSPOSE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TEMPLATE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TRUE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_VARIANCE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPHDEF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DIFF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FACTOROF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_GLYPHREF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PARTIALDIFF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SETDIFF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TREF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CEILING = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DIALOG = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCG = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEDIFFUSELIGHTING = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FESPECULARLIGHTING = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LISTING = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_STRONG = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SWITCH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SYMBOL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SELECT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SUBSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SCRIPT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TBREAK = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_VECTOR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ARTICLE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCSECH = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCSCH = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCTANH = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCSINH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPH = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCOSH = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCOTH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ACRONYM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ADDRESS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BGSOUND = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_COMPOSE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CEILING = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CSCH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_COSH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CLIPPATH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_COTH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_GLYPH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MGLYPH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MISSING_GLYPH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MATH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MPATH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PREFETCH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PATH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SECH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SWITCH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SINH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TANH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TEXTPATH = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CI = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_URI = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LI = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_IMAGINARYI = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MI = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PI = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LINK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MARK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MALIGNMARK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MASK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TBREAK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TRACK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DL = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_CSYMBOL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CURL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FACTORIAL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FORALL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HTML = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_INTERVAL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_OL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LABEL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_UL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_REAL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SMALL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SYMBOL = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPHITEM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATETRANSFORM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ACRONYM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FORM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MENUITEM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MPHANTOM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PARAM = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ARCTAN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ARCSIN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATEMOTION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BUTTON = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CODOMAIN = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_CAPTION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DISCARD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DECLARE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DETAILS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ELLIPSE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCA = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCB = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEBLEND = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEFLOOD = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEIMAGE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEMERGE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCG = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_HANDLER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_INVERSE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_IMPLIES = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ISINDEX = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LOGBASE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LISTING = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MFENCED = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MPADDED = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MARQUEE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CONDITION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAIN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAINOFAPPLICATION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_IN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FIGCAPTION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HKERN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_KEYGEN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LAPLACIAN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MEAN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MEDIAN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MAIN = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MACTION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MSUBSUP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NOEMBED = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PICTURE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NOTIN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_OPTION = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_POLYGON = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_PATTERN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PRODUCT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SETDIFF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RELN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SPAN = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_SECTION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TSPAN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_UNION = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_VKERN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_AUDIO = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MO = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_TENDSTO = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_UPLIMIT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BASEFONT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CLIPPATH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CODOMAIN = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_VIDEO = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_COLGROUP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EMPTYSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FACTOROF = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FIELDSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FRAMESET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEOFFSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_GLYPHREF = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_INTERVAL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_INTEGERS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_INFINITY = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LISTENER = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LOWLIMIT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_METADATA = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MENCLOSE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MENUITEM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MPHANTOM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NOFRAMES = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NOSCRIPT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEDISPLACEMENTMAP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HGROUP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MALIGNGROUP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MSUBSUP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MSUP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RP = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_OPTGROUP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_POLYLINE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PREFETCH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PROGRESS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PRSUBSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_QUOTIENT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SELECTOR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TEXTAREA = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TEMPLATE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TEXTPATH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_VARIANCE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CONJUGATE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CONDITION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_COMPLEXES = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FACTORIAL = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_INTERSECT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_IMAGINARY = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LAPLACIAN = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MATRIXROW = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NOTSUBSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_OTHERWISE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PIECEWISE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PLAINTEXT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RATIONALS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_SEMANTICS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_TRANSPOSE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_BLOCKQUOTE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DIVERGENCE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EULERGAMMA = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EQUIVALENT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FIGCAPTION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_IMAGINARYI = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MALIGNMARK = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SAMP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_STOP = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EQ = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ABBR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATECOLOR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BVAR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CENTER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CURSOR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEFUNCR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FECOMPONENTTRANSFER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FILTER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FOOTER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FLOOR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEGAUSSIANBLUR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HEADER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_HANDLER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_OR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LISTENER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MUNDER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MARKER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_METER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MOVER = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MUNDEROVER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MERROR = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MLABELEDTR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NOBR = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_NOTANUMBER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_POWER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TR = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_SOLIDCOLOR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPHDEF = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SELECTOR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_VECTOR = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCOS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ADDRESS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CANVAS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_COMPLEXES = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DEFS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DETAILS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EXISTS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_IMPLIES = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_INTEGERS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MPRESCRIPTS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MMULTISCRIPTS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MINUS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NOFRAMES = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NATURALNUMBERS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PRIMES = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PROGRESS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PLUS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_REALS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RATIONALS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SEMANTICS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TIMES = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_APPLET = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ARCCOT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BASEFONT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CARTESIANPRODUCT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_CONTENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_GT = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_DETERMINANT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEMERGENODE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FECOMPOSITE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_DATALIST = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EMPTYSET = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_EQUIVALENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_FORMAT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FOREIGNOBJECT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FIELDSET = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FRAMESET = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEOFFSET = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_FESPOTLIGHT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MALIGNGROUP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MPRESCRIPTS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEPOINTLIGHT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEDISTANTLIGHT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FONT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_INTERSECT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_IDENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_INPUT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LIMIT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LOWLIMIT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LINEARGRADIENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_LIST = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MOMENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MROOT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MSQRT = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MOMENTABOUT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MTEXT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NOTSUBSET = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_NOTPRSUBSET = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_PARTIALDIFF = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPHITEM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATECOLOR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DATATEMPLATE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_EXPONENTIALE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FETURBULENCE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEPOINTLIGHT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEDROPSHADOW = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEMORPHOLOGY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NOSCRIPT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_NEST = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_OBJECT = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_OUTERPRODUCT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATEMOTION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_COLOR_PROFILE = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_SRC = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_URI = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FOREIGNOBJECT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FECOLORMATRIX = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MISSING_GLYPH = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_MMULTISCRIPTS = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_OUTPUT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PRODUCT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PRSUBSET = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_PLAINTEXT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_QUOTIENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RECT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RADIALGRADIENT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_ROOT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SELECT = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_SCALARPRODUCT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SUBSET = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SCRIPT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TFOOT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TEXT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_UPLIMIT = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_VECTORPRODUCT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DEFINITION_SRC = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_NAME = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEGAUSSIANBLUR = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEDISTANTLIGHT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_LINEARGRADIENT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_NATURALNUMBERS = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_RADIALGRADIENT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_ANIMATETRANSFORM = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_CARTESIANPRODUCT = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_FORMAT = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MENU = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SDEV = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEDROPSHADOW = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MROW = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MATRIXROW = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SHADOW = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_VIEW = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_APPROX = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FECOLORMATRIX = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_FECONVOLVEMATRIX = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEDIFFUSELIGHTING = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FEDISPLACEMENTMAP = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FESPECULARLIGHTING = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAINOFAPPLICATION = nullptr; -nsHtml5ElementName* nsHtml5ElementName::ELT_FECOMPONENTTRANSFER = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MATRIX = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_APPLY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_BODY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_FEMORPHOLOGY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_IMAGINARY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_INFINITY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_RUBY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_TBODY = nullptr; nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = 0; -static int32_t const ELEMENT_HASHES_DATA[] = { 1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84050, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3739282, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148317229, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189107250, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210261490, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 251841204, 252132601, 252135604, 252317348, 255007012, 255278388, 255641645, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282498697, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289591340, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 342310196, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409713793, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819 }; +static int32_t const ELEMENT_HASHES_DATA[] = { 1909280949, 1753057319, 2001349704, 1681770564, 1818230786, 1983002201, 2007257240, 58773795, 1747176599, 1782357526, 1897999926, 1970938456, 1990969577, 2005181733, 2055515017, 54061139, 62390273, 1730150402, 1749395095, 1756625221, 1798693940, 1868641064, 1902641154, 1963982850, 1973040373, 1988486813, 1999917383, 2002882873, 2005925890, 2008851557, 2082727685, 51965171, 57200451, 60350803, 69730305, 1703292116, 1733890180, 1748355193, 1749813541, 1754634617, 1763839627, 1797540167, 1805647874, 1857622310, 1881498736, 1899272519, 1905563974, 1938171179, 1967788867, 1971628838, 1976348214, 1986140359, 1989812374, 1998724870, 2000825752, 2001392796, 2004557976, 2005543977, 2006560839, 2008125638, 2021937364, 2068523853, 2087049448, 51434643, 52488851, 56151587, 57210387, 59826259, 60354131, 63438849, 926941186, 1686489160, 1715300574, 1732381397, 1737099991, 1748100148, 1748642422, 1749715159, 1751288021, 1753467414, 1755158905, 1757259017, 1771722827, 1786534215, 1797645367, 1803929812, 1807501636, 1853642948, 1865773108, 1873350948, 1887579800, 1898223949, 1900544002, 1904285766, 1907435316, 1925844629, 1939219752, 1966223078, 1968053806, 1971466997, 1971938532, 1974771450, 1982173479, 1983633431, 1986527234, 1988763672, 1990074116, 1991909525, 1999397992, 2000439531, 2001281328, 2001349736, 2001495140, 2003183333, 2004719812, 2005279787, 2005719336, 2006036556, 2006896969, 2007781534, 2008165414, 2009276567, 2051837468, 2060065124, 2070023911, 2085266636, 2092255447, 50910499, 51957043, 52485715, 53012355, 55110883, 56680499, 57206291, 57732851, 59768833, 60345427, 60352083, 61395251, 62973651, 67633153, 893386754, 960495618, 1682547543, 1689922072, 1713515574, 1716349149, 1731545140, 1733076167, 1736576231, 1740181637, 1747814436, 1748228205, 1748607578, 1748879564, 1749656156, 1749801286, 1749917205, 1751493207, 1753343188, 1753588936, 1755076808, 1756474198, 1757146773, 1757293380, 1766632184, 1773808452, 1783388497, 1797361975, 1797585096, 1798677556, 1803876550, 1805233752, 1806806678, 1813512194, 1818755074, 1854228698, 1864368130, 1867237670, 1870268949, 1874102998, 1881669634, 1889085973, 1898223945, 1898971138, 1899694294, 1901940917, 1903761465, 1904515399, 1906135367, 1907959605, 1919418370, 1934172497, 1938173140, 1941221172, 1965334268, 1967128578, 1967795958, 1968840263, 1971461414, 1971467002, 1971703386, 1971981018, 1973420034, 1974775352, 1982106678, 1982935782, 1983533124, 1984294038, 1986351224, 1988486811, 1988502165, 1988972590, 1990037800, 1990969429, 1991350601, 1998585858, 1998883894, 1999745104, 2000158722, 2000525512, 2000965834, 2001309869, 2001349720, 2001392795, 2001392798, 2002780162, 2003062853, 2004557973, 2004635806, 2005160150, 2005231925, 2005324101, 2005543979, 2005766372, 2006028454, 2006329158, 2006592552, 2006974466, 2007601444, 2007803172, 2008133709, 2008340774, 2008994116, 2009706573, 2041712436, 2055514836, 2058653206, 2066000646, 2068523856, 2072193862, 2083120164, 2087012585, 2091479332, 2092557349, 50908899, 50916387, 51438659, 51961587, 51965683, 52486755, 52490899, 54054451, 55104723, 55111395, 56677619, 56682579, 57205395, 57207619, 57731155, 57733651, 59244545, 59821379, 60345171, 60347747, 60351123, 60352339, 60875283, 61925907, 62450211, 62974707, 67108865, 68681729, 876609538, 910163970, 943718402, 1679960596, 1682186266, 1685703382, 1686491348, 1699324759, 1703936002, 1713736758, 1715310660, 1719741029, 1730965751, 1732069431, 1733054663, 1733372532, 1736200310, 1736576583, 1738539010, 1747048757, 1747306711, 1747838298, 1748225318, 1748346119, 1748359220, 1748621670, 1748846791, 1749272732, 1749649513, 1749673195, 1749723735, 1749813486, 1749905526, 1749932347, 1751386406, 1752979652, 1753319686, 1753362711, 1753479494, 1754031332, 1754894485, 1755148615, 1756098852, 1756600614, 1757137429, 1757157700, 1757268168, 1758044696, 1765431364, 1766992520, 1773295687, 1781815495, 1783210839, 1783388498, 1790207270, 1797368887, 1797544247, 1797628983, 1798417460, 1798686984, 1800730821, 1803876557, 1803929861, 1805502724, 1806799156, 1806981428, 1807599880, 1817013469, 1818700314, 1820327938, 1854228692, 1854245076, 1857653029, 1865714391, 1867061545, 1868312196, 1870135298, 1873281026, 1874053333, 1881288348, 1881613047, 1884120164, 1887743720, 1897398274, 1898130486, 1898223946, 1898753862, 1899170008, 1899272521, 1899796819, 1900845386, 1902116866, 1903302038, 1904283860, 1904412884, 1904946933, 1906087319, 1907085604, 1907661127, 1908709605, 1914900309, 1925049415, 1932928296, 1935549734, 1938172967, 1938817026, 1941178676, 1948778498, 1965115924, 1965634084, 1966386470, 1967760215, 1967795910, 1967957189, 1968836118, 1970798594, 1971457766, 1971465813 }; staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) }; void nsHtml5ElementName::initializeStatics() { - ELT_NULL_ELEMENT_NAME = new nsHtml5ElementName(nullptr); - ELT_A = new nsHtml5ElementName(nsHtml5Atoms::a, nsHtml5Atoms::a, NS_HTML5TREE_BUILDER_A); - ELT_B = new nsHtml5ElementName(nsHtml5Atoms::b, nsHtml5Atoms::b, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_G = new nsHtml5ElementName(nsHtml5Atoms::g, nsHtml5Atoms::g, NS_HTML5TREE_BUILDER_OTHER); - ELT_I = new nsHtml5ElementName(nsHtml5Atoms::i, nsHtml5Atoms::i, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_P = new nsHtml5ElementName(nsHtml5Atoms::p, nsHtml5Atoms::p, NS_HTML5TREE_BUILDER_P | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_Q = new nsHtml5ElementName(nsHtml5Atoms::q, nsHtml5Atoms::q, NS_HTML5TREE_BUILDER_OTHER); - ELT_S = new nsHtml5ElementName(nsHtml5Atoms::s, nsHtml5Atoms::s, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_U = new nsHtml5ElementName(nsHtml5Atoms::u, nsHtml5Atoms::u, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_BR = new nsHtml5ElementName(nsHtml5Atoms::br, nsHtml5Atoms::br, NS_HTML5TREE_BUILDER_BR | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_CI = new nsHtml5ElementName(nsHtml5Atoms::ci, nsHtml5Atoms::ci, NS_HTML5TREE_BUILDER_OTHER); - ELT_CN = new nsHtml5ElementName(nsHtml5Atoms::cn, nsHtml5Atoms::cn, NS_HTML5TREE_BUILDER_OTHER); - ELT_DD = new nsHtml5ElementName(nsHtml5Atoms::dd, nsHtml5Atoms::dd, NS_HTML5TREE_BUILDER_DD_OR_DT | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_DL = new nsHtml5ElementName(nsHtml5Atoms::dl, nsHtml5Atoms::dl, NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_DT = new nsHtml5ElementName(nsHtml5Atoms::dt, nsHtml5Atoms::dt, NS_HTML5TREE_BUILDER_DD_OR_DT | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_EM = new nsHtml5ElementName(nsHtml5Atoms::em, nsHtml5Atoms::em, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_EQ = new nsHtml5ElementName(nsHtml5Atoms::eq, nsHtml5Atoms::eq, NS_HTML5TREE_BUILDER_OTHER); - ELT_FN = new nsHtml5ElementName(nsHtml5Atoms::fn, nsHtml5Atoms::fn, NS_HTML5TREE_BUILDER_OTHER); - ELT_H1 = new nsHtml5ElementName(nsHtml5Atoms::h1, nsHtml5Atoms::h1, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_H2 = new nsHtml5ElementName(nsHtml5Atoms::h2, nsHtml5Atoms::h2, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_H3 = new nsHtml5ElementName(nsHtml5Atoms::h3, nsHtml5Atoms::h3, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_H4 = new nsHtml5ElementName(nsHtml5Atoms::h4, nsHtml5Atoms::h4, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_H5 = new nsHtml5ElementName(nsHtml5Atoms::h5, nsHtml5Atoms::h5, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_H6 = new nsHtml5ElementName(nsHtml5Atoms::h6, nsHtml5Atoms::h6, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_GT = new nsHtml5ElementName(nsHtml5Atoms::gt, nsHtml5Atoms::gt, NS_HTML5TREE_BUILDER_OTHER); - ELT_HR = new nsHtml5ElementName(nsHtml5Atoms::hr, nsHtml5Atoms::hr, NS_HTML5TREE_BUILDER_HR | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_IN = new nsHtml5ElementName(nsHtml5Atoms::in, nsHtml5Atoms::in, NS_HTML5TREE_BUILDER_OTHER); - ELT_LI = new nsHtml5ElementName(nsHtml5Atoms::li, nsHtml5Atoms::li, NS_HTML5TREE_BUILDER_LI | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_LN = new nsHtml5ElementName(nsHtml5Atoms::ln, nsHtml5Atoms::ln, NS_HTML5TREE_BUILDER_OTHER); - ELT_LT = new nsHtml5ElementName(nsHtml5Atoms::lt, nsHtml5Atoms::lt, NS_HTML5TREE_BUILDER_OTHER); - ELT_MI = new nsHtml5ElementName(nsHtml5Atoms::mi, nsHtml5Atoms::mi, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT | NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML); - ELT_MN = new nsHtml5ElementName(nsHtml5Atoms::mn, nsHtml5Atoms::mn, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT | NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML); - ELT_MO = new nsHtml5ElementName(nsHtml5Atoms::mo, nsHtml5Atoms::mo, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT | NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML); - ELT_MS = new nsHtml5ElementName(nsHtml5Atoms::ms, nsHtml5Atoms::ms, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT | NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML); - ELT_OL = new nsHtml5ElementName(nsHtml5Atoms::ol, nsHtml5Atoms::ol, NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_OR = new nsHtml5ElementName(nsHtml5Atoms::or_, nsHtml5Atoms::or_, NS_HTML5TREE_BUILDER_OTHER); - ELT_PI = new nsHtml5ElementName(nsHtml5Atoms::pi, nsHtml5Atoms::pi, NS_HTML5TREE_BUILDER_OTHER); - ELT_RB = new nsHtml5ElementName(nsHtml5Atoms::rb, nsHtml5Atoms::rb, NS_HTML5TREE_BUILDER_RB_OR_RTC | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_RP = new nsHtml5ElementName(nsHtml5Atoms::rp, nsHtml5Atoms::rp, NS_HTML5TREE_BUILDER_RT_OR_RP | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_RT = new nsHtml5ElementName(nsHtml5Atoms::rt, nsHtml5Atoms::rt, NS_HTML5TREE_BUILDER_RT_OR_RP | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_TD = new nsHtml5ElementName(nsHtml5Atoms::td, nsHtml5Atoms::td, NS_HTML5TREE_BUILDER_TD_OR_TH | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_TH = new nsHtml5ElementName(nsHtml5Atoms::th, nsHtml5Atoms::th, NS_HTML5TREE_BUILDER_TD_OR_TH | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_TR = new nsHtml5ElementName(nsHtml5Atoms::tr, nsHtml5Atoms::tr, NS_HTML5TREE_BUILDER_TR | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_TT = new nsHtml5ElementName(nsHtml5Atoms::tt, nsHtml5Atoms::tt, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_UL = new nsHtml5ElementName(nsHtml5Atoms::ul, nsHtml5Atoms::ul, NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_AND = new nsHtml5ElementName(nsHtml5Atoms::and_, nsHtml5Atoms::and_, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARG = new nsHtml5ElementName(nsHtml5Atoms::arg, nsHtml5Atoms::arg, NS_HTML5TREE_BUILDER_OTHER); - ELT_ABS = new nsHtml5ElementName(nsHtml5Atoms::abs, nsHtml5Atoms::abs, NS_HTML5TREE_BUILDER_OTHER); - ELT_BIG = new nsHtml5ElementName(nsHtml5Atoms::big, nsHtml5Atoms::big, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_BDO = new nsHtml5ElementName(nsHtml5Atoms::bdo, nsHtml5Atoms::bdo, NS_HTML5TREE_BUILDER_OTHER); - ELT_CSC = new nsHtml5ElementName(nsHtml5Atoms::csc, nsHtml5Atoms::csc, NS_HTML5TREE_BUILDER_OTHER); - ELT_COL = new nsHtml5ElementName(nsHtml5Atoms::col, nsHtml5Atoms::col, NS_HTML5TREE_BUILDER_COL | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_COS = new nsHtml5ElementName(nsHtml5Atoms::cos, nsHtml5Atoms::cos, NS_HTML5TREE_BUILDER_OTHER); - ELT_COT = new nsHtml5ElementName(nsHtml5Atoms::cot, nsHtml5Atoms::cot, NS_HTML5TREE_BUILDER_OTHER); - ELT_DEL = new nsHtml5ElementName(nsHtml5Atoms::del, nsHtml5Atoms::del, NS_HTML5TREE_BUILDER_OTHER); - ELT_DFN = new nsHtml5ElementName(nsHtml5Atoms::dfn, nsHtml5Atoms::dfn, NS_HTML5TREE_BUILDER_OTHER); - ELT_DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_DIV = new nsHtml5ElementName(nsHtml5Atoms::div, nsHtml5Atoms::div, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_EXP = new nsHtml5ElementName(nsHtml5Atoms::exp, nsHtml5Atoms::exp, NS_HTML5TREE_BUILDER_OTHER); - ELT_GCD = new nsHtml5ElementName(nsHtml5Atoms::gcd, nsHtml5Atoms::gcd, NS_HTML5TREE_BUILDER_OTHER); - ELT_GEQ = new nsHtml5ElementName(nsHtml5Atoms::geq, nsHtml5Atoms::geq, NS_HTML5TREE_BUILDER_OTHER); - ELT_IMG = new nsHtml5ElementName(nsHtml5Atoms::img, nsHtml5Atoms::img, NS_HTML5TREE_BUILDER_IMG | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_INS = new nsHtml5ElementName(nsHtml5Atoms::ins, nsHtml5Atoms::ins, NS_HTML5TREE_BUILDER_OTHER); - ELT_INT = new nsHtml5ElementName(nsHtml5Atoms::int_, nsHtml5Atoms::int_, NS_HTML5TREE_BUILDER_OTHER); - ELT_KBD = new nsHtml5ElementName(nsHtml5Atoms::kbd, nsHtml5Atoms::kbd, NS_HTML5TREE_BUILDER_OTHER); - ELT_LOG = new nsHtml5ElementName(nsHtml5Atoms::log, nsHtml5Atoms::log, NS_HTML5TREE_BUILDER_OTHER); - ELT_LCM = new nsHtml5ElementName(nsHtml5Atoms::lcm, nsHtml5Atoms::lcm, NS_HTML5TREE_BUILDER_OTHER); - ELT_LEQ = new nsHtml5ElementName(nsHtml5Atoms::leq, nsHtml5Atoms::leq, NS_HTML5TREE_BUILDER_OTHER); - ELT_MTD = new nsHtml5ElementName(nsHtml5Atoms::mtd, nsHtml5Atoms::mtd, NS_HTML5TREE_BUILDER_OTHER); - ELT_MIN = new nsHtml5ElementName(nsHtml5Atoms::min, nsHtml5Atoms::min, NS_HTML5TREE_BUILDER_OTHER); - ELT_MAP = new nsHtml5ElementName(nsHtml5Atoms::map, nsHtml5Atoms::map, NS_HTML5TREE_BUILDER_OTHER); - ELT_MTR = new nsHtml5ElementName(nsHtml5Atoms::mtr, nsHtml5Atoms::mtr, NS_HTML5TREE_BUILDER_OTHER); - ELT_MAX = new nsHtml5ElementName(nsHtml5Atoms::max, nsHtml5Atoms::max, NS_HTML5TREE_BUILDER_OTHER); - ELT_NEQ = new nsHtml5ElementName(nsHtml5Atoms::neq, nsHtml5Atoms::neq, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOT = new nsHtml5ElementName(nsHtml5Atoms::not_, nsHtml5Atoms::not_, NS_HTML5TREE_BUILDER_OTHER); - ELT_NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_PRE = new nsHtml5ElementName(nsHtml5Atoms::pre, nsHtml5Atoms::pre, NS_HTML5TREE_BUILDER_PRE_OR_LISTING | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_RTC = new nsHtml5ElementName(nsHtml5Atoms::rtc, nsHtml5Atoms::rtc, NS_HTML5TREE_BUILDER_RB_OR_RTC | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_REM = new nsHtml5ElementName(nsHtml5Atoms::rem, nsHtml5Atoms::rem, NS_HTML5TREE_BUILDER_OTHER); - ELT_SUB = new nsHtml5ElementName(nsHtml5Atoms::sub, nsHtml5Atoms::sub, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - ELT_SEC = new nsHtml5ElementName(nsHtml5Atoms::sec, nsHtml5Atoms::sec, NS_HTML5TREE_BUILDER_OTHER); - ELT_SVG = new nsHtml5ElementName(nsHtml5Atoms::svg, nsHtml5Atoms::svg, NS_HTML5TREE_BUILDER_SVG); - ELT_SUM = new nsHtml5ElementName(nsHtml5Atoms::sum, nsHtml5Atoms::sum, NS_HTML5TREE_BUILDER_OTHER); - ELT_SIN = new nsHtml5ElementName(nsHtml5Atoms::sin, nsHtml5Atoms::sin, NS_HTML5TREE_BUILDER_OTHER); - ELT_SEP = new nsHtml5ElementName(nsHtml5Atoms::sep, nsHtml5Atoms::sep, NS_HTML5TREE_BUILDER_OTHER); - ELT_SUP = new nsHtml5ElementName(nsHtml5Atoms::sup, nsHtml5Atoms::sup, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - ELT_SET = new nsHtml5ElementName(nsHtml5Atoms::set, nsHtml5Atoms::set, NS_HTML5TREE_BUILDER_OTHER); - ELT_TAN = new nsHtml5ElementName(nsHtml5Atoms::tan, nsHtml5Atoms::tan, NS_HTML5TREE_BUILDER_OTHER); - ELT_USE = new nsHtml5ElementName(nsHtml5Atoms::use, nsHtml5Atoms::use, NS_HTML5TREE_BUILDER_OTHER); - ELT_VAR = new nsHtml5ElementName(nsHtml5Atoms::var, nsHtml5Atoms::var, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - ELT_WBR = new nsHtml5ElementName(nsHtml5Atoms::wbr, nsHtml5Atoms::wbr, NS_HTML5TREE_BUILDER_AREA_OR_WBR | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_XMP = new nsHtml5ElementName(nsHtml5Atoms::xmp, nsHtml5Atoms::xmp, NS_HTML5TREE_BUILDER_XMP | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_XOR = new nsHtml5ElementName(nsHtml5Atoms::xor_, nsHtml5Atoms::xor_, NS_HTML5TREE_BUILDER_OTHER); - ELT_AREA = new nsHtml5ElementName(nsHtml5Atoms::area, nsHtml5Atoms::area, NS_HTML5TREE_BUILDER_AREA_OR_WBR | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_ABBR = new nsHtml5ElementName(nsHtml5Atoms::abbr, nsHtml5Atoms::abbr, NS_HTML5TREE_BUILDER_OTHER); - ELT_BASE = new nsHtml5ElementName(nsHtml5Atoms::base, nsHtml5Atoms::base, NS_HTML5TREE_BUILDER_BASE | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_BVAR = new nsHtml5ElementName(nsHtml5Atoms::bvar, nsHtml5Atoms::bvar, NS_HTML5TREE_BUILDER_OTHER); - ELT_BODY = new nsHtml5ElementName(nsHtml5Atoms::body, nsHtml5Atoms::body, NS_HTML5TREE_BUILDER_BODY | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_CARD = new nsHtml5ElementName(nsHtml5Atoms::card, nsHtml5Atoms::card, NS_HTML5TREE_BUILDER_OTHER); - ELT_CODE = new nsHtml5ElementName(nsHtml5Atoms::code, nsHtml5Atoms::code, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_CITE = new nsHtml5ElementName(nsHtml5Atoms::cite, nsHtml5Atoms::cite, NS_HTML5TREE_BUILDER_OTHER); - ELT_CSCH = new nsHtml5ElementName(nsHtml5Atoms::csch, nsHtml5Atoms::csch, NS_HTML5TREE_BUILDER_OTHER); - ELT_COSH = new nsHtml5ElementName(nsHtml5Atoms::cosh, nsHtml5Atoms::cosh, NS_HTML5TREE_BUILDER_OTHER); - ELT_COTH = new nsHtml5ElementName(nsHtml5Atoms::coth, nsHtml5Atoms::coth, NS_HTML5TREE_BUILDER_OTHER); - ELT_CURL = new nsHtml5ElementName(nsHtml5Atoms::curl, nsHtml5Atoms::curl, NS_HTML5TREE_BUILDER_OTHER); - ELT_DESC = new nsHtml5ElementName(nsHtml5Atoms::desc, nsHtml5Atoms::desc, NS_HTML5TREE_BUILDER_FOREIGNOBJECT_OR_DESC | NS_HTML5ELEMENT_NAME_SCOPING_AS_SVG); - ELT_DIFF = new nsHtml5ElementName(nsHtml5Atoms::diff, nsHtml5Atoms::diff, NS_HTML5TREE_BUILDER_OTHER); - ELT_DEFS = new nsHtml5ElementName(nsHtml5Atoms::defs, nsHtml5Atoms::defs, NS_HTML5TREE_BUILDER_OTHER); - ELT_FORM = new nsHtml5ElementName(nsHtml5Atoms::form, nsHtml5Atoms::form, NS_HTML5TREE_BUILDER_FORM | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_FONT = new nsHtml5ElementName(nsHtml5Atoms::font, nsHtml5Atoms::font, NS_HTML5TREE_BUILDER_FONT); - ELT_GRAD = new nsHtml5ElementName(nsHtml5Atoms::grad, nsHtml5Atoms::grad, NS_HTML5TREE_BUILDER_OTHER); - ELT_HEAD = new nsHtml5ElementName(nsHtml5Atoms::head, nsHtml5Atoms::head, NS_HTML5TREE_BUILDER_HEAD | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_HTML = new nsHtml5ElementName(nsHtml5Atoms::html, nsHtml5Atoms::html, NS_HTML5TREE_BUILDER_HTML | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_LINE = new nsHtml5ElementName(nsHtml5Atoms::line, nsHtml5Atoms::line, NS_HTML5TREE_BUILDER_OTHER); - ELT_LINK = new nsHtml5ElementName(nsHtml5Atoms::link, nsHtml5Atoms::link, NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_LIST = new nsHtml5ElementName(nsHtml5Atoms::list, nsHtml5Atoms::list, NS_HTML5TREE_BUILDER_OTHER); - ELT_META = new nsHtml5ElementName(nsHtml5Atoms::meta, nsHtml5Atoms::meta, NS_HTML5TREE_BUILDER_META | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_MSUB = new nsHtml5ElementName(nsHtml5Atoms::msub, nsHtml5Atoms::msub, NS_HTML5TREE_BUILDER_OTHER); - ELT_MODE = new nsHtml5ElementName(nsHtml5Atoms::mode, nsHtml5Atoms::mode, NS_HTML5TREE_BUILDER_OTHER); - ELT_MATH = new nsHtml5ElementName(nsHtml5Atoms::math, nsHtml5Atoms::math, NS_HTML5TREE_BUILDER_MATH); - ELT_MARK = new nsHtml5ElementName(nsHtml5Atoms::mark, nsHtml5Atoms::mark, NS_HTML5TREE_BUILDER_OTHER); - ELT_MASK = new nsHtml5ElementName(nsHtml5Atoms::mask, nsHtml5Atoms::mask, NS_HTML5TREE_BUILDER_OTHER); - ELT_MEAN = new nsHtml5ElementName(nsHtml5Atoms::mean, nsHtml5Atoms::mean, NS_HTML5TREE_BUILDER_OTHER); - ELT_MAIN = new nsHtml5ElementName(nsHtml5Atoms::main, nsHtml5Atoms::main, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_MSUP = new nsHtml5ElementName(nsHtml5Atoms::msup, nsHtml5Atoms::msup, NS_HTML5TREE_BUILDER_OTHER); - ELT_MENU = new nsHtml5ElementName(nsHtml5Atoms::menu, nsHtml5Atoms::menu, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_MROW = new nsHtml5ElementName(nsHtml5Atoms::mrow, nsHtml5Atoms::mrow, NS_HTML5TREE_BUILDER_OTHER); - ELT_NONE = new nsHtml5ElementName(nsHtml5Atoms::none, nsHtml5Atoms::none, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOBR = new nsHtml5ElementName(nsHtml5Atoms::nobr, nsHtml5Atoms::nobr, NS_HTML5TREE_BUILDER_NOBR); - ELT_NEST = new nsHtml5ElementName(nsHtml5Atoms::nest, nsHtml5Atoms::nest, NS_HTML5TREE_BUILDER_OTHER); - ELT_PATH = new nsHtml5ElementName(nsHtml5Atoms::path, nsHtml5Atoms::path, NS_HTML5TREE_BUILDER_OTHER); - ELT_PLUS = new nsHtml5ElementName(nsHtml5Atoms::plus, nsHtml5Atoms::plus, NS_HTML5TREE_BUILDER_OTHER); - ELT_RULE = new nsHtml5ElementName(nsHtml5Atoms::rule, nsHtml5Atoms::rule, NS_HTML5TREE_BUILDER_OTHER); - ELT_REAL = new nsHtml5ElementName(nsHtml5Atoms::real, nsHtml5Atoms::real, NS_HTML5TREE_BUILDER_OTHER); - ELT_RELN = new nsHtml5ElementName(nsHtml5Atoms::reln, nsHtml5Atoms::reln, NS_HTML5TREE_BUILDER_OTHER); - ELT_RECT = new nsHtml5ElementName(nsHtml5Atoms::rect, nsHtml5Atoms::rect, NS_HTML5TREE_BUILDER_OTHER); - ELT_ROOT = new nsHtml5ElementName(nsHtml5Atoms::root, nsHtml5Atoms::root, NS_HTML5TREE_BUILDER_OTHER); - ELT_RUBY = new nsHtml5ElementName(nsHtml5Atoms::ruby, nsHtml5Atoms::ruby, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - ELT_SECH = new nsHtml5ElementName(nsHtml5Atoms::sech, nsHtml5Atoms::sech, NS_HTML5TREE_BUILDER_OTHER); - ELT_SINH = new nsHtml5ElementName(nsHtml5Atoms::sinh, nsHtml5Atoms::sinh, NS_HTML5TREE_BUILDER_OTHER); - ELT_SPAN = new nsHtml5ElementName(nsHtml5Atoms::span, nsHtml5Atoms::span, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); - ELT_SAMP = new nsHtml5ElementName(nsHtml5Atoms::samp, nsHtml5Atoms::samp, NS_HTML5TREE_BUILDER_OTHER); - ELT_STOP = new nsHtml5ElementName(nsHtml5Atoms::stop, nsHtml5Atoms::stop, NS_HTML5TREE_BUILDER_OTHER); - ELT_SDEV = new nsHtml5ElementName(nsHtml5Atoms::sdev, nsHtml5Atoms::sdev, NS_HTML5TREE_BUILDER_OTHER); - ELT_TIME = new nsHtml5ElementName(nsHtml5Atoms::time, nsHtml5Atoms::time, NS_HTML5TREE_BUILDER_OTHER); - ELT_TRUE = new nsHtml5ElementName(nsHtml5Atoms::true_, nsHtml5Atoms::true_, NS_HTML5TREE_BUILDER_OTHER); - ELT_TREF = new nsHtml5ElementName(nsHtml5Atoms::tref, nsHtml5Atoms::tref, NS_HTML5TREE_BUILDER_OTHER); - ELT_TANH = new nsHtml5ElementName(nsHtml5Atoms::tanh, nsHtml5Atoms::tanh, NS_HTML5TREE_BUILDER_OTHER); - ELT_TEXT = new nsHtml5ElementName(nsHtml5Atoms::text, nsHtml5Atoms::text, NS_HTML5TREE_BUILDER_OTHER); - ELT_VIEW = new nsHtml5ElementName(nsHtml5Atoms::view, nsHtml5Atoms::view, NS_HTML5TREE_BUILDER_OTHER); - ELT_ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_AUDIO = new nsHtml5ElementName(nsHtml5Atoms::audio, nsHtml5Atoms::audio, NS_HTML5TREE_BUILDER_OTHER); - ELT_APPLY = new nsHtml5ElementName(nsHtml5Atoms::apply, nsHtml5Atoms::apply, NS_HTML5TREE_BUILDER_OTHER); - ELT_EMBED = new nsHtml5ElementName(nsHtml5Atoms::embed, nsHtml5Atoms::embed, NS_HTML5TREE_BUILDER_EMBED | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_FRAME = new nsHtml5ElementName(nsHtml5Atoms::frame, nsHtml5Atoms::frame, NS_HTML5TREE_BUILDER_FRAME | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_FALSE = new nsHtml5ElementName(nsHtml5Atoms::false_, nsHtml5Atoms::false_, NS_HTML5TREE_BUILDER_OTHER); - ELT_FLOOR = new nsHtml5ElementName(nsHtml5Atoms::floor, nsHtml5Atoms::floor, NS_HTML5TREE_BUILDER_OTHER); - ELT_GLYPH = new nsHtml5ElementName(nsHtml5Atoms::glyph, nsHtml5Atoms::glyph, NS_HTML5TREE_BUILDER_OTHER); - ELT_HKERN = new nsHtml5ElementName(nsHtml5Atoms::hkern, nsHtml5Atoms::hkern, NS_HTML5TREE_BUILDER_OTHER); - ELT_IMAGE = new nsHtml5ElementName(nsHtml5Atoms::image, nsHtml5Atoms::image, NS_HTML5TREE_BUILDER_IMAGE); - ELT_IDENT = new nsHtml5ElementName(nsHtml5Atoms::ident, nsHtml5Atoms::ident, NS_HTML5TREE_BUILDER_OTHER); - ELT_INPUT = new nsHtml5ElementName(nsHtml5Atoms::input, nsHtml5Atoms::input, NS_HTML5TREE_BUILDER_INPUT | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_LABEL = new nsHtml5ElementName(nsHtml5Atoms::label, nsHtml5Atoms::label, NS_HTML5TREE_BUILDER_OTHER); - ELT_LIMIT = new nsHtml5ElementName(nsHtml5Atoms::limit, nsHtml5Atoms::limit, NS_HTML5TREE_BUILDER_OTHER); - ELT_MFRAC = new nsHtml5ElementName(nsHtml5Atoms::mfrac, nsHtml5Atoms::mfrac, NS_HTML5TREE_BUILDER_OTHER); - ELT_MPATH = new nsHtml5ElementName(nsHtml5Atoms::mpath, nsHtml5Atoms::mpath, NS_HTML5TREE_BUILDER_OTHER); - ELT_METER = new nsHtml5ElementName(nsHtml5Atoms::meter, nsHtml5Atoms::meter, NS_HTML5TREE_BUILDER_OTHER); - ELT_MOVER = new nsHtml5ElementName(nsHtml5Atoms::mover, nsHtml5Atoms::mover, NS_HTML5TREE_BUILDER_OTHER); - ELT_MINUS = new nsHtml5ElementName(nsHtml5Atoms::minus, nsHtml5Atoms::minus, NS_HTML5TREE_BUILDER_OTHER); - ELT_MROOT = new nsHtml5ElementName(nsHtml5Atoms::mroot, nsHtml5Atoms::mroot, NS_HTML5TREE_BUILDER_OTHER); - ELT_MSQRT = new nsHtml5ElementName(nsHtml5Atoms::msqrt, nsHtml5Atoms::msqrt, NS_HTML5TREE_BUILDER_OTHER); - ELT_MTEXT = new nsHtml5ElementName(nsHtml5Atoms::mtext, nsHtml5Atoms::mtext, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT | NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML); - ELT_NOTIN = new nsHtml5ElementName(nsHtml5Atoms::notin, nsHtml5Atoms::notin, NS_HTML5TREE_BUILDER_OTHER); - ELT_PIECE = new nsHtml5ElementName(nsHtml5Atoms::piece, nsHtml5Atoms::piece, NS_HTML5TREE_BUILDER_OTHER); - ELT_PARAM = new nsHtml5ElementName(nsHtml5Atoms::param, nsHtml5Atoms::param, NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_POWER = new nsHtml5ElementName(nsHtml5Atoms::power, nsHtml5Atoms::power, NS_HTML5TREE_BUILDER_OTHER); - ELT_REALS = new nsHtml5ElementName(nsHtml5Atoms::reals, nsHtml5Atoms::reals, NS_HTML5TREE_BUILDER_OTHER); - ELT_STYLE = new nsHtml5ElementName(nsHtml5Atoms::style, nsHtml5Atoms::style, NS_HTML5TREE_BUILDER_STYLE | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_SMALL = new nsHtml5ElementName(nsHtml5Atoms::small_, nsHtml5Atoms::small_, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_THEAD = new nsHtml5ElementName(nsHtml5Atoms::thead, nsHtml5Atoms::thead, NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_TABLE = new nsHtml5ElementName(nsHtml5Atoms::table, nsHtml5Atoms::table, NS_HTML5TREE_BUILDER_TABLE | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_SCOPING); - ELT_TITLE = new nsHtml5ElementName(nsHtml5Atoms::title, nsHtml5Atoms::title, NS_HTML5TREE_BUILDER_TITLE | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING_AS_SVG); - ELT_TRACK = new nsHtml5ElementName(nsHtml5Atoms::track, nsHtml5Atoms::track, NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_TSPAN = new nsHtml5ElementName(nsHtml5Atoms::tspan, nsHtml5Atoms::tspan, NS_HTML5TREE_BUILDER_OTHER); - ELT_TIMES = new nsHtml5ElementName(nsHtml5Atoms::times, nsHtml5Atoms::times, NS_HTML5TREE_BUILDER_OTHER); - ELT_TFOOT = new nsHtml5ElementName(nsHtml5Atoms::tfoot, nsHtml5Atoms::tfoot, NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_TBODY = new nsHtml5ElementName(nsHtml5Atoms::tbody, nsHtml5Atoms::tbody, NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_UNION = new nsHtml5ElementName(nsHtml5Atoms::union_, nsHtml5Atoms::union_, NS_HTML5TREE_BUILDER_OTHER); - ELT_VKERN = new nsHtml5ElementName(nsHtml5Atoms::vkern, nsHtml5Atoms::vkern, NS_HTML5TREE_BUILDER_OTHER); - ELT_VIDEO = new nsHtml5ElementName(nsHtml5Atoms::video, nsHtml5Atoms::video, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCSEC = new nsHtml5ElementName(nsHtml5Atoms::arcsec, nsHtml5Atoms::arcsec, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCCSC = new nsHtml5ElementName(nsHtml5Atoms::arccsc, nsHtml5Atoms::arccsc, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCTAN = new nsHtml5ElementName(nsHtml5Atoms::arctan, nsHtml5Atoms::arctan, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCSIN = new nsHtml5ElementName(nsHtml5Atoms::arcsin, nsHtml5Atoms::arcsin, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCCOS = new nsHtml5ElementName(nsHtml5Atoms::arccos, nsHtml5Atoms::arccos, NS_HTML5TREE_BUILDER_OTHER); - ELT_APPLET = new nsHtml5ElementName(nsHtml5Atoms::applet, nsHtml5Atoms::applet, NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING); - ELT_ARCCOT = new nsHtml5ElementName(nsHtml5Atoms::arccot, nsHtml5Atoms::arccot, NS_HTML5TREE_BUILDER_OTHER); - ELT_APPROX = new nsHtml5ElementName(nsHtml5Atoms::approx, nsHtml5Atoms::approx, NS_HTML5TREE_BUILDER_OTHER); - ELT_BUTTON = new nsHtml5ElementName(nsHtml5Atoms::button, nsHtml5Atoms::button, NS_HTML5TREE_BUILDER_BUTTON | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_CIRCLE = new nsHtml5ElementName(nsHtml5Atoms::circle, nsHtml5Atoms::circle, NS_HTML5TREE_BUILDER_OTHER); - ELT_CENTER = new nsHtml5ElementName(nsHtml5Atoms::center, nsHtml5Atoms::center, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_CURSOR = new nsHtml5ElementName(nsHtml5Atoms::cursor, nsHtml5Atoms::cursor, NS_HTML5TREE_BUILDER_OTHER); - ELT_CANVAS = new nsHtml5ElementName(nsHtml5Atoms::canvas, nsHtml5Atoms::canvas, NS_HTML5TREE_BUILDER_OTHER); - ELT_DIVIDE = new nsHtml5ElementName(nsHtml5Atoms::divide, nsHtml5Atoms::divide, NS_HTML5TREE_BUILDER_OTHER); - ELT_DEGREE = new nsHtml5ElementName(nsHtml5Atoms::degree, nsHtml5Atoms::degree, NS_HTML5TREE_BUILDER_OTHER); - ELT_DIALOG = new nsHtml5ElementName(nsHtml5Atoms::dialog, nsHtml5Atoms::dialog, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_DOMAIN = new nsHtml5ElementName(nsHtml5Atoms::domain, nsHtml5Atoms::domain, NS_HTML5TREE_BUILDER_OTHER); - ELT_EXISTS = new nsHtml5ElementName(nsHtml5Atoms::exists, nsHtml5Atoms::exists, NS_HTML5TREE_BUILDER_OTHER); - ELT_FETILE = new nsHtml5ElementName(nsHtml5Atoms::fetile, nsHtml5Atoms::feTile, NS_HTML5TREE_BUILDER_OTHER); - ELT_FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_FORALL = new nsHtml5ElementName(nsHtml5Atoms::forall, nsHtml5Atoms::forall, NS_HTML5TREE_BUILDER_OTHER); - ELT_FILTER = new nsHtml5ElementName(nsHtml5Atoms::filter, nsHtml5Atoms::filter, NS_HTML5TREE_BUILDER_OTHER); - ELT_FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_HGROUP = new nsHtml5ElementName(nsHtml5Atoms::hgroup, nsHtml5Atoms::hgroup, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_IFRAME = new nsHtml5ElementName(nsHtml5Atoms::iframe, nsHtml5Atoms::iframe, NS_HTML5TREE_BUILDER_IFRAME | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_KEYGEN = new nsHtml5ElementName(nsHtml5Atoms::keygen, nsHtml5Atoms::keygen, NS_HTML5TREE_BUILDER_KEYGEN); - ELT_LAMBDA = new nsHtml5ElementName(nsHtml5Atoms::lambda, nsHtml5Atoms::lambda, NS_HTML5TREE_BUILDER_OTHER); - ELT_LEGEND = new nsHtml5ElementName(nsHtml5Atoms::legend, nsHtml5Atoms::legend, NS_HTML5TREE_BUILDER_OTHER); - ELT_MSPACE = new nsHtml5ElementName(nsHtml5Atoms::mspace, nsHtml5Atoms::mspace, NS_HTML5TREE_BUILDER_OTHER); - ELT_MTABLE = new nsHtml5ElementName(nsHtml5Atoms::mtable, nsHtml5Atoms::mtable, NS_HTML5TREE_BUILDER_OTHER); - ELT_MSTYLE = new nsHtml5ElementName(nsHtml5Atoms::mstyle, nsHtml5Atoms::mstyle, NS_HTML5TREE_BUILDER_OTHER); - ELT_MGLYPH = new nsHtml5ElementName(nsHtml5Atoms::mglyph, nsHtml5Atoms::mglyph, NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK); - ELT_MEDIAN = new nsHtml5ElementName(nsHtml5Atoms::median, nsHtml5Atoms::median, NS_HTML5TREE_BUILDER_OTHER); - ELT_MUNDER = new nsHtml5ElementName(nsHtml5Atoms::munder, nsHtml5Atoms::munder, NS_HTML5TREE_BUILDER_OTHER); - ELT_MARKER = new nsHtml5ElementName(nsHtml5Atoms::marker, nsHtml5Atoms::marker, NS_HTML5TREE_BUILDER_OTHER); - ELT_MERROR = new nsHtml5ElementName(nsHtml5Atoms::merror, nsHtml5Atoms::merror, NS_HTML5TREE_BUILDER_OTHER); - ELT_MOMENT = new nsHtml5ElementName(nsHtml5Atoms::moment, nsHtml5Atoms::moment, NS_HTML5TREE_BUILDER_OTHER); - ELT_MATRIX = new nsHtml5ElementName(nsHtml5Atoms::matrix, nsHtml5Atoms::matrix, NS_HTML5TREE_BUILDER_OTHER); - ELT_OPTION = new nsHtml5ElementName(nsHtml5Atoms::option, nsHtml5Atoms::option, NS_HTML5TREE_BUILDER_OPTION | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_OBJECT = new nsHtml5ElementName(nsHtml5Atoms::object, nsHtml5Atoms::object, NS_HTML5TREE_BUILDER_OBJECT | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING); - ELT_OUTPUT = new nsHtml5ElementName(nsHtml5Atoms::output, nsHtml5Atoms::output, NS_HTML5TREE_BUILDER_OUTPUT); - ELT_PRIMES = new nsHtml5ElementName(nsHtml5Atoms::primes, nsHtml5Atoms::primes, NS_HTML5TREE_BUILDER_OTHER); - ELT_SOURCE = new nsHtml5ElementName(nsHtml5Atoms::source, nsHtml5Atoms::source, NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK); - ELT_STRIKE = new nsHtml5ElementName(nsHtml5Atoms::strike, nsHtml5Atoms::strike, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_STRONG = new nsHtml5ElementName(nsHtml5Atoms::strong, nsHtml5Atoms::strong, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); - ELT_SWITCH = new nsHtml5ElementName(nsHtml5Atoms::switch_, nsHtml5Atoms::switch_, NS_HTML5TREE_BUILDER_OTHER); - ELT_SYMBOL = new nsHtml5ElementName(nsHtml5Atoms::symbol, nsHtml5Atoms::symbol, NS_HTML5TREE_BUILDER_OTHER); - ELT_SELECT = new nsHtml5ElementName(nsHtml5Atoms::select, nsHtml5Atoms::select, NS_HTML5TREE_BUILDER_SELECT | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_SUBSET = new nsHtml5ElementName(nsHtml5Atoms::subset, nsHtml5Atoms::subset, NS_HTML5TREE_BUILDER_OTHER); - ELT_SCRIPT = new nsHtml5ElementName(nsHtml5Atoms::script, nsHtml5Atoms::script, NS_HTML5TREE_BUILDER_SCRIPT | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_TBREAK = new nsHtml5ElementName(nsHtml5Atoms::tbreak, nsHtml5Atoms::tbreak, NS_HTML5TREE_BUILDER_OTHER); - ELT_VECTOR = new nsHtml5ElementName(nsHtml5Atoms::vector, nsHtml5Atoms::vector, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_ANIMATE = new nsHtml5ElementName(nsHtml5Atoms::animate, nsHtml5Atoms::animate, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCSECH = new nsHtml5ElementName(nsHtml5Atoms::arcsech, nsHtml5Atoms::arcsech, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCCSCH = new nsHtml5ElementName(nsHtml5Atoms::arccsch, nsHtml5Atoms::arccsch, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCTANH = new nsHtml5ElementName(nsHtml5Atoms::arctanh, nsHtml5Atoms::arctanh, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCSINH = new nsHtml5ElementName(nsHtml5Atoms::arcsinh, nsHtml5Atoms::arcsinh, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCCOSH = new nsHtml5ElementName(nsHtml5Atoms::arccosh, nsHtml5Atoms::arccosh, NS_HTML5TREE_BUILDER_OTHER); - ELT_ARCCOTH = new nsHtml5ElementName(nsHtml5Atoms::arccoth, nsHtml5Atoms::arccoth, NS_HTML5TREE_BUILDER_OTHER); - ELT_ACRONYM = new nsHtml5ElementName(nsHtml5Atoms::acronym, nsHtml5Atoms::acronym, NS_HTML5TREE_BUILDER_OTHER); - ELT_ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_BGSOUND = new nsHtml5ElementName(nsHtml5Atoms::bgsound, nsHtml5Atoms::bgsound, NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_COMPOSE = new nsHtml5ElementName(nsHtml5Atoms::compose, nsHtml5Atoms::compose, NS_HTML5TREE_BUILDER_OTHER); - ELT_CEILING = new nsHtml5ElementName(nsHtml5Atoms::ceiling, nsHtml5Atoms::ceiling, NS_HTML5TREE_BUILDER_OTHER); - ELT_CSYMBOL = new nsHtml5ElementName(nsHtml5Atoms::csymbol, nsHtml5Atoms::csymbol, NS_HTML5TREE_BUILDER_OTHER); - ELT_CAPTION = new nsHtml5ElementName(nsHtml5Atoms::caption, nsHtml5Atoms::caption, NS_HTML5TREE_BUILDER_CAPTION | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING); - ELT_DISCARD = new nsHtml5ElementName(nsHtml5Atoms::discard, nsHtml5Atoms::discard, NS_HTML5TREE_BUILDER_OTHER); - ELT_DECLARE = new nsHtml5ElementName(nsHtml5Atoms::declare, nsHtml5Atoms::declare, NS_HTML5TREE_BUILDER_OTHER); - ELT_DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_ELLIPSE = new nsHtml5ElementName(nsHtml5Atoms::ellipse, nsHtml5Atoms::ellipse, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEFUNCA = new nsHtml5ElementName(nsHtml5Atoms::fefunca, nsHtml5Atoms::feFuncA, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEFUNCB = new nsHtml5ElementName(nsHtml5Atoms::fefuncb, nsHtml5Atoms::feFuncB, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEBLEND = new nsHtml5ElementName(nsHtml5Atoms::feblend, nsHtml5Atoms::feBlend, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEFLOOD = new nsHtml5ElementName(nsHtml5Atoms::feflood, nsHtml5Atoms::feFlood, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEIMAGE = new nsHtml5ElementName(nsHtml5Atoms::feimage, nsHtml5Atoms::feImage, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEMERGE = new nsHtml5ElementName(nsHtml5Atoms::femerge, nsHtml5Atoms::feMerge, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEFUNCG = new nsHtml5ElementName(nsHtml5Atoms::fefuncg, nsHtml5Atoms::feFuncG, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEFUNCR = new nsHtml5ElementName(nsHtml5Atoms::fefuncr, nsHtml5Atoms::feFuncR, NS_HTML5TREE_BUILDER_OTHER); - ELT_HANDLER = new nsHtml5ElementName(nsHtml5Atoms::handler, nsHtml5Atoms::handler, NS_HTML5TREE_BUILDER_OTHER); - ELT_INVERSE = new nsHtml5ElementName(nsHtml5Atoms::inverse, nsHtml5Atoms::inverse, NS_HTML5TREE_BUILDER_OTHER); - ELT_IMPLIES = new nsHtml5ElementName(nsHtml5Atoms::implies, nsHtml5Atoms::implies, NS_HTML5TREE_BUILDER_OTHER); - ELT_ISINDEX = new nsHtml5ElementName(nsHtml5Atoms::isindex, nsHtml5Atoms::isindex, NS_HTML5TREE_BUILDER_ISINDEX | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_LOGBASE = new nsHtml5ElementName(nsHtml5Atoms::logbase, nsHtml5Atoms::logbase, NS_HTML5TREE_BUILDER_OTHER); - ELT_LISTING = new nsHtml5ElementName(nsHtml5Atoms::listing, nsHtml5Atoms::listing, NS_HTML5TREE_BUILDER_PRE_OR_LISTING | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_MFENCED = new nsHtml5ElementName(nsHtml5Atoms::mfenced, nsHtml5Atoms::mfenced, NS_HTML5TREE_BUILDER_OTHER); - ELT_MPADDED = new nsHtml5ElementName(nsHtml5Atoms::mpadded, nsHtml5Atoms::mpadded, NS_HTML5TREE_BUILDER_OTHER); - ELT_MARQUEE = new nsHtml5ElementName(nsHtml5Atoms::marquee, nsHtml5Atoms::marquee, NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING); - ELT_MACTION = new nsHtml5ElementName(nsHtml5Atoms::maction, nsHtml5Atoms::maction, NS_HTML5TREE_BUILDER_OTHER); - ELT_MSUBSUP = new nsHtml5ElementName(nsHtml5Atoms::msubsup, nsHtml5Atoms::msubsup, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOEMBED = new nsHtml5ElementName(nsHtml5Atoms::noembed, nsHtml5Atoms::noembed, NS_HTML5TREE_BUILDER_NOEMBED | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_PICTURE = new nsHtml5ElementName(nsHtml5Atoms::picture, nsHtml5Atoms::picture, NS_HTML5TREE_BUILDER_OTHER); - ELT_POLYGON = new nsHtml5ElementName(nsHtml5Atoms::polygon, nsHtml5Atoms::polygon, NS_HTML5TREE_BUILDER_OTHER); - ELT_PATTERN = new nsHtml5ElementName(nsHtml5Atoms::pattern, nsHtml5Atoms::pattern, NS_HTML5TREE_BUILDER_OTHER); - ELT_PRODUCT = new nsHtml5ElementName(nsHtml5Atoms::product, nsHtml5Atoms::product, NS_HTML5TREE_BUILDER_OTHER); - ELT_SETDIFF = new nsHtml5ElementName(nsHtml5Atoms::setdiff, nsHtml5Atoms::setdiff, NS_HTML5TREE_BUILDER_OTHER); - ELT_SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_SUMMARY = new nsHtml5ElementName(nsHtml5Atoms::summary, nsHtml5Atoms::summary, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_TENDSTO = new nsHtml5ElementName(nsHtml5Atoms::tendsto, nsHtml5Atoms::tendsto, NS_HTML5TREE_BUILDER_OTHER); - ELT_UPLIMIT = new nsHtml5ElementName(nsHtml5Atoms::uplimit, nsHtml5Atoms::uplimit, NS_HTML5TREE_BUILDER_OTHER); - ELT_ALTGLYPH = new nsHtml5ElementName(nsHtml5Atoms::altglyph, nsHtml5Atoms::altGlyph, NS_HTML5TREE_BUILDER_OTHER); - ELT_BASEFONT = new nsHtml5ElementName(nsHtml5Atoms::basefont, nsHtml5Atoms::basefont, NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_CLIPPATH = new nsHtml5ElementName(nsHtml5Atoms::clippath, nsHtml5Atoms::clipPath, NS_HTML5TREE_BUILDER_OTHER); - ELT_CODOMAIN = new nsHtml5ElementName(nsHtml5Atoms::codomain, nsHtml5Atoms::codomain, NS_HTML5TREE_BUILDER_OTHER); - ELT_COLGROUP = new nsHtml5ElementName(nsHtml5Atoms::colgroup, nsHtml5Atoms::colgroup, NS_HTML5TREE_BUILDER_COLGROUP | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_EMPTYSET = new nsHtml5ElementName(nsHtml5Atoms::emptyset, nsHtml5Atoms::emptyset, NS_HTML5TREE_BUILDER_OTHER); - ELT_FACTOROF = new nsHtml5ElementName(nsHtml5Atoms::factorof, nsHtml5Atoms::factorof, NS_HTML5TREE_BUILDER_OTHER); - ELT_FIELDSET = new nsHtml5ElementName(nsHtml5Atoms::fieldset, nsHtml5Atoms::fieldset, NS_HTML5TREE_BUILDER_FIELDSET | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_FRAMESET = new nsHtml5ElementName(nsHtml5Atoms::frameset, nsHtml5Atoms::frameset, NS_HTML5TREE_BUILDER_FRAMESET | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_FEOFFSET = new nsHtml5ElementName(nsHtml5Atoms::feoffset, nsHtml5Atoms::feOffset, NS_HTML5TREE_BUILDER_OTHER); - ELT_GLYPHREF = new nsHtml5ElementName(nsHtml5Atoms::glyphref, nsHtml5Atoms::glyphRef, NS_HTML5TREE_BUILDER_OTHER); - ELT_INTERVAL = new nsHtml5ElementName(nsHtml5Atoms::interval, nsHtml5Atoms::interval, NS_HTML5TREE_BUILDER_OTHER); - ELT_INTEGERS = new nsHtml5ElementName(nsHtml5Atoms::integers, nsHtml5Atoms::integers, NS_HTML5TREE_BUILDER_OTHER); - ELT_INFINITY = new nsHtml5ElementName(nsHtml5Atoms::infinity, nsHtml5Atoms::infinity, NS_HTML5TREE_BUILDER_OTHER); - ELT_LISTENER = new nsHtml5ElementName(nsHtml5Atoms::listener, nsHtml5Atoms::listener, NS_HTML5TREE_BUILDER_OTHER); - ELT_LOWLIMIT = new nsHtml5ElementName(nsHtml5Atoms::lowlimit, nsHtml5Atoms::lowlimit, NS_HTML5TREE_BUILDER_OTHER); - ELT_METADATA = new nsHtml5ElementName(nsHtml5Atoms::metadata, nsHtml5Atoms::metadata, NS_HTML5TREE_BUILDER_OTHER); - ELT_MENCLOSE = new nsHtml5ElementName(nsHtml5Atoms::menclose, nsHtml5Atoms::menclose, NS_HTML5TREE_BUILDER_OTHER); - ELT_MENUITEM = new nsHtml5ElementName(nsHtml5Atoms::menuitem, nsHtml5Atoms::menuitem, NS_HTML5TREE_BUILDER_MENUITEM); - ELT_MPHANTOM = new nsHtml5ElementName(nsHtml5Atoms::mphantom, nsHtml5Atoms::mphantom, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOFRAMES = new nsHtml5ElementName(nsHtml5Atoms::noframes, nsHtml5Atoms::noframes, NS_HTML5TREE_BUILDER_NOFRAMES | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_NOSCRIPT = new nsHtml5ElementName(nsHtml5Atoms::noscript, nsHtml5Atoms::noscript, NS_HTML5TREE_BUILDER_NOSCRIPT | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_OPTGROUP = new nsHtml5ElementName(nsHtml5Atoms::optgroup, nsHtml5Atoms::optgroup, NS_HTML5TREE_BUILDER_OPTGROUP | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - ELT_POLYLINE = new nsHtml5ElementName(nsHtml5Atoms::polyline, nsHtml5Atoms::polyline, NS_HTML5TREE_BUILDER_OTHER); - ELT_PREFETCH = new nsHtml5ElementName(nsHtml5Atoms::prefetch, nsHtml5Atoms::prefetch, NS_HTML5TREE_BUILDER_OTHER); - ELT_PROGRESS = new nsHtml5ElementName(nsHtml5Atoms::progress, nsHtml5Atoms::progress, NS_HTML5TREE_BUILDER_OTHER); - ELT_PRSUBSET = new nsHtml5ElementName(nsHtml5Atoms::prsubset, nsHtml5Atoms::prsubset, NS_HTML5TREE_BUILDER_OTHER); - ELT_QUOTIENT = new nsHtml5ElementName(nsHtml5Atoms::quotient, nsHtml5Atoms::quotient, NS_HTML5TREE_BUILDER_OTHER); - ELT_SELECTOR = new nsHtml5ElementName(nsHtml5Atoms::selector, nsHtml5Atoms::selector, NS_HTML5TREE_BUILDER_OTHER); - ELT_TEXTAREA = new nsHtml5ElementName(nsHtml5Atoms::textarea, nsHtml5Atoms::textarea, NS_HTML5TREE_BUILDER_TEXTAREA | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_TEMPLATE = new nsHtml5ElementName(nsHtml5Atoms::template_, nsHtml5Atoms::template_, NS_HTML5TREE_BUILDER_TEMPLATE | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING); - ELT_TEXTPATH = new nsHtml5ElementName(nsHtml5Atoms::textpath, nsHtml5Atoms::textPath, NS_HTML5TREE_BUILDER_OTHER); - ELT_VARIANCE = new nsHtml5ElementName(nsHtml5Atoms::variance, nsHtml5Atoms::variance, NS_HTML5TREE_BUILDER_OTHER); - ELT_ANIMATION = new nsHtml5ElementName(nsHtml5Atoms::animation, nsHtml5Atoms::animation, NS_HTML5TREE_BUILDER_OTHER); - ELT_CONJUGATE = new nsHtml5ElementName(nsHtml5Atoms::conjugate, nsHtml5Atoms::conjugate, NS_HTML5TREE_BUILDER_OTHER); - ELT_CONDITION = new nsHtml5ElementName(nsHtml5Atoms::condition, nsHtml5Atoms::condition, NS_HTML5TREE_BUILDER_OTHER); - ELT_COMPLEXES = new nsHtml5ElementName(nsHtml5Atoms::complexes, nsHtml5Atoms::complexes, NS_HTML5TREE_BUILDER_OTHER); - ELT_FONT_FACE = new nsHtml5ElementName(nsHtml5Atoms::font_face, nsHtml5Atoms::font_face, NS_HTML5TREE_BUILDER_OTHER); - ELT_FACTORIAL = new nsHtml5ElementName(nsHtml5Atoms::factorial, nsHtml5Atoms::factorial, NS_HTML5TREE_BUILDER_OTHER); - ELT_INTERSECT = new nsHtml5ElementName(nsHtml5Atoms::intersect, nsHtml5Atoms::intersect, NS_HTML5TREE_BUILDER_OTHER); - ELT_IMAGINARY = new nsHtml5ElementName(nsHtml5Atoms::imaginary, nsHtml5Atoms::imaginary, NS_HTML5TREE_BUILDER_OTHER); - ELT_LAPLACIAN = new nsHtml5ElementName(nsHtml5Atoms::laplacian, nsHtml5Atoms::laplacian, NS_HTML5TREE_BUILDER_OTHER); - ELT_MATRIXROW = new nsHtml5ElementName(nsHtml5Atoms::matrixrow, nsHtml5Atoms::matrixrow, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOTSUBSET = new nsHtml5ElementName(nsHtml5Atoms::notsubset, nsHtml5Atoms::notsubset, NS_HTML5TREE_BUILDER_OTHER); - ELT_OTHERWISE = new nsHtml5ElementName(nsHtml5Atoms::otherwise, nsHtml5Atoms::otherwise, NS_HTML5TREE_BUILDER_OTHER); - ELT_PIECEWISE = new nsHtml5ElementName(nsHtml5Atoms::piecewise, nsHtml5Atoms::piecewise, NS_HTML5TREE_BUILDER_OTHER); - ELT_PLAINTEXT = new nsHtml5ElementName(nsHtml5Atoms::plaintext, nsHtml5Atoms::plaintext, NS_HTML5TREE_BUILDER_PLAINTEXT | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_RATIONALS = new nsHtml5ElementName(nsHtml5Atoms::rationals, nsHtml5Atoms::rationals, NS_HTML5TREE_BUILDER_OTHER); - ELT_SEMANTICS = new nsHtml5ElementName(nsHtml5Atoms::semantics, nsHtml5Atoms::semantics, NS_HTML5TREE_BUILDER_OTHER); - ELT_TRANSPOSE = new nsHtml5ElementName(nsHtml5Atoms::transpose, nsHtml5Atoms::transpose, NS_HTML5TREE_BUILDER_OTHER); - ELT_ANNOTATION = new nsHtml5ElementName(nsHtml5Atoms::annotation, nsHtml5Atoms::annotation, NS_HTML5TREE_BUILDER_OTHER); - ELT_BLOCKQUOTE = new nsHtml5ElementName(nsHtml5Atoms::blockquote, nsHtml5Atoms::blockquote, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_DIVERGENCE = new nsHtml5ElementName(nsHtml5Atoms::divergence, nsHtml5Atoms::divergence, NS_HTML5TREE_BUILDER_OTHER); - ELT_EULERGAMMA = new nsHtml5ElementName(nsHtml5Atoms::eulergamma, nsHtml5Atoms::eulergamma, NS_HTML5TREE_BUILDER_OTHER); - ELT_EQUIVALENT = new nsHtml5ElementName(nsHtml5Atoms::equivalent, nsHtml5Atoms::equivalent, NS_HTML5TREE_BUILDER_OTHER); - ELT_FIGCAPTION = new nsHtml5ElementName(nsHtml5Atoms::figcaption, nsHtml5Atoms::figcaption, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL); - ELT_IMAGINARYI = new nsHtml5ElementName(nsHtml5Atoms::imaginaryi, nsHtml5Atoms::imaginaryi, NS_HTML5TREE_BUILDER_OTHER); - ELT_MALIGNMARK = new nsHtml5ElementName(nsHtml5Atoms::malignmark, nsHtml5Atoms::malignmark, NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK); - ELT_MUNDEROVER = new nsHtml5ElementName(nsHtml5Atoms::munderover, nsHtml5Atoms::munderover, NS_HTML5TREE_BUILDER_OTHER); - ELT_MLABELEDTR = new nsHtml5ElementName(nsHtml5Atoms::mlabeledtr, nsHtml5Atoms::mlabeledtr, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOTANUMBER = new nsHtml5ElementName(nsHtml5Atoms::notanumber, nsHtml5Atoms::notanumber, NS_HTML5TREE_BUILDER_OTHER); - ELT_SOLIDCOLOR = new nsHtml5ElementName(nsHtml5Atoms::solidcolor, nsHtml5Atoms::solidcolor, NS_HTML5TREE_BUILDER_OTHER); - ELT_ALTGLYPHDEF = new nsHtml5ElementName(nsHtml5Atoms::altglyphdef, nsHtml5Atoms::altGlyphDef, NS_HTML5TREE_BUILDER_OTHER); - ELT_DETERMINANT = new nsHtml5ElementName(nsHtml5Atoms::determinant, nsHtml5Atoms::determinant, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEMERGENODE = new nsHtml5ElementName(nsHtml5Atoms::femergenode, nsHtml5Atoms::feMergeNode, NS_HTML5TREE_BUILDER_OTHER); - ELT_FECOMPOSITE = new nsHtml5ElementName(nsHtml5Atoms::fecomposite, nsHtml5Atoms::feComposite, NS_HTML5TREE_BUILDER_OTHER); - ELT_FESPOTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fespotlight, nsHtml5Atoms::feSpotLight, NS_HTML5TREE_BUILDER_OTHER); - ELT_MALIGNGROUP = new nsHtml5ElementName(nsHtml5Atoms::maligngroup, nsHtml5Atoms::maligngroup, NS_HTML5TREE_BUILDER_OTHER); - ELT_MPRESCRIPTS = new nsHtml5ElementName(nsHtml5Atoms::mprescripts, nsHtml5Atoms::mprescripts, NS_HTML5TREE_BUILDER_OTHER); - ELT_MOMENTABOUT = new nsHtml5ElementName(nsHtml5Atoms::momentabout, nsHtml5Atoms::momentabout, NS_HTML5TREE_BUILDER_OTHER); - ELT_NOTPRSUBSET = new nsHtml5ElementName(nsHtml5Atoms::notprsubset, nsHtml5Atoms::notprsubset, NS_HTML5TREE_BUILDER_OTHER); - ELT_PARTIALDIFF = new nsHtml5ElementName(nsHtml5Atoms::partialdiff, nsHtml5Atoms::partialdiff, NS_HTML5TREE_BUILDER_OTHER); - ELT_ALTGLYPHITEM = new nsHtml5ElementName(nsHtml5Atoms::altglyphitem, nsHtml5Atoms::altGlyphItem, NS_HTML5TREE_BUILDER_OTHER); - ELT_ANIMATECOLOR = new nsHtml5ElementName(nsHtml5Atoms::animatecolor, nsHtml5Atoms::animateColor, NS_HTML5TREE_BUILDER_OTHER); - ELT_DATATEMPLATE = new nsHtml5ElementName(nsHtml5Atoms::datatemplate, nsHtml5Atoms::datatemplate, NS_HTML5TREE_BUILDER_OTHER); - ELT_EXPONENTIALE = new nsHtml5ElementName(nsHtml5Atoms::exponentiale, nsHtml5Atoms::exponentiale, NS_HTML5TREE_BUILDER_OTHER); - ELT_FETURBULENCE = new nsHtml5ElementName(nsHtml5Atoms::feturbulence, nsHtml5Atoms::feTurbulence, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEPOINTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fepointlight, nsHtml5Atoms::fePointLight, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEDROPSHADOW = new nsHtml5ElementName(nsHtml5Atoms::fedropshadow, nsHtml5Atoms::feDropShadow, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEMORPHOLOGY = new nsHtml5ElementName(nsHtml5Atoms::femorphology, nsHtml5Atoms::feMorphology, NS_HTML5TREE_BUILDER_OTHER); - ELT_OUTERPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::outerproduct, nsHtml5Atoms::outerproduct, NS_HTML5TREE_BUILDER_OTHER); - ELT_ANIMATEMOTION = new nsHtml5ElementName(nsHtml5Atoms::animatemotion, nsHtml5Atoms::animateMotion, NS_HTML5TREE_BUILDER_OTHER); - ELT_COLOR_PROFILE = new nsHtml5ElementName(nsHtml5Atoms::color_profile, nsHtml5Atoms::color_profile, NS_HTML5TREE_BUILDER_OTHER); - ELT_FONT_FACE_SRC = new nsHtml5ElementName(nsHtml5Atoms::font_face_src, nsHtml5Atoms::font_face_src, NS_HTML5TREE_BUILDER_OTHER); - ELT_FONT_FACE_URI = new nsHtml5ElementName(nsHtml5Atoms::font_face_uri, nsHtml5Atoms::font_face_uri, NS_HTML5TREE_BUILDER_OTHER); - ELT_FOREIGNOBJECT = new nsHtml5ElementName(nsHtml5Atoms::foreignobject, nsHtml5Atoms::foreignObject, NS_HTML5TREE_BUILDER_FOREIGNOBJECT_OR_DESC | NS_HTML5ELEMENT_NAME_SCOPING_AS_SVG); - ELT_FECOLORMATRIX = new nsHtml5ElementName(nsHtml5Atoms::fecolormatrix, nsHtml5Atoms::feColorMatrix, NS_HTML5TREE_BUILDER_OTHER); - ELT_MISSING_GLYPH = new nsHtml5ElementName(nsHtml5Atoms::missing_glyph, nsHtml5Atoms::missing_glyph, NS_HTML5TREE_BUILDER_OTHER); - ELT_MMULTISCRIPTS = new nsHtml5ElementName(nsHtml5Atoms::mmultiscripts, nsHtml5Atoms::mmultiscripts, NS_HTML5TREE_BUILDER_OTHER); - ELT_SCALARPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::scalarproduct, nsHtml5Atoms::scalarproduct, NS_HTML5TREE_BUILDER_OTHER); - ELT_VECTORPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::vectorproduct, nsHtml5Atoms::vectorproduct, NS_HTML5TREE_BUILDER_OTHER); - ELT_ANNOTATION_XML = new nsHtml5ElementName(nsHtml5Atoms::annotation_xml, nsHtml5Atoms::annotation_xml, NS_HTML5TREE_BUILDER_ANNOTATION_XML | NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML); - ELT_DEFINITION_SRC = new nsHtml5ElementName(nsHtml5Atoms::definition_src, nsHtml5Atoms::definition_src, NS_HTML5TREE_BUILDER_OTHER); - ELT_FONT_FACE_NAME = new nsHtml5ElementName(nsHtml5Atoms::font_face_name, nsHtml5Atoms::font_face_name, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEGAUSSIANBLUR = new nsHtml5ElementName(nsHtml5Atoms::fegaussianblur, nsHtml5Atoms::feGaussianBlur, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEDISTANTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fedistantlight, nsHtml5Atoms::feDistantLight, NS_HTML5TREE_BUILDER_OTHER); - ELT_LINEARGRADIENT = new nsHtml5ElementName(nsHtml5Atoms::lineargradient, nsHtml5Atoms::linearGradient, NS_HTML5TREE_BUILDER_OTHER); - ELT_NATURALNUMBERS = new nsHtml5ElementName(nsHtml5Atoms::naturalnumbers, nsHtml5Atoms::naturalnumbers, NS_HTML5TREE_BUILDER_OTHER); - ELT_RADIALGRADIENT = new nsHtml5ElementName(nsHtml5Atoms::radialgradient, nsHtml5Atoms::radialGradient, NS_HTML5TREE_BUILDER_OTHER); - ELT_ANIMATETRANSFORM = new nsHtml5ElementName(nsHtml5Atoms::animatetransform, nsHtml5Atoms::animateTransform, NS_HTML5TREE_BUILDER_OTHER); - ELT_CARTESIANPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::cartesianproduct, nsHtml5Atoms::cartesianproduct, NS_HTML5TREE_BUILDER_OTHER); - ELT_FONT_FACE_FORMAT = new nsHtml5ElementName(nsHtml5Atoms::font_face_format, nsHtml5Atoms::font_face_format, NS_HTML5TREE_BUILDER_OTHER); - ELT_FECONVOLVEMATRIX = new nsHtml5ElementName(nsHtml5Atoms::feconvolvematrix, nsHtml5Atoms::feConvolveMatrix, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEDIFFUSELIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fediffuselighting, nsHtml5Atoms::feDiffuseLighting, NS_HTML5TREE_BUILDER_OTHER); - ELT_FEDISPLACEMENTMAP = new nsHtml5ElementName(nsHtml5Atoms::fedisplacementmap, nsHtml5Atoms::feDisplacementMap, NS_HTML5TREE_BUILDER_OTHER); - ELT_FESPECULARLIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fespecularlighting, nsHtml5Atoms::feSpecularLighting, NS_HTML5TREE_BUILDER_OTHER); - ELT_DOMAINOFAPPLICATION = new nsHtml5ElementName(nsHtml5Atoms::domainofapplication, nsHtml5Atoms::domainofapplication, NS_HTML5TREE_BUILDER_OTHER); - ELT_FECOMPONENTTRANSFER = new nsHtml5ElementName(nsHtml5Atoms::fecomponenttransfer, nsHtml5Atoms::feComponentTransfer, NS_HTML5TREE_BUILDER_OTHER); - ELEMENT_NAMES = new nsHtml5ElementName*[398]; - ELEMENT_NAMES[0] = ELT_A; - ELEMENT_NAMES[1] = ELT_B; - ELEMENT_NAMES[2] = ELT_G; - ELEMENT_NAMES[3] = ELT_I; - ELEMENT_NAMES[4] = ELT_P; - ELEMENT_NAMES[5] = ELT_Q; - ELEMENT_NAMES[6] = ELT_S; - ELEMENT_NAMES[7] = ELT_U; - ELEMENT_NAMES[8] = ELT_BR; - ELEMENT_NAMES[9] = ELT_CI; - ELEMENT_NAMES[10] = ELT_CN; - ELEMENT_NAMES[11] = ELT_DD; - ELEMENT_NAMES[12] = ELT_DL; - ELEMENT_NAMES[13] = ELT_DT; - ELEMENT_NAMES[14] = ELT_EM; - ELEMENT_NAMES[15] = ELT_EQ; - ELEMENT_NAMES[16] = ELT_FN; - ELEMENT_NAMES[17] = ELT_H1; - ELEMENT_NAMES[18] = ELT_H2; - ELEMENT_NAMES[19] = ELT_H3; - ELEMENT_NAMES[20] = ELT_H4; - ELEMENT_NAMES[21] = ELT_H5; - ELEMENT_NAMES[22] = ELT_H6; - ELEMENT_NAMES[23] = ELT_GT; - ELEMENT_NAMES[24] = ELT_HR; - ELEMENT_NAMES[25] = ELT_IN; - ELEMENT_NAMES[26] = ELT_LI; - ELEMENT_NAMES[27] = ELT_LN; - ELEMENT_NAMES[28] = ELT_LT; - ELEMENT_NAMES[29] = ELT_MI; - ELEMENT_NAMES[30] = ELT_MN; - ELEMENT_NAMES[31] = ELT_MO; - ELEMENT_NAMES[32] = ELT_MS; - ELEMENT_NAMES[33] = ELT_OL; - ELEMENT_NAMES[34] = ELT_OR; - ELEMENT_NAMES[35] = ELT_PI; - ELEMENT_NAMES[36] = ELT_RB; - ELEMENT_NAMES[37] = ELT_RP; - ELEMENT_NAMES[38] = ELT_RT; - ELEMENT_NAMES[39] = ELT_TD; - ELEMENT_NAMES[40] = ELT_TH; - ELEMENT_NAMES[41] = ELT_TR; - ELEMENT_NAMES[42] = ELT_TT; - ELEMENT_NAMES[43] = ELT_UL; - ELEMENT_NAMES[44] = ELT_AND; - ELEMENT_NAMES[45] = ELT_ARG; - ELEMENT_NAMES[46] = ELT_ABS; - ELEMENT_NAMES[47] = ELT_BIG; - ELEMENT_NAMES[48] = ELT_BDO; - ELEMENT_NAMES[49] = ELT_CSC; - ELEMENT_NAMES[50] = ELT_COL; - ELEMENT_NAMES[51] = ELT_COS; - ELEMENT_NAMES[52] = ELT_COT; - ELEMENT_NAMES[53] = ELT_DEL; - ELEMENT_NAMES[54] = ELT_DFN; - ELEMENT_NAMES[55] = ELT_DIR; - ELEMENT_NAMES[56] = ELT_DIV; - ELEMENT_NAMES[57] = ELT_EXP; - ELEMENT_NAMES[58] = ELT_GCD; - ELEMENT_NAMES[59] = ELT_GEQ; - ELEMENT_NAMES[60] = ELT_IMG; - ELEMENT_NAMES[61] = ELT_INS; - ELEMENT_NAMES[62] = ELT_INT; - ELEMENT_NAMES[63] = ELT_KBD; - ELEMENT_NAMES[64] = ELT_LOG; - ELEMENT_NAMES[65] = ELT_LCM; - ELEMENT_NAMES[66] = ELT_LEQ; - ELEMENT_NAMES[67] = ELT_MTD; - ELEMENT_NAMES[68] = ELT_MIN; - ELEMENT_NAMES[69] = ELT_MAP; - ELEMENT_NAMES[70] = ELT_MTR; - ELEMENT_NAMES[71] = ELT_MAX; - ELEMENT_NAMES[72] = ELT_NEQ; - ELEMENT_NAMES[73] = ELT_NOT; - ELEMENT_NAMES[74] = ELT_NAV; - ELEMENT_NAMES[75] = ELT_PRE; - ELEMENT_NAMES[76] = ELT_RTC; - ELEMENT_NAMES[77] = ELT_REM; - ELEMENT_NAMES[78] = ELT_SUB; - ELEMENT_NAMES[79] = ELT_SEC; - ELEMENT_NAMES[80] = ELT_SVG; - ELEMENT_NAMES[81] = ELT_SUM; - ELEMENT_NAMES[82] = ELT_SIN; - ELEMENT_NAMES[83] = ELT_SEP; - ELEMENT_NAMES[84] = ELT_SUP; - ELEMENT_NAMES[85] = ELT_SET; - ELEMENT_NAMES[86] = ELT_TAN; - ELEMENT_NAMES[87] = ELT_USE; - ELEMENT_NAMES[88] = ELT_VAR; - ELEMENT_NAMES[89] = ELT_WBR; - ELEMENT_NAMES[90] = ELT_XMP; - ELEMENT_NAMES[91] = ELT_XOR; - ELEMENT_NAMES[92] = ELT_AREA; - ELEMENT_NAMES[93] = ELT_ABBR; - ELEMENT_NAMES[94] = ELT_BASE; - ELEMENT_NAMES[95] = ELT_BVAR; - ELEMENT_NAMES[96] = ELT_BODY; - ELEMENT_NAMES[97] = ELT_CARD; - ELEMENT_NAMES[98] = ELT_CODE; - ELEMENT_NAMES[99] = ELT_CITE; - ELEMENT_NAMES[100] = ELT_CSCH; - ELEMENT_NAMES[101] = ELT_COSH; - ELEMENT_NAMES[102] = ELT_COTH; - ELEMENT_NAMES[103] = ELT_CURL; - ELEMENT_NAMES[104] = ELT_DESC; - ELEMENT_NAMES[105] = ELT_DIFF; - ELEMENT_NAMES[106] = ELT_DEFS; - ELEMENT_NAMES[107] = ELT_FORM; - ELEMENT_NAMES[108] = ELT_FONT; - ELEMENT_NAMES[109] = ELT_GRAD; - ELEMENT_NAMES[110] = ELT_HEAD; - ELEMENT_NAMES[111] = ELT_HTML; - ELEMENT_NAMES[112] = ELT_LINE; - ELEMENT_NAMES[113] = ELT_LINK; + ELT_ISINDEX = new nsHtml5ElementName(nsHtml5Atoms::isindex, nsHtml5Atoms::isindex, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ISINDEX | SPECIAL); + ELT_ANNOTATION_XML = new nsHtml5ElementName(nsHtml5Atoms::annotation_xml, nsHtml5Atoms::annotation_xml, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ANNOTATION_XML | SCOPING_AS_MATHML); + ELT_AND = new nsHtml5ElementName(nsHtml5Atoms::and_, nsHtml5Atoms::and_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARG = new nsHtml5ElementName(nsHtml5Atoms::arg, nsHtml5Atoms::arg, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ABS = new nsHtml5ElementName(nsHtml5Atoms::abs, nsHtml5Atoms::abs, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_BIG = new nsHtml5ElementName(nsHtml5Atoms::big, nsHtml5Atoms::big, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_BDO = new nsHtml5ElementName(nsHtml5Atoms::bdo, nsHtml5Atoms::bdo, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CSC = new nsHtml5ElementName(nsHtml5Atoms::csc, nsHtml5Atoms::csc, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_COL = new nsHtml5ElementName(nsHtml5Atoms::col, nsHtml5Atoms::col, NS_NewHTMLTableColElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::COL | SPECIAL); + ELT_COS = new nsHtml5ElementName(nsHtml5Atoms::cos, nsHtml5Atoms::cos, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_COT = new nsHtml5ElementName(nsHtml5Atoms::cot, nsHtml5Atoms::cot, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DEL = new nsHtml5ElementName(nsHtml5Atoms::del, nsHtml5Atoms::del, NS_NewHTMLModElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DFN = new nsHtml5ElementName(nsHtml5Atoms::dfn, nsHtml5Atoms::dfn, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_DIV = new nsHtml5ElementName(nsHtml5Atoms::div, nsHtml5Atoms::div, NS_NewHTMLDivElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + ELT_EXP = new nsHtml5ElementName(nsHtml5Atoms::exp, nsHtml5Atoms::exp, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_GCD = new nsHtml5ElementName(nsHtml5Atoms::gcd, nsHtml5Atoms::gcd, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_GEQ = new nsHtml5ElementName(nsHtml5Atoms::geq, nsHtml5Atoms::geq, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_IMG = new nsHtml5ElementName(nsHtml5Atoms::img, nsHtml5Atoms::img, NS_NewHTMLImageElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::IMG | SPECIAL); + ELT_INS = new nsHtml5ElementName(nsHtml5Atoms::ins, nsHtml5Atoms::ins, NS_NewHTMLModElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_INT = new nsHtml5ElementName(nsHtml5Atoms::int_, nsHtml5Atoms::int_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_KBD = new nsHtml5ElementName(nsHtml5Atoms::kbd, nsHtml5Atoms::kbd, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LOG = new nsHtml5ElementName(nsHtml5Atoms::log, nsHtml5Atoms::log, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LCM = new nsHtml5ElementName(nsHtml5Atoms::lcm, nsHtml5Atoms::lcm, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LEQ = new nsHtml5ElementName(nsHtml5Atoms::leq, nsHtml5Atoms::leq, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MTD = new nsHtml5ElementName(nsHtml5Atoms::mtd, nsHtml5Atoms::mtd, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MIN = new nsHtml5ElementName(nsHtml5Atoms::min, nsHtml5Atoms::min, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MAP = new nsHtml5ElementName(nsHtml5Atoms::map, nsHtml5Atoms::map, NS_NewHTMLMapElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MTR = new nsHtml5ElementName(nsHtml5Atoms::mtr, nsHtml5Atoms::mtr, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MAX = new nsHtml5ElementName(nsHtml5Atoms::max, nsHtml5Atoms::max, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NEQ = new nsHtml5ElementName(nsHtml5Atoms::neq, nsHtml5Atoms::neq, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOT = new nsHtml5ElementName(nsHtml5Atoms::not_, nsHtml5Atoms::not_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_PRE = new nsHtml5ElementName(nsHtml5Atoms::pre, nsHtml5Atoms::pre, NS_NewHTMLPreElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::PRE_OR_LISTING | SPECIAL); + ELT_A = new nsHtml5ElementName(nsHtml5Atoms::a, nsHtml5Atoms::a, NS_NewHTMLAnchorElement, NS_NewSVGAElement, nsHtml5TreeBuilder::A); + ELT_B = new nsHtml5ElementName(nsHtml5Atoms::b, nsHtml5Atoms::b, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_RTC = new nsHtml5ElementName(nsHtml5Atoms::rtc, nsHtml5Atoms::rtc, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RB_OR_RTC | OPTIONAL_END_TAG); + ELT_REM = new nsHtml5ElementName(nsHtml5Atoms::rem, nsHtml5Atoms::rem, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SUB = new nsHtml5ElementName(nsHtml5Atoms::sub, nsHtml5Atoms::sub, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + ELT_SEC = new nsHtml5ElementName(nsHtml5Atoms::sec, nsHtml5Atoms::sec, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SVG = new nsHtml5ElementName(nsHtml5Atoms::svg, nsHtml5Atoms::svg, NS_NewHTMLUnknownElement, NS_NewSVGSVGElement, nsHtml5TreeBuilder::SVG); + ELT_SUM = new nsHtml5ElementName(nsHtml5Atoms::sum, nsHtml5Atoms::sum, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SIN = new nsHtml5ElementName(nsHtml5Atoms::sin, nsHtml5Atoms::sin, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SEP = new nsHtml5ElementName(nsHtml5Atoms::sep, nsHtml5Atoms::sep, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SUP = new nsHtml5ElementName(nsHtml5Atoms::sup, nsHtml5Atoms::sup, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + ELT_SET = new nsHtml5ElementName(nsHtml5Atoms::set, nsHtml5Atoms::set, NS_NewHTMLUnknownElement, NS_NewSVGSetElement, nsHtml5TreeBuilder::OTHER); + ELT_TAN = new nsHtml5ElementName(nsHtml5Atoms::tan, nsHtml5Atoms::tan, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_USE = new nsHtml5ElementName(nsHtml5Atoms::use, nsHtml5Atoms::use, NS_NewHTMLUnknownElement, NS_NewSVGUseElement, nsHtml5TreeBuilder::OTHER); + ELT_VAR = new nsHtml5ElementName(nsHtml5Atoms::var, nsHtml5Atoms::var, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + ELT_G = new nsHtml5ElementName(nsHtml5Atoms::g, nsHtml5Atoms::g, NS_NewHTMLUnknownElement, NS_NewSVGGElement, nsHtml5TreeBuilder::OTHER); + ELT_WBR = new nsHtml5ElementName(nsHtml5Atoms::wbr, nsHtml5Atoms::wbr, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::AREA_OR_WBR | SPECIAL); + ELT_XMP = new nsHtml5ElementName(nsHtml5Atoms::xmp, nsHtml5Atoms::xmp, NS_NewHTMLPreElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::XMP | SPECIAL); + ELT_XOR = new nsHtml5ElementName(nsHtml5Atoms::xor_, nsHtml5Atoms::xor_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_I = new nsHtml5ElementName(nsHtml5Atoms::i, nsHtml5Atoms::i, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_P = new nsHtml5ElementName(nsHtml5Atoms::p, nsHtml5Atoms::p, NS_NewHTMLParagraphElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::P | SPECIAL | OPTIONAL_END_TAG); + ELT_Q = new nsHtml5ElementName(nsHtml5Atoms::q, nsHtml5Atoms::q, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_S = new nsHtml5ElementName(nsHtml5Atoms::s, nsHtml5Atoms::s, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_U = new nsHtml5ElementName(nsHtml5Atoms::u, nsHtml5Atoms::u, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_H1 = new nsHtml5ElementName(nsHtml5Atoms::h1, nsHtml5Atoms::h1, NS_NewHTMLHeadingElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + ELT_H2 = new nsHtml5ElementName(nsHtml5Atoms::h2, nsHtml5Atoms::h2, NS_NewHTMLHeadingElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + ELT_H3 = new nsHtml5ElementName(nsHtml5Atoms::h3, nsHtml5Atoms::h3, NS_NewHTMLHeadingElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + ELT_H4 = new nsHtml5ElementName(nsHtml5Atoms::h4, nsHtml5Atoms::h4, NS_NewHTMLHeadingElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + ELT_H5 = new nsHtml5ElementName(nsHtml5Atoms::h5, nsHtml5Atoms::h5, NS_NewHTMLHeadingElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + ELT_H6 = new nsHtml5ElementName(nsHtml5Atoms::h6, nsHtml5Atoms::h6, NS_NewHTMLHeadingElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); + ELT_AREA = new nsHtml5ElementName(nsHtml5Atoms::area, nsHtml5Atoms::area, NS_NewHTMLAreaElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::AREA_OR_WBR | SPECIAL); + ELT_DATA = new nsHtml5ElementName(nsHtml5Atoms::data, nsHtml5Atoms::data, NS_NewHTMLDataElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_EULERGAMMA = new nsHtml5ElementName(nsHtml5Atoms::eulergamma, nsHtml5Atoms::eulergamma, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FEFUNCA = new nsHtml5ElementName(nsHtml5Atoms::fefunca, nsHtml5Atoms::feFuncA, NS_NewHTMLUnknownElement, NS_NewSVGFEFuncAElement, nsHtml5TreeBuilder::OTHER); + ELT_LAMBDA = new nsHtml5ElementName(nsHtml5Atoms::lambda, nsHtml5Atoms::lambda, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_METADATA = new nsHtml5ElementName(nsHtml5Atoms::metadata, nsHtml5Atoms::metadata, NS_NewHTMLUnknownElement, NS_NewSVGMetadataElement, nsHtml5TreeBuilder::OTHER); + ELT_META = new nsHtml5ElementName(nsHtml5Atoms::meta, nsHtml5Atoms::meta, NS_NewHTMLMetaElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::META | SPECIAL); + ELT_TEXTAREA = new nsHtml5ElementName(nsHtml5Atoms::textarea, nsHtml5Atoms::textarea, NS_NewHTMLTextAreaElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TEXTAREA | SPECIAL); + ELT_FEFUNCB = new nsHtml5ElementName(nsHtml5Atoms::fefuncb, nsHtml5Atoms::feFuncB, NS_NewHTMLUnknownElement, NS_NewSVGFEFuncBElement, nsHtml5TreeBuilder::OTHER); + ELT_MSUB = new nsHtml5ElementName(nsHtml5Atoms::msub, nsHtml5Atoms::msub, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RB = new nsHtml5ElementName(nsHtml5Atoms::rb, nsHtml5Atoms::rb, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RB_OR_RTC | OPTIONAL_END_TAG); + ELT_ARCSEC = new nsHtml5ElementName(nsHtml5Atoms::arcsec, nsHtml5Atoms::arcsec, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCCSC = new nsHtml5ElementName(nsHtml5Atoms::arccsc, nsHtml5Atoms::arccsc, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DEFINITION_SRC = new nsHtml5ElementName(nsHtml5Atoms::definition_src, nsHtml5Atoms::definition_src, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DESC = new nsHtml5ElementName(nsHtml5Atoms::desc, nsHtml5Atoms::desc, NS_NewHTMLUnknownElement, NS_NewSVGDescElement, nsHtml5TreeBuilder::FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); + ELT_FONT_FACE_SRC = new nsHtml5ElementName(nsHtml5Atoms::font_face_src, nsHtml5Atoms::font_face_src, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MFRAC = new nsHtml5ElementName(nsHtml5Atoms::mfrac, nsHtml5Atoms::mfrac, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DD = new nsHtml5ElementName(nsHtml5Atoms::dd, nsHtml5Atoms::dd, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); + ELT_BGSOUND = new nsHtml5ElementName(nsHtml5Atoms::bgsound, nsHtml5Atoms::bgsound, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); + ELT_CARD = new nsHtml5ElementName(nsHtml5Atoms::card, nsHtml5Atoms::card, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DISCARD = new nsHtml5ElementName(nsHtml5Atoms::discard, nsHtml5Atoms::discard, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_EMBED = new nsHtml5ElementName(nsHtml5Atoms::embed, nsHtml5Atoms::embed, NS_NewHTMLSharedObjectElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::EMBED | SPECIAL); + ELT_FEBLEND = new nsHtml5ElementName(nsHtml5Atoms::feblend, nsHtml5Atoms::feBlend, NS_NewHTMLUnknownElement, NS_NewSVGFEBlendElement, nsHtml5TreeBuilder::OTHER); + ELT_FEFLOOD = new nsHtml5ElementName(nsHtml5Atoms::feflood, nsHtml5Atoms::feFlood, NS_NewHTMLUnknownElement, NS_NewSVGFEFloodElement, nsHtml5TreeBuilder::OTHER); + ELT_GRAD = new nsHtml5ElementName(nsHtml5Atoms::grad, nsHtml5Atoms::grad, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_HEAD = new nsHtml5ElementName(nsHtml5Atoms::head, nsHtml5Atoms::head, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::HEAD | SPECIAL | OPTIONAL_END_TAG); + ELT_LEGEND = new nsHtml5ElementName(nsHtml5Atoms::legend, nsHtml5Atoms::legend, NS_NewHTMLLegendElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MFENCED = new nsHtml5ElementName(nsHtml5Atoms::mfenced, nsHtml5Atoms::mfenced, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MPADDED = new nsHtml5ElementName(nsHtml5Atoms::mpadded, nsHtml5Atoms::mpadded, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOEMBED = new nsHtml5ElementName(nsHtml5Atoms::noembed, nsHtml5Atoms::noembed, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::NOEMBED | SPECIAL); + ELT_TD = new nsHtml5ElementName(nsHtml5Atoms::td, nsHtml5Atoms::td, NS_NewHTMLTableCellElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); + ELT_THEAD = new nsHtml5ElementName(nsHtml5Atoms::thead, nsHtml5Atoms::thead, NS_NewHTMLTableSectionElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + ELT_ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_ANIMATE = new nsHtml5ElementName(nsHtml5Atoms::animate, nsHtml5Atoms::animate, NS_NewHTMLUnknownElement, NS_NewSVGAnimateElement, nsHtml5TreeBuilder::OTHER); + ELT_BASE = new nsHtml5ElementName(nsHtml5Atoms::base, nsHtml5Atoms::base, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::BASE | SPECIAL); + ELT_BLOCKQUOTE = new nsHtml5ElementName(nsHtml5Atoms::blockquote, nsHtml5Atoms::blockquote, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + ELT_CODE = new nsHtml5ElementName(nsHtml5Atoms::code, nsHtml5Atoms::code, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_CIRCLE = new nsHtml5ElementName(nsHtml5Atoms::circle, nsHtml5Atoms::circle, NS_NewHTMLUnknownElement, NS_NewSVGCircleElement, nsHtml5TreeBuilder::OTHER); + ELT_COLOR_PROFILE = new nsHtml5ElementName(nsHtml5Atoms::color_profile, nsHtml5Atoms::color_profile, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_COMPOSE = new nsHtml5ElementName(nsHtml5Atoms::compose, nsHtml5Atoms::compose, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CONJUGATE = new nsHtml5ElementName(nsHtml5Atoms::conjugate, nsHtml5Atoms::conjugate, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CITE = new nsHtml5ElementName(nsHtml5Atoms::cite, nsHtml5Atoms::cite, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DIVERGENCE = new nsHtml5ElementName(nsHtml5Atoms::divergence, nsHtml5Atoms::divergence, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DIVIDE = new nsHtml5ElementName(nsHtml5Atoms::divide, nsHtml5Atoms::divide, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DEGREE = new nsHtml5ElementName(nsHtml5Atoms::degree, nsHtml5Atoms::degree, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DECLARE = new nsHtml5ElementName(nsHtml5Atoms::declare, nsHtml5Atoms::declare, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DATATEMPLATE = new nsHtml5ElementName(nsHtml5Atoms::datatemplate, nsHtml5Atoms::datatemplate, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_EXPONENTIALE = new nsHtml5ElementName(nsHtml5Atoms::exponentiale, nsHtml5Atoms::exponentiale, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ELLIPSE = new nsHtml5ElementName(nsHtml5Atoms::ellipse, nsHtml5Atoms::ellipse, NS_NewHTMLUnknownElement, NS_NewSVGEllipseElement, nsHtml5TreeBuilder::OTHER); + ELT_FONT_FACE = new nsHtml5ElementName(nsHtml5Atoms::font_face, nsHtml5Atoms::font_face, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FETURBULENCE = new nsHtml5ElementName(nsHtml5Atoms::feturbulence, nsHtml5Atoms::feTurbulence, NS_NewHTMLUnknownElement, NS_NewSVGFETurbulenceElement, nsHtml5TreeBuilder::OTHER); + ELT_FEMERGENODE = new nsHtml5ElementName(nsHtml5Atoms::femergenode, nsHtml5Atoms::feMergeNode, NS_NewHTMLUnknownElement, NS_NewSVGFEMergeNodeElement, nsHtml5TreeBuilder::OTHER); + ELT_FEIMAGE = new nsHtml5ElementName(nsHtml5Atoms::feimage, nsHtml5Atoms::feImage, NS_NewHTMLUnknownElement, NS_NewSVGFEImageElement, nsHtml5TreeBuilder::OTHER); + ELT_FEMERGE = new nsHtml5ElementName(nsHtml5Atoms::femerge, nsHtml5Atoms::feMerge, NS_NewHTMLUnknownElement, NS_NewSVGFEMergeElement, nsHtml5TreeBuilder::OTHER); + ELT_FETILE = new nsHtml5ElementName(nsHtml5Atoms::fetile, nsHtml5Atoms::feTile, NS_NewHTMLUnknownElement, NS_NewSVGFETileElement, nsHtml5TreeBuilder::OTHER); + ELT_FONT_FACE_NAME = new nsHtml5ElementName(nsHtml5Atoms::font_face_name, nsHtml5Atoms::font_face_name, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FRAME = new nsHtml5ElementName(nsHtml5Atoms::frame, nsHtml5Atoms::frame, NS_NewHTMLFrameElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::FRAME | SPECIAL); + ELT_FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_FALSE = new nsHtml5ElementName(nsHtml5Atoms::false_, nsHtml5Atoms::false_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FECOMPOSITE = new nsHtml5ElementName(nsHtml5Atoms::fecomposite, nsHtml5Atoms::feComposite, NS_NewHTMLUnknownElement, NS_NewSVGFECompositeElement, nsHtml5TreeBuilder::OTHER); + ELT_IMAGE = new nsHtml5ElementName(nsHtml5Atoms::image, nsHtml5Atoms::image, NS_NewHTMLElement, NS_NewSVGImageElement, nsHtml5TreeBuilder::IMAGE); + ELT_IFRAME = new nsHtml5ElementName(nsHtml5Atoms::iframe, nsHtml5Atoms::iframe, NS_NewHTMLIFrameElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::IFRAME | SPECIAL); + ELT_INVERSE = new nsHtml5ElementName(nsHtml5Atoms::inverse, nsHtml5Atoms::inverse, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LINE = new nsHtml5ElementName(nsHtml5Atoms::line, nsHtml5Atoms::line, NS_NewHTMLUnknownElement, NS_NewSVGLineElement, nsHtml5TreeBuilder::OTHER); + ELT_LOGBASE = new nsHtml5ElementName(nsHtml5Atoms::logbase, nsHtml5Atoms::logbase, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MSPACE = new nsHtml5ElementName(nsHtml5Atoms::mspace, nsHtml5Atoms::mspace, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MODE = new nsHtml5ElementName(nsHtml5Atoms::mode, nsHtml5Atoms::mode, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MARQUEE = new nsHtml5ElementName(nsHtml5Atoms::marquee, nsHtml5Atoms::marquee, NS_NewHTMLDivElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MARQUEE_OR_APPLET | SPECIAL | SCOPING); + ELT_MTABLE = new nsHtml5ElementName(nsHtml5Atoms::mtable, nsHtml5Atoms::mtable, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MSTYLE = new nsHtml5ElementName(nsHtml5Atoms::mstyle, nsHtml5Atoms::mstyle, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MENCLOSE = new nsHtml5ElementName(nsHtml5Atoms::menclose, nsHtml5Atoms::menclose, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NONE = new nsHtml5ElementName(nsHtml5Atoms::none, nsHtml5Atoms::none, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_OTHERWISE = new nsHtml5ElementName(nsHtml5Atoms::otherwise, nsHtml5Atoms::otherwise, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PIECE = new nsHtml5ElementName(nsHtml5Atoms::piece, nsHtml5Atoms::piece, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_POLYLINE = new nsHtml5ElementName(nsHtml5Atoms::polyline, nsHtml5Atoms::polyline, NS_NewHTMLUnknownElement, NS_NewSVGPolylineElement, nsHtml5TreeBuilder::OTHER); + ELT_PICTURE = new nsHtml5ElementName(nsHtml5Atoms::picture, nsHtml5Atoms::picture, NS_NewHTMLPictureElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PIECEWISE = new nsHtml5ElementName(nsHtml5Atoms::piecewise, nsHtml5Atoms::piecewise, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RULE = new nsHtml5ElementName(nsHtml5Atoms::rule, nsHtml5Atoms::rule, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SOURCE = new nsHtml5ElementName(nsHtml5Atoms::source, nsHtml5Atoms::source, NS_NewHTMLSourceElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::PARAM_OR_SOURCE_OR_TRACK); + ELT_STRIKE = new nsHtml5ElementName(nsHtml5Atoms::strike, nsHtml5Atoms::strike, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_STYLE = new nsHtml5ElementName(nsHtml5Atoms::style, nsHtml5Atoms::style, NS_NewHTMLStyleElement, NS_NewSVGStyleElement, nsHtml5TreeBuilder::STYLE | SPECIAL); + ELT_TABLE = new nsHtml5ElementName(nsHtml5Atoms::table, nsHtml5Atoms::table, NS_NewHTMLTableElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TABLE | SPECIAL | FOSTER_PARENTING | SCOPING); + ELT_TITLE = new nsHtml5ElementName(nsHtml5Atoms::title, nsHtml5Atoms::title, NS_NewHTMLTitleElement, NS_NewSVGTitleElement, nsHtml5TreeBuilder::TITLE | SPECIAL | SCOPING_AS_SVG); + ELT_TIME = new nsHtml5ElementName(nsHtml5Atoms::time, nsHtml5Atoms::time, NS_NewHTMLTimeElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TRANSPOSE = new nsHtml5ElementName(nsHtml5Atoms::transpose, nsHtml5Atoms::transpose, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TEMPLATE = new nsHtml5ElementName(nsHtml5Atoms::template_, nsHtml5Atoms::template_, NS_NewHTMLTemplateElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TEMPLATE | SPECIAL | SCOPING); + ELT_TRUE = new nsHtml5ElementName(nsHtml5Atoms::true_, nsHtml5Atoms::true_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_VARIANCE = new nsHtml5ElementName(nsHtml5Atoms::variance, nsHtml5Atoms::variance, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ALTGLYPHDEF = new nsHtml5ElementName(nsHtml5Atoms::altglyphdef, nsHtml5Atoms::altGlyphDef, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DIFF = new nsHtml5ElementName(nsHtml5Atoms::diff, nsHtml5Atoms::diff, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FACTOROF = new nsHtml5ElementName(nsHtml5Atoms::factorof, nsHtml5Atoms::factorof, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_GLYPHREF = new nsHtml5ElementName(nsHtml5Atoms::glyphref, nsHtml5Atoms::glyphRef, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PARTIALDIFF = new nsHtml5ElementName(nsHtml5Atoms::partialdiff, nsHtml5Atoms::partialdiff, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SETDIFF = new nsHtml5ElementName(nsHtml5Atoms::setdiff, nsHtml5Atoms::setdiff, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TREF = new nsHtml5ElementName(nsHtml5Atoms::tref, nsHtml5Atoms::tref, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CEILING = new nsHtml5ElementName(nsHtml5Atoms::ceiling, nsHtml5Atoms::ceiling, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DIALOG = new nsHtml5ElementName(nsHtml5Atoms::dialog, nsHtml5Atoms::dialog, NS_NewHTMLDialogElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_FEFUNCG = new nsHtml5ElementName(nsHtml5Atoms::fefuncg, nsHtml5Atoms::feFuncG, NS_NewHTMLUnknownElement, NS_NewSVGFEFuncGElement, nsHtml5TreeBuilder::OTHER); + ELT_FEDIFFUSELIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fediffuselighting, nsHtml5Atoms::feDiffuseLighting, NS_NewHTMLUnknownElement, NS_NewSVGFEDiffuseLightingElement, nsHtml5TreeBuilder::OTHER); + ELT_FESPECULARLIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fespecularlighting, nsHtml5Atoms::feSpecularLighting, NS_NewHTMLUnknownElement, NS_NewSVGFESpecularLightingElement, nsHtml5TreeBuilder::OTHER); + ELT_LISTING = new nsHtml5ElementName(nsHtml5Atoms::listing, nsHtml5Atoms::listing, NS_NewHTMLPreElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::PRE_OR_LISTING | SPECIAL); + ELT_STRONG = new nsHtml5ElementName(nsHtml5Atoms::strong, nsHtml5Atoms::strong, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_ARCSECH = new nsHtml5ElementName(nsHtml5Atoms::arcsech, nsHtml5Atoms::arcsech, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCCSCH = new nsHtml5ElementName(nsHtml5Atoms::arccsch, nsHtml5Atoms::arccsch, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCTANH = new nsHtml5ElementName(nsHtml5Atoms::arctanh, nsHtml5Atoms::arctanh, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCSINH = new nsHtml5ElementName(nsHtml5Atoms::arcsinh, nsHtml5Atoms::arcsinh, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ALTGLYPH = new nsHtml5ElementName(nsHtml5Atoms::altglyph, nsHtml5Atoms::altGlyph, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCCOSH = new nsHtml5ElementName(nsHtml5Atoms::arccosh, nsHtml5Atoms::arccosh, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCCOTH = new nsHtml5ElementName(nsHtml5Atoms::arccoth, nsHtml5Atoms::arccoth, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CSCH = new nsHtml5ElementName(nsHtml5Atoms::csch, nsHtml5Atoms::csch, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_COSH = new nsHtml5ElementName(nsHtml5Atoms::cosh, nsHtml5Atoms::cosh, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CLIPPATH = new nsHtml5ElementName(nsHtml5Atoms::clippath, nsHtml5Atoms::clipPath, NS_NewHTMLUnknownElement, NS_NewSVGClipPathElement, nsHtml5TreeBuilder::OTHER); + ELT_COTH = new nsHtml5ElementName(nsHtml5Atoms::coth, nsHtml5Atoms::coth, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_GLYPH = new nsHtml5ElementName(nsHtml5Atoms::glyph, nsHtml5Atoms::glyph, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MGLYPH = new nsHtml5ElementName(nsHtml5Atoms::mglyph, nsHtml5Atoms::mglyph, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MGLYPH_OR_MALIGNMARK); + ELT_MISSING_GLYPH = new nsHtml5ElementName(nsHtml5Atoms::missing_glyph, nsHtml5Atoms::missing_glyph, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MATH = new nsHtml5ElementName(nsHtml5Atoms::math, nsHtml5Atoms::math, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MATH); + ELT_MPATH = new nsHtml5ElementName(nsHtml5Atoms::mpath, nsHtml5Atoms::mpath, NS_NewHTMLUnknownElement, NS_NewSVGMPathElement, nsHtml5TreeBuilder::OTHER); + ELT_PREFETCH = new nsHtml5ElementName(nsHtml5Atoms::prefetch, nsHtml5Atoms::prefetch, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PATH = new nsHtml5ElementName(nsHtml5Atoms::path, nsHtml5Atoms::path, NS_NewHTMLUnknownElement, NS_NewSVGPathElement, nsHtml5TreeBuilder::OTHER); + ELT_TH = new nsHtml5ElementName(nsHtml5Atoms::th, nsHtml5Atoms::th, NS_NewHTMLTableCellElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); + ELT_SECH = new nsHtml5ElementName(nsHtml5Atoms::sech, nsHtml5Atoms::sech, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SWITCH = new nsHtml5ElementName(nsHtml5Atoms::switch_, nsHtml5Atoms::switch_, NS_NewHTMLUnknownElement, NS_NewSVGSwitchElement, nsHtml5TreeBuilder::OTHER); + ELT_SINH = new nsHtml5ElementName(nsHtml5Atoms::sinh, nsHtml5Atoms::sinh, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TANH = new nsHtml5ElementName(nsHtml5Atoms::tanh, nsHtml5Atoms::tanh, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TEXTPATH = new nsHtml5ElementName(nsHtml5Atoms::textpath, nsHtml5Atoms::textPath, NS_NewHTMLUnknownElement, NS_NewSVGTextPathElement, nsHtml5TreeBuilder::OTHER); + ELT_CI = new nsHtml5ElementName(nsHtml5Atoms::ci, nsHtml5Atoms::ci, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FONT_FACE_URI = new nsHtml5ElementName(nsHtml5Atoms::font_face_uri, nsHtml5Atoms::font_face_uri, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LI = new nsHtml5ElementName(nsHtml5Atoms::li, nsHtml5Atoms::li, NS_NewHTMLLIElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::LI | SPECIAL | OPTIONAL_END_TAG); + ELT_IMAGINARYI = new nsHtml5ElementName(nsHtml5Atoms::imaginaryi, nsHtml5Atoms::imaginaryi, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MI = new nsHtml5ElementName(nsHtml5Atoms::mi, nsHtml5Atoms::mi, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + ELT_PI = new nsHtml5ElementName(nsHtml5Atoms::pi, nsHtml5Atoms::pi, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LINK = new nsHtml5ElementName(nsHtml5Atoms::link, nsHtml5Atoms::link, NS_NewHTMLLinkElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); + ELT_MARK = new nsHtml5ElementName(nsHtml5Atoms::mark, nsHtml5Atoms::mark, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MALIGNMARK = new nsHtml5ElementName(nsHtml5Atoms::malignmark, nsHtml5Atoms::malignmark, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MGLYPH_OR_MALIGNMARK); + ELT_MASK = new nsHtml5ElementName(nsHtml5Atoms::mask, nsHtml5Atoms::mask, NS_NewHTMLUnknownElement, NS_NewSVGMaskElement, nsHtml5TreeBuilder::OTHER); + ELT_TBREAK = new nsHtml5ElementName(nsHtml5Atoms::tbreak, nsHtml5Atoms::tbreak, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TRACK = new nsHtml5ElementName(nsHtml5Atoms::track, nsHtml5Atoms::track, NS_NewHTMLTrackElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::PARAM_OR_SOURCE_OR_TRACK | SPECIAL); + ELT_DL = new nsHtml5ElementName(nsHtml5Atoms::dl, nsHtml5Atoms::dl, NS_NewHTMLSharedListElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::UL_OR_OL_OR_DL | SPECIAL); + ELT_CSYMBOL = new nsHtml5ElementName(nsHtml5Atoms::csymbol, nsHtml5Atoms::csymbol, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CURL = new nsHtml5ElementName(nsHtml5Atoms::curl, nsHtml5Atoms::curl, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FACTORIAL = new nsHtml5ElementName(nsHtml5Atoms::factorial, nsHtml5Atoms::factorial, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FORALL = new nsHtml5ElementName(nsHtml5Atoms::forall, nsHtml5Atoms::forall, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_HTML = new nsHtml5ElementName(nsHtml5Atoms::html, nsHtml5Atoms::html, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG); + ELT_INTERVAL = new nsHtml5ElementName(nsHtml5Atoms::interval, nsHtml5Atoms::interval, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_OL = new nsHtml5ElementName(nsHtml5Atoms::ol, nsHtml5Atoms::ol, NS_NewHTMLSharedListElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::UL_OR_OL_OR_DL | SPECIAL); + ELT_LABEL = new nsHtml5ElementName(nsHtml5Atoms::label, nsHtml5Atoms::label, NS_NewHTMLLabelElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_UL = new nsHtml5ElementName(nsHtml5Atoms::ul, nsHtml5Atoms::ul, NS_NewHTMLSharedListElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::UL_OR_OL_OR_DL | SPECIAL); + ELT_REAL = new nsHtml5ElementName(nsHtml5Atoms::real, nsHtml5Atoms::real, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SMALL = new nsHtml5ElementName(nsHtml5Atoms::small_, nsHtml5Atoms::small_, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_SYMBOL = new nsHtml5ElementName(nsHtml5Atoms::symbol, nsHtml5Atoms::symbol, NS_NewHTMLUnknownElement, NS_NewSVGSymbolElement, nsHtml5TreeBuilder::OTHER); + ELT_ALTGLYPHITEM = new nsHtml5ElementName(nsHtml5Atoms::altglyphitem, nsHtml5Atoms::altGlyphItem, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ANIMATETRANSFORM = new nsHtml5ElementName(nsHtml5Atoms::animatetransform, nsHtml5Atoms::animateTransform, NS_NewHTMLUnknownElement, NS_NewSVGAnimateTransformElement, nsHtml5TreeBuilder::OTHER); + ELT_ACRONYM = new nsHtml5ElementName(nsHtml5Atoms::acronym, nsHtml5Atoms::acronym, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_EM = new nsHtml5ElementName(nsHtml5Atoms::em, nsHtml5Atoms::em, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_FORM = new nsHtml5ElementName(nsHtml5Atoms::form, nsHtml5Atoms::form, NS_NewHTMLFormElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::FORM | SPECIAL); + ELT_MENUITEM = new nsHtml5ElementName(nsHtml5Atoms::menuitem, nsHtml5Atoms::menuitem, NS_NewHTMLMenuItemElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MENUITEM); + ELT_MPHANTOM = new nsHtml5ElementName(nsHtml5Atoms::mphantom, nsHtml5Atoms::mphantom, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PARAM = new nsHtml5ElementName(nsHtml5Atoms::param, nsHtml5Atoms::param, NS_NewHTMLSharedElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::PARAM_OR_SOURCE_OR_TRACK | SPECIAL); + ELT_CN = new nsHtml5ElementName(nsHtml5Atoms::cn, nsHtml5Atoms::cn, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCTAN = new nsHtml5ElementName(nsHtml5Atoms::arctan, nsHtml5Atoms::arctan, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCSIN = new nsHtml5ElementName(nsHtml5Atoms::arcsin, nsHtml5Atoms::arcsin, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ANIMATION = new nsHtml5ElementName(nsHtml5Atoms::animation, nsHtml5Atoms::animation, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ANNOTATION = new nsHtml5ElementName(nsHtml5Atoms::annotation, nsHtml5Atoms::annotation, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ANIMATEMOTION = new nsHtml5ElementName(nsHtml5Atoms::animatemotion, nsHtml5Atoms::animateMotion, NS_NewHTMLUnknownElement, NS_NewSVGAnimateMotionElement, nsHtml5TreeBuilder::OTHER); + ELT_BUTTON = new nsHtml5ElementName(nsHtml5Atoms::button, nsHtml5Atoms::button, NS_NewHTMLButtonElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::BUTTON | SPECIAL); + ELT_FN = new nsHtml5ElementName(nsHtml5Atoms::fn, nsHtml5Atoms::fn, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CODOMAIN = new nsHtml5ElementName(nsHtml5Atoms::codomain, nsHtml5Atoms::codomain, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CAPTION = new nsHtml5ElementName(nsHtml5Atoms::caption, nsHtml5Atoms::caption, NS_NewHTMLTableCaptionElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::CAPTION | SPECIAL | SCOPING); + ELT_CONDITION = new nsHtml5ElementName(nsHtml5Atoms::condition, nsHtml5Atoms::condition, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DOMAIN = new nsHtml5ElementName(nsHtml5Atoms::domain, nsHtml5Atoms::domain, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DOMAINOFAPPLICATION = new nsHtml5ElementName(nsHtml5Atoms::domainofapplication, nsHtml5Atoms::domainofapplication, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_IN = new nsHtml5ElementName(nsHtml5Atoms::in, nsHtml5Atoms::in, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FIGCAPTION = new nsHtml5ElementName(nsHtml5Atoms::figcaption, nsHtml5Atoms::figcaption, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_HKERN = new nsHtml5ElementName(nsHtml5Atoms::hkern, nsHtml5Atoms::hkern, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LN = new nsHtml5ElementName(nsHtml5Atoms::ln, nsHtml5Atoms::ln, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MN = new nsHtml5ElementName(nsHtml5Atoms::mn, nsHtml5Atoms::mn, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + ELT_KEYGEN = new nsHtml5ElementName(nsHtml5Atoms::keygen, nsHtml5Atoms::keygen, NS_NewHTMLSpanElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::KEYGEN); + ELT_LAPLACIAN = new nsHtml5ElementName(nsHtml5Atoms::laplacian, nsHtml5Atoms::laplacian, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MEAN = new nsHtml5ElementName(nsHtml5Atoms::mean, nsHtml5Atoms::mean, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MEDIAN = new nsHtml5ElementName(nsHtml5Atoms::median, nsHtml5Atoms::median, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MAIN = new nsHtml5ElementName(nsHtml5Atoms::main, nsHtml5Atoms::main, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_MACTION = new nsHtml5ElementName(nsHtml5Atoms::maction, nsHtml5Atoms::maction, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOTIN = new nsHtml5ElementName(nsHtml5Atoms::notin, nsHtml5Atoms::notin, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_OPTION = new nsHtml5ElementName(nsHtml5Atoms::option, nsHtml5Atoms::option, NS_NewHTMLOptionElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OPTION | OPTIONAL_END_TAG); + ELT_POLYGON = new nsHtml5ElementName(nsHtml5Atoms::polygon, nsHtml5Atoms::polygon, NS_NewHTMLUnknownElement, NS_NewSVGPolygonElement, nsHtml5TreeBuilder::OTHER); + ELT_PATTERN = new nsHtml5ElementName(nsHtml5Atoms::pattern, nsHtml5Atoms::pattern, NS_NewHTMLUnknownElement, NS_NewSVGPatternElement, nsHtml5TreeBuilder::OTHER); + ELT_RELN = new nsHtml5ElementName(nsHtml5Atoms::reln, nsHtml5Atoms::reln, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SPAN = new nsHtml5ElementName(nsHtml5Atoms::span, nsHtml5Atoms::span, NS_NewHTMLSpanElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + ELT_SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_TSPAN = new nsHtml5ElementName(nsHtml5Atoms::tspan, nsHtml5Atoms::tspan, NS_NewHTMLUnknownElement, NS_NewSVGTSpanElement, nsHtml5TreeBuilder::OTHER); + ELT_UNION = new nsHtml5ElementName(nsHtml5Atoms::union_, nsHtml5Atoms::union_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_VKERN = new nsHtml5ElementName(nsHtml5Atoms::vkern, nsHtml5Atoms::vkern, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_AUDIO = new nsHtml5ElementName(nsHtml5Atoms::audio, nsHtml5Atoms::audio, NS_NewHTMLAudioElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MO = new nsHtml5ElementName(nsHtml5Atoms::mo, nsHtml5Atoms::mo, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + ELT_TENDSTO = new nsHtml5ElementName(nsHtml5Atoms::tendsto, nsHtml5Atoms::tendsto, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_VIDEO = new nsHtml5ElementName(nsHtml5Atoms::video, nsHtml5Atoms::video, NS_NewHTMLVideoElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_COLGROUP = new nsHtml5ElementName(nsHtml5Atoms::colgroup, nsHtml5Atoms::colgroup, NS_NewHTMLTableColElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::COLGROUP | SPECIAL | OPTIONAL_END_TAG); + ELT_FEDISPLACEMENTMAP = new nsHtml5ElementName(nsHtml5Atoms::fedisplacementmap, nsHtml5Atoms::feDisplacementMap, NS_NewHTMLUnknownElement, NS_NewSVGFEDisplacementMapElement, nsHtml5TreeBuilder::OTHER); + ELT_HGROUP = new nsHtml5ElementName(nsHtml5Atoms::hgroup, nsHtml5Atoms::hgroup, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_MALIGNGROUP = new nsHtml5ElementName(nsHtml5Atoms::maligngroup, nsHtml5Atoms::maligngroup, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MSUBSUP = new nsHtml5ElementName(nsHtml5Atoms::msubsup, nsHtml5Atoms::msubsup, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MSUP = new nsHtml5ElementName(nsHtml5Atoms::msup, nsHtml5Atoms::msup, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RP = new nsHtml5ElementName(nsHtml5Atoms::rp, nsHtml5Atoms::rp, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RT_OR_RP | OPTIONAL_END_TAG); + ELT_OPTGROUP = new nsHtml5ElementName(nsHtml5Atoms::optgroup, nsHtml5Atoms::optgroup, NS_NewHTMLOptGroupElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OPTGROUP | OPTIONAL_END_TAG); + ELT_SAMP = new nsHtml5ElementName(nsHtml5Atoms::samp, nsHtml5Atoms::samp, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_STOP = new nsHtml5ElementName(nsHtml5Atoms::stop, nsHtml5Atoms::stop, NS_NewHTMLUnknownElement, NS_NewSVGStopElement, nsHtml5TreeBuilder::OTHER); + ELT_EQ = new nsHtml5ElementName(nsHtml5Atoms::eq, nsHtml5Atoms::eq, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_BR = new nsHtml5ElementName(nsHtml5Atoms::br, nsHtml5Atoms::br, NS_NewHTMLBRElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::BR | SPECIAL); + ELT_ABBR = new nsHtml5ElementName(nsHtml5Atoms::abbr, nsHtml5Atoms::abbr, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ANIMATECOLOR = new nsHtml5ElementName(nsHtml5Atoms::animatecolor, nsHtml5Atoms::animateColor, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_BVAR = new nsHtml5ElementName(nsHtml5Atoms::bvar, nsHtml5Atoms::bvar, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CENTER = new nsHtml5ElementName(nsHtml5Atoms::center, nsHtml5Atoms::center, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + ELT_CURSOR = new nsHtml5ElementName(nsHtml5Atoms::cursor, nsHtml5Atoms::cursor, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_HR = new nsHtml5ElementName(nsHtml5Atoms::hr, nsHtml5Atoms::hr, NS_NewHTMLHRElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::HR | SPECIAL); + ELT_FEFUNCR = new nsHtml5ElementName(nsHtml5Atoms::fefuncr, nsHtml5Atoms::feFuncR, NS_NewHTMLUnknownElement, NS_NewSVGFEFuncRElement, nsHtml5TreeBuilder::OTHER); + ELT_FECOMPONENTTRANSFER = new nsHtml5ElementName(nsHtml5Atoms::fecomponenttransfer, nsHtml5Atoms::feComponentTransfer, NS_NewHTMLUnknownElement, NS_NewSVGFEComponentTransferElement, nsHtml5TreeBuilder::OTHER); + ELT_FILTER = new nsHtml5ElementName(nsHtml5Atoms::filter, nsHtml5Atoms::filter, NS_NewHTMLUnknownElement, NS_NewSVGFilterElement, nsHtml5TreeBuilder::OTHER); + ELT_FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_FLOOR = new nsHtml5ElementName(nsHtml5Atoms::floor, nsHtml5Atoms::floor, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FEGAUSSIANBLUR = new nsHtml5ElementName(nsHtml5Atoms::fegaussianblur, nsHtml5Atoms::feGaussianBlur, NS_NewHTMLUnknownElement, NS_NewSVGFEGaussianBlurElement, nsHtml5TreeBuilder::OTHER); + ELT_HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_HANDLER = new nsHtml5ElementName(nsHtml5Atoms::handler, nsHtml5Atoms::handler, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_OR = new nsHtml5ElementName(nsHtml5Atoms::or_, nsHtml5Atoms::or_, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LISTENER = new nsHtml5ElementName(nsHtml5Atoms::listener, nsHtml5Atoms::listener, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MUNDER = new nsHtml5ElementName(nsHtml5Atoms::munder, nsHtml5Atoms::munder, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MARKER = new nsHtml5ElementName(nsHtml5Atoms::marker, nsHtml5Atoms::marker, NS_NewHTMLUnknownElement, NS_NewSVGMarkerElement, nsHtml5TreeBuilder::OTHER); + ELT_METER = new nsHtml5ElementName(nsHtml5Atoms::meter, nsHtml5Atoms::meter, NS_NewHTMLMeterElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MOVER = new nsHtml5ElementName(nsHtml5Atoms::mover, nsHtml5Atoms::mover, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MUNDEROVER = new nsHtml5ElementName(nsHtml5Atoms::munderover, nsHtml5Atoms::munderover, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MERROR = new nsHtml5ElementName(nsHtml5Atoms::merror, nsHtml5Atoms::merror, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MLABELEDTR = new nsHtml5ElementName(nsHtml5Atoms::mlabeledtr, nsHtml5Atoms::mlabeledtr, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOBR = new nsHtml5ElementName(nsHtml5Atoms::nobr, nsHtml5Atoms::nobr, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::NOBR); + ELT_NOTANUMBER = new nsHtml5ElementName(nsHtml5Atoms::notanumber, nsHtml5Atoms::notanumber, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_POWER = new nsHtml5ElementName(nsHtml5Atoms::power, nsHtml5Atoms::power, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TR = new nsHtml5ElementName(nsHtml5Atoms::tr, nsHtml5Atoms::tr, NS_NewHTMLTableRowElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + ELT_SOLIDCOLOR = new nsHtml5ElementName(nsHtml5Atoms::solidcolor, nsHtml5Atoms::solidcolor, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SELECTOR = new nsHtml5ElementName(nsHtml5Atoms::selector, nsHtml5Atoms::selector, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_VECTOR = new nsHtml5ElementName(nsHtml5Atoms::vector, nsHtml5Atoms::vector, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ARCCOS = new nsHtml5ElementName(nsHtml5Atoms::arccos, nsHtml5Atoms::arccos, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_CANVAS = new nsHtml5ElementName(nsHtml5Atoms::canvas, nsHtml5Atoms::canvas, NS_NewHTMLCanvasElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_COMPLEXES = new nsHtml5ElementName(nsHtml5Atoms::complexes, nsHtml5Atoms::complexes, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DEFS = new nsHtml5ElementName(nsHtml5Atoms::defs, nsHtml5Atoms::defs, NS_NewHTMLUnknownElement, NS_NewSVGDefsElement, nsHtml5TreeBuilder::OTHER); + ELT_DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_NewHTMLDetailsElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_EXISTS = new nsHtml5ElementName(nsHtml5Atoms::exists, nsHtml5Atoms::exists, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_IMPLIES = new nsHtml5ElementName(nsHtml5Atoms::implies, nsHtml5Atoms::implies, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_INTEGERS = new nsHtml5ElementName(nsHtml5Atoms::integers, nsHtml5Atoms::integers, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MS = new nsHtml5ElementName(nsHtml5Atoms::ms, nsHtml5Atoms::ms, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + ELT_MPRESCRIPTS = new nsHtml5ElementName(nsHtml5Atoms::mprescripts, nsHtml5Atoms::mprescripts, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MMULTISCRIPTS = new nsHtml5ElementName(nsHtml5Atoms::mmultiscripts, nsHtml5Atoms::mmultiscripts, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MINUS = new nsHtml5ElementName(nsHtml5Atoms::minus, nsHtml5Atoms::minus, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOFRAMES = new nsHtml5ElementName(nsHtml5Atoms::noframes, nsHtml5Atoms::noframes, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::NOFRAMES | SPECIAL); + ELT_NATURALNUMBERS = new nsHtml5ElementName(nsHtml5Atoms::naturalnumbers, nsHtml5Atoms::naturalnumbers, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PRIMES = new nsHtml5ElementName(nsHtml5Atoms::primes, nsHtml5Atoms::primes, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PROGRESS = new nsHtml5ElementName(nsHtml5Atoms::progress, nsHtml5Atoms::progress, NS_NewHTMLProgressElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PLUS = new nsHtml5ElementName(nsHtml5Atoms::plus, nsHtml5Atoms::plus, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_REALS = new nsHtml5ElementName(nsHtml5Atoms::reals, nsHtml5Atoms::reals, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RATIONALS = new nsHtml5ElementName(nsHtml5Atoms::rationals, nsHtml5Atoms::rationals, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SEMANTICS = new nsHtml5ElementName(nsHtml5Atoms::semantics, nsHtml5Atoms::semantics, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_TIMES = new nsHtml5ElementName(nsHtml5Atoms::times, nsHtml5Atoms::times, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DT = new nsHtml5ElementName(nsHtml5Atoms::dt, nsHtml5Atoms::dt, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); + ELT_APPLET = new nsHtml5ElementName(nsHtml5Atoms::applet, nsHtml5Atoms::applet, NS_NewHTMLSharedObjectElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MARQUEE_OR_APPLET | SPECIAL | SCOPING); + ELT_ARCCOT = new nsHtml5ElementName(nsHtml5Atoms::arccot, nsHtml5Atoms::arccot, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_BASEFONT = new nsHtml5ElementName(nsHtml5Atoms::basefont, nsHtml5Atoms::basefont, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); + ELT_CARTESIANPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::cartesianproduct, nsHtml5Atoms::cartesianproduct, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_CONTENT = new nsHtml5ElementName(nsHtml5Atoms::content, nsHtml5Atoms::content, NS_NewHTMLContentElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_GT = new nsHtml5ElementName(nsHtml5Atoms::gt, nsHtml5Atoms::gt, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DETERMINANT = new nsHtml5ElementName(nsHtml5Atoms::determinant, nsHtml5Atoms::determinant, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_DATALIST = new nsHtml5ElementName(nsHtml5Atoms::datalist, nsHtml5Atoms::datalist, NS_NewHTMLDataListElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_EMPTYSET = new nsHtml5ElementName(nsHtml5Atoms::emptyset, nsHtml5Atoms::emptyset, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_EQUIVALENT = new nsHtml5ElementName(nsHtml5Atoms::equivalent, nsHtml5Atoms::equivalent, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FONT_FACE_FORMAT = new nsHtml5ElementName(nsHtml5Atoms::font_face_format, nsHtml5Atoms::font_face_format, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FOREIGNOBJECT = new nsHtml5ElementName(nsHtml5Atoms::foreignobject, nsHtml5Atoms::foreignObject, NS_NewHTMLUnknownElement, NS_NewSVGForeignObjectElement, nsHtml5TreeBuilder::FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); + ELT_FIELDSET = new nsHtml5ElementName(nsHtml5Atoms::fieldset, nsHtml5Atoms::fieldset, NS_NewHTMLFieldSetElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::FIELDSET | SPECIAL); + ELT_FRAMESET = new nsHtml5ElementName(nsHtml5Atoms::frameset, nsHtml5Atoms::frameset, NS_NewHTMLFrameSetElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::FRAMESET | SPECIAL); + ELT_FEOFFSET = new nsHtml5ElementName(nsHtml5Atoms::feoffset, nsHtml5Atoms::feOffset, NS_NewHTMLUnknownElement, NS_NewSVGFEOffsetElement, nsHtml5TreeBuilder::OTHER); + ELT_FESPOTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fespotlight, nsHtml5Atoms::feSpotLight, NS_NewHTMLUnknownElement, NS_NewSVGFESpotLightElement, nsHtml5TreeBuilder::OTHER); + ELT_FEPOINTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fepointlight, nsHtml5Atoms::fePointLight, NS_NewHTMLUnknownElement, NS_NewSVGFEPointLightElement, nsHtml5TreeBuilder::OTHER); + ELT_FEDISTANTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fedistantlight, nsHtml5Atoms::feDistantLight, NS_NewHTMLUnknownElement, NS_NewSVGFEDistantLightElement, nsHtml5TreeBuilder::OTHER); + ELT_FONT = new nsHtml5ElementName(nsHtml5Atoms::font, nsHtml5Atoms::font, NS_NewHTMLFontElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::FONT); + ELT_LT = new nsHtml5ElementName(nsHtml5Atoms::lt, nsHtml5Atoms::lt, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_INTERSECT = new nsHtml5ElementName(nsHtml5Atoms::intersect, nsHtml5Atoms::intersect, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_IDENT = new nsHtml5ElementName(nsHtml5Atoms::ident, nsHtml5Atoms::ident, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_INPUT = new nsHtml5ElementName(nsHtml5Atoms::input, nsHtml5Atoms::input, NS_NewHTMLInputElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::INPUT | SPECIAL); + ELT_LIMIT = new nsHtml5ElementName(nsHtml5Atoms::limit, nsHtml5Atoms::limit, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LOWLIMIT = new nsHtml5ElementName(nsHtml5Atoms::lowlimit, nsHtml5Atoms::lowlimit, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_LINEARGRADIENT = new nsHtml5ElementName(nsHtml5Atoms::lineargradient, nsHtml5Atoms::linearGradient, NS_NewHTMLUnknownElement, NS_NewSVGLinearGradientElement, nsHtml5TreeBuilder::OTHER); + ELT_LIST = new nsHtml5ElementName(nsHtml5Atoms::list, nsHtml5Atoms::list, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MOMENT = new nsHtml5ElementName(nsHtml5Atoms::moment, nsHtml5Atoms::moment, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MROOT = new nsHtml5ElementName(nsHtml5Atoms::mroot, nsHtml5Atoms::mroot, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MSQRT = new nsHtml5ElementName(nsHtml5Atoms::msqrt, nsHtml5Atoms::msqrt, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MOMENTABOUT = new nsHtml5ElementName(nsHtml5Atoms::momentabout, nsHtml5Atoms::momentabout, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MTEXT = new nsHtml5ElementName(nsHtml5Atoms::mtext, nsHtml5Atoms::mtext, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); + ELT_NOTSUBSET = new nsHtml5ElementName(nsHtml5Atoms::notsubset, nsHtml5Atoms::notsubset, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOTPRSUBSET = new nsHtml5ElementName(nsHtml5Atoms::notprsubset, nsHtml5Atoms::notprsubset, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_NOSCRIPT = new nsHtml5ElementName(nsHtml5Atoms::noscript, nsHtml5Atoms::noscript, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::NOSCRIPT | SPECIAL); + ELT_NEST = new nsHtml5ElementName(nsHtml5Atoms::nest, nsHtml5Atoms::nest, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RT = new nsHtml5ElementName(nsHtml5Atoms::rt, nsHtml5Atoms::rt, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RT_OR_RP | OPTIONAL_END_TAG); + ELT_OBJECT = new nsHtml5ElementName(nsHtml5Atoms::object, nsHtml5Atoms::object, NS_NewHTMLObjectElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OBJECT | SPECIAL | SCOPING); + ELT_OUTERPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::outerproduct, nsHtml5Atoms::outerproduct, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_OUTPUT = new nsHtml5ElementName(nsHtml5Atoms::output, nsHtml5Atoms::output, NS_NewHTMLOutputElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OUTPUT); + ELT_PRODUCT = new nsHtml5ElementName(nsHtml5Atoms::product, nsHtml5Atoms::product, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PRSUBSET = new nsHtml5ElementName(nsHtml5Atoms::prsubset, nsHtml5Atoms::prsubset, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_PLAINTEXT = new nsHtml5ElementName(nsHtml5Atoms::plaintext, nsHtml5Atoms::plaintext, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::PLAINTEXT | SPECIAL); + ELT_TT = new nsHtml5ElementName(nsHtml5Atoms::tt, nsHtml5Atoms::tt, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); + ELT_QUOTIENT = new nsHtml5ElementName(nsHtml5Atoms::quotient, nsHtml5Atoms::quotient, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RECT = new nsHtml5ElementName(nsHtml5Atoms::rect, nsHtml5Atoms::rect, NS_NewHTMLUnknownElement, NS_NewSVGRectElement, nsHtml5TreeBuilder::OTHER); + ELT_RADIALGRADIENT = new nsHtml5ElementName(nsHtml5Atoms::radialgradient, nsHtml5Atoms::radialGradient, NS_NewHTMLUnknownElement, NS_NewSVGRadialGradientElement, nsHtml5TreeBuilder::OTHER); + ELT_ROOT = new nsHtml5ElementName(nsHtml5Atoms::root, nsHtml5Atoms::root, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SELECT = new nsHtml5ElementName(nsHtml5Atoms::select, nsHtml5Atoms::select, NS_NewHTMLSelectElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::SELECT | SPECIAL); + ELT_SCALARPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::scalarproduct, nsHtml5Atoms::scalarproduct, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SUBSET = new nsHtml5ElementName(nsHtml5Atoms::subset, nsHtml5Atoms::subset, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SCRIPT = new nsHtml5ElementName(nsHtml5Atoms::script, nsHtml5Atoms::script, NS_NewHTMLScriptElement, NS_NewSVGScriptElement, nsHtml5TreeBuilder::SCRIPT | SPECIAL); + ELT_TFOOT = new nsHtml5ElementName(nsHtml5Atoms::tfoot, nsHtml5Atoms::tfoot, NS_NewHTMLTableSectionElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + ELT_TEXT = new nsHtml5ElementName(nsHtml5Atoms::text, nsHtml5Atoms::text, NS_NewHTMLUnknownElement, NS_NewSVGTextElement, nsHtml5TreeBuilder::OTHER); + ELT_UPLIMIT = new nsHtml5ElementName(nsHtml5Atoms::uplimit, nsHtml5Atoms::uplimit, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_VECTORPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::vectorproduct, nsHtml5Atoms::vectorproduct, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MENU = new nsHtml5ElementName(nsHtml5Atoms::menu, nsHtml5Atoms::menu, NS_NewHTMLMenuElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); + ELT_SDEV = new nsHtml5ElementName(nsHtml5Atoms::sdev, nsHtml5Atoms::sdev, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FEDROPSHADOW = new nsHtml5ElementName(nsHtml5Atoms::fedropshadow, nsHtml5Atoms::feDropShadow, NS_NewHTMLUnknownElement, NS_NewSVGFEDropShadowElement, nsHtml5TreeBuilder::OTHER); + ELT_MROW = new nsHtml5ElementName(nsHtml5Atoms::mrow, nsHtml5Atoms::mrow, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MATRIXROW = new nsHtml5ElementName(nsHtml5Atoms::matrixrow, nsHtml5Atoms::matrixrow, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_SHADOW = new nsHtml5ElementName(nsHtml5Atoms::shadow, nsHtml5Atoms::shadow, NS_NewHTMLShadowElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_VIEW = new nsHtml5ElementName(nsHtml5Atoms::view, nsHtml5Atoms::view, NS_NewHTMLUnknownElement, NS_NewSVGViewElement, nsHtml5TreeBuilder::OTHER); + ELT_APPROX = new nsHtml5ElementName(nsHtml5Atoms::approx, nsHtml5Atoms::approx, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_FECOLORMATRIX = new nsHtml5ElementName(nsHtml5Atoms::fecolormatrix, nsHtml5Atoms::feColorMatrix, NS_NewHTMLUnknownElement, NS_NewSVGFEColorMatrixElement, nsHtml5TreeBuilder::OTHER); + ELT_FECONVOLVEMATRIX = new nsHtml5ElementName(nsHtml5Atoms::feconvolvematrix, nsHtml5Atoms::feConvolveMatrix, NS_NewHTMLUnknownElement, NS_NewSVGFEConvolveMatrixElement, nsHtml5TreeBuilder::OTHER); + ELT_MATRIX = new nsHtml5ElementName(nsHtml5Atoms::matrix, nsHtml5Atoms::matrix, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_APPLY = new nsHtml5ElementName(nsHtml5Atoms::apply, nsHtml5Atoms::apply, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_BODY = new nsHtml5ElementName(nsHtml5Atoms::body, nsHtml5Atoms::body, NS_NewHTMLBodyElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::BODY | SPECIAL | OPTIONAL_END_TAG); + ELT_FEMORPHOLOGY = new nsHtml5ElementName(nsHtml5Atoms::femorphology, nsHtml5Atoms::feMorphology, NS_NewHTMLUnknownElement, NS_NewSVGFEMorphologyElement, nsHtml5TreeBuilder::OTHER); + ELT_IMAGINARY = new nsHtml5ElementName(nsHtml5Atoms::imaginary, nsHtml5Atoms::imaginary, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_INFINITY = new nsHtml5ElementName(nsHtml5Atoms::infinity, nsHtml5Atoms::infinity, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_RUBY = new nsHtml5ElementName(nsHtml5Atoms::ruby, nsHtml5Atoms::ruby, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); + ELT_SUMMARY = new nsHtml5ElementName(nsHtml5Atoms::summary, nsHtml5Atoms::summary, NS_NewHTMLSummaryElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); + ELT_TBODY = new nsHtml5ElementName(nsHtml5Atoms::tbody, nsHtml5Atoms::tbody, NS_NewHTMLTableSectionElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); + ELEMENT_NAMES = new nsHtml5ElementName*[401]; + ELEMENT_NAMES[0] = ELT_VKERN; + ELEMENT_NAMES[1] = ELT_LOGBASE; + ELEMENT_NAMES[2] = ELT_FIELDSET; + ELEMENT_NAMES[3] = ELT_DATA; + ELEMENT_NAMES[4] = ELT_LI; + ELEMENT_NAMES[5] = ELT_COMPLEXES; + ELEMENT_NAMES[6] = ELT_QUOTIENT; + ELEMENT_NAMES[7] = ELT_PRE; + ELEMENT_NAMES[8] = ELT_ARTICLE; + ELEMENT_NAMES[9] = ELT_DIALOG; + ELEMENT_NAMES[10] = ELT_ARCTAN; + ELEMENT_NAMES[11] = ELT_LISTENER; + ELEMENT_NAMES[12] = ELT_RATIONALS; + ELEMENT_NAMES[13] = ELT_MROOT; + ELEMENT_NAMES[14] = ELT_MATRIXROW; + ELEMENT_NAMES[15] = ELT_GEQ; + ELEMENT_NAMES[16] = ELT_G; + ELEMENT_NAMES[17] = ELT_DD; + ELEMENT_NAMES[18] = ELT_ELLIPSE; + ELEMENT_NAMES[19] = ELT_STYLE; + ELEMENT_NAMES[20] = ELT_COTH; + ELEMENT_NAMES[21] = ELT_INTERVAL; + ELEMENT_NAMES[22] = ELT_MN; + ELEMENT_NAMES[23] = ELT_BR; + ELEMENT_NAMES[24] = ELT_POWER; + ELEMENT_NAMES[25] = ELT_MMULTISCRIPTS; + ELEMENT_NAMES[26] = ELT_CONTENT; + ELEMENT_NAMES[27] = ELT_INTERSECT; + ELEMENT_NAMES[28] = ELT_RT; + ELEMENT_NAMES[29] = ELT_TFOOT; + ELEMENT_NAMES[30] = ELT_APPLY; + ELEMENT_NAMES[31] = ELT_COS; + ELEMENT_NAMES[32] = ELT_MTD; + ELEMENT_NAMES[33] = ELT_SUM; + ELEMENT_NAMES[34] = ELT_U; + ELEMENT_NAMES[35] = ELT_MSUB; + ELEMENT_NAMES[36] = ELT_HEAD; + ELEMENT_NAMES[37] = ELT_CONJUGATE; + ELEMENT_NAMES[38] = ELT_FRAME; + ELEMENT_NAMES[39] = ELT_OTHERWISE; + ELEMENT_NAMES[40] = ELT_ALTGLYPHDEF; + ELEMENT_NAMES[41] = ELT_ARCTANH; + ELEMENT_NAMES[42] = ELT_TH; + ELEMENT_NAMES[43] = ELT_TBREAK; + ELEMENT_NAMES[44] = ELT_ANIMATETRANSFORM; + ELEMENT_NAMES[45] = ELT_CAPTION; + ELEMENT_NAMES[46] = ELT_OPTION; + ELEMENT_NAMES[47] = ELT_MALIGNGROUP; + ELEMENT_NAMES[48] = ELT_FECOMPONENTTRANSFER; + ELEMENT_NAMES[49] = ELT_MERROR; + ELEMENT_NAMES[50] = ELT_VECTOR; + ELEMENT_NAMES[51] = ELT_IMPLIES; + ELEMENT_NAMES[52] = ELT_PRIMES; + ELEMENT_NAMES[53] = ELT_APPLET; + ELEMENT_NAMES[54] = ELT_EMPTYSET; + ELEMENT_NAMES[55] = ELT_FEPOINTLIGHT; + ELEMENT_NAMES[56] = ELT_LOWLIMIT; + ELEMENT_NAMES[57] = ELT_NOTSUBSET; + ELEMENT_NAMES[58] = ELT_PRODUCT; + ELEMENT_NAMES[59] = ELT_SELECT; + ELEMENT_NAMES[60] = ELT_MENU; + ELEMENT_NAMES[61] = ELT_FECOLORMATRIX; + ELEMENT_NAMES[62] = ELT_INFINITY; + ELEMENT_NAMES[63] = ELT_BIG; + ELEMENT_NAMES[64] = ELT_DIR; + ELEMENT_NAMES[65] = ELT_KBD; + ELEMENT_NAMES[66] = ELT_MAX; + ELEMENT_NAMES[67] = ELT_REM; + ELEMENT_NAMES[68] = ELT_SET; + ELEMENT_NAMES[69] = ELT_I; + ELEMENT_NAMES[70] = ELT_H4; + ELEMENT_NAMES[71] = ELT_METADATA; + ELEMENT_NAMES[72] = ELT_DEFINITION_SRC; + ELEMENT_NAMES[73] = ELT_EMBED; + ELEMENT_NAMES[74] = ELT_NOEMBED; + ELEMENT_NAMES[75] = ELT_CODE; + ELEMENT_NAMES[76] = ELT_DEGREE; + ELEMENT_NAMES[77] = ELT_FEIMAGE; + ELEMENT_NAMES[78] = ELT_IMAGE; + ELEMENT_NAMES[79] = ELT_MTABLE; + ELEMENT_NAMES[80] = ELT_PIECEWISE; + ELEMENT_NAMES[81] = ELT_TRANSPOSE; + ELEMENT_NAMES[82] = ELT_PARTIALDIFF; + ELEMENT_NAMES[83] = ELT_LISTING; + ELEMENT_NAMES[84] = ELT_ARCCOTH; + ELEMENT_NAMES[85] = ELT_MATH; + ELEMENT_NAMES[86] = ELT_TANH; + ELEMENT_NAMES[87] = ELT_LINK; + ELEMENT_NAMES[88] = ELT_CURL; + ELEMENT_NAMES[89] = ELT_REAL; + ELEMENT_NAMES[90] = ELT_MENUITEM; + ELEMENT_NAMES[91] = ELT_ANIMATEMOTION; + ELEMENT_NAMES[92] = ELT_IN; + ELEMENT_NAMES[93] = ELT_MEDIAN; + ELEMENT_NAMES[94] = ELT_SPAN; + ELEMENT_NAMES[95] = ELT_VIDEO; + ELEMENT_NAMES[96] = ELT_OPTGROUP; + ELEMENT_NAMES[97] = ELT_CENTER; + ELEMENT_NAMES[98] = ELT_FEGAUSSIANBLUR; + ELEMENT_NAMES[99] = ELT_MOVER; + ELEMENT_NAMES[100] = ELT_NOBR; + ELEMENT_NAMES[101] = ELT_SOLIDCOLOR; + ELEMENT_NAMES[102] = ELT_ADDRESS; + ELEMENT_NAMES[103] = ELT_DETAILS; + ELEMENT_NAMES[104] = ELT_MS; + ELEMENT_NAMES[105] = ELT_NOFRAMES; + ELEMENT_NAMES[106] = ELT_PLUS; + ELEMENT_NAMES[107] = ELT_TIMES; + ELEMENT_NAMES[108] = ELT_BASEFONT; + ELEMENT_NAMES[109] = ELT_DETERMINANT; + ELEMENT_NAMES[110] = ELT_FONT_FACE_FORMAT; + ELEMENT_NAMES[111] = ELT_FEOFFSET; + ELEMENT_NAMES[112] = ELT_FONT; + ELEMENT_NAMES[113] = ELT_INPUT; ELEMENT_NAMES[114] = ELT_LIST; - ELEMENT_NAMES[115] = ELT_META; - ELEMENT_NAMES[116] = ELT_MSUB; - ELEMENT_NAMES[117] = ELT_MODE; - ELEMENT_NAMES[118] = ELT_MATH; - ELEMENT_NAMES[119] = ELT_MARK; - ELEMENT_NAMES[120] = ELT_MASK; - ELEMENT_NAMES[121] = ELT_MEAN; - ELEMENT_NAMES[122] = ELT_MAIN; - ELEMENT_NAMES[123] = ELT_MSUP; - ELEMENT_NAMES[124] = ELT_MENU; - ELEMENT_NAMES[125] = ELT_MROW; - ELEMENT_NAMES[126] = ELT_NONE; - ELEMENT_NAMES[127] = ELT_NOBR; - ELEMENT_NAMES[128] = ELT_NEST; - ELEMENT_NAMES[129] = ELT_PATH; - ELEMENT_NAMES[130] = ELT_PLUS; - ELEMENT_NAMES[131] = ELT_RULE; - ELEMENT_NAMES[132] = ELT_REAL; - ELEMENT_NAMES[133] = ELT_RELN; - ELEMENT_NAMES[134] = ELT_RECT; - ELEMENT_NAMES[135] = ELT_ROOT; - ELEMENT_NAMES[136] = ELT_RUBY; - ELEMENT_NAMES[137] = ELT_SECH; - ELEMENT_NAMES[138] = ELT_SINH; - ELEMENT_NAMES[139] = ELT_SPAN; - ELEMENT_NAMES[140] = ELT_SAMP; - ELEMENT_NAMES[141] = ELT_STOP; - ELEMENT_NAMES[142] = ELT_SDEV; - ELEMENT_NAMES[143] = ELT_TIME; - ELEMENT_NAMES[144] = ELT_TRUE; - ELEMENT_NAMES[145] = ELT_TREF; - ELEMENT_NAMES[146] = ELT_TANH; - ELEMENT_NAMES[147] = ELT_TEXT; - ELEMENT_NAMES[148] = ELT_VIEW; - ELEMENT_NAMES[149] = ELT_ASIDE; - ELEMENT_NAMES[150] = ELT_AUDIO; - ELEMENT_NAMES[151] = ELT_APPLY; - ELEMENT_NAMES[152] = ELT_EMBED; - ELEMENT_NAMES[153] = ELT_FRAME; - ELEMENT_NAMES[154] = ELT_FALSE; - ELEMENT_NAMES[155] = ELT_FLOOR; - ELEMENT_NAMES[156] = ELT_GLYPH; - ELEMENT_NAMES[157] = ELT_HKERN; - ELEMENT_NAMES[158] = ELT_IMAGE; - ELEMENT_NAMES[159] = ELT_IDENT; - ELEMENT_NAMES[160] = ELT_INPUT; - ELEMENT_NAMES[161] = ELT_LABEL; - ELEMENT_NAMES[162] = ELT_LIMIT; - ELEMENT_NAMES[163] = ELT_MFRAC; - ELEMENT_NAMES[164] = ELT_MPATH; - ELEMENT_NAMES[165] = ELT_METER; - ELEMENT_NAMES[166] = ELT_MOVER; - ELEMENT_NAMES[167] = ELT_MINUS; - ELEMENT_NAMES[168] = ELT_MROOT; - ELEMENT_NAMES[169] = ELT_MSQRT; - ELEMENT_NAMES[170] = ELT_MTEXT; - ELEMENT_NAMES[171] = ELT_NOTIN; - ELEMENT_NAMES[172] = ELT_PIECE; - ELEMENT_NAMES[173] = ELT_PARAM; - ELEMENT_NAMES[174] = ELT_POWER; - ELEMENT_NAMES[175] = ELT_REALS; - ELEMENT_NAMES[176] = ELT_STYLE; - ELEMENT_NAMES[177] = ELT_SMALL; - ELEMENT_NAMES[178] = ELT_THEAD; - ELEMENT_NAMES[179] = ELT_TABLE; - ELEMENT_NAMES[180] = ELT_TITLE; - ELEMENT_NAMES[181] = ELT_TRACK; - ELEMENT_NAMES[182] = ELT_TSPAN; - ELEMENT_NAMES[183] = ELT_TIMES; - ELEMENT_NAMES[184] = ELT_TFOOT; - ELEMENT_NAMES[185] = ELT_TBODY; - ELEMENT_NAMES[186] = ELT_UNION; - ELEMENT_NAMES[187] = ELT_VKERN; - ELEMENT_NAMES[188] = ELT_VIDEO; - ELEMENT_NAMES[189] = ELT_ARCSEC; - ELEMENT_NAMES[190] = ELT_ARCCSC; - ELEMENT_NAMES[191] = ELT_ARCTAN; - ELEMENT_NAMES[192] = ELT_ARCSIN; - ELEMENT_NAMES[193] = ELT_ARCCOS; - ELEMENT_NAMES[194] = ELT_APPLET; - ELEMENT_NAMES[195] = ELT_ARCCOT; - ELEMENT_NAMES[196] = ELT_APPROX; - ELEMENT_NAMES[197] = ELT_BUTTON; - ELEMENT_NAMES[198] = ELT_CIRCLE; - ELEMENT_NAMES[199] = ELT_CENTER; - ELEMENT_NAMES[200] = ELT_CURSOR; - ELEMENT_NAMES[201] = ELT_CANVAS; - ELEMENT_NAMES[202] = ELT_DIVIDE; - ELEMENT_NAMES[203] = ELT_DEGREE; - ELEMENT_NAMES[204] = ELT_DIALOG; - ELEMENT_NAMES[205] = ELT_DOMAIN; - ELEMENT_NAMES[206] = ELT_EXISTS; - ELEMENT_NAMES[207] = ELT_FETILE; - ELEMENT_NAMES[208] = ELT_FIGURE; - ELEMENT_NAMES[209] = ELT_FORALL; - ELEMENT_NAMES[210] = ELT_FILTER; - ELEMENT_NAMES[211] = ELT_FOOTER; - ELEMENT_NAMES[212] = ELT_HGROUP; - ELEMENT_NAMES[213] = ELT_HEADER; - ELEMENT_NAMES[214] = ELT_IFRAME; - ELEMENT_NAMES[215] = ELT_KEYGEN; - ELEMENT_NAMES[216] = ELT_LAMBDA; - ELEMENT_NAMES[217] = ELT_LEGEND; - ELEMENT_NAMES[218] = ELT_MSPACE; - ELEMENT_NAMES[219] = ELT_MTABLE; - ELEMENT_NAMES[220] = ELT_MSTYLE; - ELEMENT_NAMES[221] = ELT_MGLYPH; - ELEMENT_NAMES[222] = ELT_MEDIAN; - ELEMENT_NAMES[223] = ELT_MUNDER; - ELEMENT_NAMES[224] = ELT_MARKER; - ELEMENT_NAMES[225] = ELT_MERROR; - ELEMENT_NAMES[226] = ELT_MOMENT; - ELEMENT_NAMES[227] = ELT_MATRIX; - ELEMENT_NAMES[228] = ELT_OPTION; - ELEMENT_NAMES[229] = ELT_OBJECT; - ELEMENT_NAMES[230] = ELT_OUTPUT; - ELEMENT_NAMES[231] = ELT_PRIMES; - ELEMENT_NAMES[232] = ELT_SOURCE; - ELEMENT_NAMES[233] = ELT_STRIKE; - ELEMENT_NAMES[234] = ELT_STRONG; - ELEMENT_NAMES[235] = ELT_SWITCH; - ELEMENT_NAMES[236] = ELT_SYMBOL; - ELEMENT_NAMES[237] = ELT_SELECT; - ELEMENT_NAMES[238] = ELT_SUBSET; - ELEMENT_NAMES[239] = ELT_SCRIPT; - ELEMENT_NAMES[240] = ELT_TBREAK; - ELEMENT_NAMES[241] = ELT_VECTOR; - ELEMENT_NAMES[242] = ELT_ARTICLE; - ELEMENT_NAMES[243] = ELT_ANIMATE; - ELEMENT_NAMES[244] = ELT_ARCSECH; - ELEMENT_NAMES[245] = ELT_ARCCSCH; - ELEMENT_NAMES[246] = ELT_ARCTANH; - ELEMENT_NAMES[247] = ELT_ARCSINH; - ELEMENT_NAMES[248] = ELT_ARCCOSH; - ELEMENT_NAMES[249] = ELT_ARCCOTH; - ELEMENT_NAMES[250] = ELT_ACRONYM; - ELEMENT_NAMES[251] = ELT_ADDRESS; - ELEMENT_NAMES[252] = ELT_BGSOUND; - ELEMENT_NAMES[253] = ELT_COMPOSE; - ELEMENT_NAMES[254] = ELT_CEILING; - ELEMENT_NAMES[255] = ELT_CSYMBOL; - ELEMENT_NAMES[256] = ELT_CAPTION; - ELEMENT_NAMES[257] = ELT_DISCARD; - ELEMENT_NAMES[258] = ELT_DECLARE; - ELEMENT_NAMES[259] = ELT_DETAILS; - ELEMENT_NAMES[260] = ELT_ELLIPSE; - ELEMENT_NAMES[261] = ELT_FEFUNCA; - ELEMENT_NAMES[262] = ELT_FEFUNCB; - ELEMENT_NAMES[263] = ELT_FEBLEND; - ELEMENT_NAMES[264] = ELT_FEFLOOD; - ELEMENT_NAMES[265] = ELT_FEIMAGE; - ELEMENT_NAMES[266] = ELT_FEMERGE; - ELEMENT_NAMES[267] = ELT_FEFUNCG; - ELEMENT_NAMES[268] = ELT_FEFUNCR; - ELEMENT_NAMES[269] = ELT_HANDLER; - ELEMENT_NAMES[270] = ELT_INVERSE; - ELEMENT_NAMES[271] = ELT_IMPLIES; - ELEMENT_NAMES[272] = ELT_ISINDEX; - ELEMENT_NAMES[273] = ELT_LOGBASE; - ELEMENT_NAMES[274] = ELT_LISTING; - ELEMENT_NAMES[275] = ELT_MFENCED; - ELEMENT_NAMES[276] = ELT_MPADDED; - ELEMENT_NAMES[277] = ELT_MARQUEE; - ELEMENT_NAMES[278] = ELT_MACTION; - ELEMENT_NAMES[279] = ELT_MSUBSUP; - ELEMENT_NAMES[280] = ELT_NOEMBED; - ELEMENT_NAMES[281] = ELT_PICTURE; - ELEMENT_NAMES[282] = ELT_POLYGON; - ELEMENT_NAMES[283] = ELT_PATTERN; - ELEMENT_NAMES[284] = ELT_PRODUCT; - ELEMENT_NAMES[285] = ELT_SETDIFF; - ELEMENT_NAMES[286] = ELT_SECTION; - ELEMENT_NAMES[287] = ELT_SUMMARY; - ELEMENT_NAMES[288] = ELT_TENDSTO; - ELEMENT_NAMES[289] = ELT_UPLIMIT; - ELEMENT_NAMES[290] = ELT_ALTGLYPH; - ELEMENT_NAMES[291] = ELT_BASEFONT; - ELEMENT_NAMES[292] = ELT_CLIPPATH; - ELEMENT_NAMES[293] = ELT_CODOMAIN; - ELEMENT_NAMES[294] = ELT_COLGROUP; - ELEMENT_NAMES[295] = ELT_EMPTYSET; - ELEMENT_NAMES[296] = ELT_FACTOROF; - ELEMENT_NAMES[297] = ELT_FIELDSET; - ELEMENT_NAMES[298] = ELT_FRAMESET; - ELEMENT_NAMES[299] = ELT_FEOFFSET; - ELEMENT_NAMES[300] = ELT_GLYPHREF; - ELEMENT_NAMES[301] = ELT_INTERVAL; - ELEMENT_NAMES[302] = ELT_INTEGERS; - ELEMENT_NAMES[303] = ELT_INFINITY; - ELEMENT_NAMES[304] = ELT_LISTENER; - ELEMENT_NAMES[305] = ELT_LOWLIMIT; - ELEMENT_NAMES[306] = ELT_METADATA; - ELEMENT_NAMES[307] = ELT_MENCLOSE; - ELEMENT_NAMES[308] = ELT_MENUITEM; - ELEMENT_NAMES[309] = ELT_MPHANTOM; - ELEMENT_NAMES[310] = ELT_NOFRAMES; - ELEMENT_NAMES[311] = ELT_NOSCRIPT; - ELEMENT_NAMES[312] = ELT_OPTGROUP; - ELEMENT_NAMES[313] = ELT_POLYLINE; - ELEMENT_NAMES[314] = ELT_PREFETCH; - ELEMENT_NAMES[315] = ELT_PROGRESS; - ELEMENT_NAMES[316] = ELT_PRSUBSET; - ELEMENT_NAMES[317] = ELT_QUOTIENT; - ELEMENT_NAMES[318] = ELT_SELECTOR; - ELEMENT_NAMES[319] = ELT_TEXTAREA; - ELEMENT_NAMES[320] = ELT_TEMPLATE; - ELEMENT_NAMES[321] = ELT_TEXTPATH; - ELEMENT_NAMES[322] = ELT_VARIANCE; - ELEMENT_NAMES[323] = ELT_ANIMATION; - ELEMENT_NAMES[324] = ELT_CONJUGATE; - ELEMENT_NAMES[325] = ELT_CONDITION; - ELEMENT_NAMES[326] = ELT_COMPLEXES; - ELEMENT_NAMES[327] = ELT_FONT_FACE; - ELEMENT_NAMES[328] = ELT_FACTORIAL; - ELEMENT_NAMES[329] = ELT_INTERSECT; - ELEMENT_NAMES[330] = ELT_IMAGINARY; - ELEMENT_NAMES[331] = ELT_LAPLACIAN; - ELEMENT_NAMES[332] = ELT_MATRIXROW; - ELEMENT_NAMES[333] = ELT_NOTSUBSET; - ELEMENT_NAMES[334] = ELT_OTHERWISE; - ELEMENT_NAMES[335] = ELT_PIECEWISE; - ELEMENT_NAMES[336] = ELT_PLAINTEXT; - ELEMENT_NAMES[337] = ELT_RATIONALS; - ELEMENT_NAMES[338] = ELT_SEMANTICS; - ELEMENT_NAMES[339] = ELT_TRANSPOSE; - ELEMENT_NAMES[340] = ELT_ANNOTATION; - ELEMENT_NAMES[341] = ELT_BLOCKQUOTE; - ELEMENT_NAMES[342] = ELT_DIVERGENCE; - ELEMENT_NAMES[343] = ELT_EULERGAMMA; - ELEMENT_NAMES[344] = ELT_EQUIVALENT; - ELEMENT_NAMES[345] = ELT_FIGCAPTION; - ELEMENT_NAMES[346] = ELT_IMAGINARYI; - ELEMENT_NAMES[347] = ELT_MALIGNMARK; - ELEMENT_NAMES[348] = ELT_MUNDEROVER; - ELEMENT_NAMES[349] = ELT_MLABELEDTR; - ELEMENT_NAMES[350] = ELT_NOTANUMBER; - ELEMENT_NAMES[351] = ELT_SOLIDCOLOR; - ELEMENT_NAMES[352] = ELT_ALTGLYPHDEF; - ELEMENT_NAMES[353] = ELT_DETERMINANT; - ELEMENT_NAMES[354] = ELT_FEMERGENODE; - ELEMENT_NAMES[355] = ELT_FECOMPOSITE; - ELEMENT_NAMES[356] = ELT_FESPOTLIGHT; - ELEMENT_NAMES[357] = ELT_MALIGNGROUP; - ELEMENT_NAMES[358] = ELT_MPRESCRIPTS; - ELEMENT_NAMES[359] = ELT_MOMENTABOUT; - ELEMENT_NAMES[360] = ELT_NOTPRSUBSET; - ELEMENT_NAMES[361] = ELT_PARTIALDIFF; + ELEMENT_NAMES[115] = ELT_MOMENTABOUT; + ELEMENT_NAMES[116] = ELT_NOSCRIPT; + ELEMENT_NAMES[117] = ELT_OUTERPRODUCT; + ELEMENT_NAMES[118] = ELT_PLAINTEXT; + ELEMENT_NAMES[119] = ELT_RADIALGRADIENT; + ELEMENT_NAMES[120] = ELT_SUBSET; + ELEMENT_NAMES[121] = ELT_UPLIMIT; + ELEMENT_NAMES[122] = ELT_FEDROPSHADOW; + ELEMENT_NAMES[123] = ELT_VIEW; + ELEMENT_NAMES[124] = ELT_ISINDEX; + ELEMENT_NAMES[125] = ELT_FEMORPHOLOGY; + ELEMENT_NAMES[126] = ELT_SUMMARY; + ELEMENT_NAMES[127] = ELT_ARG; + ELEMENT_NAMES[128] = ELT_CSC; + ELEMENT_NAMES[129] = ELT_DEL; + ELEMENT_NAMES[130] = ELT_EXP; + ELEMENT_NAMES[131] = ELT_INS; + ELEMENT_NAMES[132] = ELT_LCM; + ELEMENT_NAMES[133] = ELT_MAP; + ELEMENT_NAMES[134] = ELT_NOT; + ELEMENT_NAMES[135] = ELT_B; + ELEMENT_NAMES[136] = ELT_SEC; + ELEMENT_NAMES[137] = ELT_SEP; + ELEMENT_NAMES[138] = ELT_USE; + ELEMENT_NAMES[139] = ELT_XMP; + ELEMENT_NAMES[140] = ELT_Q; + ELEMENT_NAMES[141] = ELT_H2; + ELEMENT_NAMES[142] = ELT_H6; + ELEMENT_NAMES[143] = ELT_FEFUNCA; + ELEMENT_NAMES[144] = ELT_TEXTAREA; + ELEMENT_NAMES[145] = ELT_ARCSEC; + ELEMENT_NAMES[146] = ELT_FONT_FACE_SRC; + ELEMENT_NAMES[147] = ELT_CARD; + ELEMENT_NAMES[148] = ELT_FEFLOOD; + ELEMENT_NAMES[149] = ELT_MFENCED; + ELEMENT_NAMES[150] = ELT_THEAD; + ELEMENT_NAMES[151] = ELT_BASE; + ELEMENT_NAMES[152] = ELT_COLOR_PROFILE; + ELEMENT_NAMES[153] = ELT_DIVERGENCE; + ELEMENT_NAMES[154] = ELT_DATATEMPLATE; + ELEMENT_NAMES[155] = ELT_FETURBULENCE; + ELEMENT_NAMES[156] = ELT_FETILE; + ELEMENT_NAMES[157] = ELT_FALSE; + ELEMENT_NAMES[158] = ELT_INVERSE; + ELEMENT_NAMES[159] = ELT_MODE; + ELEMENT_NAMES[160] = ELT_MENCLOSE; + ELEMENT_NAMES[161] = ELT_POLYLINE; + ELEMENT_NAMES[162] = ELT_SOURCE; + ELEMENT_NAMES[163] = ELT_TITLE; + ELEMENT_NAMES[164] = ELT_TRUE; + ELEMENT_NAMES[165] = ELT_FACTOROF; + ELEMENT_NAMES[166] = ELT_TREF; + ELEMENT_NAMES[167] = ELT_FEDIFFUSELIGHTING; + ELEMENT_NAMES[168] = ELT_ARCSECH; + ELEMENT_NAMES[169] = ELT_ALTGLYPH; + ELEMENT_NAMES[170] = ELT_COSH; + ELEMENT_NAMES[171] = ELT_MGLYPH; + ELEMENT_NAMES[172] = ELT_PREFETCH; + ELEMENT_NAMES[173] = ELT_SWITCH; + ELEMENT_NAMES[174] = ELT_CI; + ELEMENT_NAMES[175] = ELT_MI; + ELEMENT_NAMES[176] = ELT_MALIGNMARK; + ELEMENT_NAMES[177] = ELT_DL; + ELEMENT_NAMES[178] = ELT_FORALL; + ELEMENT_NAMES[179] = ELT_LABEL; + ELEMENT_NAMES[180] = ELT_SYMBOL; + ELEMENT_NAMES[181] = ELT_EM; + ELEMENT_NAMES[182] = ELT_PARAM; + ELEMENT_NAMES[183] = ELT_ANIMATION; + ELEMENT_NAMES[184] = ELT_FN; + ELEMENT_NAMES[185] = ELT_DOMAIN; + ELEMENT_NAMES[186] = ELT_HKERN; + ELEMENT_NAMES[187] = ELT_LAPLACIAN; + ELEMENT_NAMES[188] = ELT_MACTION; + ELEMENT_NAMES[189] = ELT_PATTERN; + ELEMENT_NAMES[190] = ELT_TSPAN; + ELEMENT_NAMES[191] = ELT_MO; + ELEMENT_NAMES[192] = ELT_FEDISPLACEMENTMAP; + ELEMENT_NAMES[193] = ELT_MSUP; + ELEMENT_NAMES[194] = ELT_STOP; + ELEMENT_NAMES[195] = ELT_ANIMATECOLOR; + ELEMENT_NAMES[196] = ELT_HR; + ELEMENT_NAMES[197] = ELT_FOOTER; + ELEMENT_NAMES[198] = ELT_HANDLER; + ELEMENT_NAMES[199] = ELT_MARKER; + ELEMENT_NAMES[200] = ELT_MUNDEROVER; + ELEMENT_NAMES[201] = ELT_MLABELEDTR; + ELEMENT_NAMES[202] = ELT_NOTANUMBER; + ELEMENT_NAMES[203] = ELT_TR; + ELEMENT_NAMES[204] = ELT_SELECTOR; + ELEMENT_NAMES[205] = ELT_ARCCOS; + ELEMENT_NAMES[206] = ELT_CANVAS; + ELEMENT_NAMES[207] = ELT_DEFS; + ELEMENT_NAMES[208] = ELT_EXISTS; + ELEMENT_NAMES[209] = ELT_INTEGERS; + ELEMENT_NAMES[210] = ELT_MPRESCRIPTS; + ELEMENT_NAMES[211] = ELT_MINUS; + ELEMENT_NAMES[212] = ELT_NATURALNUMBERS; + ELEMENT_NAMES[213] = ELT_PROGRESS; + ELEMENT_NAMES[214] = ELT_REALS; + ELEMENT_NAMES[215] = ELT_SEMANTICS; + ELEMENT_NAMES[216] = ELT_DT; + ELEMENT_NAMES[217] = ELT_ARCCOT; + ELEMENT_NAMES[218] = ELT_CARTESIANPRODUCT; + ELEMENT_NAMES[219] = ELT_GT; + ELEMENT_NAMES[220] = ELT_DATALIST; + ELEMENT_NAMES[221] = ELT_EQUIVALENT; + ELEMENT_NAMES[222] = ELT_FOREIGNOBJECT; + ELEMENT_NAMES[223] = ELT_FRAMESET; + ELEMENT_NAMES[224] = ELT_FESPOTLIGHT; + ELEMENT_NAMES[225] = ELT_FEDISTANTLIGHT; + ELEMENT_NAMES[226] = ELT_LT; + ELEMENT_NAMES[227] = ELT_IDENT; + ELEMENT_NAMES[228] = ELT_LIMIT; + ELEMENT_NAMES[229] = ELT_LINEARGRADIENT; + ELEMENT_NAMES[230] = ELT_MOMENT; + ELEMENT_NAMES[231] = ELT_MSQRT; + ELEMENT_NAMES[232] = ELT_MTEXT; + ELEMENT_NAMES[233] = ELT_NOTPRSUBSET; + ELEMENT_NAMES[234] = ELT_NEST; + ELEMENT_NAMES[235] = ELT_OBJECT; + ELEMENT_NAMES[236] = ELT_OUTPUT; + ELEMENT_NAMES[237] = ELT_PRSUBSET; + ELEMENT_NAMES[238] = ELT_TT; + ELEMENT_NAMES[239] = ELT_RECT; + ELEMENT_NAMES[240] = ELT_ROOT; + ELEMENT_NAMES[241] = ELT_SCALARPRODUCT; + ELEMENT_NAMES[242] = ELT_SCRIPT; + ELEMENT_NAMES[243] = ELT_TEXT; + ELEMENT_NAMES[244] = ELT_VECTORPRODUCT; + ELEMENT_NAMES[245] = ELT_SDEV; + ELEMENT_NAMES[246] = ELT_MROW; + ELEMENT_NAMES[247] = ELT_SHADOW; + ELEMENT_NAMES[248] = ELT_APPROX; + ELEMENT_NAMES[249] = ELT_FECONVOLVEMATRIX; + ELEMENT_NAMES[250] = ELT_MATRIX; + ELEMENT_NAMES[251] = ELT_BODY; + ELEMENT_NAMES[252] = ELT_IMAGINARY; + ELEMENT_NAMES[253] = ELT_RUBY; + ELEMENT_NAMES[254] = ELT_TBODY; + ELEMENT_NAMES[255] = ELT_AND; + ELEMENT_NAMES[256] = ELT_ABS; + ELEMENT_NAMES[257] = ELT_BDO; + ELEMENT_NAMES[258] = ELT_COL; + ELEMENT_NAMES[259] = ELT_COT; + ELEMENT_NAMES[260] = ELT_DFN; + ELEMENT_NAMES[261] = ELT_DIV; + ELEMENT_NAMES[262] = ELT_GCD; + ELEMENT_NAMES[263] = ELT_IMG; + ELEMENT_NAMES[264] = ELT_INT; + ELEMENT_NAMES[265] = ELT_LOG; + ELEMENT_NAMES[266] = ELT_LEQ; + ELEMENT_NAMES[267] = ELT_MIN; + ELEMENT_NAMES[268] = ELT_MTR; + ELEMENT_NAMES[269] = ELT_NEQ; + ELEMENT_NAMES[270] = ELT_NAV; + ELEMENT_NAMES[271] = ELT_A; + ELEMENT_NAMES[272] = ELT_RTC; + ELEMENT_NAMES[273] = ELT_SUB; + ELEMENT_NAMES[274] = ELT_SVG; + ELEMENT_NAMES[275] = ELT_SIN; + ELEMENT_NAMES[276] = ELT_SUP; + ELEMENT_NAMES[277] = ELT_TAN; + ELEMENT_NAMES[278] = ELT_VAR; + ELEMENT_NAMES[279] = ELT_WBR; + ELEMENT_NAMES[280] = ELT_XOR; + ELEMENT_NAMES[281] = ELT_P; + ELEMENT_NAMES[282] = ELT_S; + ELEMENT_NAMES[283] = ELT_H1; + ELEMENT_NAMES[284] = ELT_H3; + ELEMENT_NAMES[285] = ELT_H5; + ELEMENT_NAMES[286] = ELT_AREA; + ELEMENT_NAMES[287] = ELT_EULERGAMMA; + ELEMENT_NAMES[288] = ELT_LAMBDA; + ELEMENT_NAMES[289] = ELT_META; + ELEMENT_NAMES[290] = ELT_FEFUNCB; + ELEMENT_NAMES[291] = ELT_RB; + ELEMENT_NAMES[292] = ELT_ARCCSC; + ELEMENT_NAMES[293] = ELT_DESC; + ELEMENT_NAMES[294] = ELT_MFRAC; + ELEMENT_NAMES[295] = ELT_BGSOUND; + ELEMENT_NAMES[296] = ELT_DISCARD; + ELEMENT_NAMES[297] = ELT_FEBLEND; + ELEMENT_NAMES[298] = ELT_GRAD; + ELEMENT_NAMES[299] = ELT_LEGEND; + ELEMENT_NAMES[300] = ELT_MPADDED; + ELEMENT_NAMES[301] = ELT_TD; + ELEMENT_NAMES[302] = ELT_ASIDE; + ELEMENT_NAMES[303] = ELT_ANIMATE; + ELEMENT_NAMES[304] = ELT_BLOCKQUOTE; + ELEMENT_NAMES[305] = ELT_CIRCLE; + ELEMENT_NAMES[306] = ELT_COMPOSE; + ELEMENT_NAMES[307] = ELT_CITE; + ELEMENT_NAMES[308] = ELT_DIVIDE; + ELEMENT_NAMES[309] = ELT_DECLARE; + ELEMENT_NAMES[310] = ELT_EXPONENTIALE; + ELEMENT_NAMES[311] = ELT_FONT_FACE; + ELEMENT_NAMES[312] = ELT_FEMERGENODE; + ELEMENT_NAMES[313] = ELT_FEMERGE; + ELEMENT_NAMES[314] = ELT_FONT_FACE_NAME; + ELEMENT_NAMES[315] = ELT_FIGURE; + ELEMENT_NAMES[316] = ELT_FECOMPOSITE; + ELEMENT_NAMES[317] = ELT_IFRAME; + ELEMENT_NAMES[318] = ELT_LINE; + ELEMENT_NAMES[319] = ELT_MSPACE; + ELEMENT_NAMES[320] = ELT_MARQUEE; + ELEMENT_NAMES[321] = ELT_MSTYLE; + ELEMENT_NAMES[322] = ELT_NONE; + ELEMENT_NAMES[323] = ELT_PIECE; + ELEMENT_NAMES[324] = ELT_PICTURE; + ELEMENT_NAMES[325] = ELT_RULE; + ELEMENT_NAMES[326] = ELT_STRIKE; + ELEMENT_NAMES[327] = ELT_TABLE; + ELEMENT_NAMES[328] = ELT_TIME; + ELEMENT_NAMES[329] = ELT_TEMPLATE; + ELEMENT_NAMES[330] = ELT_VARIANCE; + ELEMENT_NAMES[331] = ELT_DIFF; + ELEMENT_NAMES[332] = ELT_GLYPHREF; + ELEMENT_NAMES[333] = ELT_SETDIFF; + ELEMENT_NAMES[334] = ELT_CEILING; + ELEMENT_NAMES[335] = ELT_FEFUNCG; + ELEMENT_NAMES[336] = ELT_FESPECULARLIGHTING; + ELEMENT_NAMES[337] = ELT_STRONG; + ELEMENT_NAMES[338] = ELT_ARCCSCH; + ELEMENT_NAMES[339] = ELT_ARCSINH; + ELEMENT_NAMES[340] = ELT_ARCCOSH; + ELEMENT_NAMES[341] = ELT_CSCH; + ELEMENT_NAMES[342] = ELT_CLIPPATH; + ELEMENT_NAMES[343] = ELT_GLYPH; + ELEMENT_NAMES[344] = ELT_MISSING_GLYPH; + ELEMENT_NAMES[345] = ELT_MPATH; + ELEMENT_NAMES[346] = ELT_PATH; + ELEMENT_NAMES[347] = ELT_SECH; + ELEMENT_NAMES[348] = ELT_SINH; + ELEMENT_NAMES[349] = ELT_TEXTPATH; + ELEMENT_NAMES[350] = ELT_FONT_FACE_URI; + ELEMENT_NAMES[351] = ELT_IMAGINARYI; + ELEMENT_NAMES[352] = ELT_PI; + ELEMENT_NAMES[353] = ELT_MARK; + ELEMENT_NAMES[354] = ELT_MASK; + ELEMENT_NAMES[355] = ELT_TRACK; + ELEMENT_NAMES[356] = ELT_CSYMBOL; + ELEMENT_NAMES[357] = ELT_FACTORIAL; + ELEMENT_NAMES[358] = ELT_HTML; + ELEMENT_NAMES[359] = ELT_OL; + ELEMENT_NAMES[360] = ELT_UL; + ELEMENT_NAMES[361] = ELT_SMALL; ELEMENT_NAMES[362] = ELT_ALTGLYPHITEM; - ELEMENT_NAMES[363] = ELT_ANIMATECOLOR; - ELEMENT_NAMES[364] = ELT_DATATEMPLATE; - ELEMENT_NAMES[365] = ELT_EXPONENTIALE; - ELEMENT_NAMES[366] = ELT_FETURBULENCE; - ELEMENT_NAMES[367] = ELT_FEPOINTLIGHT; - ELEMENT_NAMES[368] = ELT_FEDROPSHADOW; - ELEMENT_NAMES[369] = ELT_FEMORPHOLOGY; - ELEMENT_NAMES[370] = ELT_OUTERPRODUCT; - ELEMENT_NAMES[371] = ELT_ANIMATEMOTION; - ELEMENT_NAMES[372] = ELT_COLOR_PROFILE; - ELEMENT_NAMES[373] = ELT_FONT_FACE_SRC; - ELEMENT_NAMES[374] = ELT_FONT_FACE_URI; - ELEMENT_NAMES[375] = ELT_FOREIGNOBJECT; - ELEMENT_NAMES[376] = ELT_FECOLORMATRIX; - ELEMENT_NAMES[377] = ELT_MISSING_GLYPH; - ELEMENT_NAMES[378] = ELT_MMULTISCRIPTS; - ELEMENT_NAMES[379] = ELT_SCALARPRODUCT; - ELEMENT_NAMES[380] = ELT_VECTORPRODUCT; - ELEMENT_NAMES[381] = ELT_ANNOTATION_XML; - ELEMENT_NAMES[382] = ELT_DEFINITION_SRC; - ELEMENT_NAMES[383] = ELT_FONT_FACE_NAME; - ELEMENT_NAMES[384] = ELT_FEGAUSSIANBLUR; - ELEMENT_NAMES[385] = ELT_FEDISTANTLIGHT; - ELEMENT_NAMES[386] = ELT_LINEARGRADIENT; - ELEMENT_NAMES[387] = ELT_NATURALNUMBERS; - ELEMENT_NAMES[388] = ELT_RADIALGRADIENT; - ELEMENT_NAMES[389] = ELT_ANIMATETRANSFORM; - ELEMENT_NAMES[390] = ELT_CARTESIANPRODUCT; - ELEMENT_NAMES[391] = ELT_FONT_FACE_FORMAT; - ELEMENT_NAMES[392] = ELT_FECONVOLVEMATRIX; - ELEMENT_NAMES[393] = ELT_FEDIFFUSELIGHTING; - ELEMENT_NAMES[394] = ELT_FEDISPLACEMENTMAP; - ELEMENT_NAMES[395] = ELT_FESPECULARLIGHTING; - ELEMENT_NAMES[396] = ELT_DOMAINOFAPPLICATION; - ELEMENT_NAMES[397] = ELT_FECOMPONENTTRANSFER; + ELEMENT_NAMES[363] = ELT_ACRONYM; + ELEMENT_NAMES[364] = ELT_FORM; + ELEMENT_NAMES[365] = ELT_MPHANTOM; + ELEMENT_NAMES[366] = ELT_CN; + ELEMENT_NAMES[367] = ELT_ARCSIN; + ELEMENT_NAMES[368] = ELT_ANNOTATION; + ELEMENT_NAMES[369] = ELT_BUTTON; + ELEMENT_NAMES[370] = ELT_CODOMAIN; + ELEMENT_NAMES[371] = ELT_CONDITION; + ELEMENT_NAMES[372] = ELT_DOMAINOFAPPLICATION; + ELEMENT_NAMES[373] = ELT_FIGCAPTION; + ELEMENT_NAMES[374] = ELT_LN; + ELEMENT_NAMES[375] = ELT_KEYGEN; + ELEMENT_NAMES[376] = ELT_MEAN; + ELEMENT_NAMES[377] = ELT_MAIN; + ELEMENT_NAMES[378] = ELT_NOTIN; + ELEMENT_NAMES[379] = ELT_POLYGON; + ELEMENT_NAMES[380] = ELT_RELN; + ELEMENT_NAMES[381] = ELT_SECTION; + ELEMENT_NAMES[382] = ELT_UNION; + ELEMENT_NAMES[383] = ELT_AUDIO; + ELEMENT_NAMES[384] = ELT_TENDSTO; + ELEMENT_NAMES[385] = ELT_COLGROUP; + ELEMENT_NAMES[386] = ELT_HGROUP; + ELEMENT_NAMES[387] = ELT_MSUBSUP; + ELEMENT_NAMES[388] = ELT_RP; + ELEMENT_NAMES[389] = ELT_SAMP; + ELEMENT_NAMES[390] = ELT_EQ; + ELEMENT_NAMES[391] = ELT_ABBR; + ELEMENT_NAMES[392] = ELT_BVAR; + ELEMENT_NAMES[393] = ELT_CURSOR; + ELEMENT_NAMES[394] = ELT_FEFUNCR; + ELEMENT_NAMES[395] = ELT_FILTER; + ELEMENT_NAMES[396] = ELT_FLOOR; + ELEMENT_NAMES[397] = ELT_HEADER; + ELEMENT_NAMES[398] = ELT_OR; + ELEMENT_NAMES[399] = ELT_MUNDER; + ELEMENT_NAMES[400] = ELT_METER; } void nsHtml5ElementName::releaseStatics() { - delete ELT_NULL_ELEMENT_NAME; - delete ELT_A; - delete ELT_B; - delete ELT_G; - delete ELT_I; - delete ELT_P; - delete ELT_Q; - delete ELT_S; - delete ELT_U; - delete ELT_BR; - delete ELT_CI; - delete ELT_CN; - delete ELT_DD; - delete ELT_DL; - delete ELT_DT; - delete ELT_EM; - delete ELT_EQ; - delete ELT_FN; - delete ELT_H1; - delete ELT_H2; - delete ELT_H3; - delete ELT_H4; - delete ELT_H5; - delete ELT_H6; - delete ELT_GT; - delete ELT_HR; - delete ELT_IN; - delete ELT_LI; - delete ELT_LN; - delete ELT_LT; - delete ELT_MI; - delete ELT_MN; - delete ELT_MO; - delete ELT_MS; - delete ELT_OL; - delete ELT_OR; - delete ELT_PI; - delete ELT_RB; - delete ELT_RP; - delete ELT_RT; - delete ELT_TD; - delete ELT_TH; - delete ELT_TR; - delete ELT_TT; - delete ELT_UL; + delete ELT_ISINDEX; + delete ELT_ANNOTATION_XML; delete ELT_AND; delete ELT_ARG; delete ELT_ABS; @@ -1421,6 +1336,8 @@ nsHtml5ElementName::releaseStatics() delete ELT_NOT; delete ELT_NAV; delete ELT_PRE; + delete ELT_A; + delete ELT_B; delete ELT_RTC; delete ELT_REM; delete ELT_SUB; @@ -1434,315 +1351,359 @@ nsHtml5ElementName::releaseStatics() delete ELT_TAN; delete ELT_USE; delete ELT_VAR; + delete ELT_G; delete ELT_WBR; delete ELT_XMP; delete ELT_XOR; + delete ELT_I; + delete ELT_P; + delete ELT_Q; + delete ELT_S; + delete ELT_U; + delete ELT_H1; + delete ELT_H2; + delete ELT_H3; + delete ELT_H4; + delete ELT_H5; + delete ELT_H6; delete ELT_AREA; - delete ELT_ABBR; - delete ELT_BASE; - delete ELT_BVAR; - delete ELT_BODY; - delete ELT_CARD; - delete ELT_CODE; - delete ELT_CITE; - delete ELT_CSCH; - delete ELT_COSH; - delete ELT_COTH; - delete ELT_CURL; - delete ELT_DESC; - delete ELT_DIFF; - delete ELT_DEFS; - delete ELT_FORM; - delete ELT_FONT; - delete ELT_GRAD; - delete ELT_HEAD; - delete ELT_HTML; - delete ELT_LINE; - delete ELT_LINK; - delete ELT_LIST; + delete ELT_DATA; + delete ELT_EULERGAMMA; + delete ELT_FEFUNCA; + delete ELT_LAMBDA; + delete ELT_METADATA; delete ELT_META; + delete ELT_TEXTAREA; + delete ELT_FEFUNCB; delete ELT_MSUB; - delete ELT_MODE; - delete ELT_MATH; - delete ELT_MARK; - delete ELT_MASK; - delete ELT_MEAN; - delete ELT_MAIN; - delete ELT_MSUP; - delete ELT_MENU; - delete ELT_MROW; - delete ELT_NONE; - delete ELT_NOBR; - delete ELT_NEST; - delete ELT_PATH; - delete ELT_PLUS; - delete ELT_RULE; - delete ELT_REAL; - delete ELT_RELN; - delete ELT_RECT; - delete ELT_ROOT; - delete ELT_RUBY; - delete ELT_SECH; - delete ELT_SINH; - delete ELT_SPAN; - delete ELT_SAMP; - delete ELT_STOP; - delete ELT_SDEV; - delete ELT_TIME; - delete ELT_TRUE; - delete ELT_TREF; - delete ELT_TANH; - delete ELT_TEXT; - delete ELT_VIEW; - delete ELT_ASIDE; - delete ELT_AUDIO; - delete ELT_APPLY; - delete ELT_EMBED; - delete ELT_FRAME; - delete ELT_FALSE; - delete ELT_FLOOR; - delete ELT_GLYPH; - delete ELT_HKERN; - delete ELT_IMAGE; - delete ELT_IDENT; - delete ELT_INPUT; - delete ELT_LABEL; - delete ELT_LIMIT; - delete ELT_MFRAC; - delete ELT_MPATH; - delete ELT_METER; - delete ELT_MOVER; - delete ELT_MINUS; - delete ELT_MROOT; - delete ELT_MSQRT; - delete ELT_MTEXT; - delete ELT_NOTIN; - delete ELT_PIECE; - delete ELT_PARAM; - delete ELT_POWER; - delete ELT_REALS; - delete ELT_STYLE; - delete ELT_SMALL; - delete ELT_THEAD; - delete ELT_TABLE; - delete ELT_TITLE; - delete ELT_TRACK; - delete ELT_TSPAN; - delete ELT_TIMES; - delete ELT_TFOOT; - delete ELT_TBODY; - delete ELT_UNION; - delete ELT_VKERN; - delete ELT_VIDEO; + delete ELT_RB; delete ELT_ARCSEC; delete ELT_ARCCSC; - delete ELT_ARCTAN; - delete ELT_ARCSIN; - delete ELT_ARCCOS; - delete ELT_APPLET; - delete ELT_ARCCOT; - delete ELT_APPROX; - delete ELT_BUTTON; + delete ELT_DEFINITION_SRC; + delete ELT_DESC; + delete ELT_FONT_FACE_SRC; + delete ELT_MFRAC; + delete ELT_DD; + delete ELT_BGSOUND; + delete ELT_CARD; + delete ELT_DISCARD; + delete ELT_EMBED; + delete ELT_FEBLEND; + delete ELT_FEFLOOD; + delete ELT_GRAD; + delete ELT_HEAD; + delete ELT_LEGEND; + delete ELT_MFENCED; + delete ELT_MPADDED; + delete ELT_NOEMBED; + delete ELT_TD; + delete ELT_THEAD; + delete ELT_ASIDE; + delete ELT_ARTICLE; + delete ELT_ANIMATE; + delete ELT_BASE; + delete ELT_BLOCKQUOTE; + delete ELT_CODE; delete ELT_CIRCLE; - delete ELT_CENTER; - delete ELT_CURSOR; - delete ELT_CANVAS; + delete ELT_COLOR_PROFILE; + delete ELT_COMPOSE; + delete ELT_CONJUGATE; + delete ELT_CITE; + delete ELT_DIVERGENCE; delete ELT_DIVIDE; delete ELT_DEGREE; - delete ELT_DIALOG; - delete ELT_DOMAIN; - delete ELT_EXISTS; + delete ELT_DECLARE; + delete ELT_DATATEMPLATE; + delete ELT_EXPONENTIALE; + delete ELT_ELLIPSE; + delete ELT_FONT_FACE; + delete ELT_FETURBULENCE; + delete ELT_FEMERGENODE; + delete ELT_FEIMAGE; + delete ELT_FEMERGE; delete ELT_FETILE; + delete ELT_FONT_FACE_NAME; + delete ELT_FRAME; delete ELT_FIGURE; - delete ELT_FORALL; - delete ELT_FILTER; - delete ELT_FOOTER; - delete ELT_HGROUP; - delete ELT_HEADER; + delete ELT_FALSE; + delete ELT_FECOMPOSITE; + delete ELT_IMAGE; delete ELT_IFRAME; - delete ELT_KEYGEN; - delete ELT_LAMBDA; - delete ELT_LEGEND; + delete ELT_INVERSE; + delete ELT_LINE; + delete ELT_LOGBASE; delete ELT_MSPACE; + delete ELT_MODE; + delete ELT_MARQUEE; delete ELT_MTABLE; delete ELT_MSTYLE; - delete ELT_MGLYPH; - delete ELT_MEDIAN; - delete ELT_MUNDER; - delete ELT_MARKER; - delete ELT_MERROR; - delete ELT_MOMENT; - delete ELT_MATRIX; - delete ELT_OPTION; - delete ELT_OBJECT; - delete ELT_OUTPUT; - delete ELT_PRIMES; + delete ELT_MENCLOSE; + delete ELT_NONE; + delete ELT_OTHERWISE; + delete ELT_PIECE; + delete ELT_POLYLINE; + delete ELT_PICTURE; + delete ELT_PIECEWISE; + delete ELT_RULE; delete ELT_SOURCE; delete ELT_STRIKE; + delete ELT_STYLE; + delete ELT_TABLE; + delete ELT_TITLE; + delete ELT_TIME; + delete ELT_TRANSPOSE; + delete ELT_TEMPLATE; + delete ELT_TRUE; + delete ELT_VARIANCE; + delete ELT_ALTGLYPHDEF; + delete ELT_DIFF; + delete ELT_FACTOROF; + delete ELT_GLYPHREF; + delete ELT_PARTIALDIFF; + delete ELT_SETDIFF; + delete ELT_TREF; + delete ELT_CEILING; + delete ELT_DIALOG; + delete ELT_FEFUNCG; + delete ELT_FEDIFFUSELIGHTING; + delete ELT_FESPECULARLIGHTING; + delete ELT_LISTING; delete ELT_STRONG; - delete ELT_SWITCH; - delete ELT_SYMBOL; - delete ELT_SELECT; - delete ELT_SUBSET; - delete ELT_SCRIPT; - delete ELT_TBREAK; - delete ELT_VECTOR; - delete ELT_ARTICLE; - delete ELT_ANIMATE; delete ELT_ARCSECH; delete ELT_ARCCSCH; delete ELT_ARCTANH; delete ELT_ARCSINH; + delete ELT_ALTGLYPH; delete ELT_ARCCOSH; delete ELT_ARCCOTH; - delete ELT_ACRONYM; - delete ELT_ADDRESS; - delete ELT_BGSOUND; - delete ELT_COMPOSE; - delete ELT_CEILING; + delete ELT_CSCH; + delete ELT_COSH; + delete ELT_CLIPPATH; + delete ELT_COTH; + delete ELT_GLYPH; + delete ELT_MGLYPH; + delete ELT_MISSING_GLYPH; + delete ELT_MATH; + delete ELT_MPATH; + delete ELT_PREFETCH; + delete ELT_PATH; + delete ELT_TH; + delete ELT_SECH; + delete ELT_SWITCH; + delete ELT_SINH; + delete ELT_TANH; + delete ELT_TEXTPATH; + delete ELT_CI; + delete ELT_FONT_FACE_URI; + delete ELT_LI; + delete ELT_IMAGINARYI; + delete ELT_MI; + delete ELT_PI; + delete ELT_LINK; + delete ELT_MARK; + delete ELT_MALIGNMARK; + delete ELT_MASK; + delete ELT_TBREAK; + delete ELT_TRACK; + delete ELT_DL; delete ELT_CSYMBOL; + delete ELT_CURL; + delete ELT_FACTORIAL; + delete ELT_FORALL; + delete ELT_HTML; + delete ELT_INTERVAL; + delete ELT_OL; + delete ELT_LABEL; + delete ELT_UL; + delete ELT_REAL; + delete ELT_SMALL; + delete ELT_SYMBOL; + delete ELT_ALTGLYPHITEM; + delete ELT_ANIMATETRANSFORM; + delete ELT_ACRONYM; + delete ELT_EM; + delete ELT_FORM; + delete ELT_MENUITEM; + delete ELT_MPHANTOM; + delete ELT_PARAM; + delete ELT_CN; + delete ELT_ARCTAN; + delete ELT_ARCSIN; + delete ELT_ANIMATION; + delete ELT_ANNOTATION; + delete ELT_ANIMATEMOTION; + delete ELT_BUTTON; + delete ELT_FN; + delete ELT_CODOMAIN; delete ELT_CAPTION; - delete ELT_DISCARD; - delete ELT_DECLARE; - delete ELT_DETAILS; - delete ELT_ELLIPSE; - delete ELT_FEFUNCA; - delete ELT_FEFUNCB; - delete ELT_FEBLEND; - delete ELT_FEFLOOD; - delete ELT_FEIMAGE; - delete ELT_FEMERGE; - delete ELT_FEFUNCG; - delete ELT_FEFUNCR; - delete ELT_HANDLER; - delete ELT_INVERSE; - delete ELT_IMPLIES; - delete ELT_ISINDEX; - delete ELT_LOGBASE; - delete ELT_LISTING; - delete ELT_MFENCED; - delete ELT_MPADDED; - delete ELT_MARQUEE; + delete ELT_CONDITION; + delete ELT_DOMAIN; + delete ELT_DOMAINOFAPPLICATION; + delete ELT_IN; + delete ELT_FIGCAPTION; + delete ELT_HKERN; + delete ELT_LN; + delete ELT_MN; + delete ELT_KEYGEN; + delete ELT_LAPLACIAN; + delete ELT_MEAN; + delete ELT_MEDIAN; + delete ELT_MAIN; delete ELT_MACTION; - delete ELT_MSUBSUP; - delete ELT_NOEMBED; - delete ELT_PICTURE; + delete ELT_NOTIN; + delete ELT_OPTION; delete ELT_POLYGON; delete ELT_PATTERN; - delete ELT_PRODUCT; - delete ELT_SETDIFF; + delete ELT_RELN; + delete ELT_SPAN; delete ELT_SECTION; - delete ELT_SUMMARY; + delete ELT_TSPAN; + delete ELT_UNION; + delete ELT_VKERN; + delete ELT_AUDIO; + delete ELT_MO; delete ELT_TENDSTO; - delete ELT_UPLIMIT; - delete ELT_ALTGLYPH; - delete ELT_BASEFONT; - delete ELT_CLIPPATH; - delete ELT_CODOMAIN; + delete ELT_VIDEO; delete ELT_COLGROUP; - delete ELT_EMPTYSET; - delete ELT_FACTOROF; - delete ELT_FIELDSET; - delete ELT_FRAMESET; - delete ELT_FEOFFSET; - delete ELT_GLYPHREF; - delete ELT_INTERVAL; - delete ELT_INTEGERS; - delete ELT_INFINITY; - delete ELT_LISTENER; - delete ELT_LOWLIMIT; - delete ELT_METADATA; - delete ELT_MENCLOSE; - delete ELT_MENUITEM; - delete ELT_MPHANTOM; - delete ELT_NOFRAMES; - delete ELT_NOSCRIPT; + delete ELT_FEDISPLACEMENTMAP; + delete ELT_HGROUP; + delete ELT_MALIGNGROUP; + delete ELT_MSUBSUP; + delete ELT_MSUP; + delete ELT_RP; delete ELT_OPTGROUP; - delete ELT_POLYLINE; - delete ELT_PREFETCH; - delete ELT_PROGRESS; - delete ELT_PRSUBSET; - delete ELT_QUOTIENT; - delete ELT_SELECTOR; - delete ELT_TEXTAREA; - delete ELT_TEMPLATE; - delete ELT_TEXTPATH; - delete ELT_VARIANCE; - delete ELT_ANIMATION; - delete ELT_CONJUGATE; - delete ELT_CONDITION; - delete ELT_COMPLEXES; - delete ELT_FONT_FACE; - delete ELT_FACTORIAL; - delete ELT_INTERSECT; - delete ELT_IMAGINARY; - delete ELT_LAPLACIAN; - delete ELT_MATRIXROW; - delete ELT_NOTSUBSET; - delete ELT_OTHERWISE; - delete ELT_PIECEWISE; - delete ELT_PLAINTEXT; - delete ELT_RATIONALS; - delete ELT_SEMANTICS; - delete ELT_TRANSPOSE; - delete ELT_ANNOTATION; - delete ELT_BLOCKQUOTE; - delete ELT_DIVERGENCE; - delete ELT_EULERGAMMA; - delete ELT_EQUIVALENT; - delete ELT_FIGCAPTION; - delete ELT_IMAGINARYI; - delete ELT_MALIGNMARK; + delete ELT_SAMP; + delete ELT_STOP; + delete ELT_EQ; + delete ELT_BR; + delete ELT_ABBR; + delete ELT_ANIMATECOLOR; + delete ELT_BVAR; + delete ELT_CENTER; + delete ELT_CURSOR; + delete ELT_HR; + delete ELT_FEFUNCR; + delete ELT_FECOMPONENTTRANSFER; + delete ELT_FILTER; + delete ELT_FOOTER; + delete ELT_FLOOR; + delete ELT_FEGAUSSIANBLUR; + delete ELT_HEADER; + delete ELT_HANDLER; + delete ELT_OR; + delete ELT_LISTENER; + delete ELT_MUNDER; + delete ELT_MARKER; + delete ELT_METER; + delete ELT_MOVER; delete ELT_MUNDEROVER; + delete ELT_MERROR; delete ELT_MLABELEDTR; + delete ELT_NOBR; delete ELT_NOTANUMBER; + delete ELT_POWER; + delete ELT_TR; delete ELT_SOLIDCOLOR; - delete ELT_ALTGLYPHDEF; + delete ELT_SELECTOR; + delete ELT_VECTOR; + delete ELT_ARCCOS; + delete ELT_ADDRESS; + delete ELT_CANVAS; + delete ELT_COMPLEXES; + delete ELT_DEFS; + delete ELT_DETAILS; + delete ELT_EXISTS; + delete ELT_IMPLIES; + delete ELT_INTEGERS; + delete ELT_MS; + delete ELT_MPRESCRIPTS; + delete ELT_MMULTISCRIPTS; + delete ELT_MINUS; + delete ELT_NOFRAMES; + delete ELT_NATURALNUMBERS; + delete ELT_PRIMES; + delete ELT_PROGRESS; + delete ELT_PLUS; + delete ELT_REALS; + delete ELT_RATIONALS; + delete ELT_SEMANTICS; + delete ELT_TIMES; + delete ELT_DT; + delete ELT_APPLET; + delete ELT_ARCCOT; + delete ELT_BASEFONT; + delete ELT_CARTESIANPRODUCT; + delete ELT_CONTENT; + delete ELT_GT; delete ELT_DETERMINANT; - delete ELT_FEMERGENODE; - delete ELT_FECOMPOSITE; + delete ELT_DATALIST; + delete ELT_EMPTYSET; + delete ELT_EQUIVALENT; + delete ELT_FONT_FACE_FORMAT; + delete ELT_FOREIGNOBJECT; + delete ELT_FIELDSET; + delete ELT_FRAMESET; + delete ELT_FEOFFSET; delete ELT_FESPOTLIGHT; - delete ELT_MALIGNGROUP; - delete ELT_MPRESCRIPTS; + delete ELT_FEPOINTLIGHT; + delete ELT_FEDISTANTLIGHT; + delete ELT_FONT; + delete ELT_LT; + delete ELT_INTERSECT; + delete ELT_IDENT; + delete ELT_INPUT; + delete ELT_LIMIT; + delete ELT_LOWLIMIT; + delete ELT_LINEARGRADIENT; + delete ELT_LIST; + delete ELT_MOMENT; + delete ELT_MROOT; + delete ELT_MSQRT; delete ELT_MOMENTABOUT; + delete ELT_MTEXT; + delete ELT_NOTSUBSET; delete ELT_NOTPRSUBSET; - delete ELT_PARTIALDIFF; - delete ELT_ALTGLYPHITEM; - delete ELT_ANIMATECOLOR; - delete ELT_DATATEMPLATE; - delete ELT_EXPONENTIALE; - delete ELT_FETURBULENCE; - delete ELT_FEPOINTLIGHT; - delete ELT_FEDROPSHADOW; - delete ELT_FEMORPHOLOGY; + delete ELT_NOSCRIPT; + delete ELT_NEST; + delete ELT_RT; + delete ELT_OBJECT; delete ELT_OUTERPRODUCT; - delete ELT_ANIMATEMOTION; - delete ELT_COLOR_PROFILE; - delete ELT_FONT_FACE_SRC; - delete ELT_FONT_FACE_URI; - delete ELT_FOREIGNOBJECT; - delete ELT_FECOLORMATRIX; - delete ELT_MISSING_GLYPH; - delete ELT_MMULTISCRIPTS; + delete ELT_OUTPUT; + delete ELT_PRODUCT; + delete ELT_PRSUBSET; + delete ELT_PLAINTEXT; + delete ELT_TT; + delete ELT_QUOTIENT; + delete ELT_RECT; + delete ELT_RADIALGRADIENT; + delete ELT_ROOT; + delete ELT_SELECT; delete ELT_SCALARPRODUCT; + delete ELT_SUBSET; + delete ELT_SCRIPT; + delete ELT_TFOOT; + delete ELT_TEXT; + delete ELT_UPLIMIT; delete ELT_VECTORPRODUCT; - delete ELT_ANNOTATION_XML; - delete ELT_DEFINITION_SRC; - delete ELT_FONT_FACE_NAME; - delete ELT_FEGAUSSIANBLUR; - delete ELT_FEDISTANTLIGHT; - delete ELT_LINEARGRADIENT; - delete ELT_NATURALNUMBERS; - delete ELT_RADIALGRADIENT; - delete ELT_ANIMATETRANSFORM; - delete ELT_CARTESIANPRODUCT; - delete ELT_FONT_FACE_FORMAT; + delete ELT_MENU; + delete ELT_SDEV; + delete ELT_FEDROPSHADOW; + delete ELT_MROW; + delete ELT_MATRIXROW; + delete ELT_SHADOW; + delete ELT_VIEW; + delete ELT_APPROX; + delete ELT_FECOLORMATRIX; delete ELT_FECONVOLVEMATRIX; - delete ELT_FEDIFFUSELIGHTING; - delete ELT_FEDISPLACEMENTMAP; - delete ELT_FESPECULARLIGHTING; - delete ELT_DOMAINOFAPPLICATION; - delete ELT_FECOMPONENTTRANSFER; + delete ELT_MATRIX; + delete ELT_APPLY; + delete ELT_BODY; + delete ELT_FEMORPHOLOGY; + delete ELT_IMAGINARY; + delete ELT_INFINITY; + delete ELT_RUBY; + delete ELT_SUMMARY; + delete ELT_TBODY; delete[] ELEMENT_NAMES; } diff --git a/parser/html/nsHtml5ElementName.h b/parser/html/nsHtml5ElementName.h index 99c6de323..5236d1887 100644 --- a/parser/html/nsHtml5ElementName.h +++ b/parser/html/nsHtml5ElementName.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2016 Mozilla Foundation + * Copyright (c) 2008-2017 Mozilla Foundation * Copyright (c) 2018-2020 Moonchild Productions * Copyright (c) 2020 Binary Outcast * @@ -44,14 +44,15 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; +class nsHtml5AttributeName; class nsHtml5Tokenizer; class nsHtml5TreeBuilder; class nsHtml5MetaScanner; -class nsHtml5AttributeName; -class nsHtml5HtmlAttributes; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -60,71 +61,155 @@ class nsHtml5Portability; class nsHtml5ElementName { public: - static nsHtml5ElementName* ELT_NULL_ELEMENT_NAME; + static const int32_t GROUP_MASK = 127; + + static const int32_t NOT_INTERNED = (1 << 30); + + static const int32_t SPECIAL = (1 << 29); + + static const int32_t FOSTER_PARENTING = (1 << 28); + + static const int32_t SCOPING = (1 << 27); + + static const int32_t SCOPING_AS_SVG = (1 << 26); + + static const int32_t SCOPING_AS_MATHML = (1 << 25); + + static const int32_t HTML_INTEGRATION_POINT = (1 << 24); + + static const int32_t OPTIONAL_END_TAG = (1 << 23); + + private: nsIAtom* name; nsIAtom* camelCaseName; + mozilla::dom::HTMLContentCreatorFunction htmlCreator; + mozilla::dom::SVGContentCreatorFunction svgCreator; + public: int32_t flags; + inline nsIAtom* getName() + { + return name; + } + + inline nsIAtom* getCamelCaseName() + { + return camelCaseName; + } + + inline mozilla::dom::HTMLContentCreatorFunction getHtmlCreator() + { + return htmlCreator; + } + + inline mozilla::dom::SVGContentCreatorFunction getSvgCreator() + { + return svgCreator; + } + inline int32_t getFlags() { return flags; } - int32_t getGroup(); - bool isCustom(); - static nsHtml5ElementName* elementNameByBuffer(char16_t* buf, int32_t offset, int32_t length, nsHtml5AtomTable* interner); + inline int32_t getGroup() + { + return flags & nsHtml5ElementName::GROUP_MASK; + } + + inline bool isInterned() + { + return !(flags & nsHtml5ElementName::NOT_INTERNED); + } + + inline static int32_t levelOrderBinarySearch(jArray<int32_t,int32_t> data, int32_t key) + { + int32_t n = data.length; + int32_t i = 0; + while (i < n) { + int32_t val = data[i]; + if (val < key) { + i = 2 * i + 2; + } else if (val > key) { + i = 2 * i + 1; + } else { + return i; + } + } + return -1; + } + + inline static nsHtml5ElementName* elementNameByBuffer(char16_t* buf, int32_t offset, int32_t length, nsHtml5AtomTable* interner) + { + uint32_t hash = nsHtml5ElementName::bufToHash(buf, length); + jArray<int32_t,int32_t> hashes; + hashes = nsHtml5ElementName::ELEMENT_HASHES; + int32_t index = levelOrderBinarySearch(hashes, hash); + if (index < 0) { + return nullptr; + } else { + nsHtml5ElementName* elementName = nsHtml5ElementName::ELEMENT_NAMES[index]; + nsIAtom* name = elementName->name; + if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) { + return nullptr; + } + return elementName; + } + } + private: - static int32_t bufToHash(char16_t* buf, int32_t len); - nsHtml5ElementName(nsIAtom* name, nsIAtom* camelCaseName, int32_t flags); - protected: - explicit nsHtml5ElementName(nsIAtom* name); + inline static uint32_t bufToHash(char16_t* buf, int32_t length) + { + uint32_t len = length; + uint32_t first = buf[0]; + first <<= 19; + uint32_t second = 1 << 23; + uint32_t third = 0; + uint32_t fourth = 0; + uint32_t fifth = 0; + if (length >= 4) { + second = buf[length - 4]; + second <<= 4; + third = buf[length - 3]; + third <<= 9; + fourth = buf[length - 2]; + fourth <<= 14; + fifth = buf[length - 1]; + fifth <<= 24; + } else if (length == 3) { + second = buf[1]; + second <<= 4; + third = buf[2]; + third <<= 9; + } else if (length == 2) { + second = buf[1]; + second <<= 24; + } + return len + first + second + third + fourth + fifth; + } + + nsHtml5ElementName(nsIAtom* name, nsIAtom* camelCaseName, mozilla::dom::HTMLContentCreatorFunction htmlCreator, mozilla::dom::SVGContentCreatorFunction svgCreator, int32_t flags); public: - virtual void release(); - virtual ~nsHtml5ElementName(); - virtual nsHtml5ElementName* cloneElementName(nsHtml5AtomTable* interner); - static nsHtml5ElementName* ELT_A; - static nsHtml5ElementName* ELT_B; - static nsHtml5ElementName* ELT_G; - static nsHtml5ElementName* ELT_I; - static nsHtml5ElementName* ELT_P; - static nsHtml5ElementName* ELT_Q; - static nsHtml5ElementName* ELT_S; - static nsHtml5ElementName* ELT_U; - static nsHtml5ElementName* ELT_BR; - static nsHtml5ElementName* ELT_CI; - static nsHtml5ElementName* ELT_CN; - static nsHtml5ElementName* ELT_DD; - static nsHtml5ElementName* ELT_DL; - static nsHtml5ElementName* ELT_DT; - static nsHtml5ElementName* ELT_EM; - static nsHtml5ElementName* ELT_EQ; - static nsHtml5ElementName* ELT_FN; - static nsHtml5ElementName* ELT_H1; - static nsHtml5ElementName* ELT_H2; - static nsHtml5ElementName* ELT_H3; - static nsHtml5ElementName* ELT_H4; - static nsHtml5ElementName* ELT_H5; - static nsHtml5ElementName* ELT_H6; - static nsHtml5ElementName* ELT_GT; - static nsHtml5ElementName* ELT_HR; - static nsHtml5ElementName* ELT_IN; - static nsHtml5ElementName* ELT_LI; - static nsHtml5ElementName* ELT_LN; - static nsHtml5ElementName* ELT_LT; - static nsHtml5ElementName* ELT_MI; - static nsHtml5ElementName* ELT_MN; - static nsHtml5ElementName* ELT_MO; - static nsHtml5ElementName* ELT_MS; - static nsHtml5ElementName* ELT_OL; - static nsHtml5ElementName* ELT_OR; - static nsHtml5ElementName* ELT_PI; - static nsHtml5ElementName* ELT_RB; - static nsHtml5ElementName* ELT_RP; - static nsHtml5ElementName* ELT_RT; - static nsHtml5ElementName* ELT_TD; - static nsHtml5ElementName* ELT_TH; - static nsHtml5ElementName* ELT_TR; - static nsHtml5ElementName* ELT_TT; - static nsHtml5ElementName* ELT_UL; + nsHtml5ElementName(); + ~nsHtml5ElementName(); + inline void setNameForNonInterned(nsIAtom* name, bool custom) + { + this->name = name; + this->camelCaseName = name; + if (custom) { + this->htmlCreator = NS_NewCustomElement; + } else { + this->htmlCreator = NS_NewHTMLUnknownElement; + } + MOZ_ASSERT(this->flags == nsHtml5ElementName::NOT_INTERNED); + } + + inline bool isCustom() + { + return this->htmlCreator == NS_NewCustomElement; + } + + static nsHtml5ElementName* ELT_ISINDEX; + static nsHtml5ElementName* ELT_ANNOTATION_XML; static nsHtml5ElementName* ELT_AND; static nsHtml5ElementName* ELT_ARG; static nsHtml5ElementName* ELT_ABS; @@ -157,6 +242,8 @@ class nsHtml5ElementName static nsHtml5ElementName* ELT_NOT; static nsHtml5ElementName* ELT_NAV; static nsHtml5ElementName* ELT_PRE; + static nsHtml5ElementName* ELT_A; + static nsHtml5ElementName* ELT_B; static nsHtml5ElementName* ELT_RTC; static nsHtml5ElementName* ELT_REM; static nsHtml5ElementName* ELT_SUB; @@ -170,315 +257,359 @@ class nsHtml5ElementName static nsHtml5ElementName* ELT_TAN; static nsHtml5ElementName* ELT_USE; static nsHtml5ElementName* ELT_VAR; + static nsHtml5ElementName* ELT_G; static nsHtml5ElementName* ELT_WBR; static nsHtml5ElementName* ELT_XMP; static nsHtml5ElementName* ELT_XOR; + static nsHtml5ElementName* ELT_I; + static nsHtml5ElementName* ELT_P; + static nsHtml5ElementName* ELT_Q; + static nsHtml5ElementName* ELT_S; + static nsHtml5ElementName* ELT_U; + static nsHtml5ElementName* ELT_H1; + static nsHtml5ElementName* ELT_H2; + static nsHtml5ElementName* ELT_H3; + static nsHtml5ElementName* ELT_H4; + static nsHtml5ElementName* ELT_H5; + static nsHtml5ElementName* ELT_H6; static nsHtml5ElementName* ELT_AREA; - static nsHtml5ElementName* ELT_ABBR; - static nsHtml5ElementName* ELT_BASE; - static nsHtml5ElementName* ELT_BVAR; - static nsHtml5ElementName* ELT_BODY; - static nsHtml5ElementName* ELT_CARD; - static nsHtml5ElementName* ELT_CODE; - static nsHtml5ElementName* ELT_CITE; - static nsHtml5ElementName* ELT_CSCH; - static nsHtml5ElementName* ELT_COSH; - static nsHtml5ElementName* ELT_COTH; - static nsHtml5ElementName* ELT_CURL; - static nsHtml5ElementName* ELT_DESC; - static nsHtml5ElementName* ELT_DIFF; - static nsHtml5ElementName* ELT_DEFS; - static nsHtml5ElementName* ELT_FORM; - static nsHtml5ElementName* ELT_FONT; - static nsHtml5ElementName* ELT_GRAD; - static nsHtml5ElementName* ELT_HEAD; - static nsHtml5ElementName* ELT_HTML; - static nsHtml5ElementName* ELT_LINE; - static nsHtml5ElementName* ELT_LINK; - static nsHtml5ElementName* ELT_LIST; + static nsHtml5ElementName* ELT_DATA; + static nsHtml5ElementName* ELT_EULERGAMMA; + static nsHtml5ElementName* ELT_FEFUNCA; + static nsHtml5ElementName* ELT_LAMBDA; + static nsHtml5ElementName* ELT_METADATA; static nsHtml5ElementName* ELT_META; + static nsHtml5ElementName* ELT_TEXTAREA; + static nsHtml5ElementName* ELT_FEFUNCB; static nsHtml5ElementName* ELT_MSUB; - static nsHtml5ElementName* ELT_MODE; - static nsHtml5ElementName* ELT_MATH; - static nsHtml5ElementName* ELT_MARK; - static nsHtml5ElementName* ELT_MASK; - static nsHtml5ElementName* ELT_MEAN; - static nsHtml5ElementName* ELT_MAIN; - static nsHtml5ElementName* ELT_MSUP; - static nsHtml5ElementName* ELT_MENU; - static nsHtml5ElementName* ELT_MROW; - static nsHtml5ElementName* ELT_NONE; - static nsHtml5ElementName* ELT_NOBR; - static nsHtml5ElementName* ELT_NEST; - static nsHtml5ElementName* ELT_PATH; - static nsHtml5ElementName* ELT_PLUS; - static nsHtml5ElementName* ELT_RULE; - static nsHtml5ElementName* ELT_REAL; - static nsHtml5ElementName* ELT_RELN; - static nsHtml5ElementName* ELT_RECT; - static nsHtml5ElementName* ELT_ROOT; - static nsHtml5ElementName* ELT_RUBY; - static nsHtml5ElementName* ELT_SECH; - static nsHtml5ElementName* ELT_SINH; - static nsHtml5ElementName* ELT_SPAN; - static nsHtml5ElementName* ELT_SAMP; - static nsHtml5ElementName* ELT_STOP; - static nsHtml5ElementName* ELT_SDEV; - static nsHtml5ElementName* ELT_TIME; - static nsHtml5ElementName* ELT_TRUE; - static nsHtml5ElementName* ELT_TREF; - static nsHtml5ElementName* ELT_TANH; - static nsHtml5ElementName* ELT_TEXT; - static nsHtml5ElementName* ELT_VIEW; - static nsHtml5ElementName* ELT_ASIDE; - static nsHtml5ElementName* ELT_AUDIO; - static nsHtml5ElementName* ELT_APPLY; - static nsHtml5ElementName* ELT_EMBED; - static nsHtml5ElementName* ELT_FRAME; - static nsHtml5ElementName* ELT_FALSE; - static nsHtml5ElementName* ELT_FLOOR; - static nsHtml5ElementName* ELT_GLYPH; - static nsHtml5ElementName* ELT_HKERN; - static nsHtml5ElementName* ELT_IMAGE; - static nsHtml5ElementName* ELT_IDENT; - static nsHtml5ElementName* ELT_INPUT; - static nsHtml5ElementName* ELT_LABEL; - static nsHtml5ElementName* ELT_LIMIT; - static nsHtml5ElementName* ELT_MFRAC; - static nsHtml5ElementName* ELT_MPATH; - static nsHtml5ElementName* ELT_METER; - static nsHtml5ElementName* ELT_MOVER; - static nsHtml5ElementName* ELT_MINUS; - static nsHtml5ElementName* ELT_MROOT; - static nsHtml5ElementName* ELT_MSQRT; - static nsHtml5ElementName* ELT_MTEXT; - static nsHtml5ElementName* ELT_NOTIN; - static nsHtml5ElementName* ELT_PIECE; - static nsHtml5ElementName* ELT_PARAM; - static nsHtml5ElementName* ELT_POWER; - static nsHtml5ElementName* ELT_REALS; - static nsHtml5ElementName* ELT_STYLE; - static nsHtml5ElementName* ELT_SMALL; - static nsHtml5ElementName* ELT_THEAD; - static nsHtml5ElementName* ELT_TABLE; - static nsHtml5ElementName* ELT_TITLE; - static nsHtml5ElementName* ELT_TRACK; - static nsHtml5ElementName* ELT_TSPAN; - static nsHtml5ElementName* ELT_TIMES; - static nsHtml5ElementName* ELT_TFOOT; - static nsHtml5ElementName* ELT_TBODY; - static nsHtml5ElementName* ELT_UNION; - static nsHtml5ElementName* ELT_VKERN; - static nsHtml5ElementName* ELT_VIDEO; + static nsHtml5ElementName* ELT_RB; static nsHtml5ElementName* ELT_ARCSEC; static nsHtml5ElementName* ELT_ARCCSC; - static nsHtml5ElementName* ELT_ARCTAN; - static nsHtml5ElementName* ELT_ARCSIN; - static nsHtml5ElementName* ELT_ARCCOS; - static nsHtml5ElementName* ELT_APPLET; - static nsHtml5ElementName* ELT_ARCCOT; - static nsHtml5ElementName* ELT_APPROX; - static nsHtml5ElementName* ELT_BUTTON; + static nsHtml5ElementName* ELT_DEFINITION_SRC; + static nsHtml5ElementName* ELT_DESC; + static nsHtml5ElementName* ELT_FONT_FACE_SRC; + static nsHtml5ElementName* ELT_MFRAC; + static nsHtml5ElementName* ELT_DD; + static nsHtml5ElementName* ELT_BGSOUND; + static nsHtml5ElementName* ELT_CARD; + static nsHtml5ElementName* ELT_DISCARD; + static nsHtml5ElementName* ELT_EMBED; + static nsHtml5ElementName* ELT_FEBLEND; + static nsHtml5ElementName* ELT_FEFLOOD; + static nsHtml5ElementName* ELT_GRAD; + static nsHtml5ElementName* ELT_HEAD; + static nsHtml5ElementName* ELT_LEGEND; + static nsHtml5ElementName* ELT_MFENCED; + static nsHtml5ElementName* ELT_MPADDED; + static nsHtml5ElementName* ELT_NOEMBED; + static nsHtml5ElementName* ELT_TD; + static nsHtml5ElementName* ELT_THEAD; + static nsHtml5ElementName* ELT_ASIDE; + static nsHtml5ElementName* ELT_ARTICLE; + static nsHtml5ElementName* ELT_ANIMATE; + static nsHtml5ElementName* ELT_BASE; + static nsHtml5ElementName* ELT_BLOCKQUOTE; + static nsHtml5ElementName* ELT_CODE; static nsHtml5ElementName* ELT_CIRCLE; - static nsHtml5ElementName* ELT_CENTER; - static nsHtml5ElementName* ELT_CURSOR; - static nsHtml5ElementName* ELT_CANVAS; + static nsHtml5ElementName* ELT_COLOR_PROFILE; + static nsHtml5ElementName* ELT_COMPOSE; + static nsHtml5ElementName* ELT_CONJUGATE; + static nsHtml5ElementName* ELT_CITE; + static nsHtml5ElementName* ELT_DIVERGENCE; static nsHtml5ElementName* ELT_DIVIDE; static nsHtml5ElementName* ELT_DEGREE; - static nsHtml5ElementName* ELT_DIALOG; - static nsHtml5ElementName* ELT_DOMAIN; - static nsHtml5ElementName* ELT_EXISTS; + static nsHtml5ElementName* ELT_DECLARE; + static nsHtml5ElementName* ELT_DATATEMPLATE; + static nsHtml5ElementName* ELT_EXPONENTIALE; + static nsHtml5ElementName* ELT_ELLIPSE; + static nsHtml5ElementName* ELT_FONT_FACE; + static nsHtml5ElementName* ELT_FETURBULENCE; + static nsHtml5ElementName* ELT_FEMERGENODE; + static nsHtml5ElementName* ELT_FEIMAGE; + static nsHtml5ElementName* ELT_FEMERGE; static nsHtml5ElementName* ELT_FETILE; + static nsHtml5ElementName* ELT_FONT_FACE_NAME; + static nsHtml5ElementName* ELT_FRAME; static nsHtml5ElementName* ELT_FIGURE; - static nsHtml5ElementName* ELT_FORALL; - static nsHtml5ElementName* ELT_FILTER; - static nsHtml5ElementName* ELT_FOOTER; - static nsHtml5ElementName* ELT_HGROUP; - static nsHtml5ElementName* ELT_HEADER; + static nsHtml5ElementName* ELT_FALSE; + static nsHtml5ElementName* ELT_FECOMPOSITE; + static nsHtml5ElementName* ELT_IMAGE; static nsHtml5ElementName* ELT_IFRAME; - static nsHtml5ElementName* ELT_KEYGEN; - static nsHtml5ElementName* ELT_LAMBDA; - static nsHtml5ElementName* ELT_LEGEND; + static nsHtml5ElementName* ELT_INVERSE; + static nsHtml5ElementName* ELT_LINE; + static nsHtml5ElementName* ELT_LOGBASE; static nsHtml5ElementName* ELT_MSPACE; + static nsHtml5ElementName* ELT_MODE; + static nsHtml5ElementName* ELT_MARQUEE; static nsHtml5ElementName* ELT_MTABLE; static nsHtml5ElementName* ELT_MSTYLE; - static nsHtml5ElementName* ELT_MGLYPH; - static nsHtml5ElementName* ELT_MEDIAN; - static nsHtml5ElementName* ELT_MUNDER; - static nsHtml5ElementName* ELT_MARKER; - static nsHtml5ElementName* ELT_MERROR; - static nsHtml5ElementName* ELT_MOMENT; - static nsHtml5ElementName* ELT_MATRIX; - static nsHtml5ElementName* ELT_OPTION; - static nsHtml5ElementName* ELT_OBJECT; - static nsHtml5ElementName* ELT_OUTPUT; - static nsHtml5ElementName* ELT_PRIMES; + static nsHtml5ElementName* ELT_MENCLOSE; + static nsHtml5ElementName* ELT_NONE; + static nsHtml5ElementName* ELT_OTHERWISE; + static nsHtml5ElementName* ELT_PIECE; + static nsHtml5ElementName* ELT_POLYLINE; + static nsHtml5ElementName* ELT_PICTURE; + static nsHtml5ElementName* ELT_PIECEWISE; + static nsHtml5ElementName* ELT_RULE; static nsHtml5ElementName* ELT_SOURCE; static nsHtml5ElementName* ELT_STRIKE; + static nsHtml5ElementName* ELT_STYLE; + static nsHtml5ElementName* ELT_TABLE; + static nsHtml5ElementName* ELT_TITLE; + static nsHtml5ElementName* ELT_TIME; + static nsHtml5ElementName* ELT_TRANSPOSE; + static nsHtml5ElementName* ELT_TEMPLATE; + static nsHtml5ElementName* ELT_TRUE; + static nsHtml5ElementName* ELT_VARIANCE; + static nsHtml5ElementName* ELT_ALTGLYPHDEF; + static nsHtml5ElementName* ELT_DIFF; + static nsHtml5ElementName* ELT_FACTOROF; + static nsHtml5ElementName* ELT_GLYPHREF; + static nsHtml5ElementName* ELT_PARTIALDIFF; + static nsHtml5ElementName* ELT_SETDIFF; + static nsHtml5ElementName* ELT_TREF; + static nsHtml5ElementName* ELT_CEILING; + static nsHtml5ElementName* ELT_DIALOG; + static nsHtml5ElementName* ELT_FEFUNCG; + static nsHtml5ElementName* ELT_FEDIFFUSELIGHTING; + static nsHtml5ElementName* ELT_FESPECULARLIGHTING; + static nsHtml5ElementName* ELT_LISTING; static nsHtml5ElementName* ELT_STRONG; - static nsHtml5ElementName* ELT_SWITCH; - static nsHtml5ElementName* ELT_SYMBOL; - static nsHtml5ElementName* ELT_SELECT; - static nsHtml5ElementName* ELT_SUBSET; - static nsHtml5ElementName* ELT_SCRIPT; - static nsHtml5ElementName* ELT_TBREAK; - static nsHtml5ElementName* ELT_VECTOR; - static nsHtml5ElementName* ELT_ARTICLE; - static nsHtml5ElementName* ELT_ANIMATE; static nsHtml5ElementName* ELT_ARCSECH; static nsHtml5ElementName* ELT_ARCCSCH; static nsHtml5ElementName* ELT_ARCTANH; static nsHtml5ElementName* ELT_ARCSINH; + static nsHtml5ElementName* ELT_ALTGLYPH; static nsHtml5ElementName* ELT_ARCCOSH; static nsHtml5ElementName* ELT_ARCCOTH; - static nsHtml5ElementName* ELT_ACRONYM; - static nsHtml5ElementName* ELT_ADDRESS; - static nsHtml5ElementName* ELT_BGSOUND; - static nsHtml5ElementName* ELT_COMPOSE; - static nsHtml5ElementName* ELT_CEILING; + static nsHtml5ElementName* ELT_CSCH; + static nsHtml5ElementName* ELT_COSH; + static nsHtml5ElementName* ELT_CLIPPATH; + static nsHtml5ElementName* ELT_COTH; + static nsHtml5ElementName* ELT_GLYPH; + static nsHtml5ElementName* ELT_MGLYPH; + static nsHtml5ElementName* ELT_MISSING_GLYPH; + static nsHtml5ElementName* ELT_MATH; + static nsHtml5ElementName* ELT_MPATH; + static nsHtml5ElementName* ELT_PREFETCH; + static nsHtml5ElementName* ELT_PATH; + static nsHtml5ElementName* ELT_TH; + static nsHtml5ElementName* ELT_SECH; + static nsHtml5ElementName* ELT_SWITCH; + static nsHtml5ElementName* ELT_SINH; + static nsHtml5ElementName* ELT_TANH; + static nsHtml5ElementName* ELT_TEXTPATH; + static nsHtml5ElementName* ELT_CI; + static nsHtml5ElementName* ELT_FONT_FACE_URI; + static nsHtml5ElementName* ELT_LI; + static nsHtml5ElementName* ELT_IMAGINARYI; + static nsHtml5ElementName* ELT_MI; + static nsHtml5ElementName* ELT_PI; + static nsHtml5ElementName* ELT_LINK; + static nsHtml5ElementName* ELT_MARK; + static nsHtml5ElementName* ELT_MALIGNMARK; + static nsHtml5ElementName* ELT_MASK; + static nsHtml5ElementName* ELT_TBREAK; + static nsHtml5ElementName* ELT_TRACK; + static nsHtml5ElementName* ELT_DL; static nsHtml5ElementName* ELT_CSYMBOL; + static nsHtml5ElementName* ELT_CURL; + static nsHtml5ElementName* ELT_FACTORIAL; + static nsHtml5ElementName* ELT_FORALL; + static nsHtml5ElementName* ELT_HTML; + static nsHtml5ElementName* ELT_INTERVAL; + static nsHtml5ElementName* ELT_OL; + static nsHtml5ElementName* ELT_LABEL; + static nsHtml5ElementName* ELT_UL; + static nsHtml5ElementName* ELT_REAL; + static nsHtml5ElementName* ELT_SMALL; + static nsHtml5ElementName* ELT_SYMBOL; + static nsHtml5ElementName* ELT_ALTGLYPHITEM; + static nsHtml5ElementName* ELT_ANIMATETRANSFORM; + static nsHtml5ElementName* ELT_ACRONYM; + static nsHtml5ElementName* ELT_EM; + static nsHtml5ElementName* ELT_FORM; + static nsHtml5ElementName* ELT_MENUITEM; + static nsHtml5ElementName* ELT_MPHANTOM; + static nsHtml5ElementName* ELT_PARAM; + static nsHtml5ElementName* ELT_CN; + static nsHtml5ElementName* ELT_ARCTAN; + static nsHtml5ElementName* ELT_ARCSIN; + static nsHtml5ElementName* ELT_ANIMATION; + static nsHtml5ElementName* ELT_ANNOTATION; + static nsHtml5ElementName* ELT_ANIMATEMOTION; + static nsHtml5ElementName* ELT_BUTTON; + static nsHtml5ElementName* ELT_FN; + static nsHtml5ElementName* ELT_CODOMAIN; static nsHtml5ElementName* ELT_CAPTION; - static nsHtml5ElementName* ELT_DISCARD; - static nsHtml5ElementName* ELT_DECLARE; - static nsHtml5ElementName* ELT_DETAILS; - static nsHtml5ElementName* ELT_ELLIPSE; - static nsHtml5ElementName* ELT_FEFUNCA; - static nsHtml5ElementName* ELT_FEFUNCB; - static nsHtml5ElementName* ELT_FEBLEND; - static nsHtml5ElementName* ELT_FEFLOOD; - static nsHtml5ElementName* ELT_FEIMAGE; - static nsHtml5ElementName* ELT_FEMERGE; - static nsHtml5ElementName* ELT_FEFUNCG; - static nsHtml5ElementName* ELT_FEFUNCR; - static nsHtml5ElementName* ELT_HANDLER; - static nsHtml5ElementName* ELT_INVERSE; - static nsHtml5ElementName* ELT_IMPLIES; - static nsHtml5ElementName* ELT_ISINDEX; - static nsHtml5ElementName* ELT_LOGBASE; - static nsHtml5ElementName* ELT_LISTING; - static nsHtml5ElementName* ELT_MFENCED; - static nsHtml5ElementName* ELT_MPADDED; - static nsHtml5ElementName* ELT_MARQUEE; + static nsHtml5ElementName* ELT_CONDITION; + static nsHtml5ElementName* ELT_DOMAIN; + static nsHtml5ElementName* ELT_DOMAINOFAPPLICATION; + static nsHtml5ElementName* ELT_IN; + static nsHtml5ElementName* ELT_FIGCAPTION; + static nsHtml5ElementName* ELT_HKERN; + static nsHtml5ElementName* ELT_LN; + static nsHtml5ElementName* ELT_MN; + static nsHtml5ElementName* ELT_KEYGEN; + static nsHtml5ElementName* ELT_LAPLACIAN; + static nsHtml5ElementName* ELT_MEAN; + static nsHtml5ElementName* ELT_MEDIAN; + static nsHtml5ElementName* ELT_MAIN; static nsHtml5ElementName* ELT_MACTION; - static nsHtml5ElementName* ELT_MSUBSUP; - static nsHtml5ElementName* ELT_NOEMBED; - static nsHtml5ElementName* ELT_PICTURE; + static nsHtml5ElementName* ELT_NOTIN; + static nsHtml5ElementName* ELT_OPTION; static nsHtml5ElementName* ELT_POLYGON; static nsHtml5ElementName* ELT_PATTERN; - static nsHtml5ElementName* ELT_PRODUCT; - static nsHtml5ElementName* ELT_SETDIFF; + static nsHtml5ElementName* ELT_RELN; + static nsHtml5ElementName* ELT_SPAN; static nsHtml5ElementName* ELT_SECTION; - static nsHtml5ElementName* ELT_SUMMARY; + static nsHtml5ElementName* ELT_TSPAN; + static nsHtml5ElementName* ELT_UNION; + static nsHtml5ElementName* ELT_VKERN; + static nsHtml5ElementName* ELT_AUDIO; + static nsHtml5ElementName* ELT_MO; static nsHtml5ElementName* ELT_TENDSTO; - static nsHtml5ElementName* ELT_UPLIMIT; - static nsHtml5ElementName* ELT_ALTGLYPH; - static nsHtml5ElementName* ELT_BASEFONT; - static nsHtml5ElementName* ELT_CLIPPATH; - static nsHtml5ElementName* ELT_CODOMAIN; + static nsHtml5ElementName* ELT_VIDEO; static nsHtml5ElementName* ELT_COLGROUP; - static nsHtml5ElementName* ELT_EMPTYSET; - static nsHtml5ElementName* ELT_FACTOROF; - static nsHtml5ElementName* ELT_FIELDSET; - static nsHtml5ElementName* ELT_FRAMESET; - static nsHtml5ElementName* ELT_FEOFFSET; - static nsHtml5ElementName* ELT_GLYPHREF; - static nsHtml5ElementName* ELT_INTERVAL; - static nsHtml5ElementName* ELT_INTEGERS; - static nsHtml5ElementName* ELT_INFINITY; - static nsHtml5ElementName* ELT_LISTENER; - static nsHtml5ElementName* ELT_LOWLIMIT; - static nsHtml5ElementName* ELT_METADATA; - static nsHtml5ElementName* ELT_MENCLOSE; - static nsHtml5ElementName* ELT_MENUITEM; - static nsHtml5ElementName* ELT_MPHANTOM; - static nsHtml5ElementName* ELT_NOFRAMES; - static nsHtml5ElementName* ELT_NOSCRIPT; + static nsHtml5ElementName* ELT_FEDISPLACEMENTMAP; + static nsHtml5ElementName* ELT_HGROUP; + static nsHtml5ElementName* ELT_MALIGNGROUP; + static nsHtml5ElementName* ELT_MSUBSUP; + static nsHtml5ElementName* ELT_MSUP; + static nsHtml5ElementName* ELT_RP; static nsHtml5ElementName* ELT_OPTGROUP; - static nsHtml5ElementName* ELT_POLYLINE; - static nsHtml5ElementName* ELT_PREFETCH; - static nsHtml5ElementName* ELT_PROGRESS; - static nsHtml5ElementName* ELT_PRSUBSET; - static nsHtml5ElementName* ELT_QUOTIENT; - static nsHtml5ElementName* ELT_SELECTOR; - static nsHtml5ElementName* ELT_TEXTAREA; - static nsHtml5ElementName* ELT_TEMPLATE; - static nsHtml5ElementName* ELT_TEXTPATH; - static nsHtml5ElementName* ELT_VARIANCE; - static nsHtml5ElementName* ELT_ANIMATION; - static nsHtml5ElementName* ELT_CONJUGATE; - static nsHtml5ElementName* ELT_CONDITION; - static nsHtml5ElementName* ELT_COMPLEXES; - static nsHtml5ElementName* ELT_FONT_FACE; - static nsHtml5ElementName* ELT_FACTORIAL; - static nsHtml5ElementName* ELT_INTERSECT; - static nsHtml5ElementName* ELT_IMAGINARY; - static nsHtml5ElementName* ELT_LAPLACIAN; - static nsHtml5ElementName* ELT_MATRIXROW; - static nsHtml5ElementName* ELT_NOTSUBSET; - static nsHtml5ElementName* ELT_OTHERWISE; - static nsHtml5ElementName* ELT_PIECEWISE; - static nsHtml5ElementName* ELT_PLAINTEXT; - static nsHtml5ElementName* ELT_RATIONALS; - static nsHtml5ElementName* ELT_SEMANTICS; - static nsHtml5ElementName* ELT_TRANSPOSE; - static nsHtml5ElementName* ELT_ANNOTATION; - static nsHtml5ElementName* ELT_BLOCKQUOTE; - static nsHtml5ElementName* ELT_DIVERGENCE; - static nsHtml5ElementName* ELT_EULERGAMMA; - static nsHtml5ElementName* ELT_EQUIVALENT; - static nsHtml5ElementName* ELT_FIGCAPTION; - static nsHtml5ElementName* ELT_IMAGINARYI; - static nsHtml5ElementName* ELT_MALIGNMARK; + static nsHtml5ElementName* ELT_SAMP; + static nsHtml5ElementName* ELT_STOP; + static nsHtml5ElementName* ELT_EQ; + static nsHtml5ElementName* ELT_BR; + static nsHtml5ElementName* ELT_ABBR; + static nsHtml5ElementName* ELT_ANIMATECOLOR; + static nsHtml5ElementName* ELT_BVAR; + static nsHtml5ElementName* ELT_CENTER; + static nsHtml5ElementName* ELT_CURSOR; + static nsHtml5ElementName* ELT_HR; + static nsHtml5ElementName* ELT_FEFUNCR; + static nsHtml5ElementName* ELT_FECOMPONENTTRANSFER; + static nsHtml5ElementName* ELT_FILTER; + static nsHtml5ElementName* ELT_FOOTER; + static nsHtml5ElementName* ELT_FLOOR; + static nsHtml5ElementName* ELT_FEGAUSSIANBLUR; + static nsHtml5ElementName* ELT_HEADER; + static nsHtml5ElementName* ELT_HANDLER; + static nsHtml5ElementName* ELT_OR; + static nsHtml5ElementName* ELT_LISTENER; + static nsHtml5ElementName* ELT_MUNDER; + static nsHtml5ElementName* ELT_MARKER; + static nsHtml5ElementName* ELT_METER; + static nsHtml5ElementName* ELT_MOVER; static nsHtml5ElementName* ELT_MUNDEROVER; + static nsHtml5ElementName* ELT_MERROR; static nsHtml5ElementName* ELT_MLABELEDTR; + static nsHtml5ElementName* ELT_NOBR; static nsHtml5ElementName* ELT_NOTANUMBER; + static nsHtml5ElementName* ELT_POWER; + static nsHtml5ElementName* ELT_TR; static nsHtml5ElementName* ELT_SOLIDCOLOR; - static nsHtml5ElementName* ELT_ALTGLYPHDEF; + static nsHtml5ElementName* ELT_SELECTOR; + static nsHtml5ElementName* ELT_VECTOR; + static nsHtml5ElementName* ELT_ARCCOS; + static nsHtml5ElementName* ELT_ADDRESS; + static nsHtml5ElementName* ELT_CANVAS; + static nsHtml5ElementName* ELT_COMPLEXES; + static nsHtml5ElementName* ELT_DEFS; + static nsHtml5ElementName* ELT_DETAILS; + static nsHtml5ElementName* ELT_EXISTS; + static nsHtml5ElementName* ELT_IMPLIES; + static nsHtml5ElementName* ELT_INTEGERS; + static nsHtml5ElementName* ELT_MS; + static nsHtml5ElementName* ELT_MPRESCRIPTS; + static nsHtml5ElementName* ELT_MMULTISCRIPTS; + static nsHtml5ElementName* ELT_MINUS; + static nsHtml5ElementName* ELT_NOFRAMES; + static nsHtml5ElementName* ELT_NATURALNUMBERS; + static nsHtml5ElementName* ELT_PRIMES; + static nsHtml5ElementName* ELT_PROGRESS; + static nsHtml5ElementName* ELT_PLUS; + static nsHtml5ElementName* ELT_REALS; + static nsHtml5ElementName* ELT_RATIONALS; + static nsHtml5ElementName* ELT_SEMANTICS; + static nsHtml5ElementName* ELT_TIMES; + static nsHtml5ElementName* ELT_DT; + static nsHtml5ElementName* ELT_APPLET; + static nsHtml5ElementName* ELT_ARCCOT; + static nsHtml5ElementName* ELT_BASEFONT; + static nsHtml5ElementName* ELT_CARTESIANPRODUCT; + static nsHtml5ElementName* ELT_CONTENT; + static nsHtml5ElementName* ELT_GT; static nsHtml5ElementName* ELT_DETERMINANT; - static nsHtml5ElementName* ELT_FEMERGENODE; - static nsHtml5ElementName* ELT_FECOMPOSITE; + static nsHtml5ElementName* ELT_DATALIST; + static nsHtml5ElementName* ELT_EMPTYSET; + static nsHtml5ElementName* ELT_EQUIVALENT; + static nsHtml5ElementName* ELT_FONT_FACE_FORMAT; + static nsHtml5ElementName* ELT_FOREIGNOBJECT; + static nsHtml5ElementName* ELT_FIELDSET; + static nsHtml5ElementName* ELT_FRAMESET; + static nsHtml5ElementName* ELT_FEOFFSET; static nsHtml5ElementName* ELT_FESPOTLIGHT; - static nsHtml5ElementName* ELT_MALIGNGROUP; - static nsHtml5ElementName* ELT_MPRESCRIPTS; + static nsHtml5ElementName* ELT_FEPOINTLIGHT; + static nsHtml5ElementName* ELT_FEDISTANTLIGHT; + static nsHtml5ElementName* ELT_FONT; + static nsHtml5ElementName* ELT_LT; + static nsHtml5ElementName* ELT_INTERSECT; + static nsHtml5ElementName* ELT_IDENT; + static nsHtml5ElementName* ELT_INPUT; + static nsHtml5ElementName* ELT_LIMIT; + static nsHtml5ElementName* ELT_LOWLIMIT; + static nsHtml5ElementName* ELT_LINEARGRADIENT; + static nsHtml5ElementName* ELT_LIST; + static nsHtml5ElementName* ELT_MOMENT; + static nsHtml5ElementName* ELT_MROOT; + static nsHtml5ElementName* ELT_MSQRT; static nsHtml5ElementName* ELT_MOMENTABOUT; + static nsHtml5ElementName* ELT_MTEXT; + static nsHtml5ElementName* ELT_NOTSUBSET; static nsHtml5ElementName* ELT_NOTPRSUBSET; - static nsHtml5ElementName* ELT_PARTIALDIFF; - static nsHtml5ElementName* ELT_ALTGLYPHITEM; - static nsHtml5ElementName* ELT_ANIMATECOLOR; - static nsHtml5ElementName* ELT_DATATEMPLATE; - static nsHtml5ElementName* ELT_EXPONENTIALE; - static nsHtml5ElementName* ELT_FETURBULENCE; - static nsHtml5ElementName* ELT_FEPOINTLIGHT; - static nsHtml5ElementName* ELT_FEDROPSHADOW; - static nsHtml5ElementName* ELT_FEMORPHOLOGY; + static nsHtml5ElementName* ELT_NOSCRIPT; + static nsHtml5ElementName* ELT_NEST; + static nsHtml5ElementName* ELT_RT; + static nsHtml5ElementName* ELT_OBJECT; static nsHtml5ElementName* ELT_OUTERPRODUCT; - static nsHtml5ElementName* ELT_ANIMATEMOTION; - static nsHtml5ElementName* ELT_COLOR_PROFILE; - static nsHtml5ElementName* ELT_FONT_FACE_SRC; - static nsHtml5ElementName* ELT_FONT_FACE_URI; - static nsHtml5ElementName* ELT_FOREIGNOBJECT; - static nsHtml5ElementName* ELT_FECOLORMATRIX; - static nsHtml5ElementName* ELT_MISSING_GLYPH; - static nsHtml5ElementName* ELT_MMULTISCRIPTS; + static nsHtml5ElementName* ELT_OUTPUT; + static nsHtml5ElementName* ELT_PRODUCT; + static nsHtml5ElementName* ELT_PRSUBSET; + static nsHtml5ElementName* ELT_PLAINTEXT; + static nsHtml5ElementName* ELT_TT; + static nsHtml5ElementName* ELT_QUOTIENT; + static nsHtml5ElementName* ELT_RECT; + static nsHtml5ElementName* ELT_RADIALGRADIENT; + static nsHtml5ElementName* ELT_ROOT; + static nsHtml5ElementName* ELT_SELECT; static nsHtml5ElementName* ELT_SCALARPRODUCT; + static nsHtml5ElementName* ELT_SUBSET; + static nsHtml5ElementName* ELT_SCRIPT; + static nsHtml5ElementName* ELT_TFOOT; + static nsHtml5ElementName* ELT_TEXT; + static nsHtml5ElementName* ELT_UPLIMIT; static nsHtml5ElementName* ELT_VECTORPRODUCT; - static nsHtml5ElementName* ELT_ANNOTATION_XML; - static nsHtml5ElementName* ELT_DEFINITION_SRC; - static nsHtml5ElementName* ELT_FONT_FACE_NAME; - static nsHtml5ElementName* ELT_FEGAUSSIANBLUR; - static nsHtml5ElementName* ELT_FEDISTANTLIGHT; - static nsHtml5ElementName* ELT_LINEARGRADIENT; - static nsHtml5ElementName* ELT_NATURALNUMBERS; - static nsHtml5ElementName* ELT_RADIALGRADIENT; - static nsHtml5ElementName* ELT_ANIMATETRANSFORM; - static nsHtml5ElementName* ELT_CARTESIANPRODUCT; - static nsHtml5ElementName* ELT_FONT_FACE_FORMAT; + static nsHtml5ElementName* ELT_MENU; + static nsHtml5ElementName* ELT_SDEV; + static nsHtml5ElementName* ELT_FEDROPSHADOW; + static nsHtml5ElementName* ELT_MROW; + static nsHtml5ElementName* ELT_MATRIXROW; + static nsHtml5ElementName* ELT_SHADOW; + static nsHtml5ElementName* ELT_VIEW; + static nsHtml5ElementName* ELT_APPROX; + static nsHtml5ElementName* ELT_FECOLORMATRIX; static nsHtml5ElementName* ELT_FECONVOLVEMATRIX; - static nsHtml5ElementName* ELT_FEDIFFUSELIGHTING; - static nsHtml5ElementName* ELT_FEDISPLACEMENTMAP; - static nsHtml5ElementName* ELT_FESPECULARLIGHTING; - static nsHtml5ElementName* ELT_DOMAINOFAPPLICATION; - static nsHtml5ElementName* ELT_FECOMPONENTTRANSFER; + static nsHtml5ElementName* ELT_MATRIX; + static nsHtml5ElementName* ELT_APPLY; + static nsHtml5ElementName* ELT_BODY; + static nsHtml5ElementName* ELT_FEMORPHOLOGY; + static nsHtml5ElementName* ELT_IMAGINARY; + static nsHtml5ElementName* ELT_INFINITY; + static nsHtml5ElementName* ELT_RUBY; + static nsHtml5ElementName* ELT_SUMMARY; + static nsHtml5ElementName* ELT_TBODY; private: static nsHtml5ElementName** ELEMENT_NAMES; static staticJArray<int32_t,int32_t> ELEMENT_HASHES; @@ -487,16 +618,5 @@ class nsHtml5ElementName static void releaseStatics(); }; -#define NS_HTML5ELEMENT_NAME_GROUP_MASK 127 -#define NS_HTML5ELEMENT_NAME_CUSTOM (1 << 30) -#define NS_HTML5ELEMENT_NAME_SPECIAL (1 << 29) -#define NS_HTML5ELEMENT_NAME_FOSTER_PARENTING (1 << 28) -#define NS_HTML5ELEMENT_NAME_SCOPING (1 << 27) -#define NS_HTML5ELEMENT_NAME_SCOPING_AS_SVG (1 << 26) -#define NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML (1 << 25) -#define NS_HTML5ELEMENT_NAME_HTML_INTEGRATION_POINT (1 << 24) -#define NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG (1 << 23) - - #endif diff --git a/parser/html/nsHtml5Highlighter.cpp b/parser/html/nsHtml5Highlighter.cpp index 23cdf7d84..b08179fbd 100644 --- a/parser/html/nsHtml5Highlighter.cpp +++ b/parser/html/nsHtml5Highlighter.cpp @@ -48,7 +48,7 @@ char16_t nsHtml5Highlighter::sPi[] = { 'p', 'i', 0 }; nsHtml5Highlighter::nsHtml5Highlighter(nsAHtml5TreeOpSink* aOpSink) - : mState(NS_HTML5TOKENIZER_DATA) + : mState(nsHtml5Tokenizer::DATA) , mCStart(INT32_MAX) , mPos(0) , mLineNumber(1) @@ -79,13 +79,16 @@ nsHtml5Highlighter::Start(const nsAutoString& aTitle) mOpQueue.AppendElement()->Init(STANDARDS_MODE); - nsIContent** root = CreateElement(nsHtml5Atoms::html, nullptr, nullptr); + // <html> uses NS_NewHTMLSharedElement creator + nsIContent** root = + CreateElement(nsHtml5Atoms::html, nullptr, nullptr, NS_NewHTMLSharedElement); mOpQueue.AppendElement()->Init(eTreeOpAppendToDocument, root); mStack.AppendElement(root); - Push(nsGkAtoms::head, nullptr); + // <head> uses NS_NewHTMLSharedElement creator + Push(nsGkAtoms::head, nullptr, NS_NewHTMLSharedElement); - Push(nsGkAtoms::title, nullptr); + Push(nsGkAtoms::title, nullptr, NS_NewHTMLTitleElement); // XUL will add the "Source of: " prefix. uint32_t length = aTitle.Length(); if (length > INT32_MAX) { @@ -94,7 +97,9 @@ nsHtml5Highlighter::Start(const nsAutoString& aTitle) AppendCharacters(aTitle.BeginReading(), 0, (int32_t)length); Pop(); // title - Push(nsGkAtoms::link, nsHtml5ViewSourceUtils::NewLinkAttributes()); + Push(nsGkAtoms::link, + nsHtml5ViewSourceUtils::NewLinkAttributes(), + NS_NewHTMLLinkElement); mOpQueue.AppendElement()->Init(eTreeOpUpdateStyleSheet, CurrentNode()); @@ -102,12 +107,14 @@ nsHtml5Highlighter::Start(const nsAutoString& aTitle) Pop(); // head - Push(nsGkAtoms::body, nsHtml5ViewSourceUtils::NewBodyAttributes()); + Push(nsGkAtoms::body, + nsHtml5ViewSourceUtils::NewBodyAttributes(), + NS_NewHTMLBodyElement); nsHtml5HtmlAttributes* preAttrs = new nsHtml5HtmlAttributes(0); nsHtml5String preId = nsHtml5Portability::newStringFromLiteral("line1"); preAttrs->addAttribute(nsHtml5AttributeName::ATTR_ID, preId, -1); - Push(nsGkAtoms::pre, preAttrs); + Push(nsGkAtoms::pre, preAttrs, NS_NewHTMLPreElement); StartCharacters(); @@ -119,13 +126,13 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) { mPos = aPos; switch (mState) { - case NS_HTML5TOKENIZER_SCRIPT_DATA: - case NS_HTML5TOKENIZER_RAWTEXT: - case NS_HTML5TOKENIZER_RCDATA: - case NS_HTML5TOKENIZER_DATA: + case nsHtml5Tokenizer::SCRIPT_DATA: + case nsHtml5Tokenizer::RAWTEXT: + case nsHtml5Tokenizer::RCDATA: + case nsHtml5Tokenizer::DATA: // We can transition on < and on &. Either way, we don't yet know the // role of the token, so open a span without class. - if (aState == NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE) { + if (aState == nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE) { StartSpan(); // Start another span for highlighting the ampersand StartSpan(); @@ -134,26 +141,26 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) EndCharactersAndStartMarkupRun(); } break; - case NS_HTML5TOKENIZER_TAG_OPEN: + case nsHtml5Tokenizer::TAG_OPEN: switch (aState) { - case NS_HTML5TOKENIZER_TAG_NAME: + case nsHtml5Tokenizer::TAG_NAME: StartSpan(sStartTag); break; - case NS_HTML5TOKENIZER_DATA: + case nsHtml5Tokenizer::DATA: FinishTag(); // DATA break; - case NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION: + case nsHtml5Tokenizer::PROCESSING_INSTRUCTION: AddClass(sPi); break; } break; - case NS_HTML5TOKENIZER_TAG_NAME: + case nsHtml5Tokenizer::TAG_NAME: switch (aState) { - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: - EndSpanOrA(); // NS_HTML5TOKENIZER_TAG_NAME + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME: + EndSpanOrA(); // nsHtml5Tokenizer::TAG_NAME break; - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: - EndSpanOrA(); // NS_HTML5TOKENIZER_TAG_NAME + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: + EndSpanOrA(); // nsHtml5Tokenizer::TAG_NAME StartSpan(); // for highlighting the slash mSlash = CurrentNode(); break; @@ -162,12 +169,12 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME: switch (aState) { - case NS_HTML5TOKENIZER_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::ATTRIBUTE_NAME: StartSpan(sAttributeName); break; - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: StartSpan(); // for highlighting the slash mSlash = CurrentNode(); break; @@ -176,14 +183,14 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::ATTRIBUTE_NAME: switch (aState) { - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME: - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE: - EndSpanOrA(); // NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME + case nsHtml5Tokenizer::AFTER_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_VALUE: + EndSpanOrA(); // nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME break; - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: - EndSpanOrA(); // NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: + EndSpanOrA(); // nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME StartSpan(); // for highlighting the slash mSlash = CurrentNode(); break; @@ -192,14 +199,14 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_VALUE: switch (aState) { - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED: + case nsHtml5Tokenizer::ATTRIBUTE_VALUE_DOUBLE_QUOTED: + case nsHtml5Tokenizer::ATTRIBUTE_VALUE_SINGLE_QUOTED: FlushCurrent(); StartA(); break; - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED: + case nsHtml5Tokenizer::ATTRIBUTE_VALUE_UNQUOTED: StartA(); break; default: @@ -207,13 +214,13 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED: + case nsHtml5Tokenizer::ATTRIBUTE_VALUE_DOUBLE_QUOTED: + case nsHtml5Tokenizer::ATTRIBUTE_VALUE_SINGLE_QUOTED: switch (aState) { - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED: + case nsHtml5Tokenizer::AFTER_ATTRIBUTE_VALUE_QUOTED: EndSpanOrA(); break; - case NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE: + case nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE: StartSpan(); StartSpan(); // for ampersand itself mAmpersand = CurrentNode(); @@ -223,11 +230,11 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED: + case nsHtml5Tokenizer::AFTER_ATTRIBUTE_VALUE_QUOTED: switch (aState) { - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME: break; - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: StartSpan(); // for highlighting the slash mSlash = CurrentNode(); break; @@ -236,22 +243,22 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: EndSpanOrA(); // end the slash highlight switch (aState) { - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME: break; default: FinishTag(); break; } break; - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED: + case nsHtml5Tokenizer::ATTRIBUTE_VALUE_UNQUOTED: switch (aState) { - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME: EndSpanOrA(); break; - case NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE: + case nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE: StartSpan(); StartSpan(); // for ampersand itself mAmpersand = CurrentNode(); @@ -261,15 +268,15 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::AFTER_ATTRIBUTE_NAME: switch (aState) { - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: StartSpan(); // for highlighting the slash mSlash = CurrentNode(); break; - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_VALUE: break; - case NS_HTML5TOKENIZER_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::ATTRIBUTE_NAME: StartSpan(sAttributeName); break; default: @@ -279,30 +286,30 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; // most comment states are omitted, because they don't matter to // highlighting - case NS_HTML5TOKENIZER_COMMENT_START: - case NS_HTML5TOKENIZER_COMMENT_END: - case NS_HTML5TOKENIZER_COMMENT_END_BANG: - case NS_HTML5TOKENIZER_COMMENT_START_DASH: - case NS_HTML5TOKENIZER_BOGUS_COMMENT: - case NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN: - if (aState == NS_HTML5TOKENIZER_DATA) { + case nsHtml5Tokenizer::COMMENT_START: + case nsHtml5Tokenizer::COMMENT_END: + case nsHtml5Tokenizer::COMMENT_END_BANG: + case nsHtml5Tokenizer::COMMENT_START_DASH: + case nsHtml5Tokenizer::BOGUS_COMMENT: + case nsHtml5Tokenizer::BOGUS_COMMENT_HYPHEN: + if (aState == nsHtml5Tokenizer::DATA) { AddClass(sComment); FinishTag(); } break; // most cdata states are omitted, because they don't matter to // highlighting - case NS_HTML5TOKENIZER_CDATA_RSQB_RSQB: - if (aState == NS_HTML5TOKENIZER_DATA) { + case nsHtml5Tokenizer::CDATA_RSQB_RSQB: + if (aState == nsHtml5Tokenizer::DATA) { AddClass(sCdata); FinishTag(); } break; - case NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE: + case nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE: EndSpanOrA(); // the span for the ampersand switch (aState) { - case NS_HTML5TOKENIZER_CONSUME_NCR: - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_HILO_LOOKUP: + case nsHtml5Tokenizer::CONSUME_NCR: + case nsHtml5Tokenizer::CHARACTER_REFERENCE_HILO_LOOKUP: break; default: // not actually a character reference @@ -310,44 +317,44 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_HILO_LOOKUP: - if (aState == NS_HTML5TOKENIZER_CHARACTER_REFERENCE_TAIL) { + case nsHtml5Tokenizer::CHARACTER_REFERENCE_HILO_LOOKUP: + if (aState == nsHtml5Tokenizer::CHARACTER_REFERENCE_TAIL) { break; } // not actually a character reference EndSpanOrA(); break; - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_TAIL: + case nsHtml5Tokenizer::CHARACTER_REFERENCE_TAIL: if (!aReconsume) { FlushCurrent(); } EndSpanOrA(); break; - case NS_HTML5TOKENIZER_DECIMAL_NRC_LOOP: - case NS_HTML5TOKENIZER_HEX_NCR_LOOP: + case nsHtml5Tokenizer::DECIMAL_NRC_LOOP: + case nsHtml5Tokenizer::HEX_NCR_LOOP: switch (aState) { - case NS_HTML5TOKENIZER_HANDLE_NCR_VALUE: + case nsHtml5Tokenizer::HANDLE_NCR_VALUE: AddClass(sEntity); FlushCurrent(); break; - case NS_HTML5TOKENIZER_HANDLE_NCR_VALUE_RECONSUME: + case nsHtml5Tokenizer::HANDLE_NCR_VALUE_RECONSUME: AddClass(sEntity); break; } EndSpanOrA(); break; - case NS_HTML5TOKENIZER_CLOSE_TAG_OPEN: + case nsHtml5Tokenizer::CLOSE_TAG_OPEN: switch (aState) { - case NS_HTML5TOKENIZER_DATA: + case nsHtml5Tokenizer::DATA: FinishTag(); break; - case NS_HTML5TOKENIZER_TAG_NAME: + case nsHtml5Tokenizer::TAG_NAME: StartSpan(sEndTag); break; } break; - case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN: - if (aState == NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME) { + case nsHtml5Tokenizer::RAWTEXT_RCDATA_LESS_THAN_SIGN: + if (aState == nsHtml5Tokenizer::NON_DATA_END_TAG_NAME) { FlushCurrent(); StartSpan(); // don't know if it is "end-tag" yet :-( break; @@ -355,19 +362,19 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) EndSpanOrA(); StartCharacters(); break; - case NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME: + case nsHtml5Tokenizer::NON_DATA_END_TAG_NAME: switch (aState) { - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: + case nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME: AddClass(sEndTag); EndSpanOrA(); break; - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: + case nsHtml5Tokenizer::SELF_CLOSING_START_TAG: AddClass(sEndTag); EndSpanOrA(); StartSpan(); // for highlighting the slash mSlash = CurrentNode(); break; - case NS_HTML5TOKENIZER_DATA: // yes, as a result of emitting the token + case nsHtml5Tokenizer::DATA: // yes, as a result of emitting the token AddClass(sEndTag); FinishTag(); break; @@ -376,47 +383,47 @@ nsHtml5Highlighter::Transition(int32_t aState, bool aReconsume, int32_t aPos) break; } break; - case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: - if (aState == NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME) { + case nsHtml5Tokenizer::SCRIPT_DATA_LESS_THAN_SIGN: + case nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: + if (aState == nsHtml5Tokenizer::NON_DATA_END_TAG_NAME) { FlushCurrent(); StartSpan(); // don't know if it is "end-tag" yet :-( break; } FinishTag(); break; - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH: - if (aState == NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN) { + case nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_DASH_DASH: + case nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED: + case nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_DASH: + if (aState == nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN) { EndCharactersAndStartMarkupRun(); } break; // Lots of double escape states omitted, because they don't highlight. // Likewise, only doctype states that can emit the doctype are of // interest. Otherwise, the transition out of bogus comment deals. - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER: - case NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER: - case NS_HTML5TOKENIZER_BOGUS_DOCTYPE: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: - if (aState == NS_HTML5TOKENIZER_DATA) { + case nsHtml5Tokenizer::BEFORE_DOCTYPE_NAME: + case nsHtml5Tokenizer::DOCTYPE_NAME: + case nsHtml5Tokenizer::AFTER_DOCTYPE_NAME: + case nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_KEYWORD: + case nsHtml5Tokenizer::BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: + case nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: + case nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_IDENTIFIER: + case nsHtml5Tokenizer::BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: + case nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: + case nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_IDENTIFIER: + case nsHtml5Tokenizer::BOGUS_DOCTYPE: + case nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_KEYWORD: + case nsHtml5Tokenizer::BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: + case nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: + case nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: + if (aState == nsHtml5Tokenizer::DATA) { AddClass(sDoctype); FinishTag(); } break; - case NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION_QUESTION_MARK: - if (aState == NS_HTML5TOKENIZER_DATA) { + case nsHtml5Tokenizer::PROCESSING_INSTRUCTION_QUESTION_MARK: + if (aState == nsHtml5Tokenizer::DATA) { FinishTag(); } break; @@ -431,35 +438,35 @@ void nsHtml5Highlighter::End() { switch (mState) { - case NS_HTML5TOKENIZER_COMMENT_END: - case NS_HTML5TOKENIZER_COMMENT_END_BANG: - case NS_HTML5TOKENIZER_COMMENT_START_DASH: - case NS_HTML5TOKENIZER_BOGUS_COMMENT: - case NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN: + case nsHtml5Tokenizer::COMMENT_END: + case nsHtml5Tokenizer::COMMENT_END_BANG: + case nsHtml5Tokenizer::COMMENT_START_DASH: + case nsHtml5Tokenizer::BOGUS_COMMENT: + case nsHtml5Tokenizer::BOGUS_COMMENT_HYPHEN: AddClass(sComment); break; - case NS_HTML5TOKENIZER_CDATA_RSQB_RSQB: + case nsHtml5Tokenizer::CDATA_RSQB_RSQB: AddClass(sCdata); break; - case NS_HTML5TOKENIZER_DECIMAL_NRC_LOOP: - case NS_HTML5TOKENIZER_HEX_NCR_LOOP: + case nsHtml5Tokenizer::DECIMAL_NRC_LOOP: + case nsHtml5Tokenizer::HEX_NCR_LOOP: // XXX need tokenizer help here break; - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER: - case NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER: - case NS_HTML5TOKENIZER_BOGUS_DOCTYPE: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: + case nsHtml5Tokenizer::BEFORE_DOCTYPE_NAME: + case nsHtml5Tokenizer::DOCTYPE_NAME: + case nsHtml5Tokenizer::AFTER_DOCTYPE_NAME: + case nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_KEYWORD: + case nsHtml5Tokenizer::BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: + case nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: + case nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_IDENTIFIER: + case nsHtml5Tokenizer::BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: + case nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: + case nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_IDENTIFIER: + case nsHtml5Tokenizer::BOGUS_DOCTYPE: + case nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_KEYWORD: + case nsHtml5Tokenizer::BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: + case nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: + case nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: AddClass(sDoctype); break; default: @@ -492,7 +499,7 @@ void nsHtml5Highlighter::StartSpan() { FlushChars(); - Push(nsGkAtoms::span, nullptr); + Push(nsGkAtoms::span, nullptr, NS_NewHTMLSpanElement); ++mInlinesOpen; } @@ -516,7 +523,7 @@ nsHtml5Highlighter::StartCharacters() { NS_PRECONDITION(!mInCharacters, "Already in characters!"); FlushChars(); - Push(nsGkAtoms::span, nullptr); + Push(nsGkAtoms::span, nullptr, NS_NewHTMLSpanElement); mCurrentRun = CurrentNode(); mInCharacters = true; } @@ -537,7 +544,7 @@ void nsHtml5Highlighter::StartA() { FlushChars(); - Push(nsGkAtoms::a, nullptr); + Push(nsGkAtoms::a, nullptr, NS_NewHTMLAnchorElement); AddClass(sAttributeValue); ++mInlinesOpen; } @@ -579,7 +586,7 @@ nsHtml5Highlighter::FlushChars() mCStart = i; } ++mLineNumber; - Push(nsGkAtoms::span, nullptr); + Push(nsGkAtoms::span, nullptr, NS_NewHTMLSpanElement); nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement(); NS_ASSERTION(treeOp, "Tree op allocation failed."); treeOp->InitAddLineNumberId(CurrentNode(), mLineNumber); @@ -656,16 +663,20 @@ nsHtml5Highlighter::AllocateContentHandle() nsIContent** nsHtml5Highlighter::CreateElement(nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes, - nsIContent** aIntendedParent) + nsIContent** aIntendedParent, + mozilla::dom::HTMLContentCreatorFunction aCreator) { NS_PRECONDITION(aName, "Got null name."); + nsHtml5ContentCreatorFunction creator; + creator.html = aCreator; nsIContent** content = AllocateContentHandle(); mOpQueue.AppendElement()->Init(kNameSpaceID_XHTML, aName, aAttributes, content, aIntendedParent, - true); + true, + creator); return content; } @@ -678,10 +689,13 @@ nsHtml5Highlighter::CurrentNode() void nsHtml5Highlighter::Push(nsIAtom* aName, - nsHtml5HtmlAttributes* aAttributes) + nsHtml5HtmlAttributes* aAttributes, + mozilla::dom::HTMLContentCreatorFunction aCreator) { NS_PRECONDITION(mStack.Length() >= 1, "Pushing without root."); - nsIContent** elt = CreateElement(aName, aAttributes, CurrentNode()); // Don't inline below! + nsIContent** elt = CreateElement(aName, aAttributes, + CurrentNode(), + aCreator); // Don't inline below! mOpQueue.AppendElement()->Init(eTreeOpAppend, elt, CurrentNode()); mStack.AppendElement(elt); } diff --git a/parser/html/nsHtml5Highlighter.h b/parser/html/nsHtml5Highlighter.h index 366f11582..c37b703b8 100644 --- a/parser/html/nsHtml5Highlighter.h +++ b/parser/html/nsHtml5Highlighter.h @@ -227,11 +227,13 @@ class nsHtml5Highlighter * @param aAttributes the attribute holder (ownership will be taken) or * nullptr for no attributes * @param aIntendedParent the intended parent node for the created element + * @param aCreator the content creator function * @return the handle for the element that will be created */ nsIContent** CreateElement(nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes, - nsIContent** aIntendedParent); + nsIContent** aIntendedParent, + mozilla::dom::HTMLContentCreatorFunction aCreator); /** * Gets the handle for the current node. May be called only after the @@ -247,8 +249,11 @@ class nsHtml5Highlighter * @param aName the name of the element * @param aAttributes the attribute holder (ownership will be taken) or * nullptr for no attributes + * @param aCreator the content creator function */ - void Push(nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes); + void Push(nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + mozilla::dom::HTMLContentCreatorFunction aCreator); /** * Pops the current node off the stack. diff --git a/parser/html/nsHtml5HtmlAttributes.cpp b/parser/html/nsHtml5HtmlAttributes.cpp index 1460b5ca0..d8f59d22c 100644 --- a/parser/html/nsHtml5HtmlAttributes.cpp +++ b/parser/html/nsHtml5HtmlAttributes.cpp @@ -23,11 +23,6 @@ * DEALINGS IN THE SOFTWARE. */ -/* - * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT. - * Please edit HtmlAttributes.java instead and regenerate. - */ - #define nsHtml5HtmlAttributes_cpp__ #include "nsIAtom.h" @@ -59,12 +54,8 @@ nsHtml5HtmlAttributes* nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES = nullptr; -nsHtml5HtmlAttributes::nsHtml5HtmlAttributes(int32_t mode) - : mode(mode), - length(0), - names(jArray<nsHtml5AttributeName*,int32_t>::newJArray(8)), - values(jArray<nsHtml5String,int32_t>::newJArray(8)), - lines(jArray<int32_t,int32_t>::newJArray(8)) +nsHtml5HtmlAttributes::nsHtml5HtmlAttributes(int32_t aMode) + : mMode(aMode) { MOZ_COUNT_CTOR(nsHtml5HtmlAttributes); } @@ -76,11 +67,13 @@ nsHtml5HtmlAttributes::~nsHtml5HtmlAttributes() clear(0); } -int32_t -nsHtml5HtmlAttributes::getIndex(nsHtml5AttributeName* name) +int32_t +nsHtml5HtmlAttributes::getIndex(nsHtml5AttributeName* aName) { - for (int32_t i = 0; i < length; i++) { - if (names[i] == name) { + for (size_t i = 0; i < mStorage.Length(); i++) { + if (mStorage[i].GetLocal(nsHtml5AttributeName::HTML) == + aName->getLocal(nsHtml5AttributeName::HTML)) { + // It's release asserted elsewhere that i can't be too large. return i; } } @@ -88,9 +81,9 @@ nsHtml5HtmlAttributes::getIndex(nsHtml5AttributeName* name) } nsHtml5String -nsHtml5HtmlAttributes::getValue(nsHtml5AttributeName* name) +nsHtml5HtmlAttributes::getValue(nsHtml5AttributeName* aName) { - int32_t index = getIndex(name); + int32_t index = getIndex(aName); if (index == -1) { return nullptr; } else { @@ -101,106 +94,98 @@ nsHtml5HtmlAttributes::getValue(nsHtml5AttributeName* name) int32_t nsHtml5HtmlAttributes::getLength() { - return length; + return mStorage.Length(); } -nsIAtom* -nsHtml5HtmlAttributes::getLocalNameNoBoundsCheck(int32_t index) +nsIAtom* +nsHtml5HtmlAttributes::getLocalNameNoBoundsCheck(int32_t aIndex) { - MOZ_ASSERT(index < length && index >= 0, "Index out of bounds"); - return names[index]->getLocal(mode); + MOZ_ASSERT(aIndex < int32_t(mStorage.Length()) && aIndex >= 0, + "Index out of bounds"); + return mStorage[aIndex].GetLocal(mMode); } -int32_t -nsHtml5HtmlAttributes::getURINoBoundsCheck(int32_t index) +int32_t +nsHtml5HtmlAttributes::getURINoBoundsCheck(int32_t aIndex) { - MOZ_ASSERT(index < length && index >= 0, "Index out of bounds"); - return names[index]->getUri(mode); + MOZ_ASSERT(aIndex < int32_t(mStorage.Length()) && aIndex >= 0, + "Index out of bounds"); + return mStorage[aIndex].GetUri(mMode); } -nsIAtom* -nsHtml5HtmlAttributes::getPrefixNoBoundsCheck(int32_t index) +nsIAtom* +nsHtml5HtmlAttributes::getPrefixNoBoundsCheck(int32_t aIndex) { - MOZ_ASSERT(index < length && index >= 0, "Index out of bounds"); - return names[index]->getPrefix(mode); + MOZ_ASSERT(aIndex < int32_t(mStorage.Length()) && aIndex >= 0, + "Index out of bounds"); + return mStorage[aIndex].GetPrefix(mMode); } nsHtml5String -nsHtml5HtmlAttributes::getValueNoBoundsCheck(int32_t index) +nsHtml5HtmlAttributes::getValueNoBoundsCheck(int32_t aIndex) { - MOZ_ASSERT(index < length && index >= 0, "Index out of bounds"); - return values[index]; + MOZ_ASSERT(aIndex < int32_t(mStorage.Length()) && aIndex >= 0, + "Index out of bounds"); + return mStorage[aIndex].GetValue(); } -nsHtml5AttributeName* -nsHtml5HtmlAttributes::getAttributeNameNoBoundsCheck(int32_t index) +int32_t +nsHtml5HtmlAttributes::getLineNoBoundsCheck(int32_t aIndex) { - MOZ_ASSERT(index < length && index >= 0, "Index out of bounds"); - return names[index]; + MOZ_ASSERT(aIndex < int32_t(mStorage.Length()) && aIndex >= 0, + "Index out of bounds"); + return mStorage[aIndex].GetLine(); } -int32_t -nsHtml5HtmlAttributes::getLineNoBoundsCheck(int32_t index) +void +nsHtml5HtmlAttributes::addAttribute(nsHtml5AttributeName* aName, + nsHtml5String aValue, + int32_t aLine) { - MOZ_ASSERT(index < length && index >= 0, "Index out of bounds"); - return lines[index]; + mStorage.AppendElement(nsHtml5AttributeEntry(aName, aValue, aLine)); + MOZ_RELEASE_ASSERT(mStorage.Length() <= INT32_MAX, + "Can't handle this many attributes."); } -void -nsHtml5HtmlAttributes::addAttribute(nsHtml5AttributeName* name, nsHtml5String value, int32_t line) +// Isindex-only, so doesn't need to deal with SVG and MathML +void +nsHtml5HtmlAttributes::AddAttributeWithLocal(nsIAtom* aName, + nsHtml5String aValue, + int32_t aLine) { - if (names.length == length) { - int32_t newLen = length << 1; - jArray<nsHtml5AttributeName*,int32_t> newNames = jArray<nsHtml5AttributeName*,int32_t>::newJArray(newLen); - nsHtml5ArrayCopy::arraycopy(names, newNames, names.length); - names = newNames; - jArray<nsHtml5String,int32_t> newValues = jArray<nsHtml5String,int32_t>::newJArray(newLen); - nsHtml5ArrayCopy::arraycopy(values, newValues, values.length); - values = newValues; - jArray<int32_t,int32_t> newLines = jArray<int32_t,int32_t>::newJArray(newLen); - nsHtml5ArrayCopy::arraycopy(lines, newLines, lines.length); - lines = newLines; - } - names[length] = name; - values[length] = value; - lines[length] = line; - length++; + mStorage.AppendElement(nsHtml5AttributeEntry(aName, aValue, aLine)); + MOZ_RELEASE_ASSERT(mStorage.Length() <= INT32_MAX, + "Can't handle this many attributes."); } -void -nsHtml5HtmlAttributes::clear(int32_t m) +void +nsHtml5HtmlAttributes::clear(int32_t aMode) { - for (int32_t i = 0; i < length; i++) { - names[i]->release(); - names[i] = nullptr; - values[i].Release(); - values[i] = nullptr; + for (nsHtml5AttributeEntry& entry : mStorage) { + entry.ReleaseValue(); } - length = 0; - mode = m; + mStorage.TruncateLength(0); + mMode = aMode; } -void -nsHtml5HtmlAttributes::releaseValue(int32_t i) +void +nsHtml5HtmlAttributes::releaseValue(int32_t aIndex) { - values[i].Release(); + mStorage[aIndex].ReleaseValue(); } void nsHtml5HtmlAttributes::clearWithoutReleasingContents() { - for (int32_t i = 0; i < length; i++) { - names[i] = nullptr; - values[i] = nullptr; - } - length = 0; + mStorage.TruncateLength(0); } -bool -nsHtml5HtmlAttributes::contains(nsHtml5AttributeName* name) +bool +nsHtml5HtmlAttributes::contains(nsHtml5AttributeName* aName) { - for (int32_t i = 0; i < length; i++) { - if (name->equalsAnother(names[i])) { + for (size_t i = 0; i < mStorage.Length(); i++) { + if (mStorage[i].GetLocal(nsHtml5AttributeName::HTML) == + aName->getLocal(nsHtml5AttributeName::HTML)) { return true; } } @@ -210,43 +195,44 @@ nsHtml5HtmlAttributes::contains(nsHtml5AttributeName* name) void nsHtml5HtmlAttributes::adjustForMath() { - mode = NS_HTML5ATTRIBUTE_NAME_MATHML; + mMode = nsHtml5AttributeName::MATHML; } void nsHtml5HtmlAttributes::adjustForSvg() { - mode = NS_HTML5ATTRIBUTE_NAME_SVG; + mMode = nsHtml5AttributeName::SVG; } -nsHtml5HtmlAttributes* -nsHtml5HtmlAttributes::cloneAttributes(nsHtml5AtomTable* interner) +nsHtml5HtmlAttributes* +nsHtml5HtmlAttributes::cloneAttributes(nsHtml5AtomTable* aInterner) { - MOZ_ASSERT((!length) || !mode || mode == 3); - nsHtml5HtmlAttributes* clone = new nsHtml5HtmlAttributes(0); - for (int32_t i = 0; i < length; i++) { - clone->addAttribute(names[i]->cloneAttributeName(interner), nsHtml5Portability::newStringFromString(values[i]), lines[i]); + MOZ_ASSERT(mStorage.IsEmpty() || !mMode); + nsHtml5HtmlAttributes* clone = + new nsHtml5HtmlAttributes(nsHtml5AttributeName::HTML); + for (nsHtml5AttributeEntry& entry : mStorage) { + clone->AddEntry(entry.Clone(aInterner)); } return clone; } -bool -nsHtml5HtmlAttributes::equalsAnother(nsHtml5HtmlAttributes* other) +bool +nsHtml5HtmlAttributes::equalsAnother(nsHtml5HtmlAttributes* aOther) { - MOZ_ASSERT(!mode || mode == 3, "Trying to compare attributes in foreign content."); - int32_t otherLength = other->getLength(); - if (length != otherLength) { + MOZ_ASSERT(!mMode, "Trying to compare attributes in foreign content."); + if (mStorage.Length() != aOther->mStorage.Length()) { return false; } - for (int32_t i = 0; i < length; i++) { + for (nsHtml5AttributeEntry& entry : mStorage) { bool found = false; - nsIAtom* ownLocal = names[i]->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML); - for (int32_t j = 0; j < otherLength; j++) { - if (ownLocal == other->names[j]->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML)) { + nsIAtom* ownLocal = entry.GetLocal(nsHtml5AttributeName::HTML); + for (nsHtml5AttributeEntry& otherEntry : aOther->mStorage) { + if (ownLocal == otherEntry.GetLocal(nsHtml5AttributeName::HTML)) { found = true; - if (!nsHtml5Portability::stringEqualsString(values[i], other->values[j])) { + if (!entry.GetValue().Equals(otherEntry.GetValue())) { return false; } + break; } } if (!found) { @@ -257,9 +243,15 @@ nsHtml5HtmlAttributes::equalsAnother(nsHtml5HtmlAttributes* other) } void +nsHtml5HtmlAttributes::AddEntry(nsHtml5AttributeEntry&& aEntry) +{ + mStorage.AppendElement(aEntry); +} + +void nsHtml5HtmlAttributes::initializeStatics() { - EMPTY_ATTRIBUTES = new nsHtml5HtmlAttributes(NS_HTML5ATTRIBUTE_NAME_HTML); + EMPTY_ATTRIBUTES = new nsHtml5HtmlAttributes(nsHtml5AttributeName::HTML); } void diff --git a/parser/html/nsHtml5HtmlAttributes.h b/parser/html/nsHtml5HtmlAttributes.h index f97e80c8a..8dde05771 100644 --- a/parser/html/nsHtml5HtmlAttributes.h +++ b/parser/html/nsHtml5HtmlAttributes.h @@ -23,11 +23,6 @@ * DEALINGS IN THE SOFTWARE. */ -/* - * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT. - * Please edit HtmlAttributes.java instead and regenerate. - */ - #ifndef nsHtml5HtmlAttributes_h #define nsHtml5HtmlAttributes_h @@ -45,6 +40,8 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsTArray.h" +#include "nsHtml5AttributeEntry.h" class nsHtml5StreamParser; @@ -63,32 +60,39 @@ class nsHtml5HtmlAttributes public: static nsHtml5HtmlAttributes* EMPTY_ATTRIBUTES; private: - int32_t mode; - int32_t length; - autoJArray<nsHtml5AttributeName*,int32_t> names; - autoJArray<nsHtml5String,int32_t> values; - autoJArray<int32_t,int32_t> lines; + AutoTArray<nsHtml5AttributeEntry, 5> mStorage; + int32_t mMode; + void AddEntry(nsHtml5AttributeEntry&& aEntry); + public: - explicit nsHtml5HtmlAttributes(int32_t mode); + explicit nsHtml5HtmlAttributes(int32_t aMode); ~nsHtml5HtmlAttributes(); - int32_t getIndex(nsHtml5AttributeName* name); - nsHtml5String getValue(nsHtml5AttributeName* name); + + // Remove getIndex when removing isindex support + int32_t getIndex(nsHtml5AttributeName* aName); + + nsHtml5String getValue(nsHtml5AttributeName* aName); int32_t getLength(); - nsIAtom* getLocalNameNoBoundsCheck(int32_t index); - int32_t getURINoBoundsCheck(int32_t index); - nsIAtom* getPrefixNoBoundsCheck(int32_t index); - nsHtml5String getValueNoBoundsCheck(int32_t index); - nsHtml5AttributeName* getAttributeNameNoBoundsCheck(int32_t index); - int32_t getLineNoBoundsCheck(int32_t index); - void addAttribute(nsHtml5AttributeName* name, nsHtml5String value, int32_t line); - void clear(int32_t m); - void releaseValue(int32_t i); + nsIAtom* getLocalNameNoBoundsCheck(int32_t aIndex); + int32_t getURINoBoundsCheck(int32_t aIndex); + nsIAtom* getPrefixNoBoundsCheck(int32_t aIndex); + nsHtml5String getValueNoBoundsCheck(int32_t aIndex); + nsHtml5AttributeName* getAttributeNameNoBoundsCheck(int32_t aIndex); + int32_t getLineNoBoundsCheck(int32_t aIndex); + void addAttribute(nsHtml5AttributeName* aName, + nsHtml5String aValue, + int32_t aLine); + void AddAttributeWithLocal(nsIAtom* aName, + nsHtml5String aValue, + int32_t aLine); + void clear(int32_t aMode); + void releaseValue(int32_t aIndex); void clearWithoutReleasingContents(); - bool contains(nsHtml5AttributeName* name); + bool contains(nsHtml5AttributeName* aName); void adjustForMath(); void adjustForSvg(); - nsHtml5HtmlAttributes* cloneAttributes(nsHtml5AtomTable* interner); - bool equalsAnother(nsHtml5HtmlAttributes* other); + nsHtml5HtmlAttributes* cloneAttributes(nsHtml5AtomTable* aInterner); + bool equalsAnother(nsHtml5HtmlAttributes* aOther); static void initializeStatics(); static void releaseStatics(); }; diff --git a/parser/html/nsHtml5MetaScanner.cpp b/parser/html/nsHtml5MetaScanner.cpp index f22b77f0d..07d81c1a1 100644 --- a/parser/html/nsHtml5MetaScanner.cpp +++ b/parser/html/nsHtml5MetaScanner.cpp @@ -44,12 +44,13 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" -#include "nsHtml5Tokenizer.h" -#include "nsHtml5TreeBuilder.h" #include "nsHtml5AttributeName.h" #include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" +#include "nsHtml5Tokenizer.h" +#include "nsHtml5TreeBuilder.h" #include "nsHtml5StackNode.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5StateSnapshot.h" @@ -68,17 +69,17 @@ staticJArray<char16_t,int32_t> nsHtml5MetaScanner::CONTENT_TYPE = { CONTENT_TYPE nsHtml5MetaScanner::nsHtml5MetaScanner(nsHtml5TreeBuilder* tb) : readable(nullptr), - metaState(NS_HTML5META_SCANNER_NO), + metaState(NO), contentIndex(INT32_MAX), charsetIndex(INT32_MAX), httpEquivIndex(INT32_MAX), contentTypeIndex(INT32_MAX), - stateSave(NS_HTML5META_SCANNER_DATA), + stateSave(DATA), strBufLen(0), strBuf(jArray<char16_t,int32_t>::newJArray(36)), content(nullptr), charset(nullptr), - httpEquivState(NS_HTML5META_SCANNER_HTTP_EQUIV_NOT_SEEN), + httpEquivState(HTTP_EQUIV_NOT_SEEN), treeBuilder(tb) { MOZ_COUNT_CTOR(nsHtml5MetaScanner); @@ -99,7 +100,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) bool reconsume = false; stateloop: for (; ; ) { switch(state) { - case NS_HTML5META_SCANNER_DATA: { + case DATA: { for (; ; ) { if (reconsume) { reconsume = false; @@ -111,7 +112,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '<': { - state = NS_HTML5META_SCANNER_TAG_OPEN; + state = nsHtml5MetaScanner::TAG_OPEN; NS_HTML5_BREAK(dataloop); } default: { @@ -121,7 +122,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } dataloop_end: ; } - case NS_HTML5META_SCANNER_TAG_OPEN: { + case TAG_OPEN: { for (; ; ) { c = read(); switch(c) { @@ -130,30 +131,30 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } case 'm': case 'M': { - metaState = NS_HTML5META_SCANNER_M; - state = NS_HTML5META_SCANNER_TAG_NAME; + metaState = M; + state = nsHtml5MetaScanner::TAG_NAME; NS_HTML5_BREAK(tagopenloop); } case '!': { - state = NS_HTML5META_SCANNER_MARKUP_DECLARATION_OPEN; + state = nsHtml5MetaScanner::MARKUP_DECLARATION_OPEN; NS_HTML5_CONTINUE(stateloop); } case '\?': case '/': { - state = NS_HTML5META_SCANNER_SCAN_UNTIL_GT; + state = nsHtml5MetaScanner::SCAN_UNTIL_GT; NS_HTML5_CONTINUE(stateloop); } case '>': { - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) { - metaState = NS_HTML5META_SCANNER_NO; - state = NS_HTML5META_SCANNER_TAG_NAME; + metaState = NO; + state = nsHtml5MetaScanner::TAG_NAME; NS_HTML5_BREAK(tagopenloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; reconsume = true; NS_HTML5_CONTINUE(stateloop); } @@ -161,7 +162,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } tagopenloop_end: ; } - case NS_HTML5META_SCANNER_TAG_NAME: { + case TAG_NAME: { for (; ; ) { c = read(); switch(c) { @@ -172,53 +173,53 @@ nsHtml5MetaScanner::stateLoop(int32_t state) case '\t': case '\n': case '\f': { - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_NAME; NS_HTML5_BREAK(tagnameloop); } case '/': { - state = NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG; + state = nsHtml5MetaScanner::SELF_CLOSING_START_TAG; NS_HTML5_CONTINUE(stateloop); } case '>': { - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } case 'e': case 'E': { - if (metaState == NS_HTML5META_SCANNER_M) { - metaState = NS_HTML5META_SCANNER_E; + if (metaState == M) { + metaState = E; } else { - metaState = NS_HTML5META_SCANNER_NO; + metaState = NO; } continue; } case 't': case 'T': { - if (metaState == NS_HTML5META_SCANNER_E) { - metaState = NS_HTML5META_SCANNER_T; + if (metaState == E) { + metaState = T; } else { - metaState = NS_HTML5META_SCANNER_NO; + metaState = NO; } continue; } case 'a': case 'A': { - if (metaState == NS_HTML5META_SCANNER_T) { - metaState = NS_HTML5META_SCANNER_A; + if (metaState == T) { + metaState = A; } else { - metaState = NS_HTML5META_SCANNER_NO; + metaState = NO; } continue; } default: { - metaState = NS_HTML5META_SCANNER_NO; + metaState = NO; continue; } } } tagnameloop_end: ; } - case NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME: { + case BEFORE_ATTRIBUTE_NAME: { for (; ; ) { if (reconsume) { reconsume = false; @@ -236,14 +237,14 @@ nsHtml5MetaScanner::stateLoop(int32_t state) continue; } case '/': { - state = NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG; + state = nsHtml5MetaScanner::SELF_CLOSING_START_TAG; NS_HTML5_CONTINUE(stateloop); } case '>': { if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = DATA; NS_HTML5_CONTINUE(stateloop); } case 'c': @@ -252,7 +253,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) charsetIndex = 0; httpEquivIndex = INT32_MAX; contentTypeIndex = INT32_MAX; - state = NS_HTML5META_SCANNER_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::ATTRIBUTE_NAME; NS_HTML5_BREAK(beforeattributenameloop); } case 'h': @@ -261,7 +262,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) charsetIndex = INT32_MAX; httpEquivIndex = 0; contentTypeIndex = INT32_MAX; - state = NS_HTML5META_SCANNER_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::ATTRIBUTE_NAME; NS_HTML5_BREAK(beforeattributenameloop); } default: { @@ -269,14 +270,14 @@ nsHtml5MetaScanner::stateLoop(int32_t state) charsetIndex = INT32_MAX; httpEquivIndex = INT32_MAX; contentTypeIndex = INT32_MAX; - state = NS_HTML5META_SCANNER_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::ATTRIBUTE_NAME; NS_HTML5_BREAK(beforeattributenameloop); } } } beforeattributenameloop_end: ; } - case NS_HTML5META_SCANNER_ATTRIBUTE_NAME: { + case ATTRIBUTE_NAME: { for (; ; ) { c = read(); switch(c) { @@ -287,28 +288,28 @@ nsHtml5MetaScanner::stateLoop(int32_t state) case '\t': case '\n': case '\f': { - state = NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::AFTER_ATTRIBUTE_NAME; NS_HTML5_CONTINUE(stateloop); } case '/': { - state = NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG; + state = nsHtml5MetaScanner::SELF_CLOSING_START_TAG; NS_HTML5_CONTINUE(stateloop); } case '=': { strBufLen = 0; contentTypeIndex = 0; - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_VALUE; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_VALUE; NS_HTML5_BREAK(attributenameloop); } case '>': { if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { - if (metaState == NS_HTML5META_SCANNER_A) { + if (metaState == A) { if (c >= 'A' && c <= 'Z') { c += 0x20; } @@ -334,7 +335,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } attributenameloop_end: ; } - case NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_VALUE: { + case BEFORE_ATTRIBUTE_VALUE: { for (; ; ) { c = read(); switch(c) { @@ -348,30 +349,30 @@ nsHtml5MetaScanner::stateLoop(int32_t state) continue; } case '\"': { - state = NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_DOUBLE_QUOTED; + state = nsHtml5MetaScanner::ATTRIBUTE_VALUE_DOUBLE_QUOTED; NS_HTML5_BREAK(beforeattributevalueloop); } case '\'': { - state = NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_SINGLE_QUOTED; + state = nsHtml5MetaScanner::ATTRIBUTE_VALUE_SINGLE_QUOTED; NS_HTML5_CONTINUE(stateloop); } case '>': { if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { handleCharInAttributeValue(c); - state = NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_UNQUOTED; + state = nsHtml5MetaScanner::ATTRIBUTE_VALUE_UNQUOTED; NS_HTML5_CONTINUE(stateloop); } } } beforeattributevalueloop_end: ; } - case NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_DOUBLE_QUOTED: { + case ATTRIBUTE_VALUE_DOUBLE_QUOTED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -384,7 +385,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } case '\"': { handleAttributeValue(); - state = NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_VALUE_QUOTED; + state = nsHtml5MetaScanner::AFTER_ATTRIBUTE_VALUE_QUOTED; NS_HTML5_BREAK(attributevaluedoublequotedloop); } default: { @@ -395,7 +396,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } attributevaluedoublequotedloop_end: ; } - case NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_VALUE_QUOTED: { + case AFTER_ATTRIBUTE_VALUE_QUOTED: { for (; ; ) { c = read(); switch(c) { @@ -406,22 +407,22 @@ nsHtml5MetaScanner::stateLoop(int32_t state) case '\t': case '\n': case '\f': { - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_NAME; NS_HTML5_CONTINUE(stateloop); } case '/': { - state = NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG; + state = nsHtml5MetaScanner::SELF_CLOSING_START_TAG; NS_HTML5_BREAK(afterattributevaluequotedloop); } case '>': { if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_NAME; reconsume = true; NS_HTML5_CONTINUE(stateloop); } @@ -429,7 +430,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } afterattributevaluequotedloop_end: ; } - case NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG: { + case SELF_CLOSING_START_TAG: { c = read(); switch(c) { case -1: { @@ -439,17 +440,17 @@ nsHtml5MetaScanner::stateLoop(int32_t state) if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_NAME; reconsume = true; NS_HTML5_CONTINUE(stateloop); } } } - case NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_UNQUOTED: { + case ATTRIBUTE_VALUE_UNQUOTED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -465,7 +466,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) case '\n': case '\f': { handleAttributeValue(); - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_NAME; NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -473,7 +474,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { @@ -483,7 +484,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } } } - case NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_NAME: { + case AFTER_ATTRIBUTE_NAME: { for (; ; ) { c = read(); switch(c) { @@ -498,13 +499,13 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } case '/': { handleAttributeValue(); - state = NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG; + state = nsHtml5MetaScanner::SELF_CLOSING_START_TAG; NS_HTML5_CONTINUE(stateloop); } case '=': { strBufLen = 0; contentTypeIndex = 0; - state = NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_VALUE; + state = nsHtml5MetaScanner::BEFORE_ATTRIBUTE_VALUE; NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -512,26 +513,26 @@ nsHtml5MetaScanner::stateLoop(int32_t state) if (handleTag()) { NS_HTML5_BREAK(stateloop); } - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } case 'c': case 'C': { contentIndex = 0; charsetIndex = 0; - state = NS_HTML5META_SCANNER_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::ATTRIBUTE_NAME; NS_HTML5_CONTINUE(stateloop); } default: { contentIndex = INT32_MAX; charsetIndex = INT32_MAX; - state = NS_HTML5META_SCANNER_ATTRIBUTE_NAME; + state = nsHtml5MetaScanner::ATTRIBUTE_NAME; NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5META_SCANNER_MARKUP_DECLARATION_OPEN: { + case MARKUP_DECLARATION_OPEN: { for (; ; ) { c = read(); switch(c) { @@ -539,11 +540,11 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '-': { - state = NS_HTML5META_SCANNER_MARKUP_DECLARATION_HYPHEN; + state = nsHtml5MetaScanner::MARKUP_DECLARATION_HYPHEN; NS_HTML5_BREAK(markupdeclarationopenloop); } default: { - state = NS_HTML5META_SCANNER_SCAN_UNTIL_GT; + state = nsHtml5MetaScanner::SCAN_UNTIL_GT; reconsume = true; NS_HTML5_CONTINUE(stateloop); } @@ -551,7 +552,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } markupdeclarationopenloop_end: ; } - case NS_HTML5META_SCANNER_MARKUP_DECLARATION_HYPHEN: { + case MARKUP_DECLARATION_HYPHEN: { for (; ; ) { c = read(); switch(c) { @@ -559,11 +560,11 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '-': { - state = NS_HTML5META_SCANNER_COMMENT_START; + state = nsHtml5MetaScanner::COMMENT_START; NS_HTML5_BREAK(markupdeclarationhyphenloop); } default: { - state = NS_HTML5META_SCANNER_SCAN_UNTIL_GT; + state = nsHtml5MetaScanner::SCAN_UNTIL_GT; reconsume = true; NS_HTML5_CONTINUE(stateloop); } @@ -571,7 +572,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } markupdeclarationhyphenloop_end: ; } - case NS_HTML5META_SCANNER_COMMENT_START: { + case COMMENT_START: { for (; ; ) { c = read(); switch(c) { @@ -579,22 +580,22 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '-': { - state = NS_HTML5META_SCANNER_COMMENT_START_DASH; + state = nsHtml5MetaScanner::COMMENT_START_DASH; NS_HTML5_CONTINUE(stateloop); } case '>': { - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { - state = NS_HTML5META_SCANNER_COMMENT; + state = nsHtml5MetaScanner::COMMENT; NS_HTML5_BREAK(commentstartloop); } } } commentstartloop_end: ; } - case NS_HTML5META_SCANNER_COMMENT: { + case COMMENT: { for (; ; ) { c = read(); switch(c) { @@ -602,7 +603,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '-': { - state = NS_HTML5META_SCANNER_COMMENT_END_DASH; + state = nsHtml5MetaScanner::COMMENT_END_DASH; NS_HTML5_BREAK(commentloop); } default: { @@ -612,7 +613,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } commentloop_end: ; } - case NS_HTML5META_SCANNER_COMMENT_END_DASH: { + case COMMENT_END_DASH: { for (; ; ) { c = read(); switch(c) { @@ -620,18 +621,18 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '-': { - state = NS_HTML5META_SCANNER_COMMENT_END; + state = nsHtml5MetaScanner::COMMENT_END; NS_HTML5_BREAK(commentenddashloop); } default: { - state = NS_HTML5META_SCANNER_COMMENT; + state = nsHtml5MetaScanner::COMMENT; NS_HTML5_CONTINUE(stateloop); } } } commentenddashloop_end: ; } - case NS_HTML5META_SCANNER_COMMENT_END: { + case COMMENT_END: { for (; ; ) { c = read(); switch(c) { @@ -639,40 +640,40 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '>': { - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } case '-': { continue; } default: { - state = NS_HTML5META_SCANNER_COMMENT; + state = nsHtml5MetaScanner::COMMENT; NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5META_SCANNER_COMMENT_START_DASH: { + case COMMENT_START_DASH: { c = read(); switch(c) { case -1: { NS_HTML5_BREAK(stateloop); } case '-': { - state = NS_HTML5META_SCANNER_COMMENT_END; + state = nsHtml5MetaScanner::COMMENT_END; NS_HTML5_CONTINUE(stateloop); } case '>': { - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { - state = NS_HTML5META_SCANNER_COMMENT; + state = nsHtml5MetaScanner::COMMENT; NS_HTML5_CONTINUE(stateloop); } } } - case NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_SINGLE_QUOTED: { + case ATTRIBUTE_VALUE_SINGLE_QUOTED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -685,7 +686,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } case '\'': { handleAttributeValue(); - state = NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_VALUE_QUOTED; + state = nsHtml5MetaScanner::AFTER_ATTRIBUTE_VALUE_QUOTED; NS_HTML5_CONTINUE(stateloop); } default: { @@ -695,7 +696,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) } } } - case NS_HTML5META_SCANNER_SCAN_UNTIL_GT: { + case SCAN_UNTIL_GT: { for (; ; ) { if (reconsume) { reconsume = false; @@ -707,7 +708,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) NS_HTML5_BREAK(stateloop); } case '>': { - state = NS_HTML5META_SCANNER_DATA; + state = nsHtml5MetaScanner::DATA; NS_HTML5_CONTINUE(stateloop); } default: { @@ -725,7 +726,7 @@ nsHtml5MetaScanner::stateLoop(int32_t state) void nsHtml5MetaScanner::handleCharInAttributeValue(int32_t c) { - if (metaState == NS_HTML5META_SCANNER_A) { + if (metaState == A) { if (contentIndex == CONTENT.length || charsetIndex == CHARSET.length) { addToBuffer(c); } else if (httpEquivIndex == HTTP_EQUIV.length) { @@ -752,7 +753,7 @@ nsHtml5MetaScanner::addToBuffer(int32_t c) void nsHtml5MetaScanner::handleAttributeValue() { - if (metaState != NS_HTML5META_SCANNER_A) { + if (metaState != A) { return; } if (contentIndex == CONTENT.length && !content) { @@ -763,8 +764,8 @@ nsHtml5MetaScanner::handleAttributeValue() charset = nsHtml5Portability::newStringFromBuffer(strBuf, 0, strBufLen, treeBuilder); return; } - if (httpEquivIndex == HTTP_EQUIV.length && httpEquivState == NS_HTML5META_SCANNER_HTTP_EQUIV_NOT_SEEN) { - httpEquivState = (contentTypeIndex == CONTENT_TYPE.length) ? NS_HTML5META_SCANNER_HTTP_EQUIV_CONTENT_TYPE : NS_HTML5META_SCANNER_HTTP_EQUIV_OTHER; + if (httpEquivIndex == HTTP_EQUIV.length && httpEquivState == HTTP_EQUIV_NOT_SEEN) { + httpEquivState = (contentTypeIndex == CONTENT_TYPE.length) ? HTTP_EQUIV_CONTENT_TYPE : HTTP_EQUIV_OTHER; return; } } @@ -777,7 +778,7 @@ nsHtml5MetaScanner::handleTag() content = nullptr; charset.Release(); charset = nullptr; - httpEquivState = NS_HTML5META_SCANNER_HTTP_EQUIV_NOT_SEEN; + httpEquivState = HTTP_EQUIV_NOT_SEEN; return stop; } @@ -787,7 +788,7 @@ nsHtml5MetaScanner::handleTagInner() if (!!charset && tryCharset(charset)) { return true; } - if (!!content && httpEquivState == NS_HTML5META_SCANNER_HTTP_EQUIV_CONTENT_TYPE) { + if (!!content && httpEquivState == HTTP_EQUIV_CONTENT_TYPE) { nsHtml5String extract = nsHtml5TreeBuilder::extractCharsetFromContent(content, treeBuilder); if (!extract) { return false; diff --git a/parser/html/nsHtml5MetaScanner.h b/parser/html/nsHtml5MetaScanner.h index 7fb950d2c..a25acd213 100644 --- a/parser/html/nsHtml5MetaScanner.h +++ b/parser/html/nsHtml5MetaScanner.h @@ -45,14 +45,15 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; -class nsHtml5Tokenizer; -class nsHtml5TreeBuilder; class nsHtml5AttributeName; class nsHtml5ElementName; -class nsHtml5HtmlAttributes; +class nsHtml5Tokenizer; +class nsHtml5TreeBuilder; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -65,6 +66,62 @@ class nsHtml5MetaScanner static staticJArray<char16_t,int32_t> CONTENT; static staticJArray<char16_t,int32_t> HTTP_EQUIV; static staticJArray<char16_t,int32_t> CONTENT_TYPE; + static const int32_t NO = 0; + + static const int32_t M = 1; + + static const int32_t E = 2; + + static const int32_t T = 3; + + static const int32_t A = 4; + + static const int32_t DATA = 0; + + static const int32_t TAG_OPEN = 1; + + static const int32_t SCAN_UNTIL_GT = 2; + + static const int32_t TAG_NAME = 3; + + static const int32_t BEFORE_ATTRIBUTE_NAME = 4; + + static const int32_t ATTRIBUTE_NAME = 5; + + static const int32_t AFTER_ATTRIBUTE_NAME = 6; + + static const int32_t BEFORE_ATTRIBUTE_VALUE = 7; + + static const int32_t ATTRIBUTE_VALUE_DOUBLE_QUOTED = 8; + + static const int32_t ATTRIBUTE_VALUE_SINGLE_QUOTED = 9; + + static const int32_t ATTRIBUTE_VALUE_UNQUOTED = 10; + + static const int32_t AFTER_ATTRIBUTE_VALUE_QUOTED = 11; + + static const int32_t MARKUP_DECLARATION_OPEN = 13; + + static const int32_t MARKUP_DECLARATION_HYPHEN = 14; + + static const int32_t COMMENT_START = 15; + + static const int32_t COMMENT_START_DASH = 16; + + static const int32_t COMMENT = 17; + + static const int32_t COMMENT_END_DASH = 18; + + static const int32_t COMMENT_END = 19; + + static const int32_t SELF_CLOSING_START_TAG = 20; + + static const int32_t HTTP_EQUIV_NOT_SEEN = 0; + + static const int32_t HTTP_EQUIV_CONTENT_TYPE = 1; + + static const int32_t HTTP_EQUIV_OTHER = 2; + protected: nsHtml5ByteReadable* readable; private: @@ -110,35 +167,5 @@ class nsHtml5MetaScanner #include "nsHtml5MetaScannerHSupplement.h" }; -#define NS_HTML5META_SCANNER_NO 0 -#define NS_HTML5META_SCANNER_M 1 -#define NS_HTML5META_SCANNER_E 2 -#define NS_HTML5META_SCANNER_T 3 -#define NS_HTML5META_SCANNER_A 4 -#define NS_HTML5META_SCANNER_DATA 0 -#define NS_HTML5META_SCANNER_TAG_OPEN 1 -#define NS_HTML5META_SCANNER_SCAN_UNTIL_GT 2 -#define NS_HTML5META_SCANNER_TAG_NAME 3 -#define NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_NAME 4 -#define NS_HTML5META_SCANNER_ATTRIBUTE_NAME 5 -#define NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_NAME 6 -#define NS_HTML5META_SCANNER_BEFORE_ATTRIBUTE_VALUE 7 -#define NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_DOUBLE_QUOTED 8 -#define NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_SINGLE_QUOTED 9 -#define NS_HTML5META_SCANNER_ATTRIBUTE_VALUE_UNQUOTED 10 -#define NS_HTML5META_SCANNER_AFTER_ATTRIBUTE_VALUE_QUOTED 11 -#define NS_HTML5META_SCANNER_MARKUP_DECLARATION_OPEN 13 -#define NS_HTML5META_SCANNER_MARKUP_DECLARATION_HYPHEN 14 -#define NS_HTML5META_SCANNER_COMMENT_START 15 -#define NS_HTML5META_SCANNER_COMMENT_START_DASH 16 -#define NS_HTML5META_SCANNER_COMMENT 17 -#define NS_HTML5META_SCANNER_COMMENT_END_DASH 18 -#define NS_HTML5META_SCANNER_COMMENT_END 19 -#define NS_HTML5META_SCANNER_SELF_CLOSING_START_TAG 20 -#define NS_HTML5META_SCANNER_HTTP_EQUIV_NOT_SEEN 0 -#define NS_HTML5META_SCANNER_HTTP_EQUIV_CONTENT_TYPE 1 -#define NS_HTML5META_SCANNER_HTTP_EQUIV_OTHER 2 - - #endif diff --git a/parser/html/nsHtml5Portability.h b/parser/html/nsHtml5Portability.h index ce9401664..20d9e08e8 100644 --- a/parser/html/nsHtml5Portability.h +++ b/parser/html/nsHtml5Portability.h @@ -44,15 +44,15 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; +class nsHtml5AttributeName; +class nsHtml5ElementName; class nsHtml5Tokenizer; class nsHtml5TreeBuilder; class nsHtml5MetaScanner; -class nsHtml5AttributeName; -class nsHtml5ElementName; -class nsHtml5HtmlAttributes; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; @@ -77,7 +77,5 @@ class nsHtml5Portability static void releaseStatics(); }; - - #endif diff --git a/parser/html/nsHtml5ReleasableAttributeName.cpp b/parser/html/nsHtml5ReleasableAttributeName.cpp deleted file mode 100644 index 4cef131e7..000000000 --- a/parser/html/nsHtml5ReleasableAttributeName.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsHtml5ReleasableAttributeName.h" -#include "nsHtml5Portability.h" -#include "nsHtml5AtomTable.h" - -nsHtml5ReleasableAttributeName::nsHtml5ReleasableAttributeName(int32_t* uri, nsIAtom** local, nsIAtom** prefix) - : nsHtml5AttributeName(uri, local, prefix) -{ -} - -nsHtml5AttributeName* -nsHtml5ReleasableAttributeName::cloneAttributeName(nsHtml5AtomTable* aInterner) -{ - nsIAtom* l = getLocal(0); - if (aInterner) { - if (!l->IsStaticAtom()) { - nsAutoString str; - l->ToString(str); - l = aInterner->GetAtom(str); - } - } - return new nsHtml5ReleasableAttributeName(nsHtml5AttributeName::ALL_NO_NS, - nsHtml5AttributeName::SAME_LOCAL(l), - nsHtml5AttributeName::ALL_NO_PREFIX); -} - -void -nsHtml5ReleasableAttributeName::release() -{ - delete this; -} diff --git a/parser/html/nsHtml5ReleasableAttributeName.h b/parser/html/nsHtml5ReleasableAttributeName.h deleted file mode 100644 index e9766173b..000000000 --- a/parser/html/nsHtml5ReleasableAttributeName.h +++ /dev/null @@ -1,21 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef nsHtml5ReleasableAttributeName_h -#define nsHtml5ReleasableAttributeName_h - -#include "nsHtml5AttributeName.h" -#include "mozilla/Attributes.h" - -class nsHtml5AtomTable; - -class nsHtml5ReleasableAttributeName final : public nsHtml5AttributeName -{ - public: - nsHtml5ReleasableAttributeName(int32_t* uri, nsIAtom** local, nsIAtom** prefix); - virtual nsHtml5AttributeName* cloneAttributeName(nsHtml5AtomTable* aInterner); - virtual void release(); -}; - -#endif // nsHtml5ReleasableAttributeName_h diff --git a/parser/html/nsHtml5ReleasableElementName.cpp b/parser/html/nsHtml5ReleasableElementName.cpp deleted file mode 100644 index 244b22d97..000000000 --- a/parser/html/nsHtml5ReleasableElementName.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsHtml5ReleasableElementName.h" - -nsHtml5ReleasableElementName::nsHtml5ReleasableElementName(nsIAtom* name) - : nsHtml5ElementName(name) -{ -} - -void -nsHtml5ReleasableElementName::release() -{ - delete this; -} - -nsHtml5ElementName* -nsHtml5ReleasableElementName::cloneElementName(nsHtml5AtomTable* aInterner) -{ - nsIAtom* l = name; - if (aInterner) { - if (!l->IsStaticAtom()) { - nsAutoString str; - l->ToString(str); - l = aInterner->GetAtom(str); - } - } - return new nsHtml5ReleasableElementName(l); -} diff --git a/parser/html/nsHtml5ReleasableElementName.h b/parser/html/nsHtml5ReleasableElementName.h deleted file mode 100644 index f76792a48..000000000 --- a/parser/html/nsHtml5ReleasableElementName.h +++ /dev/null @@ -1,19 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef nsHtml5ReleasableElementName_h -#define nsHtml5ReleasableElementName_h - -#include "nsHtml5ElementName.h" -#include "mozilla/Attributes.h" - -class nsHtml5ReleasableElementName final : public nsHtml5ElementName -{ - public: - explicit nsHtml5ReleasableElementName(nsIAtom* name); - virtual void release(); - virtual nsHtml5ElementName* cloneElementName(nsHtml5AtomTable* interner); -}; - -#endif // nsHtml5ReleasableElementName_h diff --git a/parser/html/nsHtml5StackNode.cpp b/parser/html/nsHtml5StackNode.cpp index a29fb85d4..4c5058349 100644 --- a/parser/html/nsHtml5StackNode.cpp +++ b/parser/html/nsHtml5StackNode.cpp @@ -44,13 +44,14 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" +#include "nsHtml5AttributeName.h" +#include "nsHtml5ElementName.h" #include "nsHtml5Tokenizer.h" #include "nsHtml5TreeBuilder.h" #include "nsHtml5MetaScanner.h" -#include "nsHtml5AttributeName.h" -#include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5StateSnapshot.h" #include "nsHtml5Portability.h" @@ -60,42 +61,49 @@ int32_t nsHtml5StackNode::getGroup() { - return flags & NS_HTML5ELEMENT_NAME_GROUP_MASK; + return flags & nsHtml5ElementName::GROUP_MASK; } bool nsHtml5StackNode::isScoping() { - return (flags & NS_HTML5ELEMENT_NAME_SCOPING); + return (flags & nsHtml5ElementName::SCOPING); } bool nsHtml5StackNode::isSpecial() { - return (flags & NS_HTML5ELEMENT_NAME_SPECIAL); + return (flags & nsHtml5ElementName::SPECIAL); } bool nsHtml5StackNode::isFosterParenting() { - return (flags & NS_HTML5ELEMENT_NAME_FOSTER_PARENTING); + return (flags & nsHtml5ElementName::FOSTER_PARENTING); } bool nsHtml5StackNode::isHtmlIntegrationPoint() { - return (flags & NS_HTML5ELEMENT_NAME_HTML_INTEGRATION_POINT); + return (flags & nsHtml5ElementName::HTML_INTEGRATION_POINT); +} + +mozilla::dom::HTMLContentCreatorFunction +nsHtml5StackNode::getHtmlCreator() +{ + return htmlCreator; } -nsHtml5StackNode::nsHtml5StackNode(int32_t flags, int32_t ns, nsIAtom* name, nsIContentHandle* node, nsIAtom* popName, nsHtml5HtmlAttributes* attributes) +nsHtml5StackNode::nsHtml5StackNode(int32_t flags, int32_t ns, nsIAtom* name, nsIContentHandle* node, nsIAtom* popName, nsHtml5HtmlAttributes* attributes, mozilla::dom::HTMLContentCreatorFunction htmlCreator) : flags(flags), name(name), popName(popName), ns(ns), node(node), attributes(attributes), - refcount(1) + refcount(1), + htmlCreator(htmlCreator) { MOZ_COUNT_CTOR(nsHtml5StackNode); } @@ -103,40 +111,43 @@ nsHtml5StackNode::nsHtml5StackNode(int32_t flags, int32_t ns, nsIAtom* name, nsI nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node) : flags(elementName->getFlags()), - name(elementName->name), - popName(elementName->name), + name(elementName->getName()), + popName(elementName->getName()), ns(kNameSpaceID_XHTML), node(node), attributes(nullptr), - refcount(1) + refcount(1), + htmlCreator(nullptr) { MOZ_COUNT_CTOR(nsHtml5StackNode); - MOZ_ASSERT(!elementName->isCustom(), "Don't use this constructor for custom elements."); + MOZ_ASSERT(elementName->isInterned(), "Don't use this constructor for custom elements."); } nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node, nsHtml5HtmlAttributes* attributes) : flags(elementName->getFlags()), - name(elementName->name), - popName(elementName->name), + name(elementName->getName()), + popName(elementName->getName()), ns(kNameSpaceID_XHTML), node(node), attributes(attributes), - refcount(1) + refcount(1), + htmlCreator(elementName->getHtmlCreator()) { MOZ_COUNT_CTOR(nsHtml5StackNode); - MOZ_ASSERT(!elementName->isCustom(), "Don't use this constructor for custom elements."); + MOZ_ASSERT(elementName->isInterned(), "Don't use this constructor for custom elements."); } nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node, nsIAtom* popName) : flags(elementName->getFlags()), - name(elementName->name), + name(elementName->getName()), popName(popName), ns(kNameSpaceID_XHTML), node(node), attributes(nullptr), - refcount(1) + refcount(1), + htmlCreator(nullptr) { MOZ_COUNT_CTOR(nsHtml5StackNode); } @@ -144,12 +155,13 @@ nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHa nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIAtom* popName, nsIContentHandle* node) : flags(prepareSvgFlags(elementName->getFlags())), - name(elementName->name), + name(elementName->getName()), popName(popName), ns(kNameSpaceID_SVG), node(node), attributes(nullptr), - refcount(1) + refcount(1), + htmlCreator(nullptr) { MOZ_COUNT_CTOR(nsHtml5StackNode); } @@ -157,12 +169,13 @@ nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIAtom* pop nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node, nsIAtom* popName, bool markAsIntegrationPoint) : flags(prepareMathFlags(elementName->getFlags(), markAsIntegrationPoint)), - name(elementName->name), + name(elementName->getName()), popName(popName), ns(kNameSpaceID_MathML), node(node), attributes(nullptr), - refcount(1) + refcount(1), + htmlCreator(nullptr) { MOZ_COUNT_CTOR(nsHtml5StackNode); } @@ -170,9 +183,9 @@ nsHtml5StackNode::nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHa int32_t nsHtml5StackNode::prepareSvgFlags(int32_t flags) { - flags &= ~(NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - if ((flags & NS_HTML5ELEMENT_NAME_SCOPING_AS_SVG)) { - flags |= (NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_HTML_INTEGRATION_POINT); + flags &= ~(nsHtml5ElementName::FOSTER_PARENTING | nsHtml5ElementName::SCOPING | nsHtml5ElementName::SPECIAL | nsHtml5ElementName::OPTIONAL_END_TAG); + if ((flags & nsHtml5ElementName::SCOPING_AS_SVG)) { + flags |= (nsHtml5ElementName::SCOPING | nsHtml5ElementName::SPECIAL | nsHtml5ElementName::HTML_INTEGRATION_POINT); } return flags; } @@ -180,12 +193,12 @@ nsHtml5StackNode::prepareSvgFlags(int32_t flags) int32_t nsHtml5StackNode::prepareMathFlags(int32_t flags, bool markAsIntegrationPoint) { - flags &= ~(NS_HTML5ELEMENT_NAME_FOSTER_PARENTING | NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG); - if ((flags & NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML)) { - flags |= (NS_HTML5ELEMENT_NAME_SCOPING | NS_HTML5ELEMENT_NAME_SPECIAL); + flags &= ~(nsHtml5ElementName::FOSTER_PARENTING | nsHtml5ElementName::SCOPING | nsHtml5ElementName::SPECIAL | nsHtml5ElementName::OPTIONAL_END_TAG); + if ((flags & nsHtml5ElementName::SCOPING_AS_MATHML)) { + flags |= (nsHtml5ElementName::SCOPING | nsHtml5ElementName::SPECIAL); } if (markAsIntegrationPoint) { - flags |= NS_HTML5ELEMENT_NAME_HTML_INTEGRATION_POINT; + flags |= nsHtml5ElementName::HTML_INTEGRATION_POINT; } return flags; } diff --git a/parser/html/nsHtml5StackNode.h b/parser/html/nsHtml5StackNode.h index cfe6820c6..c02b8c793 100644 --- a/parser/html/nsHtml5StackNode.h +++ b/parser/html/nsHtml5StackNode.h @@ -45,15 +45,16 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; +class nsHtml5AttributeName; +class nsHtml5ElementName; class nsHtml5Tokenizer; class nsHtml5TreeBuilder; class nsHtml5MetaScanner; -class nsHtml5AttributeName; -class nsHtml5ElementName; -class nsHtml5HtmlAttributes; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -70,6 +71,7 @@ class nsHtml5StackNode nsHtml5HtmlAttributes* attributes; private: int32_t refcount; + mozilla::dom::HTMLContentCreatorFunction htmlCreator; public: inline int32_t getFlags() { @@ -81,7 +83,8 @@ class nsHtml5StackNode bool isSpecial(); bool isFosterParenting(); bool isHtmlIntegrationPoint(); - nsHtml5StackNode(int32_t flags, int32_t ns, nsIAtom* name, nsIContentHandle* node, nsIAtom* popName, nsHtml5HtmlAttributes* attributes); + mozilla::dom::HTMLContentCreatorFunction getHtmlCreator(); + nsHtml5StackNode(int32_t flags, int32_t ns, nsIAtom* name, nsIContentHandle* node, nsIAtom* popName, nsHtml5HtmlAttributes* attributes, mozilla::dom::HTMLContentCreatorFunction htmlCreator); nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node); nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node, nsHtml5HtmlAttributes* attributes); nsHtml5StackNode(nsHtml5ElementName* elementName, nsIContentHandle* node, nsIAtom* popName); @@ -99,7 +102,5 @@ class nsHtml5StackNode static void releaseStatics(); }; - - #endif diff --git a/parser/html/nsHtml5StateSnapshot.cpp b/parser/html/nsHtml5StateSnapshot.cpp index 33809dc70..67f309a3e 100644 --- a/parser/html/nsHtml5StateSnapshot.cpp +++ b/parser/html/nsHtml5StateSnapshot.cpp @@ -43,13 +43,14 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" +#include "nsHtml5AttributeName.h" +#include "nsHtml5ElementName.h" #include "nsHtml5Tokenizer.h" #include "nsHtml5TreeBuilder.h" #include "nsHtml5MetaScanner.h" -#include "nsHtml5AttributeName.h" -#include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" #include "nsHtml5StackNode.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5Portability.h" diff --git a/parser/html/nsHtml5StateSnapshot.h b/parser/html/nsHtml5StateSnapshot.h index 7d60b88c8..b608a8410 100644 --- a/parser/html/nsHtml5StateSnapshot.h +++ b/parser/html/nsHtml5StateSnapshot.h @@ -44,15 +44,16 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; +class nsHtml5AttributeName; +class nsHtml5ElementName; class nsHtml5Tokenizer; class nsHtml5TreeBuilder; class nsHtml5MetaScanner; -class nsHtml5AttributeName; -class nsHtml5ElementName; -class nsHtml5HtmlAttributes; class nsHtml5UTF16Buffer; class nsHtml5Portability; @@ -92,7 +93,5 @@ class nsHtml5StateSnapshot : public nsAHtml5TreeBuilderState static void releaseStatics(); }; - - #endif diff --git a/parser/html/nsHtml5Tokenizer.cpp b/parser/html/nsHtml5Tokenizer.cpp index 73c6d986f..8fea32eb8 100644 --- a/parser/html/nsHtml5Tokenizer.cpp +++ b/parser/html/nsHtml5Tokenizer.cpp @@ -48,11 +48,10 @@ #include "nsHtml5Highlighter.h" #include "nsHtml5TokenizerLoopPolicies.h" -#include "nsHtml5TreeBuilder.h" -#include "nsHtml5MetaScanner.h" #include "nsHtml5AttributeName.h" #include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" +#include "nsHtml5TreeBuilder.h" +#include "nsHtml5MetaScanner.h" #include "nsHtml5StackNode.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5StateSnapshot.h" @@ -96,8 +95,11 @@ nsHtml5Tokenizer::nsHtml5Tokenizer(nsHtml5TreeBuilder* tokenHandler, bool viewin charRefBuf(jArray<char16_t,int32_t>::newJArray(32)), bmpChar(jArray<char16_t,int32_t>::newJArray(1)), astralChar(jArray<char16_t,int32_t>::newJArray(2)), + containsHyphen(false), tagName(nullptr), + nonInternedTagName(new nsHtml5ElementName()), attributeName(nullptr), + nonInternedAttributeName(new nsHtml5AttributeName()), doctypeName(nullptr), publicIdentifier(nullptr), systemIdentifier(nullptr), @@ -147,43 +149,43 @@ void nsHtml5Tokenizer::endTagExpectationToArray() { switch(endTagExpectation->getGroup()) { - case NS_HTML5TREE_BUILDER_TITLE: { + case nsHtml5TreeBuilder::TITLE: { endTagExpectationAsArray = TITLE_ARR; return; } - case NS_HTML5TREE_BUILDER_SCRIPT: { + case nsHtml5TreeBuilder::SCRIPT: { endTagExpectationAsArray = SCRIPT_ARR; return; } - case NS_HTML5TREE_BUILDER_STYLE: { + case nsHtml5TreeBuilder::STYLE: { endTagExpectationAsArray = STYLE_ARR; return; } - case NS_HTML5TREE_BUILDER_PLAINTEXT: { + case nsHtml5TreeBuilder::PLAINTEXT: { endTagExpectationAsArray = PLAINTEXT_ARR; return; } - case NS_HTML5TREE_BUILDER_XMP: { + case nsHtml5TreeBuilder::XMP: { endTagExpectationAsArray = XMP_ARR; return; } - case NS_HTML5TREE_BUILDER_TEXTAREA: { + case nsHtml5TreeBuilder::TEXTAREA: { endTagExpectationAsArray = TEXTAREA_ARR; return; } - case NS_HTML5TREE_BUILDER_IFRAME: { + case nsHtml5TreeBuilder::IFRAME: { endTagExpectationAsArray = IFRAME_ARR; return; } - case NS_HTML5TREE_BUILDER_NOEMBED: { + case nsHtml5TreeBuilder::NOEMBED: { endTagExpectationAsArray = NOEMBED_ARR; return; } - case NS_HTML5TREE_BUILDER_NOSCRIPT: { + case nsHtml5TreeBuilder::NOSCRIPT: { endTagExpectationAsArray = NOSCRIPT_ARR; return; } - case NS_HTML5TREE_BUILDER_NOFRAMES: { + case nsHtml5TreeBuilder::NOFRAMES: { endTagExpectationAsArray = NOFRAMES_ARR; return; } @@ -210,7 +212,7 @@ nsHtml5Tokenizer::emptyAttributes() void nsHtml5Tokenizer::emitOrAppendCharRefBuf(int32_t returnState) { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { appendCharRefBufToStrBuf(); } else { if (charRefBufLen > 0) { @@ -278,7 +280,22 @@ nsHtml5Tokenizer::flushChars(char16_t* buf, int32_t pos) void nsHtml5Tokenizer::strBufToElementNameString() { - tagName = nsHtml5ElementName::elementNameByBuffer(strBuf, 0, strBufLen, interner); + if (containsHyphen) { + nsIAtom* annotationName = nsHtml5ElementName::ELT_ANNOTATION_XML->getName(); + if (nsHtml5Portability::localEqualsBuffer(annotationName, strBuf, 0, strBufLen)) { + tagName = nsHtml5ElementName::ELT_ANNOTATION_XML; + } else { + nonInternedTagName->setNameForNonInterned(nsHtml5Portability::newLocalNameFromBuffer(strBuf, 0, strBufLen, interner), true); + tagName = nonInternedTagName; + } + } else { + tagName = nsHtml5ElementName::elementNameByBuffer(strBuf, 0, strBufLen, interner); + if (!tagName) { + nonInternedTagName->setNameForNonInterned(nsHtml5Portability::newLocalNameFromBuffer(strBuf, 0, strBufLen, interner), false); + tagName = nonInternedTagName; + } + } + containsHyphen = false; clearStrBufAfterUse(); } @@ -287,7 +304,7 @@ nsHtml5Tokenizer::emitCurrentTagToken(bool selfClosing, int32_t pos) { cstart = pos + 1; maybeErrSlashInEndTag(selfClosing); - stateSave = NS_HTML5TOKENIZER_DATA; + stateSave = nsHtml5Tokenizer::DATA; nsHtml5HtmlAttributes* attrs = (!attributes ? nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES : attributes); if (endTag) { maybeErrAttributesOnEndTag(attrs); @@ -307,7 +324,6 @@ nsHtml5Tokenizer::emitCurrentTagToken(bool selfClosing, int32_t pos) tokenHandler->startTag(tagName, attrs, selfClosing); } } - tagName->release(); tagName = nullptr; if (newAttributesEachTime) { attributes = nullptr; @@ -321,13 +337,16 @@ void nsHtml5Tokenizer::attributeNameComplete() { attributeName = nsHtml5AttributeName::nameByBuffer(strBuf, 0, strBufLen, interner); + if (!attributeName) { + nonInternedAttributeName->setNameForNonInterned(nsHtml5Portability::newLocalNameFromBuffer(strBuf, 0, strBufLen, interner)); + attributeName = nonInternedAttributeName; + } clearStrBufAfterUse(); if (!attributes) { attributes = new nsHtml5HtmlAttributes(0); } if (attributes->contains(attributeName)) { errDuplicateAttribute(); - attributeName->release(); attributeName = nullptr; } } @@ -378,23 +397,23 @@ nsHtml5Tokenizer::tokenizeBuffer(nsHtml5UTF16Buffer* buffer) int32_t end = buffer->getEnd(); int32_t pos = start - 1; switch(state) { - case NS_HTML5TOKENIZER_DATA: - case NS_HTML5TOKENIZER_RCDATA: - case NS_HTML5TOKENIZER_SCRIPT_DATA: - case NS_HTML5TOKENIZER_PLAINTEXT: - case NS_HTML5TOKENIZER_RAWTEXT: - case NS_HTML5TOKENIZER_CDATA_SECTION: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH: - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START: - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED: - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH: - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END: { + case DATA: + case RCDATA: + case SCRIPT_DATA: + case PLAINTEXT: + case RAWTEXT: + case CDATA_SECTION: + case SCRIPT_DATA_ESCAPED: + case SCRIPT_DATA_ESCAPE_START: + case SCRIPT_DATA_ESCAPE_START_DASH: + case SCRIPT_DATA_ESCAPED_DASH: + case SCRIPT_DATA_ESCAPED_DASH_DASH: + case SCRIPT_DATA_DOUBLE_ESCAPE_START: + case SCRIPT_DATA_DOUBLE_ESCAPED: + case SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: + case SCRIPT_DATA_DOUBLE_ESCAPED_DASH: + case SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: + case SCRIPT_DATA_DOUBLE_ESCAPE_END: { cstart = start; break; } @@ -424,7 +443,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu { stateloop: for (; ; ) { switch(state) { - case NS_HTML5TOKENIZER_DATA: { + case DATA: { for (; ; ) { if (reconsume) { reconsume = false; @@ -441,12 +460,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu appendCharRefBuf(c); setAdditionalAndRememberAmpersandLocation('\0'); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '<': { flushChars(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_OPEN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::TAG_OPEN, reconsume, pos); NS_HTML5_BREAK(dataloop); } case '\0': { @@ -467,7 +486,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } dataloop_end: ; } - case NS_HTML5TOKENIZER_TAG_OPEN: { + case TAG_OPEN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -477,27 +496,29 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu endTag = false; clearStrBufBeforeUse(); appendStrBuf((char16_t) (c + 0x20)); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos); + containsHyphen = false; + state = P::transition(mViewSource, nsHtml5Tokenizer::TAG_NAME, reconsume, pos); NS_HTML5_BREAK(tagopenloop); } else if (c >= 'a' && c <= 'z') { endTag = false; clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos); + containsHyphen = false; + state = P::transition(mViewSource, nsHtml5Tokenizer::TAG_NAME, reconsume, pos); NS_HTML5_BREAK(tagopenloop); } switch(c) { case '!': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_MARKUP_DECLARATION_OPEN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::MARKUP_DECLARATION_OPEN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '/': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CLOSE_TAG_OPEN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CLOSE_TAG_OPEN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\?': { if (viewingXmlSource) { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::PROCESSING_INSTRUCTION, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } if (P::reportErrors) { @@ -505,7 +526,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -514,7 +535,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 2); cstart = pos + 1; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { @@ -524,14 +545,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); cstart = pos; reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } tagopenloop_end: ; } - case NS_HTML5TOKENIZER_TAG_NAME: { + case TAG_NAME: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -541,7 +562,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\r': { silentCarriageReturn(); strBufToElementNameString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -551,12 +572,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\t': case '\f': { strBufToElementNameString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(tagnameloop); } case '/': { strBufToElementNameString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SELF_CLOSING_START_TAG, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -573,15 +594,18 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu default: { if (c >= 'A' && c <= 'Z') { c += 0x20; + } else if (c == '-') { + containsHyphen = true; } appendStrBuf(c); + containsHyphen = false; continue; } } } tagnameloop_end: ; } - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: { + case BEFORE_ATTRIBUTE_NAME: { for (; ; ) { if (reconsume) { reconsume = false; @@ -605,7 +629,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu continue; } case '/': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SELF_CLOSING_START_TAG, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -633,14 +657,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu attributeLine = line; clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(beforeattributenameloop); } } } beforeattributenameloop_end: ; } - case NS_HTML5TOKENIZER_ATTRIBUTE_NAME: { + case ATTRIBUTE_NAME: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -650,7 +674,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\r': { silentCarriageReturn(); attributeNameComplete(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -660,18 +684,18 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\t': case '\f': { attributeNameComplete(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '/': { attributeNameComplete(); addAttributeWithoutValue(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SELF_CLOSING_START_TAG, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '=': { attributeNameComplete(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_VALUE, reconsume, pos); NS_HTML5_BREAK(attributenameloop); } case '>': { @@ -704,7 +728,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } attributenameloop_end: ; } - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE: { + case BEFORE_ATTRIBUTE_VALUE: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -726,21 +750,21 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\"': { attributeLine = line; clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::ATTRIBUTE_VALUE_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_BREAK(beforeattributevalueloop); } case '&': { attributeLine = line; clearStrBufBeforeUse(); reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::ATTRIBUTE_VALUE_UNQUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\'': { attributeLine = line; clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::ATTRIBUTE_VALUE_SINGLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -768,7 +792,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu attributeLine = line; clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::ATTRIBUTE_VALUE_UNQUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } @@ -776,7 +800,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } beforeattributevalueloop_end: ; } - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED: { + case ATTRIBUTE_VALUE_DOUBLE_QUOTED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -789,7 +813,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\"': { addAttributeWithValue(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_ATTRIBUTE_VALUE_QUOTED, reconsume, pos); NS_HTML5_BREAK(attributevaluedoublequotedloop); } case '&': { @@ -797,7 +821,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu appendCharRefBuf(c); setAdditionalAndRememberAmpersandLocation('\"'); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -819,7 +843,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } attributevaluedoublequotedloop_end: ; } - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED: { + case AFTER_ATTRIBUTE_VALUE_QUOTED: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -828,7 +852,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { silentCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -837,11 +861,11 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case ' ': case '\t': case '\f': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '/': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SELF_CLOSING_START_TAG, reconsume, pos); NS_HTML5_BREAK(afterattributevaluequotedloop); } case '>': { @@ -856,14 +880,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenAttributes(); } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } afterattributevaluequotedloop_end: ; } - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: { + case SELF_CLOSING_START_TAG: { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); } @@ -881,12 +905,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errSlashNotFollowedByGt(); } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED: { + case ATTRIBUTE_VALUE_UNQUOTED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -900,7 +924,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\r': { silentCarriageReturn(); addAttributeWithValue(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -910,7 +934,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\t': case '\f': { addAttributeWithValue(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '&': { @@ -918,7 +942,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu appendCharRefBuf(c); setAdditionalAndRememberAmpersandLocation('>'); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -949,7 +973,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } } - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME: { + case AFTER_ATTRIBUTE_NAME: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -970,11 +994,11 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '/': { addAttributeWithoutValue(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SELF_CLOSING_START_TAG, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '=': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_VALUE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -1002,13 +1026,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_MARKUP_DECLARATION_OPEN: { + case MARKUP_DECLARATION_OPEN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1018,7 +1042,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '-': { clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_MARKUP_DECLARATION_HYPHEN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::MARKUP_DECLARATION_HYPHEN, reconsume, pos); NS_HTML5_BREAK(markupdeclarationopenloop); } case 'd': @@ -1026,7 +1050,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu clearStrBufBeforeUse(); appendStrBuf(c); index = 0; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_MARKUP_DECLARATION_OCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::MARKUP_DECLARATION_OCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '[': { @@ -1034,7 +1058,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu clearStrBufBeforeUse(); appendStrBuf(c); index = 0; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_START, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CDATA_START, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } @@ -1044,14 +1068,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } markupdeclarationopenloop_end: ; } - case NS_HTML5TOKENIZER_MARKUP_DECLARATION_HYPHEN: { + case MARKUP_DECLARATION_HYPHEN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1060,7 +1084,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '-': { clearStrBufAfterOneHyphen(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_START, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_START, reconsume, pos); NS_HTML5_BREAK(markupdeclarationhyphenloop); } default: { @@ -1068,14 +1092,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errBogusComment(); } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } markupdeclarationhyphenloop_end: ; } - case NS_HTML5TOKENIZER_COMMENT_START: { + case COMMENT_START: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1084,7 +1108,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '-': { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_START_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_START_DASH, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -1092,17 +1116,17 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errPrematureEndOfComment(); } emitComment(0, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { appendStrBufCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { appendStrBufLineFeed(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_BREAK(commentstartloop); } case '\0': { @@ -1110,14 +1134,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } default: { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_BREAK(commentstartloop); } } } commentstartloop_end: ; } - case NS_HTML5TOKENIZER_COMMENT: { + case COMMENT: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1126,7 +1150,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '-': { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_END_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_END_DASH, reconsume, pos); NS_HTML5_BREAK(commentloop); } case '\r': { @@ -1148,7 +1172,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } commentloop_end: ; } - case NS_HTML5TOKENIZER_COMMENT_END_DASH: { + case COMMENT_END_DASH: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1157,17 +1181,17 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '-': { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_END, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_END, reconsume, pos); NS_HTML5_BREAK(commentenddashloop); } case '\r': { appendStrBufCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { appendStrBufLineFeed(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -1175,14 +1199,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } default: { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } commentenddashloop_end: ; } - case NS_HTML5TOKENIZER_COMMENT_END: { + case COMMENT_END: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1191,7 +1215,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '>': { emitComment(2, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '-': { @@ -1200,12 +1224,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '\r': { adjustDoubleHyphenAndAppendToStrBufCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { adjustDoubleHyphenAndAppendToStrBufLineFeed(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '!': { @@ -1213,7 +1237,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errHyphenHyphenBang(); } appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_END_BANG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_END_BANG, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -1221,14 +1245,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } default: { adjustDoubleHyphenAndAppendToStrBufAndErr(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_COMMENT_END_BANG: { + case COMMENT_END_BANG: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1237,12 +1261,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '>': { emitComment(3, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '-': { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_END_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_END_DASH, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -1258,13 +1282,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } default: { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_COMMENT_START_DASH: { + case COMMENT_START_DASH: { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); } @@ -1272,7 +1296,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '-': { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_END, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT_END, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -1280,17 +1304,17 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errPrematureEndOfComment(); } emitComment(1, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { appendStrBufCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { appendStrBufLineFeed(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -1298,12 +1322,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } default: { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } - case NS_HTML5TOKENIZER_CDATA_START: { + case CDATA_START: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1317,7 +1341,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errBogusComment(); } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } index++; @@ -1326,12 +1350,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu clearStrBufAfterUse(); cstart = pos; reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_SECTION, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CDATA_SECTION, reconsume, pos); break; } } } - case NS_HTML5TOKENIZER_CDATA_SECTION: { + case CDATA_SECTION: { for (; ; ) { if (reconsume) { reconsume = false; @@ -1344,7 +1368,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case ']': { flushChars(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_RSQB, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CDATA_RSQB, reconsume, pos); NS_HTML5_BREAK(cdatasectionloop); } case '\0': { @@ -1365,7 +1389,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } cdatasectionloop_end: ; } - case NS_HTML5TOKENIZER_CDATA_RSQB: { + case CDATA_RSQB: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1373,21 +1397,21 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu c = checkChar(buf, pos); switch(c) { case ']': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_RSQB_RSQB, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CDATA_RSQB_RSQB, reconsume, pos); NS_HTML5_BREAK(cdatarsqb); } default: { tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 1); cstart = pos; reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_SECTION, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CDATA_SECTION, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } cdatarsqb_end: ; } - case NS_HTML5TOKENIZER_CDATA_RSQB_RSQB: { + case CDATA_RSQB_RSQB: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1400,21 +1424,21 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '>': { cstart = pos + 1; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 2); cstart = pos; reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_SECTION, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CDATA_SECTION, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED: { + case ATTRIBUTE_VALUE_SINGLE_QUOTED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -1427,7 +1451,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\'': { addAttributeWithValue(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_ATTRIBUTE_VALUE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '&': { @@ -1435,7 +1459,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu appendCharRefBuf(c); setAdditionalAndRememberAmpersandLocation('\''); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE, reconsume, pos); NS_HTML5_BREAK(attributevaluesinglequotedloop); } case '\r': { @@ -1457,7 +1481,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } attributevaluesinglequotedloop_end: ; } - case NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE: { + case CONSUME_CHARACTER_REFERENCE: { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); } @@ -1472,7 +1496,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '&': case '\0': { emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; @@ -1481,7 +1505,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '#': { appendCharRefBuf('#'); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_NCR, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CONSUME_NCR, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { @@ -1500,7 +1524,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoNamedCharacterMatch(); } emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; @@ -1508,11 +1532,11 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu NS_HTML5_CONTINUE(stateloop); } appendCharRefBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CHARACTER_REFERENCE_HILO_LOOKUP, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CHARACTER_REFERENCE_HILO_LOOKUP, reconsume, pos); } } } - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_HILO_LOOKUP: { + case CHARACTER_REFERENCE_HILO_LOOKUP: { { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1530,7 +1554,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoNamedCharacterMatch(); } emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; @@ -1543,10 +1567,10 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu entCol = -1; candidate = -1; charRefBufMark = 0; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CHARACTER_REFERENCE_TAIL, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CHARACTER_REFERENCE_TAIL, reconsume, pos); } } - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_TAIL: { + case CHARACTER_REFERENCE_TAIL: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1605,7 +1629,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoNamedCharacterMatch(); } emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; @@ -1614,7 +1638,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } else { const nsHtml5CharacterName& candidateName = nsHtml5NamedCharacters::NAMES[candidate]; if (!candidateName.length() || candidateName.charAt(candidateName.length() - 1) != ';') { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { char16_t ch; if (charRefBufMark == charRefBufLen) { ch = c; @@ -1631,7 +1655,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu NS_HTML5_CONTINUE(stateloop); } } - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { if (P::reportErrors) { errUnescapedAmpersandInterpretedAsCharacterReference(); } @@ -1649,7 +1673,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu emitOrAppendTwo(val, returnState); } if (charRefBufMark < charRefBufLen) { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { appendStrBuf(charRefBuf, charRefBufMark, charRefBufLen - charRefBufMark); } else { tokenHandler->characters(charRefBuf, charRefBufMark, charRefBufLen - charRefBufMark); @@ -1657,7 +1681,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } bool earlyBreak = (c == ';' && charRefBufMark == charRefBufLen); charRefBufLen = 0; - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = earlyBreak ? pos + 1 : pos; } reconsume = !earlyBreak; @@ -1665,7 +1689,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu NS_HTML5_CONTINUE(stateloop); } } - case NS_HTML5TOKENIZER_CONSUME_NCR: { + case CONSUME_NCR: { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); } @@ -1676,16 +1700,16 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case 'x': case 'X': { appendCharRefBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_HEX_NCR_LOOP, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::HEX_NCR_LOOP, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DECIMAL_NRC_LOOP, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DECIMAL_NRC_LOOP, reconsume, pos); } } } - case NS_HTML5TOKENIZER_DECIMAL_NRC_LOOP: { + case DECIMAL_NRC_LOOP: { for (; ; ) { if (reconsume) { reconsume = false; @@ -1705,10 +1729,10 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu continue; } else if (c == ';') { if (seenDigits) { - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos + 1; } - state = P::transition(mViewSource, NS_HTML5TOKENIZER_HANDLE_NCR_VALUE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::HANDLE_NCR_VALUE, reconsume, pos); NS_HTML5_BREAK(decimalloop); } else { if (P::reportErrors) { @@ -1716,7 +1740,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } appendCharRefBuf(';'); emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos + 1; } state = P::transition(mViewSource, returnState, reconsume, pos); @@ -1728,7 +1752,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoDigitsInNCR(); } emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; @@ -1738,24 +1762,24 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu if (P::reportErrors) { errCharRefLacksSemicolon(); } - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_HANDLE_NCR_VALUE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::HANDLE_NCR_VALUE, reconsume, pos); NS_HTML5_BREAK(decimalloop); } } } decimalloop_end: ; } - case NS_HTML5TOKENIZER_HANDLE_NCR_VALUE: { + case HANDLE_NCR_VALUE: { charRefBufLen = 0; handleNcrValue(returnState); state = P::transition(mViewSource, returnState, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } - case NS_HTML5TOKENIZER_HEX_NCR_LOOP: { + case HEX_NCR_LOOP: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -1785,10 +1809,10 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu continue; } else if (c == ';') { if (seenDigits) { - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos + 1; } - state = P::transition(mViewSource, NS_HTML5TOKENIZER_HANDLE_NCR_VALUE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::HANDLE_NCR_VALUE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } else { if (P::reportErrors) { @@ -1796,7 +1820,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } appendCharRefBuf(';'); emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos + 1; } state = P::transition(mViewSource, returnState, reconsume, pos); @@ -1808,7 +1832,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoDigitsInNCR(); } emitOrAppendCharRefBuf(returnState); - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; @@ -1818,17 +1842,17 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu if (P::reportErrors) { errCharRefLacksSemicolon(); } - if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if (!(returnState & DATA_AND_RCDATA_MASK)) { cstart = pos; } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_HANDLE_NCR_VALUE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::HANDLE_NCR_VALUE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_PLAINTEXT: { + case PLAINTEXT: { for (; ; ) { if (reconsume) { reconsume = false; @@ -1857,7 +1881,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } - case NS_HTML5TOKENIZER_CLOSE_TAG_OPEN: { + case CLOSE_TAG_OPEN: { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); } @@ -1868,7 +1892,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errLtSlashGt(); } cstart = pos + 1; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -1878,7 +1902,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); appendStrBuf('\n'); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -1888,7 +1912,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -1902,7 +1926,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu endTag = true; clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::TAG_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } else { if (P::reportErrors) { @@ -1910,13 +1934,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_RCDATA: { + case RCDATA: { for (; ; ) { if (reconsume) { reconsume = false; @@ -1933,13 +1957,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu appendCharRefBuf(c); setAdditionalAndRememberAmpersandLocation('\0'); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::CONSUME_CHARACTER_REFERENCE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '<': { flushChars(buf, pos); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::RAWTEXT_RCDATA_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -1960,7 +1984,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } - case NS_HTML5TOKENIZER_RAWTEXT: { + case RAWTEXT: { for (; ; ) { if (reconsume) { reconsume = false; @@ -1974,7 +1998,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '<': { flushChars(buf, pos); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::RAWTEXT_RCDATA_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_BREAK(rawtextloop); } case '\0': { @@ -1995,7 +2019,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } rawtextloop_end: ; } - case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN: { + case RAWTEXT_RCDATA_LESS_THAN_SIGN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2005,7 +2029,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '/': { index = 0; clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::NON_DATA_END_TAG_NAME, reconsume, pos); NS_HTML5_BREAK(rawtextrcdatalessthansignloop); } default: { @@ -2019,7 +2043,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } rawtextrcdatalessthansignloop_end: ; } - case NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME: { + case NON_DATA_END_TAG_NAME: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2055,7 +2079,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\r': { silentCarriageReturn(); clearStrBufAfterUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -2065,12 +2089,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\t': case '\f': { clearStrBufAfterUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_ATTRIBUTE_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '/': { clearStrBufAfterUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SELF_CLOSING_START_TAG, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -2093,7 +2117,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } } - case NS_HTML5TOKENIZER_BOGUS_COMMENT: { + case BOGUS_COMMENT: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2106,12 +2130,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '>': { emitComment(0, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '-': { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT_HYPHEN, reconsume, pos); NS_HTML5_BREAK(boguscommentloop); } case '\r': { @@ -2133,7 +2157,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } boguscommentloop_end: ; } - case NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN: { + case BOGUS_COMMENT_HYPHEN: { boguscommenthyphenloop: for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2142,7 +2166,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '>': { emitComment(0, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '-': { @@ -2151,12 +2175,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '\r': { appendStrBufCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { appendStrBufLineFeed(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -2164,14 +2188,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } default: { appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_SCRIPT_DATA: { + case SCRIPT_DATA: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2185,7 +2209,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '<': { flushChars(buf, pos); returnState = state; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_BREAK(scriptdataloop); } case '\0': { @@ -2206,7 +2230,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } scriptdataloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN: { + case SCRIPT_DATA_LESS_THAN_SIGN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2216,27 +2240,27 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '/': { index = 0; clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::NON_DATA_END_TAG_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '!': { tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); cstart = pos; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPE_START, reconsume, pos); NS_HTML5_BREAK(scriptdatalessthansignloop); } default: { tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); cstart = pos; reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdatalessthansignloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START: { + case SCRIPT_DATA_ESCAPE_START: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2244,19 +2268,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu c = checkChar(buf, pos); switch(c) { case '-': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPE_START_DASH, reconsume, pos); NS_HTML5_BREAK(scriptdataescapestartloop); } default: { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdataescapestartloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH: { + case SCRIPT_DATA_ESCAPE_START_DASH: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2264,19 +2288,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu c = checkChar(buf, pos); switch(c) { case '-': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_DASH_DASH, reconsume, pos); NS_HTML5_BREAK(scriptdataescapestartdashloop); } default: { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdataescapestartdashloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH: { + case SCRIPT_DATA_ESCAPED_DASH_DASH: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2288,35 +2312,35 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '<': { flushChars(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { emitReplacementCharacter(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_BREAK(scriptdataescapeddashdashloop); } case '\r': { emitCarriageReturn(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { silentLineFeed(); } default: { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_BREAK(scriptdataescapeddashdashloop); } } } scriptdataescapeddashdashloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED: { + case SCRIPT_DATA_ESCAPED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2328,12 +2352,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } switch(c) { case '-': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_DASH, reconsume, pos); NS_HTML5_BREAK(scriptdataescapedloop); } case '<': { flushChars(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -2354,7 +2378,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } scriptdataescapedloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH: { + case SCRIPT_DATA_ESCAPED_DASH: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2362,36 +2386,36 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu c = checkChar(buf, pos); switch(c) { case '-': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_DASH_DASH, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '<': { flushChars(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_BREAK(scriptdataescapeddashloop); } case '\0': { emitReplacementCharacter(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { emitCarriageReturn(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { silentLineFeed(); } default: { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdataescapeddashloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { + case SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2401,8 +2425,8 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '/': { index = 0; clearStrBufBeforeUse(); - returnState = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME, reconsume, pos); + returnState = nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED; + state = P::transition(mViewSource, nsHtml5Tokenizer::NON_DATA_END_TAG_NAME, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case 'S': @@ -2410,21 +2434,21 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); cstart = pos; index = 1; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPE_START, reconsume, pos); NS_HTML5_BREAK(scriptdataescapedlessthanloop); } default: { tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); cstart = pos; reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdataescapedlessthanloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START: { + case SCRIPT_DATA_DOUBLE_ESCAPE_START: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2438,7 +2462,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } if (folded != nsHtml5Tokenizer::SCRIPT_ARR[index]) { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } index++; @@ -2447,7 +2471,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { emitCarriageReturn(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -2458,19 +2482,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\f': case '/': case '>': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_BREAK(scriptdatadoubleescapestartloop); } default: { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdatadoubleescapestartloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED: { + case SCRIPT_DATA_DOUBLE_ESCAPED: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2482,11 +2506,11 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } switch(c) { case '-': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED_DASH, reconsume, pos); NS_HTML5_BREAK(scriptdatadoubleescapedloop); } case '<': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -2507,7 +2531,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } scriptdatadoubleescapedloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { + case SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2515,35 +2539,35 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu c = checkChar(buf, pos); switch(c) { case '-': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH, reconsume, pos); NS_HTML5_BREAK(scriptdatadoubleescapeddashloop); } case '<': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { emitReplacementCharacter(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { emitCarriageReturn(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { silentLineFeed(); } default: { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdatadoubleescapeddashloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { + case SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2554,35 +2578,35 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu continue; } case '<': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos); NS_HTML5_BREAK(scriptdatadoubleescapeddashdashloop); } case '>': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { emitReplacementCharacter(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { emitCarriageReturn(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { silentLineFeed(); } default: { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdatadoubleescapeddashdashloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { + case SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2591,19 +2615,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '/': { index = 0; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPE_END, reconsume, pos); NS_HTML5_BREAK(scriptdatadoubleescapedlessthanloop); } default: { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } scriptdatadoubleescapedlessthanloop_end: ; } - case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END: { + case SCRIPT_DATA_DOUBLE_ESCAPE_END: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2616,7 +2640,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } if (folded != nsHtml5Tokenizer::SCRIPT_ARR[index]) { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } index++; @@ -2625,7 +2649,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { emitCarriageReturn(buf, pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -2636,19 +2660,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\f': case '/': case '>': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } } - case NS_HTML5TOKENIZER_MARKUP_DECLARATION_OCTYPE: { + case MARKUP_DECLARATION_OCTYPE: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2666,20 +2690,20 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errBogusComment(); } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_COMMENT, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } index++; continue; } else { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE, reconsume, pos); NS_HTML5_BREAK(markupdeclarationdoctypeloop); } } markupdeclarationdoctypeloop_end: ; } - case NS_HTML5TOKENIZER_DOCTYPE: { + case DOCTYPE: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2693,7 +2717,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { silentCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -2702,7 +2726,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case ' ': case '\t': case '\f': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_NAME, reconsume, pos); NS_HTML5_BREAK(doctypeloop); } default: { @@ -2710,14 +2734,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errMissingSpaceBeforeDoctypeName(); } reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_NAME, reconsume, pos); NS_HTML5_BREAK(doctypeloop); } } } doctypeloop_end: ; } - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME: { + case BEFORE_DOCTYPE_NAME: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2746,7 +2770,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } forceQuirks = true; emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -2758,14 +2782,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } clearStrBufBeforeUse(); appendStrBuf(c); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_NAME, reconsume, pos); NS_HTML5_BREAK(beforedoctypenameloop); } } } beforedoctypenameloop_end: ; } - case NS_HTML5TOKENIZER_DOCTYPE_NAME: { + case DOCTYPE_NAME: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2775,7 +2799,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\r': { silentCarriageReturn(); strBufToDoctypeName(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_NAME, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -2785,13 +2809,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case '\t': case '\f': { strBufToDoctypeName(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_NAME, reconsume, pos); NS_HTML5_BREAK(doctypenameloop); } case '>': { strBufToDoctypeName(); emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\0': { @@ -2808,7 +2832,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } doctypenameloop_end: ; } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME: { + case AFTER_DOCTYPE_NAME: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2829,31 +2853,31 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '>': { emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case 'p': case 'P': { index = 0; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_UBLIC, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_UBLIC, reconsume, pos); NS_HTML5_BREAK(afterdoctypenameloop); } case 's': case 'S': { index = 0; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_YSTEM, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_YSTEM, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } afterdoctypenameloop_end: ; } - case NS_HTML5TOKENIZER_DOCTYPE_UBLIC: { + case DOCTYPE_UBLIC: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2867,20 +2891,20 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu if (folded != nsHtml5Tokenizer::UBLIC[index]) { bogusDoctype(); reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } index++; continue; } else { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_KEYWORD, reconsume, pos); NS_HTML5_BREAK(doctypeublicloop); } } doctypeublicloop_end: ; } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD: { + case AFTER_DOCTYPE_PUBLIC_KEYWORD: { for (; ; ) { if (reconsume) { reconsume = false; @@ -2893,7 +2917,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { silentCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -2902,7 +2926,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case ' ': case '\t': case '\f': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); NS_HTML5_BREAK(afterdoctypepublickeywordloop); } case '\"': { @@ -2910,7 +2934,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenDoctypePublicKeywordAndQuote(); } clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\'': { @@ -2918,7 +2942,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenDoctypePublicKeywordAndQuote(); } clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -2927,19 +2951,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } forceQuirks = true; emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } afterdoctypepublickeywordloop_end: ; } - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { + case BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2960,12 +2984,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '\"': { clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_BREAK(beforedoctypepublicidentifierloop); } case '\'': { clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -2974,19 +2998,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } forceQuirks = true; emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } beforedoctypepublicidentifierloop_end: ; } - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { + case DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -2995,7 +3019,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\"': { publicIdentifier = strBufToString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); NS_HTML5_BREAK(doctypepublicidentifierdoublequotedloop); } case '>': { @@ -3005,7 +3029,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu forceQuirks = true; publicIdentifier = strBufToString(); emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -3027,7 +3051,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } doctypepublicidentifierdoublequotedloop_end: ; } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { + case AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3036,7 +3060,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { silentCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -3045,12 +3069,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case ' ': case '\t': case '\f': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS, reconsume, pos); NS_HTML5_BREAK(afterdoctypepublicidentifierloop); } case '>': { emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\"': { @@ -3058,7 +3082,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenPublicAndSystemIds(); } clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\'': { @@ -3066,19 +3090,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenPublicAndSystemIds(); } clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } afterdoctypepublicidentifierloop_end: ; } - case NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { + case BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3099,29 +3123,29 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '>': { emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\"': { clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_BREAK(betweendoctypepublicandsystemidentifiersloop); } case '\'': { clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } betweendoctypepublicandsystemidentifiersloop_end: ; } - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { + case DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3130,7 +3154,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\"': { systemIdentifier = strBufToString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -3140,7 +3164,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu forceQuirks = true; systemIdentifier = strBufToString(); emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -3162,7 +3186,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { + case AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3183,19 +3207,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '>': { emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctypeWithoutQuirks(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_BREAK(afterdoctypesystemidentifierloop); } } } afterdoctypesystemidentifierloop_end: ; } - case NS_HTML5TOKENIZER_BOGUS_DOCTYPE: { + case BOGUS_DOCTYPE: { for (; ; ) { if (reconsume) { reconsume = false; @@ -3208,7 +3232,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '>': { emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -3224,7 +3248,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } } - case NS_HTML5TOKENIZER_DOCTYPE_YSTEM: { + case DOCTYPE_YSTEM: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3238,20 +3262,20 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu if (folded != nsHtml5Tokenizer::YSTEM[index]) { bogusDoctype(); reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } index++; NS_HTML5_CONTINUE(stateloop); } else { reconsume = true; - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_KEYWORD, reconsume, pos); NS_HTML5_BREAK(doctypeystemloop); } } doctypeystemloop_end: ; } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD: { + case AFTER_DOCTYPE_SYSTEM_KEYWORD: { for (; ; ) { if (reconsume) { reconsume = false; @@ -3264,7 +3288,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\r': { silentCarriageReturn(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); NS_HTML5_BREAK(stateloop); } case '\n': { @@ -3273,7 +3297,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu case ' ': case '\t': case '\f': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BEFORE_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); NS_HTML5_BREAK(afterdoctypesystemkeywordloop); } case '\"': { @@ -3281,7 +3305,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenDoctypeSystemKeywordAndQuote(); } clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\'': { @@ -3289,7 +3313,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu errNoSpaceBetweenDoctypeSystemKeywordAndQuote(); } clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -3298,19 +3322,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } forceQuirks = true; emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } afterdoctypesystemkeywordloop_end: ; } - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { + case BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3331,12 +3355,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } case '\"': { clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\'': { clearStrBufBeforeUse(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos); NS_HTML5_BREAK(beforedoctypesystemidentifierloop); } case '>': { @@ -3345,19 +3369,19 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } forceQuirks = true; emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { bogusDoctype(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_DOCTYPE, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::BOGUS_DOCTYPE, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } } beforedoctypesystemidentifierloop_end: ; } - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { + case DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3366,7 +3390,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\'': { systemIdentifier = strBufToString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -3376,7 +3400,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu forceQuirks = true; systemIdentifier = strBufToString(); emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -3397,7 +3421,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } } - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { + case DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3406,7 +3430,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu switch(c) { case '\'': { publicIdentifier = strBufToString(); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::AFTER_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '>': { @@ -3416,7 +3440,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu forceQuirks = true; publicIdentifier = strBufToString(); emitDoctypeToken(pos); - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } case '\r': { @@ -3437,7 +3461,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } } } - case NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION: { + case PROCESSING_INSTRUCTION: { for (; ; ) { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); @@ -3445,7 +3469,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu c = checkChar(buf, pos); switch(c) { case '\?': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION_QUESTION_MARK, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::PROCESSING_INSTRUCTION_QUESTION_MARK, reconsume, pos); NS_HTML5_BREAK(processinginstructionloop); } default: { @@ -3455,18 +3479,18 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu } processinginstructionloop_end: ; } - case NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION_QUESTION_MARK: { + case PROCESSING_INSTRUCTION_QUESTION_MARK: { if (++pos == endPos) { NS_HTML5_BREAK(stateloop); } c = checkChar(buf, pos); switch(c) { case '>': { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_DATA, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::DATA, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } default: { - state = P::transition(mViewSource, NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION, reconsume, pos); + state = P::transition(mViewSource, nsHtml5Tokenizer::PROCESSING_INSTRUCTION, reconsume, pos); NS_HTML5_CONTINUE(stateloop); } } @@ -3561,7 +3585,7 @@ nsHtml5Tokenizer::handleNcrValue(int32_t returnState) emitOrAppendOne(bmpChar, returnState); } } else if (value <= 0x10FFFF) { - astralChar[0] = (char16_t) (NS_HTML5TOKENIZER_LEAD_OFFSET + (value >> 10)); + astralChar[0] = (char16_t) (nsHtml5Tokenizer::LEAD_OFFSET + (value >> 10)); astralChar[1] = (char16_t) (0xDC00 + (value & 0x3FF)); emitOrAppendTwo(astralChar, returnState); } else { @@ -3577,74 +3601,74 @@ nsHtml5Tokenizer::eof() int32_t returnState = returnStateSave; eofloop: for (; ; ) { switch(state) { - case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN: - case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { + case SCRIPT_DATA_LESS_THAN_SIGN: + case SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_TAG_OPEN: { + case TAG_OPEN: { errEofAfterLt(); tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN: { + case RAWTEXT_RCDATA_LESS_THAN_SIGN: { tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME: { + case NON_DATA_END_TAG_NAME: { tokenHandler->characters(nsHtml5Tokenizer::LT_SOLIDUS, 0, 2); emitStrBuf(); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_CLOSE_TAG_OPEN: { + case CLOSE_TAG_OPEN: { errEofAfterLt(); tokenHandler->characters(nsHtml5Tokenizer::LT_SOLIDUS, 0, 2); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_TAG_NAME: { + case TAG_NAME: { errEofInTagName(); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME: - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED: - case NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG: { + case BEFORE_ATTRIBUTE_NAME: + case AFTER_ATTRIBUTE_VALUE_QUOTED: + case SELF_CLOSING_START_TAG: { errEofWithoutGt(); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_ATTRIBUTE_NAME: { + case ATTRIBUTE_NAME: { errEofInAttributeName(); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME: - case NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE: { + case AFTER_ATTRIBUTE_NAME: + case BEFORE_ATTRIBUTE_VALUE: { errEofWithoutGt(); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED: - case NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED: { + case ATTRIBUTE_VALUE_DOUBLE_QUOTED: + case ATTRIBUTE_VALUE_SINGLE_QUOTED: + case ATTRIBUTE_VALUE_UNQUOTED: { errEofInAttributeValue(); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_BOGUS_COMMENT: { + case BOGUS_COMMENT: { emitComment(0, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN: { + case BOGUS_COMMENT_HYPHEN: { emitComment(0, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_MARKUP_DECLARATION_OPEN: { + case MARKUP_DECLARATION_OPEN: { errBogusComment(); emitComment(0, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_MARKUP_DECLARATION_HYPHEN: { + case MARKUP_DECLARATION_HYPHEN: { errBogusComment(); emitComment(0, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_MARKUP_DECLARATION_OCTYPE: { + case MARKUP_DECLARATION_OCTYPE: { if (index < 6) { errBogusComment(); emitComment(0, 0); @@ -3665,99 +3689,99 @@ nsHtml5Tokenizer::eof() } NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_COMMENT_START: - case NS_HTML5TOKENIZER_COMMENT: { + case COMMENT_START: + case COMMENT: { errEofInComment(); emitComment(0, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_COMMENT_END: { + case COMMENT_END: { errEofInComment(); emitComment(2, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_COMMENT_END_DASH: - case NS_HTML5TOKENIZER_COMMENT_START_DASH: { + case COMMENT_END_DASH: + case COMMENT_START_DASH: { errEofInComment(); emitComment(1, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_COMMENT_END_BANG: { + case COMMENT_END_BANG: { errEofInComment(); emitComment(3, 0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_DOCTYPE: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME: { + case DOCTYPE: + case BEFORE_DOCTYPE_NAME: { errEofInDoctype(); forceQuirks = true; emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_DOCTYPE_NAME: { + case DOCTYPE_NAME: { errEofInDoctype(); strBufToDoctypeName(); forceQuirks = true; emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_DOCTYPE_UBLIC: - case NS_HTML5TOKENIZER_DOCTYPE_YSTEM: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD: - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { + case DOCTYPE_UBLIC: + case DOCTYPE_YSTEM: + case AFTER_DOCTYPE_NAME: + case AFTER_DOCTYPE_PUBLIC_KEYWORD: + case AFTER_DOCTYPE_SYSTEM_KEYWORD: + case BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { errEofInDoctype(); forceQuirks = true; emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { + case DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: + case DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { errEofInPublicId(); forceQuirks = true; publicIdentifier = strBufToString(); emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER: - case NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: - case NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { + case AFTER_DOCTYPE_PUBLIC_IDENTIFIER: + case BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: + case BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { errEofInDoctype(); forceQuirks = true; emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: - case NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { + case DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: + case DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { errEofInSystemId(); forceQuirks = true; systemIdentifier = strBufToString(); emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { + case AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { errEofInDoctype(); forceQuirks = true; emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_BOGUS_DOCTYPE: { + case BOGUS_DOCTYPE: { emitDoctypeToken(0); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE: { + case CONSUME_CHARACTER_REFERENCE: { emitOrAppendCharRefBuf(returnState); state = returnState; continue; } - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_HILO_LOOKUP: { + case CHARACTER_REFERENCE_HILO_LOOKUP: { errNoNamedCharacterMatch(); emitOrAppendCharRefBuf(returnState); state = returnState; continue; } - case NS_HTML5TOKENIZER_CHARACTER_REFERENCE_TAIL: { + case CHARACTER_REFERENCE_TAIL: { for (; ; ) { char16_t c = '\0'; entCol++; @@ -3808,7 +3832,7 @@ nsHtml5Tokenizer::eof() } else { const nsHtml5CharacterName& candidateName = nsHtml5NamedCharacters::NAMES[candidate]; if (!candidateName.length() || candidateName.charAt(candidateName.length() - 1) != ';') { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { char16_t ch; if (charRefBufMark == charRefBufLen) { ch = '\0'; @@ -3822,7 +3846,7 @@ nsHtml5Tokenizer::eof() NS_HTML5_CONTINUE(eofloop); } } - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { errUnescapedAmpersandInterpretedAsCharacterReference(); } else { errNotSemicolonTerminated(); @@ -3835,7 +3859,7 @@ nsHtml5Tokenizer::eof() emitOrAppendTwo(val, returnState); } if (charRefBufMark < charRefBufLen) { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { appendStrBuf(charRefBuf, charRefBufMark, charRefBufLen - charRefBufMark); } else { tokenHandler->characters(charRefBuf, charRefBufMark, charRefBufLen - charRefBufMark); @@ -3846,9 +3870,9 @@ nsHtml5Tokenizer::eof() NS_HTML5_CONTINUE(eofloop); } } - case NS_HTML5TOKENIZER_CONSUME_NCR: - case NS_HTML5TOKENIZER_DECIMAL_NRC_LOOP: - case NS_HTML5TOKENIZER_HEX_NCR_LOOP: { + case CONSUME_NCR: + case DECIMAL_NRC_LOOP: + case HEX_NCR_LOOP: { if (!seenDigits) { errNoDigitsInNCR(); emitOrAppendCharRefBuf(returnState); @@ -3861,15 +3885,15 @@ nsHtml5Tokenizer::eof() state = returnState; continue; } - case NS_HTML5TOKENIZER_CDATA_RSQB: { + case CDATA_RSQB: { tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 1); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_CDATA_RSQB_RSQB: { + case CDATA_RSQB_RSQB: { tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 2); NS_HTML5_BREAK(eofloop); } - case NS_HTML5TOKENIZER_DATA: + case DATA: default: { NS_HTML5_BREAK(eofloop); } @@ -3904,7 +3928,7 @@ nsHtml5Tokenizer::internalEncodingDeclaration(nsHtml5String internalCharset) void nsHtml5Tokenizer::emitOrAppendTwo(const char16_t* val, int32_t returnState) { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { appendStrBuf(val[0]); appendStrBuf(val[1]); } else { @@ -3915,7 +3939,7 @@ nsHtml5Tokenizer::emitOrAppendTwo(const char16_t* val, int32_t returnState) void nsHtml5Tokenizer::emitOrAppendOne(const char16_t* val, int32_t returnState) { - if ((returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) { + if ((returnState & DATA_AND_RCDATA_MASK)) { appendStrBuf(val[0]); } else { tokenHandler->characters(val, 0, 1); @@ -3935,14 +3959,10 @@ nsHtml5Tokenizer::end() publicIdentifier.Release(); publicIdentifier = nullptr; } - if (tagName) { - tagName->release(); - tagName = nullptr; - } - if (attributeName) { - attributeName->release(); - attributeName = nullptr; - } + tagName = nullptr; + nonInternedTagName->setNameForNonInterned(nullptr, false); + attributeName = nullptr; + nonInternedAttributeName->setNameForNonInterned(nullptr); tokenHandler->endTokenization(); if (attributes) { attributes->clear(0); @@ -3958,7 +3978,7 @@ nsHtml5Tokenizer::requestSuspension() bool nsHtml5Tokenizer::isInDataState() { - return (stateSave == NS_HTML5TOKENIZER_DATA); + return (stateSave == DATA); } void @@ -3966,7 +3986,7 @@ nsHtml5Tokenizer::resetToDataState() { clearStrBufAfterUse(); charRefBufLen = 0; - stateSave = NS_HTML5TOKENIZER_DATA; + stateSave = nsHtml5Tokenizer::DATA; lastCR = false; index = 0; forceQuirks = false; @@ -3982,14 +4002,9 @@ nsHtml5Tokenizer::resetToDataState() endTag = false; shouldSuspend = false; initDoctypeFields(); - if (tagName) { - tagName->release(); - tagName = nullptr; - } - if (attributeName) { - attributeName->release(); - attributeName = nullptr; - } + containsHyphen = false; + tagName = nullptr; + attributeName = nullptr; if (newAttributesEachTime) { if (attributes) { delete attributes; @@ -4043,21 +4058,22 @@ nsHtml5Tokenizer::loadState(nsHtml5Tokenizer* other) } else { publicIdentifier = nsHtml5Portability::newStringFromString(other->publicIdentifier); } - if (tagName) { - tagName->release(); - } + containsHyphen = other->containsHyphen; if (!other->tagName) { tagName = nullptr; + } else if (other->tagName->isInterned()) { + tagName = other->tagName; } else { - tagName = other->tagName->cloneElementName(interner); - } - if (attributeName) { - attributeName->release(); + nonInternedTagName->setNameForNonInterned(nsHtml5Portability::newLocalFromLocal(other->tagName->getName(), interner), other->tagName->isCustom()); + tagName = nonInternedTagName; } if (!other->attributeName) { attributeName = nullptr; + } else if (other->attributeName->isInterned()) { + attributeName = other->attributeName; } else { - attributeName = other->attributeName->cloneAttributeName(interner); + nonInternedAttributeName->setNameForNonInterned(nsHtml5Portability::newLocalFromLocal(other->attributeName->getLocal(nsHtml5AttributeName::HTML), interner)); + attributeName = nonInternedAttributeName; } delete attributes; if (!other->attributes) { @@ -4087,6 +4103,9 @@ nsHtml5Tokenizer::setEncodingDeclarationHandler(nsHtml5StreamParser* encodingDec nsHtml5Tokenizer::~nsHtml5Tokenizer() { MOZ_COUNT_DTOR(nsHtml5Tokenizer); + delete nonInternedTagName; + delete nonInternedAttributeName; + nonInternedTagName = nullptr; delete attributes; attributes = nullptr; } diff --git a/parser/html/nsHtml5Tokenizer.h b/parser/html/nsHtml5Tokenizer.h index 101cd1618..4572cc847 100644 --- a/parser/html/nsHtml5Tokenizer.h +++ b/parser/html/nsHtml5Tokenizer.h @@ -51,11 +51,10 @@ class nsHtml5StreamParser; -class nsHtml5TreeBuilder; -class nsHtml5MetaScanner; class nsHtml5AttributeName; class nsHtml5ElementName; -class nsHtml5HtmlAttributes; +class nsHtml5TreeBuilder; +class nsHtml5MetaScanner; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -64,6 +63,162 @@ class nsHtml5Portability; class nsHtml5Tokenizer { private: + static const int32_t DATA_AND_RCDATA_MASK = ~1; + + public: + static const int32_t DATA = 0; + + static const int32_t RCDATA = 1; + + static const int32_t SCRIPT_DATA = 2; + + static const int32_t RAWTEXT = 3; + + static const int32_t SCRIPT_DATA_ESCAPED = 4; + + static const int32_t ATTRIBUTE_VALUE_DOUBLE_QUOTED = 5; + + static const int32_t ATTRIBUTE_VALUE_SINGLE_QUOTED = 6; + + static const int32_t ATTRIBUTE_VALUE_UNQUOTED = 7; + + static const int32_t PLAINTEXT = 8; + + static const int32_t TAG_OPEN = 9; + + static const int32_t CLOSE_TAG_OPEN = 10; + + static const int32_t TAG_NAME = 11; + + static const int32_t BEFORE_ATTRIBUTE_NAME = 12; + + static const int32_t ATTRIBUTE_NAME = 13; + + static const int32_t AFTER_ATTRIBUTE_NAME = 14; + + static const int32_t BEFORE_ATTRIBUTE_VALUE = 15; + + static const int32_t AFTER_ATTRIBUTE_VALUE_QUOTED = 16; + + static const int32_t BOGUS_COMMENT = 17; + + static const int32_t MARKUP_DECLARATION_OPEN = 18; + + static const int32_t DOCTYPE = 19; + + static const int32_t BEFORE_DOCTYPE_NAME = 20; + + static const int32_t DOCTYPE_NAME = 21; + + static const int32_t AFTER_DOCTYPE_NAME = 22; + + static const int32_t BEFORE_DOCTYPE_PUBLIC_IDENTIFIER = 23; + + static const int32_t DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED = 24; + + static const int32_t DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED = 25; + + static const int32_t AFTER_DOCTYPE_PUBLIC_IDENTIFIER = 26; + + static const int32_t BEFORE_DOCTYPE_SYSTEM_IDENTIFIER = 27; + + static const int32_t DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED = 28; + + static const int32_t DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED = 29; + + static const int32_t AFTER_DOCTYPE_SYSTEM_IDENTIFIER = 30; + + static const int32_t BOGUS_DOCTYPE = 31; + + static const int32_t COMMENT_START = 32; + + static const int32_t COMMENT_START_DASH = 33; + + static const int32_t COMMENT = 34; + + static const int32_t COMMENT_END_DASH = 35; + + static const int32_t COMMENT_END = 36; + + static const int32_t COMMENT_END_BANG = 37; + + static const int32_t NON_DATA_END_TAG_NAME = 38; + + static const int32_t MARKUP_DECLARATION_HYPHEN = 39; + + static const int32_t MARKUP_DECLARATION_OCTYPE = 40; + + static const int32_t DOCTYPE_UBLIC = 41; + + static const int32_t DOCTYPE_YSTEM = 42; + + static const int32_t AFTER_DOCTYPE_PUBLIC_KEYWORD = 43; + + static const int32_t BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS = 44; + + static const int32_t AFTER_DOCTYPE_SYSTEM_KEYWORD = 45; + + static const int32_t CONSUME_CHARACTER_REFERENCE = 46; + + static const int32_t CONSUME_NCR = 47; + + static const int32_t CHARACTER_REFERENCE_TAIL = 48; + + static const int32_t HEX_NCR_LOOP = 49; + + static const int32_t DECIMAL_NRC_LOOP = 50; + + static const int32_t HANDLE_NCR_VALUE = 51; + + static const int32_t HANDLE_NCR_VALUE_RECONSUME = 52; + + static const int32_t CHARACTER_REFERENCE_HILO_LOOKUP = 53; + + static const int32_t SELF_CLOSING_START_TAG = 54; + + static const int32_t CDATA_START = 55; + + static const int32_t CDATA_SECTION = 56; + + static const int32_t CDATA_RSQB = 57; + + static const int32_t CDATA_RSQB_RSQB = 58; + + static const int32_t SCRIPT_DATA_LESS_THAN_SIGN = 59; + + static const int32_t SCRIPT_DATA_ESCAPE_START = 60; + + static const int32_t SCRIPT_DATA_ESCAPE_START_DASH = 61; + + static const int32_t SCRIPT_DATA_ESCAPED_DASH = 62; + + static const int32_t SCRIPT_DATA_ESCAPED_DASH_DASH = 63; + + static const int32_t BOGUS_COMMENT_HYPHEN = 64; + + static const int32_t RAWTEXT_RCDATA_LESS_THAN_SIGN = 65; + + static const int32_t SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN = 66; + + static const int32_t SCRIPT_DATA_DOUBLE_ESCAPE_START = 67; + + static const int32_t SCRIPT_DATA_DOUBLE_ESCAPED = 68; + + static const int32_t SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN = 69; + + static const int32_t SCRIPT_DATA_DOUBLE_ESCAPED_DASH = 70; + + static const int32_t SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH = 71; + + static const int32_t SCRIPT_DATA_DOUBLE_ESCAPE_END = 72; + + static const int32_t PROCESSING_INSTRUCTION = 73; + + static const int32_t PROCESSING_INSTRUCTION_QUESTION_MARK = 74; + + private: + static const int32_t LEAD_OFFSET = (0xD800 - (0x10000 >> 10)); + static char16_t LT_GT[]; static char16_t LT_SOLIDUS[]; static char16_t RSQB_RSQB[]; @@ -123,10 +278,13 @@ class nsHtml5Tokenizer protected: bool endTag; private: + bool containsHyphen; nsHtml5ElementName* tagName; + nsHtml5ElementName* nonInternedTagName; protected: nsHtml5AttributeName* attributeName; private: + nsHtml5AttributeName* nonInternedAttributeName; nsIAtom* doctypeName; nsHtml5String publicIdentifier; nsHtml5String systemIdentifier; @@ -306,84 +464,5 @@ class nsHtml5Tokenizer #include "nsHtml5TokenizerHSupplement.h" }; -#define NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK ~1 -#define NS_HTML5TOKENIZER_DATA 0 -#define NS_HTML5TOKENIZER_RCDATA 1 -#define NS_HTML5TOKENIZER_SCRIPT_DATA 2 -#define NS_HTML5TOKENIZER_RAWTEXT 3 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED 4 -#define NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED 5 -#define NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED 6 -#define NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED 7 -#define NS_HTML5TOKENIZER_PLAINTEXT 8 -#define NS_HTML5TOKENIZER_TAG_OPEN 9 -#define NS_HTML5TOKENIZER_CLOSE_TAG_OPEN 10 -#define NS_HTML5TOKENIZER_TAG_NAME 11 -#define NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME 12 -#define NS_HTML5TOKENIZER_ATTRIBUTE_NAME 13 -#define NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_NAME 14 -#define NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_VALUE 15 -#define NS_HTML5TOKENIZER_AFTER_ATTRIBUTE_VALUE_QUOTED 16 -#define NS_HTML5TOKENIZER_BOGUS_COMMENT 17 -#define NS_HTML5TOKENIZER_MARKUP_DECLARATION_OPEN 18 -#define NS_HTML5TOKENIZER_DOCTYPE 19 -#define NS_HTML5TOKENIZER_BEFORE_DOCTYPE_NAME 20 -#define NS_HTML5TOKENIZER_DOCTYPE_NAME 21 -#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_NAME 22 -#define NS_HTML5TOKENIZER_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER 23 -#define NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED 24 -#define NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED 25 -#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_IDENTIFIER 26 -#define NS_HTML5TOKENIZER_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER 27 -#define NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED 28 -#define NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED 29 -#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER 30 -#define NS_HTML5TOKENIZER_BOGUS_DOCTYPE 31 -#define NS_HTML5TOKENIZER_COMMENT_START 32 -#define NS_HTML5TOKENIZER_COMMENT_START_DASH 33 -#define NS_HTML5TOKENIZER_COMMENT 34 -#define NS_HTML5TOKENIZER_COMMENT_END_DASH 35 -#define NS_HTML5TOKENIZER_COMMENT_END 36 -#define NS_HTML5TOKENIZER_COMMENT_END_BANG 37 -#define NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME 38 -#define NS_HTML5TOKENIZER_MARKUP_DECLARATION_HYPHEN 39 -#define NS_HTML5TOKENIZER_MARKUP_DECLARATION_OCTYPE 40 -#define NS_HTML5TOKENIZER_DOCTYPE_UBLIC 41 -#define NS_HTML5TOKENIZER_DOCTYPE_YSTEM 42 -#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD 43 -#define NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS 44 -#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD 45 -#define NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE 46 -#define NS_HTML5TOKENIZER_CONSUME_NCR 47 -#define NS_HTML5TOKENIZER_CHARACTER_REFERENCE_TAIL 48 -#define NS_HTML5TOKENIZER_HEX_NCR_LOOP 49 -#define NS_HTML5TOKENIZER_DECIMAL_NRC_LOOP 50 -#define NS_HTML5TOKENIZER_HANDLE_NCR_VALUE 51 -#define NS_HTML5TOKENIZER_HANDLE_NCR_VALUE_RECONSUME 52 -#define NS_HTML5TOKENIZER_CHARACTER_REFERENCE_HILO_LOOKUP 53 -#define NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG 54 -#define NS_HTML5TOKENIZER_CDATA_START 55 -#define NS_HTML5TOKENIZER_CDATA_SECTION 56 -#define NS_HTML5TOKENIZER_CDATA_RSQB 57 -#define NS_HTML5TOKENIZER_CDATA_RSQB_RSQB 58 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN 59 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START 60 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH 61 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH 62 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH 63 -#define NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN 64 -#define NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN 65 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN 66 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START 67 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED 68 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN 69 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH 70 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH 71 -#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END 72 -#define NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION 73 -#define NS_HTML5TOKENIZER_PROCESSING_INSTRUCTION_QUESTION_MARK 74 -#define NS_HTML5TOKENIZER_LEAD_OFFSET (0xD800 - (0x10000 >> 10)) - - #endif diff --git a/parser/html/nsHtml5TokenizerCppSupplement.h b/parser/html/nsHtml5TokenizerCppSupplement.h index b8a9bce0e..343fceadd 100644 --- a/parser/html/nsHtml5TokenizerCppSupplement.h +++ b/parser/html/nsHtml5TokenizerCppSupplement.h @@ -62,7 +62,7 @@ nsHtml5Tokenizer::EnsureBufferSpace(int32_t aLength) void nsHtml5Tokenizer::StartPlainText() { - stateSave = NS_HTML5TOKENIZER_PLAINTEXT; + stateSave = nsHtml5Tokenizer::PLAINTEXT; } void diff --git a/parser/html/nsHtml5TreeBuilder.cpp b/parser/html/nsHtml5TreeBuilder.cpp index cea78839c..050df1f94 100644 --- a/parser/html/nsHtml5TreeBuilder.cpp +++ b/parser/html/nsHtml5TreeBuilder.cpp @@ -58,11 +58,10 @@ #include "nsIContentHandle.h" #include "nsHtml5OplessBuilder.h" -#include "nsHtml5Tokenizer.h" -#include "nsHtml5MetaScanner.h" #include "nsHtml5AttributeName.h" #include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" +#include "nsHtml5Tokenizer.h" +#include "nsHtml5MetaScanner.h" #include "nsHtml5StackNode.h" #include "nsHtml5UTF16Buffer.h" #include "nsHtml5StateSnapshot.h" @@ -81,7 +80,7 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self) templateModeStack = jArray<int32_t,int32_t>::newJArray(64); listOfActiveFormattingElements = jArray<nsHtml5StackNode*,int32_t>::newJArray(64); needToDropLF = false; - originalMode = NS_HTML5TREE_BUILDER_INITIAL; + originalMode = INITIAL; templateModePtr = -1; currentPtr = -1; listPtr = -1; @@ -104,11 +103,11 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self) if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::desc == contextName || nsHtml5Atoms::foreignObject == contextName) { elementName = nsHtml5ElementName::ELT_FOREIGNOBJECT; } - nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elementName->camelCaseName, elt); + nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elementName->getCamelCaseName(), elt); currentPtr++; stack[currentPtr] = node; - tokenizer->setState(NS_HTML5TOKENIZER_DATA); - mode = NS_HTML5TREE_BUILDER_FRAMESET_OK; + tokenizer->setState(nsHtml5Tokenizer::DATA); + mode = FRAMESET_OK; } else if (contextNamespace == kNameSpaceID_MathML) { nsHtml5ElementName* elementName = nsHtml5ElementName::ELT_MATH; if (nsHtml5Atoms::mi == contextName || nsHtml5Atoms::mo == contextName || nsHtml5Atoms::mn == contextName || nsHtml5Atoms::ms == contextName || nsHtml5Atoms::mtext == contextName) { @@ -116,38 +115,38 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self) } else if (nsHtml5Atoms::annotation_xml == contextName) { elementName = nsHtml5ElementName::ELT_ANNOTATION_XML; } - nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, elementName->name, false); + nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, elementName->getName(), false); currentPtr++; stack[currentPtr] = node; - tokenizer->setState(NS_HTML5TOKENIZER_DATA); - mode = NS_HTML5TREE_BUILDER_FRAMESET_OK; + tokenizer->setState(nsHtml5Tokenizer::DATA); + mode = FRAMESET_OK; } else { nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_HTML, elt); currentPtr++; stack[currentPtr] = node; if (nsHtml5Atoms::template_ == contextName) { - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_TEMPLATE); + pushTemplateMode(IN_TEMPLATE); } resetTheInsertionMode(); formPointer = getFormPointerForContext(contextNode); if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::textarea == contextName) { - tokenizer->setState(NS_HTML5TOKENIZER_RCDATA); + tokenizer->setState(nsHtml5Tokenizer::RCDATA); } else if (nsHtml5Atoms::style == contextName || nsHtml5Atoms::xmp == contextName || nsHtml5Atoms::iframe == contextName || nsHtml5Atoms::noembed == contextName || nsHtml5Atoms::noframes == contextName || (scriptingEnabled && nsHtml5Atoms::noscript == contextName)) { - tokenizer->setState(NS_HTML5TOKENIZER_RAWTEXT); + tokenizer->setState(nsHtml5Tokenizer::RAWTEXT); } else if (nsHtml5Atoms::plaintext == contextName) { - tokenizer->setState(NS_HTML5TOKENIZER_PLAINTEXT); + tokenizer->setState(nsHtml5Tokenizer::PLAINTEXT); } else if (nsHtml5Atoms::script == contextName) { - tokenizer->setState(NS_HTML5TOKENIZER_SCRIPT_DATA); + tokenizer->setState(nsHtml5Tokenizer::SCRIPT_DATA); } else { - tokenizer->setState(NS_HTML5TOKENIZER_DATA); + tokenizer->setState(nsHtml5Tokenizer::DATA); } } contextName = nullptr; contextNode = nullptr; } else { - mode = NS_HTML5TREE_BUILDER_INITIAL; + mode = INITIAL; if (tokenizer->isViewingXmlSource()) { - nsIContentHandle* elt = createElement(kNameSpaceID_SVG, nsHtml5Atoms::svg, tokenizer->emptyAttributes(), nullptr); + nsIContentHandle* elt = createElement(kNameSpaceID_SVG, nsHtml5Atoms::svg, tokenizer->emptyAttributes(), nullptr, svgCreator(NS_NewSVGSVGElement)); nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_SVG, nsHtml5Atoms::svg, elt); currentPtr++; stack[currentPtr] = node; @@ -159,7 +158,7 @@ void nsHtml5TreeBuilder::doctype(nsIAtom* name, nsHtml5String publicIdentifier, nsHtml5String systemIdentifier, bool forceQuirks) { needToDropLF = false; - if (!isInForeign() && mode == NS_HTML5TREE_BUILDER_INITIAL) { + if (!isInForeign() && mode == INITIAL) { nsHtml5String emptyString = nsHtml5Portability::newEmptyString(); appendDoctypeToDocument(!name ? nsHtml5Atoms::emptystring : name, !publicIdentifier ? emptyString : publicIdentifier, !systemIdentifier ? emptyString : systemIdentifier); emptyString.Release(); @@ -172,7 +171,7 @@ nsHtml5TreeBuilder::doctype(nsIAtom* name, nsHtml5String publicIdentifier, nsHtm } else { documentModeInternal(STANDARDS_MODE, publicIdentifier, systemIdentifier, false); } - mode = NS_HTML5TREE_BUILDER_BEFORE_HTML; + mode = BEFORE_HTML; return; } errStrayDoctype(); @@ -185,14 +184,14 @@ nsHtml5TreeBuilder::comment(char16_t* buf, int32_t start, int32_t length) needToDropLF = false; if (!isInForeign()) { switch(mode) { - case NS_HTML5TREE_BUILDER_INITIAL: - case NS_HTML5TREE_BUILDER_BEFORE_HTML: - case NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY: - case NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET: { + case INITIAL: + case BEFORE_HTML: + case AFTER_AFTER_BODY: + case AFTER_AFTER_FRAMESET: { appendCommentToDocument(buf, start, length); return; } - case NS_HTML5TREE_BUILDER_AFTER_BODY: { + case AFTER_BODY: { flushCharacters(); appendComment(stack[0]->node, buf, start, length); return; @@ -224,20 +223,20 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt } } switch(mode) { - case NS_HTML5TREE_BUILDER_IN_BODY: - case NS_HTML5TREE_BUILDER_IN_CELL: - case NS_HTML5TREE_BUILDER_IN_CAPTION: { + case IN_BODY: + case IN_CELL: + case IN_CAPTION: { if (!isInForeignButNotHtmlOrMathTextIntegrationPoint()) { reconstructTheActiveFormattingElements(); } } - case NS_HTML5TREE_BUILDER_TEXT: { + case TEXT: { accumulateCharacters(buf, start, length); return; } - case NS_HTML5TREE_BUILDER_IN_TABLE: - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: - case NS_HTML5TREE_BUILDER_IN_ROW: { + case IN_TABLE: + case IN_TABLE_BODY: + case IN_ROW: { accumulateCharactersForced(buf, start, length); return; } @@ -251,25 +250,25 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt case '\r': case '\f': { switch(mode) { - case NS_HTML5TREE_BUILDER_INITIAL: - case NS_HTML5TREE_BUILDER_BEFORE_HTML: - case NS_HTML5TREE_BUILDER_BEFORE_HEAD: { + case INITIAL: + case BEFORE_HTML: + case BEFORE_HEAD: { start = i + 1; continue; } - case NS_HTML5TREE_BUILDER_IN_HEAD: - case NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT: - case NS_HTML5TREE_BUILDER_AFTER_HEAD: - case NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP: - case NS_HTML5TREE_BUILDER_IN_FRAMESET: - case NS_HTML5TREE_BUILDER_AFTER_FRAMESET: { + case IN_HEAD: + case IN_HEAD_NOSCRIPT: + case AFTER_HEAD: + case IN_COLUMN_GROUP: + case IN_FRAMESET: + case AFTER_FRAMESET: { continue; } - case NS_HTML5TREE_BUILDER_FRAMESET_OK: - case NS_HTML5TREE_BUILDER_IN_TEMPLATE: - case NS_HTML5TREE_BUILDER_IN_BODY: - case NS_HTML5TREE_BUILDER_IN_CELL: - case NS_HTML5TREE_BUILDER_IN_CAPTION: { + case FRAMESET_OK: + case IN_TEMPLATE: + case IN_BODY: + case IN_CELL: + case IN_CAPTION: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; @@ -280,20 +279,20 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt } NS_HTML5_BREAK(charactersloop); } - case NS_HTML5TREE_BUILDER_IN_SELECT: - case NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE: { + case IN_SELECT: + case IN_SELECT_IN_TABLE: { NS_HTML5_BREAK(charactersloop); } - case NS_HTML5TREE_BUILDER_IN_TABLE: - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: - case NS_HTML5TREE_BUILDER_IN_ROW: { + case IN_TABLE: + case IN_TABLE_BODY: + case IN_ROW: { accumulateCharactersForced(buf, i, 1); start = i + 1; continue; } - case NS_HTML5TREE_BUILDER_AFTER_BODY: - case NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY: - case NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET: { + case AFTER_BODY: + case AFTER_AFTER_BODY: + case AFTER_AFTER_FRAMESET: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; @@ -306,41 +305,41 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt } default: { switch(mode) { - case NS_HTML5TREE_BUILDER_INITIAL: { + case INITIAL: { documentModeInternal(QUIRKS_MODE, nullptr, nullptr, false); - mode = NS_HTML5TREE_BUILDER_BEFORE_HTML; + mode = BEFORE_HTML; i--; continue; } - case NS_HTML5TREE_BUILDER_BEFORE_HTML: { + case BEFORE_HTML: { appendHtmlElementToDocumentAndPush(); - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + mode = BEFORE_HEAD; i--; continue; } - case NS_HTML5TREE_BUILDER_BEFORE_HEAD: { + case BEFORE_HEAD: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; } flushCharacters(); appendToCurrentNodeAndPushHeadElement(nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; i--; continue; } - case NS_HTML5TREE_BUILDER_IN_HEAD: { + case IN_HEAD: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; } flushCharacters(); pop(); - mode = NS_HTML5TREE_BUILDER_AFTER_HEAD; + mode = AFTER_HEAD; i--; continue; } - case NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT: { + case IN_HEAD_NOSCRIPT: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; @@ -348,31 +347,31 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt errNonSpaceInNoscriptInHead(); flushCharacters(); pop(); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; i--; continue; } - case NS_HTML5TREE_BUILDER_AFTER_HEAD: { + case AFTER_HEAD: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; } flushCharacters(); appendToCurrentNodeAndPushBodyElement(); - mode = NS_HTML5TREE_BUILDER_FRAMESET_OK; + mode = FRAMESET_OK; i--; continue; } - case NS_HTML5TREE_BUILDER_FRAMESET_OK: { + case FRAMESET_OK: { framesetOk = false; - mode = NS_HTML5TREE_BUILDER_IN_BODY; + mode = IN_BODY; i--; continue; } - case NS_HTML5TREE_BUILDER_IN_TEMPLATE: - case NS_HTML5TREE_BUILDER_IN_BODY: - case NS_HTML5TREE_BUILDER_IN_CELL: - case NS_HTML5TREE_BUILDER_IN_CAPTION: { + case IN_TEMPLATE: + case IN_BODY: + case IN_CELL: + case IN_CAPTION: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; @@ -383,41 +382,41 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt } NS_HTML5_BREAK(charactersloop); } - case NS_HTML5TREE_BUILDER_IN_TABLE: - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: - case NS_HTML5TREE_BUILDER_IN_ROW: { + case IN_TABLE: + case IN_TABLE_BODY: + case IN_ROW: { accumulateCharactersForced(buf, i, 1); start = i + 1; continue; } - case NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP: { + case IN_COLUMN_GROUP: { if (start < i) { accumulateCharacters(buf, start, i - start); start = i; } - if (!currentPtr || stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + if (!currentPtr || stack[currentPtr]->getGroup() == nsHtml5TreeBuilder::TEMPLATE) { errNonSpaceInColgroupInFragment(); start = i + 1; continue; } flushCharacters(); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; i--; continue; } - case NS_HTML5TREE_BUILDER_IN_SELECT: - case NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE: { + case IN_SELECT: + case IN_SELECT_IN_TABLE: { NS_HTML5_BREAK(charactersloop); } - case NS_HTML5TREE_BUILDER_AFTER_BODY: { + case AFTER_BODY: { errNonSpaceAfterBody(); - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; i--; continue; } - case NS_HTML5TREE_BUILDER_IN_FRAMESET: { + case IN_FRAMESET: { if (start < i) { accumulateCharacters(buf, start, i - start); } @@ -425,7 +424,7 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt start = i + 1; continue; } - case NS_HTML5TREE_BUILDER_AFTER_FRAMESET: { + case AFTER_FRAMESET: { if (start < i) { accumulateCharacters(buf, start, i - start); } @@ -433,13 +432,13 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt start = i + 1; continue; } - case NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY: { + case AFTER_AFTER_BODY: { errNonSpaceInTrailer(); - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; i--; continue; } - case NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET: { + case AFTER_AFTER_FRAMESET: { if (start < i) { accumulateCharacters(buf, start, i - start); } @@ -462,7 +461,7 @@ nsHtml5TreeBuilder::characters(const char16_t* buf, int32_t start, int32_t lengt void nsHtml5TreeBuilder::zeroOriginatingReplacementCharacter() { - if (mode == NS_HTML5TREE_BUILDER_TEXT) { + if (mode == TEXT) { accumulateCharacters(REPLACEMENT_CHARACTER, 0, 1); return; } @@ -480,57 +479,57 @@ nsHtml5TreeBuilder::eof() flushCharacters(); for (; ; ) { switch(mode) { - case NS_HTML5TREE_BUILDER_INITIAL: { + case INITIAL: { documentModeInternal(QUIRKS_MODE, nullptr, nullptr, false); - mode = NS_HTML5TREE_BUILDER_BEFORE_HTML; + mode = BEFORE_HTML; continue; } - case NS_HTML5TREE_BUILDER_BEFORE_HTML: { + case BEFORE_HTML: { appendHtmlElementToDocumentAndPush(); - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + mode = BEFORE_HEAD; continue; } - case NS_HTML5TREE_BUILDER_BEFORE_HEAD: { + case BEFORE_HEAD: { appendToCurrentNodeAndPushHeadElement(nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; continue; } - case NS_HTML5TREE_BUILDER_IN_HEAD: { + case IN_HEAD: { while (currentPtr > 0) { popOnEof(); } - mode = NS_HTML5TREE_BUILDER_AFTER_HEAD; + mode = AFTER_HEAD; continue; } - case NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT: { + case IN_HEAD_NOSCRIPT: { while (currentPtr > 1) { popOnEof(); } - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; continue; } - case NS_HTML5TREE_BUILDER_AFTER_HEAD: { + case AFTER_HEAD: { appendToCurrentNodeAndPushBodyElement(); - mode = NS_HTML5TREE_BUILDER_IN_BODY; + mode = IN_BODY; continue; } - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: - case NS_HTML5TREE_BUILDER_IN_ROW: - case NS_HTML5TREE_BUILDER_IN_TABLE: - case NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE: - case NS_HTML5TREE_BUILDER_IN_SELECT: - case NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP: - case NS_HTML5TREE_BUILDER_FRAMESET_OK: - case NS_HTML5TREE_BUILDER_IN_CAPTION: - case NS_HTML5TREE_BUILDER_IN_CELL: - case NS_HTML5TREE_BUILDER_IN_BODY: { + case IN_TABLE_BODY: + case IN_ROW: + case IN_TABLE: + case IN_SELECT_IN_TABLE: + case IN_SELECT: + case IN_COLUMN_GROUP: + case FRAMESET_OK: + case IN_CAPTION: + case IN_CELL: + case IN_BODY: { if (isTemplateModeStackEmpty()) { NS_HTML5_BREAK(eofloop); } } - case NS_HTML5TREE_BUILDER_IN_TEMPLATE: { + case IN_TEMPLATE: { int32_t eltPos = findLast(nsHtml5Atoms::template_); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment); NS_HTML5_BREAK(eofloop); } @@ -545,21 +544,21 @@ nsHtml5TreeBuilder::eof() resetTheInsertionMode(); continue; } - case NS_HTML5TREE_BUILDER_TEXT: { - if (originalMode == NS_HTML5TREE_BUILDER_AFTER_HEAD) { + case TEXT: { + if (originalMode == AFTER_HEAD) { popOnEof(); } popOnEof(); mode = originalMode; continue; } - case NS_HTML5TREE_BUILDER_IN_FRAMESET: { + case IN_FRAMESET: { NS_HTML5_BREAK(eofloop); } - case NS_HTML5TREE_BUILDER_AFTER_BODY: - case NS_HTML5TREE_BUILDER_AFTER_FRAMESET: - case NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY: - case NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET: + case AFTER_BODY: + case AFTER_FRAMESET: + case AFTER_AFTER_BODY: + case AFTER_AFTER_FRAMESET: default: { NS_HTML5_BREAK(eofloop); } @@ -609,32 +608,32 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu needToDropLF = false; starttagloop: for (; ; ) { int32_t group = elementName->getGroup(); - nsIAtom* name = elementName->name; + nsIAtom* name = elementName->getName(); if (isInForeign()) { nsHtml5StackNode* currentNode = stack[currentPtr]; int32_t currNs = currentNode->ns; - if (!(currentNode->isHtmlIntegrationPoint() || (currNs == kNameSpaceID_MathML && ((currentNode->getGroup() == NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT && group != NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK) || (currentNode->getGroup() == NS_HTML5TREE_BUILDER_ANNOTATION_XML && group == NS_HTML5TREE_BUILDER_SVG))))) { + if (!(currentNode->isHtmlIntegrationPoint() || (currNs == kNameSpaceID_MathML && ((currentNode->getGroup() == MI_MO_MN_MS_MTEXT && group != MGLYPH_OR_MALIGNMARK) || (currentNode->getGroup() == ANNOTATION_XML && group == SVG))))) { switch(group) { - case NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: - case NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR: - case NS_HTML5TREE_BUILDER_DD_OR_DT: - case NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL: - case NS_HTML5TREE_BUILDER_EMBED: - case NS_HTML5TREE_BUILDER_IMG: - case NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: - case NS_HTML5TREE_BUILDER_HEAD: - case NS_HTML5TREE_BUILDER_HR: - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_META: - case NS_HTML5TREE_BUILDER_NOBR: - case NS_HTML5TREE_BUILDER_P: - case NS_HTML5TREE_BUILDER_PRE_OR_LISTING: - case NS_HTML5TREE_BUILDER_TABLE: - case NS_HTML5TREE_BUILDER_FONT: { - if (!(group == NS_HTML5TREE_BUILDER_FONT && !(attributes->contains(nsHtml5AttributeName::ATTR_COLOR) || attributes->contains(nsHtml5AttributeName::ATTR_FACE) || attributes->contains(nsHtml5AttributeName::ATTR_SIZE)))) { + case B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: + case DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: + case BODY: + case BR: + case RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR: + case DD_OR_DT: + case UL_OR_OL_OR_DL: + case EMBED: + case IMG: + case H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: + case HEAD: + case HR: + case LI: + case META: + case NOBR: + case P: + case PRE_OR_LISTING: + case TABLE: + case FONT: { + if (!(group == FONT && !(attributes->contains(nsHtml5AttributeName::ATTR_COLOR) || attributes->contains(nsHtml5AttributeName::ATTR_FACE) || attributes->contains(nsHtml5AttributeName::ATTR_SIZE)))) { errHtmlStartTagInForeignContext(name); if (!fragment) { while (!isSpecialParentInForeign(stack[currentPtr])) { @@ -671,93 +670,93 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } } switch(mode) { - case NS_HTML5TREE_BUILDER_IN_TEMPLATE: { + case IN_TEMPLATE: { switch(group) { - case NS_HTML5TREE_BUILDER_COL: { + case COL: { popTemplateMode(); - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP); - mode = NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP; + pushTemplateMode(IN_COLUMN_GROUP); + mode = IN_COLUMN_GROUP; continue; } - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: { + case CAPTION: + case COLGROUP: + case TBODY_OR_THEAD_OR_TFOOT: { popTemplateMode(); - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_TABLE); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + pushTemplateMode(IN_TABLE); + mode = IN_TABLE; continue; } - case NS_HTML5TREE_BUILDER_TR: { + case TR: { popTemplateMode(); - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_TABLE_BODY); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + pushTemplateMode(IN_TABLE_BODY); + mode = IN_TABLE_BODY; continue; } - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case TD_OR_TH: { popTemplateMode(); - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_ROW); - mode = NS_HTML5TREE_BUILDER_IN_ROW; + pushTemplateMode(IN_ROW); + mode = IN_ROW; continue; } - case NS_HTML5TREE_BUILDER_META: { + case META: { checkMetaCharset(attributes); appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TITLE: { + case TITLE: { startTagTitleInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BASE: - case NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND: { + case BASE: + case LINK_OR_BASEFONT_OR_BGSOUND: { appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_SCRIPT: { + case SCRIPT: { startTagScriptInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOFRAMES: - case NS_HTML5TREE_BUILDER_STYLE: { + case NOFRAMES: + case STYLE: { startTagGenericRawText(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { startTagTemplateInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } default: { popTemplateMode(); - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_BODY); - mode = NS_HTML5TREE_BUILDER_IN_BODY; + pushTemplateMode(IN_BODY); + mode = IN_BODY; continue; } } } - case NS_HTML5TREE_BUILDER_IN_ROW: { + case IN_ROW: { switch(group) { - case NS_HTML5TREE_BUILDER_TD_OR_TH: { - clearStackBackTo(findLastOrRoot(NS_HTML5TREE_BUILDER_TR)); + case TD_OR_TH: { + clearStackBackTo(findLastOrRoot(nsHtml5TreeBuilder::TR)); appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_CELL; + mode = IN_CELL; insertMarker(); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: { - eltPos = findLastOrRoot(NS_HTML5TREE_BUILDER_TR); + case CAPTION: + case COL: + case COLGROUP: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: { + eltPos = findLastOrRoot(nsHtml5TreeBuilder::TR); if (!eltPos) { MOZ_ASSERT(fragment || isTemplateContents()); errNoTableRowToClose(); @@ -765,42 +764,42 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; continue; } default: ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: { + case IN_TABLE_BODY: { switch(group) { - case NS_HTML5TREE_BUILDER_TR: { + case TR: { clearStackBackTo(findLastInTableScopeOrRootTemplateTbodyTheadTfoot()); appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_ROW; + mode = IN_ROW; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case TD_OR_TH: { errStartTagInTableBody(name); clearStackBackTo(findLastInTableScopeOrRootTemplateTbodyTheadTfoot()); appendToCurrentNodeAndPushElement(nsHtml5ElementName::ELT_TR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_ROW; + mode = IN_ROW; continue; } - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: { + case CAPTION: + case COL: + case COLGROUP: + case TBODY_OR_THEAD_OR_TFOOT: { eltPos = findLastInTableScopeOrRootTemplateTbodyTheadTfoot(); - if (!eltPos || stack[eltPos]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + if (!eltPos || stack[eltPos]->getGroup() == TEMPLATE) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayStartTag(name); NS_HTML5_BREAK(starttagloop); } else { clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; continue; } } @@ -808,51 +807,51 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_TABLE: { + case IN_TABLE: { for (; ; ) { switch(group) { - case NS_HTML5TREE_BUILDER_CAPTION: { - clearStackBackTo(findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE)); + case CAPTION: { + clearStackBackTo(findLastOrRoot(nsHtml5TreeBuilder::TABLE)); insertMarker(); appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_CAPTION; + mode = IN_CAPTION; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_COLGROUP: { - clearStackBackTo(findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE)); + case COLGROUP: { + clearStackBackTo(findLastOrRoot(nsHtml5TreeBuilder::TABLE)); appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP; + mode = IN_COLUMN_GROUP; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_COL: { - clearStackBackTo(findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE)); + case COL: { + clearStackBackTo(findLastOrRoot(nsHtml5TreeBuilder::TABLE)); appendToCurrentNodeAndPushElement(nsHtml5ElementName::ELT_COLGROUP, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP; + mode = IN_COLUMN_GROUP; NS_HTML5_CONTINUE(starttagloop); } - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: { - clearStackBackTo(findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE)); + case TBODY_OR_THEAD_OR_TFOOT: { + clearStackBackTo(findLastOrRoot(nsHtml5TreeBuilder::TABLE)); appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TR: - case NS_HTML5TREE_BUILDER_TD_OR_TH: { - clearStackBackTo(findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE)); + case TR: + case TD_OR_TH: { + clearStackBackTo(findLastOrRoot(nsHtml5TreeBuilder::TABLE)); appendToCurrentNodeAndPushElement(nsHtml5ElementName::ELT_TBODY, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; NS_HTML5_CONTINUE(starttagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { NS_HTML5_BREAK(intableloop); } - case NS_HTML5TREE_BUILDER_TABLE: { + case TABLE: { errTableSeenWhileTableOpen(); eltPos = findLastInTableScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment || isTemplateContents()); NS_HTML5_BREAK(starttagloop); } @@ -866,33 +865,33 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu resetTheInsertionMode(); NS_HTML5_CONTINUE(starttagloop); } - case NS_HTML5TREE_BUILDER_SCRIPT: { + case SCRIPT: { appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_SCRIPT_DATA, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::SCRIPT_DATA, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_STYLE: { + case STYLE: { appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_INPUT: { + case INPUT: { errStartTagInTable(name); if (!nsHtml5Portability::lowerCaseLiteralEqualsIgnoreAsciiCaseString("hidden", attributes->getValue(nsHtml5AttributeName::ATTR_TYPE))) { NS_HTML5_BREAK(intableloop); } - appendVoidElementToCurrent(name, attributes, formPointer); + appendVoidInputToCurrent(attributes, formPointer); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_FORM: { + case FORM: { if (!!formPointer || isTemplateContents()) { errFormWhenFormOpen(); NS_HTML5_BREAK(starttagloop); @@ -911,17 +910,17 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } intableloop_end: ; } - case NS_HTML5TREE_BUILDER_IN_CAPTION: { + case IN_CAPTION: { switch(group) { - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case CAPTION: + case COL: + case COLGROUP: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: + case TD_OR_TH: { errStrayStartTag(name); eltPos = findLastInTableScope(nsHtml5Atoms::caption); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { NS_HTML5_BREAK(starttagloop); } generateImpliedEndTags(); @@ -932,23 +931,23 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu pop(); } clearTheListOfActiveFormattingElementsUpToTheLastMarker(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; continue; } default: ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_CELL: { + case IN_CELL: { switch(group) { - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case CAPTION: + case COL: + case COLGROUP: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: + case TD_OR_TH: { eltPos = findLastInTableScopeTdTh(); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errNoCellToClose(); NS_HTML5_BREAK(starttagloop); } else { @@ -960,11 +959,11 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu ; // fall through } } - case NS_HTML5TREE_BUILDER_FRAMESET_OK: { + case FRAMESET_OK: { switch(group) { - case NS_HTML5TREE_BUILDER_FRAMESET: { - if (mode == NS_HTML5TREE_BUILDER_FRAMESET_OK) { - if (!currentPtr || stack[1]->getGroup() != NS_HTML5TREE_BUILDER_BODY) { + case FRAMESET: { + if (mode == FRAMESET_OK) { + if (!currentPtr || stack[1]->getGroup() != BODY) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayStartTag(name); NS_HTML5_BREAK(starttagloop); @@ -975,7 +974,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu pop(); } appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_FRAMESET; + mode = IN_FRAMESET; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } @@ -984,37 +983,37 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu NS_HTML5_BREAK(starttagloop); } } - case NS_HTML5TREE_BUILDER_PRE_OR_LISTING: - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_DD_OR_DT: - case NS_HTML5TREE_BUILDER_BUTTON: - case NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET: - case NS_HTML5TREE_BUILDER_OBJECT: - case NS_HTML5TREE_BUILDER_TABLE: - case NS_HTML5TREE_BUILDER_AREA_OR_WBR: - case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_EMBED: - case NS_HTML5TREE_BUILDER_IMG: - case NS_HTML5TREE_BUILDER_INPUT: - case NS_HTML5TREE_BUILDER_KEYGEN: - case NS_HTML5TREE_BUILDER_HR: - case NS_HTML5TREE_BUILDER_TEXTAREA: - case NS_HTML5TREE_BUILDER_XMP: - case NS_HTML5TREE_BUILDER_IFRAME: - case NS_HTML5TREE_BUILDER_SELECT: { - if (mode == NS_HTML5TREE_BUILDER_FRAMESET_OK && !(group == NS_HTML5TREE_BUILDER_INPUT && nsHtml5Portability::lowerCaseLiteralEqualsIgnoreAsciiCaseString("hidden", attributes->getValue(nsHtml5AttributeName::ATTR_TYPE)))) { + case PRE_OR_LISTING: + case LI: + case DD_OR_DT: + case BUTTON: + case MARQUEE_OR_APPLET: + case OBJECT: + case TABLE: + case AREA_OR_WBR: + case BR: + case EMBED: + case IMG: + case INPUT: + case KEYGEN: + case HR: + case TEXTAREA: + case XMP: + case IFRAME: + case SELECT: { + if (mode == FRAMESET_OK && !(group == INPUT && nsHtml5Portability::lowerCaseLiteralEqualsIgnoreAsciiCaseString("hidden", attributes->getValue(nsHtml5AttributeName::ATTR_TYPE)))) { framesetOk = false; - mode = NS_HTML5TREE_BUILDER_IN_BODY; + mode = IN_BODY; } } default: ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_BODY: { + case IN_BODY: { for (; ; ) { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1022,43 +1021,43 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BASE: - case NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND: - case NS_HTML5TREE_BUILDER_META: - case NS_HTML5TREE_BUILDER_STYLE: - case NS_HTML5TREE_BUILDER_SCRIPT: - case NS_HTML5TREE_BUILDER_TITLE: - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case BASE: + case LINK_OR_BASEFONT_OR_BGSOUND: + case META: + case STYLE: + case SCRIPT: + case TITLE: + case TEMPLATE: { NS_HTML5_BREAK(inbodyloop); } - case NS_HTML5TREE_BUILDER_BODY: { - if (!currentPtr || stack[1]->getGroup() != NS_HTML5TREE_BUILDER_BODY || isTemplateContents()) { + case BODY: { + if (!currentPtr || stack[1]->getGroup() != BODY || isTemplateContents()) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayStartTag(name); NS_HTML5_BREAK(starttagloop); } errFooSeenWhenFooOpen(name); framesetOk = false; - if (mode == NS_HTML5TREE_BUILDER_FRAMESET_OK) { - mode = NS_HTML5TREE_BUILDER_IN_BODY; + if (mode == FRAMESET_OK) { + mode = IN_BODY; } if (addAttributesToBody(attributes)) { attributes = nullptr; } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_P: - case NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: - case NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL: - case NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: { + case P: + case DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: + case UL_OR_OL_OR_DL: + case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: { implicitlyCloseP(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: { + case H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: { implicitlyCloseP(); - if (stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6) { + if (stack[currentPtr]->getGroup() == H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6) { errHeadingWhenHeadingOpen(); pop(); } @@ -1066,20 +1065,20 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_FIELDSET: { + case FIELDSET: { implicitlyCloseP(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes, formPointer); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_PRE_OR_LISTING: { + case PRE_OR_LISTING: { implicitlyCloseP(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); needToDropLF = true; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_FORM: { + case FORM: { if (!!formPointer && !isTemplateContents()) { errFormWhenFormOpen(); NS_HTML5_BREAK(starttagloop); @@ -1090,8 +1089,8 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu NS_HTML5_BREAK(starttagloop); } } - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_DD_OR_DT: { + case LI: + case DD_OR_DT: { eltPos = currentPtr; for (; ; ) { nsHtml5StackNode* node = stack[eltPos]; @@ -1114,14 +1113,14 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_PLAINTEXT: { + case PLAINTEXT: { implicitlyCloseP(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_PLAINTEXT, elementName); + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::PLAINTEXT, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_A: { + case A: { int32_t activeAPos = findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(nsHtml5Atoms::a); if (activeAPos != -1) { errFooSeenWhenFooOpen(name); @@ -1140,17 +1139,17 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: - case NS_HTML5TREE_BUILDER_FONT: { + case B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: + case FONT: { reconstructTheActiveFormattingElements(); - maybeForgetEarlierDuplicateFormattingElement(elementName->name, attributes); + maybeForgetEarlierDuplicateFormattingElement(elementName->getName(), attributes); appendToCurrentNodeAndPushFormattingElementMayFoster(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOBR: { + case NOBR: { reconstructTheActiveFormattingElements(); - if (NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK != findLastInScope(nsHtml5Atoms::nobr)) { + if (nsHtml5TreeBuilder::NOT_FOUND_ON_STACK != findLastInScope(nsHtml5Atoms::nobr)) { errFooSeenWhenFooOpen(name); adoptionAgencyEndTag(nsHtml5Atoms::nobr); reconstructTheActiveFormattingElements(); @@ -1159,9 +1158,9 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BUTTON: { + case BUTTON: { eltPos = findLastInScope(name); - if (eltPos != NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos != nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errFooSeenWhenFooOpen(name); generateImpliedEndTags(); if (!!MOZ_UNLIKELY(mViewSource) && !isCurrent(name)) { @@ -1178,65 +1177,65 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu NS_HTML5_BREAK(starttagloop); } } - case NS_HTML5TREE_BUILDER_OBJECT: { + case OBJECT: { reconstructTheActiveFormattingElements(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes, formPointer); insertMarker(); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET: { + case MARQUEE_OR_APPLET: { reconstructTheActiveFormattingElements(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); insertMarker(); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TABLE: { + case TABLE: { if (!quirks) { implicitlyCloseP(); } appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_EMBED: - case NS_HTML5TREE_BUILDER_AREA_OR_WBR: { + case BR: + case EMBED: + case AREA_OR_WBR: { reconstructTheActiveFormattingElements(); } #ifdef ENABLE_VOID_MENUITEM - case NS_HTML5TREE_BUILDER_MENUITEM: + case MENUITEM: #endif - case NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK: { + case PARAM_OR_SOURCE_OR_TRACK: { appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_HR: { + case HR: { implicitlyCloseP(); appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_IMAGE: { + case IMAGE: { errImage(); elementName = nsHtml5ElementName::ELT_IMG; NS_HTML5_CONTINUE(starttagloop); } - case NS_HTML5TREE_BUILDER_IMG: - case NS_HTML5TREE_BUILDER_KEYGEN: - case NS_HTML5TREE_BUILDER_INPUT: { + case IMG: + case KEYGEN: + case INPUT: { reconstructTheActiveFormattingElements(); - appendVoidElementToCurrentMayFoster(name, attributes, formPointer); + appendVoidElementToCurrentMayFoster(elementName, attributes, formPointer); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_ISINDEX: { + case ISINDEX: { errIsindex(); if (!!formPointer && !isTemplateContents()) { NS_HTML5_BREAK(starttagloop); @@ -1260,15 +1259,15 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu nsHtml5HtmlAttributes* inputAttributes = new nsHtml5HtmlAttributes(0); inputAttributes->addAttribute(nsHtml5AttributeName::ATTR_NAME, nsHtml5Portability::newStringFromLiteral("isindex"), tokenizer->getLineNumber()); for (int32_t i = 0; i < attributes->getLength(); i++) { - nsHtml5AttributeName* attributeQName = attributes->getAttributeNameNoBoundsCheck(i); - if (nsHtml5AttributeName::ATTR_NAME == attributeQName || nsHtml5AttributeName::ATTR_PROMPT == attributeQName) { + nsIAtom* attributeQName = attributes->getLocalNameNoBoundsCheck(i); + if (nsHtml5Atoms::name == attributeQName || nsHtml5Atoms::prompt == attributeQName) { attributes->releaseValue(i); - } else if (nsHtml5AttributeName::ATTR_ACTION != attributeQName) { - inputAttributes->addAttribute(attributeQName, attributes->getValueNoBoundsCheck(i), attributes->getLineNoBoundsCheck(i)); + } else if (nsHtml5Atoms::action != attributeQName) { + inputAttributes->AddAttributeWithLocal(attributeQName, attributes->getValueNoBoundsCheck(i), attributes->getLineNoBoundsCheck(i)); } } attributes->clearWithoutReleasingContents(); - appendVoidElementToCurrentMayFoster(nsHtml5Atoms::input, inputAttributes, formPointer); + appendVoidElementToCurrentMayFoster(nsHtml5ElementName::ELT_INPUT, inputAttributes, formPointer); pop(); appendVoidElementToCurrentMayFoster(nsHtml5ElementName::ELT_HR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); pop(); @@ -1278,26 +1277,26 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu selfClosing = false; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TEXTAREA: { + case TEXTAREA: { appendToCurrentNodeAndPushElementMayFoster(elementName, attributes, formPointer); - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RCDATA, elementName); + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RCDATA, elementName); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; + mode = TEXT; needToDropLF = true; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_XMP: { + case XMP: { implicitlyCloseP(); reconstructTheActiveFormattingElements(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOSCRIPT: { + case NOSCRIPT: { if (!scriptingEnabled) { reconstructTheActiveFormattingElements(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); @@ -1306,36 +1305,36 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } else { } } - case NS_HTML5TREE_BUILDER_NOFRAMES: - case NS_HTML5TREE_BUILDER_IFRAME: - case NS_HTML5TREE_BUILDER_NOEMBED: { + case NOFRAMES: + case IFRAME: + case NOEMBED: { startTagGenericRawText(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_SELECT: { + case SELECT: { reconstructTheActiveFormattingElements(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes, formPointer); switch(mode) { - case NS_HTML5TREE_BUILDER_IN_TABLE: - case NS_HTML5TREE_BUILDER_IN_CAPTION: - case NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP: - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: - case NS_HTML5TREE_BUILDER_IN_ROW: - case NS_HTML5TREE_BUILDER_IN_CELL: { - mode = NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE; + case IN_TABLE: + case IN_CAPTION: + case IN_COLUMN_GROUP: + case IN_TABLE_BODY: + case IN_ROW: + case IN_CELL: { + mode = IN_SELECT_IN_TABLE; break; } default: { - mode = NS_HTML5TREE_BUILDER_IN_SELECT; + mode = IN_SELECT; break; } } attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_OPTGROUP: - case NS_HTML5TREE_BUILDER_OPTION: { + case OPTGROUP: + case OPTION: { if (isCurrent(nsHtml5Atoms::option)) { pop(); } @@ -1344,13 +1343,13 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_RB_OR_RTC: { + case RB_OR_RTC: { eltPos = findLastInScope(nsHtml5Atoms::ruby); - if (eltPos != NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos != NOT_FOUND_ON_STACK) { generateImpliedEndTags(); } if (eltPos != currentPtr) { - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == NOT_FOUND_ON_STACK) { errStartTagSeenWithoutRuby(name); } else { errUnclosedChildrenInRuby(); @@ -1360,14 +1359,14 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_RT_OR_RP: { + case RT_OR_RP: { eltPos = findLastInScope(nsHtml5Atoms::ruby); - if (eltPos != NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos != NOT_FOUND_ON_STACK) { generateImpliedEndTagsExceptFor(nsHtml5Atoms::rtc); } if (eltPos != currentPtr) { if (!isCurrent(nsHtml5Atoms::rtc)) { - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == NOT_FOUND_ON_STACK) { errStartTagSeenWithoutRuby(name); } else { errUnclosedChildrenInRuby(); @@ -1378,7 +1377,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_MATH: { + case MATH: { reconstructTheActiveFormattingElements(); attributes->adjustForMath(); if (selfClosing) { @@ -1390,7 +1389,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_SVG: { + case SVG: { reconstructTheActiveFormattingElements(); attributes->adjustForSvg(); if (selfClosing) { @@ -1402,19 +1401,19 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_FRAME: - case NS_HTML5TREE_BUILDER_FRAMESET: - case NS_HTML5TREE_BUILDER_HEAD: { + case CAPTION: + case COL: + case COLGROUP: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: + case TD_OR_TH: + case FRAME: + case FRAMESET: + case HEAD: { errStrayStartTag(name); NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_OUTPUT: { + case OUTPUT: { reconstructTheActiveFormattingElements(); appendToCurrentNodeAndPushElementMayFoster(elementName, attributes, formPointer); attributes = nullptr; @@ -1430,10 +1429,10 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } inbodyloop_end: ; } - case NS_HTML5TREE_BUILDER_IN_HEAD: { + case IN_HEAD: { for (; ; ) { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1441,66 +1440,66 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BASE: - case NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND: { + case BASE: + case LINK_OR_BASEFONT_OR_BGSOUND: { appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_META: { + case META: { NS_HTML5_BREAK(inheadloop); } - case NS_HTML5TREE_BUILDER_TITLE: { + case TITLE: { startTagTitleInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOSCRIPT: { + case NOSCRIPT: { if (scriptingEnabled) { appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); } else { appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT; + mode = IN_HEAD_NOSCRIPT; } attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_SCRIPT: { + case SCRIPT: { startTagScriptInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_STYLE: - case NS_HTML5TREE_BUILDER_NOFRAMES: { + case STYLE: + case NOFRAMES: { startTagGenericRawText(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_HEAD: { + case HEAD: { errFooSeenWhenFooOpen(name); NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { startTagTemplateInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } default: { pop(); - mode = NS_HTML5TREE_BUILDER_AFTER_HEAD; + mode = AFTER_HEAD; NS_HTML5_CONTINUE(starttagloop); } } } inheadloop_end: ; } - case NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT: { + case IN_HEAD_NOSCRIPT: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1508,47 +1507,47 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND: { + case LINK_OR_BASEFONT_OR_BGSOUND: { appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_META: { + case META: { checkMetaCharset(attributes); appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_STYLE: - case NS_HTML5TREE_BUILDER_NOFRAMES: { + case STYLE: + case NOFRAMES: { appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_HEAD: { + case HEAD: { errFooSeenWhenFooOpen(name); NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOSCRIPT: { + case NOSCRIPT: { errFooSeenWhenFooOpen(name); NS_HTML5_BREAK(starttagloop); } default: { errBadStartTagInHead(name); pop(); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; continue; } } } - case NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP: { + case IN_COLUMN_GROUP: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1556,39 +1555,39 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_COL: { + case COL: { appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { startTagTemplateInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } default: { - if (!currentPtr || stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + if (!currentPtr || stack[currentPtr]->getGroup() == TEMPLATE) { MOZ_ASSERT(fragment || isTemplateContents()); errGarbageInColgroup(); NS_HTML5_BREAK(starttagloop); } pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; continue; } } } - case NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE: { + case IN_SELECT_IN_TABLE: { switch(group) { - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_TABLE: { + case CAPTION: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: + case TD_OR_TH: + case TABLE: { errStartTagWithSelectOpen(name); eltPos = findLastInTableScope(nsHtml5Atoms::select); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment); NS_HTML5_BREAK(starttagloop); } @@ -1602,9 +1601,9 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_SELECT: { + case IN_SELECT: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment) { addAttributesToHtml(attributes); @@ -1612,7 +1611,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_OPTION: { + case OPTION: { if (isCurrent(nsHtml5Atoms::option)) { pop(); } @@ -1620,7 +1619,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_OPTGROUP: { + case OPTGROUP: { if (isCurrent(nsHtml5Atoms::option)) { pop(); } @@ -1631,10 +1630,10 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_SELECT: { + case SELECT: { errStartSelectWhereEndSelectExpected(); eltPos = findLastInTableScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment); errNoSelectInTableScope(); NS_HTML5_BREAK(starttagloop); @@ -1646,12 +1645,12 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu NS_HTML5_BREAK(starttagloop); } } - case NS_HTML5TREE_BUILDER_INPUT: - case NS_HTML5TREE_BUILDER_TEXTAREA: - case NS_HTML5TREE_BUILDER_KEYGEN: { + case INPUT: + case TEXTAREA: + case KEYGEN: { errStartTagWithSelectOpen(name); eltPos = findLastInTableScope(nsHtml5Atoms::select); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment); NS_HTML5_BREAK(starttagloop); } @@ -1661,12 +1660,12 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu resetTheInsertionMode(); continue; } - case NS_HTML5TREE_BUILDER_SCRIPT: { + case SCRIPT: { startTagScriptInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { startTagTemplateInHead(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); @@ -1677,9 +1676,9 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } } } - case NS_HTML5TREE_BUILDER_AFTER_BODY: { + case AFTER_BODY: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1689,19 +1688,19 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } default: { errStrayStartTag(name); - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; continue; } } } - case NS_HTML5TREE_BUILDER_IN_FRAMESET: { + case IN_FRAMESET: { switch(group) { - case NS_HTML5TREE_BUILDER_FRAMESET: { + case FRAMESET: { appendToCurrentNodeAndPushElement(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_FRAME: { + case FRAME: { appendVoidElementToCurrentMayFoster(elementName, attributes); selfClosing = false; attributes = nullptr; @@ -1711,9 +1710,9 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu ; // fall through } } - case NS_HTML5TREE_BUILDER_AFTER_FRAMESET: { + case AFTER_FRAMESET: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1721,11 +1720,11 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOFRAMES: { + case NOFRAMES: { appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } @@ -1735,34 +1734,34 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } } } - case NS_HTML5TREE_BUILDER_INITIAL: { + case INITIAL: { errStartTagWithoutDoctype(); documentModeInternal(QUIRKS_MODE, nullptr, nullptr, false); - mode = NS_HTML5TREE_BUILDER_BEFORE_HTML; + mode = BEFORE_HTML; continue; } - case NS_HTML5TREE_BUILDER_BEFORE_HTML: { + case BEFORE_HTML: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { if (attributes == nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES) { appendHtmlElementToDocumentAndPush(); } else { appendHtmlElementToDocumentAndPush(attributes); } - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + mode = BEFORE_HEAD; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } default: { appendHtmlElementToDocumentAndPush(); - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + mode = BEFORE_HEAD; continue; } } } - case NS_HTML5TREE_BUILDER_BEFORE_HEAD: { + case BEFORE_HEAD: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1770,22 +1769,22 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_HEAD: { + case HEAD: { appendToCurrentNodeAndPushHeadElement(attributes); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } default: { appendToCurrentNodeAndPushHeadElement(nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; continue; } } } - case NS_HTML5TREE_BUILDER_AFTER_HEAD: { + case AFTER_HEAD: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1793,24 +1792,24 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BODY: { + case BODY: { if (!attributes->getLength()) { appendToCurrentNodeAndPushBodyElement(); } else { appendToCurrentNodeAndPushBodyElement(attributes); } framesetOk = false; - mode = NS_HTML5TREE_BUILDER_IN_BODY; + mode = IN_BODY; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_FRAMESET: { + case FRAMESET: { appendToCurrentNodeAndPushElement(elementName, attributes); - mode = NS_HTML5TREE_BUILDER_IN_FRAMESET; + mode = IN_FRAMESET; attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { errFooBetweenHeadAndBody(name); pushHeadPointerOntoStack(); nsHtml5StackNode* headOnStack = stack[currentPtr]; @@ -1819,8 +1818,8 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_BASE: - case NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND: { + case BASE: + case LINK_OR_BASEFONT_OR_BGSOUND: { errFooBetweenHeadAndBody(name); pushHeadPointerOntoStack(); appendVoidElementToCurrentMayFoster(elementName, attributes); @@ -1829,7 +1828,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_META: { + case META: { errFooBetweenHeadAndBody(name); checkMetaCharset(attributes); pushHeadPointerOntoStack(); @@ -1839,51 +1838,51 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_SCRIPT: { + case SCRIPT: { errFooBetweenHeadAndBody(name); pushHeadPointerOntoStack(); appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_SCRIPT_DATA, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::SCRIPT_DATA, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_STYLE: - case NS_HTML5TREE_BUILDER_NOFRAMES: { + case STYLE: + case NOFRAMES: { errFooBetweenHeadAndBody(name); pushHeadPointerOntoStack(); appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_TITLE: { + case TITLE: { errFooBetweenHeadAndBody(name); pushHeadPointerOntoStack(); appendToCurrentNodeAndPushElement(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RCDATA, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RCDATA, elementName); attributes = nullptr; NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_HEAD: { + case HEAD: { errStrayStartTag(name); NS_HTML5_BREAK(starttagloop); } default: { appendToCurrentNodeAndPushBodyElement(); - mode = NS_HTML5TREE_BUILDER_FRAMESET_OK; + mode = FRAMESET_OK; continue; } } } - case NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY: { + case AFTER_AFTER_BODY: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1894,14 +1893,14 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu default: { errStrayStartTag(name); - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; continue; } } } - case NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET: { + case AFTER_AFTER_FRAMESET: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { errStrayStartTag(name); if (!fragment && !isTemplateContents()) { addAttributesToHtml(attributes); @@ -1909,7 +1908,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } NS_HTML5_BREAK(starttagloop); } - case NS_HTML5TREE_BUILDER_NOFRAMES: { + case NOFRAMES: { startTagGenericRawText(elementName, attributes); attributes = nullptr; NS_HTML5_BREAK(starttagloop); @@ -1920,7 +1919,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } } } - case NS_HTML5TREE_BUILDER_TEXT: { + case TEXT: { MOZ_ASSERT(false); NS_HTML5_BREAK(starttagloop); } @@ -1940,8 +1939,8 @@ nsHtml5TreeBuilder::startTagTitleInHead(nsHtml5ElementName* elementName, nsHtml5 { appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RCDATA, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RCDATA, elementName); } void @@ -1949,8 +1948,8 @@ nsHtml5TreeBuilder::startTagGenericRawText(nsHtml5ElementName* elementName, nsHt { appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT, elementName); } void @@ -1958,8 +1957,8 @@ nsHtml5TreeBuilder::startTagScriptInHead(nsHtml5ElementName* elementName, nsHtml { appendToCurrentNodeAndPushElementMayFoster(elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_TEXT; - tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_SCRIPT_DATA, elementName); + mode = TEXT; + tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::SCRIPT_DATA, elementName); } void @@ -1969,14 +1968,14 @@ nsHtml5TreeBuilder::startTagTemplateInHead(nsHtml5ElementName* elementName, nsHt insertMarker(); framesetOk = false; originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_TEMPLATE; - pushTemplateMode(NS_HTML5TREE_BUILDER_IN_TEMPLATE); + mode = IN_TEMPLATE; + pushTemplateMode(IN_TEMPLATE); } bool nsHtml5TreeBuilder::isTemplateContents() { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK != findLast(nsHtml5Atoms::template_); + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK != findLast(nsHtml5Atoms::template_); } bool @@ -1989,24 +1988,24 @@ bool nsHtml5TreeBuilder::isSpecialParentInForeign(nsHtml5StackNode* stackNode) { int32_t ns = stackNode->ns; - return (kNameSpaceID_XHTML == ns) || (stackNode->isHtmlIntegrationPoint()) || ((kNameSpaceID_MathML == ns) && (stackNode->getGroup() == NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT)); + return (kNameSpaceID_XHTML == ns) || (stackNode->isHtmlIntegrationPoint()) || ((kNameSpaceID_MathML == ns) && (stackNode->getGroup() == MI_MO_MN_MS_MTEXT)); } nsHtml5String nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHtml5TreeBuilder* tb) { - int32_t charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + int32_t charsetState = CHARSET_INITIAL; int32_t start = -1; int32_t end = -1; autoJArray<char16_t,int32_t> buffer = nsHtml5Portability::newCharArrayFromString(attributeValue); for (int32_t i = 0; i < buffer.length; i++) { char16_t c = buffer[i]; switch(charsetState) { - case NS_HTML5TREE_BUILDER_CHARSET_INITIAL: { + case CHARSET_INITIAL: { switch(c) { case 'c': case 'C': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_C; + charsetState = CHARSET_C; continue; } default: { @@ -2014,85 +2013,85 @@ nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHt } } } - case NS_HTML5TREE_BUILDER_CHARSET_C: { + case CHARSET_C: { switch(c) { case 'h': case 'H': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_H; + charsetState = CHARSET_H; continue; } default: { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + charsetState = CHARSET_INITIAL; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_H: { + case CHARSET_H: { switch(c) { case 'a': case 'A': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_A; + charsetState = CHARSET_A; continue; } default: { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + charsetState = CHARSET_INITIAL; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_A: { + case CHARSET_A: { switch(c) { case 'r': case 'R': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_R; + charsetState = CHARSET_R; continue; } default: { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + charsetState = CHARSET_INITIAL; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_R: { + case CHARSET_R: { switch(c) { case 's': case 'S': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_S; + charsetState = CHARSET_S; continue; } default: { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + charsetState = CHARSET_INITIAL; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_S: { + case CHARSET_S: { switch(c) { case 'e': case 'E': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_E; + charsetState = CHARSET_E; continue; } default: { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + charsetState = CHARSET_INITIAL; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_E: { + case CHARSET_E: { switch(c) { case 't': case 'T': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_T; + charsetState = CHARSET_T; continue; } default: { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_INITIAL; + charsetState = CHARSET_INITIAL; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_T: { + case CHARSET_T: { switch(c) { case '\t': case '\n': @@ -2102,7 +2101,7 @@ nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHt continue; } case '=': { - charsetState = NS_HTML5TREE_BUILDER_CHARSET_EQUALS; + charsetState = CHARSET_EQUALS; continue; } default: { @@ -2110,7 +2109,7 @@ nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHt } } } - case NS_HTML5TREE_BUILDER_CHARSET_EQUALS: { + case CHARSET_EQUALS: { switch(c) { case '\t': case '\n': @@ -2121,22 +2120,22 @@ nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHt } case '\'': { start = i + 1; - charsetState = NS_HTML5TREE_BUILDER_CHARSET_SINGLE_QUOTED; + charsetState = CHARSET_SINGLE_QUOTED; continue; } case '\"': { start = i + 1; - charsetState = NS_HTML5TREE_BUILDER_CHARSET_DOUBLE_QUOTED; + charsetState = CHARSET_DOUBLE_QUOTED; continue; } default: { start = i; - charsetState = NS_HTML5TREE_BUILDER_CHARSET_UNQUOTED; + charsetState = CHARSET_UNQUOTED; continue; } } } - case NS_HTML5TREE_BUILDER_CHARSET_SINGLE_QUOTED: { + case CHARSET_SINGLE_QUOTED: { switch(c) { case '\'': { end = i; @@ -2147,7 +2146,7 @@ nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHt } } } - case NS_HTML5TREE_BUILDER_CHARSET_DOUBLE_QUOTED: { + case CHARSET_DOUBLE_QUOTED: { switch(c) { case '\"': { end = i; @@ -2158,7 +2157,7 @@ nsHtml5TreeBuilder::extractCharsetFromContent(nsHtml5String attributeValue, nsHt } } } - case NS_HTML5TREE_BUILDER_CHARSET_UNQUOTED: { + case CHARSET_UNQUOTED: { switch(c) { case '\t': case '\n': @@ -2220,7 +2219,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) needToDropLF = false; int32_t eltPos; int32_t group = elementName->getGroup(); - nsIAtom* name = elementName->name; + nsIAtom* name = elementName->getName(); for (; ; ) { if (isInForeign()) { if (stack[currentPtr]->name != name) { @@ -2248,9 +2247,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } switch(mode) { - case NS_HTML5TREE_BUILDER_IN_TEMPLATE: { + case IN_TEMPLATE: { switch(group) { - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { break; } default: { @@ -2259,10 +2258,10 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_IN_ROW: { + case IN_ROW: { switch(group) { - case NS_HTML5TREE_BUILDER_TR: { - eltPos = findLastOrRoot(NS_HTML5TREE_BUILDER_TR); + case TR: { + eltPos = findLastOrRoot(nsHtml5TreeBuilder::TR); if (!eltPos) { MOZ_ASSERT(fragment || isTemplateContents()); errNoTableRowToClose(); @@ -2270,11 +2269,11 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TABLE: { - eltPos = findLastOrRoot(NS_HTML5TREE_BUILDER_TR); + case TABLE: { + eltPos = findLastOrRoot(nsHtml5TreeBuilder::TR); if (!eltPos) { MOZ_ASSERT(fragment || isTemplateContents()); errNoTableRowToClose(); @@ -2282,15 +2281,15 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; continue; } - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: { - if (findLastInTableScope(name) == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + case TBODY_OR_THEAD_OR_TFOOT: { + if (findLastInTableScope(name) == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } - eltPos = findLastOrRoot(NS_HTML5TREE_BUILDER_TR); + eltPos = findLastOrRoot(nsHtml5TreeBuilder::TR); if (!eltPos) { MOZ_ASSERT(fragment || isTemplateContents()); errNoTableRowToClose(); @@ -2298,15 +2297,15 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; continue; } - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case BODY: + case CAPTION: + case COL: + case COLGROUP: + case HTML: + case TD_OR_TH: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2314,9 +2313,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_TABLE_BODY: { + case IN_TABLE_BODY: { switch(group) { - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: { + case TBODY_OR_THEAD_OR_TFOOT: { eltPos = findLastOrRoot(name); if (!eltPos) { errStrayEndTag(name); @@ -2324,28 +2323,28 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TABLE: { + case TABLE: { eltPos = findLastInTableScopeOrRootTemplateTbodyTheadTfoot(); - if (!eltPos || stack[eltPos]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + if (!eltPos || stack[eltPos]->getGroup() == TEMPLATE) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } clearStackBackTo(eltPos); pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; continue; } - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_TR: { + case BODY: + case CAPTION: + case COL: + case COLGROUP: + case HTML: + case TD_OR_TH: + case TR: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2353,11 +2352,11 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_TABLE: { + case IN_TABLE: { switch(group) { - case NS_HTML5TREE_BUILDER_TABLE: { + case TABLE: { eltPos = findLast(nsHtml5Atoms::table); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); @@ -2368,18 +2367,18 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) resetTheInsertionMode(); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_TR: { + case BODY: + case CAPTION: + case COL: + case COLGROUP: + case HTML: + case TBODY_OR_THEAD_OR_TFOOT: + case TD_OR_TH: + case TR: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { break; } default: { @@ -2387,11 +2386,11 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_IN_CAPTION: { + case IN_CAPTION: { switch(group) { - case NS_HTML5TREE_BUILDER_CAPTION: { + case CAPTION: { eltPos = findLastInTableScope(nsHtml5Atoms::caption); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { NS_HTML5_BREAK(endtagloop); } generateImpliedEndTags(); @@ -2402,13 +2401,13 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) pop(); } clearTheListOfActiveFormattingElementsUpToTheLastMarker(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TABLE: { + case TABLE: { errTableClosedWhileCaptionOpen(); eltPos = findLastInTableScope(nsHtml5Atoms::caption); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { NS_HTML5_BREAK(endtagloop); } generateImpliedEndTags(); @@ -2419,16 +2418,16 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) pop(); } clearTheListOfActiveFormattingElementsUpToTheLastMarker(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; continue; } - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_TR: { + case BODY: + case COL: + case COLGROUP: + case HTML: + case TBODY_OR_THEAD_OR_TFOOT: + case TD_OR_TH: + case TR: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2436,11 +2435,11 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_CELL: { + case IN_CELL: { switch(group) { - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case TD_OR_TH: { eltPos = findLastInTableScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2452,13 +2451,13 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) pop(); } clearTheListOfActiveFormattingElementsUpToTheLastMarker(); - mode = NS_HTML5TREE_BUILDER_IN_ROW; + mode = IN_ROW; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TABLE: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: { - if (findLastInTableScope(name) == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + case TABLE: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: { + if (findLastInTableScope(name) == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(name == nsHtml5Atoms::tbody || name == nsHtml5Atoms::tfoot || name == nsHtml5Atoms::thead || fragment || isTemplateContents()); errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); @@ -2466,11 +2465,11 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) closeTheCell(findLastInTableScopeTdTh()); continue; } - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_COL: - case NS_HTML5TREE_BUILDER_COLGROUP: - case NS_HTML5TREE_BUILDER_HTML: { + case BODY: + case CAPTION: + case COL: + case COLGROUP: + case HTML: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2478,10 +2477,10 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) ; // fall through } } - case NS_HTML5TREE_BUILDER_FRAMESET_OK: - case NS_HTML5TREE_BUILDER_IN_BODY: { + case FRAMESET_OK: + case IN_BODY: { switch(group) { - case NS_HTML5TREE_BUILDER_BODY: { + case BODY: { if (!isSecondOnStackBody()) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayEndTag(name); @@ -2491,15 +2490,15 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) if (MOZ_UNLIKELY(mViewSource)) { for (int32_t i = 2; i <= currentPtr; i++) { switch(stack[i]->getGroup()) { - case NS_HTML5TREE_BUILDER_DD_OR_DT: - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_OPTGROUP: - case NS_HTML5TREE_BUILDER_OPTION: - case NS_HTML5TREE_BUILDER_P: - case NS_HTML5TREE_BUILDER_RB_OR_RTC: - case NS_HTML5TREE_BUILDER_RT_OR_RP: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: { + case DD_OR_DT: + case LI: + case OPTGROUP: + case OPTION: + case P: + case RB_OR_RTC: + case RT_OR_RP: + case TD_OR_TH: + case TBODY_OR_THEAD_OR_TFOOT: { break; } default: { @@ -2510,10 +2509,10 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } uncloseloop1_end: ; } - mode = NS_HTML5TREE_BUILDER_AFTER_BODY; + mode = AFTER_BODY; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { if (!isSecondOnStackBody()) { MOZ_ASSERT(fragment || isTemplateContents()); errStrayEndTag(name); @@ -2522,15 +2521,15 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) if (MOZ_UNLIKELY(mViewSource)) { for (int32_t i = 0; i <= currentPtr; i++) { switch(stack[i]->getGroup()) { - case NS_HTML5TREE_BUILDER_DD_OR_DT: - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_P: - case NS_HTML5TREE_BUILDER_RB_OR_RTC: - case NS_HTML5TREE_BUILDER_RT_OR_RP: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TD_OR_TH: - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_HTML: { + case DD_OR_DT: + case LI: + case P: + case RB_OR_RTC: + case RT_OR_RP: + case TBODY_OR_THEAD_OR_TFOOT: + case TD_OR_TH: + case BODY: + case HTML: { break; } default: { @@ -2541,17 +2540,17 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } uncloseloop2_end: ; } - mode = NS_HTML5TREE_BUILDER_AFTER_BODY; + mode = AFTER_BODY; continue; } - case NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: - case NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL: - case NS_HTML5TREE_BUILDER_PRE_OR_LISTING: - case NS_HTML5TREE_BUILDER_FIELDSET: - case NS_HTML5TREE_BUILDER_BUTTON: - case NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: { + case DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: + case UL_OR_OL_OR_DL: + case PRE_OR_LISTING: + case FIELDSET: + case BUTTON: + case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: { eltPos = findLastInScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); } else { generateImpliedEndTags(); @@ -2564,7 +2563,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_FORM: { + case FORM: { if (!isTemplateContents()) { if (!formPointer) { errStrayEndTag(name); @@ -2572,7 +2571,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } formPointer = nullptr; eltPos = findLastInScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2584,7 +2583,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) NS_HTML5_BREAK(endtagloop); } else { eltPos = findLastInScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } @@ -2598,9 +2597,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) NS_HTML5_BREAK(endtagloop); } } - case NS_HTML5TREE_BUILDER_P: { + case P: { eltPos = findLastInButtonScope(nsHtml5Atoms::p); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errNoElementToCloseButEndTagSeen(nsHtml5Atoms::p); if (isInForeign()) { errHtmlStartTagInForeignContext(name); @@ -2612,7 +2611,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) NS_HTML5_BREAK(endtagloop); } generateImpliedEndTagsExceptFor(nsHtml5Atoms::p); - MOZ_ASSERT(eltPos != NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK); + MOZ_ASSERT(eltPos != nsHtml5TreeBuilder::NOT_FOUND_ON_STACK); if (!!MOZ_UNLIKELY(mViewSource) && eltPos != currentPtr) { errUnclosedElements(eltPos, name); } @@ -2621,9 +2620,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_LI: { + case LI: { eltPos = findLastInListScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errNoElementToCloseButEndTagSeen(name); } else { generateImpliedEndTagsExceptFor(name); @@ -2636,9 +2635,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_DD_OR_DT: { + case DD_OR_DT: { eltPos = findLastInScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errNoElementToCloseButEndTagSeen(name); } else { generateImpliedEndTagsExceptFor(name); @@ -2651,9 +2650,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: { + case H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: { eltPos = findLastInScopeHn(); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); } else { generateImpliedEndTags(); @@ -2666,10 +2665,10 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_OBJECT: - case NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET: { + case OBJECT: + case MARQUEE_OR_APPLET: { eltPos = findLastInScope(name); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(name); } else { generateImpliedEndTags(); @@ -2683,7 +2682,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_BR: { + case BR: { errEndTagBr(); if (isInForeign()) { errHtmlStartTagInForeignContext(name); @@ -2695,41 +2694,41 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) appendVoidElementToCurrentMayFoster(elementName, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { break; } - case NS_HTML5TREE_BUILDER_AREA_OR_WBR: + case AREA_OR_WBR: #ifdef ENABLE_VOID_MENUITEM - case NS_HTML5TREE_BUILDER_MENUITEM: + case MENUITEM: #endif - case NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK: - case NS_HTML5TREE_BUILDER_EMBED: - case NS_HTML5TREE_BUILDER_IMG: - case NS_HTML5TREE_BUILDER_IMAGE: - case NS_HTML5TREE_BUILDER_INPUT: - case NS_HTML5TREE_BUILDER_KEYGEN: - case NS_HTML5TREE_BUILDER_HR: - case NS_HTML5TREE_BUILDER_ISINDEX: - case NS_HTML5TREE_BUILDER_IFRAME: - case NS_HTML5TREE_BUILDER_NOEMBED: - case NS_HTML5TREE_BUILDER_NOFRAMES: - case NS_HTML5TREE_BUILDER_SELECT: - case NS_HTML5TREE_BUILDER_TABLE: - case NS_HTML5TREE_BUILDER_TEXTAREA: { + case PARAM_OR_SOURCE_OR_TRACK: + case EMBED: + case IMG: + case IMAGE: + case INPUT: + case KEYGEN: + case HR: + case ISINDEX: + case IFRAME: + case NOEMBED: + case NOFRAMES: + case SELECT: + case TABLE: + case TEXTAREA: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_NOSCRIPT: { + case NOSCRIPT: { if (scriptingEnabled) { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } else { } } - case NS_HTML5TREE_BUILDER_A: - case NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: - case NS_HTML5TREE_BUILDER_FONT: - case NS_HTML5TREE_BUILDER_NOBR: { + case A: + case B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: + case FONT: + case NOBR: { if (adoptionAgencyEndTag(name)) { NS_HTML5_BREAK(endtagloop); } @@ -2760,21 +2759,21 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_IN_HEAD: { + case IN_HEAD: { switch(group) { - case NS_HTML5TREE_BUILDER_HEAD: { + case HEAD: { pop(); - mode = NS_HTML5TREE_BUILDER_AFTER_HEAD; + mode = AFTER_HEAD; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_BODY: { + case BR: + case HTML: + case BODY: { pop(); - mode = NS_HTML5TREE_BUILDER_AFTER_HEAD; + mode = AFTER_HEAD; continue; } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { endTagTemplateInHead(); NS_HTML5_BREAK(endtagloop); } @@ -2784,17 +2783,17 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT: { + case IN_HEAD_NOSCRIPT: { switch(group) { - case NS_HTML5TREE_BUILDER_NOSCRIPT: { + case NOSCRIPT: { pop(); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_BR: { + case BR: { errStrayEndTag(name); pop(); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; continue; } default: { @@ -2803,49 +2802,49 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP: { + case IN_COLUMN_GROUP: { switch(group) { - case NS_HTML5TREE_BUILDER_COLGROUP: { - if (!currentPtr || stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + case COLGROUP: { + if (!currentPtr || stack[currentPtr]->getGroup() == nsHtml5TreeBuilder::TEMPLATE) { MOZ_ASSERT(fragment || isTemplateContents()); errGarbageInColgroup(); NS_HTML5_BREAK(endtagloop); } pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_COL: { + case COL: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { endTagTemplateInHead(); NS_HTML5_BREAK(endtagloop); } default: { - if (!currentPtr || stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + if (!currentPtr || stack[currentPtr]->getGroup() == nsHtml5TreeBuilder::TEMPLATE) { MOZ_ASSERT(fragment || isTemplateContents()); errGarbageInColgroup(); NS_HTML5_BREAK(endtagloop); } pop(); - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; continue; } } } - case NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE: { + case IN_SELECT_IN_TABLE: { switch(group) { - case NS_HTML5TREE_BUILDER_CAPTION: - case NS_HTML5TREE_BUILDER_TABLE: - case NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT: - case NS_HTML5TREE_BUILDER_TR: - case NS_HTML5TREE_BUILDER_TD_OR_TH: { + case CAPTION: + case TABLE: + case TBODY_OR_THEAD_OR_TFOOT: + case TR: + case TD_OR_TH: { errEndTagSeenWithSelectOpen(name); - if (findLastInTableScope(name) != NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (findLastInTableScope(name) != nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { eltPos = findLastInTableScope(nsHtml5Atoms::select); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment); NS_HTML5_BREAK(endtagloop); } @@ -2862,9 +2861,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) ; // fall through } } - case NS_HTML5TREE_BUILDER_IN_SELECT: { + case IN_SELECT: { switch(group) { - case NS_HTML5TREE_BUILDER_OPTION: { + case OPTION: { if (isCurrent(nsHtml5Atoms::option)) { pop(); NS_HTML5_BREAK(endtagloop); @@ -2873,7 +2872,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) NS_HTML5_BREAK(endtagloop); } } - case NS_HTML5TREE_BUILDER_OPTGROUP: { + case OPTGROUP: { if (isCurrent(nsHtml5Atoms::option) && nsHtml5Atoms::optgroup == stack[currentPtr - 1]->name) { pop(); } @@ -2884,9 +2883,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_SELECT: { + case SELECT: { eltPos = findLastInTableScope(nsHtml5Atoms::select); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { MOZ_ASSERT(fragment); errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); @@ -2897,7 +2896,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) resetTheInsertionMode(); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { endTagTemplateInHead(); NS_HTML5_BREAK(endtagloop); } @@ -2907,27 +2906,27 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_AFTER_BODY: { + case AFTER_BODY: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { + case HTML: { if (fragment) { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } else { - mode = NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY; + mode = AFTER_AFTER_BODY; NS_HTML5_BREAK(endtagloop); } } default: { errEndTagAfterBody(); - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; continue; } } } - case NS_HTML5TREE_BUILDER_IN_FRAMESET: { + case IN_FRAMESET: { switch(group) { - case NS_HTML5TREE_BUILDER_FRAMESET: { + case FRAMESET: { if (!currentPtr) { MOZ_ASSERT(fragment); errStrayEndTag(name); @@ -2935,7 +2934,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } pop(); if ((!fragment) && !isCurrent(nsHtml5Atoms::frameset)) { - mode = NS_HTML5TREE_BUILDER_AFTER_FRAMESET; + mode = AFTER_FRAMESET; } NS_HTML5_BREAK(endtagloop); } @@ -2945,10 +2944,10 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_AFTER_FRAMESET: { + case AFTER_FRAMESET: { switch(group) { - case NS_HTML5TREE_BUILDER_HTML: { - mode = NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET; + case HTML: { + mode = AFTER_AFTER_FRAMESET; NS_HTML5_BREAK(endtagloop); } default: { @@ -2957,20 +2956,20 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_INITIAL: { + case INITIAL: { errEndTagSeenWithoutDoctype(); documentModeInternal(QUIRKS_MODE, nullptr, nullptr, false); - mode = NS_HTML5TREE_BUILDER_BEFORE_HTML; + mode = BEFORE_HTML; continue; } - case NS_HTML5TREE_BUILDER_BEFORE_HTML: { + case BEFORE_HTML: { switch(group) { - case NS_HTML5TREE_BUILDER_HEAD: - case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_BODY: { + case HEAD: + case BR: + case HTML: + case BODY: { appendHtmlElementToDocumentAndPush(); - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + mode = BEFORE_HEAD; continue; } default: { @@ -2979,14 +2978,14 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_BEFORE_HEAD: { + case BEFORE_HEAD: { switch(group) { - case NS_HTML5TREE_BUILDER_HEAD: - case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_BODY: { + case HEAD: + case BR: + case HTML: + case BODY: { appendToCurrentNodeAndPushHeadElement(nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; continue; } default: { @@ -2995,17 +2994,17 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_AFTER_HEAD: { + case AFTER_HEAD: { switch(group) { - case NS_HTML5TREE_BUILDER_TEMPLATE: { + case TEMPLATE: { endTagTemplateInHead(); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_HTML: - case NS_HTML5TREE_BUILDER_BODY: - case NS_HTML5TREE_BUILDER_BR: { + case HTML: + case BODY: + case BR: { appendToCurrentNodeAndPushBodyElement(); - mode = NS_HTML5TREE_BUILDER_FRAMESET_OK; + mode = FRAMESET_OK; continue; } default: { @@ -3014,18 +3013,18 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } } - case NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY: { + case AFTER_AFTER_BODY: { errStrayEndTag(name); - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; continue; } - case NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET: { + case AFTER_AFTER_FRAMESET: { errStrayEndTag(name); NS_HTML5_BREAK(endtagloop); } - case NS_HTML5TREE_BUILDER_TEXT: { + case TEXT: { pop(); - if (originalMode == NS_HTML5TREE_BUILDER_AFTER_HEAD) { + if (originalMode == AFTER_HEAD) { silentPop(); } mode = originalMode; @@ -3040,7 +3039,7 @@ void nsHtml5TreeBuilder::endTagTemplateInHead() { int32_t eltPos = findLast(nsHtml5Atoms::template_); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { errStrayEndTag(nsHtml5Atoms::template_); return; } @@ -3060,7 +3059,7 @@ int32_t nsHtml5TreeBuilder::findLastInTableScopeOrRootTemplateTbodyTheadTfoot() { for (int32_t i = currentPtr; i > 0; i--) { - if (stack[i]->getGroup() == NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT || stack[i]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE) { + if (stack[i]->getGroup() == nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT || stack[i]->getGroup() == nsHtml5TreeBuilder::TEMPLATE) { return i; } } @@ -3075,7 +3074,7 @@ nsHtml5TreeBuilder::findLast(nsIAtom* name) return i; } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } int32_t @@ -3086,11 +3085,11 @@ nsHtml5TreeBuilder::findLastInTableScope(nsIAtom* name) if (stack[i]->name == name) { return i; } else if (stack[i]->name == nsHtml5Atoms::table || stack[i]->name == nsHtml5Atoms::template_) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } int32_t @@ -3101,14 +3100,14 @@ nsHtml5TreeBuilder::findLastInButtonScope(nsIAtom* name) if (stack[i]->name == name) { return i; } else if (stack[i]->name == nsHtml5Atoms::button) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } if (stack[i]->isScoping()) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } int32_t @@ -3118,10 +3117,10 @@ nsHtml5TreeBuilder::findLastInScope(nsIAtom* name) if (stack[i]->ns == kNameSpaceID_XHTML && stack[i]->name == name) { return i; } else if (stack[i]->isScoping()) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } int32_t @@ -3132,27 +3131,27 @@ nsHtml5TreeBuilder::findLastInListScope(nsIAtom* name) if (stack[i]->name == name) { return i; } else if (stack[i]->name == nsHtml5Atoms::ul || stack[i]->name == nsHtml5Atoms::ol) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } if (stack[i]->isScoping()) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } int32_t nsHtml5TreeBuilder::findLastInScopeHn() { for (int32_t i = currentPtr; i > 0; i--) { - if (stack[i]->getGroup() == NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6) { + if (stack[i]->getGroup() == nsHtml5TreeBuilder::H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6) { return i; } else if (stack[i]->isScoping()) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } void @@ -3161,13 +3160,13 @@ nsHtml5TreeBuilder::generateImpliedEndTagsExceptFor(nsIAtom* name) for (; ; ) { nsHtml5StackNode* node = stack[currentPtr]; switch(node->getGroup()) { - case NS_HTML5TREE_BUILDER_P: - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_DD_OR_DT: - case NS_HTML5TREE_BUILDER_OPTION: - case NS_HTML5TREE_BUILDER_OPTGROUP: - case NS_HTML5TREE_BUILDER_RB_OR_RTC: - case NS_HTML5TREE_BUILDER_RT_OR_RP: { + case P: + case LI: + case DD_OR_DT: + case OPTION: + case OPTGROUP: + case RB_OR_RTC: + case RT_OR_RP: { if (node->ns == kNameSpaceID_XHTML && node->name == name) { return; } @@ -3186,13 +3185,13 @@ nsHtml5TreeBuilder::generateImpliedEndTags() { for (; ; ) { switch(stack[currentPtr]->getGroup()) { - case NS_HTML5TREE_BUILDER_P: - case NS_HTML5TREE_BUILDER_LI: - case NS_HTML5TREE_BUILDER_DD_OR_DT: - case NS_HTML5TREE_BUILDER_OPTION: - case NS_HTML5TREE_BUILDER_OPTGROUP: - case NS_HTML5TREE_BUILDER_RB_OR_RTC: - case NS_HTML5TREE_BUILDER_RT_OR_RP: { + case P: + case LI: + case DD_OR_DT: + case OPTION: + case OPTGROUP: + case RB_OR_RTC: + case RT_OR_RP: { pop(); continue; } @@ -3206,7 +3205,7 @@ nsHtml5TreeBuilder::generateImpliedEndTags() bool nsHtml5TreeBuilder::isSecondOnStackBody() { - return currentPtr >= 1 && stack[1]->getGroup() == NS_HTML5TREE_BUILDER_BODY; + return currentPtr >= 1 && stack[1]->getGroup() == nsHtml5TreeBuilder::BODY; } void @@ -3283,7 +3282,7 @@ nsHtml5TreeBuilder::closeTheCell(int32_t eltPos) pop(); } clearTheListOfActiveFormattingElementsUpToTheLastMarker(); - mode = NS_HTML5TREE_BUILDER_IN_ROW; + mode = IN_ROW; return; } @@ -3296,11 +3295,11 @@ nsHtml5TreeBuilder::findLastInTableScopeTdTh() if (nsHtml5Atoms::td == name || nsHtml5Atoms::th == name) { return i; } else if (name == nsHtml5Atoms::table || name == nsHtml5Atoms::template_) { - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } } } - return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK; } void @@ -3308,7 +3307,7 @@ nsHtml5TreeBuilder::clearStackBackTo(int32_t eltPos) { int32_t eltGroup = stack[eltPos]->getGroup(); while (currentPtr > eltPos) { - if (stack[currentPtr]->ns == kNameSpaceID_XHTML && stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE && (eltGroup == NS_HTML5TREE_BUILDER_TABLE || eltGroup == NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT || eltGroup == NS_HTML5TREE_BUILDER_TR || !eltPos)) { + if (stack[currentPtr]->ns == kNameSpaceID_XHTML && stack[currentPtr]->getGroup() == TEMPLATE && (eltGroup == TABLE || eltGroup == TBODY_OR_THEAD_OR_TFOOT || eltGroup == TR || !eltPos)) { return; } pop(); @@ -3332,7 +3331,7 @@ nsHtml5TreeBuilder::resetTheInsertionMode() ns = contextNamespace; } } else { - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; return; } } @@ -3345,33 +3344,33 @@ nsHtml5TreeBuilder::resetTheInsertionMode() break; } if (nsHtml5Atoms::table == ancestor->name) { - mode = NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE; + mode = IN_SELECT_IN_TABLE; return; } } } - mode = NS_HTML5TREE_BUILDER_IN_SELECT; + mode = IN_SELECT; return; } else if (nsHtml5Atoms::td == name || nsHtml5Atoms::th == name) { - mode = NS_HTML5TREE_BUILDER_IN_CELL; + mode = IN_CELL; return; } else if (nsHtml5Atoms::tr == name) { - mode = NS_HTML5TREE_BUILDER_IN_ROW; + mode = IN_ROW; return; } else if (nsHtml5Atoms::tbody == name || nsHtml5Atoms::thead == name || nsHtml5Atoms::tfoot == name) { - mode = NS_HTML5TREE_BUILDER_IN_TABLE_BODY; + mode = IN_TABLE_BODY; return; } else if (nsHtml5Atoms::caption == name) { - mode = NS_HTML5TREE_BUILDER_IN_CAPTION; + mode = IN_CAPTION; return; } else if (nsHtml5Atoms::colgroup == name) { - mode = NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP; + mode = IN_COLUMN_GROUP; return; } else if (nsHtml5Atoms::table == name) { - mode = NS_HTML5TREE_BUILDER_IN_TABLE; + mode = IN_TABLE; return; } else if (kNameSpaceID_XHTML != ns) { - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; return; } else if (nsHtml5Atoms::template_ == name) { MOZ_ASSERT(templateModePtr >= 0); @@ -3379,26 +3378,26 @@ nsHtml5TreeBuilder::resetTheInsertionMode() return; } else if (nsHtml5Atoms::head == name) { if (name == contextName) { - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; } else { - mode = NS_HTML5TREE_BUILDER_IN_HEAD; + mode = IN_HEAD; } return; } else if (nsHtml5Atoms::body == name) { - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; return; } else if (nsHtml5Atoms::frameset == name) { - mode = NS_HTML5TREE_BUILDER_IN_FRAMESET; + mode = IN_FRAMESET; return; } else if (nsHtml5Atoms::html == name) { if (!headPointer) { - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + mode = BEFORE_HEAD; } else { - mode = NS_HTML5TREE_BUILDER_AFTER_HEAD; + mode = AFTER_HEAD; } return; } else if (!i) { - mode = framesetOk ? NS_HTML5TREE_BUILDER_FRAMESET_OK : NS_HTML5TREE_BUILDER_IN_BODY; + mode = framesetOk ? FRAMESET_OK : IN_BODY; return; } } @@ -3408,7 +3407,7 @@ void nsHtml5TreeBuilder::implicitlyCloseP() { int32_t eltPos = findLastInButtonScope(nsHtml5Atoms::p); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) { return; } generateImpliedEndTagsExceptFor(nsHtml5Atoms::p); @@ -3645,8 +3644,8 @@ nsHtml5TreeBuilder::adoptionAgencyEndTag(nsIAtom* name) } MOZ_ASSERT(node == listOfActiveFormattingElements[nodeListPos]); MOZ_ASSERT(node == stack[nodePos]); - nsIContentHandle* clone = createElement(kNameSpaceID_XHTML, node->name, node->attributes->cloneAttributes(nullptr), commonAncestor->node); - nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, node->name, clone, node->popName, node->attributes); + nsIContentHandle* clone = createElement(kNameSpaceID_XHTML, node->name, node->attributes->cloneAttributes(nullptr), commonAncestor->node, htmlCreator(node->getHtmlCreator())); + nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, node->name, clone, node->popName, node->attributes, node->getHtmlCreator()); node->dropAttributes(); stack[nodePos] = newNode; newNode->retain(); @@ -3666,8 +3665,8 @@ nsHtml5TreeBuilder::adoptionAgencyEndTag(nsIAtom* name) detachFromParent(lastNode->node); appendElement(lastNode->node, commonAncestor->node); } - nsIContentHandle* clone = createElement(kNameSpaceID_XHTML, formattingElt->name, formattingElt->attributes->cloneAttributes(nullptr), furthestBlock->node); - nsHtml5StackNode* formattingClone = new nsHtml5StackNode(formattingElt->getFlags(), formattingElt->ns, formattingElt->name, clone, formattingElt->popName, formattingElt->attributes); + nsIContentHandle* clone = createElement(kNameSpaceID_XHTML, formattingElt->name, formattingElt->attributes->cloneAttributes(nullptr), furthestBlock->node, htmlCreator(formattingElt->getHtmlCreator())); + nsHtml5StackNode* formattingClone = new nsHtml5StackNode(formattingElt->getFlags(), formattingElt->ns, formattingElt->name, clone, formattingElt->popName, formattingElt->attributes, formattingElt->getHtmlCreator()); formattingElt->dropAttributes(); appendChildrenToNewParent(furthestBlock->node, clone); appendElement(clone, furthestBlock->node); @@ -3778,7 +3777,7 @@ nsHtml5TreeBuilder::addAttributesToBody(nsHtml5HtmlAttributes* attributes) { if (currentPtr >= 1) { nsHtml5StackNode* body = stack[1]; - if (body->getGroup() == NS_HTML5TREE_BUILDER_BODY) { + if (body->getGroup() == nsHtml5TreeBuilder::BODY) { addAttributesToElement(body->node, attributes); return true; } @@ -3796,7 +3795,7 @@ void nsHtml5TreeBuilder::pushHeadPointerOntoStack() { MOZ_ASSERT(!!headPointer); - MOZ_ASSERT(mode == NS_HTML5TREE_BUILDER_AFTER_HEAD); + MOZ_ASSERT(mode == AFTER_HEAD); silentPush(new nsHtml5StackNode(nsHtml5ElementName::ELT_HEAD, headPointer)); } @@ -3830,12 +3829,12 @@ nsHtml5TreeBuilder::reconstructTheActiveFormattingElements() nsHtml5StackNode* currentNode = stack[currentPtr]; nsIContentHandle* clone; if (currentNode->isFosterParenting()) { - clone = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, entry->name, entry->attributes->cloneAttributes(nullptr)); + clone = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, entry->name, entry->attributes->cloneAttributes(nullptr), htmlCreator(entry->getHtmlCreator())); } else { - clone = createElement(kNameSpaceID_XHTML, entry->name, entry->attributes->cloneAttributes(nullptr), currentNode->node); + clone = createElement(kNameSpaceID_XHTML, entry->name, entry->attributes->cloneAttributes(nullptr), currentNode->node, htmlCreator(entry->getHtmlCreator())); appendElement(clone, currentNode->node); } - nsHtml5StackNode* entryClone = new nsHtml5StackNode(entry->getFlags(), entry->ns, entry->name, clone, entry->popName, entry->attributes); + nsHtml5StackNode* entryClone = new nsHtml5StackNode(entry->getFlags(), entry->ns, entry->name, clone, entry->popName, entry->attributes, entry->getHtmlCreator()); entry->dropAttributes(); push(entryClone); listOfActiveFormattingElements[entryPos] = entryClone; @@ -3847,8 +3846,8 @@ nsHtml5TreeBuilder::reconstructTheActiveFormattingElements() void nsHtml5TreeBuilder::insertIntoFosterParent(nsIContentHandle* child) { - int32_t tablePos = findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE); - int32_t templatePos = findLastOrRoot(NS_HTML5TREE_BUILDER_TEMPLATE); + int32_t tablePos = findLastOrRoot(nsHtml5TreeBuilder::TABLE); + int32_t templatePos = findLastOrRoot(nsHtml5TreeBuilder::TEMPLATE); if (templatePos >= tablePos) { appendElement(child, stack[templatePos]->node); return; @@ -3858,23 +3857,23 @@ nsHtml5TreeBuilder::insertIntoFosterParent(nsIContentHandle* child) } nsIContentHandle* -nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes) +nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsHtml5ContentCreatorFunction creator) { - return createAndInsertFosterParentedElement(ns, name, attributes, nullptr); + return createAndInsertFosterParentedElement(ns, name, attributes, nullptr, creator); } nsIContentHandle* -nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form) +nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsHtml5ContentCreatorFunction creator) { - int32_t tablePos = findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE); - int32_t templatePos = findLastOrRoot(NS_HTML5TREE_BUILDER_TEMPLATE); + int32_t tablePos = findLastOrRoot(nsHtml5TreeBuilder::TABLE); + int32_t templatePos = findLastOrRoot(nsHtml5TreeBuilder::TEMPLATE); if (templatePos >= tablePos) { - nsIContentHandle* child = createElement(ns, name, attributes, form, stack[templatePos]->node); + nsIContentHandle* child = createElement(ns, name, attributes, form, stack[templatePos]->node, creator); appendElement(child, stack[templatePos]->node); return child; } nsHtml5StackNode* node = stack[tablePos]; - return createAndInsertFosterParentedElement(ns, name, attributes, form, node->node, stack[tablePos - 1]->node); + return createAndInsertFosterParentedElement(ns, name, attributes, form, node->node, stack[tablePos - 1]->node, creator); } bool @@ -3942,7 +3941,7 @@ void nsHtml5TreeBuilder::appendToCurrentNodeAndPushHeadElement(nsHtml5HtmlAttributes* attributes) { nsIContentHandle* currentNode = stack[currentPtr]->node; - nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::head, attributes, currentNode); + nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::head, attributes, currentNode, htmlCreator(NS_NewHTMLSharedElement)); appendElement(elt, currentNode); headPointer = elt; nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_HEAD, elt); @@ -3968,9 +3967,9 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushFormElementMayFoster(nsHtml5HtmlAt nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, htmlCreator(NS_NewHTMLFormElement)); } else { - elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, current->node); + elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, current->node, htmlCreator(NS_NewHTMLFormElement)); appendElement(elt, current->node); } if (!isTemplateContents()) { @@ -3988,9 +3987,9 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushFormattingElementMayFoster(nsHtml5 nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, elementName->name, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, elementName->getName(), attributes, htmlCreator(elementName->getHtmlCreator())); } else { - elt = createElement(kNameSpaceID_XHTML, elementName->name, attributes, current->node); + elt = createElement(kNameSpaceID_XHTML, elementName->getName(), attributes, current->node, htmlCreator(elementName->getHtmlCreator())); appendElement(elt, current->node); } nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, clone); @@ -4003,7 +4002,7 @@ void nsHtml5TreeBuilder::appendToCurrentNodeAndPushElement(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { nsIContentHandle* currentNode = stack[currentPtr]->node; - nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, elementName->name, attributes, currentNode); + nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, elementName->getName(), attributes, currentNode, htmlCreator(elementName->getHtmlCreator())); appendElement(elt, currentNode); if (nsHtml5ElementName::ELT_TEMPLATE == elementName) { elt = getDocumentFragmentForTemplate(elt); @@ -4015,14 +4014,14 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElement(nsHtml5ElementName* elemen void nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { - nsIAtom* popName = elementName->name; + nsIAtom* popName = elementName->getName(); nsIContentHandle* elt; nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, popName, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, popName, attributes, htmlCreator(elementName->getHtmlCreator())); } else { - elt = createElement(kNameSpaceID_XHTML, popName, attributes, current->node); + elt = createElement(kNameSpaceID_XHTML, popName, attributes, current->node, htmlCreator(elementName->getHtmlCreator())); appendElement(elt, current->node); } nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, popName); @@ -4032,7 +4031,7 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementNam void nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFosterMathML(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { - nsIAtom* popName = elementName->name; + nsIAtom* popName = elementName->getName(); bool markAsHtmlIntegrationPoint = false; if (nsHtml5ElementName::ELT_ANNOTATION_XML == elementName && annotationXmlEncodingPermitsHtml(attributes)) { markAsHtmlIntegrationPoint = true; @@ -4041,9 +4040,9 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFosterMathML(nsHtml5Elem nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_MathML, popName, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_MathML, popName, attributes, htmlCreator(nullptr)); } else { - elt = createElement(kNameSpaceID_MathML, popName, attributes, current->node); + elt = createElement(kNameSpaceID_MathML, popName, attributes, current->node, htmlCreator(nullptr)); appendElement(elt, current->node); } nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, popName, markAsHtmlIntegrationPoint); @@ -4063,14 +4062,14 @@ nsHtml5TreeBuilder::annotationXmlEncodingPermitsHtml(nsHtml5HtmlAttributes* attr void nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFosterSVG(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { - nsIAtom* popName = elementName->camelCaseName; + nsIAtom* popName = elementName->getCamelCaseName(); nsIContentHandle* elt; nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_SVG, popName, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_SVG, popName, attributes, svgCreator(elementName->getSvgCreator())); } else { - elt = createElement(kNameSpaceID_SVG, popName, attributes, current->node); + elt = createElement(kNameSpaceID_SVG, popName, attributes, current->node, svgCreator(elementName->getSvgCreator())); appendElement(elt, current->node); } nsHtml5StackNode* node = new nsHtml5StackNode(elementName, popName, elt); @@ -4085,9 +4084,9 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementNam nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, elementName->name, attributes, formOwner); + elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, elementName->getName(), attributes, formOwner, htmlCreator(elementName->getHtmlCreator())); } else { - elt = createElement(kNameSpaceID_XHTML, elementName->name, attributes, formOwner, current->node); + elt = createElement(kNameSpaceID_XHTML, elementName->getName(), attributes, formOwner, current->node, htmlCreator(elementName->getHtmlCreator())); appendElement(elt, current->node); } nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt); @@ -4095,16 +4094,17 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementNam } void -nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form) +nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form) { + nsIAtom* name = elementName->getName(); nsIContentHandle* elt; nsIContentHandle* formOwner = !form || fragment || isTemplateContents() ? nullptr : form; nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, name, attributes, formOwner); + elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, name, attributes, formOwner, htmlCreator(elementName->getHtmlCreator())); } else { - elt = createElement(kNameSpaceID_XHTML, name, attributes, formOwner, current->node); + elt = createElement(kNameSpaceID_XHTML, name, attributes, formOwner, current->node, htmlCreator(elementName->getHtmlCreator())); appendElement(elt, current->node); } elementPushed(kNameSpaceID_XHTML, name, elt); @@ -4114,14 +4114,14 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsIAtom* name, nsHtml5Ht void nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { - nsIAtom* popName = elementName->name; + nsIAtom* popName = elementName->getName(); nsIContentHandle* elt; nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, popName, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, popName, attributes, htmlCreator(elementName->getHtmlCreator())); } else { - elt = createElement(kNameSpaceID_XHTML, popName, attributes, current->node); + elt = createElement(kNameSpaceID_XHTML, popName, attributes, current->node, htmlCreator(elementName->getHtmlCreator())); appendElement(elt, current->node); } elementPushed(kNameSpaceID_XHTML, popName, elt); @@ -4131,14 +4131,14 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elem void nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterSVG(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { - nsIAtom* popName = elementName->camelCaseName; + nsIAtom* popName = elementName->getCamelCaseName(); nsIContentHandle* elt; nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_SVG, popName, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_SVG, popName, attributes, svgCreator(elementName->getSvgCreator())); } else { - elt = createElement(kNameSpaceID_SVG, popName, attributes, current->node); + elt = createElement(kNameSpaceID_SVG, popName, attributes, current->node, svgCreator(elementName->getSvgCreator())); appendElement(elt, current->node); } elementPushed(kNameSpaceID_SVG, popName, elt); @@ -4148,14 +4148,14 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterSVG(nsHtml5ElementName* e void nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterMathML(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes) { - nsIAtom* popName = elementName->name; + nsIAtom* popName = elementName->getName(); nsIContentHandle* elt; nsHtml5StackNode* current = stack[currentPtr]; if (current->isFosterParenting()) { - elt = createAndInsertFosterParentedElement(kNameSpaceID_MathML, popName, attributes); + elt = createAndInsertFosterParentedElement(kNameSpaceID_MathML, popName, attributes, htmlCreator(nullptr)); } else { - elt = createElement(kNameSpaceID_MathML, popName, attributes, current->node); + elt = createElement(kNameSpaceID_MathML, popName, attributes, current->node, htmlCreator(nullptr)); appendElement(elt, current->node); } elementPushed(kNameSpaceID_MathML, popName, elt); @@ -4163,20 +4163,20 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterMathML(nsHtml5ElementName } void -nsHtml5TreeBuilder::appendVoidElementToCurrent(nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form) +nsHtml5TreeBuilder::appendVoidInputToCurrent(nsHtml5HtmlAttributes* attributes, nsIContentHandle* form) { nsIContentHandle* currentNode = stack[currentPtr]->node; - nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, name, attributes, !form || fragment || isTemplateContents() ? nullptr : form, currentNode); + nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::input, attributes, !form || fragment || isTemplateContents() ? nullptr : form, currentNode, htmlCreator(NS_NewHTMLInputElement)); appendElement(elt, currentNode); - elementPushed(kNameSpaceID_XHTML, name, elt); - elementPopped(kNameSpaceID_XHTML, name, elt); + elementPushed(kNameSpaceID_XHTML, nsHtml5Atoms::input, elt); + elementPopped(kNameSpaceID_XHTML, nsHtml5Atoms::input, elt); } void nsHtml5TreeBuilder::appendVoidFormToCurrent(nsHtml5HtmlAttributes* attributes) { nsIContentHandle* currentNode = stack[currentPtr]->node; - nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, currentNode); + nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, currentNode, htmlCreator(NS_NewHTMLFormElement)); formPointer = elt; appendElement(elt, currentNode); elementPushed(kNameSpaceID_XHTML, nsHtml5Atoms::form, elt); @@ -4242,7 +4242,7 @@ void nsHtml5TreeBuilder::flushCharacters() { if (charBufferLen > 0) { - if ((mode == NS_HTML5TREE_BUILDER_IN_TABLE || mode == NS_HTML5TREE_BUILDER_IN_TABLE_BODY || mode == NS_HTML5TREE_BUILDER_IN_ROW) && charBufferContainsNonWhitespace()) { + if ((mode == IN_TABLE || mode == IN_TABLE_BODY || mode == IN_ROW) && charBufferContainsNonWhitespace()) { errNonSpaceInTable(); reconstructTheActiveFormattingElements(); if (!stack[currentPtr]->isFosterParenting()) { @@ -4250,8 +4250,8 @@ nsHtml5TreeBuilder::flushCharacters() charBufferLen = 0; return; } - int32_t tablePos = findLastOrRoot(NS_HTML5TREE_BUILDER_TABLE); - int32_t templatePos = findLastOrRoot(NS_HTML5TREE_BUILDER_TEMPLATE); + int32_t tablePos = findLastOrRoot(nsHtml5TreeBuilder::TABLE); + int32_t templatePos = findLastOrRoot(nsHtml5TreeBuilder::TEMPLATE); if (templatePos >= tablePos) { appendCharacters(stack[templatePos]->node, charBuffer, 0, charBufferLen); charBufferLen = 0; @@ -4294,7 +4294,7 @@ nsHtml5TreeBuilder::newSnapshot() for (int32_t i = 0; i < listCopy.length; i++) { nsHtml5StackNode* node = listOfActiveFormattingElements[i]; if (node) { - nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, node->name, node->node, node->popName, node->attributes->cloneAttributes(nullptr)); + nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, node->name, node->node, node->popName, node->attributes->cloneAttributes(nullptr), node->getHtmlCreator()); listCopy[i] = newNode; } else { listCopy[i] = nullptr; @@ -4305,7 +4305,7 @@ nsHtml5TreeBuilder::newSnapshot() nsHtml5StackNode* node = stack[i]; int32_t listIndex = findInListOfActiveFormattingElements(node); if (listIndex == -1) { - nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, node->name, node->node, node->popName, nullptr); + nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, node->name, node->node, node->popName, nullptr, node->getHtmlCreator()); stackCopy[i] = newNode; } else { stackCopy[i] = listCopy[listIndex]; @@ -4384,7 +4384,7 @@ nsHtml5TreeBuilder::loadState(nsAHtml5TreeBuilderState* snapshot, nsHtml5AtomTab for (int32_t i = 0; i < listLen; i++) { nsHtml5StackNode* node = listCopy[i]; if (node) { - nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, nsHtml5Portability::newLocalFromLocal(node->name, interner), node->node, nsHtml5Portability::newLocalFromLocal(node->popName, interner), node->attributes->cloneAttributes(nullptr)); + nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, nsHtml5Portability::newLocalFromLocal(node->name, interner), node->node, nsHtml5Portability::newLocalFromLocal(node->popName, interner), node->attributes->cloneAttributes(nullptr), node->getHtmlCreator()); listOfActiveFormattingElements[i] = newNode; } else { listOfActiveFormattingElements[i] = nullptr; @@ -4394,7 +4394,7 @@ nsHtml5TreeBuilder::loadState(nsAHtml5TreeBuilderState* snapshot, nsHtml5AtomTab nsHtml5StackNode* node = stackCopy[i]; int32_t listIndex = findInArray(node, listCopy); if (listIndex == -1) { - nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, nsHtml5Portability::newLocalFromLocal(node->name, interner), node->node, nsHtml5Portability::newLocalFromLocal(node->popName, interner), nullptr); + nsHtml5StackNode* newNode = new nsHtml5StackNode(node->getFlags(), node->ns, nsHtml5Portability::newLocalFromLocal(node->name, interner), node->node, nsHtml5Portability::newLocalFromLocal(node->popName, interner), nullptr, node->getHtmlCreator()); stack[i] = newNode; } else { stack[i] = listOfActiveFormattingElements[listIndex]; diff --git a/parser/html/nsHtml5TreeBuilder.h b/parser/html/nsHtml5TreeBuilder.h index ff6cdd4ae..4f484a104 100644 --- a/parser/html/nsHtml5TreeBuilder.h +++ b/parser/html/nsHtml5TreeBuilder.h @@ -61,11 +61,10 @@ class nsHtml5StreamParser; -class nsHtml5Tokenizer; -class nsHtml5MetaScanner; class nsHtml5AttributeName; class nsHtml5ElementName; -class nsHtml5HtmlAttributes; +class nsHtml5Tokenizer; +class nsHtml5MetaScanner; class nsHtml5UTF16Buffer; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -75,7 +74,217 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState { private: static char16_t REPLACEMENT_CHARACTER[]; + public: + static const int32_t OTHER = 0; + + static const int32_t A = 1; + + static const int32_t BASE = 2; + + static const int32_t BODY = 3; + + static const int32_t BR = 4; + + static const int32_t BUTTON = 5; + + static const int32_t CAPTION = 6; + + static const int32_t COL = 7; + + static const int32_t COLGROUP = 8; + + static const int32_t FORM = 9; + + static const int32_t FRAME = 10; + + static const int32_t FRAMESET = 11; + + static const int32_t IMAGE = 12; + + static const int32_t INPUT = 13; + + static const int32_t ISINDEX = 14; + + static const int32_t LI = 15; + + static const int32_t LINK_OR_BASEFONT_OR_BGSOUND = 16; + + static const int32_t MATH = 17; + + static const int32_t META = 18; + + static const int32_t SVG = 19; + + static const int32_t HEAD = 20; + + static const int32_t HR = 22; + + static const int32_t HTML = 23; + + static const int32_t NOBR = 24; + + static const int32_t NOFRAMES = 25; + + static const int32_t NOSCRIPT = 26; + + static const int32_t OPTGROUP = 27; + + static const int32_t OPTION = 28; + + static const int32_t P = 29; + + static const int32_t PLAINTEXT = 30; + + static const int32_t SCRIPT = 31; + + static const int32_t SELECT = 32; + + static const int32_t STYLE = 33; + + static const int32_t TABLE = 34; + + static const int32_t TEXTAREA = 35; + + static const int32_t TITLE = 36; + + static const int32_t TR = 37; + + static const int32_t XMP = 38; + + static const int32_t TBODY_OR_THEAD_OR_TFOOT = 39; + + static const int32_t TD_OR_TH = 40; + + static const int32_t DD_OR_DT = 41; + + static const int32_t H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 = 42; + + static const int32_t MARQUEE_OR_APPLET = 43; + + static const int32_t PRE_OR_LISTING = 44; + + static const int32_t B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U = 45; + + static const int32_t UL_OR_OL_OR_DL = 46; + + static const int32_t IFRAME = 47; + + static const int32_t EMBED = 48; + + static const int32_t AREA_OR_WBR = 49; + + static const int32_t DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU = 50; + + static const int32_t ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY = 51; + + static const int32_t RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR = 52; + + static const int32_t RB_OR_RTC = 53; + + static const int32_t PARAM_OR_SOURCE_OR_TRACK = 55; + + static const int32_t MGLYPH_OR_MALIGNMARK = 56; + + static const int32_t MI_MO_MN_MS_MTEXT = 57; + + static const int32_t ANNOTATION_XML = 58; + + static const int32_t FOREIGNOBJECT_OR_DESC = 59; + + static const int32_t NOEMBED = 60; + + static const int32_t FIELDSET = 61; + + static const int32_t OUTPUT = 62; + + static const int32_t OBJECT = 63; + + static const int32_t FONT = 64; + + static const int32_t KEYGEN = 65; + + static const int32_t MENUITEM = 66; + + static const int32_t TEMPLATE = 67; + + static const int32_t IMG = 68; + + static const int32_t RT_OR_RP = 69; + + private: + static const int32_t IN_ROW = 0; + + static const int32_t IN_TABLE_BODY = 1; + + static const int32_t IN_TABLE = 2; + + static const int32_t IN_CAPTION = 3; + + static const int32_t IN_CELL = 4; + + static const int32_t FRAMESET_OK = 5; + + static const int32_t IN_BODY = 6; + + static const int32_t IN_HEAD = 7; + + static const int32_t IN_HEAD_NOSCRIPT = 8; + + static const int32_t IN_COLUMN_GROUP = 9; + + static const int32_t IN_SELECT_IN_TABLE = 10; + + static const int32_t IN_SELECT = 11; + + static const int32_t AFTER_BODY = 12; + + static const int32_t IN_FRAMESET = 13; + + static const int32_t AFTER_FRAMESET = 14; + + static const int32_t INITIAL = 15; + + static const int32_t BEFORE_HTML = 16; + + static const int32_t BEFORE_HEAD = 17; + + static const int32_t AFTER_HEAD = 18; + + static const int32_t AFTER_AFTER_BODY = 19; + + static const int32_t AFTER_AFTER_FRAMESET = 20; + + static const int32_t TEXT = 21; + + static const int32_t IN_TEMPLATE = 22; + + static const int32_t CHARSET_INITIAL = 0; + + static const int32_t CHARSET_C = 1; + + static const int32_t CHARSET_H = 2; + + static const int32_t CHARSET_A = 3; + + static const int32_t CHARSET_R = 4; + + static const int32_t CHARSET_S = 5; + + static const int32_t CHARSET_E = 6; + + static const int32_t CHARSET_T = 7; + + static const int32_t CHARSET_EQUALS = 8; + + static const int32_t CHARSET_SINGLE_QUOTED = 9; + + static const int32_t CHARSET_DOUBLE_QUOTED = 10; + + static const int32_t CHARSET_UNQUOTED = 11; + static staticJArray<const char*,int32_t> QUIRKY_PUBLIC_IDS; + static const int32_t NOT_FOUND_ON_STACK = INT32_MAX; + int32_t mode; int32_t originalMode; bool framesetOk; @@ -103,6 +312,20 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState private: bool quirks; bool isSrcdocDocument; + inline nsHtml5ContentCreatorFunction htmlCreator(mozilla::dom::HTMLContentCreatorFunction htmlCreator) + { + nsHtml5ContentCreatorFunction creator; + creator.html = htmlCreator; + return creator; + } + + inline nsHtml5ContentCreatorFunction svgCreator(mozilla::dom::SVGContentCreatorFunction svgCreator) + { + nsHtml5ContentCreatorFunction creator; + creator.svg = svgCreator; + return creator; + } + public: void startTokenization(nsHtml5Tokenizer* self); void doctype(nsIAtom* name, nsHtml5String publicIdentifier, nsHtml5String systemIdentifier, bool forceQuirks); @@ -179,8 +402,8 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState void pushHeadPointerOntoStack(); void reconstructTheActiveFormattingElements(); void insertIntoFosterParent(nsIContentHandle* child); - nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes); - nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form); + nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsHtml5ContentCreatorFunction creator); + nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsHtml5ContentCreatorFunction creator); bool isInStack(nsHtml5StackNode* node); void popTemplateMode(); void pop(); @@ -199,24 +422,24 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState bool annotationXmlEncodingPermitsHtml(nsHtml5HtmlAttributes* attributes); void appendToCurrentNodeAndPushElementMayFosterSVG(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes); void appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form); - void appendVoidElementToCurrentMayFoster(nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form); + void appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form); void appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes); void appendVoidElementToCurrentMayFosterSVG(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes); void appendVoidElementToCurrentMayFosterMathML(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes); - void appendVoidElementToCurrent(nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form); + void appendVoidInputToCurrent(nsHtml5HtmlAttributes* attributes, nsIContentHandle* form); void appendVoidFormToCurrent(nsHtml5HtmlAttributes* attributes); protected: void accumulateCharacters(const char16_t* buf, int32_t start, int32_t length); void requestSuspension(); - nsIContentHandle* createElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* intendedParent); - nsIContentHandle* createElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsIContentHandle* intendedParent); + nsIContentHandle* createElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* intendedParent, nsHtml5ContentCreatorFunction creator); + nsIContentHandle* createElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsIContentHandle* intendedParent, nsHtml5ContentCreatorFunction creator); nsIContentHandle* createHtmlElementSetAsRoot(nsHtml5HtmlAttributes* attributes); void detachFromParent(nsIContentHandle* element); bool hasChildren(nsIContentHandle* element); void appendElement(nsIContentHandle* child, nsIContentHandle* newParent); void appendChildrenToNewParent(nsIContentHandle* oldParent, nsIContentHandle* newParent); void insertFosterParentedChild(nsIContentHandle* child, nsIContentHandle* table, nsIContentHandle* stackParent); - nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsIContentHandle* table, nsIContentHandle* stackParent); + nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsIContentHandle* table, nsIContentHandle* stackParent, nsHtml5ContentCreatorFunction creator); ;void insertFosterParentedCharacters(char16_t* buf, int32_t start, int32_t length, nsIContentHandle* table, nsIContentHandle* stackParent); void appendCharacters(nsIContentHandle* parent, char16_t* buf, int32_t start, int32_t length); void appendIsindexPrompt(nsIContentHandle* parent); @@ -276,111 +499,5 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState #include "nsHtml5TreeBuilderHSupplement.h" }; -#define NS_HTML5TREE_BUILDER_OTHER 0 -#define NS_HTML5TREE_BUILDER_A 1 -#define NS_HTML5TREE_BUILDER_BASE 2 -#define NS_HTML5TREE_BUILDER_BODY 3 -#define NS_HTML5TREE_BUILDER_BR 4 -#define NS_HTML5TREE_BUILDER_BUTTON 5 -#define NS_HTML5TREE_BUILDER_CAPTION 6 -#define NS_HTML5TREE_BUILDER_COL 7 -#define NS_HTML5TREE_BUILDER_COLGROUP 8 -#define NS_HTML5TREE_BUILDER_FORM 9 -#define NS_HTML5TREE_BUILDER_FRAME 10 -#define NS_HTML5TREE_BUILDER_FRAMESET 11 -#define NS_HTML5TREE_BUILDER_IMAGE 12 -#define NS_HTML5TREE_BUILDER_INPUT 13 -#define NS_HTML5TREE_BUILDER_ISINDEX 14 -#define NS_HTML5TREE_BUILDER_LI 15 -#define NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND 16 -#define NS_HTML5TREE_BUILDER_MATH 17 -#define NS_HTML5TREE_BUILDER_META 18 -#define NS_HTML5TREE_BUILDER_SVG 19 -#define NS_HTML5TREE_BUILDER_HEAD 20 -#define NS_HTML5TREE_BUILDER_HR 22 -#define NS_HTML5TREE_BUILDER_HTML 23 -#define NS_HTML5TREE_BUILDER_NOBR 24 -#define NS_HTML5TREE_BUILDER_NOFRAMES 25 -#define NS_HTML5TREE_BUILDER_NOSCRIPT 26 -#define NS_HTML5TREE_BUILDER_OPTGROUP 27 -#define NS_HTML5TREE_BUILDER_OPTION 28 -#define NS_HTML5TREE_BUILDER_P 29 -#define NS_HTML5TREE_BUILDER_PLAINTEXT 30 -#define NS_HTML5TREE_BUILDER_SCRIPT 31 -#define NS_HTML5TREE_BUILDER_SELECT 32 -#define NS_HTML5TREE_BUILDER_STYLE 33 -#define NS_HTML5TREE_BUILDER_TABLE 34 -#define NS_HTML5TREE_BUILDER_TEXTAREA 35 -#define NS_HTML5TREE_BUILDER_TITLE 36 -#define NS_HTML5TREE_BUILDER_TR 37 -#define NS_HTML5TREE_BUILDER_XMP 38 -#define NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT 39 -#define NS_HTML5TREE_BUILDER_TD_OR_TH 40 -#define NS_HTML5TREE_BUILDER_DD_OR_DT 41 -#define NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 42 -#define NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET 43 -#define NS_HTML5TREE_BUILDER_PRE_OR_LISTING 44 -#define NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U 45 -#define NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL 46 -#define NS_HTML5TREE_BUILDER_IFRAME 47 -#define NS_HTML5TREE_BUILDER_EMBED 48 -#define NS_HTML5TREE_BUILDER_AREA_OR_WBR 49 -#define NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU 50 -#define NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY 51 -#define NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR 52 -#define NS_HTML5TREE_BUILDER_RB_OR_RTC 53 -#define NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK 55 -#define NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK 56 -#define NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT 57 -#define NS_HTML5TREE_BUILDER_ANNOTATION_XML 58 -#define NS_HTML5TREE_BUILDER_FOREIGNOBJECT_OR_DESC 59 -#define NS_HTML5TREE_BUILDER_NOEMBED 60 -#define NS_HTML5TREE_BUILDER_FIELDSET 61 -#define NS_HTML5TREE_BUILDER_OUTPUT 62 -#define NS_HTML5TREE_BUILDER_OBJECT 63 -#define NS_HTML5TREE_BUILDER_FONT 64 -#define NS_HTML5TREE_BUILDER_KEYGEN 65 -#define NS_HTML5TREE_BUILDER_MENUITEM 66 -#define NS_HTML5TREE_BUILDER_TEMPLATE 67 -#define NS_HTML5TREE_BUILDER_IMG 68 -#define NS_HTML5TREE_BUILDER_RT_OR_RP 69 -#define NS_HTML5TREE_BUILDER_IN_ROW 0 -#define NS_HTML5TREE_BUILDER_IN_TABLE_BODY 1 -#define NS_HTML5TREE_BUILDER_IN_TABLE 2 -#define NS_HTML5TREE_BUILDER_IN_CAPTION 3 -#define NS_HTML5TREE_BUILDER_IN_CELL 4 -#define NS_HTML5TREE_BUILDER_FRAMESET_OK 5 -#define NS_HTML5TREE_BUILDER_IN_BODY 6 -#define NS_HTML5TREE_BUILDER_IN_HEAD 7 -#define NS_HTML5TREE_BUILDER_IN_HEAD_NOSCRIPT 8 -#define NS_HTML5TREE_BUILDER_IN_COLUMN_GROUP 9 -#define NS_HTML5TREE_BUILDER_IN_SELECT_IN_TABLE 10 -#define NS_HTML5TREE_BUILDER_IN_SELECT 11 -#define NS_HTML5TREE_BUILDER_AFTER_BODY 12 -#define NS_HTML5TREE_BUILDER_IN_FRAMESET 13 -#define NS_HTML5TREE_BUILDER_AFTER_FRAMESET 14 -#define NS_HTML5TREE_BUILDER_INITIAL 15 -#define NS_HTML5TREE_BUILDER_BEFORE_HTML 16 -#define NS_HTML5TREE_BUILDER_BEFORE_HEAD 17 -#define NS_HTML5TREE_BUILDER_AFTER_HEAD 18 -#define NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY 19 -#define NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET 20 -#define NS_HTML5TREE_BUILDER_TEXT 21 -#define NS_HTML5TREE_BUILDER_IN_TEMPLATE 22 -#define NS_HTML5TREE_BUILDER_CHARSET_INITIAL 0 -#define NS_HTML5TREE_BUILDER_CHARSET_C 1 -#define NS_HTML5TREE_BUILDER_CHARSET_H 2 -#define NS_HTML5TREE_BUILDER_CHARSET_A 3 -#define NS_HTML5TREE_BUILDER_CHARSET_R 4 -#define NS_HTML5TREE_BUILDER_CHARSET_S 5 -#define NS_HTML5TREE_BUILDER_CHARSET_E 6 -#define NS_HTML5TREE_BUILDER_CHARSET_T 7 -#define NS_HTML5TREE_BUILDER_CHARSET_EQUALS 8 -#define NS_HTML5TREE_BUILDER_CHARSET_SINGLE_QUOTED 9 -#define NS_HTML5TREE_BUILDER_CHARSET_DOUBLE_QUOTED 10 -#define NS_HTML5TREE_BUILDER_CHARSET_UNQUOTED 11 -#define NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK INT32_MAX - - #endif diff --git a/parser/html/nsHtml5TreeBuilderCppSupplement.h b/parser/html/nsHtml5TreeBuilderCppSupplement.h index aacc5a3e0..62df6d002 100644 --- a/parser/html/nsHtml5TreeBuilderCppSupplement.h +++ b/parser/html/nsHtml5TreeBuilderCppSupplement.h @@ -68,9 +68,11 @@ nsHtml5TreeBuilder::~nsHtml5TreeBuilder() } nsIContentHandle* -nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, +nsHtml5TreeBuilder::createElement(int32_t aNamespace, + nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes, - nsIContentHandle* aIntendedParent) + nsIContentHandle* aIntendedParent, + nsHtml5ContentCreatorFunction aCreator) { NS_PRECONDITION(aAttributes, "Got null attributes."); NS_PRECONDITION(aName, "Got null name."); @@ -91,13 +93,28 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, intendedParent->OwnerDoc()->NodeInfoManager() : mBuilder->GetNodeInfoManager(); - nsIContent* elem = - nsHtml5TreeOperation::CreateElement(aNamespace, - name, - aAttributes, - mozilla::dom::FROM_PARSER_FRAGMENT, - nodeInfoManager, - mBuilder); + nsIContent* elem; + if (aNamespace == kNameSpaceID_XHTML) { + elem = nsHtml5TreeOperation::CreateHTMLElement( + name, + aAttributes, + mozilla::dom::FROM_PARSER_FRAGMENT, + nodeInfoManager, + mBuilder, + aCreator.html); + } else if (aNamespace == kNameSpaceID_SVG) { + elem = nsHtml5TreeOperation::CreateSVGElement( + name, + aAttributes, + mozilla::dom::FROM_PARSER_FRAGMENT, + nodeInfoManager, + mBuilder, + aCreator.svg); + } else { + MOZ_ASSERT(aNamespace == kNameSpaceID_MathML); + elem = nsHtml5TreeOperation::CreateMathMLElement( + name, aAttributes, nodeInfoManager, mBuilder); + } if (MOZ_UNLIKELY(aAttributes != tokenizer->GetAttributes() && aAttributes != nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES)) { delete aAttributes; @@ -113,7 +130,8 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, aAttributes, content, aIntendedParent, - !!mSpeculativeLoadStage); + !!mSpeculativeLoadStage, + aCreator); // mSpeculativeLoadStage is non-null only in the off-the-main-thread // tree builder, which handles the network stream @@ -173,7 +191,7 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, type, crossOrigin, integrity, - mode == NS_HTML5TREE_BUILDER_IN_HEAD); + mode == nsHtml5TreeBuilder::IN_HEAD); mCurrentHtmlScriptIsAsyncOrDefer = aAttributes->contains(nsHtml5AttributeName::ATTR_ASYNC) || aAttributes->contains(nsHtml5AttributeName::ATTR_DEFER); @@ -279,7 +297,7 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, type, crossOrigin, integrity, - mode == NS_HTML5TREE_BUILDER_IN_HEAD); + mode == nsHtml5TreeBuilder::IN_HEAD); } } else if (nsHtml5Atoms::style == aName) { nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement(); @@ -345,13 +363,15 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, } nsIContentHandle* -nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, +nsHtml5TreeBuilder::createElement(int32_t aNamespace, + nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes, nsIContentHandle* aFormElement, - nsIContentHandle* aIntendedParent) + nsIContentHandle* aIntendedParent, + nsHtml5ContentCreatorFunction aCreator) { - nsIContentHandle* content = createElement(aNamespace, aName, aAttributes, - aIntendedParent); + nsIContentHandle* content = + createElement(aNamespace, aName, aAttributes, aIntendedParent, aCreator); if (aFormElement) { if (mBuilder) { nsHtml5TreeOperation::SetFormElement(static_cast<nsIContent*>(content), @@ -368,10 +388,11 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace, nsIAtom* aName, nsIContentHandle* nsHtml5TreeBuilder::createHtmlElementSetAsRoot(nsHtml5HtmlAttributes* aAttributes) { - nsIContentHandle* content = createElement(kNameSpaceID_XHTML, - nsHtml5Atoms::html, - aAttributes, - nullptr); + nsHtml5ContentCreatorFunction creator; + // <html> uses NS_NewHTMLSharedElement creator + creator.html = NS_NewHTMLSharedElement; + nsIContentHandle* content = createElement( + kNameSpaceID_XHTML, nsHtml5Atoms::html, aAttributes, nullptr, creator); if (mBuilder) { nsresult rv = nsHtml5TreeOperation::AppendToDocument(static_cast<nsIContent*>(content), mBuilder); @@ -387,11 +408,13 @@ nsHtml5TreeBuilder::createHtmlElementSetAsRoot(nsHtml5HtmlAttributes* aAttribute } nsIContentHandle* -nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t aNamespace, nsIAtom* aName, +nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t aNamespace, + nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes, nsIContentHandle* aFormElement, nsIContentHandle* aTable, - nsIContentHandle* aStackParent) + nsIContentHandle* aStackParent, + nsHtml5ContentCreatorFunction aCreator) { NS_PRECONDITION(aTable, "Null table"); NS_PRECONDITION(aStackParent, "Null stack parent"); @@ -403,8 +426,8 @@ nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t aNamespace, nsI static_cast<nsIContent*>(aTable), static_cast<nsIContent*>(aStackParent)); - nsIContentHandle* child = createElement(aNamespace, aName, aAttributes, - aFormElement, fosterParent); + nsIContentHandle* child = createElement( + aNamespace, aName, aAttributes, aFormElement, fosterParent, aCreator); insertFosterParentedChild(child, aTable, aStackParent); @@ -420,8 +443,8 @@ nsHtml5TreeBuilder::createAndInsertFosterParentedElement(int32_t aNamespace, nsI aStackParent, fosterParentHandle); // Create the element with the correct intended parent. - nsIContentHandle* child = createElement(aNamespace, aName, aAttributes, - aFormElement, fosterParentHandle); + nsIContentHandle* child = createElement( + aNamespace, aName, aAttributes, aFormElement, fosterParentHandle, aCreator); // Insert the child into the foster parent. insertFosterParentedChild(child, aTable, aStackParent); diff --git a/parser/html/nsHtml5TreeOperation.cpp b/parser/html/nsHtml5TreeOperation.cpp index 3877e01b8..22c805859 100644 --- a/parser/html/nsHtml5TreeOperation.cpp +++ b/parser/html/nsHtml5TreeOperation.cpp @@ -24,6 +24,7 @@ #include "nsIFormControl.h" #include "nsIStyleSheetLinkingElement.h" #include "nsIDOMDocumentType.h" +#include "DocGroup.h" #include "nsIObserverService.h" #include "mozilla/Services.h" #include "nsIMutationObserver.h" @@ -74,6 +75,29 @@ class MOZ_STACK_CLASS nsHtml5OtherDocUpdate { nsCOMPtr<nsIDocument> mDocument; }; +/** + * Helper class to temporary break out of the document update batch. Use this + * with caution as this will cause blocked scripts to run. + */ +class MOZ_RAII mozAutoPauseContentUpdate final +{ +public: + explicit mozAutoPauseContentUpdate(nsIDocument* aDocument) + : mDocument(aDocument) + { + MOZ_ASSERT(mDocument); + mDocument->EndUpdate(UPDATE_CONTENT_MODEL); + } + + ~mozAutoPauseContentUpdate() + { + mDocument->BeginUpdate(UPDATE_CONTENT_MODEL); + } + +private: + nsCOMPtr<nsIDocument> mDocument; +}; + nsHtml5TreeOperation::nsHtml5TreeOperation() : mOpCode(eTreeOpUninitialized) { @@ -88,8 +112,11 @@ nsHtml5TreeOperation::~nsHtml5TreeOperation() case eTreeOpAddAttributes: delete mTwo.attributes; break; - case eTreeOpCreateElementNetwork: - case eTreeOpCreateElementNotNetwork: + case eTreeOpCreateHTMLElementNetwork: + case eTreeOpCreateHTMLElementNotNetwork: + case eTreeOpCreateSVGElementNetwork: + case eTreeOpCreateSVGElementNotNetwork: + case eTreeOpCreateMathMLElement: delete mThree.attributes; break; case eTreeOpAppendDoctypeToDocument: @@ -329,79 +356,222 @@ nsHtml5TreeOperation::AddAttributes(nsIContent* aNode, return NS_OK; } +void +nsHtml5TreeOperation::SetHTMLElementAttributes(dom::Element* aElement, + nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes) +{ + int32_t len = aAttributes->getLength(); + for (int32_t i = 0; i < len; i++) { + // prefix doesn't need regetting. it is always null or a static atom + // local name is never null + nsCOMPtr<nsIAtom> localName = + Reget(aAttributes->getLocalNameNoBoundsCheck(i)); + nsCOMPtr<nsIAtom> prefix = aAttributes->getPrefixNoBoundsCheck(i); + int32_t nsuri = aAttributes->getURINoBoundsCheck(i); + + nsString value; // Not Auto, because using it to hold nsStringBuffer* + aAttributes->getValueNoBoundsCheck(i).ToString(value); + if (nsHtml5Atoms::a == aName && nsHtml5Atoms::name == localName) { + // This is an HTML5-incompliant Geckoism. + // Remove when fixing bug 582361 + NS_ConvertUTF16toUTF8 cname(value); + NS_ConvertUTF8toUTF16 uv(nsUnescape(cname.BeginWriting())); + aElement->SetAttr(nsuri, + localName, + prefix, + uv, + false); + } else { + aElement->SetAttr(nsuri, + localName, + prefix, + value, + false); + } + } + } nsIContent* -nsHtml5TreeOperation::CreateElement(int32_t aNs, - nsIAtom* aName, - nsHtml5HtmlAttributes* aAttributes, - mozilla::dom::FromParser aFromParser, - nsNodeInfoManager* aNodeInfoManager, - nsHtml5DocumentBuilder* aBuilder) +nsHtml5TreeOperation::CreateHTMLElement( + nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + mozilla::dom::FromParser aFromParser, + nsNodeInfoManager* aNodeInfoManager, + nsHtml5DocumentBuilder* aBuilder, + mozilla::dom::HTMLContentCreatorFunction aCreator) { - bool isKeygen = (aName == nsHtml5Atoms::keygen && aNs == kNameSpaceID_XHTML); + bool isKeygen = (aName == nsHtml5Atoms::keygen); if (MOZ_UNLIKELY(isKeygen)) { aName = nsHtml5Atoms::select; + aCreator = NS_NewHTMLSelectElement; } - nsCOMPtr<dom::Element> newElement; - RefPtr<dom::NodeInfo> nodeInfo = aNodeInfoManager-> - GetNodeInfo(aName, nullptr, aNs, nsIDOMNode::ELEMENT_NODE); + RefPtr<dom::NodeInfo> nodeInfo = aNodeInfoManager->GetNodeInfo( + aName, nullptr, kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE); NS_ASSERTION(nodeInfo, "Got null nodeinfo."); - NS_NewElement(getter_AddRefs(newElement), - nodeInfo.forget(), - aFromParser); - NS_ASSERTION(newElement, "Element creation created null pointer."); - dom::Element* newContent = newElement; - aBuilder->HoldElement(newElement.forget()); + dom::Element* newContent = nullptr; + nsIDocument* document = nodeInfo->GetDocument(); + bool willExecuteScript = false; + bool isCustomElement = false; + nsString isValue; + dom::CustomElementDefinition* definition = nullptr; + + // Avoid overhead by checking if custom elements pref is enabled or not. + if (nsContentUtils::IsCustomElementsEnabled()) { + if (aAttributes) { + nsHtml5String is = aAttributes->getValue(nsHtml5AttributeName::ATTR_IS); + if (is) { + is.ToString(isValue); + } + } - if (MOZ_UNLIKELY(aName == nsHtml5Atoms::style || aName == nsHtml5Atoms::link)) { - nsCOMPtr<nsIStyleSheetLinkingElement> ssle(do_QueryInterface(newContent)); - if (ssle) { - ssle->InitStyleLinkElement(false); - ssle->SetEnableUpdates(false); + isCustomElement = (aCreator == NS_NewCustomElement || !isValue.IsEmpty()); + if (isCustomElement && aFromParser != dom::FROM_PARSER_FRAGMENT) { + RefPtr<nsIAtom> tagAtom = nodeInfo->NameAtom(); + RefPtr<nsIAtom> typeAtom = + isValue.IsEmpty() ? tagAtom : NS_Atomize(isValue); + + MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName())); + definition = nsContentUtils::LookupCustomElementDefinition(document, + nodeInfo->NameAtom(), nodeInfo->NamespaceID(), typeAtom); + + if (definition) { + willExecuteScript = true; + } + } + } + + if (willExecuteScript) { // This will cause custom element constructors to run + AutoSetThrowOnDynamicMarkupInsertionCounter + throwOnDynamicMarkupInsertionCounter(document); + mozAutoPauseContentUpdate autoPauseContentUpdate(document); + { + nsAutoMicroTask mt; + } + dom::AutoCEReaction + autoCEReaction(document->GetDocGroup()->CustomElementReactionsStack(), + nullptr); + + nsCOMPtr<dom::Element> newElement; + NS_NewHTMLElement(getter_AddRefs(newElement), nodeInfo.forget(), + aFromParser, (isValue.IsEmpty() ? nullptr : &isValue), + definition); + + MOZ_ASSERT(newElement, "Element creation created null pointer."); + newContent = newElement; + aBuilder->HoldElement(newElement.forget()); + + if (MOZ_UNLIKELY(aName == nsHtml5Atoms::style || aName == nsHtml5Atoms::link)) { + nsCOMPtr<nsIStyleSheetLinkingElement> ssle(do_QueryInterface(newContent)); + if (ssle) { + ssle->InitStyleLinkElement(false); + ssle->SetEnableUpdates(false); + } } - } else if (MOZ_UNLIKELY(isKeygen)) { - // Adapted from CNavDTD - nsresult rv; - nsCOMPtr<nsIFormProcessor> theFormProcessor = - do_GetService(kFormProcessorCID, &rv); - if (NS_FAILED(rv)) { + + if (!aAttributes) { return newContent; } - nsTArray<nsString> theContent; - nsAutoString theAttribute; - - (void) theFormProcessor->ProvideContent(NS_LITERAL_STRING("select"), - theContent, - theAttribute); - - newContent->SetAttr(kNameSpaceID_None, - nsGkAtoms::moztype, - nullptr, - theAttribute, - false); - - RefPtr<dom::NodeInfo> optionNodeInfo = - aNodeInfoManager->GetNodeInfo(nsHtml5Atoms::option, - nullptr, - kNameSpaceID_XHTML, - nsIDOMNode::ELEMENT_NODE); - - for (uint32_t i = 0; i < theContent.Length(); ++i) { - nsCOMPtr<dom::Element> optionElt; - RefPtr<dom::NodeInfo> ni = optionNodeInfo; - NS_NewElement(getter_AddRefs(optionElt), - ni.forget(), - aFromParser); - RefPtr<nsTextNode> optionText = new nsTextNode(aNodeInfoManager); - (void) optionText->SetText(theContent[i], false); - optionElt->AppendChildTo(optionText, false); - newContent->AppendChildTo(optionElt, false); - // XXXsmaug Shouldn't we call this after adding all the child nodes. + SetHTMLElementAttributes(newContent, aName, aAttributes); + } else { + nsCOMPtr<dom::Element> newElement; + + if (isCustomElement) { + NS_NewHTMLElement(getter_AddRefs(newElement), nodeInfo.forget(), + aFromParser, (isValue.IsEmpty() ? nullptr : &isValue), + definition); + } else { + newElement = aCreator(nodeInfo.forget(), aFromParser); + } + + MOZ_ASSERT(newElement, "Element creation created null pointer."); + + newContent = newElement; + aBuilder->HoldElement(newElement.forget()); + + if (MOZ_UNLIKELY(aName == nsHtml5Atoms::style || aName == nsHtml5Atoms::link)) { + nsCOMPtr<nsIStyleSheetLinkingElement> ssle(do_QueryInterface(newContent)); + if (ssle) { + ssle->InitStyleLinkElement(false); + ssle->SetEnableUpdates(false); + } + } else if (MOZ_UNLIKELY(isKeygen)) { + // Adapted from CNavDTD + nsresult rv; + nsCOMPtr<nsIFormProcessor> theFormProcessor = + do_GetService(kFormProcessorCID, &rv); + if (NS_FAILED(rv)) { + return newContent; + } + + nsTArray<nsString> theContent; + nsAutoString theAttribute; + + (void) theFormProcessor->ProvideContent(NS_LITERAL_STRING("select"), + theContent, + theAttribute); + + newContent->SetAttr(kNameSpaceID_None, + nsGkAtoms::moztype, + nullptr, + theAttribute, + false); + + RefPtr<dom::NodeInfo> optionNodeInfo = aNodeInfoManager->GetNodeInfo( + nsHtml5Atoms::option, nullptr, kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE); + + for (uint32_t i = 0; i < theContent.Length(); ++i) { + RefPtr<dom::NodeInfo> ni = optionNodeInfo; + nsCOMPtr<dom::Element> optionElt = + NS_NewHTMLOptionElement(ni.forget(), aFromParser); + RefPtr<nsTextNode> optionText = new nsTextNode(aNodeInfoManager); + (void) optionText->SetText(theContent[i], false); + optionElt->AppendChildTo(optionText, false); + newContent->AppendChildTo(optionElt, false); + } newContent->DoneAddingChildren(false); } + + if (!aAttributes) { + return newContent; + } + + SetHTMLElementAttributes(newContent, aName, aAttributes); + } + + return newContent; +} + +nsIContent* +nsHtml5TreeOperation::CreateSVGElement( + nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + mozilla::dom::FromParser aFromParser, + nsNodeInfoManager* aNodeInfoManager, + nsHtml5DocumentBuilder* aBuilder, + mozilla::dom::SVGContentCreatorFunction aCreator) +{ + nsCOMPtr<nsIContent> newElement; + RefPtr<dom::NodeInfo> nodeInfo = aNodeInfoManager->GetNodeInfo( + aName, nullptr, kNameSpaceID_SVG, nsIDOMNode::ELEMENT_NODE); + MOZ_ASSERT(nodeInfo, "Got null nodeinfo."); + + mozilla::DebugOnly<nsresult> rv = + aCreator(getter_AddRefs(newElement), nodeInfo.forget(), aFromParser); + MOZ_ASSERT(NS_SUCCEEDED(rv) && newElement); + + dom::Element* newContent = newElement->AsElement(); + aBuilder->HoldElement(newElement.forget()); + + if (MOZ_UNLIKELY(aName == nsHtml5Atoms::style)) { + nsCOMPtr<nsIStyleSheetLinkingElement> ssle(do_QueryInterface(newContent)); + if (ssle) { + ssle->InitStyleLinkElement(false); + ssle->SetEnableUpdates(false); + } } if (!aAttributes) { @@ -419,30 +589,45 @@ nsHtml5TreeOperation::CreateElement(int32_t aNs, nsString value; // Not Auto, because using it to hold nsStringBuffer* aAttributes->getValueNoBoundsCheck(i).ToString(value); - if (aNs == kNameSpaceID_XHTML && - nsHtml5Atoms::a == aName && - nsHtml5Atoms::name == localName) { - // This is an HTML5-incompliant Geckoism. - // Remove when fixing bug 582361 - NS_ConvertUTF16toUTF8 cname(value); - NS_ConvertUTF8toUTF16 uv(nsUnescape(cname.BeginWriting())); - newContent->SetAttr(nsuri, - localName, - prefix, - uv, - false); - } else { - newContent->SetAttr(nsuri, - localName, - prefix, - value, - false); + newContent->SetAttr(nsuri, localName, prefix, value, false); + } + return newContent; +} - // Custom element setup may be needed if there is an "is" attribute. - if (kNameSpaceID_None == nsuri && !prefix && nsGkAtoms::is == localName) { - nsContentUtils::SetupCustomElement(newContent, &value); - } - } +nsIContent* +nsHtml5TreeOperation::CreateMathMLElement(nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + nsNodeInfoManager* aNodeInfoManager, + nsHtml5DocumentBuilder* aBuilder) +{ + nsCOMPtr<dom::Element> newElement; + RefPtr<dom::NodeInfo> nodeInfo = aNodeInfoManager->GetNodeInfo( + aName, nullptr, kNameSpaceID_MathML, nsIDOMNode::ELEMENT_NODE); + NS_ASSERTION(nodeInfo, "Got null nodeinfo."); + + mozilla::DebugOnly<nsresult> rv = + NS_NewMathMLElement(getter_AddRefs(newElement), nodeInfo.forget()); + MOZ_ASSERT(NS_SUCCEEDED(rv) && newElement); + + dom::Element* newContent = newElement; + aBuilder->HoldElement(newElement.forget()); + + if (!aAttributes) { + return newContent; + } + + int32_t len = aAttributes->getLength(); + for (int32_t i = 0; i < len; i++) { + // prefix doesn't need regetting. it is always null or a static atom + // local name is never null + nsCOMPtr<nsIAtom> localName = + Reget(aAttributes->getLocalNameNoBoundsCheck(i)); + nsCOMPtr<nsIAtom> prefix = aAttributes->getPrefixNoBoundsCheck(i); + int32_t nsuri = aAttributes->getURINoBoundsCheck(i); + + nsString value; // Not Auto, because using it to hold nsStringBuffer* + aAttributes->getValueNoBoundsCheck(i).ToString(value); + newContent->SetAttr(nsuri, localName, prefix, value, false); } return newContent; } @@ -673,10 +858,56 @@ nsHtml5TreeOperation::Perform(nsHtml5TreeOpExecutor* aBuilder, aBuilder->SetDocumentMode(mOne.mode); return NS_OK; } - case eTreeOpCreateElementNetwork: - case eTreeOpCreateElementNotNetwork: { + case eTreeOpCreateHTMLElementNetwork: + case eTreeOpCreateHTMLElementNotNetwork: { + nsIContent** target = mOne.node; + mozilla::dom::HTMLContentCreatorFunction creator = mFour.htmlCreator; + nsCOMPtr<nsIAtom> name = Reget(mTwo.atom); + nsHtml5HtmlAttributes* attributes = mThree.attributes; + nsIContent* intendedParent = mFive.node ? *(mFive.node) : nullptr; + + // intendedParent == nullptr is a special case where the + // intended parent is the document. + nsNodeInfoManager* nodeInfoManager = + intendedParent ? intendedParent->OwnerDoc()->NodeInfoManager() + : aBuilder->GetNodeInfoManager(); + + *target = CreateHTMLElement(name, + attributes, + mOpCode == eTreeOpCreateHTMLElementNetwork + ? dom::FROM_PARSER_NETWORK + : dom::FROM_PARSER_DOCUMENT_WRITE, + nodeInfoManager, + aBuilder, + creator); + return NS_OK; + } + case eTreeOpCreateSVGElementNetwork: + case eTreeOpCreateSVGElementNotNetwork: { + nsIContent** target = mOne.node; + mozilla::dom::SVGContentCreatorFunction creator = mFour.svgCreator; + nsCOMPtr<nsIAtom> name = Reget(mTwo.atom); + nsHtml5HtmlAttributes* attributes = mThree.attributes; + nsIContent* intendedParent = mFive.node ? *(mFive.node) : nullptr; + + // intendedParent == nullptr is a special case where the + // intended parent is the document. + nsNodeInfoManager* nodeInfoManager = + intendedParent ? intendedParent->OwnerDoc()->NodeInfoManager() + : aBuilder->GetNodeInfoManager(); + + *target = CreateSVGElement(name, + attributes, + mOpCode == eTreeOpCreateSVGElementNetwork + ? dom::FROM_PARSER_NETWORK + : dom::FROM_PARSER_DOCUMENT_WRITE, + nodeInfoManager, + aBuilder, + creator); + return NS_OK; + } + case eTreeOpCreateMathMLElement: { nsIContent** target = mOne.node; - int32_t ns = mFour.integer; nsCOMPtr<nsIAtom> name = Reget(mTwo.atom); nsHtml5HtmlAttributes* attributes = mThree.attributes; nsIContent* intendedParent = mFive.node ? *(mFive.node) : nullptr; @@ -687,14 +918,8 @@ nsHtml5TreeOperation::Perform(nsHtml5TreeOpExecutor* aBuilder, intendedParent->OwnerDoc()->NodeInfoManager() : aBuilder->GetNodeInfoManager(); - *target = CreateElement(ns, - name, - attributes, - mOpCode == eTreeOpCreateElementNetwork ? - dom::FROM_PARSER_NETWORK : - dom::FROM_PARSER_DOCUMENT_WRITE, - nodeInfoManager, - aBuilder); + *target = + CreateMathMLElement(name, attributes, nodeInfoManager, aBuilder); return NS_OK; } case eTreeOpSetFormElement: { diff --git a/parser/html/nsHtml5TreeOperation.h b/parser/html/nsHtml5TreeOperation.h index a93f44c46..db6cc6397 100644 --- a/parser/html/nsHtml5TreeOperation.h +++ b/parser/html/nsHtml5TreeOperation.h @@ -14,7 +14,8 @@ class nsIContent; class nsHtml5TreeOpExecutor; class nsHtml5DocumentBuilder; -enum eHtml5TreeOperation { +enum eHtml5TreeOperation +{ eTreeOpUninitialized, // main HTML5 ops eTreeOpAppend, @@ -24,8 +25,11 @@ enum eHtml5TreeOperation { eTreeOpAppendToDocument, eTreeOpAddAttributes, eTreeOpDocumentMode, - eTreeOpCreateElementNetwork, - eTreeOpCreateElementNotNetwork, + eTreeOpCreateHTMLElementNetwork, + eTreeOpCreateHTMLElementNotNetwork, + eTreeOpCreateSVGElementNetwork, + eTreeOpCreateSVGElementNotNetwork, + eTreeOpCreateMathMLElement, eTreeOpSetFormElement, eTreeOpAppendText, eTreeOpAppendIsindexPrompt, @@ -139,16 +143,34 @@ class nsHtml5TreeOperation { nsIContent* aTable, nsHtml5DocumentBuilder* aBuilder); + static void SetHTMLElementAttributes(mozilla::dom::Element* aElement, + nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes); + static nsresult AddAttributes(nsIContent* aNode, nsHtml5HtmlAttributes* aAttributes, nsHtml5DocumentBuilder* aBuilder); - static nsIContent* CreateElement(int32_t aNs, - nsIAtom* aName, - nsHtml5HtmlAttributes* aAttributes, - mozilla::dom::FromParser aFromParser, - nsNodeInfoManager* aNodeInfoManager, - nsHtml5DocumentBuilder* aBuilder); + static nsIContent* CreateHTMLElement( + nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + mozilla::dom::FromParser aFromParser, + nsNodeInfoManager* aNodeInfoManager, + nsHtml5DocumentBuilder* aBuilder, + mozilla::dom::HTMLContentCreatorFunction aCreator); + + static nsIContent* CreateSVGElement( + nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + mozilla::dom::FromParser aFromParser, + nsNodeInfoManager* aNodeInfoManager, + nsHtml5DocumentBuilder* aBuilder, + mozilla::dom::SVGContentCreatorFunction aCreator); + + static nsIContent* CreateMathMLElement(nsIAtom* aName, + nsHtml5HtmlAttributes* aAttributes, + nsNodeInfoManager* aNodeInfoManager, + nsHtml5DocumentBuilder* aBuilder); static void SetFormElement(nsIContent* aNode, nsIContent* aParent); @@ -284,22 +306,31 @@ class nsHtml5TreeOperation { mOne.node = static_cast<nsIContent**>(aNode); mTwo.state = nullptr; } - - inline void Init(int32_t aNamespace, - nsIAtom* aName, + + inline void Init(int32_t aNamespace, + nsIAtom* aName, nsHtml5HtmlAttributes* aAttributes, nsIContentHandle* aTarget, nsIContentHandle* aIntendedParent, - bool aFromNetwork) + bool aFromNetwork, + nsHtml5ContentCreatorFunction aCreator) { NS_PRECONDITION(mOpCode == eTreeOpUninitialized, "Op code must be uninitialized when initializing."); NS_PRECONDITION(aName, "Initialized tree op with null name."); NS_PRECONDITION(aTarget, "Initialized tree op with null target node."); - mOpCode = aFromNetwork ? - eTreeOpCreateElementNetwork : - eTreeOpCreateElementNotNetwork; - mFour.integer = aNamespace; + if (aNamespace == kNameSpaceID_XHTML) { + mOpCode = aFromNetwork ? eTreeOpCreateHTMLElementNetwork + : eTreeOpCreateHTMLElementNotNetwork; + mFour.htmlCreator = aCreator.html; + } else if (aNamespace == kNameSpaceID_SVG) { + mOpCode = aFromNetwork ? eTreeOpCreateSVGElementNetwork + : eTreeOpCreateSVGElementNotNetwork; + mFour.svgCreator = aCreator.svg; + } else { + MOZ_ASSERT(aNamespace == kNameSpaceID_MathML); + mOpCode = eTreeOpCreateMathMLElement; + } mFive.node = static_cast<nsIContent**>(aIntendedParent); mOne.node = static_cast<nsIContent**>(aTarget); mTwo.atom = aName; @@ -507,6 +538,8 @@ class nsHtml5TreeOperation { nsAHtml5TreeBuilderState* state; int32_t integer; nsresult result; + mozilla::dom::HTMLContentCreatorFunction htmlCreator; + mozilla::dom::SVGContentCreatorFunction svgCreator; } mOne, mTwo, mThree, mFour, mFive; }; diff --git a/parser/html/nsHtml5UTF16Buffer.cpp b/parser/html/nsHtml5UTF16Buffer.cpp index 4ba40eab0..40624a74a 100644 --- a/parser/html/nsHtml5UTF16Buffer.cpp +++ b/parser/html/nsHtml5UTF16Buffer.cpp @@ -43,13 +43,14 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" +#include "nsHtml5AttributeName.h" +#include "nsHtml5ElementName.h" #include "nsHtml5Tokenizer.h" #include "nsHtml5TreeBuilder.h" #include "nsHtml5MetaScanner.h" -#include "nsHtml5AttributeName.h" -#include "nsHtml5ElementName.h" -#include "nsHtml5HtmlAttributes.h" #include "nsHtml5StackNode.h" #include "nsHtml5StateSnapshot.h" #include "nsHtml5Portability.h" diff --git a/parser/html/nsHtml5UTF16Buffer.h b/parser/html/nsHtml5UTF16Buffer.h index 5413dac87..237fdf2e0 100644 --- a/parser/html/nsHtml5UTF16Buffer.h +++ b/parser/html/nsHtml5UTF16Buffer.h @@ -44,15 +44,16 @@ #include "nsIUnicodeDecoder.h" #include "nsHtml5Macros.h" #include "nsIContentHandle.h" +#include "nsHtml5Portability.h" +#include "nsHtml5ContentCreatorFunction.h" class nsHtml5StreamParser; +class nsHtml5AttributeName; +class nsHtml5ElementName; class nsHtml5Tokenizer; class nsHtml5TreeBuilder; class nsHtml5MetaScanner; -class nsHtml5AttributeName; -class nsHtml5ElementName; -class nsHtml5HtmlAttributes; class nsHtml5StateSnapshot; class nsHtml5Portability; @@ -78,7 +79,5 @@ class nsHtml5UTF16Buffer #include "nsHtml5UTF16BufferHSupplement.h" }; - - #endif diff --git a/parser/htmlparser/nsHTMLTagList.h b/parser/htmlparser/nsHTMLTagList.h index 7e1e207cc..e6f1f644c 100644 --- a/parser/htmlparser/nsHTMLTagList.h +++ b/parser/htmlparser/nsHTMLTagList.h @@ -10,8 +10,14 @@ This file contains the list of all HTML tags. See nsHTMLTags.h for access to the enum values for tags. - It is designed to be used as inline input to nsHTMLTags.cpp and - nsHTMLContentSink *only* through the magic of C preprocessing. + It is designed to be used as input to various places that will define the + HTML_TAG macro in useful ways through the magic of C preprocessing. + Additionally, it is consumed by the self-regeneration code in + ElementName.java from which nsHtml5ElementName.cpp/h is translated. + See parser/html/java/README.txt. + + If you edit this list, you need to re-run ElementName.java + self-regeneration and the HTML parser Java to C++ translation. All entries must be enclosed in the macro HTML_TAG which will have cruel and unusual things done to it. @@ -19,11 +25,13 @@ It is recommended (but not strictly necessary) to keep all entries in alphabetical order. - The first argument to HTML_TAG is both the enum identifier of the - property and the string value. The second argument is the "creator" - method of the form NS_New$TAGNAMEElement, that will be used by + The first argument to HTML_TAG is the tag name. The second argument is the + "creator" method of the form NS_New$TAGNAMEElement, that will be used by nsHTMLContentSink.cpp to create a content object for a tag of that type. Use NOTUSED, if the particular tag has a non-standard creator. + The third argument is the interface name specified for this element + in the HTML specification. It can be empty if the relevant interface name + is "HTMLElement". The HTML_OTHER macro is for values in the nsHTMLTag enum that are not strictly tags. @@ -35,104 +43,106 @@ ** Break these invariants and bad things will happen. ** ******/ -HTML_TAG(a, Anchor) +#define HTML_HTMLELEMENT_TAG(_tag) HTML_TAG(_tag, , ) + +HTML_TAG(a, Anchor, Anchor) HTML_HTMLELEMENT_TAG(abbr) HTML_HTMLELEMENT_TAG(acronym) HTML_HTMLELEMENT_TAG(address) -HTML_TAG(applet, SharedObject) -HTML_TAG(area, Area) +HTML_TAG(applet, SharedObject, Applet) +HTML_TAG(area, Area, Area) HTML_HTMLELEMENT_TAG(article) HTML_HTMLELEMENT_TAG(aside) -HTML_TAG(audio, Audio) +HTML_TAG(audio, Audio, Audio) HTML_HTMLELEMENT_TAG(b) -HTML_TAG(base, Shared) +HTML_TAG(base, Shared, Base) HTML_HTMLELEMENT_TAG(basefont) HTML_HTMLELEMENT_TAG(bdo) -HTML_TAG(bgsound, Unknown) +HTML_TAG(bgsound, Unknown, Unknown) HTML_HTMLELEMENT_TAG(big) -HTML_TAG(blockquote, Shared) -HTML_TAG(body, Body) -HTML_TAG(br, BR) -HTML_TAG(button, Button) -HTML_TAG(canvas, Canvas) -HTML_TAG(caption, TableCaption) +HTML_TAG(blockquote, Shared, Quote) +HTML_TAG(body, Body, Body) +HTML_TAG(br, BR, BR) +HTML_TAG(button, Button, Button) +HTML_TAG(canvas, Canvas, Canvas) +HTML_TAG(caption, TableCaption, TableCaption) HTML_HTMLELEMENT_TAG(center) HTML_HTMLELEMENT_TAG(cite) HTML_HTMLELEMENT_TAG(code) -HTML_TAG(col, TableCol) -HTML_TAG(colgroup, TableCol) -HTML_TAG(content, Content) -HTML_TAG(data, Data) -HTML_TAG(datalist, DataList) +HTML_TAG(col, TableCol, TableCol) +HTML_TAG(colgroup, TableCol, TableCol) +HTML_TAG(content, Content, Content) +HTML_TAG(data, Data, Data) +HTML_TAG(datalist, DataList, DataList) HTML_HTMLELEMENT_TAG(dd) -HTML_TAG(del, Mod) -HTML_TAG(details, Details) +HTML_TAG(del, Mod, Mod) +HTML_TAG(details, Details, Details) HTML_HTMLELEMENT_TAG(dfn) -HTML_TAG(dialog, Dialog) -HTML_TAG(dir, Shared) -HTML_TAG(div, Div) -HTML_TAG(dl, SharedList) +HTML_TAG(dialog, Dialog, Dialog) +HTML_TAG(dir, Shared, Directory) +HTML_TAG(div, Div, Div) +HTML_TAG(dl, SharedList, DList) HTML_HTMLELEMENT_TAG(dt) HTML_HTMLELEMENT_TAG(em) -HTML_TAG(embed, SharedObject) -HTML_TAG(fieldset, FieldSet) +HTML_TAG(embed, SharedObject, Embed) +HTML_TAG(fieldset, FieldSet, FieldSet) HTML_HTMLELEMENT_TAG(figcaption) HTML_HTMLELEMENT_TAG(figure) -HTML_TAG(font, Font) +HTML_TAG(font, Font, Font) HTML_HTMLELEMENT_TAG(footer) -HTML_TAG(form, Form) -HTML_TAG(frame, Frame) -HTML_TAG(frameset, FrameSet) -HTML_TAG(h1, Heading) -HTML_TAG(h2, Heading) -HTML_TAG(h3, Heading) -HTML_TAG(h4, Heading) -HTML_TAG(h5, Heading) -HTML_TAG(h6, Heading) -HTML_TAG(head, Shared) +HTML_TAG(form, Form, Form) +HTML_TAG(frame, Frame, Frame) +HTML_TAG(frameset, FrameSet, FrameSet) +HTML_TAG(h1, Heading, Heading) +HTML_TAG(h2, Heading, Heading) +HTML_TAG(h3, Heading, Heading) +HTML_TAG(h4, Heading, Heading) +HTML_TAG(h5, Heading, Heading) +HTML_TAG(h6, Heading, Heading) +HTML_TAG(head, Shared, Head) HTML_HTMLELEMENT_TAG(header) HTML_HTMLELEMENT_TAG(hgroup) -HTML_TAG(hr, HR) -HTML_TAG(html, Shared) +HTML_TAG(hr, HR, HR) +HTML_TAG(html, Shared, Html) HTML_HTMLELEMENT_TAG(i) -HTML_TAG(iframe, IFrame) +HTML_TAG(iframe, IFrame, IFrame) HTML_HTMLELEMENT_TAG(image) -HTML_TAG(img, Image) -HTML_TAG(input, Input) -HTML_TAG(ins, Mod) +HTML_TAG(img, Image, Image) +HTML_TAG(input, Input, Input) +HTML_TAG(ins, Mod, Mod) HTML_HTMLELEMENT_TAG(kbd) -HTML_TAG(keygen, Span) -HTML_TAG(label, Label) -HTML_TAG(legend, Legend) -HTML_TAG(li, LI) -HTML_TAG(link, Link) -HTML_TAG(listing, Pre) +HTML_TAG(keygen, Span, Span) +HTML_TAG(label, Label, Label) +HTML_TAG(legend, Legend, Legend) +HTML_TAG(li, LI, LI) +HTML_TAG(link, Link, Link) +HTML_TAG(listing, Pre, Pre) HTML_HTMLELEMENT_TAG(main) -HTML_TAG(map, Map) +HTML_TAG(map, Map, Map) HTML_HTMLELEMENT_TAG(mark) -HTML_TAG(marquee, Div) -HTML_TAG(menu, Menu) -HTML_TAG(menuitem, MenuItem) -HTML_TAG(meta, Meta) -HTML_TAG(meter, Meter) -HTML_TAG(multicol, Unknown) +HTML_TAG(marquee, Div, Div) +HTML_TAG(menu, Menu, Menu) +HTML_TAG(menuitem, MenuItem, MenuItem) +HTML_TAG(meta, Meta, Meta) +HTML_TAG(meter, Meter, Meter) +HTML_TAG(multicol, Unknown, Unknown) HTML_HTMLELEMENT_TAG(nav) HTML_HTMLELEMENT_TAG(nobr) HTML_HTMLELEMENT_TAG(noembed) HTML_HTMLELEMENT_TAG(noframes) HTML_HTMLELEMENT_TAG(noscript) -HTML_TAG(object, Object) -HTML_TAG(ol, SharedList) -HTML_TAG(optgroup, OptGroup) -HTML_TAG(option, Option) -HTML_TAG(output, Output) -HTML_TAG(p, Paragraph) -HTML_TAG(param, Shared) -HTML_TAG(picture, Picture) +HTML_TAG(object, Object, Object) +HTML_TAG(ol, SharedList, OList) +HTML_TAG(optgroup, OptGroup, OptGroup) +HTML_TAG(option, Option, Option) +HTML_TAG(output, Output, Output) +HTML_TAG(p, Paragraph, Paragraph) +HTML_TAG(param, Shared, Param) +HTML_TAG(picture, Picture, Picture) HTML_HTMLELEMENT_TAG(plaintext) -HTML_TAG(pre, Pre) -HTML_TAG(progress, Progress) -HTML_TAG(q, Shared) +HTML_TAG(pre, Pre, Pre) +HTML_TAG(progress, Progress, Progress) +HTML_TAG(q, Shared, Quote) HTML_HTMLELEMENT_TAG(rb) HTML_HTMLELEMENT_TAG(rp) HTML_HTMLELEMENT_TAG(rt) @@ -140,38 +150,38 @@ HTML_HTMLELEMENT_TAG(rtc) HTML_HTMLELEMENT_TAG(ruby) HTML_HTMLELEMENT_TAG(s) HTML_HTMLELEMENT_TAG(samp) -HTML_TAG(script, Script) +HTML_TAG(script, Script, Script) HTML_HTMLELEMENT_TAG(section) -HTML_TAG(select, Select) -HTML_TAG(shadow, Shadow) +HTML_TAG(select, Select, Select) +HTML_TAG(shadow, Shadow, Shadow) HTML_HTMLELEMENT_TAG(small) -HTML_TAG(source, Source) -HTML_TAG(span, Span) +HTML_TAG(source, Source, Source) +HTML_TAG(span, Span, Span) HTML_HTMLELEMENT_TAG(strike) HTML_HTMLELEMENT_TAG(strong) -HTML_TAG(style, Style) +HTML_TAG(style, Style, Style) HTML_HTMLELEMENT_TAG(sub) -HTML_TAG(summary, Summary) +HTML_TAG(summary, Summary, ) HTML_HTMLELEMENT_TAG(sup) -HTML_TAG(table, Table) -HTML_TAG(tbody, TableSection) -HTML_TAG(td, TableCell) -HTML_TAG(textarea, TextArea) -HTML_TAG(tfoot, TableSection) -HTML_TAG(th, TableCell) -HTML_TAG(thead, TableSection) -HTML_TAG(template, Template) -HTML_TAG(time, Time) -HTML_TAG(title, Title) -HTML_TAG(tr, TableRow) -HTML_TAG(track, Track) +HTML_TAG(table, Table, Table) +HTML_TAG(tbody, TableSection, TableSection) +HTML_TAG(td, TableCell, TableCell) +HTML_TAG(textarea, TextArea, TextArea) +HTML_TAG(tfoot, TableSection, TableSection) +HTML_TAG(th, TableCell, TableCell) +HTML_TAG(thead, TableSection, TableSection) +HTML_TAG(template, Template, Template) +HTML_TAG(time, Time, Time) +HTML_TAG(title, Title, Title) +HTML_TAG(tr, TableRow, TableRow) +HTML_TAG(track, Track, Track) HTML_HTMLELEMENT_TAG(tt) HTML_HTMLELEMENT_TAG(u) -HTML_TAG(ul, SharedList) +HTML_TAG(ul, SharedList, UList) HTML_HTMLELEMENT_TAG(var) -HTML_TAG(video, Video) +HTML_TAG(video, Video, Video) HTML_HTMLELEMENT_TAG(wbr) -HTML_TAG(xmp, Pre) +HTML_TAG(xmp, Pre, Pre) /* These are not for tags. But they will be included in the nsHTMLTag @@ -185,3 +195,5 @@ HTML_OTHER(entity) HTML_OTHER(doctypeDecl) HTML_OTHER(markupDecl) HTML_OTHER(instruction) + +#undef HTML_HTMLELEMENT_TAG diff --git a/parser/htmlparser/nsHTMLTags.cpp b/parser/htmlparser/nsHTMLTags.cpp index d5a68d46a..e98d2c4cd 100644 --- a/parser/htmlparser/nsHTMLTags.cpp +++ b/parser/htmlparser/nsHTMLTags.cpp @@ -15,14 +15,12 @@ using namespace mozilla; // static array of unicode tag names -#define HTML_TAG(_tag, _classname) (u"" #_tag), -#define HTML_HTMLELEMENT_TAG(_tag) (u"" #_tag), +#define HTML_TAG(_tag, _classname, _interfacename) (u"" #_tag), #define HTML_OTHER(_tag) const char16_t* const nsHTMLTags::sTagUnicodeTable[] = { #include "nsHTMLTagList.h" }; #undef HTML_TAG -#undef HTML_HTMLELEMENT_TAG #undef HTML_OTHER // static array of tag atoms @@ -62,23 +60,19 @@ HTMLTagsHashCodeAtom(const void *key) void nsHTMLTags::RegisterAtoms(void) { -#define HTML_TAG(_tag, _classname) NS_STATIC_ATOM_BUFFER(Atombuffer_##_tag, #_tag) -#define HTML_HTMLELEMENT_TAG(_tag) NS_STATIC_ATOM_BUFFER(Atombuffer_##_tag, #_tag) +#define HTML_TAG(_tag, _classname, _interfacename) NS_STATIC_ATOM_BUFFER(Atombuffer_##_tag, #_tag) #define HTML_OTHER(_tag) #include "nsHTMLTagList.h" #undef HTML_TAG -#undef HTML_HTMLELEMENT_TAG #undef HTML_OTHER // static array of tag StaticAtom structs -#define HTML_TAG(_tag, _classname) NS_STATIC_ATOM(Atombuffer_##_tag, &nsHTMLTags::sTagAtomTable[eHTMLTag_##_tag - 1]), -#define HTML_HTMLELEMENT_TAG(_tag) NS_STATIC_ATOM(Atombuffer_##_tag, &nsHTMLTags::sTagAtomTable[eHTMLTag_##_tag - 1]), +#define HTML_TAG(_tag, _classname, _interfacename) NS_STATIC_ATOM(Atombuffer_##_tag, &nsHTMLTags::sTagAtomTable[eHTMLTag_##_tag - 1]), #define HTML_OTHER(_tag) static const nsStaticAtom sTagAtoms_info[] = { #include "nsHTMLTagList.h" }; #undef HTML_TAG -#undef HTML_HTMLELEMENT_TAG #undef HTML_OTHER // Fill in our static atom pointers diff --git a/parser/htmlparser/nsHTMLTags.h b/parser/htmlparser/nsHTMLTags.h index 8f0c86b4b..27a23b89f 100644 --- a/parser/htmlparser/nsHTMLTags.h +++ b/parser/htmlparser/nsHTMLTags.h @@ -17,9 +17,12 @@ class nsIAtom; To change the list of tags, see nsHTMLTagList.h + These enum values are used as the index of array in various places. + If we change the structure of the enum by adding entries to it or removing + entries from it _directly_, not via nsHTMLTagList.h, don't forget to update + dom/bindings/BindingUtils.cpp and dom/html/nsHTMLContentSink.cpp as well. */ -#define HTML_TAG(_tag, _classname) eHTMLTag_##_tag, -#define HTML_HTMLELEMENT_TAG(_tag) eHTMLTag_##_tag, +#define HTML_TAG(_tag, _classname, _interfacename) eHTMLTag_##_tag, #define HTML_OTHER(_tag) eHTMLTag_##_tag, enum nsHTMLTag { /* this enum must be first and must be zero */ @@ -31,7 +34,6 @@ enum nsHTMLTag { eHTMLTag_userdefined }; #undef HTML_TAG -#undef HTML_HTMLELEMENT_TAG #undef HTML_OTHER // All tags before eHTMLTag_text are HTML tags diff --git a/python/mozbuild/mozpack/packager/formats.py b/python/mozbuild/mozpack/packager/formats.py index c4adabab0..cedd1998b 100644 --- a/python/mozbuild/mozpack/packager/formats.py +++ b/python/mozbuild/mozpack/packager/formats.py @@ -318,7 +318,7 @@ class OmniJarSubFormatter(PiecemealFormatter): path[1] in ['pref', 'preferences']) return path[0] in [ 'modules', - 'greprefs.js', + 'goanna.js', 'hyphenation', 'update.locale', ] or path[0] in STARTUP_CACHE_PATHS diff --git a/python/mozbuild/mozpack/test/test_packager_formats.py b/python/mozbuild/mozpack/test/test_packager_formats.py index 1af4336b2..66a7cc8e6 100644 --- a/python/mozbuild/mozpack/test/test_packager_formats.py +++ b/python/mozbuild/mozpack/test/test_packager_formats.py @@ -405,13 +405,13 @@ class TestFormatters(unittest.TestCase): self.assertFalse( is_resource(base, 'defaults/preferences/channel-prefs.js')) self.assertTrue(is_resource(base, 'modules/foo.jsm')) - self.assertTrue(is_resource(base, 'greprefs.js')) + self.assertTrue(is_resource(base, 'goanna.js')) self.assertTrue(is_resource(base, 'hyphenation/foo')) self.assertTrue(is_resource(base, 'update.locale')) self.assertTrue( is_resource(base, 'jsloader/resource/gre/modules/foo.jsm')) self.assertFalse(is_resource(base, 'foo')) - self.assertFalse(is_resource(base, 'foo/bar/greprefs.js')) + self.assertFalse(is_resource(base, 'foo/bar/goanna.js')) self.assertTrue(is_resource(base, 'defaults/messenger/foo.dat')) self.assertFalse( is_resource(base, 'defaults/messenger/mailViews.dat')) diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h index e56ce2f59..b8d9da65c 100644 --- a/security/nss/lib/nss/nss.h +++ b/security/nss/lib/nss/nss.h @@ -25,7 +25,7 @@ #define NSS_VERSION "3.48" _NSS_CUSTOMIZED #define NSS_VMAJOR 3 #define NSS_VMINOR 48 -#define NSS_VPATCH 0 +#define NSS_VPATCH 1 #define NSS_VBUILD 0 #define NSS_BETA PR_FALSE diff --git a/security/nss/lib/softoken/lowpbe.c b/security/nss/lib/softoken/lowpbe.c index 86b55fd9b..55808f0f7 100644 --- a/security/nss/lib/softoken/lowpbe.c +++ b/security/nss/lib/softoken/lowpbe.c @@ -554,50 +554,160 @@ loser: return A; } +struct KDFCacheItemStr { + SECItem *hash; + SECItem *salt; + SECItem *pwItem; + HASH_HashType hashType; + int iterations; + int keyLen; +}; +typedef struct KDFCacheItemStr KDFCacheItem; + /* Bug 1606992 - Cache the hash result for the common case that we're * asked to repeatedly compute the key for the same password item, * hash, iterations and salt. */ -static PZLock *PBE_cache_lock = NULL; -static SECItem *cached_PBKDF2_item = NULL; -static HASH_HashType cached_hashType; -static int cached_iterations; -static int cached_keyLen; -static SECItem *cached_salt = NULL; -static SECItem *cached_pwitem = NULL; +static struct { + PZLock *lock; + struct { + KDFCacheItem common; + int ivLen; + PRBool faulty3DES; + } cacheKDF1; + struct { + KDFCacheItem common; + } cacheKDF2; +} PBECache; void sftk_PBELockInit(void) { - if (!PBE_cache_lock) { - PBE_cache_lock = PZ_NewLock(nssIPBECacheLock); + if (!PBECache.lock) { + PBECache.lock = PZ_NewLock(nssIPBECacheLock); } } static void -sftk_clearPBECacheItems(void) +sftk_clearPBECommonCacheItemsLocked(KDFCacheItem *item) { - if (cached_PBKDF2_item) { - SECITEM_FreeItem(cached_PBKDF2_item, PR_TRUE); - cached_PBKDF2_item = NULL; + if (item->hash) { + SECITEM_ZfreeItem(item->hash, PR_TRUE); + item->hash = NULL; } - if (cached_salt) { - SECITEM_FreeItem(cached_salt, PR_TRUE); - cached_salt = NULL; + if (item->salt) { + SECITEM_FreeItem(item->salt, PR_TRUE); + item->salt = NULL; } - if (cached_pwitem) { - SECITEM_FreeItem(cached_pwitem, PR_TRUE); - cached_pwitem = NULL; + if (item->pwItem) { + SECITEM_ZfreeItem(item->pwItem, PR_TRUE); + item->pwItem = NULL; } } +sftk_setPBECommonCacheItemsKDFLocked(KDFCacheItem *cacheItem, + const SECItem *hash, + const NSSPKCS5PBEParameter *pbe_param, + const SECItem *pwItem) +{ + cacheItem->hash = SECITEM_DupItem(hash); + cacheItem->hashType = pbe_param->hashType; + cacheItem->iterations = pbe_param->iter; + cacheItem->keyLen = pbe_param->keyLen; + cacheItem->salt = SECITEM_DupItem(&pbe_param->salt); + cacheItem->pwItem = SECITEM_DupItem(pwItem); +} + +static void +sftk_setPBECacheKDF2(const SECItem *hash, + const NSSPKCS5PBEParameter *pbe_param, + const SECItem *pwItem) +{ + PZ_Lock(PBECache.lock); + sftk_clearPBECommonCacheItemsLocked(&PBECache.cacheKDF2.common); + sftk_setPBECommonCacheItemsKDFLocked(&PBECache.cacheKDF2.common, + hash, pbe_param, pwItem); + + PZ_Unlock(PBECache.lock); +} + +static void +sftk_setPBECacheKDF1(const SECItem *hash, + const NSSPKCS5PBEParameter *pbe_param, + const SECItem *pwItem, + PRBool faulty3DES) +{ + PZ_Lock(PBECache.lock); + + sftk_clearPBECommonCacheItemsLocked(&PBECache.cacheKDF1.common); + + sftk_setPBECommonCacheItemsKDFLocked(&PBECache.cacheKDF1.common, + hash, pbe_param, pwItem); + PBECache.cacheKDF1.faulty3DES = faulty3DES; + PBECache.cacheKDF1.ivLen = pbe_param->ivLen; + + PZ_Unlock(PBECache.lock); +} + +static PRBool +sftk_comparePBECommonCacheItemLocked(const KDFCacheItem *cacheItem, + const NSSPKCS5PBEParameter *pbe_param, + const SECItem *pwItem) +{ + return (cacheItem->hash && + cacheItem->salt && + cacheItem->pwItem && + pbe_param->hashType == cacheItem->hashType && + pbe_param->iter == cacheItem->iterations && + pbe_param->keyLen == cacheItem->keyLen && + SECITEM_ItemsAreEqual(&pbe_param->salt, cacheItem->salt) && + SECITEM_ItemsAreEqual(pwItem, cacheItem->pwItem)); +} + +static SECItem * +sftk_getPBECacheKDF2(const NSSPKCS5PBEParameter *pbe_param, + const SECItem *pwItem) +{ + SECItem *result = NULL; + const KDFCacheItem *cacheItem = &PBECache.cacheKDF2.common; + + PZ_Lock(PBECache.lock); + if (sftk_comparePBECommonCacheItemLocked(cacheItem, pbe_param, pwItem)) { + result = SECITEM_DupItem(cacheItem->hash); + } + PZ_Unlock(PBECache.lock); + + return result; +} + +static SECItem * +sftk_getPBECacheKDF1(const NSSPKCS5PBEParameter *pbe_param, + const SECItem *pwItem, + PRBool faulty3DES) +{ + SECItem *result = NULL; + const KDFCacheItem *cacheItem = &PBECache.cacheKDF1.common; + + PZ_Lock(PBECache.lock); + if (sftk_comparePBECommonCacheItemLocked(cacheItem, pbe_param, pwItem) && + PBECache.cacheKDF1.faulty3DES == faulty3DES && + PBECache.cacheKDF1.ivLen == pbe_param->ivLen) { + result = SECITEM_DupItem(cacheItem->hash); + } + PZ_Unlock(PBECache.lock); + + return result; +} + + void sftk_PBELockShutdown(void) { - if (PBE_cache_lock) { - PZ_DestroyLock(PBE_cache_lock); - PBE_cache_lock = 0; + if (PBECache.lock) { + PZ_DestroyLock(PBECache.lock); + PBECache.lock = 0; } - sftk_clearPBECacheItems(); + sftk_clearPBECommonCacheItemsLocked(&PBECache.cacheKDF1.common); + sftk_clearPBECommonCacheItemsLocked(&PBECache.cacheKDF2.common); } /* @@ -632,7 +742,11 @@ nsspkcs5_ComputeKeyAndIV(NSSPKCS5PBEParameter *pbe_param, SECItem *pwitem, hashObj = HASH_GetRawHashObject(pbe_param->hashType); switch (pbe_param->pbeType) { case NSSPKCS5_PBKDF1: - hash = nsspkcs5_PBKDF1Extended(hashObj, pbe_param, pwitem, faulty3DES); + hash = sftk_getPBECacheKDF1(pbe_param, pwitem, faulty3DES); + if (!hash) { + hash = nsspkcs5_PBKDF1Extended(hashObj, pbe_param, pwitem, faulty3DES); + sftk_setPBECacheKDF1(hash, pbe_param, pwitem, faulty3DES); + } if (hash == NULL) { goto loser; } @@ -643,34 +757,10 @@ nsspkcs5_ComputeKeyAndIV(NSSPKCS5PBEParameter *pbe_param, SECItem *pwitem, break; case NSSPKCS5_PBKDF2: - PZ_Lock(PBE_cache_lock); - if (cached_PBKDF2_item) { - if (pbe_param->hashType == cached_hashType && - pbe_param->iter == cached_iterations && - pbe_param->keyLen == cached_keyLen && - cached_salt && - SECITEM_ItemsAreEqual(&pbe_param->salt, cached_salt) && - cached_pwitem && - SECITEM_ItemsAreEqual(pwitem, cached_pwitem)) { - hash = SECITEM_DupItem(cached_PBKDF2_item); - } else { - sftk_clearPBECacheItems(); - } - } - PZ_Unlock(PBE_cache_lock); + hash = sftk_getPBECacheKDF2(pbe_param, pwitem); if (!hash) { hash = nsspkcs5_PBKDF2(hashObj, pbe_param, pwitem); - PZ_Lock(PBE_cache_lock); - /* ensure no other thread was quicker than us setting the cache */ - if (!cached_PBKDF2_item) { - cached_PBKDF2_item = SECITEM_DupItem(hash); - cached_hashType = pbe_param->hashType; - cached_iterations = pbe_param->iter; - cached_keyLen = pbe_param->keyLen; - cached_salt = SECITEM_DupItem(&pbe_param->salt); - cached_pwitem = SECITEM_DupItem(pwitem); - } - PZ_Unlock(PBE_cache_lock); + sftk_setPBECacheKDF2(hash, pbe_param, pwitem); } if (getIV) { PORT_Memcpy(iv->data, pbe_param->ivData, iv->len); diff --git a/security/nss/lib/softoken/softkver.h b/security/nss/lib/softoken/softkver.h index fce11cd6d..7238d257f 100644 --- a/security/nss/lib/softoken/softkver.h +++ b/security/nss/lib/softoken/softkver.h @@ -20,7 +20,7 @@ #define SOFTOKEN_VERSION "3.48" SOFTOKEN_ECC_STRING #define SOFTOKEN_VMAJOR 3 #define SOFTOKEN_VMINOR 48 -#define SOFTOKEN_VPATCH 0 +#define SOFTOKEN_VPATCH 1 #define SOFTOKEN_VBUILD 0 #define SOFTOKEN_BETA PR_FALSE diff --git a/security/nss/lib/util/nssutil.h b/security/nss/lib/util/nssutil.h index bbfec5000..4a4dd7a53 100644 --- a/security/nss/lib/util/nssutil.h +++ b/security/nss/lib/util/nssutil.h @@ -22,7 +22,7 @@ #define NSSUTIL_VERSION "3.48" #define NSSUTIL_VMAJOR 3 #define NSSUTIL_VMINOR 48 -#define NSSUTIL_VPATCH 0 +#define NSSUTIL_VPATCH 1 #define NSSUTIL_VBUILD 0 #define NSSUTIL_BETA PR_FALSE diff --git a/storage/moz.build b/storage/moz.build index 216a1cf74..5ccfabd71 100644 --- a/storage/moz.build +++ b/storage/moz.build @@ -88,17 +88,10 @@ FINAL_LIBRARY = 'xul' # Don't use the jemalloc allocator on Android, because we can't guarantee # that Gecko will configure sqlite before it is first used (bug 730495). # -# Don't use the jemalloc allocator when using system sqlite. Linked in libraries -# (such as NSS) might trigger an initialization of sqlite and allocation -# of memory using the default allocator, prior to the storage service -# registering its allocator, causing memory management failures (bug 938730). -# However, this is not an issue if both the jemalloc allocator and the default -# allocator are the same thing. -# # Note: On Windows our sqlite build assumes we use jemalloc. If you disable # MOZ_STORAGE_MEMORY on Windows, you will also need to change the "ifdef # MOZ_MEMORY" options in db/sqlite3/src/Makefile.in. -if CONFIG['MOZ_MEMORY'] and not CONFIG['MOZ_SYSTEM_SQLITE']: +if CONFIG['MOZ_MEMORY']: if CONFIG['OS_TARGET'] != 'Android': DEFINES['MOZ_STORAGE_MEMORY'] = True diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index dd5439bd1..6763952af 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -1678,11 +1678,6 @@ toolbar#nav-bar { prefs.update(self.extraPrefs(options.extraPrefs)) - # Bug 1262954: For windows XP + e10s disable acceleration - if platform.system() in ("Windows", "Microsoft") and \ - '5.1' in platform.version() and options.e10s: - prefs['layers.acceleration.disabled'] = True - # interpolate preferences interpolation = { "server": "%s:%s" % diff --git a/testing/mozharness/configs/unittests/linux_unittest.py b/testing/mozharness/configs/unittests/linux_unittest.py index 77e4ed501..b591fa559 100644 --- a/testing/mozharness/configs/unittests/linux_unittest.py +++ b/testing/mozharness/configs/unittests/linux_unittest.py @@ -222,7 +222,8 @@ config = { }, "reftest-no-accel": { "options": ["--suite=reftest", - "--setpref=layers.acceleration.force-enabled=disabled"], + "--setpref=layers.acceleration.enabled=disabled", + "--setpref=layers.acceleration.force=disabled"], "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]}, }, "all_xpcshell_suites": { diff --git a/testing/mozharness/configs/unittests/win_taskcluster_unittest.py b/testing/mozharness/configs/unittests/win_taskcluster_unittest.py index 161e8e65e..2eeae22e2 100644 --- a/testing/mozharness/configs/unittests/win_taskcluster_unittest.py +++ b/testing/mozharness/configs/unittests/win_taskcluster_unittest.py @@ -204,7 +204,7 @@ config = { "reftest-no-accel": { "options": ["--suite=reftest", "--setpref=gfx.direct2d.disabled=true", - "--setpref=layers.acceleration.disabled=true"], + "--setpref=layers.acceleration.enabled=false"], "tests": ["tests/reftest/tests/layout/reftests/reftest.list"] }, }, diff --git a/testing/mozharness/configs/unittests/win_unittest.py b/testing/mozharness/configs/unittests/win_unittest.py index caa2978c6..1f682cc8f 100644 --- a/testing/mozharness/configs/unittests/win_unittest.py +++ b/testing/mozharness/configs/unittests/win_unittest.py @@ -204,7 +204,7 @@ config = { "reftest-no-accel": { "options": ["--suite=reftest", "--setpref=gfx.direct2d.disabled=true", - "--setpref=layers.acceleration.disabled=true"], + "--setpref=layers.acceleration.enabled=false"], "tests": ["tests/reftest/tests/layout/reftests/reftest.list"] }, }, diff --git a/testing/talos/talos/test.py b/testing/talos/talos/test.py index dc1306b8e..6df5835bb 100644 --- a/testing/talos/talos/test.py +++ b/testing/talos/talos/test.py @@ -556,8 +556,8 @@ class basic_compositor_video(PageloaderTest): sps_profile_interval = 1 sps_profile_entries = 2000000 preferences = {'full-screen-api.allow-trusted-requests-only': False, - 'layers.acceleration.force-enabled': False, - 'layers.acceleration.disabled': True, + 'layers.acceleration.force': False, + 'layers.acceleration.enabled': False, 'layout.frame_rate': 0, 'docshell.event_starvation_delay_hint': 1, 'full-screen-api.warning.timeout': 500, diff --git a/testing/talos/talos/ttest.py b/testing/talos/talos/ttest.py index 4a0fcd135..3c57f020d 100644 --- a/testing/talos/talos/ttest.py +++ b/testing/talos/talos/ttest.py @@ -64,7 +64,7 @@ class TTest(object): # Bug 1262954: winxp + e10s, disable hwaccel if self.platform_type == "win_" and browser_config['e10s']: prefs = browser_config['preferences'] - prefs['layers.acceleration.disabled'] = True + prefs['layers.acceleration.enabled'] = False with FFSetup(browser_config, test_config) as setup: return self._runTest(browser_config, test_config, setup) diff --git a/testing/testsuite-targets.mk b/testing/testsuite-targets.mk index ebe0d06cf..f10bd079c 100644 --- a/testing/testsuite-targets.mk +++ b/testing/testsuite-targets.mk @@ -60,11 +60,11 @@ RUN_REFTEST_B2G = rm -f ./$@.log && $(PYTHON) _tests/reftest/runreftestb2g.py \ ifeq ($(OS_ARCH),WINNT) #{ # GPU-rendered shadow layers are unsupported here -OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true --setpref=browser.tabs.remote.autostart=true --setpref=layers.acceleration.disabled=true +OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true --setpref=browser.tabs.remote.autostart=true --setpref=layers.acceleration.enabled=false GPU_RENDERING = else OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true --setpref=browser.tabs.remote.autostart=true -GPU_RENDERING = --setpref=layers.acceleration.force-enabled=true +GPU_RENDERING = --setpref=layers.acceleration.enabled=true --setpref=layers.acceleration.force=true endif #} reftest: TEST_PATH?=layout/reftests/reftest.list diff --git a/testing/web-platform/harness/wptrunner/browsers/firefox.py b/testing/web-platform/harness/wptrunner/browsers/firefox.py index 183820c5c..c03dd0eda 100644 --- a/testing/web-platform/harness/wptrunner/browsers/firefox.py +++ b/testing/web-platform/harness/wptrunner/browsers/firefox.py @@ -142,11 +142,6 @@ class FirefoxBrowser(Browser): if self.e10s: self.profile.set_preferences({"browser.tabs.remote.autostart": True}) - # Bug 1262954: winxp + e10s, disable hwaccel - if (self.e10s and platform.system() in ("Windows", "Microsoft") and - '5.1' in platform.version()): - self.profile.set_preferences({"layers.acceleration.disabled": True}) - if self.ca_certificate_path is not None: self.setup_ssl() diff --git a/testing/web-platform/meta/custom-elements/CustomElementRegistry.html.ini b/testing/web-platform/meta/custom-elements/CustomElementRegistry.html.ini index 9e2bf7385..3f9f66d17 100644 --- a/testing/web-platform/meta/custom-elements/CustomElementRegistry.html.ini +++ b/testing/web-platform/meta/custom-elements/CustomElementRegistry.html.ini @@ -1,29 +1,11 @@ [CustomElementRegistry.html] type: testharness - [customElements.define must throw a NotSupportedError when there is already a custom element with the same class] - expected: FAIL - [customElements.define must get callbacks of the constructor prototype] expected: FAIL [customElements.define must get "observedAttributes" property on the constructor prototype when "attributeChangedCallback" is present] expected: FAIL - [customElements.define must rethrow an exception thrown while getting observedAttributes on the constructor prototype] - expected: FAIL - - [customElements.define must rethrow an exception thrown while converting the value of observedAttributes to sequence<DOMString>] - expected: FAIL - - [customElements.define must rethrow an exception thrown while iterating over observedAttributes to sequence<DOMString>] - expected: FAIL - - [customElements.define must rethrow an exception thrown while retrieving Symbol.iterator on observedAttributes] - expected: FAIL - - [customElements.define must define an instantiatable custom element] - expected: FAIL - [customElements.define must upgrade elements in the shadow-including tree order] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/adopted-callback.html.ini b/testing/web-platform/meta/custom-elements/adopted-callback.html.ini index fdd258bd6..e35f704ac 100644 --- a/testing/web-platform/meta/custom-elements/adopted-callback.html.ini +++ b/testing/web-platform/meta/custom-elements/adopted-callback.html.ini @@ -1,20 +1,5 @@ [adopted-callback.html] type: testharness - [Inserting a custom element into the owner document must not enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting a custom element into the document of the template elements must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into the document of the template elements must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into the document of the template elements must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into the document of the template elements must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in the document of the template elements must enqueue and invoke adoptedCallback] expected: FAIL @@ -27,18 +12,6 @@ [Inserting a custom element into a detached shadow tree that belongs to the document of the template elements must enqueue and invoke adoptedCallback] expected: FAIL - [Inserting a custom element into a new document must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into a new document must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into a new document must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into a new document must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in a new document must enqueue and invoke adoptedCallback] expected: FAIL @@ -51,18 +24,6 @@ [Inserting a custom element into a detached shadow tree that belongs to a new document must enqueue and invoke adoptedCallback] expected: FAIL - [Inserting a custom element into a cloned document must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into a cloned document must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into a cloned document must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into a cloned document must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in a cloned document must enqueue and invoke adoptedCallback] expected: FAIL @@ -75,18 +36,6 @@ [Inserting a custom element into a detached shadow tree that belongs to a cloned document must enqueue and invoke adoptedCallback] expected: FAIL - [Inserting a custom element into a document created by createHTMLDocument must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into a document created by createHTMLDocument must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into a document created by createHTMLDocument must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into a document created by createHTMLDocument must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in a document created by createHTMLDocument must enqueue and invoke adoptedCallback] expected: FAIL @@ -99,18 +48,6 @@ [Inserting a custom element into a detached shadow tree that belongs to a document created by createHTMLDocument must enqueue and invoke adoptedCallback] expected: FAIL - [Inserting a custom element into an HTML document created by createDocument must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into an HTML document created by createDocument must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into an HTML document created by createDocument must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into an HTML document created by createDocument must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in an HTML document created by createDocument must enqueue and invoke adoptedCallback] expected: FAIL @@ -123,18 +60,6 @@ [Inserting a custom element into a detached shadow tree that belongs to an HTML document created by createDocument must enqueue and invoke adoptedCallback] expected: FAIL - [Inserting a custom element into the document of an iframe must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into the document of an iframe must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into the document of an iframe must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into the document of an iframe must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in the document of an iframe must enqueue and invoke adoptedCallback] expected: FAIL @@ -147,18 +72,6 @@ [Inserting a custom element into a detached shadow tree that belongs to the document of an iframe must enqueue and invoke adoptedCallback] expected: FAIL - [Inserting a custom element into an HTML document fetched by XHR must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving a custom element from the owner document into an HTML document fetched by XHR must enqueue and invoke adoptedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into an HTML document fetched by XHR must enqueue and invoke adoptedCallback] - expected: FAIL - - [Moving an ancestor of custom element from the owner document into an HTML document fetched by XHR must enqueue and invoke adoptedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in an HTML document fetched by XHR must enqueue and invoke adoptedCallback] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/attribute-changed-callback.html.ini b/testing/web-platform/meta/custom-elements/attribute-changed-callback.html.ini index 10eea70b2..1b1bea6c9 100644 --- a/testing/web-platform/meta/custom-elements/attribute-changed-callback.html.ini +++ b/testing/web-platform/meta/custom-elements/attribute-changed-callback.html.ini @@ -12,21 +12,5 @@ [setAttributeNode and removeAttributeNS must enqueue and invoke attributeChangedCallback for an SVG attribute] expected: FAIL - [Mutating attributeChangedCallback after calling customElements.define must not affect the callback being invoked] - expected: FAIL - - [attributedChangedCallback must not be invoked when the observed attributes does not contain the attribute] - expected: FAIL - - [Mutating observedAttributes after calling customElements.define must not affect the set of attributes for which attributedChangedCallback is invoked] - expected: FAIL - - [attributedChangedCallback must be enqueued for attributes specified in a non-Array iterable observedAttributes] - expected: FAIL - [attributedChangedCallback must be enqueued for style attribute change by mutating inline style declaration] expected: FAIL - - [attributedChangedCallback must not be enqueued when mutating inline style declaration if the style attribute is not observed] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/connected-callbacks.html.ini b/testing/web-platform/meta/custom-elements/connected-callbacks.html.ini index d57ab6bdb..c8a99d695 100644 --- a/testing/web-platform/meta/custom-elements/connected-callbacks.html.ini +++ b/testing/web-platform/meta/custom-elements/connected-callbacks.html.ini @@ -1,11 +1,5 @@ [connected-callbacks.html] type: testharness - [Inserting a custom element into the document must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into the document must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in the document must enqueue and invoke connectedCallback] expected: FAIL @@ -15,12 +9,6 @@ [Inserting a custom element into a detached shadow tree that belongs to the document must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into the document of the template elements must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into the document of the template elements must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in the document of the template elements must enqueue and invoke connectedCallback] expected: FAIL @@ -30,12 +18,6 @@ [Inserting a custom element into a detached shadow tree that belongs to the document of the template elements must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into a new document must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into a new document must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in a new document must enqueue and invoke connectedCallback] expected: FAIL @@ -45,12 +27,6 @@ [Inserting a custom element into a detached shadow tree that belongs to a new document must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into a cloned document must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into a cloned document must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in a cloned document must enqueue and invoke connectedCallback] expected: FAIL @@ -60,12 +36,6 @@ [Inserting a custom element into a detached shadow tree that belongs to a cloned document must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into a document created by createHTMLDocument must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into a document created by createHTMLDocument must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in a document created by createHTMLDocument must enqueue and invoke connectedCallback] expected: FAIL @@ -75,12 +45,6 @@ [Inserting a custom element into a detached shadow tree that belongs to a document created by createHTMLDocument must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into an HTML document created by createDocument must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into an HTML document created by createDocument must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in an HTML document created by createDocument must enqueue and invoke connectedCallback] expected: FAIL @@ -90,12 +54,6 @@ [Inserting a custom element into a detached shadow tree that belongs to an HTML document created by createDocument must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into the document of an iframe must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into the document of an iframe must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in the document of an iframe must enqueue and invoke connectedCallback] expected: FAIL @@ -105,12 +63,6 @@ [Inserting a custom element into a detached shadow tree that belongs to the document of an iframe must not enqueue and invoke connectedCallback] expected: FAIL - [Inserting a custom element into an HTML document fetched by XHR must enqueue and invoke connectedCallback] - expected: FAIL - - [Inserting an ancestor of custom element into an HTML document fetched by XHR must enqueue and invoke connectedCallback] - expected: FAIL - [Inserting a custom element into a shadow tree in an HTML document fetched by XHR must enqueue and invoke connectedCallback] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini b/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini deleted file mode 100644 index 122abccd3..000000000 --- a/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini +++ /dev/null @@ -1,26 +0,0 @@ -[define.html] - type: testharness - [If constructor is HTMLElement, should throw a TypeError] - expected: FAIL - - [If constructor is HTMLButtonElement, should throw a TypeError] - expected: FAIL - - [If constructor is HTMLImageElement, should throw a TypeError] - expected: FAIL - - [If constructor is HTMLMediaElement, should throw a TypeError] - expected: FAIL - - [If constructor is Image, should throw a TypeError] - expected: FAIL - - [If constructor is Audio, should throw a TypeError] - expected: FAIL - - [If constructor is Option, should throw a TypeError] - expected: FAIL - - [If the constructor is already defined, should throw a NotSupportedError] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/disconnected-callbacks.html.ini b/testing/web-platform/meta/custom-elements/disconnected-callbacks.html.ini index 631dc8b5d..03c6f9937 100644 --- a/testing/web-platform/meta/custom-elements/disconnected-callbacks.html.ini +++ b/testing/web-platform/meta/custom-elements/disconnected-callbacks.html.ini @@ -1,11 +1,5 @@ [disconnected-callbacks.html] type: testharness - [Removing a custom element from the document must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from the document must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in the document must enqueue and invoke disconnectedCallback] expected: FAIL @@ -15,12 +9,6 @@ [Removing a custom element from a detached shadow tree that belongs to the document must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from the document of the template elements must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from the document of the template elements must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in the document of the template elements must enqueue and invoke disconnectedCallback] expected: FAIL @@ -30,12 +18,6 @@ [Removing a custom element from a detached shadow tree that belongs to the document of the template elements must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from a new document must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from a new document must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in a new document must enqueue and invoke disconnectedCallback] expected: FAIL @@ -45,12 +27,6 @@ [Removing a custom element from a detached shadow tree that belongs to a new document must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from a cloned document must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from a cloned document must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in a cloned document must enqueue and invoke disconnectedCallback] expected: FAIL @@ -60,12 +36,6 @@ [Removing a custom element from a detached shadow tree that belongs to a cloned document must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from a document created by createHTMLDocument must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from a document created by createHTMLDocument must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in a document created by createHTMLDocument must enqueue and invoke disconnectedCallback] expected: FAIL @@ -75,12 +45,6 @@ [Removing a custom element from a detached shadow tree that belongs to a document created by createHTMLDocument must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from an HTML document created by createDocument must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from an HTML document created by createDocument must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in an HTML document created by createDocument must enqueue and invoke disconnectedCallback] expected: FAIL @@ -90,12 +54,6 @@ [Removing a custom element from a detached shadow tree that belongs to an HTML document created by createDocument must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from the document of an iframe must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from the document of an iframe must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in the document of an iframe must enqueue and invoke disconnectedCallback] expected: FAIL @@ -105,12 +63,6 @@ [Removing a custom element from a detached shadow tree that belongs to the document of an iframe must not enqueue and invoke disconnectedCallback] expected: FAIL - [Removing a custom element from an HTML document fetched by XHR must enqueue and invoke disconnectedCallback] - expected: FAIL - - [Removing an ancestor of custom element from an HTML document fetched by XHR must enqueue and invoke disconnectedCallback] - expected: FAIL - [Removing a custom element from a shadow tree in an HTML document fetched by XHR must enqueue and invoke disconnectedCallback] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/reaction-timing.html.ini b/testing/web-platform/meta/custom-elements/reaction-timing.html.ini deleted file mode 100644 index 0697f7014..000000000 --- a/testing/web-platform/meta/custom-elements/reaction-timing.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[reaction-timing.html] - type: testharness - [Calling Node.prototype.cloneNode(false) must push a new element queue to the processing stack] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/reactions/ChildNode.html.ini b/testing/web-platform/meta/custom-elements/reactions/ChildNode.html.ini deleted file mode 100644 index 4265435e3..000000000 --- a/testing/web-platform/meta/custom-elements/reactions/ChildNode.html.ini +++ /dev/null @@ -1,23 +0,0 @@ -[ChildNode.html] - type: testharness - [before on ChildNode must enqueue a connected reaction] - expected: FAIL - - [before on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [after on ChildNode must enqueue a connected reaction] - expected: FAIL - - [after on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [replaceWith on ChildNode must enqueue a connected reaction] - expected: FAIL - - [replaceWith on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [replaceWith on ChildNode must enqueue a disconnected reaction] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/reactions/Document.html.ini b/testing/web-platform/meta/custom-elements/reactions/Document.html.ini index 71f9e29a4..0c42955de 100644 --- a/testing/web-platform/meta/custom-elements/reactions/Document.html.ini +++ b/testing/web-platform/meta/custom-elements/reactions/Document.html.ini @@ -2,7 +2,3 @@ type: testharness [importNode on Document must construct a new custom element when importing a custom element] expected: FAIL - - [adoptNode on Document must enqueue an adopted reaction when importing a custom element] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/reactions/Node.html.ini b/testing/web-platform/meta/custom-elements/reactions/Node.html.ini deleted file mode 100644 index 87acc9aa6..000000000 --- a/testing/web-platform/meta/custom-elements/reactions/Node.html.ini +++ /dev/null @@ -1,44 +0,0 @@ -[Node.html] - type: testharness - [nodeValue on Node must enqueue an attributeChanged reaction when replacing an existing attribute] - expected: FAIL - - [nodeValue on Node must not enqueue an attributeChanged reaction when replacing an existing unobserved attribute] - expected: FAIL - - [textContent on Node must enqueue an attributeChanged reaction when replacing an existing attribute] - expected: FAIL - - [textContent on Node must not enqueue an attributeChanged reaction when replacing an existing unobserved attribute] - expected: FAIL - - [cloneNode on Node must enqueue an attributeChanged reaction when cloning an element with an observed attribute] - expected: FAIL - - [cloneNode on Node must not enqueue an attributeChanged reaction when cloning an element with an unobserved attribute] - expected: FAIL - - [cloneNode on Node must enqueue an attributeChanged reaction when cloning an element only for observed attributes] - expected: FAIL - - [insertBefore on ChildNode must enqueue a connected reaction] - expected: FAIL - - [insertBefore on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [appendChild on ChildNode must enqueue a connected reaction] - expected: FAIL - - [appendChild on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [replaceChild on ChildNode must enqueue a connected reaction] - expected: FAIL - - [replaceChild on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [removeChild on ChildNode must enqueue a disconnected reaction] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/reactions/ParentNode.html.ini b/testing/web-platform/meta/custom-elements/reactions/ParentNode.html.ini deleted file mode 100644 index ccdf5de7c..000000000 --- a/testing/web-platform/meta/custom-elements/reactions/ParentNode.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[ParentNode.html] - type: testharness - [prepend on ParentNode must enqueue a connected reaction] - expected: FAIL - - [prepend on ParentNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - - [append on ParentNode must enqueue a connected reaction] - expected: FAIL - - [append on ParentNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/reactions/Range.html.ini b/testing/web-platform/meta/custom-elements/reactions/Range.html.ini deleted file mode 100644 index 4ca3fcde7..000000000 --- a/testing/web-platform/meta/custom-elements/reactions/Range.html.ini +++ /dev/null @@ -1,23 +0,0 @@ -[Range.html] - type: testharness - [deleteContents on Range must enqueue a disconnected reaction] - expected: FAIL - - [extractContents on Range must enqueue a disconnected reaction] - expected: FAIL - - [cloneContents on Range must enqueue an attributeChanged reaction when cloning an element with an observed attribute] - expected: FAIL - - [cloneContents on Range must not enqueue an attributeChanged reaction when cloning an element with an unobserved attribute] - expected: FAIL - - [cloneContents on Range must enqueue an attributeChanged reaction when cloning an element only for observed attributes] - expected: FAIL - - [insertNode on Range must enqueue a connected reaction] - expected: FAIL - - [insertNode on Range must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document] - expected: FAIL - diff --git a/testing/web-platform/meta/html/dom/interfaces.html.ini b/testing/web-platform/meta/html/dom/interfaces.html.ini index 16a03337e..db6a464d0 100644 --- a/testing/web-platform/meta/html/dom/interfaces.html.ini +++ b/testing/web-platform/meta/html/dom/interfaces.html.ini @@ -1,6 +1,6 @@ [interfaces.html] type: testharness - prefs: [dom.forms.inputmode:true, dom.details_element.enabled:true, dom.dialog_element.enabled:true] + prefs: [dom.forms.inputmode:true, dom.dialog_element.enabled:true] [Document interface: attribute domain] expected: FAIL diff --git a/testing/web-platform/meta/html/dom/reflection-misc.html.ini b/testing/web-platform/meta/html/dom/reflection-misc.html.ini index b0909cc6d..bc65d4191 100644 --- a/testing/web-platform/meta/html/dom/reflection-misc.html.ini +++ b/testing/web-platform/meta/html/dom/reflection-misc.html.ini @@ -1,6 +1,6 @@ [reflection-misc.html] type: testharness - prefs: [dom.details_element.enabled: true, dom.dialog_element.enabled: true] + prefs: [dom.dialog_element.enabled: true] [html.tabIndex: setAttribute() to object "3" followed by getAttribute()] expected: FAIL diff --git a/testing/web-platform/meta/html/semantics/interactive-elements/the-details-element/details.html.ini b/testing/web-platform/meta/html/semantics/interactive-elements/the-details-element/details.html.ini deleted file mode 100644 index 6ffca742c..000000000 --- a/testing/web-platform/meta/html/semantics/interactive-elements/the-details-element/details.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[details.html] - type: testharness - prefs: [dom.details_element.enabled:true] diff --git a/testing/web-platform/meta/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/testing/web-platform/meta/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini deleted file mode 100644 index 335ffd5b3..000000000 --- a/testing/web-platform/meta/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[toggleEvent.html] - type: testharness - prefs: [dom.details_element.enabled:true] diff --git a/testing/web-platform/meta/html/semantics/interfaces.html.ini b/testing/web-platform/meta/html/semantics/interfaces.html.ini index 23f55fbe4..f191cad52 100644 --- a/testing/web-platform/meta/html/semantics/interfaces.html.ini +++ b/testing/web-platform/meta/html/semantics/interfaces.html.ini @@ -1,6 +1,6 @@ [interfaces.html] type: testharness - prefs: [dom.details_element.enabled: true, dom.dialog_element.enabled: true] + prefs: [dom.dialog_element.enabled: true] [Interfaces for image] expected: FAIL diff --git a/testing/web-platform/meta/svg/interfaces.html.ini b/testing/web-platform/meta/svg/interfaces.html.ini index 292ca6b74..410f20f69 100644 --- a/testing/web-platform/meta/svg/interfaces.html.ini +++ b/testing/web-platform/meta/svg/interfaces.html.ini @@ -1,6 +1,5 @@ [interfaces.html] type: testharness - prefs: [dom.details_element.enabled:true] [SVGGeometryElement interface: existence and properties of interface object] expected: FAIL diff --git a/testing/web-platform/tests/custom-elements/attribute-changed-callback.html b/testing/web-platform/tests/custom-elements/attribute-changed-callback.html index bd467912b..5090bfbfb 100644 --- a/testing/web-platform/tests/custom-elements/attribute-changed-callback.html +++ b/testing/web-platform/tests/custom-elements/attribute-changed-callback.html @@ -11,6 +11,7 @@ </head> <body> <div id="log"></div> +<parser-created-element title></parser-created-element> <script> var customElement = define_new_custom_element(['title', 'id', 'r']); @@ -218,6 +219,36 @@ test(function () { assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: 'hello', namespace: null}); }, 'attributedChangedCallback must not be enqueued when mutating inline style declaration if the style attribute is not observed'); +test(function () { + var calls = []; + class CustomElement extends HTMLElement { } + CustomElement.prototype.attributeChangedCallback = function (...args) { + calls.push(create_attribute_changed_callback_log(this, ...args)); + } + CustomElement.observedAttributes = ['title']; + customElements.define('parser-created-element', CustomElement); + assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: '', namespace: null}); +}, 'Upgrading a parser created element must enqueue and invoke attributeChangedCallback for an HTML attribute'); + +test(function () { + var calls = []; + class CustomElement extends HTMLElement { } + CustomElement.prototype.attributeChangedCallback = function (...args) { + calls.push(create_attribute_changed_callback_log(this, ...args)); + } + CustomElement.observedAttributes = ['title']; + customElements.define('cloned-element-with-attribute', CustomElement); + + var instance = document.createElement('cloned-element-with-attribute'); + assert_equals(calls.length, 0); + instance.title = ''; + assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: '', namespace: null}); + + calls = []; + var clone = instance.cloneNode(false); + assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: '', namespace: null}); +}, 'Upgrading a cloned element must enqueue and invoke attributeChangedCallback for an HTML attribute'); + </script> </body> </html> diff --git a/testing/web-platform/tests/custom-elements/reactions/with-exceptions.html b/testing/web-platform/tests/custom-elements/reactions/with-exceptions.html new file mode 100644 index 000000000..82e0f59c9 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/with-exceptions.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Custom Elements: CEReactions interaction with exceptions</title> +<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> +<meta name="help" content="https://html.spec.whatwg.org/multipage/#cereactions"> +<meta name="help" content="https://github.com/whatwg/html/pull/3235"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> + +<div id="log"></div> + +<script> +"use strict"; +// Basically from https://github.com/whatwg/html/issues/3217#issuecomment-343633273 +test_with_window((contentWindow, contentDocument) => { + let reactionRan = false; + contentWindow.customElements.define("custom-element", class extends contentWindow.HTMLElement { + disconnectedCallback() { + reactionRan = true; + } + }); + const text = contentDocument.createTextNode(""); + contentDocument.documentElement.appendChild(text); + const element = contentDocument.createElement("custom-element"); + contentDocument.documentElement.appendChild(element); + assert_throws("HierarchyRequestError", () => text.before("", contentDocument.documentElement)); + assert_true(reactionRan); +}, "Reaction must run even after the exception is thrown"); +</script> diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html index 07f1edf93..7d8548885 100644 --- a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html @@ -166,4 +166,54 @@ test(function() { doc.body = new_frameset; assert_equals(doc.body, new_frameset, "test6-3, append frameset to a new document"); }, "Setting document.body to a new frameset element."); + +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var f = + html.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, f); + + var b = doc.createElement("body"); + doc.body = b; + + assert_equals(f.parentNode, null, + "Frameset should have been removed from the tree"); + assert_equals(doc.body, b, "Body should be the new doc.body"); +}, "Setting document.body to a body will replace an existing frameset if there is one."); + +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var b = + html.appendChild(doc.createElement("body")); + assert_equals(doc.body, b); + + var f = doc.createElement("frameset"); + doc.body = f; + + assert_equals(b.parentNode, null, + "Body should have been removed from the tree"); + assert_equals(doc.body, f, "Frameset should be the new doc.body"); +}, "Setting document.body to a frameset will replace an existing body if there is one."); + +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var b = + html.appendChild(doc.createElement("body")); + var f1 = html.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, b); + + var f2 = doc.createElement("frameset"); + doc.body = f2; + + assert_equals(b.parentNode, null, + "Body should have been removed from the tree"); + assert_equals(f1.parentNode, html, + "Frameset following body should still be in the tree."); + assert_equals(doc.body, f2, "New frameset should be the new doc.body"); + assert_equals(f2.nextSibling, f1, "New frameset should have replaced the body"); +}, "Setting document.body to a frameset will replace the first existing body/frameset."); + </script> diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build index ebba07b4a..85a7351ba 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -201,9 +201,6 @@ if CONFIG['MOZ_SYSTEM_PNG']: if CONFIG['MOZ_SYSTEM_HUNSPELL']: OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] -if CONFIG['MOZ_SYSTEM_LIBEVENT']: - OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS'] - if CONFIG['MOZ_SYSTEM_LIBVPX']: OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS'] diff --git a/toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js b/toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js index ada08f0ae..9a9610dda 100644 --- a/toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js +++ b/toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js @@ -839,7 +839,7 @@ function setupTestCommon() { if (!grePrefsFile.exists()) { grePrefsFile.create(Ci.nsIFile.DIRECTORY_TYPE, PERMS_DIRECTORY); } - grePrefsFile.append("greprefs.js"); + grePrefsFile.append("goanna.js"); if (!grePrefsFile.exists()) { grePrefsFile.create(Ci.nsILocalFile.NORMAL_FILE_TYPE, PERMS_FILE); } diff --git a/xpcom/base/CycleCollectedJSContext.cpp b/xpcom/base/CycleCollectedJSContext.cpp index e16c15455..033ca562a 100644 --- a/xpcom/base/CycleCollectedJSContext.cpp +++ b/xpcom/base/CycleCollectedJSContext.cpp @@ -79,6 +79,7 @@ #include "nsCycleCollectionParticipant.h" #include "nsCycleCollector.h" #include "nsDOMJSUtils.h" +#include "nsDOMMutationObserver.h" #include "nsJSUtils.h" #include "nsWrapperCache.h" @@ -438,6 +439,8 @@ CycleCollectedJSContext::CycleCollectedJSContext() , mJSHolders(256) , mDoingStableStates(false) , mDisableMicroTaskCheckpoint(false) + , mMicroTaskLevel(0) + , mMicroTaskRecursionDepth(0) , mOutOfMemoryState(OOMState::OK) , mLargeAllocationFailureState(OOMState::OK) { @@ -1378,8 +1381,8 @@ CycleCollectedJSContext::AfterProcessTask(uint32_t aRecursionDepth) // Step 4.1: Execute microtasks. if (!mDisableMicroTaskCheckpoint) { + PerformMicroTaskCheckPoint(); if (NS_IsMainThread()) { - nsContentUtils::PerformMainThreadMicroTaskCheckpoint(); Promise::PerformMicroTaskCheckpoint(); } else { Promise::PerformWorkerMicroTaskCheckpoint(); @@ -1659,6 +1662,72 @@ CycleCollectedJSContext::DispatchToMicroTask(already_AddRefed<nsIRunnable> aRunn mPromiseMicroTaskQueue.push(runnable.forget()); } +class AsyncMutationHandler final : public mozilla::Runnable +{ +public: + NS_IMETHOD Run() override + { + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->PerformMicroTaskCheckPoint(); + } + return NS_OK; + } +}; + +void +CycleCollectedJSContext::PerformMicroTaskCheckPoint() +{ + if (mPendingMicroTaskRunnables.empty()) { + // Nothing to do, return early. + return; + } + + uint32_t currentDepth = RecursionDepth(); + if (mMicroTaskRecursionDepth >= currentDepth) { + // We are already executing microtasks for the current recursion depth. + return; + } + + if (NS_IsMainThread() && !nsContentUtils::IsSafeToRunScript()) { + // Special case for main thread where DOM mutations may happen when + // it is not safe to run scripts. + nsContentUtils::AddScriptRunner(new AsyncMutationHandler()); + return; + } + + mozilla::AutoRestore<uint32_t> restore(mMicroTaskRecursionDepth); + MOZ_ASSERT(currentDepth > 0); + mMicroTaskRecursionDepth = currentDepth; + + AutoSlowOperation aso; + + std::queue<RefPtr<MicroTaskRunnable>> suppressed; + while (!mPendingMicroTaskRunnables.empty()) { + RefPtr<MicroTaskRunnable> runnable = + mPendingMicroTaskRunnables.front().forget(); + mPendingMicroTaskRunnables.pop(); + if (runnable->Suppressed()) { + suppressed.push(runnable); + } else { + runnable->Run(aso); + } + } + + // Put back the suppressed microtasks so that they will be run later. + // Note, it is possible that we end up keeping these suppressed tasks around + // for some time, but no longer than spinning the event loop nestedly + // (sync XHR, alert, etc.) + mPendingMicroTaskRunnables.swap(suppressed); +} + +void +CycleCollectedJSContext::DispatchMicroTaskRunnable( + already_AddRefed<MicroTaskRunnable> aRunnable) +{ + mPendingMicroTaskRunnables.push(aRunnable); +} + void CycleCollectedJSContext::EnvironmentPreparer::invoke(JS::HandleObject scope, js::ScriptEnvironmentPreparer::Closure& closure) diff --git a/xpcom/base/CycleCollectedJSContext.h b/xpcom/base/CycleCollectedJSContext.h index ac4cf4361..4cd1479ed 100644 --- a/xpcom/base/CycleCollectedJSContext.h +++ b/xpcom/base/CycleCollectedJSContext.h @@ -33,6 +33,7 @@ struct Class; } // namespace js namespace mozilla { +class AutoSlowOperation; class JSGCThingParticipant: public nsCycleCollectionParticipant { @@ -134,6 +135,17 @@ struct CycleCollectorResults uint32_t mNumSlices; }; +class MicroTaskRunnable +{ +public: + MicroTaskRunnable() {} + NS_INLINE_DECL_REFCOUNTING(MicroTaskRunnable) + virtual void Run(AutoSlowOperation& aAso) = 0; + virtual bool Suppressed() { return false; } +protected: + virtual ~MicroTaskRunnable() {} +}; + class CycleCollectedJSContext { friend class JSGCThingParticipant; @@ -402,6 +414,39 @@ public: // Queue an async microtask to the current main or worker thread. virtual void DispatchToMicroTask(already_AddRefed<nsIRunnable> aRunnable); + // Call EnterMicroTask when you're entering JS execution. + // Usually the best way to do this is to use nsAutoMicroTask. + void EnterMicroTask() + { + ++mMicroTaskLevel; + } + + void LeaveMicroTask() + { + if (--mMicroTaskLevel == 0) { + PerformMicroTaskCheckPoint(); + } + } + + bool IsInMicroTask() + { + return mMicroTaskLevel != 0; + } + + uint32_t MicroTaskLevel() + { + return mMicroTaskLevel; + } + + void SetMicroTaskLevel(uint32_t aLevel) + { + mMicroTaskLevel = aLevel; + } + + void PerformMicroTaskCheckPoint(); + + void DispatchMicroTaskRunnable(already_AddRefed<MicroTaskRunnable> aRunnable); + // Storage for watching rejected promises waiting for some client to // consume their rejection. @@ -452,6 +497,11 @@ private: bool mDisableMicroTaskCheckpoint; + uint32_t mMicroTaskLevel; + std::queue<RefPtr<MicroTaskRunnable>> mPendingMicroTaskRunnables; + + uint32_t mMicroTaskRecursionDepth; + OOMState mOutOfMemoryState; OOMState mLargeAllocationFailureState; @@ -470,6 +520,25 @@ private: EnvironmentPreparer mEnvironmentPreparer; }; +class MOZ_STACK_CLASS nsAutoMicroTask +{ +public: + nsAutoMicroTask() + { + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->EnterMicroTask(); + } + } + ~nsAutoMicroTask() + { + CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get(); + if (ccjs) { + ccjs->LeaveMicroTask(); + } + } +}; + void TraceScriptHolder(nsISupports* aHolder, JSTracer* aTracer); // Returns true if the JS::TraceKind is one the cycle collector cares about. diff --git a/xpcom/base/moz.build b/xpcom/base/moz.build index d6a336b40..0fdf47d7d 100644 --- a/xpcom/base/moz.build +++ b/xpcom/base/moz.build @@ -152,6 +152,7 @@ FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ '../build', + '/dom/base', '/xpcom/ds', ] |