bug 1059490 - mark more classes MOZ_FINAL r=froydnj
authorTrevor Saunders <trev.saunders@gmail.com>
Wed, 27 Aug 2014 14:26:48 -0400
changeset 203123 26c4989e824cd238b0f52b6d9d8e3c9759f80e86
parent 203122 9d4fc9f2d5d177b10bc0426b5f21a3fa4fae3d5c
child 203124 3a575a9f118cb7bd3274124edd32edb64838b669
push id48570
push usertrev.saunders@gmail.com
push dateTue, 02 Sep 2014 22:20:59 +0000
treeherdermozilla-inbound@26c4989e824c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1059490
milestone35.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
bug 1059490 - mark more classes MOZ_FINAL r=froydnj
content/base/src/nsFormData.h
content/base/src/nsScriptLoader.h
content/html/content/src/HTMLPropertiesCollection.h
content/media/webspeech/synth/nsSynthVoiceRegistry.h
dom/plugins/base/nsPluginHost.h
dom/smil/nsSMILAnimationController.h
editor/composer/nsEditingSession.h
embedding/browser/nsDocShellTreeOwner.h
extensions/cookie/nsPermissionManager.h
extensions/spellcheck/src/mozInlineSpellChecker.h
gfx/layers/ipc/ImageBridgeChild.h
layout/base/nsDocumentViewer.cpp
modules/libjar/nsJAR.h
modules/libjar/nsJARChannel.h
modules/libjar/nsJARURI.h
modules/libpref/Preferences.h
netwerk/base/src/nsAsyncStreamCopier.h
netwerk/base/src/nsUDPSocket.h
netwerk/cache2/CacheStorageService.h
parser/html/nsHtml5Parser.h
rdf/base/nsRDFService.h
security/manager/ssl/src/nsCryptoHash.h
security/manager/ssl/src/nsNSSCertificateDB.h
security/manager/ssl/src/nsNSSIOLayer.h
security/manager/ssl/src/nsSSLStatus.h
toolkit/components/url-classifier/nsUrlClassifierPrefixSet.h
widget/gtk/nsDragService.h
xpcom/base/nsGZFileWriter.h
xpfe/appshell/nsWebShellWindow.h
--- a/content/base/src/nsFormData.h
+++ b/content/base/src/nsFormData.h
@@ -21,20 +21,20 @@ namespace mozilla {
 class ErrorResult;
 
 namespace dom {
 class HTMLFormElement;
 class GlobalObject;
 } // namespace dom
 } // namespace mozilla
 
-class nsFormData : public nsIDOMFormData,
-                   public nsIXHRSendable,
-                   public nsFormSubmission,
-                   public nsWrapperCache
+class nsFormData MOZ_FINAL : public nsIDOMFormData,
+                             public nsIXHRSendable,
+                             public nsFormSubmission,
+                             public nsWrapperCache
 {
   ~nsFormData() {}
 
 public:
   explicit nsFormData(nsISupports* aOwner = nullptr);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsFormData,
--- a/content/base/src/nsScriptLoader.h
+++ b/content/base/src/nsScriptLoader.h
@@ -30,17 +30,17 @@ namespace dom {
 class AutoJSAPI;
 }
 }
 
 //////////////////////////////////////////////////////////////
 // Script loader implementation
 //////////////////////////////////////////////////////////////
 
