Apply FINAL to the Node hierarchy.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 May 2013 15:12:51 +0000 (15:12 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 May 2013 15:12:51 +0000 (15:12 +0000)
<http://webkit.org/b/115984>

Mostly from Blink r149454 by <cevans@chromium.org>
<http://src.chromium.org/viewvc/blink?view=revision&revision=149454>

A couple of the stable DOM/ microbenchmarks are perf positive on Linux clang:

    - CloneNodes time reduced from 162.4 to 156.5 ms.
    - CreateNodes time reduced from 113.9 to 104.9 ms.

* dom/: Beat things with the FINAL stick.
* html/: Ditto.
* svg/: Ditto.

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

184 files changed:
Source/WebCore/ChangeLog
Source/WebCore/dom/Attr.h
Source/WebCore/dom/CDATASection.h
Source/WebCore/dom/CharacterData.h
Source/WebCore/dom/Comment.h
Source/WebCore/dom/ContainerNode.h
Source/WebCore/dom/DocumentType.h
Source/WebCore/dom/Element.h
Source/WebCore/dom/EntityReference.h
Source/WebCore/dom/Notation.h
Source/WebCore/dom/ProcessingInstruction.h
Source/WebCore/dom/PseudoElement.h
Source/WebCore/dom/ShadowRoot.h
Source/WebCore/dom/StyledElement.h
Source/WebCore/dom/TemplateContentDocumentFragment.h
Source/WebCore/dom/Text.h
Source/WebCore/html/HTMLAppletElement.h
Source/WebCore/html/HTMLAreaElement.h
Source/WebCore/html/HTMLAudioElement.h
Source/WebCore/html/HTMLBDIElement.h
Source/WebCore/html/HTMLBRElement.h
Source/WebCore/html/HTMLBaseElement.h
Source/WebCore/html/HTMLBaseFontElement.h
Source/WebCore/html/HTMLBodyElement.h
Source/WebCore/html/HTMLButtonElement.h
Source/WebCore/html/HTMLCanvasElement.h
Source/WebCore/html/HTMLDListElement.h
Source/WebCore/html/HTMLDataListElement.h
Source/WebCore/html/HTMLDetailsElement.h
Source/WebCore/html/HTMLDialogElement.h
Source/WebCore/html/HTMLDirectoryElement.h
Source/WebCore/html/HTMLElement.h
Source/WebCore/html/HTMLEmbedElement.h
Source/WebCore/html/HTMLFieldSetElement.h
Source/WebCore/html/HTMLFontElement.h
Source/WebCore/html/HTMLFormElement.h
Source/WebCore/html/HTMLFrameElement.h
Source/WebCore/html/HTMLFrameSetElement.h
Source/WebCore/html/HTMLHRElement.h
Source/WebCore/html/HTMLHeadElement.h
Source/WebCore/html/HTMLHeadingElement.h
Source/WebCore/html/HTMLHtmlElement.h
Source/WebCore/html/HTMLIFrameElement.h
Source/WebCore/html/HTMLKeygenElement.cpp
Source/WebCore/html/HTMLKeygenElement.h
Source/WebCore/html/HTMLLIElement.h
Source/WebCore/html/HTMLLabelElement.h
Source/WebCore/html/HTMLLegendElement.h
Source/WebCore/html/HTMLLinkElement.h
Source/WebCore/html/HTMLMapElement.h
Source/WebCore/html/HTMLMarqueeElement.h
Source/WebCore/html/HTMLMenuElement.h
Source/WebCore/html/HTMLMetaElement.h
Source/WebCore/html/HTMLMeterElement.h
Source/WebCore/html/HTMLModElement.h
Source/WebCore/html/HTMLOListElement.h
Source/WebCore/html/HTMLObjectElement.h
Source/WebCore/html/HTMLOptGroupElement.h
Source/WebCore/html/HTMLOptionElement.h
Source/WebCore/html/HTMLOutputElement.h
Source/WebCore/html/HTMLParagraphElement.h
Source/WebCore/html/HTMLParamElement.h
Source/WebCore/html/HTMLPreElement.h
Source/WebCore/html/HTMLProgressElement.h
Source/WebCore/html/HTMLQuoteElement.h
Source/WebCore/html/HTMLScriptElement.h
Source/WebCore/html/HTMLSourceElement.h
Source/WebCore/html/HTMLStyleElement.h
Source/WebCore/html/HTMLSummaryElement.h
Source/WebCore/html/HTMLTableCaptionElement.h
Source/WebCore/html/HTMLTableCellElement.h
Source/WebCore/html/HTMLTableColElement.h
Source/WebCore/html/HTMLTableElement.h
Source/WebCore/html/HTMLTableRowElement.h
Source/WebCore/html/HTMLTableSectionElement.h
Source/WebCore/html/HTMLTemplateElement.h
Source/WebCore/html/HTMLTextAreaElement.h
Source/WebCore/html/HTMLTitleElement.h
Source/WebCore/html/HTMLTrackElement.h
Source/WebCore/html/HTMLUListElement.h
Source/WebCore/html/HTMLUnknownElement.h
Source/WebCore/html/HTMLVideoElement.h
Source/WebCore/html/HTMLViewSourceDocument.h
Source/WebCore/html/ImageDocument.cpp
Source/WebCore/html/ImageDocument.h
Source/WebCore/html/MediaDocument.h
Source/WebCore/html/PluginDocument.h
Source/WebCore/html/TextDocument.h
Source/WebCore/html/shadow/ClearButtonElement.h
Source/WebCore/html/shadow/DateTimeEditElement.h
Source/WebCore/html/shadow/DateTimeFieldElements.h
Source/WebCore/html/shadow/DetailsMarkerControl.h
Source/WebCore/html/shadow/HTMLContentElement.h
Source/WebCore/html/shadow/MediaControlElements.h
Source/WebCore/html/shadow/MeterShadowElement.h
Source/WebCore/html/shadow/PickerIndicatorElement.h
Source/WebCore/html/shadow/ProgressShadowElement.h
Source/WebCore/html/shadow/SliderThumbElement.h
Source/WebCore/html/shadow/SpinButtonElement.h
Source/WebCore/html/shadow/TextControlInnerElements.h
Source/WebCore/html/track/TextTrackCueGeneric.cpp
Source/WebCore/html/track/WebVTTElement.h
Source/WebCore/loader/SinkDocument.h
Source/WebCore/svg/SVGAElement.h
Source/WebCore/svg/SVGAltGlyphDefElement.h
Source/WebCore/svg/SVGAltGlyphElement.h
Source/WebCore/svg/SVGAltGlyphItemElement.h
Source/WebCore/svg/SVGAnimateColorElement.h
Source/WebCore/svg/SVGAnimateMotionElement.h
Source/WebCore/svg/SVGAnimateTransformElement.h
Source/WebCore/svg/SVGCircleElement.h
Source/WebCore/svg/SVGClipPathElement.h
Source/WebCore/svg/SVGCursorElement.h
Source/WebCore/svg/SVGDefsElement.h
Source/WebCore/svg/SVGDescElement.h
Source/WebCore/svg/SVGDocument.h
Source/WebCore/svg/SVGEllipseElement.h
Source/WebCore/svg/SVGFEBlendElement.h
Source/WebCore/svg/SVGFEColorMatrixElement.h
Source/WebCore/svg/SVGFEComponentTransferElement.h
Source/WebCore/svg/SVGFECompositeElement.h
Source/WebCore/svg/SVGFEConvolveMatrixElement.h
Source/WebCore/svg/SVGFEDiffuseLightingElement.h
Source/WebCore/svg/SVGFEDisplacementMapElement.h
Source/WebCore/svg/SVGFEDistantLightElement.h
Source/WebCore/svg/SVGFEDropShadowElement.h
Source/WebCore/svg/SVGFEFloodElement.h
Source/WebCore/svg/SVGFEFuncAElement.h
Source/WebCore/svg/SVGFEFuncBElement.h
Source/WebCore/svg/SVGFEFuncGElement.h
Source/WebCore/svg/SVGFEFuncRElement.h
Source/WebCore/svg/SVGFEGaussianBlurElement.h
Source/WebCore/svg/SVGFEImageElement.h
Source/WebCore/svg/SVGFEMergeElement.h
Source/WebCore/svg/SVGFEMergeNodeElement.h
Source/WebCore/svg/SVGFEMorphologyElement.h
Source/WebCore/svg/SVGFEOffsetElement.h
Source/WebCore/svg/SVGFEPointLightElement.h
Source/WebCore/svg/SVGFESpecularLightingElement.h
Source/WebCore/svg/SVGFESpotLightElement.h
Source/WebCore/svg/SVGFETileElement.h
Source/WebCore/svg/SVGFETurbulenceElement.h
Source/WebCore/svg/SVGFilterElement.h
Source/WebCore/svg/SVGFontElement.h
Source/WebCore/svg/SVGFontFaceElement.h
Source/WebCore/svg/SVGFontFaceFormatElement.h
Source/WebCore/svg/SVGFontFaceNameElement.h
Source/WebCore/svg/SVGFontFaceSrcElement.h
Source/WebCore/svg/SVGFontFaceUriElement.h
Source/WebCore/svg/SVGForeignObjectElement.h
Source/WebCore/svg/SVGGElement.h
Source/WebCore/svg/SVGGlyphElement.h
Source/WebCore/svg/SVGGlyphRefElement.h
Source/WebCore/svg/SVGHKernElement.h
Source/WebCore/svg/SVGImageElement.h
Source/WebCore/svg/SVGLineElement.h
Source/WebCore/svg/SVGLinearGradientElement.h
Source/WebCore/svg/SVGMPathElement.h
Source/WebCore/svg/SVGMarkerElement.h
Source/WebCore/svg/SVGMaskElement.h
Source/WebCore/svg/SVGMetadataElement.h
Source/WebCore/svg/SVGMissingGlyphElement.h
Source/WebCore/svg/SVGPathElement.h
Source/WebCore/svg/SVGPatternElement.h
Source/WebCore/svg/SVGPolygonElement.h
Source/WebCore/svg/SVGPolylineElement.h
Source/WebCore/svg/SVGRadialGradientElement.h
Source/WebCore/svg/SVGRectElement.h
Source/WebCore/svg/SVGSVGElement.h
Source/WebCore/svg/SVGScriptElement.h
Source/WebCore/svg/SVGSetElement.h
Source/WebCore/svg/SVGStopElement.h
Source/WebCore/svg/SVGStyleElement.h
Source/WebCore/svg/SVGStyledElement.h
Source/WebCore/svg/SVGSwitchElement.h
Source/WebCore/svg/SVGSymbolElement.h
Source/WebCore/svg/SVGTRefElement.h
Source/WebCore/svg/SVGTSpanElement.h
Source/WebCore/svg/SVGTextElement.h
Source/WebCore/svg/SVGTextPathElement.h
Source/WebCore/svg/SVGTitleElement.h
Source/WebCore/svg/SVGUseElement.h
Source/WebCore/svg/SVGVKernElement.h
Source/WebCore/svg/SVGViewElement.h

index ffa3ebf..4db1d6c 100644 (file)
@@ -1,5 +1,22 @@
 2013-05-12  Andreas Kling  <akling@apple.com>
 
+        Apply FINAL to the Node hierarchy.
+        <http://webkit.org/b/115984>
+
+        Mostly from Blink r149454 by <cevans@chromium.org>
+        <http://src.chromium.org/viewvc/blink?view=revision&revision=149454>
+
+        A couple of the stable DOM/ microbenchmarks are perf positive on Linux clang:
+
+            - CloneNodes time reduced from 162.4 to 156.5 ms.
+            - CreateNodes time reduced from 113.9 to 104.9 ms.
+
+        * dom/: Beat things with the FINAL stick.
+        * html/: Ditto.
+        * svg/: Ditto.
+
+2013-05-12  Andreas Kling  <akling@apple.com>
+
         Devirtualize some things on Document.
 
         From Blink r149967 by <esprehn@chromium.org>
index e4d7d23..76e6adc 100644 (file)
@@ -39,7 +39,7 @@ class MutableStylePropertySet;
 // resulting nodevalue in the attribute upon
 // destruction. however, this is not yet implemented.
 
-class Attr : public ContainerNode {
+class Attr FINAL : public ContainerNode {
 public:
     static PassRefPtr<Attr> create(Element*, const QualifiedName&);
     static PassRefPtr<Attr> create(Document*, const QualifiedName&, const AtomicString& value);
index d7aca9d..6417c14 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class CDATASection : public Text {
+class CDATASection FINAL : public Text {
 public:
     static PassRefPtr<CDATASection> create(Document*, const String&);
 
index 8663eab..55a96d4 100644 (file)
@@ -63,11 +63,11 @@ protected:
     void dispatchModifiedEvent(const String& oldValue);
 
 private:
-    virtual String nodeValue() const;
-    virtual void setNodeValue(const String&, ExceptionCode&);
-    virtual bool isCharacterDataNode() const { return true; }
-    virtual int maxCharacterOffset() const;
-    virtual bool offsetInCharacters() const;
+    virtual String nodeValue() const OVERRIDE FINAL;
+    virtual void setNodeValue(const String&, ExceptionCode&) OVERRIDE FINAL;
+    virtual bool isCharacterDataNode() const OVERRIDE FINAL { return true; }
+    virtual int maxCharacterOffset() const OVERRIDE FINAL;
+    virtual bool offsetInCharacters() const OVERRIDE FINAL;
     void setDataAndUpdate(const String&, unsigned offsetOfReplacedData, unsigned oldLength, unsigned newLength);
     void checkCharDataOperation(unsigned offset, ExceptionCode&);
 
index 9db1f31..e5a5003 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class Comment : public CharacterData {
+class Comment FINAL : public CharacterData {
 public:
     static PassRefPtr<Comment> create(Document*, const String&);
 
index 053edbb..83d69cb 100644 (file)
@@ -112,7 +112,7 @@ public:
     virtual void setFocus(bool) OVERRIDE;
     virtual void setActive(bool active = true, bool pause = false) OVERRIDE;
     virtual void setHovered(bool = true) OVERRIDE;
-    virtual void scheduleSetNeedsStyleRecalc(StyleChangeType = FullStyleChange) OVERRIDE;
+    virtual void scheduleSetNeedsStyleRecalc(StyleChangeType = FullStyleChange) OVERRIDE FINAL;
 
     // -----------------------------------------------------------------------------
     // Notification of document structure changes (see Node.h for more notification methods)
index 6c64124..c57ac25 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class NamedNodeMap;
 
-class DocumentType : public Node {
+class DocumentType FINAL : public Node {
 public:
     static PassRefPtr<DocumentType> create(Document* document, const String& name, const String& publicId, const String& systemId)
     {
index 26f9b7e..6df95ad 100644 (file)
@@ -360,7 +360,7 @@ public:
     const AtomicString& prefix() const { return m_tagName.prefix(); }
     const AtomicString& namespaceURI() const { return m_tagName.namespaceURI(); }
 
-    virtual KURL baseURI() const;
+    virtual KURL baseURI() const OVERRIDE FINAL;
 
     virtual String nodeName() const;
 
@@ -503,7 +503,7 @@ public:
 
     bool isFinishedParsingChildren() const { return isParsingChildrenFinished(); }
     virtual void finishParsingChildren();
-    virtual void beginParsingChildren();
+    virtual void beginParsingChildren() OVERRIDE FINAL;
 
     bool hasPseudoElements() const;
     PseudoElement* pseudoElement(PseudoId) const;
@@ -631,8 +631,8 @@ protected:
 
     virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
     virtual void removedFrom(ContainerNode*) OVERRIDE;
-    virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
-    virtual void removeAllEventListeners() OVERRIDE;
+    virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0) OVERRIDE;
+    virtual void removeAllEventListeners() OVERRIDE FINAL;
 
     virtual bool willRecalcStyle(StyleChange);
     virtual void didRecalcStyle(StyleChange);
@@ -682,9 +682,9 @@ private:
 
     void scrollByUnits(int units, ScrollGranularity);
 
-    virtual void setPrefix(const AtomicString&, ExceptionCode&);
-    virtual NodeType nodeType() const;
-    virtual bool childTypeAllowed(NodeType) const;
+    virtual void setPrefix(const AtomicString&, ExceptionCode&) OVERRIDE FINAL;
+    virtual NodeType nodeType() const OVERRIDE FINAL;
+    virtual bool childTypeAllowed(NodeType) const OVERRIDE FINAL;
 
     void setAttributeInternal(unsigned index, const QualifiedName&, const AtomicString& value, SynchronizationOfLazyAttribute);
     void addAttributeInternal(const QualifiedName&, const AtomicString& value, SynchronizationOfLazyAttribute);
@@ -699,9 +699,9 @@ private:
 
     void cancelFocusAppearanceUpdate();
 
-    virtual const AtomicString& virtualPrefix() const { return prefix(); }
-    virtual const AtomicString& virtualLocalName() const { return localName(); }
-    virtual const AtomicString& virtualNamespaceURI() const { return namespaceURI(); }
+    virtual const AtomicString& virtualPrefix() const OVERRIDE FINAL { return prefix(); }
+    virtual const AtomicString& virtualLocalName() const OVERRIDE FINAL { return localName(); }
+    virtual const AtomicString& virtualNamespaceURI() const OVERRIDE FINAL { return namespaceURI(); }
     virtual RenderStyle* virtualComputedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) { return computedStyle(pseudoElementSpecifier); }
     
     // cloneNode is private so that non-virtual cloneElementWithChildren and cloneElementWithoutChildren
index 7a6f6c3..0333ff2 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class EntityReference : public ContainerNode {
+class EntityReference FINAL : public ContainerNode {
 public:
     static PassRefPtr<EntityReference> create(Document*, const String& entityName);
 
index b2155ba..a86082f 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 // FIXME: This class is never instantiated. Maybe it should be removed.
 
-class Notation : public ContainerNode {
+class Notation FINAL : public ContainerNode {
 public:
     const String& publicId() const { return m_publicId; }
     const String& systemId() const { return m_systemId; }
index e331e21..55f9851 100644 (file)
@@ -31,7 +31,7 @@ namespace WebCore {
 class StyleSheet;
 class CSSStyleSheet;
 
-class ProcessingInstruction : public Node, private CachedStyleSheetClient {
+class ProcessingInstruction FINAL : public Node, private CachedStyleSheetClient {
 public:
     static PassRefPtr<ProcessingInstruction> create(Document*, const String& target, const String& data);
     virtual ~ProcessingInstruction();
index f07251b..67106b2 100644 (file)
@@ -34,7 +34,7 @@
 
 namespace WebCore {
 
-class PseudoElement : public Element {
+class PseudoElement FINAL : public Element {
 public:
     static PassRefPtr<PseudoElement> create(Element* parent, PseudoId pseudoId)
     {
index 323eb49..aca6264 100644 (file)
@@ -39,7 +39,7 @@ namespace WebCore {
 class ElementShadow;
 class ScopeContentDistribution;
 
-class ShadowRoot : public DocumentFragment, public TreeScope {
+class ShadowRoot FINAL : public DocumentFragment, public TreeScope {
 public:
     // FIXME: We will support multiple shadow subtrees, however current implementation does not work well
     // if a shadow root is dynamically created. So we prohibit multiple shadow subtrees
index 3134473..5fe3246 100644 (file)
@@ -55,7 +55,7 @@ public:
 
     void synchronizeStyleAttributeInternal() const;
     
-    virtual CSSStyleDeclaration* style() OVERRIDE;
+    virtual CSSStyleDeclaration* style() OVERRIDE FINAL;
 
     const StylePropertySet* presentationAttributeStyle();
     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) { }
index 0a900be..45dff23 100644 (file)
@@ -33,7 +33,7 @@
 
 namespace WebCore {
 
-class TemplateContentDocumentFragment : public DocumentFragment {
+class TemplateContentDocumentFragment FINAL : public DocumentFragment {
 public:
     static PassRefPtr<TemplateContentDocumentFragment> create(Document* document, const Element* host)
     {
index 97153d3..e785a4b 100644 (file)
@@ -50,9 +50,9 @@ public:
     RenderText* createTextRenderer(RenderArena*, RenderStyle*);
     void updateTextRenderer(unsigned offsetOfReplacedData, unsigned lengthOfReplacedData);
 
-    virtual void attach();
+    virtual void attach() OVERRIDE FINAL;
     
-    virtual bool canContainRangeEndPoint() const { return true; }
+    virtual bool canContainRangeEndPoint() const OVERRIDE FINAL { return true; }
 
 protected:
     Text(Document* document, const String& data, ConstructionType type)
@@ -61,10 +61,10 @@ protected:
     }
 
 private:
-    virtual String nodeName() const;
-    virtual NodeType nodeType() const;
-    virtual PassRefPtr<Node> cloneNode(bool deep);
-    virtual bool childTypeAllowed(NodeType) const;
+    virtual String nodeName() const OVERRIDE;
+    virtual NodeType nodeType() const OVERRIDE;
+    virtual PassRefPtr<Node> cloneNode(bool deep) OVERRIDE;
+    virtual bool childTypeAllowed(NodeType) const OVERRIDE;
 
     virtual PassRefPtr<Text> virtualCreate(const String&);
 
index d0e86c0..2ad62ee 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLAppletElement : public HTMLPlugInImageElement {
+class HTMLAppletElement FINAL : public HTMLPlugInImageElement {
 public:
     static PassRefPtr<HTMLAppletElement> create(const QualifiedName&, Document*, bool createdByParser);
 
index 010dd91..0438b9b 100644 (file)
@@ -33,7 +33,7 @@ class HitTestResult;
 class HTMLImageElement;
 class Path;
 
-class HTMLAreaElement : public HTMLAnchorElement {
+class HTMLAreaElement FINAL : public HTMLAnchorElement {
 public:
     static PassRefPtr<HTMLAreaElement> create(const QualifiedName&, Document*);
 
index 42668e7..45a89de 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
 
 class Document;
 
-class HTMLAudioElement : public HTMLMediaElement {
+class HTMLAudioElement FINAL : public HTMLMediaElement {
 public:
     static PassRefPtr<HTMLAudioElement> create(const QualifiedName&, Document*, bool);
     static PassRefPtr<HTMLAudioElement> createForJSConstructor(Document*, const String& src);
index 64e69d8..b8a6aa2 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class HTMLBDIElement : public HTMLElement {
+class HTMLBDIElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLBDIElement> create(const QualifiedName& name, Document* document)
     {
index 731018a..29bc331 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLBRElement : public HTMLElement {
+class HTMLBRElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLBRElement> create(Document*);
     static PassRefPtr<HTMLBRElement> create(const QualifiedName&, Document*);
index 434776d..88ef7c7 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLBaseElement : public HTMLElement {
+class HTMLBaseElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLBaseElement> create(const QualifiedName&, Document*);
 
index 7573045..92b35eb 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLBaseFontElement : public HTMLElement {
+class HTMLBaseFontElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLBaseFontElement> create(const QualifiedName&, Document*);
 
index 193d2a5..640c04f 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class Document;
 
-class HTMLBodyElement : public HTMLElement {
+class HTMLBodyElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLBodyElement> create(Document*);
     static PassRefPtr<HTMLBodyElement> create(const QualifiedName&, Document*);
index 19f9001..ea71e32 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLButtonElement : public HTMLFormControlElement {
+class HTMLButtonElement FINAL : public HTMLFormControlElement {
 public:
     static PassRefPtr<HTMLButtonElement> create(const QualifiedName&, Document*, HTMLFormElement*);
 
index 4087194..282bab7 100644 (file)
@@ -62,7 +62,7 @@ public:
     virtual void canvasDestroyed(HTMLCanvasElement*) = 0;
 };
 
-class HTMLCanvasElement : public HTMLElement {
+class HTMLCanvasElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLCanvasElement> create(Document*);
     static PassRefPtr<HTMLCanvasElement> create(const QualifiedName&, Document*);
index 25697a1..7a3c506 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLDListElement : public HTMLElement {
+class HTMLDListElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLDListElement> create(const QualifiedName&, Document*);
 
index 3572643..b8ef704 100644 (file)
@@ -38,7 +38,7 @@
 
 namespace WebCore {
 
-class HTMLDataListElement : public HTMLElement {
+class HTMLDataListElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLDataListElement> create(const QualifiedName&, Document*);
 
index 864d521..100a7d7 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class HTMLDetailsElement : public HTMLElement {
+class HTMLDetailsElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLDetailsElement> create(const QualifiedName& tagName, Document* document);
     void toggleOpen();
index 9c9782d..05bdf9c 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
 class Document;
 class QualifiedName;
 
-class HTMLDialogElement : public HTMLElement {
+class HTMLDialogElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLDialogElement> create(const QualifiedName&, Document*);
 
index afd3876..4273e02 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLDirectoryElement : public HTMLElement {
+class HTMLDirectoryElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLDirectoryElement> create(const QualifiedName& tagName, Document*);
 
index 473a976..00e238c 100644 (file)
@@ -48,7 +48,7 @@ public:
 
     PassRefPtr<HTMLCollection> children();
 
-    virtual String title() const;
+    virtual String title() const OVERRIDE FINAL;
 
     virtual short tabIndex() const;
     void setTabIndex(int);
@@ -126,7 +126,7 @@ protected:
     virtual bool isURLAttribute(const Attribute&) const OVERRIDE;
 
 private:
-    virtual String nodeName() const;
+    virtual String nodeName() const OVERRIDE FINAL;
 
     void mapLanguageAttributeToLocale(const AtomicString&, MutableStylePropertySet*);
 
index bb6eba1..f27f5e9 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLEmbedElement : public HTMLPlugInImageElement {
+class HTMLEmbedElement FINAL : public HTMLPlugInImageElement {
 public:
     static PassRefPtr<HTMLEmbedElement> create(const QualifiedName&, Document*, bool createdByParser);
 
index 83c8880..a6aaef1 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 class FormAssociatedElement;
 class HTMLCollection;
 
-class HTMLFieldSetElement : public HTMLFormControlElement {
+class HTMLFieldSetElement FINAL : public HTMLFormControlElement {
 public:
     static PassRefPtr<HTMLFieldSetElement> create(const QualifiedName&, Document*, HTMLFormElement*);
     HTMLLegendElement* legend() const;
index 7b3a8dd..b2dc0be 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLFontElement : public HTMLElement {
+class HTMLFontElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLFontElement> create(const QualifiedName&, Document*);
     
index ba9e2f2..01ddc63 100644 (file)
@@ -40,7 +40,7 @@ class HTMLImageElement;
 class HTMLInputElement;
 class TextEncoding;
 
-class HTMLFormElement : public HTMLElement {
+class HTMLFormElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLFormElement> create(Document*);
     static PassRefPtr<HTMLFormElement> create(const QualifiedName&, Document*);
index 0fad00d..00dcc95 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLFrameElement : public HTMLFrameElementBase {
+class HTMLFrameElement FINAL : public HTMLFrameElementBase {
 public:
     static PassRefPtr<HTMLFrameElement> create(const QualifiedName&, Document*);
 
index db90968..38e4144 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class HTMLFrameSetElement : public HTMLElement {
+class HTMLFrameSetElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLFrameSetElement> create(const QualifiedName&, Document*);
 
index b198e21..224c124 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLHRElement : public HTMLElement {
+class HTMLHRElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLHRElement> create(Document*);
     static PassRefPtr<HTMLHRElement> create(const QualifiedName&, Document*);
index 1a5df86..8106827 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLHeadElement : public HTMLElement {
+class HTMLHeadElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLHeadElement> create(Document*);
     static PassRefPtr<HTMLHeadElement> create(const QualifiedName&, Document*);
index f09cfe3..e73db88 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLHeadingElement : public HTMLElement {
+class HTMLHeadingElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLHeadingElement> create(const QualifiedName&, Document*);
 
index 40f8bad..0d2dcdf 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLHtmlElement : public HTMLElement {
+class HTMLHtmlElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLHtmlElement> create(Document*);
     static PassRefPtr<HTMLHtmlElement> create(const QualifiedName&, Document*);
index e8e090c..cb1d8f9 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLIFrameElement : public HTMLFrameElementBase {
+class HTMLIFrameElement FINAL : public HTMLFrameElementBase {
 public:
     static PassRefPtr<HTMLIFrameElement> create(const QualifiedName&, Document*);
 
index 4e85db3..4712547 100644 (file)
@@ -43,7 +43,7 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-class KeygenSelectElement : public HTMLSelectElement {
+class KeygenSelectElement FINAL : public HTMLSelectElement {
 public:
     static PassRefPtr<KeygenSelectElement> create(Document* document)
     {
index 048d54e..48cb0f1 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class HTMLSelectElement;
 
-class HTMLKeygenElement : public HTMLFormControlElementWithState {
+class HTMLKeygenElement FINAL : public HTMLFormControlElementWithState {
 public:
     static PassRefPtr<HTMLKeygenElement> create(const QualifiedName&, Document*, HTMLFormElement*);
 
index 73a5d79..0048bd9 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLLIElement : public HTMLElement {
+class HTMLLIElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLLIElement> create(Document*);
     static PassRefPtr<HTMLLIElement> create(const QualifiedName&, Document*);
index 08baa9e..7b1935b 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class HTMLLabelElement : public HTMLElement {
+class HTMLLabelElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLLabelElement> create(const QualifiedName&, Document*);
 
index 37b06f0..dcc0d38 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class HTMLFormControlElement;
 
-class HTMLLegendElement : public HTMLElement {
+class HTMLLegendElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLLegendElement> create(const QualifiedName&, Document*);
 
index 6358a4d..94680c8 100644 (file)
@@ -43,7 +43,7 @@ class KURL;
 template<typename T> class EventSender;
 typedef EventSender<HTMLLinkElement> LinkEventSender;
 
-class HTMLLinkElement : public HTMLElement, public CachedStyleSheetClient, public LinkLoaderClient {
+class HTMLLinkElement FINAL : public HTMLElement, public CachedStyleSheetClient, public LinkLoaderClient {
 public:
     static PassRefPtr<HTMLLinkElement> create(const QualifiedName&, Document*, bool createdByParser);
     virtual ~HTMLLinkElement();
index 76641de..4ddce6a 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 class HitTestResult;
 class HTMLImageElement;
     
-class HTMLMapElement : public HTMLElement {
+class HTMLMapElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLMapElement> create(Document*);
     static PassRefPtr<HTMLMapElement> create(const QualifiedName&, Document*);
index a4fb272..9d9cf44 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class RenderMarquee;
 
-class HTMLMarqueeElement : public HTMLElement, private ActiveDOMObject {
+class HTMLMarqueeElement FINAL : public HTMLElement, private ActiveDOMObject {
 public:
     static PassRefPtr<HTMLMarqueeElement> create(const QualifiedName&, Document*);
 
index 6b588ec..31b49d5 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLMenuElement : public HTMLElement {
+class HTMLMenuElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLMenuElement> create(const QualifiedName&, Document*);
     
index 41f2780..7c83863 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLMetaElement : public HTMLElement {
+class HTMLMetaElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLMetaElement> create(const QualifiedName&, Document*);
 
index ac21ca2..9f6047d 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 class MeterValueElement;
 class RenderMeter;
 
-class HTMLMeterElement : public LabelableElement {
+class HTMLMeterElement FINAL : public LabelableElement {
 public:
     static PassRefPtr<HTMLMeterElement> create(const QualifiedName&, Document*);
 
index c1be99b..89a4868 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class HTMLModElement : public HTMLElement {
+class HTMLModElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLModElement> create(const QualifiedName&, Document*);
 
index d06f545..771f497 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLOListElement : public HTMLElement {
+class HTMLOListElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLOListElement> create(Document*);
     static PassRefPtr<HTMLOListElement> create(const QualifiedName&, Document*);
index 1b7ad91..d11420b 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class HTMLFormElement;
 
-class HTMLObjectElement : public HTMLPlugInImageElement, public FormAssociatedElement {
+class HTMLObjectElement FINAL : public HTMLPlugInImageElement, public FormAssociatedElement {
 public:
     static PassRefPtr<HTMLObjectElement> create(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser);
     virtual ~HTMLObjectElement();
index fe181f7..6a253d2 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
     
 class HTMLSelectElement;
 
-class HTMLOptGroupElement : public HTMLElement {
+class HTMLOptGroupElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLOptGroupElement> create(const QualifiedName&, Document*);
 
index 673f077..707bb85 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 class HTMLDataListElement;
 class HTMLSelectElement;
 
-class HTMLOptionElement : public HTMLElement {
+class HTMLOptionElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLOptionElement> create(Document*);
     static PassRefPtr<HTMLOptionElement> create(const QualifiedName&, Document*);
index cade5ad..c6e7a99 100644 (file)
@@ -37,7 +37,7 @@
 
 namespace WebCore {
 
-class HTMLOutputElement : public HTMLFormControlElement {
+class HTMLOutputElement FINAL : public HTMLFormControlElement {
 public:
     static PassRefPtr<HTMLOutputElement> create(const QualifiedName&, Document*, HTMLFormElement*);
 
index 94bfd78..f51f2e8 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLParagraphElement : public HTMLElement {
+class HTMLParagraphElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLParagraphElement> create(Document*);
     static PassRefPtr<HTMLParagraphElement> create(const QualifiedName&, Document*);
index f868e13..7a7df8d 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLParamElement : public HTMLElement {
+class HTMLParamElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLParamElement> create(const QualifiedName&, Document*);
 
index 632fa3b..81a323c 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLPreElement : public HTMLElement {
+class HTMLPreElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLPreElement> create(const QualifiedName&, Document*);
 
index 70f4441..03c5826 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 class ProgressValueElement;
 class RenderProgress;
 
-class HTMLProgressElement : public LabelableElement {
+class HTMLProgressElement FINAL : public LabelableElement {
 public:
     static const double IndeterminatePosition;
     static const double InvalidPosition;
index fec2d9a..9745290 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class HTMLQuoteElement : public HTMLElement {
+class HTMLQuoteElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLQuoteElement> create(const QualifiedName&, Document*);
 
index beac8eb..a6426d4 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class HTMLScriptElement : public HTMLElement, public ScriptElement {
+class HTMLScriptElement FINAL : public HTMLElement, public ScriptElement {
 public:
     static PassRefPtr<HTMLScriptElement> create(const QualifiedName&, Document*, bool wasInsertedByParser, bool alreadyStarted = false);
 
index 611e99a..108067e 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace WebCore {
 
-class HTMLSourceElement : public HTMLElement {
+class HTMLSourceElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLSourceElement> create(const QualifiedName&, Document*);
 
index d3e99e4..ac8fd17 100644 (file)
@@ -34,7 +34,7 @@ class StyleSheet;
 template<typename T> class EventSender;
 typedef EventSender<HTMLStyleElement> StyleEventSender;
 
-class HTMLStyleElement : public HTMLElement, private StyleElement {
+class HTMLStyleElement FINAL : public HTMLElement, private StyleElement {
 public:
     static PassRefPtr<HTMLStyleElement> create(const QualifiedName&, Document*, bool createdByParser);
     virtual ~HTMLStyleElement();
index 715fe9a..2fbecad 100644 (file)
@@ -27,7 +27,7 @@ namespace WebCore {
 
 class HTMLDetailsElement;
 
-class HTMLSummaryElement : public HTMLElement {
+class HTMLSummaryElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLSummaryElement> create(const QualifiedName&, Document*);
     bool isMainSummary() const;
index ff91796..7cf1912 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class HTMLTableCaptionElement : public HTMLElement {
+class HTMLTableCaptionElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLTableCaptionElement> create(const QualifiedName&, Document*);
 
index df26dcd..7832451 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class HTMLTableCellElement : public HTMLTablePartElement {
+class HTMLTableCellElement FINAL : public HTMLTablePartElement {
 public:
     static PassRefPtr<HTMLTableCellElement> create(const QualifiedName&, Document*);
 
index cbbc4ad..76e7ef4 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class HTMLTableColElement : public HTMLTablePartElement {
+class HTMLTableColElement FINAL : public HTMLTablePartElement {
 public:
     static PassRefPtr<HTMLTableColElement> create(const QualifiedName& tagName, Document*);
 
index 29d0208..c47f181 100644 (file)
@@ -35,7 +35,7 @@ class HTMLTableCaptionElement;
 class HTMLTableRowsCollection;
 class HTMLTableSectionElement;
 
-class HTMLTableElement : public HTMLElement {
+class HTMLTableElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLTableElement> create(Document*);
     static PassRefPtr<HTMLTableElement> create(const QualifiedName&, Document*);
index c433677..c77d10d 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class HTMLTableRowElement : public HTMLTablePartElement {
+class HTMLTableRowElement FINAL : public HTMLTablePartElement {
 public:
     static PassRefPtr<HTMLTableRowElement> create(Document*);
     static PassRefPtr<HTMLTableRowElement> create(const QualifiedName&, Document*);
index 946b3ca..0b7b588 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class HTMLTableSectionElement : public HTMLTablePartElement {
+class HTMLTableSectionElement FINAL : public HTMLTablePartElement {
 public:
     static PassRefPtr<HTMLTableSectionElement> create(const QualifiedName&, Document*);
 
index 69af3de..f6d5e3b 100644 (file)
@@ -38,7 +38,7 @@
 
 namespace WebCore {
 
-class HTMLTemplateElement : public HTMLElement {
+class HTMLTemplateElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLTemplateElement> create(const QualifiedName&, Document*);
     virtual ~HTMLTemplateElement();
index e4aa3cb..80db8c0 100644 (file)
@@ -31,7 +31,7 @@ namespace WebCore {
 class BeforeTextInsertedEvent;
 class VisibleSelection;
 
-class HTMLTextAreaElement : public HTMLTextFormControlElement {
+class HTMLTextAreaElement FINAL : public HTMLTextFormControlElement {
 public:
     static PassRefPtr<HTMLTextAreaElement> create(const QualifiedName&, Document*, HTMLFormElement*);
 
index ccf00d6..296609a 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLTitleElement : public HTMLElement {
+class HTMLTitleElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLTitleElement> create(const QualifiedName&, Document*);
 
index 701c10a..480bb43 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
 
 class HTMLMediaElement;
 
-class HTMLTrackElement : public HTMLElement, public TextTrackClient {
+class HTMLTrackElement FINAL : public HTMLElement, public TextTrackClient {
 public:
     static PassRefPtr<HTMLTrackElement> create(const QualifiedName&, Document*);
 
index 28f9157..be20b9b 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class HTMLUListElement : public HTMLElement {
+class HTMLUListElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLUListElement> create(Document*);
     static PassRefPtr<HTMLUListElement> create(const QualifiedName&, Document*);
index 07d6265..6c53005 100644 (file)
@@ -34,7 +34,7 @@
 
 namespace WebCore {
 
-class HTMLUnknownElement : public HTMLElement {
+class HTMLUnknownElement FINAL : public HTMLElement {
 public:
     static PassRefPtr<HTMLUnknownElement> create(const QualifiedName& tagName, Document* document)
     {
index 2463945..9362c12 100644 (file)
@@ -33,7 +33,7 @@ namespace WebCore {
 
 class HTMLImageLoader;
 
-class HTMLVideoElement : public HTMLMediaElement {
+class HTMLVideoElement FINAL : public HTMLMediaElement {
 public:
     static PassRefPtr<HTMLVideoElement> create(const QualifiedName&, Document*, bool);
 
index c5c6682..ced59df 100644 (file)
@@ -33,7 +33,7 @@ class HTMLTableCellElement;
 class HTMLTableSectionElement;
 class HTMLToken;
 
-class HTMLViewSourceDocument : public HTMLDocument {
+class HTMLViewSourceDocument FINAL : public HTMLDocument {
 public:
     static PassRefPtr<HTMLViewSourceDocument> create(Frame* frame, const KURL& url, const String& mimeType)
     {
index f22e47b..8d70caf 100644 (file)
@@ -97,7 +97,7 @@ private:
     virtual void finish();
 };
 
-class ImageDocumentElement : public HTMLImageElement {
+class ImageDocumentElement FINAL : public HTMLImageElement {
 public:
     static PassRefPtr<ImageDocumentElement> create(ImageDocument*);
 
index fbe067a..3204d01 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 class CachedImage;
 class ImageDocumentElement;
 
-class ImageDocument : public HTMLDocument {
+class ImageDocument FINAL : public HTMLDocument {
 public:
     static PassRefPtr<ImageDocument> create(Frame* frame, const KURL& url)
     {
index e7f5111..4c9b78b 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace WebCore {
 
-class MediaDocument : public HTMLDocument {
+class MediaDocument FINAL : public HTMLDocument {
 public:
     static PassRefPtr<MediaDocument> create(Frame* frame, const KURL& url)
     {
index 50feafa..26ccd6c 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 class Node;
 class Widget;
 
-class PluginDocument : public HTMLDocument {
+class PluginDocument FINAL : public HTMLDocument {
 public:
     static PassRefPtr<PluginDocument> create(Frame* frame, const KURL& url)
     {
index 2ea49f8..eeb6010 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class TextDocument : public HTMLDocument {
+class TextDocument FINAL : public HTMLDocument {
 public:
     static PassRefPtr<TextDocument> create(Frame* frame, const KURL& url)
     {
index 6100a61..35462b1 100644 (file)
@@ -31,7 +31,7 @@
 
 namespace WebCore {
 
-class ClearButtonElement : public HTMLDivElement {
+class ClearButtonElement FINAL : public HTMLDivElement {
 public:
     class ClearButtonOwner {
     public:
index 922852b..4e235d5 100644 (file)
@@ -43,7 +43,7 @@ class StepRange;
 // representing date and time, such as
 //  - Year, Month, Day Of Month
 //  - Hour, Minute, Second, Millisecond, AM/PM
-class DateTimeEditElement : public HTMLDivElement, public DateTimeFieldElement::FieldOwner {
+class DateTimeEditElement FINAL : public HTMLDivElement, public DateTimeFieldElement::FieldOwner {
     WTF_MAKE_NONCOPYABLE(DateTimeEditElement);
 
 public:
index edbea7f..ee04743 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace WebCore {
 
-class DateTimeAMPMFieldElement : public DateTimeSymbolicFieldElement {
+class DateTimeAMPMFieldElement FINAL : public DateTimeSymbolicFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeAMPMFieldElement);
 
 public:
@@ -47,7 +47,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeDayFieldElement : public DateTimeNumericFieldElement {
+class DateTimeDayFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
 
 public:
@@ -75,7 +75,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeHour11FieldElement : public DateTimeHourFieldElementBase {
+class DateTimeHour11FieldElement FINAL : public DateTimeHourFieldElementBase {
     WTF_MAKE_NONCOPYABLE(DateTimeHour11FieldElement);
 
 public:
@@ -89,7 +89,7 @@ private:
     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE FINAL;
 };
 
-class DateTimeHour12FieldElement : public DateTimeHourFieldElementBase {
+class DateTimeHour12FieldElement FINAL : public DateTimeHourFieldElementBase {
     WTF_MAKE_NONCOPYABLE(DateTimeHour12FieldElement);
 
 public:
@@ -103,7 +103,7 @@ private:
     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE FINAL;
 };
 
-class DateTimeHour23FieldElement : public DateTimeHourFieldElementBase {
+class DateTimeHour23FieldElement FINAL : public DateTimeHourFieldElementBase {
     WTF_MAKE_NONCOPYABLE(DateTimeHour23FieldElement);
 
 public:
@@ -117,7 +117,7 @@ private:
     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE FINAL;
 };
 
-class DateTimeHour24FieldElement : public DateTimeHourFieldElementBase {
+class DateTimeHour24FieldElement FINAL : public DateTimeHourFieldElementBase {
     WTF_MAKE_NONCOPYABLE(DateTimeHour24FieldElement);
 
 public:
@@ -131,7 +131,7 @@ private:
     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE FINAL;
 };
 
-class DateTimeMillisecondFieldElement : public DateTimeNumericFieldElement {
+class DateTimeMillisecondFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeMillisecondFieldElement);
 
 public:
@@ -146,7 +146,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeMinuteFieldElement : public DateTimeNumericFieldElement {
+class DateTimeMinuteFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeMinuteFieldElement);
 
 public:
@@ -161,7 +161,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeMonthFieldElement : public DateTimeNumericFieldElement {
+class DateTimeMonthFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeMonthFieldElement);
 
 public:
@@ -176,7 +176,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeSecondFieldElement : public DateTimeNumericFieldElement {
+class DateTimeSecondFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeSecondFieldElement);
 
 public:
@@ -191,7 +191,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeSymbolicMonthFieldElement : public DateTimeSymbolicFieldElement {
+class DateTimeSymbolicMonthFieldElement FINAL : public DateTimeSymbolicFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeSymbolicMonthFieldElement);
 
 public:
@@ -206,7 +206,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeWeekFieldElement : public DateTimeNumericFieldElement {
+class DateTimeWeekFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeWeekFieldElement);
 
 public:
@@ -221,7 +221,7 @@ private:
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
 };
 
-class DateTimeYearFieldElement : public DateTimeNumericFieldElement {
+class DateTimeYearFieldElement FINAL : public DateTimeNumericFieldElement {
     WTF_MAKE_NONCOPYABLE(DateTimeYearFieldElement);
 
 public:
index 1aa14ca..d2ff3d5 100644 (file)
@@ -38,7 +38,7 @@ namespace WebCore {
 
 class HTMLSummaryElement;
 
-class DetailsMarkerControl : public HTMLDivElement {
+class DetailsMarkerControl FINAL : public HTMLDivElement {
 public:
     DetailsMarkerControl(Document*);
     static PassRefPtr<DetailsMarkerControl> create(Document*);
index 40a4ad0..d092570 100644 (file)
@@ -39,7 +39,7 @@ namespace WebCore {
 
 #if ENABLE(SHADOW_DOM)
 
-class HTMLContentElement : public InsertionPoint {
+class HTMLContentElement FINAL : public InsertionPoint {
 public:
     static const QualifiedName& contentTagName(Document*);
     static PassRefPtr<HTMLContentElement> create(const QualifiedName&, Document*);
index 610c51f..6b6d331 100644 (file)
@@ -38,7 +38,7 @@ namespace WebCore {
 
 // ----------------------------
 
-class MediaControlPanelElement : public MediaControlDivElement {
+class MediaControlPanelElement FINAL : public MediaControlDivElement {
 public:
     static PassRefPtr<MediaControlPanelElement> create(Document*);
 
@@ -80,7 +80,7 @@ private:
 
 // ----------------------------
 
-class MediaControlPanelEnclosureElement : public MediaControlDivElement {
+class MediaControlPanelEnclosureElement FINAL : public MediaControlDivElement {
 public:
     static PassRefPtr<MediaControlPanelEnclosureElement> create(Document*);
 
@@ -91,7 +91,7 @@ private:
 
 // ----------------------------
 
-class MediaControlOverlayEnclosureElement : public MediaControlDivElement {
+class MediaControlOverlayEnclosureElement FINAL : public MediaControlDivElement {
 public:
     static PassRefPtr<MediaControlOverlayEnclosureElement> create(Document*);
 
@@ -150,7 +150,7 @@ private:
 
 // ----------------------------
 
-class MediaControlPanelMuteButtonElement : public MediaControlMuteButtonElement {
+class MediaControlPanelMuteButtonElement FINAL : public MediaControlMuteButtonElement {
 public:
     static PassRefPtr<MediaControlPanelMuteButtonElement> create(Document*, MediaControls*);
 
@@ -167,7 +167,7 @@ private:
 
 // ----------------------------
 
-class MediaControlVolumeSliderMuteButtonElement : public MediaControlMuteButtonElement {
+class MediaControlVolumeSliderMuteButtonElement FINAL : public MediaControlMuteButtonElement {
 public:
     static PassRefPtr<MediaControlVolumeSliderMuteButtonElement> create(Document*);
 
@@ -179,7 +179,7 @@ private:
 
 // ----------------------------
 
-class MediaControlPlayButtonElement : public MediaControlInputElement {
+class MediaControlPlayButtonElement FINAL : public MediaControlInputElement {
 public:
     static PassRefPtr<MediaControlPlayButtonElement> create(Document*);
 
@@ -195,7 +195,7 @@ private:
 
 // ----------------------------
 
-class MediaControlOverlayPlayButtonElement : public MediaControlInputElement {
+class MediaControlOverlayPlayButtonElement FINAL : public MediaControlInputElement {
 public:
     static PassRefPtr<MediaControlOverlayPlayButtonElement> create(Document*);
 
@@ -266,7 +266,7 @@ private:
 
 // ----------------------------
 
-class MediaControlToggleClosedCaptionsButtonElement : public MediaControlInputElement {
+class MediaControlToggleClosedCaptionsButtonElement FINAL : public MediaControlInputElement {
 public:
     static PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> create(Document*, MediaControls*);
 
@@ -287,7 +287,7 @@ private:
 
 // ----------------------------
 
-class MediaControlClosedCaptionsContainerElement : public MediaControlDivElement {
+class MediaControlClosedCaptionsContainerElement FINAL : public MediaControlDivElement {
 public:
     static PassRefPtr<MediaControlClosedCaptionsContainerElement> create(Document*);
 
@@ -300,7 +300,7 @@ private:
 
 // ----------------------------
 
-class MediaControlClosedCaptionsTrackListElement : public MediaControlDivElement {
+class MediaControlClosedCaptionsTrackListElement FINAL : public MediaControlDivElement {
 public:
     static PassRefPtr<MediaControlClosedCaptionsTrackListElement> create(Document*, MediaControls*);
 
@@ -327,7 +327,7 @@ private:
 
 // ----------------------------
 
-class MediaControlTimelineElement : public MediaControlInputElement {
+class MediaControlTimelineElement FINAL : public MediaControlInputElement {
 public:
     static PassRefPtr<MediaControlTimelineElement> create(Document*, MediaControls*);
 
@@ -347,7 +347,7 @@ private:
 
 // ----------------------------
 
-class MediaControlFullscreenButtonElement : public MediaControlInputElement {
+class MediaControlFullscreenButtonElement FINAL : public MediaControlInputElement {
 public:
     static PassRefPtr<MediaControlFullscreenButtonElement> create(Document*);
 
@@ -364,7 +364,7 @@ private:
 
 // ----------------------------
 
-class MediaControlPanelVolumeSliderElement : public MediaControlVolumeSliderElement {
+class MediaControlPanelVolumeSliderElement FINAL : public MediaControlVolumeSliderElement {
 public:
     static PassRefPtr<MediaControlPanelVolumeSliderElement> create(Document*);
 
@@ -415,7 +415,7 @@ private:
 
 // ----------------------------
 
-class MediaControlTimeRemainingDisplayElement : public MediaControlTimeDisplayElement {
+class MediaControlTimeRemainingDisplayElement FINAL : public MediaControlTimeDisplayElement {
 public:
     static PassRefPtr<MediaControlTimeRemainingDisplayElement> create(Document*);
 
@@ -426,7 +426,7 @@ private:
 
 // ----------------------------
 
-class MediaControlCurrentTimeDisplayElement : public MediaControlTimeDisplayElement {
+class MediaControlCurrentTimeDisplayElement FINAL : public MediaControlTimeDisplayElement {
 public:
     static PassRefPtr<MediaControlCurrentTimeDisplayElement> create(Document*);
 
@@ -439,7 +439,7 @@ private:
 
 #if ENABLE(VIDEO_TRACK)
 
-class MediaControlTextTrackContainerElement : public MediaControlDivElement, public TextTrackRepresentationClient {
+class MediaControlTextTrackContainerElement FINAL : public MediaControlDivElement, public TextTrackRepresentationClient {
 public:
     static PassRefPtr<MediaControlTextTrackContainerElement> create(Document*);
 
index fcf962b..82b89ab 100644 (file)
@@ -49,7 +49,7 @@ private:
     virtual bool rendererIsNeeded(const NodeRenderingContext&);
 };
 
-class MeterInnerElement : public MeterShadowElement {
+class MeterInnerElement FINAL : public MeterShadowElement {
 public:
     MeterInnerElement(Document*);
     static PassRefPtr<MeterInnerElement> create(Document*);
@@ -64,7 +64,7 @@ inline PassRefPtr<MeterInnerElement> MeterInnerElement::create(Document* documen
     return adoptRef(new MeterInnerElement(document));
 }
 
-class MeterBarElement : public MeterShadowElement {
+class MeterBarElement FINAL : public MeterShadowElement {
 public:
     MeterBarElement(Document* document) 
         : MeterShadowElement(document)
@@ -81,7 +81,7 @@ inline PassRefPtr<MeterBarElement> MeterBarElement::create(Document* document)
     return adoptRef(new MeterBarElement(document));
 }
 
-class MeterValueElement : public MeterShadowElement {
+class MeterValueElement FINAL : public MeterShadowElement {
 public:
     MeterValueElement(Document* document) 
         : MeterShadowElement(document)
index 4dc7db2..06fde2f 100644 (file)
@@ -42,7 +42,7 @@ namespace WebCore {
 class HTMLInputElement;
 class PagePopup;
 
-class PickerIndicatorElement : public HTMLDivElement, public DateTimeChooserClient {
+class PickerIndicatorElement FINAL : public HTMLDivElement, public DateTimeChooserClient {
 public:
     // PickerIndicatorOwner implementer must call removePickerIndicatorOwner when
     // it doesn't handle event, e.g. at destruction.
index c3ec79a..1b71247 100644 (file)
@@ -49,7 +49,7 @@ protected:
     virtual bool rendererIsNeeded(const NodeRenderingContext&);
 };
 
-class ProgressInnerElement : public ProgressShadowElement {
+class ProgressInnerElement FINAL : public ProgressShadowElement {
 public:
     ProgressInnerElement(Document*);
 
@@ -59,7 +59,7 @@ private:
     virtual bool rendererIsNeeded(const NodeRenderingContext&);
 };
 
-class ProgressBarElement : public ProgressShadowElement {
+class ProgressBarElement FINAL : public ProgressShadowElement {
 public:
     ProgressBarElement(Document* document) 
         : ProgressShadowElement(document)
@@ -76,7 +76,7 @@ inline PassRefPtr<ProgressBarElement> ProgressBarElement::create(Document* docum
     return adoptRef(new ProgressBarElement(document));
 }
 
-class ProgressValueElement : public ProgressShadowElement {
+class ProgressValueElement FINAL : public ProgressShadowElement {
 public:
     ProgressValueElement(Document* document) 
         : ProgressShadowElement(document)
index b1460ec..8f94a56 100644 (file)
@@ -46,7 +46,7 @@ class HTMLInputElement;
 class Event;
 class FloatPoint;
 
-class SliderThumbElement : public HTMLDivElement {
+class SliderThumbElement FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<SliderThumbElement> create(Document*);
 
@@ -104,7 +104,7 @@ HTMLElement* sliderTrackElementOf(Node*);
 
 // --------------------------------
 
-class RenderSliderThumb : public RenderBlock {
+class RenderSliderThumb FINAL : public RenderBlock {
 public:
     RenderSliderThumb(SliderThumbElement*);
     void updateAppearance(RenderStyle* parentStyle);
@@ -115,7 +115,7 @@ private:
 
 // --------------------------------
 
-class SliderContainerElement : public HTMLDivElement {
+class SliderContainerElement FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<SliderContainerElement> create(Document*);
 
index b223440..c524355 100644 (file)
@@ -33,7 +33,7 @@
 
 namespace WebCore {
 
-class SpinButtonElement : public HTMLDivElement, public PopupOpeningObserver {
+class SpinButtonElement FINAL : public HTMLDivElement, public PopupOpeningObserver {
 public:
     enum UpDownState {
         Indeterminate, // Hovered, but the event is not handled.
index cadf4b3..7f36582 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
 
 class SpeechInput;
 
-class TextControlInnerContainer : public HTMLDivElement {
+class TextControlInnerContainer FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<TextControlInnerContainer> create(Document*);
 protected:
@@ -43,7 +43,7 @@ protected:
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 };
 
-class TextControlInnerElement : public HTMLDivElement {
+class TextControlInnerElement FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<TextControlInnerElement> create(Document*);
 
@@ -55,7 +55,7 @@ private:
     virtual bool isMouseFocusable() const { return false; }
 };
 
-class TextControlInnerTextElement : public HTMLDivElement {
+class TextControlInnerTextElement FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<TextControlInnerTextElement> create(Document*);
 
@@ -68,7 +68,7 @@ private:
     virtual bool isMouseFocusable() const { return false; }
 };
 
-class SearchFieldResultsButtonElement : public HTMLDivElement {
+class SearchFieldResultsButtonElement FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<SearchFieldResultsButtonElement> create(Document*);
 
@@ -81,7 +81,7 @@ private:
     virtual bool isMouseFocusable() const { return false; }
 };
 
-class SearchFieldCancelButtonElement : public HTMLDivElement {
+class SearchFieldCancelButtonElement FINAL : public HTMLDivElement {
 public:
     static PassRefPtr<SearchFieldCancelButtonElement> create(Document*);
 
@@ -99,7 +99,7 @@ private:
 
 #if ENABLE(INPUT_SPEECH)
 
-class InputFieldSpeechButtonElement
+class InputFieldSpeechButtonElement FINAL
     : public HTMLDivElement,
       public SpeechInputListener {
 public:
index 6578ab2..85cbcb4 100644 (file)
@@ -42,7 +42,7 @@
 
 namespace WebCore {
 
-class TextTrackCueGenericBoxElement : public TextTrackCueBox {
+class TextTrackCueGenericBoxElement FINAL : public TextTrackCueBox {
 public:
     static PassRefPtr<TextTrackCueGenericBoxElement> create(Document* document, TextTrackCueGeneric* cue)
     {
index 94a3f6b..753049c 100644 (file)
@@ -41,7 +41,7 @@ enum WebVTTNodeType {
     WebVTTNodeTypeVoice
 };
 
-class WebVTTElement : public Element {
+class WebVTTElement FINAL : public Element {
 public:
     static PassRefPtr<WebVTTElement> create(const WebVTTNodeType, Document*);
     static PassRefPtr<WebVTTElement> create(const QualifiedName&, Document*);
index 50152ff..76d9a83 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class SinkDocument : public HTMLDocument {
+class SinkDocument FINAL : public HTMLDocument {
 public:
     static PassRefPtr<SinkDocument> create(Frame* frame, const KURL& url)
     {
index 4a315dc..aea4cb7 100644 (file)
 
 namespace WebCore {
 
-class SVGAElement : public SVGStyledTransformableElement,
-                    public SVGURIReference,
-                    public SVGTests,
-                    public SVGLangSpace,
-                    public SVGExternalResourcesRequired {
+class SVGAElement FINAL : public SVGStyledTransformableElement,
+                          public SVGURIReference,
+                          public SVGTests,
+                          public SVGLangSpace,
+                          public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGAElement> create(const QualifiedName&, Document*);
 
index ed45a25..ced3a10 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGAltGlyphDefElement: public SVGElement {
+class SVGAltGlyphDefElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGAltGlyphDefElement> create(const QualifiedName&, Document*);
 
index 179ed77..a618391 100644 (file)
@@ -31,8 +31,8 @@ namespace WebCore {
 
 class SVGGlyphElement;
 
-class SVGAltGlyphElement : public SVGTextPositioningElement,
-                           public SVGURIReference {
+class SVGAltGlyphElement FINAL : public SVGTextPositioningElement,
+                                 public SVGURIReference {
 public:
     static PassRefPtr<SVGAltGlyphElement> create(const QualifiedName&, Document*);
 
index eaf5946..10dbab6 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGAltGlyphItemElement: public SVGElement {
+class SVGAltGlyphItemElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGAltGlyphItemElement> create(const QualifiedName&, Document*);
 
index 3b029c5..2cad4b3 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGAnimateColorElement : public SVGAnimateElement {
+class SVGAnimateColorElement FINAL : public SVGAnimateElement {
 public:
     static PassRefPtr<SVGAnimateColorElement> create(const QualifiedName&, Document*);
 
index bd1ef3e..42e4d13 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
             
-class SVGAnimateMotionElement : public SVGAnimationElement {
+class SVGAnimateMotionElement FINAL : public SVGAnimationElement {
 public:
     static PassRefPtr<SVGAnimateMotionElement> create(const QualifiedName&, Document*);
     void updateAnimationPath();
index e9735de..11e91ae 100644 (file)
@@ -31,7 +31,7 @@ namespace WebCore {
 
 class AffineTransform;
 
-class SVGAnimateTransformElement : public SVGAnimateElement {
+class SVGAnimateTransformElement FINAL : public SVGAnimateElement {
 public:
     static PassRefPtr<SVGAnimateTransformElement> create(const QualifiedName&, Document*);
 
index 34c969c..3d3421a 100644 (file)
 
 namespace WebCore {
 
-class SVGCircleElement : public SVGStyledTransformableElement,
-                         public SVGTests,
-                         public SVGLangSpace,
-                         public SVGExternalResourcesRequired {
+class SVGCircleElement FINAL : public SVGStyledTransformableElement,
+                               public SVGTests,
+                               public SVGLangSpace,
+                               public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGCircleElement> create(const QualifiedName&, Document*);
 
index 62e493f..dea5433 100644 (file)
@@ -34,10 +34,10 @@ namespace WebCore {
 
 class RenderObject;
 
-class SVGClipPathElement : public SVGStyledTransformableElement,
-                           public SVGTests,
-                           public SVGLangSpace,
-                           public SVGExternalResourcesRequired {
+class SVGClipPathElement FINAL : public SVGStyledTransformableElement,
+                                 public SVGTests,
+                                 public SVGLangSpace,
+                                 public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGClipPathElement> create(const QualifiedName&, Document*);
 
index 8e2d67f..a17ee36 100644 (file)
 
 namespace WebCore {
 
-class SVGCursorElement : public SVGElement,
-                         public SVGTests,
-                         public SVGExternalResourcesRequired,
-                         public SVGURIReference {
+class SVGCursorElement FINAL : public SVGElement,
+                               public SVGTests,
+                               public SVGExternalResourcesRequired,
+                               public SVGURIReference {
 public:
     static PassRefPtr<SVGCursorElement> create(const QualifiedName&, Document*);
 
index 22cc0e9..7c1541f 100644 (file)
 
 namespace WebCore {
 
-class SVGDefsElement : public SVGStyledTransformableElement,
-                       public SVGTests,
-                       public SVGLangSpace,
-                       public SVGExternalResourcesRequired {
+class SVGDefsElement FINAL : public SVGStyledTransformableElement,
+                             public SVGTests,
+                             public SVGLangSpace,
+                             public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGDefsElement> create(const QualifiedName&, Document*);
 
index eae767e..029d773 100644 (file)
@@ -27,8 +27,8 @@
 
 namespace WebCore {
 
-class SVGDescElement : public SVGStyledElement,
-                       public SVGLangSpace {
+class SVGDescElement FINAL : public SVGStyledElement,
+                             public SVGLangSpace {
 public:
     static PassRefPtr<SVGDescElement> create(const QualifiedName&, Document*);
 
index a5f9e85..b3c337a 100644 (file)
@@ -31,7 +31,7 @@ class DOMImplementation;
 class SVGElement;
 class SVGSVGElement;
 
-class SVGDocument : public Document {
+class SVGDocument FINAL : public Document {
 public:
     static PassRefPtr<SVGDocument> create(Frame* frame, const KURL& url)
     {
index 02669ae..8e92754 100644 (file)
 
 namespace WebCore {
 
-class SVGEllipseElement : public SVGStyledTransformableElement,
-                          public SVGTests,
-                          public SVGLangSpace,
-                          public SVGExternalResourcesRequired {
+class SVGEllipseElement FINAL : public SVGStyledTransformableElement,
+                                public SVGTests,
+                                public SVGLangSpace,
+                                public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGEllipseElement> create(const QualifiedName&, Document*);
 
index 73ab7fc..2a93aec 100644 (file)
@@ -69,7 +69,7 @@ struct SVGPropertyTraits<BlendModeType> {
     }
 };
 
-class SVGFEBlendElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEBlendElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEBlendElement> create(const QualifiedName&, Document*);
 
index b0f7151..8f3fbdb 100644 (file)
@@ -66,7 +66,7 @@ struct SVGPropertyTraits<ColorMatrixType> {
     }
 };
 
-class SVGFEColorMatrixElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEColorMatrixElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEColorMatrixElement> create(const QualifiedName&, Document*);
 
index 01d74d7..0f76e4e 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGFEComponentTransferElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEComponentTransferElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEComponentTransferElement> create(const QualifiedName&, Document*);
 
index 8c61f0e..10bfff9 100644 (file)
@@ -74,7 +74,7 @@ struct SVGPropertyTraits<CompositeOperationType> {
     }
 };
 
-class SVGFECompositeElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFECompositeElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFECompositeElement> create(const QualifiedName&, Document*);
 
index ae0b85e..3365449 100644 (file)
@@ -64,7 +64,7 @@ struct SVGPropertyTraits<EdgeModeType> {
     }
 };
 
-class SVGFEConvolveMatrixElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEConvolveMatrixElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEConvolveMatrixElement> create(const QualifiedName&, Document*);
 
index c1a9baa..4a373d8 100644 (file)
@@ -31,7 +31,7 @@ namespace WebCore {
 class FEDiffuseLighting;
 class SVGColor;
 
-class SVGFEDiffuseLightingElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEDiffuseLightingElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEDiffuseLightingElement> create(const QualifiedName&, Document*);
     void lightElementAttributeChanged(const SVGFELightElement*, const QualifiedName&);
index 2e74a1c..f910d75 100644 (file)
@@ -65,7 +65,7 @@ struct SVGPropertyTraits<ChannelSelectorType> {
     }
 };
 
-class SVGFEDisplacementMapElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEDisplacementMapElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEDisplacementMapElement> create(const QualifiedName&, Document*);
 
index 04964ac..5a20900 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class SVGFEDistantLightElement : public SVGFELightElement {
+class SVGFEDistantLightElement FINAL : public SVGFELightElement {
 public:
     static PassRefPtr<SVGFEDistantLightElement> create(const QualifiedName&, Document*);
 
index ca09df4..b8f28aa 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
     
-class SVGFEDropShadowElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEDropShadowElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEDropShadowElement> create(const QualifiedName&, Document*);
     
index 5d68d8a..ac4a1e6 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGFEFloodElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEFloodElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEFloodElement> create(const QualifiedName&, Document*);
 
index 26fcc23..4382baa 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGFEFuncAElement : public SVGComponentTransferFunctionElement {
+class SVGFEFuncAElement FINAL : public SVGComponentTransferFunctionElement {
 public:
     static PassRefPtr<SVGFEFuncAElement> create(const QualifiedName&, Document*);
 
index 83143db..7645600 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGFEFuncBElement : public SVGComponentTransferFunctionElement {
+class SVGFEFuncBElement FINAL : public SVGComponentTransferFunctionElement {
 public:
     static PassRefPtr<SVGFEFuncBElement> create(const QualifiedName&, Document*);
 
index 1c679b6..a0ed694 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGFEFuncGElement : public SVGComponentTransferFunctionElement {
+class SVGFEFuncGElement FINAL : public SVGComponentTransferFunctionElement {
 public:
     static PassRefPtr<SVGFEFuncGElement> create(const QualifiedName&, Document*);
 
index b3e651c..83d11f5 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGFEFuncRElement : public SVGComponentTransferFunctionElement {
+class SVGFEFuncRElement FINAL : public SVGComponentTransferFunctionElement {
 public:
     static PassRefPtr<SVGFEFuncRElement> create(const QualifiedName&, Document*);
 
index 86fc3d3..d43257f 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class SVGFEGaussianBlurElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEGaussianBlurElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEGaussianBlurElement> create(const QualifiedName&, Document*);
 
index 7c6d3e0..2282a58 100644 (file)
 
 namespace WebCore {
 
-class SVGFEImageElement : public SVGFilterPrimitiveStandardAttributes,
-                          public SVGURIReference,
-                          public SVGLangSpace,
-                          public SVGExternalResourcesRequired,
-                          public CachedImageClient {
+class SVGFEImageElement FINAL : public SVGFilterPrimitiveStandardAttributes,
+                                public SVGURIReference,
+                                public SVGLangSpace,
+                                public SVGExternalResourcesRequired,
+                                public CachedImageClient {
 public:
     static PassRefPtr<SVGFEImageElement> create(const QualifiedName&, Document*);
 
index 2495a56..3693409 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGFEMergeElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEMergeElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEMergeElement> create(const QualifiedName&, Document*);
 
index db43c4b..50b9ba2 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGFEMergeNodeElement : public SVGElement {
+class SVGFEMergeNodeElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGFEMergeNodeElement> create(const QualifiedName&, Document*);
 
index 68ad1b1..91af86e 100644 (file)
@@ -57,7 +57,7 @@ struct SVGPropertyTraits<MorphologyOperatorType> {
     }
 };
 
-class SVGFEMorphologyElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEMorphologyElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEMorphologyElement> create(const QualifiedName&, Document*);
 
index 8a214f3..76025d2 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace WebCore {
 
-class SVGFEOffsetElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFEOffsetElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFEOffsetElement> create(const QualifiedName&, Document*);
 
index a3f47e8..bf7a360 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class SVGFEPointLightElement : public SVGFELightElement {
+class SVGFEPointLightElement FINAL : public SVGFELightElement {
 public:
     static PassRefPtr<SVGFEPointLightElement> create(const QualifiedName&, Document*);
 
index 1a04269..87d2c19 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class SVGFESpecularLightingElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFESpecularLightingElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFESpecularLightingElement> create(const QualifiedName&, Document*);
     void lightElementAttributeChanged(const SVGFELightElement*, const QualifiedName&);
index fe1e73e..29c7d58 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class SVGFESpotLightElement : public SVGFELightElement {
+class SVGFESpotLightElement FINAL : public SVGFELightElement {
 public:
     static PassRefPtr<SVGFESpotLightElement> create(const QualifiedName&, Document*);
 
index aa001bb..94caa4a 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGFETileElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFETileElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFETileElement> create(const QualifiedName&, Document*);
 
index 4a9e7f5..1db0ff3 100644 (file)
@@ -94,7 +94,7 @@ struct SVGPropertyTraits<TurbulenceType> {
     }
 };
 
-class SVGFETurbulenceElement : public SVGFilterPrimitiveStandardAttributes {
+class SVGFETurbulenceElement FINAL : public SVGFilterPrimitiveStandardAttributes {
 public:
     static PassRefPtr<SVGFETurbulenceElement> create(const QualifiedName&, Document*);
 
index d3a5a1c..a3de414 100644 (file)
 
 namespace WebCore {
 
-class SVGFilterElement : public SVGStyledElement,
-                         public SVGURIReference,
-                         public SVGLangSpace,
-                         public SVGExternalResourcesRequired {
+class SVGFilterElement FINAL : public SVGStyledElement,
+                               public SVGURIReference,
+                               public SVGLangSpace,
+                               public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGFilterElement> create(const QualifiedName&, Document*);
 
index 849179e..ea802ed 100644 (file)
@@ -52,8 +52,8 @@ typedef Vector<SVGKerningPair> KerningPairVector;
 
 class SVGMissingGlyphElement;    
 
-class SVGFontElement : public SVGStyledElement
-                     , public SVGExternalResourcesRequired {
+class SVGFontElement FINAL : public SVGStyledElement
+                           , public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGFontElement> create(const QualifiedName&, Document*);
 
index 543f6d0..1f5bf21 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 class SVGFontElement;
 class StyleRuleFontFace;
 
-class SVGFontFaceElement : public SVGElement {
+class SVGFontFaceElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGFontFaceElement> create(const QualifiedName&, Document*);
 
index 6ca6c1f..9e61daa 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class SVGFontFaceFormatElement : public SVGElement {
+class SVGFontFaceFormatElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGFontFaceFormatElement> create(const QualifiedName&, Document*);
 
index e99d2d5..068d577 100644 (file)
@@ -27,7 +27,7 @@ namespace WebCore {
 
 class CSSFontFaceSrcValue;
 
-class SVGFontFaceNameElement : public SVGElement {
+class SVGFontFaceNameElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGFontFaceNameElement> create(const QualifiedName&, Document*);
     
index 5e27625..d2b1977 100644 (file)
@@ -27,7 +27,7 @@ namespace WebCore {
 
 class CSSValueList;
 
-class SVGFontFaceSrcElement : public SVGElement {
+class SVGFontFaceSrcElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGFontFaceSrcElement> create(const QualifiedName&, Document*);
 
index 6d003c7..1640c6a 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 class CSSFontFaceSrcValue;
 
-class SVGFontFaceUriElement : public SVGElement, public CachedFontClient {
+class SVGFontFaceUriElement FINAL : public SVGElement, public CachedFontClient {
 public:
     static PassRefPtr<SVGFontFaceUriElement> create(const QualifiedName&, Document*);
 
index ea7cff3..97df65e 100644 (file)
 
 namespace WebCore {
 
-class SVGForeignObjectElement : public SVGStyledTransformableElement,
-                                public SVGTests,
-                                public SVGLangSpace,
-                                public SVGExternalResourcesRequired {
+class SVGForeignObjectElement FINAL : public SVGStyledTransformableElement,
+                                      public SVGTests,
+                                      public SVGLangSpace,
+                                      public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGForeignObjectElement> create(const QualifiedName&, Document*);
 
index ca65fbf..33b20cc 100644 (file)
 
 namespace WebCore {
 
-class SVGGElement : public SVGStyledTransformableElement,
-                    public SVGTests,
-                    public SVGLangSpace,
-                    public SVGExternalResourcesRequired {
+class SVGGElement FINAL : public SVGStyledTransformableElement,
+                          public SVGTests,
+                          public SVGLangSpace,
+                          public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGGElement> create(const QualifiedName&, Document*);
 
index 56cc830..1b82a05 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class SVGFontData;
 
-class SVGGlyphElement : public SVGStyledElement {
+class SVGGlyphElement FINAL : public SVGStyledElement {
 public:
     static PassRefPtr<SVGGlyphElement> create(const QualifiedName&, Document*);
 
index 487bb95..e200e8f 100644 (file)
@@ -26,8 +26,8 @@
 
 namespace WebCore {
 
-class SVGGlyphRefElement: public SVGStyledElement,
-                          public SVGURIReference {
+class SVGGlyphRefElement FINAL : public SVGStyledElement,
+                                 public SVGURIReference {
 public:
     static PassRefPtr<SVGGlyphRefElement> create(const QualifiedName&, Document*);
 
index 376e025..40bee19 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGHKernElement : public SVGElement {
+class SVGHKernElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGHKernElement> create(const QualifiedName&, Document*);
 
index de7a64a..f80df1f 100644 (file)
 
 namespace WebCore {
 
-class SVGImageElement : public SVGStyledTransformableElement,
-                        public SVGTests,
-                        public SVGLangSpace,
-                        public SVGExternalResourcesRequired,
-                        public SVGURIReference {
+class SVGImageElement FINAL : public SVGStyledTransformableElement,
+                              public SVGTests,
+                              public SVGLangSpace,
+                              public SVGExternalResourcesRequired,
+                              public SVGURIReference {
 public:
     static PassRefPtr<SVGImageElement> create(const QualifiedName&, Document*);
 
index 4ee1b4b..65ca85f 100644 (file)
 
 namespace WebCore {
 
-class SVGLineElement : public SVGStyledTransformableElement,
-                       public SVGTests,
-                       public SVGLangSpace,
-                       public SVGExternalResourcesRequired {
+class SVGLineElement FINAL : public SVGStyledTransformableElement,
+                             public SVGTests,
+                             public SVGLangSpace,
+                             public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGLineElement> create(const QualifiedName&, Document*);
 
index afbbf3e..ab11bda 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 struct LinearGradientAttributes;
 
-class SVGLinearGradientElement : public SVGGradientElement {
+class SVGLinearGradientElement FINAL : public SVGGradientElement {
 public:
     static PassRefPtr<SVGLinearGradientElement> create(const QualifiedName&, Document*);
 
index 3ebd3c7..808447a 100644 (file)
@@ -31,9 +31,9 @@ namespace WebCore {
     
 class SVGPathElement;
 
-class SVGMPathElement : public SVGElement,
-                        public SVGURIReference,
-                        public SVGExternalResourcesRequired {
+class SVGMPathElement FINAL : public SVGElement,
+                              public SVGURIReference,
+                              public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGMPathElement> create(const QualifiedName&, Document*);
 
index 972dd69..ef04a06 100644 (file)
@@ -95,10 +95,10 @@ struct SVGPropertyTraits<SVGMarkerOrientType> {
     }
 };
 
-class SVGMarkerElement : public SVGStyledElement,
-                         public SVGLangSpace,
-                         public SVGExternalResourcesRequired,
-                         public SVGFitToViewBox {
+class SVGMarkerElement FINAL : public SVGStyledElement,
+                               public SVGLangSpace,
+                               public SVGExternalResourcesRequired,
+                               public SVGFitToViewBox {
 public:
     // Forward declare enumerations in the W3C naming scheme, for IDL generation.
     enum {
index f2bb902..da594f0 100644 (file)
 
 namespace WebCore {
 
-class SVGMaskElement : public SVGStyledElement,
-                       public SVGTests,
-                       public SVGLangSpace,
-                       public SVGExternalResourcesRequired {
+class SVGMaskElement FINAL : public SVGStyledElement,
+                             public SVGTests,
+                             public SVGLangSpace,
+                             public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGMaskElement> create(const QualifiedName&, Document*);
 
index 8fdbfb4..7ec6d54 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGMetadataElement : public SVGElement {
+class SVGMetadataElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGMetadataElement> create(const QualifiedName&, Document*);
 
index d726c0d..66def73 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace WebCore {
 
-class SVGMissingGlyphElement : public SVGStyledElement {
+class SVGMissingGlyphElement FINAL : public SVGStyledElement {
 public:
     static PassRefPtr<SVGMissingGlyphElement> create(const QualifiedName&, Document*);
 
index 4e2be07..cddd883 100644 (file)
@@ -55,10 +55,10 @@ class SVGPathSegCurvetoQuadraticSmoothAbs;
 class SVGPathSegCurvetoQuadraticSmoothRel;
 class SVGPathSegListPropertyTearOff;
 
-class SVGPathElement : public SVGStyledTransformableElement,
-                       public SVGTests,
-                       public SVGLangSpace,
-                       public SVGExternalResourcesRequired {
+class SVGPathElement FINAL : public SVGStyledTransformableElement,
+                             public SVGTests,
+                             public SVGLangSpace,
+                             public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGPathElement> create(const QualifiedName&, Document*);
     
index bd96f07..6db6281 100644 (file)
@@ -40,12 +40,12 @@ namespace WebCore {
 
 struct PatternAttributes;
  
-class SVGPatternElement : public SVGStyledElement,
-                          public SVGURIReference,
-                          public SVGTests,
-                          public SVGLangSpace,
-                          public SVGExternalResourcesRequired,
-                          public SVGFitToViewBox {
+class SVGPatternElement FINAL : public SVGStyledElement,
+                                public SVGURIReference,
+                                public SVGTests,
+                                public SVGLangSpace,
+                                public SVGExternalResourcesRequired,
+                                public SVGFitToViewBox {
 public:
     static PassRefPtr<SVGPatternElement> create(const QualifiedName&, Document*);
 
index ddb1be7..8687a13 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGPolygonElement : public SVGPolyElement {
+class SVGPolygonElement FINAL : public SVGPolyElement {
 public:
     static PassRefPtr<SVGPolygonElement> create(const QualifiedName&, Document*);
 
index 68cb655..1293313 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGPolylineElement : public SVGPolyElement {
+class SVGPolylineElement FINAL : public SVGPolyElement {
 public:
     static PassRefPtr<SVGPolylineElement> create(const QualifiedName&, Document*);
 
index ff80d95..ad8f515 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 struct RadialGradientAttributes;
 
-class SVGRadialGradientElement : public SVGGradientElement {
+class SVGRadialGradientElement FINAL : public SVGGradientElement {
 public:
     static PassRefPtr<SVGRadialGradientElement> create(const QualifiedName&, Document*);
 
index 0f66b43..ea1c926 100644 (file)
 
 namespace WebCore {
 
-class SVGRectElement : public SVGStyledTransformableElement,
-                       public SVGTests,
-                       public SVGLangSpace,
-                       public SVGExternalResourcesRequired {
+class SVGRectElement FINAL : public SVGStyledTransformableElement,
+                             public SVGTests,
+                             public SVGLangSpace,
+                             public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGRectElement> create(const QualifiedName&, Document*);
 
index 3dc41e2..d3ebb05 100644 (file)
@@ -42,12 +42,12 @@ class SVGViewSpec;
 class SVGViewElement;
 class SMILTimeContainer;
 
-class SVGSVGElement : public SVGStyledTransformableElement,
-                      public SVGTests,
-                      public SVGLangSpace,
-                      public SVGExternalResourcesRequired,
-                      public SVGFitToViewBox,
-                      public SVGZoomAndPan {
+class SVGSVGElement FINAL : public SVGStyledTransformableElement,
+                            public SVGTests,
+                            public SVGLangSpace,
+                            public SVGExternalResourcesRequired,
+                            public SVGFitToViewBox,
+                            public SVGZoomAndPan {
 public:
     static PassRefPtr<SVGSVGElement> create(const QualifiedName&, Document*);
 
index 44612bc..feeb06f 100644 (file)
 
 namespace WebCore {
 
-class SVGScriptElement : public SVGElement
-                       , public SVGURIReference
-                       , public SVGExternalResourcesRequired
-                       , public ScriptElement {
+class SVGScriptElement FINAL : public SVGElement
+                             , public SVGURIReference
+                             , public SVGExternalResourcesRequired
+                             , public ScriptElement {
 public:
     static PassRefPtr<SVGScriptElement> create(const QualifiedName&, Document*, bool wasInsertedByParser);
 
index 7bc4438..251d80d 100644 (file)
@@ -27,7 +27,7 @@
 namespace WebCore {
 
 // SVGAnimateElement implements superset of the functionality.
-class SVGSetElement : public SVGAnimateElement {
+class SVGSetElement FINAL : public SVGAnimateElement {
 public:
     static PassRefPtr<SVGSetElement> create(const QualifiedName&, Document*);
 
index af6d8b7..e996a2c 100644 (file)
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class SVGStopElement : public SVGStyledElement {
+class SVGStopElement FINAL : public SVGStyledElement {
 public:
     static PassRefPtr<SVGStopElement> create(const QualifiedName&, Document*);
 
index 8171f4e..c9d236b 100644 (file)
@@ -28,9 +28,9 @@
 
 namespace WebCore {
 
-class SVGStyleElement : public SVGElement
-                      , public SVGLangSpace
-                      , public StyleElement {
+class SVGStyleElement FINAL : public SVGElement
+                            , public SVGLangSpace
+                            , public StyleElement {
 public:
     static PassRefPtr<SVGStyleElement> create(const QualifiedName&, Document*, bool createdByParser);
     virtual ~SVGStyleElement();
index a12b2c2..d402a0a 100644 (file)
@@ -38,7 +38,7 @@ class CSSStyleDeclaration;
 // FIXME(webkit.org/b/107386): SVGStyledElement should be merged into SVGElement as specified by SVG2.
 class SVGStyledElement : public SVGElement {
 public:
-    virtual String title() const;
+    virtual String title() const OVERRIDE;
 
     bool hasRelativeLengths() const { return !m_elementsWithRelativeLengths.isEmpty(); }
 
@@ -56,7 +56,6 @@ public:
 
     virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope) const;
 
-    virtual CSSStyleDeclaration* style() { return StyledElement::style(); }
     virtual bool needsPendingResourceHandling() const { return true; }
 
 protected: 
@@ -79,7 +78,7 @@ protected:
     virtual bool selfHasRelativeLengths() const { return false; }
 
 private:
-    virtual bool isSVGStyledElement() const OVERRIDE { return true; }
+    virtual bool isSVGStyledElement() const OVERRIDE FINAL { return true; }
 
     virtual bool isKeyboardFocusable(KeyboardEvent*) const;
     virtual bool isMouseFocusable() const;
index 1bf7e6c..7b5c34d 100644 (file)
 
 namespace WebCore {
 
-class SVGSwitchElement : public SVGStyledTransformableElement,
-                         public SVGTests,
-                         public SVGLangSpace,
-                         public SVGExternalResourcesRequired {
+class SVGSwitchElement FINAL : public SVGStyledTransformableElement,
+                               public SVGTests,
+                               public SVGLangSpace,
+                               public SVGExternalResourcesRequired {
 public:
     static PassRefPtr<SVGSwitchElement> create(const QualifiedName&, Document*);
 
index 013ae1c..ecdcdfa 100644 (file)
 
 namespace WebCore {
 
-class SVGSymbolElement : public SVGStyledElement,
-                         public SVGLangSpace,
-                         public SVGExternalResourcesRequired,
-                         public SVGFitToViewBox {
+class SVGSymbolElement FINAL : public SVGStyledElement,
+                               public SVGLangSpace,
+                               public SVGExternalResourcesRequired,
+                               public SVGFitToViewBox {
 public:
     static PassRefPtr<SVGSymbolElement> create(const QualifiedName&, Document*);
 
index 7224287..2801ba5 100644 (file)
@@ -29,8 +29,8 @@ namespace WebCore {
 
 class SVGTRefTargetEventListener;
 
-class SVGTRefElement : public SVGTextPositioningElement,
-                       public SVGURIReference {
+class SVGTRefElement FINAL : public SVGTextPositioningElement,
+                             public SVGURIReference {
 public:
     static PassRefPtr<SVGTRefElement> create(const QualifiedName&, Document*);
 
index 5ebab44..7f7b10f 100644 (file)
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-class SVGTSpanElement : public SVGTextPositioningElement {
+class SVGTSpanElement FINAL : public SVGTextPositioningElement {
 public:
     static PassRefPtr<SVGTSpanElement> create(const QualifiedName&, Document*);
 
index 9326505..fae57e2 100644 (file)
@@ -28,8 +28,8 @@
 
 namespace WebCore {
 
-class SVGTextElement : public SVGTextPositioningElement,
-                       public SVGTransformable {
+class SVGTextElement FINAL : public SVGTextPositioningElement,
+                             public SVGTransformable {
 public:
     static PassRefPtr<SVGTextElement> create(const QualifiedName&, Document*);
 
index 00eb5be..bd95819 100644 (file)
@@ -97,8 +97,8 @@ struct SVGPropertyTraits<SVGTextPathSpacingType> {
     }
 };
 
-class SVGTextPathElement : public SVGTextContentElement,
-                           public SVGURIReference {
+class SVGTextPathElement FINAL : public SVGTextContentElement,
+                                 public SVGURIReference {
 public:
     // Forward declare enumerations in the W3C naming scheme, for IDL generation.
     enum {
index fdbdb7c..8da00a1 100644 (file)
@@ -27,8 +27,8 @@
 
 namespace WebCore {
 
-class SVGTitleElement : public SVGStyledElement,
-                        public SVGLangSpace {
+class SVGTitleElement FINAL : public SVGStyledElement,
+                              public SVGLangSpace {
 public:
     static PassRefPtr<SVGTitleElement> create(const QualifiedName&, Document*);
 
index 4046ef6..0fd0c8c 100644 (file)
@@ -37,12 +37,12 @@ namespace WebCore {
 class CachedSVGDocument;
 class SVGElementInstance;
 
-class SVGUseElement : public SVGStyledTransformableElement,
-                      public SVGTests,
-                      public SVGLangSpace,
-                      public SVGExternalResourcesRequired,
-                      public SVGURIReference,
-                      public CachedSVGDocumentClient {
+class SVGUseElement FINAL : public SVGStyledTransformableElement,
+                            public SVGTests,
+                            public SVGLangSpace,
+                            public SVGExternalResourcesRequired,
+                            public SVGURIReference,
+                            public CachedSVGDocumentClient {
 public:
     static PassRefPtr<SVGUseElement> create(const QualifiedName&, Document*, bool wasInsertedByParser);
     virtual ~SVGUseElement();
index b3df0fc..94eeee5 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class SVGVKernElement : public SVGElement {
+class SVGVKernElement FINAL : public SVGElement {
 public:
     static PassRefPtr<SVGVKernElement> create(const QualifiedName&, Document*);
 
index 1ca9c50..cdce388 100644 (file)
 
 namespace WebCore {
 
-class SVGViewElement : public SVGStyledElement,
-                       public SVGExternalResourcesRequired,
-                       public SVGFitToViewBox,
-                       public SVGZoomAndPan {
+class SVGViewElement FINAL : public SVGStyledElement,
+                             public SVGExternalResourcesRequired,
+                             public SVGFitToViewBox,
+                             public SVGZoomAndPan {
 public:
     static PassRefPtr<SVGViewElement> create(const QualifiedName&, Document*);