Clean up virtual functions in dom/
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Oct 2014 23:26:01 +0000 (23:26 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Oct 2014 23:26:01 +0000 (23:26 +0000)
https://bugs.webkit.org/show_bug.cgi?id=138019

Reviewed by Benjamin Poulain.

Clean up virtual functions in dom/ by:
- Making virtual functions final when possible
- Making classes final when possible
- Using 'override' when appropriate
- Explicitly marking functions / destructors as virtual when they are
  inherently virtual
- Making isXXX() virtual functions private on XXX classes to avoid
  unnecessary type checks
- Dropping final for virtual functions in classes already marked as
  final

No new tests, no behavior change.

* WebCore.exp.in:
* dom/AutocompleteErrorEvent.h:
* dom/BeforeLoadEvent.h:
(WebCore::BeforeLoadEventInit::BeforeLoadEventInit):
* dom/BeforeTextInsertedEvent.h:
* dom/ClipboardEvent.h:
* dom/CompositionEvent.h:
* dom/CustomEvent.h:
* dom/DeviceMotionController.h:
(WebCore::DeviceMotionController::~DeviceMotionController): Deleted.
* dom/DeviceMotionEvent.h:
* dom/DeviceOrientationController.h:
(WebCore::DeviceOrientationController::~DeviceOrientationController): Deleted.
* dom/DeviceOrientationEvent.h:
* dom/Document.h:
* dom/DocumentFragment.h:
* dom/ErrorEvent.h:
* dom/FocusEvent.h:
* dom/HashChangeEvent.h:
* dom/KeyboardEvent.h:
* dom/LiveNodeList.h:
* dom/MessageEvent.h:
* dom/MessagePort.h:
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.h:
* dom/NamedFlowCollection.h:
* dom/OverflowEvent.h:
* dom/PageTransitionEvent.h:
* dom/PendingScript.h:
* dom/PopStateEvent.h:
* dom/RawDataDocumentParser.h:
(WebCore::RawDataDocumentParser::finish): Deleted.
(WebCore::RawDataDocumentParser::flush): Deleted.
(WebCore::RawDataDocumentParser::insert): Deleted.
(WebCore::RawDataDocumentParser::append): Deleted.
* dom/ScriptableDocumentParser.h:
* dom/SecurityPolicyViolationEvent.h:
* dom/TextEvent.h:
* dom/TouchEvent.h:
* dom/TransitionEvent.h:
* dom/UIEvent.h:
* dom/WebKitAnimationEvent.h:
* dom/WebKitTransitionEvent.h:
* dom/WheelEvent.h:
* page/DeviceController.h:
(WebCore::DeviceController::~DeviceController):

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

41 files changed:
Source/WebCore/ChangeLog
Source/WebCore/WebCore.exp.in
Source/WebCore/dom/AutocompleteErrorEvent.h
Source/WebCore/dom/BeforeLoadEvent.h
Source/WebCore/dom/BeforeTextInsertedEvent.h
Source/WebCore/dom/ClipboardEvent.h
Source/WebCore/dom/CompositionEvent.h
Source/WebCore/dom/CustomEvent.h
Source/WebCore/dom/DeviceMotionController.h
Source/WebCore/dom/DeviceMotionEvent.h
Source/WebCore/dom/DeviceOrientationController.h
Source/WebCore/dom/DeviceOrientationEvent.h
Source/WebCore/dom/Document.h
Source/WebCore/dom/DocumentFragment.h
Source/WebCore/dom/ErrorEvent.h
Source/WebCore/dom/FocusEvent.h
Source/WebCore/dom/HashChangeEvent.h
Source/WebCore/dom/KeyboardEvent.h
Source/WebCore/dom/LiveNodeList.h
Source/WebCore/dom/MessageEvent.h
Source/WebCore/dom/MessagePort.h
Source/WebCore/dom/MouseEvent.h
Source/WebCore/dom/MouseRelatedEvent.h
Source/WebCore/dom/MutationEvent.h
Source/WebCore/dom/NamedFlowCollection.h
Source/WebCore/dom/OverflowEvent.h
Source/WebCore/dom/PageTransitionEvent.h
Source/WebCore/dom/PendingScript.h
Source/WebCore/dom/PopStateEvent.h
Source/WebCore/dom/RawDataDocumentParser.h
Source/WebCore/dom/ScriptableDocumentParser.h
Source/WebCore/dom/SecurityPolicyViolationEvent.h
Source/WebCore/dom/TextEvent.h
Source/WebCore/dom/TouchEvent.h
Source/WebCore/dom/TransitionEvent.h
Source/WebCore/dom/UIEvent.h
Source/WebCore/dom/WebKitAnimationEvent.h
Source/WebCore/dom/WebKitTransitionEvent.h
Source/WebCore/dom/WheelEvent.h
Source/WebCore/page/DeviceController.h
Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in

index 2bc341a..9105c68 100644 (file)
@@ -1,3 +1,71 @@
+2014-10-23  Chris Dumez  <cdumez@apple.com>
+
+        Clean up virtual functions in dom/
+        https://bugs.webkit.org/show_bug.cgi?id=138019
+
+        Reviewed by Benjamin Poulain.
+
+        Clean up virtual functions in dom/ by:
+        - Making virtual functions final when possible
+        - Making classes final when possible
+        - Using 'override' when appropriate
+        - Explicitly marking functions / destructors as virtual when they are
+          inherently virtual
+        - Making isXXX() virtual functions private on XXX classes to avoid
+          unnecessary type checks
+        - Dropping final for virtual functions in classes already marked as
+          final
+
+        No new tests, no behavior change.
+
+        * WebCore.exp.in:
+        * dom/AutocompleteErrorEvent.h:
+        * dom/BeforeLoadEvent.h:
+        (WebCore::BeforeLoadEventInit::BeforeLoadEventInit):
+        * dom/BeforeTextInsertedEvent.h:
+        * dom/ClipboardEvent.h:
+        * dom/CompositionEvent.h:
+        * dom/CustomEvent.h:
+        * dom/DeviceMotionController.h:
+        (WebCore::DeviceMotionController::~DeviceMotionController): Deleted.
+        * dom/DeviceMotionEvent.h:
+        * dom/DeviceOrientationController.h:
+        (WebCore::DeviceOrientationController::~DeviceOrientationController): Deleted.
+        * dom/DeviceOrientationEvent.h:
+        * dom/Document.h:
+        * dom/DocumentFragment.h:
+        * dom/ErrorEvent.h:
+        * dom/FocusEvent.h:
+        * dom/HashChangeEvent.h:
+        * dom/KeyboardEvent.h:
+        * dom/LiveNodeList.h:
+        * dom/MessageEvent.h:
+        * dom/MessagePort.h:
+        * dom/MouseEvent.h:
+        * dom/MouseRelatedEvent.h:
+        * dom/MutationEvent.h:
+        * dom/NamedFlowCollection.h:
+        * dom/OverflowEvent.h:
+        * dom/PageTransitionEvent.h:
+        * dom/PendingScript.h:
+        * dom/PopStateEvent.h:
+        * dom/RawDataDocumentParser.h:
+        (WebCore::RawDataDocumentParser::finish): Deleted.
+        (WebCore::RawDataDocumentParser::flush): Deleted.
+        (WebCore::RawDataDocumentParser::insert): Deleted.
+        (WebCore::RawDataDocumentParser::append): Deleted.
+        * dom/ScriptableDocumentParser.h:
+        * dom/SecurityPolicyViolationEvent.h:
+        * dom/TextEvent.h:
+        * dom/TouchEvent.h:
+        * dom/TransitionEvent.h:
+        * dom/UIEvent.h:
+        * dom/WebKitAnimationEvent.h:
+        * dom/WebKitTransitionEvent.h:
+        * dom/WheelEvent.h:
+        * page/DeviceController.h:
+        (WebCore::DeviceController::~DeviceController):
+
 2014-10-23  Tim Horton  <timothy_horton@apple.com>
 
         Add some SPI headers for NSExtension and NSSharingService{Picker}
index 27da90d..eef5dd3 100644 (file)
@@ -2017,6 +2017,7 @@ __ZNK7WebCore8Document4viewEv
 __ZNK7WebCore8Document6domainEv
 __ZNK7WebCore8Document6loaderEv
 __ZNK7WebCore8Document8settingsEv
+__ZNK7WebCore8Document9topOriginEv
 __ZNK7WebCore8IntPointcv7CGPointEv
 __ZNK7WebCore8Position10downstreamENS_27EditingBoundaryCrossingRuleE
 __ZNK7WebCore8Position13containerNodeEv
index 4617655..493eb4f 100644 (file)
@@ -36,7 +36,7 @@ struct AutocompleteErrorEventInit : public EventInit {
     String reason;
 };
 
-class AutocompleteErrorEvent : public Event {
+class AutocompleteErrorEvent final : public Event {
 public:
     static PassRefPtr<AutocompleteErrorEvent> create()
     {
index 2a19e7b..79373df 100644 (file)
@@ -35,12 +35,12 @@ namespace WebCore {
 struct BeforeLoadEventInit : public EventInit {
     BeforeLoadEventInit()
     {
-    };
+    }
 
     String url;
 };
 
-class BeforeLoadEvent : public Event {
+class BeforeLoadEvent final : public Event {
 public:
     static PassRefPtr<BeforeLoadEvent> create()
     {
index 7542035..1e4b35d 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class BeforeTextInsertedEvent : public Event {
+class BeforeTextInsertedEvent final : public Event {
 public:
     virtual ~BeforeTextInsertedEvent();
 
@@ -40,13 +40,13 @@ public:
     }
 
     virtual EventInterface eventInterface() const override;
-    virtual bool isBeforeTextInsertedEvent() const override { return true; }
 
     const String& text() const { return m_text; }
     void setText(const String& s) { m_text = s; }
 
 private:
     explicit BeforeTextInsertedEvent(const String&);
+    virtual bool isBeforeTextInsertedEvent() const override { return true; }
 
     String m_text;
 };
index 0170b44..db84c43 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
     class DataTransfer;
 
-    class ClipboardEvent : public Event {
+    class ClipboardEvent final : public Event {
     public:
         virtual ~ClipboardEvent();
 
index faa22dd..fd1dd96 100644 (file)
@@ -37,7 +37,7 @@ struct CompositionEventInit : UIEventInit {
     String data;
 };
 
-class CompositionEvent : public UIEvent {
+class CompositionEvent final : public UIEvent {
 public:
     static PassRefPtr<CompositionEvent> create()
     {
index 75e12de..a3ae28b 100644 (file)
@@ -38,7 +38,7 @@ struct CustomEventInit : public EventInit {
     Deprecated::ScriptValue detail;
 };
 
-class CustomEvent : public Event {
+class CustomEvent final : public Event {
 public:
     virtual ~CustomEvent();
 
@@ -54,7 +54,7 @@ public:
 
     void initCustomEvent(const AtomicString& type, bool canBubble, bool cancelable, const Deprecated::ScriptValue& detail);
 
-    virtual EventInterface eventInterface() const;
+    virtual EventInterface eventInterface() const override;
 
     const Deprecated::ScriptValue& detail() const { return m_detail; }
     PassRefPtr<SerializedScriptValue> serializedScriptValue() { return m_serializedScriptValue; }
index ed2c57f..7d72d51 100644 (file)
@@ -35,11 +35,11 @@ namespace WebCore {
 class DeviceMotionClient;
 class DeviceMotionData;
 
-class DeviceMotionController : public DeviceController {
+class DeviceMotionController final : public DeviceController {
     WTF_MAKE_NONCOPYABLE(DeviceMotionController);
 public:
     explicit DeviceMotionController(DeviceMotionClient*);
-    ~DeviceMotionController() { };
+    virtual ~DeviceMotionController() { }
 
 #if PLATFORM(IOS)
     // FIXME: We should look to reconcile the iOS and OpenSource differences with this class
index f708022..f78a29e 100644 (file)
@@ -32,9 +32,9 @@ namespace WebCore {
 
 class DeviceMotionData;
 
-class DeviceMotionEvent : public Event {
+class DeviceMotionEvent final : public Event {
 public:
-    ~DeviceMotionEvent();
+    virtual ~DeviceMotionEvent();
     static PassRefPtr<DeviceMotionEvent> create()
     {
         return adoptRef(new DeviceMotionEvent);
index 09fc0dd..1183063 100644 (file)
@@ -37,11 +37,11 @@ class DeviceOrientationClient;
 class DeviceOrientationData;
 class Page;
 
-class DeviceOrientationController : public DeviceController {
+class DeviceOrientationController final : public DeviceController {
     WTF_MAKE_NONCOPYABLE(DeviceOrientationController);
 public:
     explicit DeviceOrientationController(DeviceOrientationClient*);
-    ~DeviceOrientationController() { };
+    virtual ~DeviceOrientationController() { }
 
     void didChangeDeviceOrientation(DeviceOrientationData*);
     DeviceOrientationClient* deviceOrientationClient();
index d69ddbf..2e7d941 100644 (file)
@@ -32,9 +32,9 @@ namespace WebCore {
 
 class DeviceOrientationData;
 
-class DeviceOrientationEvent : public Event {
+class DeviceOrientationEvent final : public Event {
 public:
-    ~DeviceOrientationEvent();
+    virtual ~DeviceOrientationEvent();
     static PassRefPtr<DeviceOrientationEvent> create()
     {
         return adoptRef(new DeviceOrientationEvent);
index c1ac51b..fe6591c 100644 (file)
@@ -307,7 +307,7 @@ public:
     using ContainerNode::ref;
     using ContainerNode::deref;
 
-    virtual bool canContainRangeEndPoint() const override { return true; }
+    virtual bool canContainRangeEndPoint() const override final { return true; }
 
     Element* getElementByAccessKey(const String& key);
     void invalidateAccessKeyMap();
@@ -483,7 +483,7 @@ public:
     String documentURI() const { return m_documentURI; }
     void setDocumentURI(const String&);
 
-    virtual URL baseURI() const override;
+    virtual URL baseURI() const override final;
 
 #if ENABLE(WEB_REPLAY)
     JSC::InputCursor& inputCursor() const { return *m_inputCursor; }
@@ -624,9 +624,9 @@ public:
     void prepareForDestruction();
 
     // Override ScriptExecutionContext methods to do additional work
-    virtual void suspendActiveDOMObjects(ActiveDOMObject::ReasonForSuspension) override;
-    virtual void resumeActiveDOMObjects(ActiveDOMObject::ReasonForSuspension) override;
-    virtual void stopActiveDOMObjects() override;
+    virtual void suspendActiveDOMObjects(ActiveDOMObject::ReasonForSuspension) override final;
+    virtual void resumeActiveDOMObjects(ActiveDOMObject::ReasonForSuspension) override final;
+    virtual void stopActiveDOMObjects() override final;
 
     RenderView* renderView() const { return m_renderView.get(); }
 
@@ -678,9 +678,9 @@ public:
     WEBCORE_EXPORT virtual URL completeURL(const String&) const override final;
     URL completeURL(const String&, const URL& baseURLOverride) const;
 
-    virtual String userAgent(const URL&) const override;
+    virtual String userAgent(const URL&) const override final;
 
-    virtual void disableEval(const String& errorMessage) override;
+    virtual void disableEval(const String& errorMessage) override final;
 
     bool canNavigate(Frame* targetFrame);
     Frame* findUnsafeParentScrollPropagationBoundary();
@@ -1015,11 +1015,11 @@ public:
     bool isDNSPrefetchEnabled() const { return m_isDNSPrefetchEnabled; }
     void parseDNSPrefetchControlHeader(const String&);
 
-    virtual void postTask(Task) override; // Executes the task on context's thread asynchronously.
+    virtual void postTask(Task) override final; // Executes the task on context's thread asynchronously.
 
     void suspendScriptedAnimationControllerCallbacks();
     void resumeScriptedAnimationControllerCallbacks();
-    virtual void scriptedAnimationControllerSetThrottled(bool);
+    void scriptedAnimationControllerSetThrottled(bool);
     
     void windowScreenDidChange(PlatformDisplayID);
 
@@ -1091,7 +1091,7 @@ public:
     void setAnnotatedRegions(const Vector<AnnotatedRegionValue>&);
 #endif
 
-    virtual void removeAllEventListeners() override;
+    virtual void removeAllEventListeners() override final;
 
     WEBCORE_EXPORT const SVGDocumentExtensions* svgExtensions();
     WEBCORE_EXPORT SVGDocumentExtensions& accessSVGExtensions();
@@ -1105,8 +1105,8 @@ public:
     bool processingLoadEvent() const { return m_processingLoadEvent; }
     bool loadEventFinished() const { return m_loadEventFinished; }
 
-    virtual bool isContextThread() const override;
-    virtual bool isJSExecutionForbidden() const override { return false; }
+    virtual bool isContextThread() const override final;
+    virtual bool isJSExecutionForbidden() const override final { return false; }
 
     bool containsValidityStyleRules() const { return m_containsValidityStyleRules; }
     void setContainsValidityStyleRules() { m_containsValidityStyleRules = true; }
@@ -1117,7 +1117,7 @@ public:
     void enqueuePageshowEvent(PageshowEventPersistence);
     void enqueueHashchangeEvent(const String& oldURL, const String& newURL);
     void enqueuePopstateEvent(PassRefPtr<SerializedScriptValue> stateObject);
-    virtual DocumentEventQueue& eventQueue() const override { return m_eventQueue; }
+    virtual DocumentEventQueue& eventQueue() const override final { return m_eventQueue; }
 
     WEBCORE_EXPORT void addMediaCanStartListener(MediaCanStartListener*);
     WEBCORE_EXPORT void removeMediaCanStartListener(MediaCanStartListener*);
@@ -1191,8 +1191,8 @@ public:
 
     void sendWillRevealEdgeEventsIfNeeded(const IntPoint& oldPosition, const IntPoint& newPosition, const IntRect& visibleRect, const IntSize& contentsSize, Element* target = nullptr);
 
-    virtual EventTarget* errorEventTarget() override;
-    virtual void logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr<Inspector::ScriptCallStack>) override;
+    virtual EventTarget* errorEventTarget() override final;
+    virtual void logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr<Inspector::ScriptCallStack>) override final;
 
     void initDNSPrefetch();
 
@@ -1267,9 +1267,9 @@ public:
     void addDisabledFieldsetElement() { m_disabledFieldsetElementsCount++; }
     void removeDisabledFieldsetElement() { ASSERT(m_disabledFieldsetElementsCount); m_disabledFieldsetElementsCount--; }
 
-    virtual void addConsoleMessage(MessageSource, MessageLevel, const String& message, unsigned long requestIdentifier = 0) override;
+    virtual void addConsoleMessage(MessageSource, MessageLevel, const String& message, unsigned long requestIdentifier = 0) override final;
 
-    virtual SecurityOrigin* topOrigin() const override;
+    virtual SecurityOrigin* topOrigin() const override final;
 
 #if ENABLE(FONT_LOAD_EVENTS)
     PassRefPtr<FontLoader> fonts();
@@ -1280,8 +1280,8 @@ public:
     void setVisualUpdatesAllowedByClient(bool);
 
 #if ENABLE(SUBTLE_CRYPTO)
-    virtual bool wrapCryptoKey(const Vector<uint8_t>& key, Vector<uint8_t>& wrappedKey) override;
-    virtual bool unwrapCryptoKey(const Vector<uint8_t>& wrappedKey, Vector<uint8_t>& key) override;
+    virtual bool wrapCryptoKey(const Vector<uint8_t>& key, Vector<uint8_t>& wrappedKey) override final;
+    virtual bool unwrapCryptoKey(const Vector<uint8_t>& wrappedKey, Vector<uint8_t>& key) override final;
 #endif
 
     void setHasStyleWithViewportUnits() { m_hasStyleWithViewportUnits = true; }
@@ -1318,24 +1318,24 @@ private:
     typedef void (*ArgumentsCallback)(const String& keyString, const String& valueString, Document*, void* data);
     void processArguments(const String& features, void* data, ArgumentsCallback);
 
-    virtual bool isDocument() const override { return true; }
+    virtual bool isDocument() const override final { return true; }
 
-    virtual void childrenChanged(const ChildChange&) override;
+    virtual void childrenChanged(const ChildChange&) override final;
 
-    virtual String nodeName() const override;
-    virtual NodeType nodeType() const override;
-    virtual bool childTypeAllowed(NodeType) const override;
-    virtual PassRefPtr<Node> cloneNode(bool deep) override;
+    virtual String nodeName() const override final;
+    virtual NodeType nodeType() const override final;
+    virtual bool childTypeAllowed(NodeType) const override final;
+    virtual PassRefPtr<Node> cloneNode(bool deep) override final;
     void cloneDataFromDocument(const Document&);
 
-    virtual void refScriptExecutionContext() override { ref(); }
-    virtual void derefScriptExecutionContext() override { deref(); }
+    virtual void refScriptExecutionContext() override final { ref(); }
+    virtual void derefScriptExecutionContext() override final { deref(); }
 
-    virtual void addMessage(MessageSource, MessageLevel, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr<Inspector::ScriptCallStack>, JSC::ExecState* = 0, unsigned long requestIdentifier = 0) override;
+    virtual void addMessage(MessageSource, MessageLevel, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr<Inspector::ScriptCallStack>, JSC::ExecState* = 0, unsigned long requestIdentifier = 0) override final;
 
-    virtual double minimumTimerInterval() const override;
+    virtual double minimumTimerInterval() const override final;
 
-    virtual double timerAlignmentInterval() const override;
+    virtual double timerAlignmentInterval() const override final;
 
     void updateTitle(const StringWithDirection&);
     void updateFocusAppearanceTimerFired(Timer<Document>&);
@@ -1380,7 +1380,7 @@ private:
     bool isDOMCookieCacheValid() const { return m_cookieCacheExpiryTimer.isActive(); }
     void invalidateDOMCookieCache();
     void domCookieCacheExpiryTimerFired(Timer<Document>&);
-    void didLoadResourceSynchronously(const ResourceRequest&) override final;
+    virtual void didLoadResourceSynchronously(const ResourceRequest&) override final;
 
     unsigned m_referencingNodeCount;
 
index 67ebfc3..543b59e 100644 (file)
@@ -39,15 +39,15 @@ public:
     void parseHTML(const String&, Element* contextElement, ParserContentPolicy = AllowScriptingContent);
     bool parseXML(const String&, Element* contextElement, ParserContentPolicy = AllowScriptingContent);
     
-    virtual bool canContainRangeEndPoint() const override { return true; }
+    virtual bool canContainRangeEndPoint() const override final { return true; }
     virtual bool isTemplateContent() const { return false; }
 
 protected:
     DocumentFragment(Document&, ConstructionType = CreateContainer);
-    virtual String nodeName() const override;
+    virtual String nodeName() const override final;
 
 private:
-    virtual NodeType nodeType() const override;
+    virtual NodeType nodeType() const override final;
     virtual PassRefPtr<Node> cloneNode(bool deep) override;
     virtual bool childTypeAllowed(NodeType) const override;
 };
index c8dfd31..b51d7a6 100644 (file)
@@ -45,7 +45,7 @@ struct ErrorEventInit : public EventInit {
     unsigned colno;
 };
 
-class ErrorEvent : public Event {
+class ErrorEvent final : public Event {
 public:
     static PassRefPtr<ErrorEvent> create()
     {
index b966866..f8088a8 100644 (file)
@@ -39,7 +39,7 @@ struct FocusEventInit : public UIEventInit {
     RefPtr<EventTarget> relatedTarget;
 };
 
-class FocusEvent : public UIEvent {
+class FocusEvent final : public UIEvent {
 public:
     static PassRefPtr<FocusEvent> create()
     {
@@ -56,17 +56,18 @@ public:
         return adoptRef(new FocusEvent(type, initializer));
     }
 
-    virtual EventTarget* relatedTarget() const override final { return m_relatedTarget.get(); }
+    virtual EventTarget* relatedTarget() const override { return m_relatedTarget.get(); }
     void setRelatedTarget(PassRefPtr<EventTarget> relatedTarget) { m_relatedTarget = relatedTarget; }
 
     virtual EventInterface eventInterface() const override;
-    virtual bool isFocusEvent() const override;
 
 private:
     FocusEvent();
     FocusEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>, int, PassRefPtr<EventTarget>);
     FocusEvent(const AtomicString& type, const FocusEventInit&);
 
+    virtual bool isFocusEvent() const override;
+
     RefPtr<EventTarget> m_relatedTarget;
 };
 
index 85cb0b5..7e2ab53 100644 (file)
@@ -35,7 +35,7 @@ struct HashChangeEventInit : public EventInit {
     String newURL;
 };
 
-class HashChangeEvent : public Event {
+class HashChangeEvent final : public Event {
 public:
     static PassRefPtr<HashChangeEvent> create()
     {
index ab94577..3712e83 100644 (file)
@@ -45,7 +45,7 @@ struct KeyboardEventInit : public UIEventInit {
     bool metaKey;
 };
 
-class KeyboardEvent : public UIEventWithKeyState {
+class KeyboardEvent final : public UIEventWithKeyState {
 public:
     enum KeyLocationCode {
         DOM_KEY_LOCATION_STANDARD   = 0x00,
index bc52987..196e50b 100644 (file)
@@ -92,8 +92,8 @@ public:
     bool collectionCanTraverseBackward() const { return true; }
     void willValidateIndexCache() const;
 
-    virtual void invalidateCache(Document&) const;
-    virtual size_t memoryCost() const override;
+    virtual void invalidateCache(Document&) const override final;
+    virtual size_t memoryCost() const override final;
 
 protected:
     CachedLiveNodeList(ContainerNode& rootNode, NodeListInvalidationType);
index c74ae0d..cba4c1f 100644 (file)
@@ -51,7 +51,7 @@ struct MessageEventInit : public EventInit {
     MessagePortArray ports;
 };
 
-class MessageEvent : public Event {
+class MessageEvent final : public Event {
 public:
     static PassRefPtr<MessageEvent> create()
     {
index 35d7439..e1b96e6 100644 (file)
@@ -74,7 +74,6 @@ namespace WebCore {
 
         virtual EventTargetInterface eventTargetInterface() const override { return MessagePortEventTargetInterfaceType; }
         virtual ScriptExecutionContext* scriptExecutionContext() const override { return m_scriptExecutionContext; }
-        virtual bool isMessagePort() const override { return true; }
 
         void dispatchMessages();
 
@@ -106,6 +105,7 @@ namespace WebCore {
 
         virtual void refEventTarget() override { ref(); }
         virtual void derefEventTarget() override { deref(); }
+        virtual bool isMessagePort() const override { return true; }
 
         std::unique_ptr<MessagePortChannel> m_entangledChannel;
 
index a58b35e..1fa8a3a 100644 (file)
@@ -125,7 +125,7 @@ private:
     RefPtr<DataTransfer> m_dataTransfer;
 };
 
-class SimulatedMouseEvent : public MouseEvent {
+class SimulatedMouseEvent final : public MouseEvent {
 public:
     static PassRefPtr<SimulatedMouseEvent> create(const AtomicString& eventType, PassRefPtr<AbstractView>, PassRefPtr<Event> underlyingEvent, Element* target);
     virtual ~SimulatedMouseEvent();
index 66fc107..74a1e83 100644 (file)
@@ -44,13 +44,13 @@ namespace WebCore {
         int movementY() const { return m_movementDelta.y(); }
 #endif
         const LayoutPoint& clientLocation() const { return m_clientLocation; }
-        int layerX() override;
-        int layerY() override;
+        virtual int layerX() override;
+        virtual int layerY() override;
         WEBCORE_EXPORT int offsetX();
         WEBCORE_EXPORT int offsetY();
         bool isSimulated() const { return m_isSimulated; }
-        virtual int pageX() const override;
-        virtual int pageY() const override;
+        virtual int pageX() const override final;
+        virtual int pageY() const override final;
         virtual const LayoutPoint& pageLocation() const;
         int x() const;
         int y() const;
@@ -71,7 +71,7 @@ namespace WebCore {
 
         void initCoordinates();
         void initCoordinates(const LayoutPoint& clientLocation);
-        virtual void receivedTarget() override;
+        virtual void receivedTarget() override final;
 
         void computePageLocation();
         void computeRelativePosition();
index cbd3600..4d05314 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-    class MutationEvent : public Event {
+    class MutationEvent final : public Event {
     public:
         virtual ~MutationEvent();
 
index 2c0d9c8..ab61977 100644 (file)
@@ -43,7 +43,7 @@ namespace WebCore {
 class Document;
 class DOMNamedFlowCollection;
 
-class NamedFlowCollection : public RefCounted<NamedFlowCollection>, public ContextDestructionObserver {
+class NamedFlowCollection final : public RefCounted<NamedFlowCollection>, public ContextDestructionObserver {
 public:
     static PassRefPtr<NamedFlowCollection> create(Document* doc) { return adoptRef(new NamedFlowCollection(doc)); }
 
index 35c6d1a..d4cd337 100644 (file)
@@ -38,7 +38,7 @@ struct OverflowEventInit : public EventInit {
     bool verticalOverflow;
 };
 
-class OverflowEvent : public Event {
+class OverflowEvent final : public Event {
 public:
     enum orientType {
         HORIZONTAL = 0,
index 051a12c..8883dc4 100644 (file)
@@ -36,7 +36,7 @@ struct PageTransitionEventInit : public EventInit {
     bool persisted;
 };
 
-class PageTransitionEvent : public Event {
+class PageTransitionEvent final : public Event {
 public:
     static PassRefPtr<PageTransitionEvent> create()
     {
index f7831ce..8edad90 100644 (file)
@@ -42,7 +42,7 @@ class Element;
 // A CachedResourceHandle alone does not prevent the underlying CachedResource
 // from purging its data buffer. This class holds a dummy client open for its
 // lifetime in order to guarantee that the data buffer will not be purged.
-class PendingScript : public CachedResourceClient {
+class PendingScript final : public CachedResourceClient {
 public:
     PendingScript()
         : m_watchingForLoad(false)
@@ -66,7 +66,7 @@ public:
         setCachedScript(other.cachedScript());
     }
 
-    ~PendingScript();
+    virtual ~PendingScript();
 
     PendingScript& operator=(const PendingScript& other)
     {
index d9db68d..b67627c 100644 (file)
@@ -41,7 +41,7 @@ struct PopStateEventInit : public EventInit {
 class History;
 class SerializedScriptValue;
 
-class PopStateEvent : public Event {
+class PopStateEvent final : public Event {
 public:
     virtual ~PopStateEvent();
     static PassRefPtr<PopStateEvent> create();
index d62d180..834d426 100644 (file)
@@ -37,26 +37,26 @@ protected:
     {
     }
 
-    virtual void finish()
+    virtual void finish() override
     {
         if (!isStopped())
             document()->finishedParsing();
     }
 
 private:
-    virtual void flush(DocumentWriter& writer)
+    virtual void flush(DocumentWriter& writer) override
     {
         // Make sure appendBytes is called at least once.
         appendBytes(writer, 0, 0);
     }
 
-    virtual void insert(const SegmentedString&)
+    virtual void insert(const SegmentedString&) override
     {
         // <https://bugs.webkit.org/show_bug.cgi?id=25397>: JS code can always call document.write, we need to handle it.
         ASSERT_NOT_REACHED();
     }
 
-    virtual void append(PassRefPtr<StringImpl>)
+    virtual void append(PassRefPtr<StringImpl>) override
     {
         ASSERT_NOT_REACHED();
     }
index 8f8dc98..48260a9 100644 (file)
@@ -55,7 +55,7 @@ protected:
     explicit ScriptableDocumentParser(Document&, ParserContentPolicy = AllowScriptingContent);
 
 private:
-    virtual ScriptableDocumentParser* asScriptableDocumentParser() override { return this; }
+    virtual ScriptableDocumentParser* asScriptableDocumentParser() override final { return this; }
 
     // http://www.whatwg.org/specs/web-apps/current-work/#script-created-parser
     bool m_wasCreatedByScript;
index 799f994..99f2278 100644 (file)
@@ -46,7 +46,7 @@ struct SecurityPolicyViolationEventInit : public EventInit {
     int lineNumber;
 };
 
-class SecurityPolicyViolationEvent : public Event {
+class SecurityPolicyViolationEvent final : public Event {
 public:
     static PassRefPtr<SecurityPolicyViolationEvent> create()
     {
index 88d061f..aef573a 100644 (file)
@@ -37,7 +37,7 @@ namespace WebCore {
 
     enum class MailBlockquoteHandling;
 
-    class TextEvent : public UIEvent {
+    class TextEvent final : public UIEvent {
     public:
 
         static PassRefPtr<TextEvent> create();
index 3a688b6..aa06795 100644 (file)
@@ -36,7 +36,7 @@
 
 namespace WebCore {
 
-class TouchEvent : public MouseRelatedEvent {
+class TouchEvent final : public MouseRelatedEvent {
 public:
     virtual ~TouchEvent();
 
index dde5ea9..3eadb22 100644 (file)
@@ -39,7 +39,7 @@ struct TransitionEventInit : public EventInit {
     String pseudoElement;
 };
 
-class TransitionEvent : public Event {
+class TransitionEvent final : public Event {
 public:
     static PassRefPtr<TransitionEvent> create()
     {
index aba8759..f9fe144 100644 (file)
@@ -61,7 +61,6 @@ public:
     int detail() const { return m_detail; }
 
     virtual EventInterface eventInterface() const override;
-    virtual bool isUIEvent() const override;
 
     virtual int keyCode() const;
     virtual int charCode() const;
@@ -81,6 +80,8 @@ protected:
     UIEvent(const AtomicString&, const UIEventInit&);
 
 private:
+    virtual bool isUIEvent() const override final;
+
     RefPtr<AbstractView> m_view;
     int m_detail;
 };
index a584679..2a317f4 100644 (file)
@@ -37,7 +37,7 @@ struct WebKitAnimationEventInit : public EventInit {
     double elapsedTime;
 };
 
-class WebKitAnimationEvent : public Event {
+class WebKitAnimationEvent final : public Event {
 public:
     static PassRefPtr<WebKitAnimationEvent> create()
     {
index d01da4d..c1df372 100644 (file)
@@ -38,7 +38,7 @@ struct WebKitTransitionEventInit : public EventInit {
     String pseudoElement;
 };
 
-class WebKitTransitionEvent : public Event {
+class WebKitTransitionEvent final : public Event {
 public:
     static PassRefPtr<WebKitTransitionEvent> create()
     {
index 6705d4a..94ccf43 100644 (file)
@@ -44,7 +44,7 @@ struct WheelEventInit : public MouseEventInit {
     int wheelDeltaY; // Deprecated.
 };
 
-class WheelEvent : public MouseEvent {
+class WheelEvent final : public MouseEvent {
 public:
     enum { TickMultiplier = 120 };
 
index 40f03b4..2abfb79 100644 (file)
@@ -42,7 +42,7 @@ class DeviceController : public Supplement<Page> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     explicit DeviceController(DeviceClient*);
-    ~DeviceController() { }
+    virtual ~DeviceController() { }
 
     void addDeviceEventListener(DOMWindow*);
     void removeDeviceEventListener(DOMWindow*);
index 5aa2646..1800f28 100644 (file)
@@ -136,7 +136,6 @@ EXPORTS
         symbolWithPointer(?instrumentationForPage@WebCore@@YAPAVInstrumentingAgents@1@PAVPage@1@@Z, ?instrumentationForPage@WebCore@@YAPEAVInstrumentingAgents@1@PEAVPage@1@@Z)
         ?isMainThread@WTF@@YA_NXZ
         symbolWithPointer(?lock@Mutex@WTF@@QAEXXZ, ?lock@Mutex@WTF@@QEAAXXZ)
-        symbolWithPointer(?scriptedAnimationControllerSetThrottled@Document@WebCore@@UAEX_N@Z, ?scriptedAnimationControllerSetThrottled@Document@WebCore@@UEAAX_N@Z)
         symbolWithPointer(?signal@ThreadCondition@WTF@@QAEXXZ, ?signal@ThreadCondition@WTF@@QEAAXXZ)
         symbolWithPointer(?timedWait@ThreadCondition@WTF@@QAE_NAAVMutex@2@N@Z, ?timedWait@ThreadCondition@WTF@@QEAA_NAEAVMutex@2@N@Z)
         symbolWithPointer(?tlsKeyCount@WTF@@YAAAJXZ, ?tlsKeyCount@WTF@@YAAEAJXZ)