Use MathMLPresentationElement for all MathML presentation tags
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 29 Aug 2016 19:07:22 +0000 (19:07 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 29 Aug 2016 19:07:22 +0000 (19:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=161297

Patch by Frederic Wang <fwang@igalia.com> on 2016-08-29
Reviewed by Darin Adler.

Some tabular MathML elements as well as unsupported presentation MathML markup currently
create a generic MathMLElement instance. We make them instead use the
MathMLPresentationElement class since they are presentation MathML elements. This also
allows to make MathMLElement::isPresentationMathML always return false.

No new tests, already covered by existing tests.

* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::isPresentationMathML): Deleted. Moved into the header file.
* mathml/MathMLElement.h:
(WebCore::MathMLElement::isPresentationMathML): Make this always return false now that all
presentation markup are handled by MathMLPresentationElement.
* mathml/MathMLPresentationElement.cpp:
(WebCore::MathMLPresentationElement::createElementRenderer): Make the fallback always call
MathMLElement::createElementRenderer. This preserves the behavior for the new elements
handled here and does not affect the old ones (table is handled above while all the others
are already handled in the derived class).
* mathml/mathtags.in: Use MathMLPresentationElement for all MathML presentation tags.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@205133 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/mathml/MathMLElement.cpp
Source/WebCore/mathml/MathMLElement.h
Source/WebCore/mathml/MathMLPresentationElement.cpp
Source/WebCore/mathml/mathtags.in

index 9b5fb18..2464eb2 100644 (file)
@@ -1,3 +1,29 @@
+2016-08-29  Frederic Wang  <fwang@igalia.com>
+
+        Use MathMLPresentationElement for all MathML presentation tags
+        https://bugs.webkit.org/show_bug.cgi?id=161297
+
+        Reviewed by Darin Adler.
+
+        Some tabular MathML elements as well as unsupported presentation MathML markup currently
+        create a generic MathMLElement instance. We make them instead use the
+        MathMLPresentationElement class since they are presentation MathML elements. This also
+        allows to make MathMLElement::isPresentationMathML always return false.
+
+        No new tests, already covered by existing tests.
+
+        * mathml/MathMLElement.cpp:
+        (WebCore::MathMLElement::isPresentationMathML): Deleted. Moved into the header file.
+        * mathml/MathMLElement.h:
+        (WebCore::MathMLElement::isPresentationMathML): Make this always return false now that all
+        presentation markup are handled by MathMLPresentationElement.
+        * mathml/MathMLPresentationElement.cpp:
+        (WebCore::MathMLPresentationElement::createElementRenderer): Make the fallback always call
+        MathMLElement::createElementRenderer. This preserves the behavior for the new elements
+        handled here and does not affect the old ones (table is handled above while all the others
+        are already handled in the derived class).
+        * mathml/mathtags.in: Use MathMLPresentationElement for all MathML presentation tags.
+
 2016-08-29  Alex Christensen  <achristensen@webkit.org>
 
         API test URLParserTest.ParserFailures failing ASSERT_NOT_REACHED
index 98af962..09d3364 100644 (file)
@@ -64,26 +64,6 @@ Ref<MathMLElement> MathMLElement::create(const QualifiedName& tagName, Document&
     return adoptRef(*new MathMLElement(tagName, document));
 }
 
-bool MathMLElement::isPresentationMathML() const
-{
-    return hasTagName(MathMLNames::mtrTag)
-        || hasTagName(MathMLNames::mtdTag)
-        || hasTagName(MathMLNames::maligngroupTag)
-        || hasTagName(MathMLNames::malignmarkTag)
-        || hasTagName(MathMLNames::mencloseTag)
-        || hasTagName(MathMLNames::mglyphTag)
-        || hasTagName(MathMLNames::mlabeledtrTag)
-        || hasTagName(MathMLNames::mlongdivTag)
-        || hasTagName(MathMLNames::mpaddedTag)
-        || hasTagName(MathMLNames::msTag)
-        || hasTagName(MathMLNames::mscarriesTag)
-        || hasTagName(MathMLNames::mscarryTag)
-        || hasTagName(MathMLNames::msgroupTag)
-        || hasTagName(MathMLNames::mslineTag)
-        || hasTagName(MathMLNames::msrowTag)
-        || hasTagName(MathMLNames::mstackTag);
-}
-
 bool MathMLElement::isPhrasingContent(const Node& node) const
 {
     // Phrasing content is described in the HTML 5 specification:
index bb95339..2590c33 100644 (file)
@@ -44,7 +44,7 @@ public:
 
     virtual bool isMathMLToken() const { return false; }
     virtual bool isSemanticAnnotation() const { return false; }
-    virtual bool isPresentationMathML() const;
+    virtual bool isPresentationMathML() const { return false; }
 
     bool hasTagName(const MathMLQualifiedName& name) const { return hasLocalName(name.localName()); }
 
index 744d8e2..00739cd 100644 (file)
@@ -47,12 +47,12 @@ Ref<MathMLPresentationElement> MathMLPresentationElement::create(const Qualified
     return adoptRef(*new MathMLPresentationElement(tagName, document));
 }
 
-RenderPtr<RenderElement> MathMLPresentationElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
+RenderPtr<RenderElement> MathMLPresentationElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition& insertionPosition)
 {
     if (hasTagName(mtableTag))
         return createRenderer<RenderMathMLTable>(*this, WTFMove(style));
 
-    return createRenderer<RenderMathMLBlock>(*this, WTFMove(style));
+    return MathMLElement::createElementRenderer(WTFMove(style), insertionPosition);
 }
 
 bool MathMLPresentationElement::acceptsDisplayStyleAttribute()
index 4be6ee7..41fdf49 100644 (file)
@@ -29,22 +29,22 @@ mspace interfaceName=MathMLSpaceElement
 msub interfaceName=MathMLScriptsElement
 msup interfaceName=MathMLScriptsElement
 mtable interfaceName=MathMLPresentationElement
-mtr interfaceName=MathMLElement
-mtd interfaceName=MathMLElement
+mtr interfaceName=MathMLPresentationElement
+mtd interfaceName=MathMLPresentationElement
 mmultiscripts interfaceName=MathMLScriptsElement
 mprescripts interfaceName=MathMLPresentationElement
 menclose interfaceName=MathMLMencloseElement
 none interfaceName=MathMLPresentationElement
 semantics interfaceName=MathMLSelectElement
 
-maligngroup interfaceName=MathMLElement
-malignmark interfaceName=MathMLElement
-mglyph interfaceName=MathMLElement
-mlabeledtr interfaceName=MathMLElement
-mlongdiv interfaceName=MathMLElement
-mscarries interfaceName=MathMLElement
-mscarry interfaceName=MathMLElement
-msgroup interfaceName=MathMLElement
-msline interfaceName=MathMLElement
-msrow interfaceName=MathMLElement
-mstack interfaceName=MathMLElement
+maligngroup interfaceName=MathMLPresentationElement
+malignmark interfaceName=MathMLPresentationElement
+mglyph interfaceName=MathMLPresentationElement
+mlabeledtr interfaceName=MathMLPresentationElement
+mlongdiv interfaceName=MathMLPresentationElement
+mscarries interfaceName=MathMLPresentationElement
+mscarry interfaceName=MathMLPresentationElement
+msgroup interfaceName=MathMLPresentationElement
+msline interfaceName=MathMLPresentationElement
+msrow interfaceName=MathMLPresentationElement
+mstack interfaceName=MathMLPresentationElement