summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chromium/third_party/blink/renderer/core/html/parser/html_tree_builder.cc7
-rw-r--r--chromium/third_party/blink/renderer/core/html/parser/html_tree_builder_simulator.cc8
2 files changed, 14 insertions, 1 deletions
diff --git a/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder.cc b/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
index e27ad677177..2bcc67d216f 100644
--- a/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
+++ b/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
@@ -2693,6 +2693,13 @@ void HTMLTreeBuilder::ProcessTokenInForeignContent(AtomicHTMLToken* token) {
tree_.OpenElements()->Pop();
return;
}
+ if (token->GetName() == html_names::kBrTag ||
+ token->GetName() == html_names::kPTag) {
+ ParseError(token);
+ tree_.OpenElements()->PopUntilForeignContentScopeMarker();
+ ProcessEndTag(token);
+ return;
+ }
if (!tree_.CurrentStackItem()->IsInHTMLNamespace()) {
// FIXME: This code just wants an Element* iterator, instead of an
// ElementRecord*
diff --git a/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder_simulator.cc b/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder_simulator.cc
index ed65f066854..65135aee48b 100644
--- a/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder_simulator.cc
+++ b/chromium/third_party/blink/renderer/core/html/parser/html_tree_builder_simulator.cc
@@ -211,7 +211,13 @@ HTMLTreeBuilderSimulator::SimulatedToken HTMLTreeBuilderSimulator::Simulate(
}
}
}
-
+ if (token.GetType() == HTMLToken::kEndTag && InForeignContent()) {
+ const String& tag_name = token.Data();
+ if (ThreadSafeMatch(tag_name, html_names::kPTag) ||
+ ThreadSafeMatch(tag_name, html_names::kBrTag)) {
+ namespace_stack_.pop_back();
+ }
+ }
if (token.GetType() == HTMLToken::kEndTag ||
(token.GetType() == HTMLToken::kStartTag && token.SelfClosing() &&
InForeignContent())) {