-class nsScriptLoader : public nsIStreamLoaderObserver
+class nsScriptLoader MOZ_FINAL : public nsIStreamLoaderObserver
 {
   class MOZ_STACK_CLASS AutoCurrentScriptUpdater
   {
   public:
     AutoCurrentScriptUpdater(nsScriptLoader* aScriptLoader,
                              nsIScriptElement* aCurrentScript)
       : mOldScript(aScriptLoader->mCurrentScript)
       , mScriptLoader(aScriptLoader)
--- a/content/html/content/src/HTMLPropertiesCollection.h
+++ b/content/html/content/src/HTMLPropertiesCollection.h
@@ -43,19 +43,19 @@ public:
 protected:
   virtual ~PropertyStringList();
 
   virtual void EnsureFresh() MOZ_OVERRIDE;
 
   nsRefPtr<HTMLPropertiesCollection> mCollection;
 };
 
-class HTMLPropertiesCollection : public nsIHTMLCollection,
-                                 public nsStubMutationObserver,
-                                 public nsWrapperCache
+class HTMLPropertiesCollection MOZ_FINAL : public nsIHTMLCollection,
+                                           public nsStubMutationObserver,
+                                           public nsWrapperCache
 {
   friend class PropertyNodeList;
   friend class PropertyStringList;
 public:
   explicit HTMLPropertiesCollection(nsGenericHTMLElement* aRoot);
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
--- a/content/media/webspeech/synth/nsSynthVoiceRegistry.h
+++ b/content/media/webspeech/synth/nsSynthVoiceRegistry.h
@@ -18,17 +18,17 @@ namespace mozilla {
 namespace dom {
 
 class RemoteVoice;
 class SpeechSynthesisUtterance;
 class SpeechSynthesisChild;
 class nsSpeechTask;
 class VoiceData;
 
-class nsSynthVoiceRegistry : public nsISynthVoiceRegistry
+class nsSynthVoiceRegistry MOZ_FINAL : public nsISynthVoiceRegistry
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSISYNTHVOICEREGISTRY
 
   nsSynthVoiceRegistry();
 
   already_AddRefed<nsSpeechTask> SpeakUtterance(SpeechSynthesisUtterance& aUtterance,
--- a/dom/plugins/base/nsPluginHost.h
+++ b/dom/plugins/base/nsPluginHost.h
@@ -53,20 +53,20 @@ public:
   nsCString   mFullPath;
   int64_t     mLastModifiedTime;
   bool        mSeen;
 
   nsRefPtr<nsInvalidPluginTag> mPrev;
   nsRefPtr<nsInvalidPluginTag> mNext;
 };
 
-class nsPluginHost : public nsIPluginHost,
-                     public nsIObserver,
-                     public nsITimerCallback,
-                     public nsSupportsWeakReference
+class nsPluginHost MOZ_FINAL : public nsIPluginHost,
+                               public nsIObserver,
+                               public nsITimerCallback,
+                               public nsSupportsWeakReference
 {
   virtual ~nsPluginHost();
 public:
   nsPluginHost();
 
   static already_AddRefed<nsPluginHost> GetInst();
 
   NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
--- a/dom/smil/nsSMILAnimationController.h
+++ b/dom/smil/nsSMILAnimationController.h
@@ -35,18 +35,18 @@ class SVGAnimationElement;
 // at most one animation controller per nsDocument so that frame-rate tuning can
 // be performed at a document-level.
 //
 // The animation controller can contain many child time containers (timed
 // document root objects) which may correspond to SVG document fragments within
 // a compound document. These time containers can be paused individually or
 // here, at the document level.
 //
-class nsSMILAnimationController : public nsSMILTimeContainer,
-                                  public nsARefreshObserver
+class nsSMILAnimationController MOZ_FINAL : public nsSMILTimeContainer,
+                                            public nsARefreshObserver
 {
 public:
   explicit nsSMILAnimationController(nsIDocument* aDoc);
 
   // Clears mDocument pointer. (Called by our nsIDocument when it's going away)
   void Disconnect();
 
   // nsSMILContainer
--- a/editor/composer/nsEditingSession.h
+++ b/editor/composer/nsEditingSession.h
@@ -38,19 +38,19 @@ class nsITimer;
 
 class nsComposerCommandsUpdater;
 class nsIChannel;
 class nsIControllers;
 class nsIDocShell;
 class nsIEditor;
 class nsIWebProgress;
 
-class nsEditingSession : public nsIEditingSession,
-                         public nsIWebProgressListener,
-                         public nsSupportsWeakReference
+class nsEditingSession MOZ_FINAL : public nsIEditingSession,
+                                   public nsIWebProgressListener,
+                                   public nsSupportsWeakReference
 {
 public:
 
   nsEditingSession();
 
   // nsISupports
   NS_DECL_ISUPPORTS
 
--- a/embedding/browser/nsDocShellTreeOwner.h
+++ b/embedding/browser/nsDocShellTreeOwner.h
@@ -54,23 +54,23 @@ class nsICDocShellTreeOwner : public nsI
 {
 public:
     NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICDOCSHELLTREEOWNER_IID)
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsICDocShellTreeOwner,
                               NS_ICDOCSHELLTREEOWNER_IID)
 
-class nsDocShellTreeOwner : public nsIDocShellTreeOwner,
-                            public nsIBaseWindow,
-                            public nsIInterfaceRequestor,
-                            public nsIWebProgressListener,
-                            public nsIDOMEventListener,
-                            public nsICDocShellTreeOwner,
-                            public nsSupportsWeakReference
+class nsDocShellTreeOwner MOZ_FINAL : public nsIDocShellTreeOwner,
+                                      public nsIBaseWindow,
+                                      public nsIInterfaceRequestor,
+                                      public nsIWebProgressListener,
+                                      public nsIDOMEventListener,
+                                      public nsICDocShellTreeOwner,
+                                      public nsSupportsWeakReference
 {
 friend class nsWebBrowser;
 friend class nsCommandHandler;
 
 public:
     NS_DECL_ISUPPORTS
 
     NS_DECL_NSIBASEWINDOW
@@ -139,17 +139,17 @@ protected:
 //
 // class ChromeTooltipListener
 //
 // The class that listens to the chrome events and tells the embedding
 // chrome to show tooltips, as appropriate. Handles registering itself
 // with the DOM with AddChromeListeners() and removing itself with
 // RemoveChromeListeners().
 //
-class ChromeTooltipListener : public nsIDOMEventListener
+class ChromeTooltipListener MOZ_FINAL : public nsIDOMEventListener
 {
 protected:
   virtual ~ChromeTooltipListener ( ) ;
 
 public:
   NS_DECL_ISUPPORTS
   
   ChromeTooltipListener ( nsWebBrowser* inBrowser, nsIWebBrowserChrome* inChrome ) ;
--- a/extensions/cookie/nsPermissionManager.h
+++ b/extensions/cookie/nsPermissionManager.h
@@ -23,19 +23,19 @@
 
 class nsIPermission;
 class nsIIDNService;
 class mozIStorageConnection;
 class mozIStorageAsyncStatement;
 
 ////////////////////////////////////////////////////////////////////////////////
 
-class nsPermissionManager : public nsIPermissionManager,
-                            public nsIObserver,
-                            public nsSupportsWeakReference
+class nsPermissionManager MOZ_FINAL : public nsIPermissionManager,
+                                      public nsIObserver,
+                                      public nsSupportsWeakReference
 {
 public:
   class PermissionEntry
   {
   public:
     PermissionEntry(int64_t aID, uint32_t aType, uint32_t aPermission,
                     uint32_t aExpireType, int64_t aExpireTime)
      : mID(aID)
--- a/extensions/spellcheck/src/mozInlineSpellChecker.h
+++ b/extensions/spellcheck/src/mozInlineSpellChecker.h
@@ -111,20 +111,20 @@ protected:
   nsresult FillNoCheckRangeFromAnchor(mozInlineSpellWordUtil& aWordUtil);
 
   nsresult GetDocument(nsIDOMDocument** aDocument);
   nsresult PositionToCollapsedRange(nsIDOMDocument* aDocument,
                                     nsIDOMNode* aNode, int32_t aOffset,
                                     nsIDOMRange** aRange);
 };
 
-class mozInlineSpellChecker : public nsIInlineSpellChecker,
-                              public nsIEditActionListener,
-                              public nsIDOMEventListener,
-                              public nsSupportsWeakReference
+class mozInlineSpellChecker MOZ_FINAL : public nsIInlineSpellChecker,
+                                        public nsIEditActionListener,
+                                        public nsIDOMEventListener,
+                                        public nsSupportsWeakReference
 {
 private:
   friend class mozInlineSpellStatus;
   friend class InitEditorSpellCheckCallback;
   friend class UpdateCurrentDictionaryCallback;
   friend class AutoChangeNumPendingSpellChecks;
   friend class mozInlineSpellResume;
 
--- a/gfx/layers/ipc/ImageBridgeChild.h
+++ b/gfx/layers/ipc/ImageBridgeChild.h
@@ -96,19 +96,19 @@ bool InImageBridgeChildThread();
  * frame before the first layer transaction that will pass the container ID to the
  * CompositableHost happens. In this (unlikely) case the layer is not composited
  * until the layer transaction happens. This means this scenario is not harmful.
  *
  * Since sending an image through imageBridge triggers compositing, the main thread is
  * not used at all (except for the very first transaction that provides the
  * CompositableHost with an AsyncID).
  */
-class ImageBridgeChild : public PImageBridgeChild
-                       , public CompositableForwarder
-                       , public AsyncTransactionTrackersHolder
+class ImageBridgeChild MOZ_FINAL : public PImageBridgeChild
+                                 , public CompositableForwarder
+                                 , public AsyncTransactionTrackersHolder
 {
   friend class ImageContainer;
   typedef InfallibleTArray<AsyncParentMessageData> AsyncParentMessageArray;
 public:
 
   /**
    * Creates the image bridge with a dedicated thread for ImageBridgeChild.
    *
--- a/layout/base/nsDocumentViewer.cpp
+++ b/layout/base/nsDocumentViewer.cpp
@@ -212,23 +212,23 @@ protected:
   virtual ~nsDocViewerFocusListener();
 
 private:
     nsDocumentViewer*  mDocViewer;
 };
 
 
 //-------------------------------------------------------------
-class nsDocumentViewer : public nsIContentViewer,
-                           public nsIContentViewerEdit,
-                           public nsIContentViewerFile,
-                           public nsIDocumentViewerPrint
+class nsDocumentViewer MOZ_FINAL : public nsIContentViewer,
+                                   public nsIContentViewerEdit,
+                                   public nsIContentViewerFile,
+                                   public nsIDocumentViewerPrint
 
 #ifdef NS_PRINTING
-                           , public nsIWebBrowserPrint
+                                 , public nsIWebBrowserPrint
 #endif
 
 {
   friend class nsDocViewerSelectionListener;
   friend class nsPagePrintTimer;
   friend class nsPrintEngine;
 
 public:
--- a/modules/libjar/nsJAR.h
+++ b/modules/libjar/nsJAR.h
@@ -47,17 +47,17 @@ typedef enum
   JAR_NOT_SIGNED          = 7
 } JARManifestStatusType;
 
 /*-------------------------------------------------------------------------
  * Class nsJAR declaration.
  * nsJAR serves as an XPCOM wrapper for nsZipArchive with the addition of
  * JAR manifest file parsing.
  *------------------------------------------------------------------------*/
-class nsJAR : public nsIZipReader
+class nsJAR MOZ_FINAL : public nsIZipReader
 {
   // Allows nsJARInputStream to call the verification functions
   friend class nsJARInputStream;
   // Allows nsZipReaderCache to access mOuterZipEntry
   friend class nsZipReaderCache;
 
   private:
 
--- a/modules/libjar/nsJARChannel.h
+++ b/modules/libjar/nsJARChannel.h
@@ -25,23 +25,23 @@
 #include "nsCOMPtr.h"
 #include "nsString.h"
 #include "prlog.h"
 
 class nsJARInputThunk;
 
 //-----------------------------------------------------------------------------
 
-class nsJARChannel : public nsIJARChannel
-                   , public nsIDownloadObserver
-                   , public nsIStreamListener
-                   , public nsIRemoteOpenFileListener
-                   , public nsIThreadRetargetableRequest
-                   , public nsIThreadRetargetableStreamListener
-                   , public nsHashPropertyBag
+class nsJARChannel MOZ_FINAL : public nsIJARChannel
+                             , public nsIDownloadObserver
+                             , public nsIStreamListener
+                             , public nsIRemoteOpenFileListener
+                             , public nsIThreadRetargetableRequest
+                             , public           nsIThreadRetargetableStreamListener
+                             , public nsHashPropertyBag
 {
 public:
     NS_DECL_ISUPPORTS_INHERITED
     NS_DECL_NSIREQUEST
     NS_DECL_NSICHANNEL
     NS_DECL_NSIJARCHANNEL
     NS_DECL_NSIDOWNLOADOBSERVER
     NS_DECL_NSIREQUESTOBSERVER
--- a/modules/libjar/nsJARURI.h
+++ b/modules/libjar/nsJARURI.h
@@ -27,21 +27,21 @@
 { /* 245abae2-b947-4ded-a46d-9829d3cca462 */         \
     0x245abae2,                                      \
     0xb947,                                          \
     0x4ded,                                          \
     {0xa4, 0x6d, 0x98, 0x29, 0xd3, 0xcc, 0xa4, 0x62} \
 }
 
 
-class nsJARURI : public nsIJARURI,
-                 public nsISerializable,
-                 public nsIClassInfo,
-                 public nsINestedURI,
-                 public nsIIPCSerializableURI
+class nsJARURI MOZ_FINAL : public nsIJARURI,
+                           public nsISerializable,
+                           public nsIClassInfo,
+                           public nsINestedURI,
+                           public nsIIPCSerializableURI
 {
 public:
     NS_DECL_THREADSAFE_ISUPPORTS
     NS_DECL_NSIURI
     NS_DECL_NSIURL
     NS_DECL_NSIJARURI
     NS_DECL_NSISERIALIZABLE
     NS_DECL_NSICLASSINFO
--- a/modules/libpref/Preferences.h
+++ b/modules/libpref/Preferences.h
@@ -31,20 +31,20 @@ typedef void (*PrefChangedFunc)(const ch
 #endif
 
 namespace mozilla {
 
 namespace dom {
 class PrefSetting;
 }
 
-class Preferences : public nsIPrefService,
-                    public nsIObserver,
-                    public nsIPrefBranchInternal,
-                    public nsSupportsWeakReference
+class Preferences MOZ_FINAL : public nsIPrefService,
+                              public nsIObserver,
+                              public nsIPrefBranchInternal,
+                              public nsSupportsWeakReference
 {
 public:
   typedef mozilla::dom::PrefSetting PrefSetting;
 
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIPREFSERVICE
   NS_FORWARD_NSIPREFBRANCH(sRootBranch->)
   NS_DECL_NSIOBSERVER
--- a/netwerk/base/src/nsAsyncStreamCopier.h
+++ b/netwerk/base/src/nsAsyncStreamCopier.h
@@ -10,17 +10,18 @@
 #include "mozilla/Mutex.h"
 #include "nsStreamUtils.h"
 #include "nsCOMPtr.h"
 
 class nsIRequestObserver;
 
 //-----------------------------------------------------------------------------
 
-class nsAsyncStreamCopier : public nsIAsyncStreamCopier, nsIAsyncStreamCopier2
+class nsAsyncStreamCopier MOZ_FINAL : public nsIAsyncStreamCopier,
+                                      nsIAsyncStreamCopier2
 {
 public:
     NS_DECL_THREADSAFE_ISUPPORTS
     NS_DECL_NSIREQUEST
     NS_DECL_NSIASYNCSTREAMCOPIER
 
     // nsIAsyncStreamCopier2
     // We declare it by hand instead of NS_DECL_NSIASYNCSTREAMCOPIER2
--- a/netwerk/base/src/nsUDPSocket.h
+++ b/netwerk/base/src/nsUDPSocket.h
@@ -9,18 +9,18 @@
 #include "nsIUDPSocket.h"
 #include "mozilla/Mutex.h"
 #include "nsIOutputStream.h"
 #include "nsAutoPtr.h"
 #include "nsCycleCollectionParticipant.h"
 
 //-----------------------------------------------------------------------------
 
-class nsUDPSocket : public nsASocketHandler
-                  , public nsIUDPSocket
+class nsUDPSocket MOZ_FINAL : public nsASocketHandler
+                            , public nsIUDPSocket
 {
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIUDPSOCKET
 
   // nsASocketHandler methods:
   virtual void OnSocketReady(PRFileDesc* fd, int16_t outFlags);
   virtual void OnSocketDetached(PRFileDesc* fd);
--- a/netwerk/cache2/CacheStorageService.h
+++ b/netwerk/cache2/CacheStorageService.h
@@ -59,19 +59,19 @@ protected:
     DONT_REPORT = 1 << 1
   };
 
   explicit CacheMemoryConsumer(uint32_t aFlags);
   ~CacheMemoryConsumer() { DoMemoryReport(0); }
   void DoMemoryReport(uint32_t aCurrentSize);
 };
 
-class CacheStorageService : public nsICacheStorageService
-                          , public nsIMemoryReporter
-                          , public nsITimerCallback
+class CacheStorageService MOZ_FINAL : public nsICacheStorageService
+                                    , public nsIMemoryReporter
+                                    , public nsITimerCallback
 {
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSICACHESTORAGESERVICE
   NS_DECL_NSIMEMORYREPORTER
   NS_DECL_NSITIMERCALLBACK
 
   CacheStorageService();
--- a/parser/html/nsHtml5Parser.h
+++ b/parser/html/nsHtml5Parser.h
@@ -22,18 +22,18 @@
 #include "nsDetectionConfident.h"
 #include "nsHtml5OwningUTF16Buffer.h"
 #include "nsHtml5TreeOpExecutor.h"
 #include "nsHtml5StreamParser.h"
 #include "nsHtml5AtomTable.h"
 #include "nsWeakReference.h"
 #include "nsHtml5StreamListener.h"
 
-class nsHtml5Parser : public nsIParser,
-                      public nsSupportsWeakReference
+class nsHtml5Parser MOZ_FINAL : public nsIParser,
+                                public nsSupportsWeakReference
 {
   public:
     NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
     NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsHtml5Parser, nsIParser)
 
     nsHtml5Parser();
--- a/rdf/base/nsRDFService.h
+++ b/rdf/base/nsRDFService.h
@@ -28,18 +28,18 @@
 #include "nsString.h"
 
 struct PLHashTable;
 class nsIRDFLiteral;
 class nsIRDFInt;
 class nsIRDFDate;
 class BlobImpl;
 
-class RDFServiceImpl : public nsIRDFService,
-                       public nsSupportsWeakReference
+class RDFServiceImpl MOZ_FINAL : public nsIRDFService,
+                                 public nsSupportsWeakReference
 {
 protected:
     PLHashTable* mNamedDataSources;
     PLDHashTable mResources;
     PLDHashTable mLiterals;
     PLDHashTable mInts;
     PLDHashTable mDates;
     PLDHashTable mBlobs;
--- a/security/manager/ssl/src/nsCryptoHash.h
+++ b/security/manager/ssl/src/nsCryptoHash.h
@@ -13,17 +13,17 @@
 #include "hasht.h"
 #include "secmodt.h"
 
 class nsIInputStream;
 
 #define NS_CRYPTO_HASH_CID {0x36a1d3b3, 0xd886, 0x4317, {0x96, 0xff, 0x87, 0xb0, 0x00, 0x5c, 0xfe, 0xf7}}
 #define NS_CRYPTO_HMAC_CID {0xa496d0a2, 0xdff7, 0x4e23, {0xbd, 0x65, 0x1c, 0xa7, 0x42, 0xfa, 0x17, 0x8a}}
 
-class nsCryptoHash : public nsICryptoHash, public nsNSSShutDownObject
+class nsCryptoHash MOZ_FINAL : public nsICryptoHash, public nsNSSShutDownObject
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSICRYPTOHASH
 
   nsCryptoHash();
 
 private:
--- a/security/manager/ssl/src/nsNSSCertificateDB.h
+++ b/security/manager/ssl/src/nsNSSCertificateDB.h
@@ -9,18 +9,18 @@
 #include "nsNSSShutDown.h"
 #include "mozilla/RefPtr.h"
 #include "mozilla/Mutex.h"
 #include "certt.h"
 
 class nsCString;
 class nsIArray;
 
-class nsNSSCertificateDB : public nsIX509CertDB
-                         , public nsNSSShutDownObject
+class nsNSSCertificateDB MOZ_FINAL : public nsIX509CertDB
+                                   , public nsNSSShutDownObject
 
 {
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIX509CERTDB
 
   // Use this function to generate a default nickname for a user
   // certificate that is to be imported onto a token.
--- a/security/manager/ssl/src/nsNSSIOLayer.h
+++ b/security/manager/ssl/src/nsNSSIOLayer.h
@@ -19,19 +19,19 @@
 namespace mozilla {
 namespace psm {
 class SharedSSLState;
 }
 }
 
 class nsIObserver;
 
-class nsNSSSocketInfo : public mozilla::psm::TransportSecurityInfo,
-                        public nsISSLSocketControl,
-                        public nsIClientAuthUserDecision
+class nsNSSSocketInfo MOZ_FINAL : public mozilla::psm::TransportSecurityInfo,
+                                  public nsISSLSocketControl,
+                                  public nsIClientAuthUserDecision
 {
 public:
   nsNSSSocketInfo(mozilla::psm::SharedSSLState& aState, uint32_t providerFlags);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_NSISSLSOCKETCONTROL
   NS_DECL_NSICLIENTAUTHUSERDECISION
 
--- a/security/manager/ssl/src/nsSSLStatus.h
+++ b/security/manager/ssl/src/nsSSLStatus.h
@@ -9,17 +9,17 @@
 
 #include "nsISSLStatus.h"
 #include "nsCOMPtr.h"
 #include "nsXPIDLString.h"
 #include "nsIX509Cert.h"
 #include "nsISerializable.h"
 #include "nsIClassInfo.h"
 
-class nsSSLStatus
+class nsSSLStatus MOZ_FINAL
   : public nsISSLStatus
   , public nsISerializable
   , public nsIClassInfo
 {
 protected:
   virtual ~nsSSLStatus();
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
--- a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.h
+++ b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.h
@@ -15,17 +15,17 @@
 #include "nsIUrlClassifierPrefixSet.h"
 #include "nsTArray.h"
 #include "nsToolkitCompsCID.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/Mutex.h"
 #include "mozilla/CondVar.h"
 #include "mozilla/FileUtils.h"
 
-class nsUrlClassifierPrefixSet
+class nsUrlClassifierPrefixSet MOZ_FINAL
   : public nsIUrlClassifierPrefixSet
   , public nsIMemoryReporter
 {
 public:
   nsUrlClassifierPrefixSet();
 
   NS_IMETHOD Init(const nsACString& aName);
   NS_IMETHOD SetPrefixes(const uint32_t* aArray, uint32_t aLength);
--- a/widget/gtk/nsDragService.h
+++ b/widget/gtk/nsDragService.h
@@ -43,18 +43,18 @@ template <>
 class nsAutoRefTraits<GdkDragContext> :
     public nsGObjectRefTraits<GdkDragContext> { };
 #endif
 
 /**
  * Native GTK DragService wrapper
  */
 
-class nsDragService : public nsBaseDragService,
-                      public nsIObserver
+class nsDragService MOZ_FINAL : public nsBaseDragService,
+                                public nsIObserver
 {
 public:
     nsDragService();
 
     NS_DECL_ISUPPORTS_INHERITED
 
     NS_DECL_NSIOBSERVER
 
--- a/xpcom/base/nsGZFileWriter.h
+++ b/xpcom/base/nsGZFileWriter.h
@@ -8,17 +8,17 @@
 #define nsGZFileWriter_h
 
 #include "nsIGZFileWriter.h"
 #include "zlib.h"
 
 /**
  * A simple class for writing .gz files.
  */
-class nsGZFileWriter : public nsIGZFileWriter
+class nsGZFileWriter MOZ_FINAL : public nsIGZFileWriter
 {
   virtual ~nsGZFileWriter();
 
 public:
   nsGZFileWriter();
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIGZFILEWRITER
--- a/xpfe/appshell/nsWebShellWindow.h
+++ b/xpfe/appshell/nsWebShellWindow.h
@@ -18,19 +18,19 @@
 class nsIURI;
 
 struct nsWidgetInitData;
 
 namespace mozilla {
 class WebShellWindowTimerCallback;
 } // namespace mozilla
 
-class nsWebShellWindow : public nsXULWindow,
-                         public nsIWebProgressListener,
-                         public nsIWidgetListener
+class nsWebShellWindow MOZ_FINAL : public nsXULWindow,
+                                   public nsIWebProgressListener,
+                                   public nsIWidgetListener
 {
 public:
   nsWebShellWindow(uint32_t aChromeFlags);
 
   // nsISupports interface...
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsWebShellWindow methods...