mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-26 01:08:39 +09:00
Fix an issue with the html5 tokenizer and tree builder.
This commit is contained in:
parent
cf71a30b16
commit
03208b757b
6 changed files with 103 additions and 39 deletions
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2007 Henri Sivonen
|
||||
* Copyright (c) 2007-2015 Mozilla Foundation
|
||||
* Copyright (c) 2019 Moonchild Productions
|
||||
* Portions of comments Copyright 2004-2008 Apple Computer, Inc., Mozilla
|
||||
* Foundation, and Opera Software ASA.
|
||||
*
|
||||
|
|
@ -105,7 +106,7 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
|||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elementName->camelCaseName, elt);
|
||||
currentPtr++;
|
||||
stack[currentPtr] = node;
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_DATA);
|
||||
mode = NS_HTML5TREE_BUILDER_FRAMESET_OK;
|
||||
} else if (contextNamespace == kNameSpaceID_MathML) {
|
||||
nsHtml5ElementName* elementName = nsHtml5ElementName::ELT_MATH;
|
||||
|
|
@ -117,7 +118,7 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
|||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, elementName->name, false);
|
||||
currentPtr++;
|
||||
stack[currentPtr] = node;
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_DATA);
|
||||
mode = NS_HTML5TREE_BUILDER_FRAMESET_OK;
|
||||
} else {
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_HTML, elt);
|
||||
|
|
@ -129,15 +130,20 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
|||
resetTheInsertionMode();
|
||||
formPointer = getFormPointerForContext(contextNode);
|
||||
if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::textarea == contextName) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RCDATA, contextName);
|
||||
} else if (nsHtml5Atoms::style == contextName || nsHtml5Atoms::xmp == contextName || nsHtml5Atoms::iframe == contextName || nsHtml5Atoms::noembed == contextName || nsHtml5Atoms::noframes == contextName || (scriptingEnabled && nsHtml5Atoms::noscript == contextName)) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_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);
|
||||
} else if (nsHtml5Atoms::plaintext == contextName) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_PLAINTEXT, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_PLAINTEXT);
|
||||
} else if (nsHtml5Atoms::script == contextName) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_SCRIPT_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_SCRIPT_DATA);
|
||||
} else {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_DATA);
|
||||
}
|
||||
}
|
||||
contextName = nullptr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue