[Win][Clang][WebKitLegacy] WebFrame.cpp: warning: delete called on non-final 'WebFrame' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
https://bugs.webkit.org/show_bug.cgi?id=192618

Reviewed by Alex Christensen.

Source/WebCore:

No new tests, no behavior changes.

* platform/win/PopupMenuWin.h:
* platform/win/WCDataObject.cpp:
* platform/win/WCDataObject.h:

Source/WebKitLegacy/win:

Classes which implement COM interface usually doesn't need the
virtual destructor because it has Release() virtual method to
destruct itself.

Marked 'final' such classes to suppress clang-cl's compilation
warnings.

* COMEnumVariant.h:
* COMPropertyBag.h:
* DefaultDownloadDelegate.h:
* DefaultPolicyDelegate.h:
* MemoryStream.h:
* WebActionPropertyBag.h:
* WebApplicationCache.h:
* WebArchive.h:
* WebBackForwardList.h:
* WebCache.h:
* WebCoreStatistics.h:
* WebCoreSupport/WebEditorClient.cpp:
* WebCoreSupport/WebInspectorDelegate.h:
* WebDataSource.h:
* WebDatabaseManager.cpp:
* WebDatabaseManager.h:
* WebDownload.h:
* WebDropSource.h:
* WebElementPropertyBag.h:
* WebError.h:
* WebFrame.cpp:
* WebFrame.h:
* WebFramePolicyListener.h:
* WebGeolocationPolicyListener.h:
* WebGeolocationPosition.h:
* WebHTMLRepresentation.h:
* WebHistory.h:
* WebHistoryItem.h:
* WebInspector.h:
* WebJavaScriptCollector.h:
* WebKitClassFactory.h:
* WebKitMessageLoop.h:
* WebKitStatistics.h:
* WebMutableURLRequest.h:
* WebNavigationData.h:
* WebNotification.h:
* WebNotificationCenter.h:
* WebPreferences.h:
* WebResource.h:
* WebScriptWorld.h:
* WebSecurityOrigin.h:
* WebSerializedJSValue.h:
* WebTextRenderer.h:
* WebURLAuthenticationChallenge.h:
* WebURLAuthenticationChallengeSender.h:
* WebURLCredential.h:
* WebURLProtectionSpace.h:
* WebURLResponse.h:
* WebUserContentURLPattern.h:
* WebView.cpp:
* WebView.h:
* WebWorkersPrivate.h:

Tools:

* DumpRenderTree/win/DRTDataObject.cpp:
* DumpRenderTree/win/DRTDataObject.h:
* DumpRenderTree/win/DRTDesktopNotificationPresenter.h:
* DumpRenderTree/win/DRTDropSource.h:
* DumpRenderTree/win/EditingDelegate.h:
* DumpRenderTree/win/PolicyDelegate.h:
* DumpRenderTree/win/UIDelegate.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@239151 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKitLegacy/win/COMEnumVariant.h b/Source/WebKitLegacy/win/COMEnumVariant.h
index 2fe0f10..6d978e4 100644
--- a/Source/WebKitLegacy/win/COMEnumVariant.h
+++ b/Source/WebKitLegacy/win/COMEnumVariant.h
@@ -31,7 +31,7 @@
 #include "COMVariantSetter.h"
 
 template<typename ContainerType>
-class COMEnumVariant : public IEnumVARIANT {
+class COMEnumVariant final : public IEnumVARIANT {
     WTF_MAKE_NONCOPYABLE(COMEnumVariant);
 public:
     static COMEnumVariant* adopt(ContainerType&);
diff --git a/Source/WebKitLegacy/win/COMPropertyBag.h b/Source/WebKitLegacy/win/COMPropertyBag.h
index 7181f2b..b0d21f4 100644
--- a/Source/WebKitLegacy/win/COMPropertyBag.h
+++ b/Source/WebKitLegacy/win/COMPropertyBag.h
@@ -35,7 +35,7 @@
 #include "COMVariantSetter.h"
 
 template<typename ValueType, typename KeyType = typename WTF::String, typename HashType = typename WTF::StringHash>
-class COMPropertyBag : public IPropertyBag, public IPropertyBag2 {
+class COMPropertyBag final : public IPropertyBag, public IPropertyBag2 {
     WTF_MAKE_NONCOPYABLE(COMPropertyBag);
 public:
     typedef HashMap<KeyType, ValueType, HashType> HashMapType;
diff --git a/Source/WebKitLegacy/win/ChangeLog b/Source/WebKitLegacy/win/ChangeLog
index ee6523c..b1e3b9b 100644
--- a/Source/WebKitLegacy/win/ChangeLog
+++ b/Source/WebKitLegacy/win/ChangeLog
@@ -1,3 +1,70 @@
+2018-12-12  Fujii Hironori  <Hironori.Fujii@sony.com>
+
+        [Win][Clang][WebKitLegacy] WebFrame.cpp: warning: delete called on non-final 'WebFrame' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
+        https://bugs.webkit.org/show_bug.cgi?id=192618
+
+        Reviewed by Alex Christensen.
+
+        Classes which implement COM interface usually doesn't need the
+        virtual destructor because it has Release() virtual method to
+        destruct itself.
+
+        Marked 'final' such classes to suppress clang-cl's compilation
+        warnings.
+
+        * COMEnumVariant.h:
+        * COMPropertyBag.h:
+        * DefaultDownloadDelegate.h:
+        * DefaultPolicyDelegate.h:
+        * MemoryStream.h:
+        * WebActionPropertyBag.h:
+        * WebApplicationCache.h:
+        * WebArchive.h:
+        * WebBackForwardList.h:
+        * WebCache.h:
+        * WebCoreStatistics.h:
+        * WebCoreSupport/WebEditorClient.cpp:
+        * WebCoreSupport/WebInspectorDelegate.h:
+        * WebDataSource.h:
+        * WebDatabaseManager.cpp:
+        * WebDatabaseManager.h:
+        * WebDownload.h:
+        * WebDropSource.h:
+        * WebElementPropertyBag.h:
+        * WebError.h:
+        * WebFrame.cpp:
+        * WebFrame.h:
+        * WebFramePolicyListener.h:
+        * WebGeolocationPolicyListener.h:
+        * WebGeolocationPosition.h:
+        * WebHTMLRepresentation.h:
+        * WebHistory.h:
+        * WebHistoryItem.h:
+        * WebInspector.h:
+        * WebJavaScriptCollector.h:
+        * WebKitClassFactory.h:
+        * WebKitMessageLoop.h:
+        * WebKitStatistics.h:
+        * WebMutableURLRequest.h:
+        * WebNavigationData.h:
+        * WebNotification.h:
+        * WebNotificationCenter.h:
+        * WebPreferences.h:
+        * WebResource.h:
+        * WebScriptWorld.h:
+        * WebSecurityOrigin.h:
+        * WebSerializedJSValue.h:
+        * WebTextRenderer.h:
+        * WebURLAuthenticationChallenge.h:
+        * WebURLAuthenticationChallengeSender.h:
+        * WebURLCredential.h:
+        * WebURLProtectionSpace.h:
+        * WebURLResponse.h:
+        * WebUserContentURLPattern.h:
+        * WebView.cpp:
+        * WebView.h:
+        * WebWorkersPrivate.h:
+
 2018-12-11  Fujii Hironori  <Hironori.Fujii@sony.com>
 
         [Win][Clang] Fix warning -Wmissing-field-initializers
diff --git a/Source/WebKitLegacy/win/DefaultDownloadDelegate.h b/Source/WebKitLegacy/win/DefaultDownloadDelegate.h
index 729b6e6..8855b7c 100644
--- a/Source/WebKitLegacy/win/DefaultDownloadDelegate.h
+++ b/Source/WebKitLegacy/win/DefaultDownloadDelegate.h
@@ -32,7 +32,7 @@
 #include <CFNetwork/CFURLDownloadPriv.h>
 #endif
 
-class DefaultDownloadDelegate : public IWebDownloadDelegate
+class DefaultDownloadDelegate final : public IWebDownloadDelegate
 {
 public:
     static DefaultDownloadDelegate* sharedInstance();
diff --git a/Source/WebKitLegacy/win/DefaultPolicyDelegate.h b/Source/WebKitLegacy/win/DefaultPolicyDelegate.h
index ade3c52..a2b6664 100644
--- a/Source/WebKitLegacy/win/DefaultPolicyDelegate.h
+++ b/Source/WebKitLegacy/win/DefaultPolicyDelegate.h
@@ -28,7 +28,7 @@
 
 #include "WebKit.h"
 
-class DefaultPolicyDelegate : public IWebPolicyDelegate {
+class DefaultPolicyDelegate final : public IWebPolicyDelegate {
 public:
     static DefaultPolicyDelegate* sharedInstance();
     static DefaultPolicyDelegate* createInstance();
diff --git a/Source/WebKitLegacy/win/MemoryStream.h b/Source/WebKitLegacy/win/MemoryStream.h
index 97f1c97..19f8248 100644
--- a/Source/WebKitLegacy/win/MemoryStream.h
+++ b/Source/WebKitLegacy/win/MemoryStream.h
@@ -32,7 +32,7 @@
 #include <WebCore/SharedBuffer.h>
 #include <WTF/RefPtr.h>
 
-class MemoryStream : public IStream
+class MemoryStream final : public IStream
 {
 public:
     static COMPtr<MemoryStream> createInstance(RefPtr<WebCore::SharedBuffer>&&);
diff --git a/Source/WebKitLegacy/win/WebActionPropertyBag.h b/Source/WebKitLegacy/win/WebActionPropertyBag.h
index 0f9f015..0c5a1ae 100644
--- a/Source/WebKitLegacy/win/WebActionPropertyBag.h
+++ b/Source/WebKitLegacy/win/WebActionPropertyBag.h
@@ -31,7 +31,7 @@
 #include <WebCore/HTMLFormElement.h>
 #include <WebCore/NavigationAction.h>
 
-class WebActionPropertyBag : public IPropertyBag {
+class WebActionPropertyBag final : public IPropertyBag {
 public:
     static WebActionPropertyBag* createInstance(const WebCore::NavigationAction&, RefPtr<WebCore::HTMLFormElement>&&, RefPtr<WebCore::Frame>&&);
 
diff --git a/Source/WebKitLegacy/win/WebApplicationCache.h b/Source/WebKitLegacy/win/WebApplicationCache.h
index eadbf96..8e56d05 100644
--- a/Source/WebKitLegacy/win/WebApplicationCache.h
+++ b/Source/WebKitLegacy/win/WebApplicationCache.h
@@ -32,7 +32,7 @@
 class ApplicationCacheStorage;
 }
 
-class DECLSPEC_UUID("1119E970-4B13-4B9A-A049-41096104B689") WebApplicationCache : public IWebApplicationCache {
+class DECLSPEC_UUID("1119E970-4B13-4B9A-A049-41096104B689") WebApplicationCache final : public IWebApplicationCache {
 public:
     static WebApplicationCache* createInstance();
 
diff --git a/Source/WebKitLegacy/win/WebArchive.h b/Source/WebKitLegacy/win/WebArchive.h
index e1acaff..2612267 100644
--- a/Source/WebKitLegacy/win/WebArchive.h
+++ b/Source/WebKitLegacy/win/WebArchive.h
@@ -34,7 +34,7 @@
     class LegacyWebArchive;
 }
 
-class WebArchive : public IWebArchive
+class WebArchive final : public IWebArchive
 {
 public:
     static WebArchive* createInstance();
diff --git a/Source/WebKitLegacy/win/WebBackForwardList.h b/Source/WebKitLegacy/win/WebBackForwardList.h
index bfa2516..7bc7c41 100644
--- a/Source/WebKitLegacy/win/WebBackForwardList.h
+++ b/Source/WebKitLegacy/win/WebBackForwardList.h
@@ -33,7 +33,7 @@
 
 class BackForwardList;
 
-class WebBackForwardList : public IWebBackForwardList, IWebBackForwardListPrivate
+class WebBackForwardList final : public IWebBackForwardList, IWebBackForwardListPrivate
 {
 public:
     static WebBackForwardList* createInstance(RefPtr<BackForwardList>&&);
diff --git a/Source/WebKitLegacy/win/WebCache.h b/Source/WebKitLegacy/win/WebCache.h
index 4877dc1..393f83c 100644
--- a/Source/WebKitLegacy/win/WebCache.h
+++ b/Source/WebKitLegacy/win/WebCache.h
@@ -28,7 +28,7 @@
 
 #include "WebKit.h"
 
-class WebCache : public IWebCache
+class WebCache final : public IWebCache
 {
 public:
     static WebCache* createInstance();
diff --git a/Source/WebKitLegacy/win/WebCoreStatistics.h b/Source/WebKitLegacy/win/WebCoreStatistics.h
index 4a3f08a..0d6e888 100644
--- a/Source/WebKitLegacy/win/WebCoreStatistics.h
+++ b/Source/WebKitLegacy/win/WebCoreStatistics.h
@@ -28,7 +28,7 @@
 
 #include "WebKit.h"
 
-class WebCoreStatistics : public IWebCoreStatistics {
+class WebCoreStatistics final : public IWebCoreStatistics {
 public:
     static WebCoreStatistics* createInstance();
 protected:
diff --git a/Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp b/Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp
index b58de5b..2e7ea58 100644
--- a/Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp
+++ b/Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp
@@ -63,7 +63,7 @@
 
 // WebEditorUndoTarget -------------------------------------------------------------
 
-class WebEditorUndoTarget : public IWebUndoTarget
+class WebEditorUndoTarget final : public IWebUndoTarget
 {
 public:
     WebEditorUndoTarget();
@@ -508,7 +508,7 @@
     }
 }
 
-class WebEditorUndoCommand : public IWebUndoCommand
+class WebEditorUndoCommand final : public IWebUndoCommand
 {
 public:
     WebEditorUndoCommand(UndoStep&, bool isUndo);
diff --git a/Source/WebKitLegacy/win/WebCoreSupport/WebInspectorDelegate.h b/Source/WebKitLegacy/win/WebCoreSupport/WebInspectorDelegate.h
index 96fc90d..ab77af5 100644
--- a/Source/WebKitLegacy/win/WebCoreSupport/WebInspectorDelegate.h
+++ b/Source/WebKitLegacy/win/WebCoreSupport/WebInspectorDelegate.h
@@ -32,7 +32,7 @@
 
 #include "WebKit.h"
 
-class WebInspectorDelegate : public IWebUIDelegate {
+class WebInspectorDelegate final : public IWebUIDelegate {
 public:
     static WebInspectorDelegate* createInstance();
 
diff --git a/Source/WebKitLegacy/win/WebDataSource.h b/Source/WebKitLegacy/win/WebDataSource.h
index 6144b96..70a7f45 100644
--- a/Source/WebKitLegacy/win/WebDataSource.h
+++ b/Source/WebKitLegacy/win/WebDataSource.h
@@ -35,7 +35,7 @@
 
 extern const GUID IID_WebDataSource;
 
-class WebDataSource : public IWebDataSource, public IWebDataSourcePrivate
+class WebDataSource final : public IWebDataSource, public IWebDataSourcePrivate
 {
 public:
     static WebDataSource* createInstance(WebDocumentLoader*);
diff --git a/Source/WebKitLegacy/win/WebDatabaseManager.cpp b/Source/WebKitLegacy/win/WebDatabaseManager.cpp
index a9693a1..3f6c38b 100644
--- a/Source/WebKitLegacy/win/WebDatabaseManager.cpp
+++ b/Source/WebKitLegacy/win/WebDatabaseManager.cpp
@@ -57,7 +57,7 @@
     return !wcscmp(s1, s2);
 }
 
-class DatabaseDetailsPropertyBag : public IPropertyBag {
+class DatabaseDetailsPropertyBag final : public IPropertyBag {
     WTF_MAKE_NONCOPYABLE(DatabaseDetailsPropertyBag);
 public:
     static DatabaseDetailsPropertyBag* createInstance(const DatabaseDetails&);
diff --git a/Source/WebKitLegacy/win/WebDatabaseManager.h b/Source/WebKitLegacy/win/WebDatabaseManager.h
index 4929219..e0fe3e3 100644
--- a/Source/WebKitLegacy/win/WebDatabaseManager.h
+++ b/Source/WebKitLegacy/win/WebDatabaseManager.h
@@ -35,7 +35,7 @@
 struct SecurityOriginData;
 }
 
-class WebDatabaseManager : public IWebDatabaseManager2, private WebCore::DatabaseManagerClient {
+class WebDatabaseManager final : public IWebDatabaseManager2, private WebCore::DatabaseManagerClient {
 public:
     static WebDatabaseManager* createInstance();
 
diff --git a/Source/WebKitLegacy/win/WebDownload.h b/Source/WebKitLegacy/win/WebDownload.h
index 4f6111e..bff80f7 100644
--- a/Source/WebKitLegacy/win/WebDownload.h
+++ b/Source/WebKitLegacy/win/WebDownload.h
@@ -43,7 +43,7 @@
     class ResourceResponse;
 }
 
-class WebDownload
+class WebDownload final
 : public IWebDownload
 , public IWebURLAuthenticationChallengeSender
 #if USE(CURL)
diff --git a/Source/WebKitLegacy/win/WebDropSource.h b/Source/WebKitLegacy/win/WebDropSource.h
index f507fec..9506dd3 100644
--- a/Source/WebKitLegacy/win/WebDropSource.h
+++ b/Source/WebKitLegacy/win/WebDropSource.h
@@ -38,7 +38,7 @@
 
 WebCore::PlatformMouseEvent generateMouseEvent(WebView*, bool isDrag);
 
-class WebDropSource : public IDropSource
+class WebDropSource final : public IDropSource
 {
 public:
     virtual HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject);        
diff --git a/Source/WebKitLegacy/win/WebElementPropertyBag.h b/Source/WebKitLegacy/win/WebElementPropertyBag.h
index 8c54ff6..2dfaa913 100644
--- a/Source/WebKitLegacy/win/WebElementPropertyBag.h
+++ b/Source/WebKitLegacy/win/WebElementPropertyBag.h
@@ -32,7 +32,7 @@
     class HitTestResult;
 }
 
-class WebElementPropertyBag : public IPropertyBag
+class WebElementPropertyBag final : public IPropertyBag
 {
 public:
     static WebElementPropertyBag* createInstance(const WebCore::HitTestResult&);
diff --git a/Source/WebKitLegacy/win/WebError.h b/Source/WebKitLegacy/win/WebError.h
index 21f449a..f7c67eb 100644
--- a/Source/WebKitLegacy/win/WebError.h
+++ b/Source/WebKitLegacy/win/WebError.h
@@ -30,7 +30,7 @@
 #include <WebCore/ResourceError.h>
 #include <wtf/RetainPtr.h>
 
-class WebError : public IWebError, IWebErrorPrivate {
+class WebError final : public IWebError, IWebErrorPrivate {
 public:
     static WebError* createInstance(const WebCore::ResourceError&, IPropertyBag* userInfo = 0);
     static WebError* createInstance();
diff --git a/Source/WebKitLegacy/win/WebFrame.cpp b/Source/WebKitLegacy/win/WebFrame.cpp
index 8866515..c03242c 100644
--- a/Source/WebKitLegacy/win/WebFrame.cpp
+++ b/Source/WebKitLegacy/win/WebFrame.cpp
@@ -758,7 +758,7 @@
     return hr;
 }
 
-class EnumChildFrames : public IEnumVARIANT
+class EnumChildFrames final : public IEnumVARIANT
 {
 public:
     EnumChildFrames(Frame* f)
diff --git a/Source/WebKitLegacy/win/WebFrame.h b/Source/WebKitLegacy/win/WebFrame.h
index c4d0836..1badd01 100644
--- a/Source/WebKitLegacy/win/WebFrame.h
+++ b/Source/WebKitLegacy/win/WebFrame.h
@@ -75,7 +75,7 @@
 WebFrame* kit(WebCore::Frame*);
 WEBKIT_API WebCore::Frame* core(WebFrame*);
 
-class DECLSPEC_UUID("{A3676398-4485-4a9d-87DC-CB5A40E6351D}") WebFrame : public IWebFrame2, IWebFramePrivate, IWebDocumentText
+class DECLSPEC_UUID("{A3676398-4485-4a9d-87DC-CB5A40E6351D}") WebFrame final : public IWebFrame2, IWebFramePrivate, IWebDocumentText
 {
 public:
     static WebFrame* createInstance();
diff --git a/Source/WebKitLegacy/win/WebFramePolicyListener.h b/Source/WebKitLegacy/win/WebFramePolicyListener.h
index 02bc4ca..170de95 100644
--- a/Source/WebKitLegacy/win/WebFramePolicyListener.h
+++ b/Source/WebKitLegacy/win/WebFramePolicyListener.h
@@ -35,7 +35,7 @@
     class Frame;
 }
 
-class WebFramePolicyListener : public IWebPolicyDecisionListener, public IWebFormSubmissionListener {
+class WebFramePolicyListener final : public IWebPolicyDecisionListener, public IWebFormSubmissionListener {
 public:
     static WebFramePolicyListener* createInstance(RefPtr<WebCore::Frame>&&);
 protected:
diff --git a/Source/WebKitLegacy/win/WebGeolocationPolicyListener.h b/Source/WebKitLegacy/win/WebGeolocationPolicyListener.h
index 2a499b1..5e7864b 100644
--- a/Source/WebKitLegacy/win/WebGeolocationPolicyListener.h
+++ b/Source/WebKitLegacy/win/WebGeolocationPolicyListener.h
@@ -33,7 +33,7 @@
     class Geolocation;
 }
 
-class WebGeolocationPolicyListener : public IWebGeolocationPolicyListener {
+class WebGeolocationPolicyListener final : public IWebGeolocationPolicyListener {
 public:
     static COMPtr<WebGeolocationPolicyListener> createInstance(RefPtr<WebCore::Geolocation>&&);
 
diff --git a/Source/WebKitLegacy/win/WebGeolocationPosition.h b/Source/WebKitLegacy/win/WebGeolocationPosition.h
index 6cd15c8..0e4468e 100644
--- a/Source/WebKitLegacy/win/WebGeolocationPosition.h
+++ b/Source/WebKitLegacy/win/WebGeolocationPosition.h
@@ -29,7 +29,7 @@
 #include <WebCore/COMPtr.h>
 #include <WebCore/GeolocationPosition.h>
 
-class WebGeolocationPosition : public IWebGeolocationPosition {
+class WebGeolocationPosition final : public IWebGeolocationPosition {
 public:
     static COMPtr<WebGeolocationPosition> createInstance();
 private:
diff --git a/Source/WebKitLegacy/win/WebHTMLRepresentation.h b/Source/WebKitLegacy/win/WebHTMLRepresentation.h
index 869aa31..cb9e4d7 100644
--- a/Source/WebKitLegacy/win/WebHTMLRepresentation.h
+++ b/Source/WebKitLegacy/win/WebHTMLRepresentation.h
@@ -30,7 +30,7 @@
 
 class WebFrame;
 
-class WebHTMLRepresentation : public IWebHTMLRepresentation, IWebDocumentRepresentation
+class WebHTMLRepresentation final : public IWebHTMLRepresentation, IWebDocumentRepresentation
 {
 public:
     static WebHTMLRepresentation* createInstance(WebFrame* frame);
diff --git a/Source/WebKitLegacy/win/WebHistory.h b/Source/WebKitLegacy/win/WebHistory.h
index b9d170a..17f8092 100644
--- a/Source/WebKitLegacy/win/WebHistory.h
+++ b/Source/WebKitLegacy/win/WebHistory.h
@@ -41,7 +41,7 @@
 class WebPreferences;
 class WebVisitedLinkStore;
 
-class WebHistory : public IWebHistory, public IWebHistoryPrivate {
+class WebHistory final : public IWebHistory, public IWebHistoryPrivate {
 public:
     static WebHistory* createInstance();
 private:
diff --git a/Source/WebKitLegacy/win/WebHistoryItem.h b/Source/WebKitLegacy/win/WebHistoryItem.h
index b386570..920b34c 100644
--- a/Source/WebKitLegacy/win/WebHistoryItem.h
+++ b/Source/WebKitLegacy/win/WebHistoryItem.h
@@ -38,7 +38,7 @@
 
 //-----------------------------------------------------------------------------
 
-class WebHistoryItem : public IWebHistoryItem, IWebHistoryItemPrivate
+class WebHistoryItem final : public IWebHistoryItem, IWebHistoryItemPrivate
 {
 public:
     static WebHistoryItem* createInstance();
diff --git a/Source/WebKitLegacy/win/WebInspector.h b/Source/WebKitLegacy/win/WebInspector.h
index 2794f71..cac6513 100644
--- a/Source/WebKitLegacy/win/WebInspector.h
+++ b/Source/WebKitLegacy/win/WebInspector.h
@@ -36,7 +36,7 @@
 class WebInspectorFrontendClient;
 class WebView;
 
-class WebInspector : public IWebInspector, public IWebInspectorPrivate {
+class WebInspector final : public IWebInspector, public IWebInspectorPrivate {
     WTF_MAKE_NONCOPYABLE(WebInspector);
 public:
     static WebInspector* createInstance(WebView* inspectedWebView, WebInspectorClient*);
diff --git a/Source/WebKitLegacy/win/WebJavaScriptCollector.h b/Source/WebKitLegacy/win/WebJavaScriptCollector.h
index 012bf0d..300c856 100644
--- a/Source/WebKitLegacy/win/WebJavaScriptCollector.h
+++ b/Source/WebKitLegacy/win/WebJavaScriptCollector.h
@@ -28,7 +28,7 @@
 
 #include "WebKit.h"
 
-class WebJavaScriptCollector : public IWebJavaScriptCollector
+class WebJavaScriptCollector final : public IWebJavaScriptCollector
 {
 public:
     static WebJavaScriptCollector* createInstance();
diff --git a/Source/WebKitLegacy/win/WebKitClassFactory.h b/Source/WebKitLegacy/win/WebKitClassFactory.h
index 3c907e3..77230f6 100644
--- a/Source/WebKitLegacy/win/WebKitClassFactory.h
+++ b/Source/WebKitLegacy/win/WebKitClassFactory.h
@@ -28,7 +28,7 @@
 
 #include <unknwn.h>
 
-class WebKitClassFactory : public IClassFactory
+class WebKitClassFactory final : public IClassFactory
 {
 public:
     WebKitClassFactory(CLSID targetClass);
diff --git a/Source/WebKitLegacy/win/WebKitMessageLoop.h b/Source/WebKitLegacy/win/WebKitMessageLoop.h
index 1b0e17f..c69d3bf 100644
--- a/Source/WebKitLegacy/win/WebKitMessageLoop.h
+++ b/Source/WebKitLegacy/win/WebKitMessageLoop.h
@@ -28,7 +28,7 @@
 
 #include "WebKit.h"
 
-class WebKitMessageLoop : public IWebKitMessageLoop {
+class WebKitMessageLoop final : public IWebKitMessageLoop {
 public:
     WebKitMessageLoop();
     ~WebKitMessageLoop();
diff --git a/Source/WebKitLegacy/win/WebKitStatistics.h b/Source/WebKitLegacy/win/WebKitStatistics.h
index b2df206..889bb1a 100644
--- a/Source/WebKitLegacy/win/WebKitStatistics.h
+++ b/Source/WebKitLegacy/win/WebKitStatistics.h
@@ -31,7 +31,7 @@
 
 #include "WebKit.h"
 
-class WebKitStatistics : public IWebKitStatistics {
+class WebKitStatistics final : public IWebKitStatistics {
 public:
     static WebKitStatistics* createInstance();
 protected:
diff --git a/Source/WebKitLegacy/win/WebMutableURLRequest.h b/Source/WebKitLegacy/win/WebMutableURLRequest.h
index 041c909..94cd2b4 100644
--- a/Source/WebKitLegacy/win/WebMutableURLRequest.h
+++ b/Source/WebKitLegacy/win/WebMutableURLRequest.h
@@ -44,7 +44,7 @@
     return static_cast<WebURLRequestCachePolicy>(policy);
 }
 
-class WebMutableURLRequest : public IWebMutableURLRequest, IWebMutableURLRequestPrivate
+class WebMutableURLRequest final : public IWebMutableURLRequest, IWebMutableURLRequestPrivate
 {
 public:
     static WebMutableURLRequest* createInstance();
diff --git a/Source/WebKitLegacy/win/WebNavigationData.h b/Source/WebKitLegacy/win/WebNavigationData.h
index e368d83..4bc9956 100644
--- a/Source/WebKitLegacy/win/WebNavigationData.h
+++ b/Source/WebKitLegacy/win/WebNavigationData.h
@@ -31,7 +31,7 @@
 #include <WebCore/BString.h>
 #include <WebCore/COMPtr.h>
 
-class WebNavigationData : public IWebNavigationData {
+class WebNavigationData final : public IWebNavigationData {
 public:
     static WebNavigationData* createInstance(const WTF::String& url, const WTF::String& title, IWebURLRequest*, IWebURLResponse*, bool hasSubstituteData, const WTF::String& clientRedirectSource);
 private:
diff --git a/Source/WebKitLegacy/win/WebNotification.h b/Source/WebKitLegacy/win/WebNotification.h
index 843e3d9..930db8a 100644
--- a/Source/WebKitLegacy/win/WebNotification.h
+++ b/Source/WebKitLegacy/win/WebNotification.h
@@ -28,7 +28,7 @@
 
 #include "WebKit.h"
 
-class WebNotification : public IWebNotification
+class WebNotification final : public IWebNotification
 {
 public:
     static WebNotification* createInstance(BSTR name = 0, IUnknown* anObject = 0, IPropertyBag* userInfo = 0);
diff --git a/Source/WebKitLegacy/win/WebNotificationCenter.h b/Source/WebKitLegacy/win/WebNotificationCenter.h
index 0ea057e..389e98c 100644
--- a/Source/WebKitLegacy/win/WebNotificationCenter.h
+++ b/Source/WebKitLegacy/win/WebNotificationCenter.h
@@ -30,7 +30,7 @@
 
 struct WebNotificationCenterPrivate;
 
-class WebNotificationCenter : public IWebNotificationCenter {
+class WebNotificationCenter final : public IWebNotificationCenter {
 public:
     static WebNotificationCenter* createInstance();
 
diff --git a/Source/WebKitLegacy/win/WebPreferences.h b/Source/WebKitLegacy/win/WebPreferences.h
index 3ce4485..2906b36 100644
--- a/Source/WebKitLegacy/win/WebPreferences.h
+++ b/Source/WebKitLegacy/win/WebPreferences.h
@@ -30,7 +30,7 @@
 #include <WebCore/BString.h>
 #include <wtf/RetainPtr.h>
 
-class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate7 {
+class WebPreferences final : public IWebPreferences, public IWebPreferencesPrivate7 {
 public:
     static WebPreferences* createInstance();
 protected:
diff --git a/Source/WebKitLegacy/win/WebResource.h b/Source/WebKitLegacy/win/WebResource.h
index 4df3e0c..055b5e8 100644
--- a/Source/WebKitLegacy/win/WebResource.h
+++ b/Source/WebKitLegacy/win/WebResource.h
@@ -34,7 +34,7 @@
 #include <wtf/URL.h>
 #include <wtf/text/WTFString.h>
 
-class WebResource : public IWebResource {
+class WebResource final : public IWebResource {
 public:
     static WebResource* createInstance(RefPtr<WebCore::SharedBuffer>&&, const WebCore::ResourceResponse&);
 protected:
diff --git a/Source/WebKitLegacy/win/WebScriptWorld.h b/Source/WebKitLegacy/win/WebScriptWorld.h
index 9caba2e..0dd63b7 100644
--- a/Source/WebKitLegacy/win/WebScriptWorld.h
+++ b/Source/WebKitLegacy/win/WebScriptWorld.h
@@ -32,7 +32,7 @@
     class DOMWrapperWorld;
 }
 
-class WebScriptWorld : public IWebScriptWorld {
+class WebScriptWorld final : public IWebScriptWorld {
     WTF_MAKE_NONCOPYABLE(WebScriptWorld);
 public:
     static WebScriptWorld* standardWorld();
diff --git a/Source/WebKitLegacy/win/WebSecurityOrigin.h b/Source/WebKitLegacy/win/WebSecurityOrigin.h
index 05059c5..f798ce3 100644
--- a/Source/WebKitLegacy/win/WebSecurityOrigin.h
+++ b/Source/WebKitLegacy/win/WebSecurityOrigin.h
@@ -31,7 +31,7 @@
 #include "WebKit.h"
 #include <WebCore/SecurityOrigin.h>
 
-class DECLSPEC_UUID("6EB8D98F-2723-4472-88D3-5936F9D6E631") WebSecurityOrigin : public IWebSecurityOrigin2 {
+class DECLSPEC_UUID("6EB8D98F-2723-4472-88D3-5936F9D6E631") WebSecurityOrigin final : public IWebSecurityOrigin2 {
 public:
     // WebSecurityOrigin
     static WebSecurityOrigin* createInstance(WebCore::SecurityOrigin* origin);
diff --git a/Source/WebKitLegacy/win/WebSerializedJSValue.h b/Source/WebKitLegacy/win/WebSerializedJSValue.h
index 99a5c15..3c61321 100644
--- a/Source/WebKitLegacy/win/WebSerializedJSValue.h
+++ b/Source/WebKitLegacy/win/WebSerializedJSValue.h
@@ -35,7 +35,7 @@
     class SerializedScriptValue;
 }
 
-class WebSerializedJSValue : public IWebSerializedJSValue, public IWebSerializedJSValuePrivate {
+class WebSerializedJSValue final : public IWebSerializedJSValue, public IWebSerializedJSValuePrivate {
     WTF_MAKE_NONCOPYABLE(WebSerializedJSValue);
 public:
     static COMPtr<WebSerializedJSValue> createInstance();
diff --git a/Source/WebKitLegacy/win/WebTextRenderer.h b/Source/WebKitLegacy/win/WebTextRenderer.h
index 68e5c52..34f6076 100644
--- a/Source/WebKitLegacy/win/WebTextRenderer.h
+++ b/Source/WebKitLegacy/win/WebTextRenderer.h
@@ -31,7 +31,7 @@
 
 #include "WebKit.h"
 
-class WebTextRenderer : public IWebTextRenderer {
+class WebTextRenderer final : public IWebTextRenderer {
 public:
     static WebTextRenderer* createInstance();
 
diff --git a/Source/WebKitLegacy/win/WebURLAuthenticationChallenge.h b/Source/WebKitLegacy/win/WebURLAuthenticationChallenge.h
index 5242ba7..9133bdb 100644
--- a/Source/WebKitLegacy/win/WebURLAuthenticationChallenge.h
+++ b/Source/WebKitLegacy/win/WebURLAuthenticationChallenge.h
@@ -30,7 +30,7 @@
 #include <WebCore/AuthenticationChallenge.h>
 #include <WebCore/COMPtr.h>
 
-class DECLSPEC_UUID("FD3B2381-0BB6-4B59-AF09-0E599C8901CF") WebURLAuthenticationChallenge : public IWebURLAuthenticationChallenge {
+class DECLSPEC_UUID("FD3B2381-0BB6-4B59-AF09-0E599C8901CF") WebURLAuthenticationChallenge final : public IWebURLAuthenticationChallenge {
 public:
     static WebURLAuthenticationChallenge* createInstance(const WebCore::AuthenticationChallenge&);
     static WebURLAuthenticationChallenge* createInstance(const WebCore::AuthenticationChallenge&, IWebURLAuthenticationChallengeSender*);
diff --git a/Source/WebKitLegacy/win/WebURLAuthenticationChallengeSender.h b/Source/WebKitLegacy/win/WebURLAuthenticationChallengeSender.h
index db30b65..944bfab 100644
--- a/Source/WebKitLegacy/win/WebURLAuthenticationChallengeSender.h
+++ b/Source/WebKitLegacy/win/WebURLAuthenticationChallengeSender.h
@@ -35,7 +35,7 @@
     class AuthenticationClient;
 }
 
-class DECLSPEC_UUID("5CACD637-F82F-491F-947A-5DCA38AA0FEA") WebURLAuthenticationChallengeSender
+class DECLSPEC_UUID("5CACD637-F82F-491F-947A-5DCA38AA0FEA") WebURLAuthenticationChallengeSender final
     : public IWebURLAuthenticationChallengeSender
 {
 public:
diff --git a/Source/WebKitLegacy/win/WebURLCredential.h b/Source/WebKitLegacy/win/WebURLCredential.h
index 6ccb611..33bd051 100644
--- a/Source/WebKitLegacy/win/WebURLCredential.h
+++ b/Source/WebKitLegacy/win/WebURLCredential.h
@@ -29,7 +29,7 @@
 #include "WebKit.h"
 #include <WebCore/Credential.h>
 
-class WebURLCredential : public IWebURLCredential
+class WebURLCredential final : public IWebURLCredential
 {
 public:
     static WebURLCredential* createInstance();
diff --git a/Source/WebKitLegacy/win/WebURLProtectionSpace.h b/Source/WebKitLegacy/win/WebURLProtectionSpace.h
index 2dab3c1..e2ac83f 100644
--- a/Source/WebKitLegacy/win/WebURLProtectionSpace.h
+++ b/Source/WebKitLegacy/win/WebURLProtectionSpace.h
@@ -29,7 +29,7 @@
 #include "WebKit.h"
 #include <WebCore/ProtectionSpace.h>
 
-class WebURLProtectionSpace : public IWebURLProtectionSpace
+class WebURLProtectionSpace final : public IWebURLProtectionSpace
 {
 public:
     static WebURLProtectionSpace* createInstance();
diff --git a/Source/WebKitLegacy/win/WebURLResponse.h b/Source/WebKitLegacy/win/WebURLResponse.h
index 0991792..93410cd 100644
--- a/Source/WebKitLegacy/win/WebURLResponse.h
+++ b/Source/WebKitLegacy/win/WebURLResponse.h
@@ -28,7 +28,7 @@
 #include "WebKit.h"
 #include <WebCore/ResourceResponse.h>
 
-class WebURLResponse : public IWebHTTPURLResponse, IWebURLResponsePrivate
+class WebURLResponse final : public IWebHTTPURLResponse, IWebURLResponsePrivate
 {
 public:
     static WebURLResponse* createInstance();
diff --git a/Source/WebKitLegacy/win/WebUserContentURLPattern.h b/Source/WebKitLegacy/win/WebUserContentURLPattern.h
index f9f473e..85c531d 100644
--- a/Source/WebKitLegacy/win/WebUserContentURLPattern.h
+++ b/Source/WebKitLegacy/win/WebUserContentURLPattern.h
@@ -33,7 +33,7 @@
     class UserContentURLPattern;
 }
 
-class WebUserContentURLPattern : public IWebUserContentURLPattern {
+class WebUserContentURLPattern final : public IWebUserContentURLPattern {
     WTF_MAKE_NONCOPYABLE(WebUserContentURLPattern);
 public:
     static COMPtr<WebUserContentURLPattern> createInstance();
diff --git a/Source/WebKitLegacy/win/WebView.cpp b/Source/WebKitLegacy/win/WebView.cpp
index 6ae21ec..e8bddeb 100644
--- a/Source/WebKitLegacy/win/WebView.cpp
+++ b/Source/WebKitLegacy/win/WebView.cpp
@@ -282,7 +282,7 @@
     return toString(localStorageDatabasePath);
 }
 
-class PreferencesChangedOrRemovedObserver : public IWebNotificationObserver {
+class PreferencesChangedOrRemovedObserver final : public IWebNotificationObserver {
 public:
     static PreferencesChangedOrRemovedObserver* sharedInstance();
 
@@ -7385,7 +7385,7 @@
 }
 #endif
 
-class EnumTextMatches : public IEnumTextMatches
+class EnumTextMatches final : public IEnumTextMatches
 {
     long m_ref;
     UINT m_index;
diff --git a/Source/WebKitLegacy/win/WebView.h b/Source/WebKitLegacy/win/WebView.h
index 1617f10..c3eb08c 100644
--- a/Source/WebKitLegacy/win/WebView.h
+++ b/Source/WebKitLegacy/win/WebView.h
@@ -85,7 +85,7 @@
 interface ID2D1RenderTarget;
 #endif
 
-class WebView 
+class WebView final
     : public IWebView
     , public IWebViewPrivate5
     , public IWebIBActions
diff --git a/Source/WebKitLegacy/win/WebWorkersPrivate.h b/Source/WebKitLegacy/win/WebWorkersPrivate.h
index 87c4c89..ae620c2 100644
--- a/Source/WebKitLegacy/win/WebWorkersPrivate.h
+++ b/Source/WebKitLegacy/win/WebWorkersPrivate.h
@@ -33,7 +33,7 @@
 
 #include "WebKit.h"
 
-class WebWorkersPrivate : public IWebWorkersPrivate {
+class WebWorkersPrivate final : public IWebWorkersPrivate {
 public:
     static WebWorkersPrivate* createInstance();
 private: