Bug 1293603 (part 2) - Make Run() declarations consistent. r=erahm.
authorNicholas Nethercote <nnethercote@mozilla.com>
Mon, 08 Aug 2016 12:18:10 +1000
changeset 308811 b09d90288666fb3afb11877fc45527b904ef23db
parent 308810 4417b2d37bc5b768181b792daccb56c3d29a5d11
child 308812 3660839b76ee6d25836b4c3456103d8e7afe053b
push id80438
push usernnethercote@mozilla.com
push dateWed, 10 Aug 2016 03:24:17 +0000
treeherdermozilla-inbound@3660839b76ee [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerserahm
bugs1293603
milestone51.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 1293603 (part 2) - Make Run() declarations consistent. r=erahm. This patch makes most Run() declarations in subclasses of nsIRunnable have the same form: |NS_IMETHOD Run() override|. As a result of these changes, I had to add |override| to a couple of other functions to satisfy clang's -Winconsistent-missing-override warning.
docshell/base/nsDocShell.cpp
docshell/shistory/nsSHEntryShared.cpp
dom/audiochannel/AudioChannelService.cpp
dom/base/DOMRequest.cpp
dom/base/FragmentOrElement.cpp
dom/base/ImageEncoder.cpp
dom/base/ImportManager.cpp
dom/base/WebSocket.cpp
dom/base/nsContentUtils.cpp
dom/base/nsDOMMutationObserver.cpp
dom/base/nsDocument.cpp
dom/base/nsFocusManager.cpp
dom/base/nsFrameLoader.cpp
dom/base/nsFrameMessageManager.cpp
dom/base/nsFrameMessageManager.h
dom/base/nsGlobalWindow.cpp
dom/base/nsInProcessTabChildGlobal.cpp
dom/base/nsJSEnvironment.cpp
dom/base/nsScriptLoader.cpp
dom/bluetooth/bluedroid/BluetoothOppManager.cpp
dom/bluetooth/bluez/BluetoothDBusService.cpp
dom/bluetooth/bluez/BluetoothOppManager.cpp
dom/cache/ReadStream.cpp
dom/camera/CameraControlImpl.cpp
dom/camera/GonkCameraControl.cpp
dom/camera/TestGonkCameraHardware.cpp
dom/devicestorage/nsDeviceStorage.cpp
dom/fetch/Fetch.cpp
dom/fmradio/FMRadio.cpp
dom/geolocation/nsGeolocation.cpp
dom/html/HTMLCanvasElement.cpp
dom/html/HTMLImageElement.cpp
dom/html/HTMLMediaElement.cpp
dom/html/HTMLObjectElement.cpp
dom/html/nsGenericHTMLElement.cpp
dom/html/nsHTMLDocument.cpp
dom/html/nsTextEditorState.cpp
dom/ipc/ContentParent.cpp
dom/ipc/CrashReporterParent.cpp
dom/ipc/ProcessHangMonitor.cpp
dom/ipc/TabChild.cpp
dom/ipc/TabParent.cpp
dom/media/GraphDriver.cpp
dom/media/Latency.cpp
dom/media/MediaCache.cpp
dom/media/MediaDecoderReader.cpp
dom/media/MediaFormatReader.cpp
dom/media/MediaManager.cpp
dom/media/MediaRecorder.cpp
dom/media/MediaStreamGraph.cpp
dom/media/VideoUtils.h
dom/media/android/AndroidMediaPluginHost.cpp
dom/media/gmp/GMPCDMCallbackProxy.cpp
dom/media/gmp/GMPCDMProxy.h
dom/media/gmp/GMPContentParent.cpp
dom/media/gmp/GMPParent.cpp
dom/media/gmp/GMPService.cpp
dom/media/gmp/GMPServiceChild.cpp
dom/media/gmp/GMPServiceParent.cpp
dom/media/gtest/TestGMPCrossOrigin.cpp
dom/media/gtest/TestMozPromise.cpp
dom/media/imagecapture/CaptureTask.cpp
dom/media/mediasource/TrackBuffersManager.cpp
dom/media/omx/MediaOmxReader.cpp
dom/media/platforms/agnostic/gmp/MediaDataDecoderProxy.h
dom/media/platforms/wmf/WMFVideoMFTManager.cpp
dom/media/systemservices/CamerasParent.cpp
dom/media/systemservices/LoadMonitor.cpp
dom/media/systemservices/MediaUtils.h
dom/media/webaudio/AnalyserNode.cpp
dom/media/webaudio/MediaBufferDecoder.cpp
dom/media/webaudio/PlayingRefChangeHandler.h
dom/media/webrtc/MediaEngineGonkVideoSource.cpp
dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.cpp
dom/media/webspeech/synth/pico/nsPicoService.cpp
dom/nfc/gonk/NfcService.cpp
dom/notification/Notification.cpp
dom/plugins/base/nsPluginHost.cpp
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/plugins/ipc/PluginHangUIParent.cpp
dom/promise/PromiseDebugging.cpp
dom/quota/ActorsParent.cpp
dom/security/nsCSPContext.cpp
dom/security/nsMixedContentBlocker.cpp
dom/smil/nsSMILTimedElement.cpp
dom/storage/DOMStorageCache.cpp
dom/storage/DOMStorageIPC.cpp
dom/system/gonk/AutoMounterSetting.cpp
dom/system/gonk/GonkGPSGeolocationProvider.cpp
dom/system/gonk/MozMtpDatabase.cpp
dom/system/gonk/MozMtpServer.cpp
dom/system/gonk/NetworkWorker.cpp
dom/system/gonk/VolumeServiceTest.cpp
dom/system/gonk/mozstumbler/MozStumbler.cpp
dom/system/gonk/nsVolumeService.cpp
dom/system/nsDeviceSensors.cpp
dom/tv/TVServiceRunnables.h
dom/wifi/WifiProxyService.cpp
dom/workers/ServiceWorkerClient.cpp
dom/workers/ServiceWorkerEvents.cpp
dom/workers/ServiceWorkerInfo.cpp
dom/workers/ServiceWorkerManager.cpp
dom/workers/ServiceWorkerManagerParent.cpp
dom/workers/ServiceWorkerPrivate.cpp
dom/workers/ServiceWorkerRegistrar.cpp
dom/xhr/XMLHttpRequestMainThread.cpp
dom/xslt/xslt/txMozillaXSLTProcessor.cpp
dom/xul/nsXULElement.cpp
editor/composer/nsEditorSpellCheck.cpp
editor/libeditor/EditorBase.cpp
extensions/gio/nsGIOProtocolHandler.cpp
extensions/spellcheck/src/mozInlineSpellChecker.cpp
gfx/layers/AsyncCanvasRenderer.cpp
gfx/layers/ImageContainer.h
gfx/layers/LayerScope.cpp
gfx/layers/d3d11/ReadbackManagerD3D11.cpp
gfx/layers/ipc/ThreadSafeRefcountingWithMainThreadDestruction.h
hal/gonk/GonkDiskSpaceWatcher.cpp
hal/gonk/GonkFMRadio.cpp
hal/gonk/GonkHal.cpp
hal/gonk/GonkSensor.cpp
hal/gonk/GonkSwitch.cpp
image/DecodePool.cpp
image/ProgressTracker.cpp
image/imgFrame.cpp
image/imgRequest.cpp
image/test/gtest/TestDecodeToSurface.cpp
ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
ipc/glue/BackgroundParentImpl.cpp
ipc/netd/Netd.cpp
js/xpconnect/src/XPCComponents.cpp
js/xpconnect/src/XPCJSRuntime.cpp
layout/base/nsPresContext.cpp
layout/base/nsPresShell.cpp
layout/forms/nsComboboxControlFrame.cpp
layout/generic/nsSubDocumentFrame.cpp
layout/style/ErrorReporter.cpp
layout/xul/nsSliderFrame.cpp
media/mtransport/nr_socket_prsock.cpp
media/mtransport/test/TestSyncRunnable.cpp
media/mtransport/test/sockettransportservice_unittest.cpp
media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h
media/webrtc/signaling/src/mediapipeline/MediaPipeline.h
modules/libpref/Preferences.cpp
netwerk/base/BackgroundFileSaver.cpp
netwerk/base/NetStatistics.h
netwerk/base/NetworkActivityMonitor.cpp
netwerk/base/nsAsyncRedirectVerifyHelper.cpp
netwerk/base/nsAsyncStreamCopier.cpp
netwerk/base/nsBaseChannel.h
netwerk/base/nsIOService.cpp
netwerk/base/nsPACMan.cpp
netwerk/base/nsPreloadedStream.cpp
netwerk/base/nsRequestObserverProxy.cpp
netwerk/base/nsSocketTransport2.cpp
netwerk/base/nsTransportUtils.cpp
netwerk/base/nsUDPSocket.cpp
netwerk/cache/nsCacheEntryDescriptor.cpp
netwerk/cache/nsCacheService.cpp
netwerk/cache/nsCacheService.h
netwerk/cache/nsCacheUtils.cpp
netwerk/cache/nsDeleteDir.cpp
netwerk/cache/nsDiskCacheDevice.cpp
netwerk/cache/nsDiskCacheDeviceSQL.cpp
netwerk/cache2/CacheEntry.h
netwerk/cache2/CacheFile.cpp
netwerk/cache2/CacheFileChunk.cpp
netwerk/cache2/CacheFileIOManager.cpp
netwerk/cache2/CacheIndex.h
netwerk/cache2/CacheStorageService.cpp
netwerk/dns/DNSRequestChild.cpp
netwerk/dns/nsDNSService2.cpp
netwerk/ipc/RemoteOpenFileChild.cpp
netwerk/protocol/file/nsFileChannel.cpp
netwerk/protocol/ftp/FTPChannelChild.cpp
netwerk/protocol/ftp/FTPChannelParent.cpp
netwerk/protocol/ftp/nsFtpConnectionThread.cpp
netwerk/protocol/http/AlternateServices.cpp
netwerk/protocol/http/Http2Push.cpp
netwerk/protocol/http/HttpBaseChannel.cpp
netwerk/protocol/http/HttpChannelChild.cpp
netwerk/protocol/http/HttpChannelParent.cpp
netwerk/protocol/http/HttpChannelParentListener.cpp
netwerk/protocol/http/nsHttpActivityDistributor.cpp
netwerk/protocol/http/nsHttpChannel.cpp
netwerk/protocol/http/nsHttpConnection.cpp
netwerk/protocol/http/nsHttpConnectionMgr.cpp
netwerk/protocol/http/nsHttpTransaction.cpp
netwerk/protocol/http/nsHttpTransaction.h
netwerk/protocol/rtsp/RtspChannelChild.cpp
netwerk/protocol/rtsp/controller/RtspController.cpp
netwerk/protocol/rtsp/controller/RtspControllerChild.cpp
netwerk/protocol/websocket/WebSocketChannel.cpp
netwerk/protocol/websocket/WebSocketChannelChild.cpp
netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
netwerk/sctp/datachannel/DataChannel.cpp
netwerk/sctp/datachannel/DataChannel.h
netwerk/test/TestFileInput2.cpp
netwerk/test/TestIOThreads.cpp
parser/html/nsHtml5RefPtr.h
parser/html/nsHtml5StreamParser.cpp
parser/html/nsHtml5TreeOpExecutor.cpp
parser/htmlparser/nsParser.cpp
security/manager/ssl/SSLServerCertVerification.cpp
security/manager/ssl/nsNSSCallbacks.cpp
storage/StorageBaseStatementInternal.cpp
storage/mozStorageAsyncStatementExecution.cpp
storage/mozStorageConnection.cpp
storage/mozStorageConnection.h
storage/mozStoragePrivateHelpers.cpp
storage/mozStorageService.cpp
storage/test/storage_test_harness.h
storage/test/test_service_init_background_thread.cpp
storage/test/test_unlock_notify.cpp
toolkit/components/downloads/nsDownloadManager.cpp
toolkit/components/filewatcher/NativeFileWatcherWin.cpp
toolkit/components/finalizationwitness/FinalizationWitnessService.cpp
toolkit/components/osfile/NativeOSFileInternals.cpp
toolkit/components/places/Helpers.h
toolkit/components/places/History.cpp
toolkit/components/places/nsNavHistory.cpp
toolkit/components/places/tests/cpp/places_test_harness_tail.h
toolkit/components/satchel/nsFormFillController.cpp
toolkit/components/startup/nsAppStartup.cpp
toolkit/components/telemetry/Telemetry.cpp
toolkit/crashreporter/nsExceptionHandler.cpp
toolkit/xre/EventTracer.cpp
toolkit/xre/ProfileReset.h
tools/profiler/core/platform-linux.cc
widget/android/AndroidJNI.cpp
widget/android/AndroidJNIWrapper.cpp
widget/gonk/GonkMemoryPressureMonitoring.cpp
widget/gonk/HwcComposer2D.cpp
widget/gonk/nsAppShell.cpp
widget/gonk/nsScreenManagerGonk.cpp
widget/gonk/nsWindow.cpp
widget/nsBaseFilePicker.cpp
widget/tests/TestAppShellSteadyState.cpp
widget/windows/WidgetTraceEvent.cpp
xpcom/base/nsConsoleService.cpp
xpcom/base/nsMemoryInfoDumper.cpp
xpcom/base/nsMemoryReporterManager.cpp
xpcom/base/nsStatusReporterManager.cpp
xpcom/components/nsNativeModuleLoader.cpp
xpcom/glue/nsProxyRelease.h
xpcom/glue/nsThreadUtils.h
xpcom/io/nsAnonymousTemporaryFile.cpp
xpcom/io/nsInputStreamTee.cpp
xpcom/io/nsLocalFileWin.cpp
xpcom/tests/TestThreadUtils.cpp
xpcom/threads/MozPromise.h
xpcom/threads/SyncRunnable.h
xpcom/threads/TaskDispatcher.h
xpcom/threads/nsThread.cpp
xpfe/appshell/nsContentTreeOwner.cpp
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -9600,17 +9600,17 @@ public:
   {
     // Make sure to keep null things null as needed
     if (aTypeHint) {
       mTypeHint = aTypeHint;
     }
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     return mDocShell->InternalLoad(mURI, mOriginalURI,
                                    mLoadReplace,
                                    mReferrer,
                                    mReferrerPolicy,
                                    mTriggeringPrincipal, mFlags,
                                    nullptr, mTypeHint.get(),
                                    NullString(), mPostData, mHeadersData,
@@ -13679,17 +13679,17 @@ public:
   OnLinkClickEvent(nsDocShell* aHandler, nsIContent* aContent,
                    nsIURI* aURI,
                    const char16_t* aTargetSpec,
                    const nsAString& aFileName,
                    nsIInputStream* aPostDataStream,
                    nsIInputStream* aHeadersDataStream,
                    bool aIsTrusted);
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsAutoPopupStatePusher popupStatePusher(mPopupState);
 
     // We need to set up an AutoJSAPI here for the following reason: When we do
     // OnLinkClickSync we'll eventually end up in nsGlobalWindow::OpenInternal
     // which only does popup blocking if !LegacyIsCallerChromeOrNativeCode().
     // So we need to fake things so that we don't look like native code as far
     // as LegacyIsCallerNativeCode() is concerned.
--- a/docshell/shistory/nsSHEntryShared.cpp
+++ b/docshell/shistory/nsSHEntryShared.cpp
@@ -252,17 +252,17 @@ class DestroyViewerEvent : public mozill
 {
 public:
   DestroyViewerEvent(nsIContentViewer* aViewer, nsIDocument* aDocument)
     : mViewer(aViewer)
     , mDocument(aDocument)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mViewer) {
       mViewer->Destroy();
     }
     return NS_OK;
   }
 
   nsCOMPtr<nsIContentViewer> mViewer;
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -107,17 +107,17 @@ class AudioPlaybackRunnable final : publ
 public:
   AudioPlaybackRunnable(nsPIDOMWindowOuter* aWindow, bool aActive,
                         AudioChannelService::AudibleChangedReasons aReason)
     : mWindow(aWindow)
     , mActive(aActive)
     , mReason(aReason)
   {}
 
- NS_IMETHOD Run()
+ NS_IMETHOD Run() override
  {
     nsCOMPtr<nsIObserverService> observerService =
       services::GetObserverService();
     if (NS_WARN_IF(!observerService)) {
       return NS_ERROR_FAILURE;
     }
 
     nsAutoString state;
--- a/dom/base/DOMRequest.cpp
+++ b/dom/base/DOMRequest.cpp
@@ -316,18 +316,18 @@ public:
            const JS::Value& aResult)
   {
     RefPtr<FireSuccessAsyncTask> asyncTask =
       new FireSuccessAsyncTask(aRequest, aResult);
     MOZ_ALWAYS_SUCCEEDS(NS_DispatchToCurrentThread(asyncTask));
     return NS_OK;
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     mReq->FireSuccess(JS::Handle<JS::Value>::fromMarkedLocation(mResult.address()));
     return NS_OK;
   }
 
 private:
   RefPtr<DOMRequest> mReq;
   JS::PersistentRooted<JS::Value> mResult;
@@ -338,18 +338,18 @@ class FireErrorAsyncTask : public mozill
 public:
   FireErrorAsyncTask(DOMRequest* aRequest,
                      const nsAString& aError) :
     mReq(aRequest),
     mError(aError)
   {
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     mReq->FireError(mError);
     return NS_OK;
   }
 private:
   RefPtr<DOMRequest> mReq;
   nsString mError;
 };
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -1271,17 +1271,17 @@ public:
           container->mFirstChild = nullptr;
         }
         UnbindSubtree(child);
         child->UnbindFromTree();
       }
     }
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsAutoScriptBlocker scriptBlocker;
     uint32_t len = mSubtreeRoots.Length();
     if (len) {
       for (uint32_t i = 0; i < len; ++i) {
         UnbindSubtree(mSubtreeRoots[i]);
       }
       mSubtreeRoots.Clear();
--- a/dom/base/ImageEncoder.cpp
+++ b/dom/base/ImageEncoder.cpp
@@ -28,17 +28,17 @@ namespace dom {
 // due to B2G ICS uses old complier (C++98/03) which forbids local class as
 // template parameter, we need to move this class outside.
 class SurfaceHelper : public Runnable {
 public:
   explicit SurfaceHelper(already_AddRefed<layers::Image> aImage) : mImage(aImage) {}
 
   // It retrieves a SourceSurface reference and convert color format on main
   // thread and passes DataSourceSurface to caller thread.
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // It guarantees the reference will be released on main thread.
     nsCountedRef<nsMainThreadSourceSurfaceRef> surface;
     surface.own(mImage->GetAsSourceSurface().take());
 
     if (surface->GetFormat() == gfx::SurfaceFormat::B8G8R8A8) {
       mDataSourceSurface = surface->GetDataSurface();
     } else {
       mDataSourceSurface = gfxUtils::
--- a/dom/base/ImportManager.cpp
+++ b/dom/base/ImportManager.cpp
@@ -384,17 +384,17 @@ class AsyncEvent : public Runnable {
 public:
   AsyncEvent(nsINode* aNode, bool aSuccess)
     : mNode(aNode)
     , mSuccess(aSuccess)
   {
     MOZ_ASSERT(mNode);
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     return nsContentUtils::DispatchTrustedEvent(mNode->OwnerDoc(),
                                                 mNode,
                                                 mSuccess ? NS_LITERAL_STRING("load")
                                                          : NS_LITERAL_STRING("error"),
                                                 /* aCanBubble = */ false,
                                                 /* aCancelable = */ false);
   }
 
--- a/dom/base/WebSocket.cpp
+++ b/dom/base/WebSocket.cpp
@@ -266,17 +266,17 @@ class CallDispatchConnectionCloseEvents 
 {
 public:
   explicit CallDispatchConnectionCloseEvents(WebSocketImpl* aWebSocketImpl)
     : mWebSocketImpl(aWebSocketImpl)
   {
     aWebSocketImpl->AssertIsOnTargetThread();
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mWebSocketImpl->AssertIsOnTargetThread();
     mWebSocketImpl->DispatchConnectionCloseEvents();
     return NS_OK;
   }
 
 private:
   RefPtr<WebSocketImpl> mWebSocketImpl;
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -4853,17 +4853,17 @@ public:
     mParent = mContent->GetParent();
     mDoc = mContent->OwnerDoc();
   }
   explicit AnonymousContentDestroyer(nsCOMPtr<Element>* aElement) {
     mContent = aElement->forget();
     mParent = mContent->GetParent();
     mDoc = mContent->OwnerDoc();
   }
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mContent->UnbindFromTree();
     return NS_OK;
   }
 private:
   nsCOMPtr<nsIContent> mContent;
   // Hold strong refs to the parent content and document so that they
   // don't die unexpectedly
   nsCOMPtr<nsIDocument> mDoc;
--- a/dom/base/nsDOMMutationObserver.cpp
+++ b/dom/base/nsDOMMutationObserver.cpp
@@ -855,17 +855,17 @@ nsDOMMutationObserver::HandleMutation()
   ClearPendingRecords();
 
   mCallback->Call(this, mutations, *this);
 }
 
 class AsyncMutationHandler : public mozilla::Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsDOMMutationObserver::HandleMutations();
     return NS_OK;
   }
 };
 
 void
 nsDOMMutationObserver::HandleMutationsInternal()
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -1355,17 +1355,17 @@ public:
 
 protected:
   ~SelectorCacheKeyDeleter()
   {
     MOZ_COUNT_DTOR(SelectorCacheKeyDeleter);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     return NS_OK;
   }
 
 private:
   nsAutoPtr<SelectorCacheKey> mSelector;
 };
 
@@ -9100,17 +9100,17 @@ nsDocument::UnblockOnload(bool aFireSync
       asyncDispatcher->PostDOMEvent();
     }
   }
 }
 
 class nsUnblockOnloadEvent : public Runnable {
 public:
   explicit nsUnblockOnloadEvent(nsDocument* aDoc) : mDoc(aDoc) {}
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mDoc->DoUnblockOnload();
     return NS_OK;
   }
 private:
   RefPtr<nsDocument> mDoc;
 };
 
 void
@@ -9985,17 +9985,17 @@ class nsDelayedEventDispatcher : public 
 {
 public:
   explicit nsDelayedEventDispatcher(nsTArray<nsCOMPtr<nsIDocument>>& aDocuments)
   {
     mDocuments.SwapElements(aDocuments);
   }
   virtual ~nsDelayedEventDispatcher() {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     FireOrClearDelayedEvents(mDocuments, true);
     return NS_OK;
   }
 
 private:
   nsTArray<nsCOMPtr<nsIDocument> > mDocuments;
 };
@@ -11440,17 +11440,17 @@ nsDocument::RestorePreviousFullScreenSta
 }
 
 class nsCallRequestFullScreen : public Runnable
 {
 public:
   explicit nsCallRequestFullScreen(UniquePtr<FullscreenRequest>&& aRequest)
     : mRequest(Move(aRequest)) { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mRequest->GetDocument()->RequestFullScreen(Move(mRequest));
     return NS_OK;
   }
 
   UniquePtr<FullscreenRequest> mRequest;
 };
 
--- a/dom/base/nsFocusManager.cpp
+++ b/dom/base/nsFocusManager.cpp
@@ -1990,17 +1990,17 @@ public:
     , mContext(aContext)
     , mEventMessage(aEventMessage)
     , mWindowRaised(aWindowRaised)
     , mIsRefocus(aIsRefocus)
     , mRelatedTarget(aRelatedTarget)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     InternalFocusEvent event(true, mEventMessage);
     event.mFlags.mBubbles = false;
     event.mFlags.mCancelable = false;
     event.mFromRaise = mWindowRaised;
     event.mIsRefocus = mIsRefocus;
     event.mRelatedTarget = mRelatedTarget;
     return EventDispatcher::Dispatch(mTarget, mContext, &event);
@@ -3485,17 +3485,17 @@ public:
 
   ~PointerUnlocker()
   {
     if (PointerUnlocker::sActiveUnlocker == this) {
       PointerUnlocker::sActiveUnlocker = nullptr;
     }
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (PointerUnlocker::sActiveUnlocker == this) {
       PointerUnlocker::sActiveUnlocker = nullptr;
     }
     NS_ENSURE_STATE(nsFocusManager::GetFocusManager());
     nsPIDOMWindowOuter* focused =
       nsFocusManager::GetFocusManager()->GetFocusedWindow();
     nsCOMPtr<nsIDocument> pointerLockedDoc =
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -2736,17 +2736,17 @@ class nsAsyncMessageToChild : public nsS
 {
 public:
   nsAsyncMessageToChild(JSContext* aCx, JS::Handle<JSObject*> aCpows, nsFrameLoader* aFrameLoader)
     : nsSameProcessAsyncMessageBase(aCx, aCpows)
     , mFrameLoader(aFrameLoader)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsInProcessTabChildGlobal* tabChild =
       static_cast<nsInProcessTabChildGlobal*>(mFrameLoader->mChildMessageManager.get());
     // Since bug 1126089, messages can arrive even when the docShell is destroyed.
     // Here we make sure that those messages are not delivered.
     if (tabChild && tabChild->GetInnerManager() && mFrameLoader->GetExistingDocShell()) {
       nsCOMPtr<nsIXPConnectJSObjectHolder> kungFuDeathGrip(tabChild->GetGlobal());
       ReceiveMessage(static_cast<EventTarget*>(tabChild), mFrameLoader,
--- a/dom/base/nsFrameMessageManager.cpp
+++ b/dom/base/nsFrameMessageManager.cpp
@@ -1912,17 +1912,17 @@ nsFrameMessageManager* nsFrameMessageMan
 
 class nsAsyncMessageToSameProcessChild : public nsSameProcessAsyncMessageBase,
                                          public Runnable
 {
 public:
   nsAsyncMessageToSameProcessChild(JSContext* aCx, JS::Handle<JSObject*> aCpows)
     : nsSameProcessAsyncMessageBase(aCx, aCpows)
   { }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsFrameMessageManager* ppm = nsFrameMessageManager::GetChildProcessManager();
     ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm), nullptr, ppm);
     return NS_OK;
   }
 };
 
 
--- a/dom/base/nsFrameMessageManager.h
+++ b/dom/base/nsFrameMessageManager.h
@@ -315,17 +315,17 @@ private:
                                  bool* aValid);
 };
 
 /* A helper class for taking care of many details for async message sending
    within a single process.  Intended to be used like so:
 
    class MyAsyncMessage : public nsSameProcessAsyncMessageBase, public Runnable
    {
-     NS_IMETHOD Run() {
+     NS_IMETHOD Run() override {
        ReceiveMessage(..., ...);
        return NS_OK;
      }
    };
 
 
    RefPtr<nsSameProcessAsyncMessageBase> ev = new MyAsyncMessage();
    nsresult rv = ev->Init(...);
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -8476,17 +8476,17 @@ public:
   PostCloseEvent(nsGlobalWindow* aWindow, bool aIndirect) {
     nsCOMPtr<nsIRunnable> ev = new nsCloseEvent(aWindow, aIndirect);
     nsresult rv = NS_DispatchToCurrentThread(ev);
     if (NS_SUCCEEDED(rv))
       aWindow->MaybeForgiveSpamCount();
     return rv;
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     if (mWindow) {
       if (mIndirect) {
         return PostCloseEvent(mWindow, false);
       }
       mWindow->ReallyCloseWindow();
     }
     return NS_OK;
   }
@@ -8846,17 +8846,17 @@ class nsPendingTimeoutRunner : public Ru
 {
 public:
   explicit nsPendingTimeoutRunner(nsGlobalWindow* aWindow)
     : mWindow(aWindow)
   {
     NS_ASSERTION(mWindow, "mWindow is null.");
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsGlobalWindow::RunPendingTimeoutsRecursive(mWindow, mWindow);
 
     return NS_OK;
   }
 
 private:
   RefPtr<nsGlobalWindow> mWindow;
@@ -8947,17 +8947,17 @@ class WindowDestroyedEvent : public Runn
 public:
   WindowDestroyedEvent(nsIDOMWindow* aWindow, uint64_t aID,
                        const char* aTopic) :
     mID(aID), mTopic(aTopic)
   {
     mWindow = do_GetWeakReference(aWindow);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIObserverService> observerService =
       services::GetObserverService();
     if (observerService) {
       nsCOMPtr<nsISupportsPRUint64> wrapper =
         do_CreateInstance(NS_SUPPORTS_PRUINT64_CONTRACTID);
       if (wrapper) {
         wrapper->SetData(mID);
@@ -9373,17 +9373,17 @@ nsGlobalWindow::ShowModalDialog(JSContex
 class ChildCommandDispatcher : public Runnable
 {
 public:
   ChildCommandDispatcher(nsGlobalWindow* aWindow,
                          nsITabChild* aTabChild,
                          const nsAString& aAction)
   : mWindow(aWindow), mTabChild(aTabChild), mAction(aAction) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsPIWindowRoot> root = mWindow->GetTopWindowRoot();
     if (!root) {
       return NS_OK;
     }
 
     nsTArray<nsCString> enabledCommands, disabledCommands;
     root->GetEnabledDisabledCommands(enabledCommands, disabledCommands);
@@ -9402,17 +9402,17 @@ private:
 
 class CommandDispatcher : public Runnable
 {
 public:
   CommandDispatcher(nsIDOMXULCommandDispatcher* aDispatcher,
                     const nsAString& aAction)
   : mDispatcher(aDispatcher), mAction(aAction) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     return mDispatcher->UpdateCommands(mAction);
   }
 
   nsCOMPtr<nsIDOMXULCommandDispatcher> mDispatcher;
   nsString                             mAction;
 };
 
@@ -10194,17 +10194,17 @@ public:
     : mWindow(aWindow)
   {
     MOZ_ASSERT(mWindow);
     MOZ_ASSERT(mWindow->IsInnerWindow());
     mOldURL.Assign(aOldURL);
     mNewURL.Assign(aNewURL);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_PRECONDITION(NS_IsMainThread(), "Should be called on the main thread.");
     return mWindow->FireHashchange(mOldURL, mNewURL);
   }
 
 private:
   nsString mOldURL;
   nsString mNewURL;
@@ -10799,17 +10799,17 @@ public:
   NotifyIdleObserverRunnable(nsIIdleObserver* aIdleObserver,
                              uint32_t aTimeInS,
                              bool aCallOnidle,
                              nsGlobalWindow* aIdleWindow)
     : mIdleObserver(aIdleObserver), mTimeInS(aTimeInS), mIdleWindow(aIdleWindow),
       mCallOnidle(aCallOnidle)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mIdleWindow->ContainsIdleObserver(mIdleObserver, mTimeInS)) {
       return mCallOnidle ? mIdleObserver->Onidle() : mIdleObserver->Onactive();
     }
     return NS_OK;
   }
 
 private:
--- a/dom/base/nsInProcessTabChildGlobal.cpp
+++ b/dom/base/nsInProcessTabChildGlobal.cpp
@@ -306,17 +306,17 @@ nsInProcessTabChildGlobal::InitTabChildG
 
 class nsAsyncScriptLoad : public Runnable
 {
 public:
     nsAsyncScriptLoad(nsInProcessTabChildGlobal* aTabChild, const nsAString& aURL,
                       bool aRunInGlobalScope)
       : mTabChild(aTabChild), mURL(aURL), mRunInGlobalScope(aRunInGlobalScope) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mTabChild->LoadFrameScript(mURL, mRunInGlobalScope);
     return NS_OK;
   }
   RefPtr<nsInProcessTabChildGlobal> mTabChild;
   nsString mURL;
   bool mRunInGlobalScope;
 };
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -425,17 +425,17 @@ public:
                    JSRuntime* aRuntime,
                    xpc::ErrorReport* aReport,
                    JS::Handle<JS::Value> aError)
     : mWindow(aWindow)
     , mReport(aReport)
     , mError(aRuntime, aError)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsEventStatus status = nsEventStatus_eIgnore;
     nsPIDOMWindowInner* win = mWindow;
     MOZ_ASSERT(win);
     MOZ_ASSERT(NS_IsMainThread());
     // First, notify the DOM that we have a script error, but only if
     // our window is still the current inner.
     JSContext* rootingCx = nsContentUtils::RootingCx();
--- a/dom/base/nsScriptLoader.cpp
+++ b/dom/base/nsScriptLoader.cpp
@@ -1191,17 +1191,17 @@ private:
   RefPtr<nsScriptLoader> mLoader;
   RefPtr<nsScriptLoadRequest> mRequest;
 public:
   nsScriptRequestProcessor(nsScriptLoader* aLoader,
                            nsScriptLoadRequest* aRequest)
     : mLoader(aLoader)
     , mRequest(aRequest)
   {}
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     return mLoader->ProcessRequest(mRequest);
   }
 };
 
 static inline bool
 ParseTypeAttribute(const nsAString& aType, JSVersion* aVersion)
 {
--- a/dom/bluetooth/bluedroid/BluetoothOppManager.cpp
+++ b/dom/bluetooth/bluedroid/BluetoothOppManager.cpp
@@ -107,17 +107,17 @@ class BluetoothOppManager::SendSocketDat
 public:
   SendSocketDataTask(UniquePtr<uint8_t[]> aStream, uint32_t aSize)
     : mStream(Move(aStream))
     , mSize(aSize)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     sBluetoothOppManager->SendPutRequest(mStream.get(), mSize);
 
     return NS_OK;
   }
 
@@ -132,17 +132,17 @@ public:
   ReadFileTask(nsIInputStream* aInputStream,
                uint32_t aRemoteMaxPacketSize) : mInputStream(aInputStream)
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     mAvailablePacketSize = aRemoteMaxPacketSize - kPutRequestHeaderSize;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
 
     uint32_t numRead;
     auto buf = MakeUnique<uint8_t[]>(mAvailablePacketSize);
 
     // function inputstream->Read() only works on non-main thread
     nsresult rv = mInputStream->Read((char*)buf.get(), mAvailablePacketSize,
--- a/dom/bluetooth/bluez/BluetoothDBusService.cpp
+++ b/dom/bluetooth/bluez/BluetoothDBusService.cpp
@@ -572,17 +572,17 @@ class SinkPropertyChangedHandler : publi
 {
 public:
   SinkPropertyChangedHandler(const BluetoothSignal& aSignal)
     : mSignal(aSignal)
   {
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(mSignal.name().EqualsLiteral("PropertyChanged"));
     MOZ_ASSERT(mSignal.value().type() ==
                BluetoothValue::TArrayOfBluetoothNamedValue);
 
     // Replace object path with device address
     nsString address = GetAddressFromObjectPath(mSignal.path());
@@ -602,17 +602,17 @@ class InputPropertyChangedHandler : publ
 {
 public:
   InputPropertyChangedHandler(const BluetoothSignal& aSignal)
     : mSignal(aSignal)
   {
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(mSignal.name().EqualsLiteral("PropertyChanged"));
     MOZ_ASSERT(mSignal.value().type() ==
                BluetoothValue::TArrayOfBluetoothNamedValue);
 
     // Replace object path with device address
     nsString address = GetAddressFromObjectPath(mSignal.path());
@@ -1731,17 +1731,17 @@ public:
 };
 
 class PrepareAdapterRunnable : public Runnable
 {
 public:
   PrepareAdapterRunnable()
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     DispatchToDBusThread(MakeAndAddRef<AddReservedServiceRecordsTask>());
 
     return NS_OK;
   }
 };
@@ -2144,17 +2144,17 @@ public:
 
 private:
   UniquePtr<RawDBusConnection> mConnection;
 };
 
 class StartBluetoothRunnable final : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // This could block. It should never be run on the main thread.
     MOZ_ASSERT(!NS_IsMainThread()); // BT thread
 
 #ifdef MOZ_WIDGET_GONK
     if (!sBluedroid.Enable()) {
       BT_WARNING("Bluetooth not available.");
       RefPtr<Runnable> runnable = new BluetoothService::ToggleBtAck(false);
@@ -2211,17 +2211,17 @@ BluetoothDBusService::StartInternal(Blue
     BT_WARNING("Failed to dispatch to BT thread!");
   }
   return rv;
 }
 
 class DisableBluetoothRunnable final : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (NS_IsMainThread()) {
       // Clear |sControllerArray| here while we're on the main thread
       sControllerArray.Clear();
       // Forward this runnable to BT thread
       return DispatchToBtThread(this);
     }
 
@@ -2304,17 +2304,17 @@ public:
     }
     return NS_OK;
   }
 };
 
 class StopBluetoothRunnable final : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread()); // BT thread
 
     // This could block. It should never be run on the main thread.
     MonitorAutoLock lock(*sStopBluetoothMonitor);
     if (sConnectedDeviceCount > 0) {
       lock.Wait(PR_SecondsToInterval(TIMEOUT_FORCE_TO_DISABLE_BT));
     }
@@ -3546,18 +3546,18 @@ public:
                              BluetoothProfileManagerBase* aManager)
     : mDeviceAddress(aDeviceAddress)
     , mManager(aManager)
   {
     MOZ_ASSERT(!mDeviceAddress.IsCleared());
     MOZ_ASSERT(mManager);
   }
 
-  nsresult
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     mManager->OnUpdateSdpRecords(mDeviceAddress);
 
     return NS_OK;
   }
 
@@ -3578,17 +3578,17 @@ public:
     , mChannel(aChannel)
     , mManager(aManager)
   {
     MOZ_ASSERT(!aDeviceAddress.IsCleared());
     MOZ_ASSERT(!aServiceUuid.IsCleared());
     MOZ_ASSERT(aManager);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     mManager->OnGetServiceChannel(mDeviceAddress, mServiceUuid, mChannel);
 
     return NS_OK;
   }
 
--- a/dom/bluetooth/bluez/BluetoothOppManager.cpp
+++ b/dom/bluetooth/bluez/BluetoothOppManager.cpp
@@ -102,17 +102,17 @@ class SendSocketDataTask : public Runnab
 public:
   SendSocketDataTask(UniquePtr<uint8_t[]> aStream, uint32_t aSize)
     : mStream(Move(aStream))
     , mSize(aSize)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     sBluetoothOppManager->SendPutRequest(mStream.get(), mSize);
 
     return NS_OK;
   }
 
@@ -127,17 +127,17 @@ public:
   ReadFileTask(nsIInputStream* aInputStream,
                uint32_t aRemoteMaxPacketSize) : mInputStream(aInputStream)
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     mAvailablePacketSize = aRemoteMaxPacketSize - kPutRequestHeaderSize;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
 
     uint32_t numRead;
     auto buf = MakeUnique<uint8_t[]>(mAvailablePacketSize);
 
     // function inputstream->Read() only works on non-main thread
     nsresult rv = mInputStream->Read((char*)buf.get(), mAvailablePacketSize,
--- a/dom/cache/ReadStream.cpp
+++ b/dom/cache/ReadStream.cpp
@@ -123,26 +123,26 @@ private:
 // ReadStream is constructed on a child process Worker thread).
 class ReadStream::Inner::NoteClosedRunnable final : public CancelableRunnable
 {
 public:
   explicit NoteClosedRunnable(ReadStream::Inner* aStream)
     : mStream(aStream)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mStream->NoteClosedOnOwningThread();
     mStream = nullptr;
     return NS_OK;
   }
 
   // Note, we must proceed with the Run() method since our actor will not
   // clean itself up until we note that the stream is closed.
-  nsresult Cancel()
+  nsresult Cancel() override
   {
     Run();
     return NS_OK;
   }
 
 private:
   ~NoteClosedRunnable() { }
 
@@ -158,26 +158,26 @@ private:
 // ReadStream is constructed on a child process Worker thread).
 class ReadStream::Inner::ForgetRunnable final : public CancelableRunnable
 {
 public:
   explicit ForgetRunnable(ReadStream::Inner* aStream)
     : mStream(aStream)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mStream->ForgetOnOwningThread();
     mStream = nullptr;
     return NS_OK;
   }
 
   // Note, we must proceed with the Run() method so that we properly
   // call RemoveListener on the actor.
-  nsresult Cancel()
+  nsresult Cancel() override
   {
     Run();
     return NS_OK;
   }
 
 private:
   ~ForgetRunnable() { }
 
--- a/dom/camera/CameraControlImpl.cpp
+++ b/dom/camera/CameraControlImpl.cpp
@@ -25,17 +25,17 @@ CameraControlImpl::CameraControlImpl()
 {
   DOM_CAMERA_LOGT("%s:%d : this=%p\n", __func__, __LINE__, this);
   mCurrentConfiguration.mMode = ICameraControl::kUnspecifiedMode;
 
   class Delegate : public Runnable
   {
   public:
     NS_IMETHOD
-    Run()
+    Run() override
     {
       char stackBaseGuess;
       profiler_register_thread("CameraThread", &stackBaseGuess);
       return NS_OK;
     }
   };
 
   // reuse the same camera thread to conserve resources
--- a/dom/camera/GonkCameraControl.cpp
+++ b/dom/camera/GonkCameraControl.cpp
@@ -1291,18 +1291,18 @@ nsGonkCameraControl::StopRecordingImpl()
   {
   public:
     RecordingComplete(already_AddRefed<DeviceStorageFile> aFile)
       : mFile(aFile)
     { }
 
     ~RecordingComplete() { }
 
-    NS_IMETHODIMP
-    Run()
+    NS_IMETHOD
+    Run() override
     {
       MOZ_ASSERT(NS_IsMainThread());
 
       nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
       obs->NotifyObservers(mFile, "file-watcher-notify", u"modified");
       return NS_OK;
     }
 
--- a/dom/camera/TestGonkCameraHardware.cpp
+++ b/dom/camera/TestGonkCameraHardware.cpp
@@ -155,18 +155,18 @@ TestGonkCameraHardwareListener::HandleEv
         if (!NS_WARN_IF(!mCameraThread)) {
           class DeferredSystemFailure : public Runnable
           {
           public:
             DeferredSystemFailure(nsGonkCameraControl* aTarget)
               : mTarget(aTarget)
             { }
 
-            NS_IMETHODIMP
-            Run()
+            NS_IMETHOD
+            Run() override
             {
               OnSystemError(mTarget, CameraControlListener::kSystemService, 100, 0);
               return NS_OK;
             }
 
           protected:
             RefPtr<nsGonkCameraControl> mTarget;
           };
--- a/dom/devicestorage/nsDeviceStorage.cpp
+++ b/dom/devicestorage/nsDeviceStorage.cpp
@@ -492,17 +492,17 @@ public:
   IOEventComplete(DeviceStorageFile *aFile, const char *aType)
     : mFile(aFile)
     , mType(aType)
   {
   }
 
   ~IOEventComplete() {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     nsString data;
     CopyASCIItoUTF16(mType, data);
     nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
 
     obs->NotifyObservers(mFile, "file-watcher-notify", data.get());
 
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -115,18 +115,18 @@ public:
   MainThreadFetchRunnable(WorkerFetchResolver* aResolver,
                           InternalRequest* aRequest)
     : mResolver(aResolver)
     , mRequest(aRequest)
   {
     MOZ_ASSERT(mResolver);
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     AssertIsOnMainThread();
     RefPtr<FetchDriver> fetch;
     RefPtr<PromiseWorkerProxy> proxy = mResolver->mPromiseProxy;
 
     {
       // Acquire the proxy mutex while getting data from the WorkerPrivate...
       MutexAutoLock lock(proxy->Lock());
--- a/dom/fmradio/FMRadio.cpp
+++ b/dom/fmradio/FMRadio.cpp
@@ -55,18 +55,18 @@ public:
     MOZ_ASSERT(aType >= FMRadioRequestArgs::T__None &&
                aType <= FMRadioRequestArgs::T__Last,
                "Wrong FMRadioRequestArgs in FMRadioRequest");
 
     mFMRadio = do_GetWeakReference(static_cast<nsIDOMEventTarget*>(aFMRadio));
     mType = aType;
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "Wrong thread!");
 
     nsCOMPtr<nsIDOMEventTarget> target = do_QueryReferent(mFMRadio);
     if (!target) {
       return NS_OK;
     }
 
--- a/dom/geolocation/nsGeolocation.cpp
+++ b/dom/geolocation/nsGeolocation.cpp
@@ -201,17 +201,17 @@ class RequestPromptEvent : public Runnab
 {
 public:
   RequestPromptEvent(nsGeolocationRequest* aRequest, nsWeakPtr aWindow)
     : mRequest(aRequest)
     , mWindow(aWindow)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsPIDOMWindowInner> window = do_QueryReferent(mWindow);
     nsContentPermissionUtils::AskPermission(mRequest, window);
     return NS_OK;
   }
 
 private:
   RefPtr<nsGeolocationRequest> mRequest;
@@ -222,17 +222,17 @@ class RequestAllowEvent : public Runnabl
 {
 public:
   RequestAllowEvent(int allow, nsGeolocationRequest* request)
     : mAllow(allow),
       mRequest(request)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     if (mAllow) {
       mRequest->Allow(JS::UndefinedHandleValue);
     } else {
       mRequest->Cancel();
     }
     return NS_OK;
   }
 
@@ -246,17 +246,17 @@ class RequestSendLocationEvent : public 
 public:
   RequestSendLocationEvent(nsIDOMGeoPosition* aPosition,
                            nsGeolocationRequest* aRequest)
     : mPosition(aPosition),
       mRequest(aRequest)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mRequest->SendLocation(mPosition);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIDOMGeoPosition> mPosition;
   RefPtr<nsGeolocationRequest> mRequest;
   RefPtr<Geolocation> mLocator;
--- a/dom/html/HTMLCanvasElement.cpp
+++ b/dom/html/HTMLCanvasElement.cpp
@@ -1264,17 +1264,17 @@ HTMLCanvasElement::OnVisibilityChange()
   if (mOffscreenCanvas) {
     class Runnable final : public CancelableRunnable
     {
     public:
       explicit Runnable(AsyncCanvasRenderer* aRenderer)
         : mRenderer(aRenderer)
       {}
 
-      NS_IMETHOD Run()
+      NS_IMETHOD Run() override
       {
         if (mRenderer && mRenderer->mContext) {
           mRenderer->mContext->OnVisibilityChange();
         }
 
         return NS_OK;
       }
 
@@ -1306,17 +1306,17 @@ HTMLCanvasElement::OnMemoryPressure()
   if (mOffscreenCanvas) {
     class Runnable final : public CancelableRunnable
     {
     public:
       explicit Runnable(AsyncCanvasRenderer* aRenderer)
         : mRenderer(aRenderer)
       {}
 
-      NS_IMETHOD Run()
+      NS_IMETHOD Run() override
       {
         if (mRenderer && mRenderer->mContext) {
           mRenderer->mContext->OnMemoryPressure();
         }
 
         return NS_OK;
       }
 
--- a/dom/html/HTMLImageElement.cpp
+++ b/dom/html/HTMLImageElement.cpp
@@ -87,17 +87,17 @@ public:
   ImageLoadTask(HTMLImageElement *aElement, bool aAlwaysLoad)
     : mElement(aElement)
     , mAlwaysLoad(aAlwaysLoad)
   {
     mDocument = aElement->OwnerDoc();
     mDocument->BlockOnload();
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mElement->mPendingImageLoadTask == this) {
       mElement->mPendingImageLoadTask = nullptr;
       mElement->LoadSelectedImage(true, true, mAlwaysLoad);
     }
     mDocument->UnblockOnload(false);
     return NS_OK;
   }
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -236,17 +236,17 @@ private:
   nsString mName;
 
 public:
   nsAsyncEventRunner(const nsAString& aName, HTMLMediaElement* aElement) :
     nsMediaEvent(aElement), mName(aName)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Silently cancel if our load has been cancelled.
     if (IsCancelled())
       return NS_OK;
 
     return mElement->DispatchEvent(mName);
   }
 };
@@ -258,17 +258,17 @@ private:
 public:
   nsSourceErrorEventRunner(HTMLMediaElement* aElement,
                            nsIContent* aSource)
     : nsMediaEvent(aElement),
       mSource(aSource)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Silently cancel if our load has been cancelled.
     if (IsCancelled())
       return NS_OK;
     LOG_EVENT(LogLevel::Debug, ("%p Dispatching simple event source error", mElement.get()));
     return nsContentUtils::DispatchTrustedEvent(mElement->OwnerDoc(),
                                                 mSource,
                                                 NS_LITERAL_STRING("error"),
                                                 false,
@@ -1046,17 +1046,17 @@ private:
 public:
   nsSyncSection(HTMLMediaElement* aElement,
                 nsIRunnable* aRunnable) :
     nsMediaEvent(aElement),
     mRunnable(aRunnable)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Silently cancel if our load has been cancelled.
     if (IsCancelled())
       return NS_OK;
     mRunnable->Run();
     return NS_OK;
   }
 };
 
--- a/dom/html/HTMLObjectElement.cpp
+++ b/dom/html/HTMLObjectElement.cpp
@@ -124,17 +124,17 @@ Element* HTMLObjectElement::sLastFocused
 class PluginFocusSetter : public Runnable
 {
 public:
   PluginFocusSetter(nsIWidget* aWidget, Element* aElement)
   : mWidget(aWidget), mElement(aElement)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mElement) {
       HTMLObjectElement::sLastFocused = mElement;
       bool value = true;
       mWidget->SetPluginFocused(value);
     } else if (!HTMLObjectElement::sLastFocused) {
       bool value = false;
       mWidget->SetPluginFocused(value);
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -117,17 +117,17 @@ using namespace mozilla::dom;
  * nsGenericHTMLFormElement is binded to the tree with the autofocus attribute
  * enabled.
  */
 class nsAutoFocusEvent : public Runnable
 {
 public:
   explicit nsAutoFocusEvent(nsGenericHTMLFormElement* aElement) : mElement(aElement) {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     nsFocusManager* fm = nsFocusManager::GetFocusManager();
     if (!fm) {
       return NS_ERROR_NULL_POINTER;
     }
 
     nsIDocument* document = mElement->OwnerDoc();
 
     nsPIDOMWindowOuter* window = document->GetWindow();
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -2441,17 +2441,17 @@ class DeferredContentEditableCountChange
 public:
   DeferredContentEditableCountChangeEvent(nsHTMLDocument *aDoc,
                                           nsIContent *aElement)
     : mDoc(aDoc)
     , mElement(aElement)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     if (mElement && mElement->OwnerDoc() == mDoc) {
       mDoc->DeferredContentEditableCountChange(mElement);
     }
     return NS_OK;
   }
 
 private:
   RefPtr<nsHTMLDocument> mDoc;
--- a/dom/html/nsTextEditorState.cpp
+++ b/dom/html/nsTextEditorState.cpp
@@ -86,17 +86,17 @@ private:
 class RestoreSelectionState : public Runnable {
 public:
   RestoreSelectionState(nsTextEditorState *aState, nsTextControlFrame *aFrame)
     : mFrame(aFrame),
       mTextEditorState(aState)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     if (!mTextEditorState) {
       return NS_OK;
     }
 
     AutoHideSelectionChanges hideSelectionChanges
       (mFrame->GetConstFrameSelection());
 
     if (mFrame) {
@@ -1110,17 +1110,17 @@ public:
                      const nsAString &aCurrentValue)
     : mState(&aState)
     , mOwnerContent(aOwnerContent)
     , mCurrentValue(aCurrentValue)
   {
     aState.mValueTransferInProgress = true;
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     NS_ENSURE_TRUE(mState, NS_ERROR_NULL_POINTER);
 
     // Transfer the saved value to the editor if we have one
     const nsAString *value = nullptr;
     if (!mCurrentValue.IsEmpty()) {
       value = &mCurrentValue;
     }
 
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -1796,17 +1796,17 @@ DelayedDeleteSubprocess(GeckoChildProces
 // This runnable only exists to delegate ownership of the
 // ContentParent to this runnable, until it's deleted by the event
 // system.
 struct DelayedDeleteContentParentTask : public Runnable
 {
   explicit DelayedDeleteContentParentTask(ContentParent* aObj) : mObj(aObj) { }
 
   // No-op
-  NS_IMETHODIMP Run() { return NS_OK; }
+  NS_IMETHOD Run() override { return NS_OK; }
 
   RefPtr<ContentParent> mObj;
 };
 
 } // namespace
 
 void
 ContentParent::ActorDestroy(ActorDestroyReason why)
--- a/dom/ipc/CrashReporterParent.cpp
+++ b/dom/ipc/CrashReporterParent.cpp
@@ -171,17 +171,17 @@ CrashReporterParent::FinalizeChildData()
   nsCOMPtr<nsIThread> mainThread = do_GetMainThread();
   class NotifyOnMainThread : public Runnable
   {
   public:
     explicit NotifyOnMainThread(CrashReporterParent* aCR)
       : mCR(aCR)
     { }
 
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       mCR->NotifyCrashService();
       return NS_OK;
     }
   private:
     CrashReporterParent* mCR;
   };
   SyncRunnable::DispatchToThread(mainThread, new NotifyOnMainThread(this));
 }
--- a/dom/ipc/ProcessHangMonitor.cpp
+++ b/dom/ipc/ProcessHangMonitor.cpp
@@ -552,17 +552,17 @@ public:
     : mProcess(aProcess),
       mParent(aParent),
       mHangData(aHangData),
       mBrowserDumpId(aBrowserDumpId),
       mTakeMinidump(aTakeMinidump)
   {}
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     // chrome process, main thread
     MOZ_RELEASE_ASSERT(NS_IsMainThread());
 
     nsString dumpId;
     if ((mHangData.type() == HangData::TPluginHangData) && mTakeMinidump) {
       // We've been handed a partial minidump; complete it with plugin and
       // content process dumps.
@@ -659,17 +659,17 @@ HangMonitorParent::RecvHangEvidence(cons
 class ClearHangNotifier final : public Runnable
 {
 public:
   explicit ClearHangNotifier(HangMonitoredProcess* aProcess)
     : mProcess(aProcess)
   {}
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     // chrome process, main thread
     MOZ_RELEASE_ASSERT(NS_IsMainThread());
     mProcess->ClearHang();
 
     nsCOMPtr<nsIObserverService> observerService =
       mozilla::services::GetObserverService();
     observerService->NotifyObservers(mProcess, "clear-hang-report", nullptr);
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -353,17 +353,17 @@ public:
     {
         MOZ_ASSERT(NS_IsMainThread());
 
         nsresult rv = NS_DispatchToCurrentThread(this);
         NS_ENSURE_SUCCESS_VOID(rv);
     }
 
 private:
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         MOZ_ASSERT(NS_IsMainThread());
         MOZ_ASSERT(mInfo);
 
         mInfo->FireCallback();
         return NS_OK;
     }
 };
@@ -384,17 +384,17 @@ public:
 private:
     ~DelayedDeleteRunnable()
     {
         MOZ_ASSERT(NS_IsMainThread());
         MOZ_ASSERT(!mTabChild);
     }
 
     NS_IMETHOD
-    Run()
+    Run() override
     {
         MOZ_ASSERT(NS_IsMainThread());
         MOZ_ASSERT(mTabChild);
 
         // Check in case ActorDestroy was called after RecvDestroy message.
         if (mTabChild->IPCOpen()) {
             Unused << PBrowserChild::Send__delete__(mTabChild);
         }
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -145,17 +145,17 @@ public:
 private:
     ~OpenFileAndSendFDRunnable()
     {
         MOZ_ASSERT(!mFD);
     }
 
     // This shouldn't be called directly except by the event loop. Use Dispatch
     // to start the sequence.
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         if (NS_IsMainThread()) {
             SendResponse();
         } else if (mFD) {
             CloseFile();
         } else {
             OpenFile();
         }
@@ -2982,17 +2982,17 @@ class LayerTreeUpdateRunnable final
 public:
   explicit LayerTreeUpdateRunnable(LayerTreeUpdateObserver* aObs, bool aActive)
     : mUpdateObserver(aObs), mActive(aActive)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
 private:
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     if (RefPtr<TabParent> tabParent = mUpdateObserver->GetTabParent()) {
       tabParent->LayerTreeUpdate(mActive);
     }
     return NS_OK;
   }
 };
 
--- a/dom/media/GraphDriver.cpp
+++ b/dom/media/GraphDriver.cpp
@@ -158,17 +158,17 @@ ThreadedDriver::ThreadedDriver(MediaStre
 { }
 
 class MediaStreamGraphShutdownThreadRunnable : public Runnable {
 public:
   explicit MediaStreamGraphShutdownThreadRunnable(already_AddRefed<nsIThread> aThread)
     : mThread(aThread)
   {
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(mThread);
 
     mThread->Shutdown();
     mThread = nullptr;
     return NS_OK;
   }
@@ -189,17 +189,17 @@ ThreadedDriver::~ThreadedDriver()
   }
 }
 class MediaStreamGraphInitThreadRunnable : public Runnable {
 public:
   explicit MediaStreamGraphInitThreadRunnable(ThreadedDriver* aDriver)
     : mDriver(aDriver)
   {
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     char aLocal;
     STREAM_LOG(LogLevel::Debug, ("Starting system thread"));
     profiler_register_thread("MediaStreamGraph", &aLocal);
     LIFECYCLE_LOG("Starting a new system driver for graph %p\n",
                   mDriver->mGraphImpl);
 
     GraphDriver* previousDriver = nullptr;
--- a/dom/media/Latency.cpp
+++ b/dom/media/Latency.cpp
@@ -57,17 +57,17 @@ public:
   LogEvent(AsyncLatencyLogger::LatencyLogIndex aIndex, uint64_t aID, int64_t aValue) :
     mIndex(aIndex),
     mID(aID),
     mValue(aValue),
     mTimeStamp(TimeStamp())
   {}
   ~LogEvent() {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     AsyncLatencyLogger::Get(true)->WriteLog(mIndex, mID, mValue, mTimeStamp);
     return NS_OK;
   }
 
 protected:
   AsyncLatencyLogger::LatencyLogIndex mIndex;
   uint64_t mID;
   int64_t mValue;
--- a/dom/media/MediaCache.cpp
+++ b/dom/media/MediaCache.cpp
@@ -1374,17 +1374,17 @@ MediaCache::Update()
     }
   }
   mSuspendedStatusToNotify.Clear();
 }
 
 class UpdateEvent : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (gMediaCache) {
       gMediaCache->Update();
     }
     return NS_OK;
   }
 };
 
--- a/dom/media/MediaDecoderReader.cpp
+++ b/dom/media/MediaDecoderReader.cpp
@@ -390,17 +390,17 @@ class ReRequestVideoWithSkipTask : publi
 public:
   ReRequestVideoWithSkipTask(MediaDecoderReader* aReader,
                              int64_t aTimeThreshold)
     : mReader(aReader)
     , mTimeThreshold(aTimeThreshold)
   {
   }
 
-  NS_METHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(mReader->OnTaskQueue());
 
     // Make sure ResetDecode hasn't been called in the mean time.
     if (!mReader->mBaseVideoPromise.IsEmpty()) {
       mReader->RequestVideoData(/* aSkip = */ true, mTimeThreshold);
     }
 
@@ -415,17 +415,17 @@ private:
 class ReRequestAudioTask : public Runnable
 {
 public:
   explicit ReRequestAudioTask(MediaDecoderReader* aReader)
     : mReader(aReader)
   {
   }
 
-  NS_METHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(mReader->OnTaskQueue());
 
     // Make sure ResetDecode hasn't been called in the mean time.
     if (!mReader->mBaseAudioPromise.IsEmpty()) {
       mReader->RequestAudioData();
     }
 
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -194,17 +194,17 @@ public:
   DispatchKeyNeededEvent(AbstractMediaDecoder* aDecoder,
                          nsTArray<uint8_t>& aInitData,
                          const nsString& aInitDataType)
     : mDecoder(aDecoder)
     , mInitData(aInitData)
     , mInitDataType(aInitDataType)
   {
   }
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Note: Null check the owner, as the decoder could have been shutdown
     // since this event was dispatched.
     MediaDecoderOwner* owner = mDecoder->GetOwner();
     if (owner) {
       owner->DispatchEncrypted(mInitData, mInitDataType);
     }
     mDecoder = nullptr;
     return NS_OK;
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -667,18 +667,18 @@ public:
     : mError(&aError)
     , mWindowID(aWindowID)
     , mManager(MediaManager::GetInstance())
   {
     mOnSuccess.swap(aOnSuccess);
     mOnFailure.swap(aOnFailure);
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     nsCOMPtr<SuccessCallbackType> onSuccess = mOnSuccess.forget();
     nsCOMPtr<nsIDOMGetUserMediaErrorCallback> onFailure = mOnFailure.forget();
 
     // Only run if the window is still active.
     if (!(mManager->IsWindowStillActive(mWindowID))) {
@@ -711,17 +711,17 @@ class GetUserMediaListenerRemove: public
 {
 public:
   GetUserMediaListenerRemove(uint64_t aWindowID,
     GetUserMediaCallbackMediaStreamListener *aListener)
     : mWindowID(aWindowID)
     , mListener(aListener) {}
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     RefPtr<MediaManager> manager(MediaManager::GetInstance());
     manager->RemoveFromWindowList(mWindowID, mListener);
     return NS_OK;
   }
 
 protected:
@@ -1064,17 +1064,17 @@ public:
     // is fired (which will happen unless the browser shuts down,
     // since we only add this callback when we've successfully appended
     // the desired tracks in the MediaStreamGraph) or when
     // DOMMediaStream::NotifyMediaStreamGraphShutdown is called.
     RefPtr<DOMMediaStream> mStream;
   };
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     auto* globalWindow = nsGlobalWindow::GetInnerWindowWithId(mWindowID);
     nsPIDOMWindowInner* window = globalWindow ? globalWindow->AsInner() : nullptr;
 
     // We're on main-thread, and the windowlist can only
     // be invalidated from the main-thread (see OnNavigation)
     StreamListeners* listeners = mManager->GetWindowListeners(mWindowID);
--- a/dom/media/MediaRecorder.cpp
+++ b/dom/media/MediaRecorder.cpp
@@ -169,17 +169,17 @@ class MediaRecorder::Session: public nsI
   // Create a blob event and send back to client.
   class PushBlobRunnable : public Runnable
   {
   public:
     explicit PushBlobRunnable(Session* aSession)
       : mSession(aSession)
     { }
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       LOG(LogLevel::Debug, ("Session.PushBlobRunnable s=(%p)", mSession.get()));
       MOZ_ASSERT(NS_IsMainThread());
 
       RefPtr<MediaRecorder> recorder = mSession->mRecorder;
       if (!recorder) {
         return NS_OK;
       }
@@ -199,17 +199,17 @@ class MediaRecorder::Session: public nsI
   // Notify encoder error, run in main thread task. (Bug 1095381)
   class EncoderErrorNotifierRunnable : public Runnable
   {
   public:
     explicit EncoderErrorNotifierRunnable(Session* aSession)
       : mSession(aSession)
     { }
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       LOG(LogLevel::Debug, ("Session.ErrorNotifyRunnable s=(%p)", mSession.get()));
       MOZ_ASSERT(NS_IsMainThread());
 
       RefPtr<MediaRecorder> recorder = mSession->mRecorder;
       if (!recorder) {
         return NS_OK;
       }
@@ -228,17 +228,17 @@ class MediaRecorder::Session: public nsI
   class DispatchStartEventRunnable : public Runnable
   {
   public:
     DispatchStartEventRunnable(Session* aSession, const nsAString & aEventName)
       : mSession(aSession)
       , mEventName(aEventName)
     { }
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       LOG(LogLevel::Debug, ("Session.DispatchStartEventRunnable s=(%p)", mSession.get()));
       MOZ_ASSERT(NS_IsMainThread());
 
       NS_ENSURE_TRUE(mSession->mRecorder, NS_OK);
       RefPtr<MediaRecorder> recorder = mSession->mRecorder;
 
       recorder->SetMimeType(mSession->mMimeType);
@@ -258,17 +258,17 @@ class MediaRecorder::Session: public nsI
   {
   public:
     explicit ExtractRunnable(Session* aSession)
       : mSession(aSession) {}
 
     ~ExtractRunnable()
     {}
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_GetCurrentThread() == mSession->mReadThread);
 
       LOG(LogLevel::Debug, ("Session.ExtractRunnable shutdown = %d", mSession->mEncoder->IsShutdown()));
       if (!mSession->mEncoder->IsShutdown()) {
         mSession->Extract(false);
         nsCOMPtr<nsIRunnable> event = new ExtractRunnable(mSession);
         if (NS_FAILED(NS_DispatchToCurrentThread(event))) {
@@ -358,17 +358,17 @@ class MediaRecorder::Session: public nsI
   // Main thread task.
   // To delete RecordingSession object.
   class DestroyRunnable : public Runnable
   {
   public:
     explicit DestroyRunnable(Session* aSession)
       : mSession(aSession) {}
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       LOG(LogLevel::Debug, ("Session.DestroyRunnable session refcnt = (%d) stopIssued %d s=(%p)",
                          (int)mSession->mRefCnt, mSession->mStopIssued, mSession.get()));
       MOZ_ASSERT(NS_IsMainThread() && mSession);
       RefPtr<MediaRecorder> recorder = mSession->mRecorder;
       if (!recorder) {
         return NS_OK;
       }
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -1448,17 +1448,17 @@ MediaStreamGraphImpl::ForceShutDown(Shut
 
 namespace {
 
 class MediaStreamGraphShutDownRunnable : public Runnable {
 public:
   explicit MediaStreamGraphShutDownRunnable(MediaStreamGraphImpl* aGraph)
     : mGraph(aGraph)
   {}
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_ASSERTION(mGraph->mDetectedNotRunning,
                  "We should know the graph thread control loop isn't running!");
 
     LIFECYCLE_LOG("Shutting down graph %p", mGraph.get());
 
     // We've asserted the graph isn't running.  Use mDriver instead of CurrentDriver
     // to avoid thread-safety checks
@@ -1514,17 +1514,17 @@ private:
 class MediaStreamGraphStableStateRunnable : public Runnable {
 public:
   explicit MediaStreamGraphStableStateRunnable(MediaStreamGraphImpl* aGraph,
                                                bool aSourceIsMSG)
     : mGraph(aGraph)
     , mSourceIsMSG(aSourceIsMSG)
   {
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mGraph) {
       mGraph->RunInStableState(mSourceIsMSG);
     }
     return NS_OK;
   }
 private:
   RefPtr<MediaStreamGraphImpl> mGraph;
@@ -3528,17 +3528,17 @@ MediaStreamGraph::AddStream(MediaStream*
 class GraphStartedRunnable final : public Runnable
 {
 public:
   GraphStartedRunnable(AudioNodeStream* aStream, MediaStreamGraph* aGraph)
   : mStream(aStream)
   , mGraph(aGraph)
   { }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mGraph->NotifyWhenGraphStarted(mStream);
     return NS_OK;
   }
 
 private:
   RefPtr<AudioNodeStream> mStream;
   MediaStreamGraph* mGraph;
 };
--- a/dom/media/VideoUtils.h
+++ b/dom/media/VideoUtils.h
@@ -95,17 +95,17 @@ private:
 
 template<class T>
 class DeleteObjectTask: public Runnable {
 public:
   explicit DeleteObjectTask(nsAutoPtr<T>& aObject)
     : mObject(aObject)
   {
   }
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     NS_ASSERTION(NS_IsMainThread(), "Must be on main thread.");
     mObject = nullptr;
     return NS_OK;
   }
 private:
   nsAutoPtr<T> mObject;
 };
 
--- a/dom/media/android/AndroidMediaPluginHost.cpp
+++ b/dom/media/android/AndroidMediaPluginHost.cpp
@@ -42,17 +42,17 @@ static char* GetResource(Decoder *aDecod
 {
   return static_cast<char*>(aDecoder->mResource);
 }
 
 class GetIntPrefEvent : public Runnable {
 public:
   GetIntPrefEvent(const char* aPref, int32_t* aResult)
     : mPref(aPref), mResult(aResult) {}
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     return Preferences::GetInt(mPref, mResult);
   }
 private:
   const char* mPref;
   int32_t*    mResult;
 };
 
 static bool GetIntPref(const char* aPref, int32_t* aResult)
--- a/dom/media/gmp/GMPCDMCallbackProxy.cpp
+++ b/dom/media/gmp/GMPCDMCallbackProxy.cpp
@@ -29,17 +29,17 @@ public:
                    uint32_t aToken,
                    const nsCString& aSessionId)
     : mProxy(aProxy)
     , mToken(aToken)
     , mSid(NS_ConvertUTF8toUTF16(aSessionId))
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mProxy->OnSetSessionId(mToken, mSid);
     return NS_OK;
   }
 
   RefPtr<CDMProxy> mProxy;
   uint32_t mToken;
   nsString mSid;
 };
@@ -62,17 +62,17 @@ public:
                   uint32_t aPromiseId,
                   bool aSuccess)
     : mProxy(aProxy)
     , mPid(aPromiseId)
     , mSuccess(aSuccess)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mProxy->OnResolveLoadSessionPromise(mPid, mSuccess);
     return NS_OK;
   }
 
   RefPtr<CDMProxy> mProxy;
   dom::PromiseId mPid;
   bool mSuccess;
 };
@@ -106,17 +106,17 @@ public:
                     const nsCString& aMessage)
     : mProxy(aProxy)
     , mPid(aPromiseId)
     , mException(aException)
     , mMsg(aMessage)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mProxy->OnRejectPromise(mPid, mException, mMsg);
     return NS_OK;
   }
 
   RefPtr<CDMProxy> mProxy;
   dom::PromiseId mPid;
   nsresult mException;
   nsCString mMsg;
@@ -157,17 +157,17 @@ public:
                      const nsTArray<uint8_t>& aMessage)
     : mProxy(aProxy)
     , mSid(NS_ConvertUTF8toUTF16(aSessionId))
     , mMsgType(aMessageType)
   {
     mMsg.AppendElements(aMessage);
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mProxy->OnSessionMessage(mSid, ToMediaKeyMessageType(mMsgType), mMsg);
     return NS_OK;
   }
 
   RefPtr<CDMProxy> mProxy;
   dom::PromiseId mPid;
   nsString mSid;
   GMPSessionMessageType mMsgType;
@@ -194,17 +194,17 @@ public:
   ExpirationChangeTask(CDMProxy* aProxy,
                        const nsCString& aSessionId,
                        GMPTimestamp aExpiryTime)
     : mProxy(aProxy)
     , mSid(NS_ConvertUTF8toUTF16(aSessionId))
     , mTimestamp(aExpiryTime)
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mProxy->OnExpirationChange(mSid, mTimestamp);
     return NS_OK;
   }
 
   RefPtr<CDMProxy> mProxy;
   nsString mSid;
   GMPTimestamp mTimestamp;
 };
@@ -256,17 +256,17 @@ public:
                    const nsCString& aMessage)
     : mProxy(aProxy)
     , mSid(NS_ConvertUTF8toUTF16(aSessionId))
     , mException(aException)
     , mSystemCode(aSystemCode)
     , mMsg(NS_ConvertUTF8toUTF16(aMessage))
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mProxy->OnSessionError(mSid, mException, mSystemCode, mMsg);
     return NS_OK;
   }
 
   RefPtr<CDMProxy> mProxy;
   dom::PromiseId mPid;
   nsString mSid;
   nsresult mException;
--- a/dom/media/gmp/GMPCDMProxy.h
+++ b/dom/media/gmp/GMPCDMProxy.h
@@ -212,17 +212,17 @@ private:
                       nsresult aCode,
                       const nsCString& aReason)
       : mProxy(aProxy)
       , mId(aId)
       , mCode(aCode)
       , mReason(aReason)
     {
     }
-    NS_METHOD Run() {
+    NS_IMETHOD Run() override {
       mProxy->RejectPromise(mId, mCode, mReason);
       return NS_OK;
     }
   private:
     RefPtr<GMPCDMProxy> mProxy;
     PromiseId mId;
     nsresult mCode;
     nsCString mReason;
--- a/dom/media/gmp/GMPContentParent.cpp
+++ b/dom/media/gmp/GMPContentParent.cpp
@@ -49,17 +49,17 @@ GMPContentParent::~GMPContentParent()
 class ReleaseGMPContentParent : public Runnable
 {
 public:
   explicit ReleaseGMPContentParent(GMPContentParent* aToRelease)
     : mToRelease(aToRelease)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     return NS_OK;
   }
 
 private:
   RefPtr<GMPContentParent> mToRelease;
 };
 
--- a/dom/media/gmp/GMPParent.cpp
+++ b/dom/media/gmp/GMPParent.cpp
@@ -473,17 +473,17 @@ GMPParent::Shutdown()
 }
 
 class NotifyGMPShutdownTask : public Runnable {
 public:
   explicit NotifyGMPShutdownTask(const nsAString& aNodeId)
     : mNodeId(aNodeId)
   {
   }
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     nsCOMPtr<nsIObserverService> obsService = mozilla::services::GetObserverService();
     MOZ_ASSERT(obsService);
     if (obsService) {
       obsService->NotifyObservers(nullptr, "gmp-shutdown", mNodeId.get());
     }
     return NS_OK;
   }
@@ -1056,17 +1056,17 @@ public:
   }
 
   void TakeCallbacks(nsTArray<UniquePtr<GetGMPContentParentCallback>>& aCallbacks)
   {
     mCallbacks.SwapElements(aCallbacks);
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     for (uint32_t i = 0, length = mCallbacks.Length(); i < length; ++i) {
       mCallbacks[i]->Done(mGMPContentParent);
     }
     return NS_OK;
   }
 
 private:
--- a/dom/media/gmp/GMPService.cpp
+++ b/dom/media/gmp/GMPService.cpp
@@ -122,17 +122,17 @@ private:
       ClearOnShutdown(&sSingletonService);
     }
 
     RefPtr<GeckoMediaPluginService> service = sSingletonService.get();
     return service.forget();
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     mService = GetOrCreateOnMainThread();
     return NS_OK;
   }
 };
 
--- a/dom/media/gmp/GMPServiceChild.cpp
+++ b/dom/media/gmp/GMPServiceChild.cpp
@@ -324,17 +324,17 @@ public:
                        mozilla::ipc::Transport* aTransport,
                        base::ProcessId aOtherPid)
     : mGMPServiceChild(Move(aGMPServiceChild)),
       mTransport(aTransport),
       mOtherPid(aOtherPid)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     RefPtr<GeckoMediaPluginServiceChild> gmp =
       GeckoMediaPluginServiceChild::GetSingleton();
     MOZ_ASSERT(!gmp->mServiceChild);
     if (mGMPServiceChild->Open(mTransport, mOtherPid, XRE_GetIOMessageLoop(),
                                ipc::ChildSide)) {
       gmp->SetServiceChild(Move(mGMPServiceChild));
     } else {
--- a/dom/media/gmp/GMPServiceParent.cpp
+++ b/dom/media/gmp/GMPServiceParent.cpp
@@ -1919,17 +1919,17 @@ GMPServiceParent::RecvGetGMPPluginVersio
 class DeleteGMPServiceParent : public mozilla::Runnable
 {
 public:
   explicit DeleteGMPServiceParent(GMPServiceParent* aToDelete)
     : mToDelete(aToDelete)
   {
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     return NS_OK;
   }
 
 private:
   nsAutoPtr<GMPServiceParent> mToDelete;
 };
 
@@ -1948,17 +1948,17 @@ public:
                         bool* aResult)
     : mGMPServiceParent(aGMPServiceParent),
       mTransport(aTransport),
       mOtherPid(aOtherPid),
       mResult(aResult)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     *mResult = mGMPServiceParent->Open(mTransport, mOtherPid,
                                        XRE_GetIOMessageLoop(), ipc::ParentSide);
     return NS_OK;
   }
 
 private:
   GMPServiceParent* mGMPServiceParent;
--- a/dom/media/gtest/TestGMPCrossOrigin.cpp
+++ b/dom/media/gtest/TestGMPCrossOrigin.cpp
@@ -356,17 +356,17 @@ private:
 
 NS_IMPL_ISUPPORTS(GMPShutdownObserver, nsIRunnable, nsIObserver)
 
 class NotifyObserversTask : public Runnable {
 public:
   explicit NotifyObserversTask(const char* aTopic)
     : mTopic(aTopic)
   {}
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     nsCOMPtr<nsIObserverService> observerService =
         mozilla::services::GetObserverService();
     if (observerService) {
       observerService->NotifyObservers(nullptr, mTopic, nullptr);
     }
     return NS_OK;
   }
@@ -639,17 +639,17 @@ class GMPStorageTest : public GMPDecrypt
   {
   public:
     Updates(GMPStorageTest* aRunner, nsTArray<nsCString>&& aUpdates)
       : mRunner(aRunner),
         mUpdates(Move(aUpdates))
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       for (auto& update : mUpdates) {
         mRunner->Update(update);
       }
       return NS_OK;
     }
 
   private:
--- a/dom/media/gtest/TestMozPromise.cpp
+++ b/dom/media/gtest/TestMozPromise.cpp
@@ -42,17 +42,17 @@ public:
                          TestPromise::ResolveOrRejectValue aValue,
                          int aIterations)
   : mTaskQueue(aTaskQueue)
   , mPromise(aPromise)
   , mValue(aValue)
   , mIterations(aIterations)
   {}
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
     if (!mPromise) {
       // Canceled.
       return NS_OK;
     }
 
     if (--mIterations == 0) {
--- a/dom/media/imagecapture/CaptureTask.cpp
+++ b/dom/media/imagecapture/CaptureTask.cpp
@@ -174,17 +174,17 @@ CaptureTask::PostTrackEndEvent()
 
   // Got track end or finish event, stop the task.
   class TrackEndRunnable : public Runnable
   {
   public:
     explicit TrackEndRunnable(CaptureTask* aTask)
       : mTask(aTask) {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       mTask->TaskComplete(nullptr, NS_ERROR_FAILURE);
       mTask = nullptr;
       return NS_OK;
     }
 
   protected:
     RefPtr<CaptureTask> mTask;
--- a/dom/media/mediasource/TrackBuffersManager.cpp
+++ b/dom/media/mediasource/TrackBuffersManager.cpp
@@ -64,17 +64,17 @@ public:
   DispatchKeyNeededEvent(AbstractMediaDecoder* aDecoder,
                          nsTArray<uint8_t>& aInitData,
                          const nsString& aInitDataType)
     : mDecoder(aDecoder)
     , mInitData(aInitData)
     , mInitDataType(aInitDataType)
   {
   }
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Note: Null check the owner, as the decoder could have been shutdown
     // since this event was dispatched.
     MediaDecoderOwner* owner = mDecoder->GetOwner();
     if (owner) {
       owner->DispatchEncrypted(mInitData, mInitDataType);
     }
     mDecoder = nullptr;
     return NS_OK;
--- a/dom/media/omx/MediaOmxReader.cpp
+++ b/dom/media/omx/MediaOmxReader.cpp
@@ -77,17 +77,17 @@ public:
   : mOmxReader(aOmxReader),
     mLength(aLength),
     mOffset(aOffset),
     mFullLength(aFullLength)
   {
     MOZ_ASSERT(mOmxReader.get());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(mOmxReader->OnTaskQueue());
     NotifyDataArrived();
     return NS_OK;
   }
 
 private:
   void NotifyDataArrived()
--- a/dom/media/platforms/agnostic/gmp/MediaDataDecoderProxy.h
+++ b/dom/media/platforms/agnostic/gmp/MediaDataDecoderProxy.h
@@ -18,17 +18,17 @@ namespace mozilla {
 class InputTask : public Runnable {
 public:
   InputTask(MediaDataDecoder* aDecoder,
             MediaRawData* aSample)
    : mDecoder(aDecoder)
    , mSample(aSample)
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mDecoder->Input(mSample);
     return NS_OK;
   }
 
 private:
   RefPtr<MediaDataDecoder> mDecoder;
   RefPtr<MediaRawData> mSample;
 };
--- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
@@ -294,17 +294,17 @@ FindD3D9BlacklistedDLL() {
 
 class CreateDXVAManagerEvent : public Runnable {
 public:
   CreateDXVAManagerEvent(LayersBackend aBackend, nsCString& aFailureReason)
     : mBackend(aBackend)
     , mFailureReason(aFailureReason)
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     NS_ASSERTION(NS_IsMainThread(), "Must be on main thread.");
     nsACString* failureReason = &mFailureReason;
     nsCString secondFailureReason;
     if (mBackend == LayersBackend::LAYERS_D3D11 &&
         MediaPrefs::PDMWMFAllowD3D11() && IsWin8OrLater()) {
       const nsACString& blacklistedDLL = FindD3D11BlacklistedDLL();
       if (!blacklistedDLL.IsEmpty()) {
         failureReason->AppendPrintf("D3D11 blacklisted with DLL %s",
--- a/dom/media/systemservices/CamerasParent.cpp
+++ b/dom/media/systemservices/CamerasParent.cpp
@@ -41,17 +41,17 @@ namespace camera {
 
 class FrameSizeChangeRunnable : public Runnable {
 public:
   FrameSizeChangeRunnable(CamerasParent *aParent, CaptureEngine capEngine,
                           int cap_id, unsigned int aWidth, unsigned int aHeight)
     : mParent(aParent), mCapEngine(capEngine), mCapId(cap_id),
       mWidth(aWidth), mHeight(aHeight) {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     if (mParent->IsShuttingDown()) {
       // Communication channel is being torn down
       LOG(("FrameSizeChangeRunnable is active without active Child"));
       mResult = 0;
       return NS_OK;
     }
     if (!mParent->SendFrameSizeChange(mCapEngine, mCapId, mWidth, mHeight)) {
       mResult = -1;
@@ -109,17 +109,17 @@ public:
     // We will need to copy this back into a Shmem later on so we prefer
     // using ShmemBuffers to avoid the extra copy.
     if (altbuffer != nullptr) {
       mAlternateBuffer.reset(new unsigned char[size]);
       memcpy(mAlternateBuffer.get(), altbuffer, size);
     }
   };
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     if (mParent->IsShuttingDown()) {
       // Communication channel is being torn down
       mResult = 0;
       return NS_OK;
     }
     if (!mParent->DeliverFrameOverIPC(mCapEngine, mCapId,
                                       Move(mBuffer), mAlternateBuffer.get(),
                                       mSize, mTimeStamp,
--- a/dom/media/systemservices/LoadMonitor.cpp
+++ b/dom/media/systemservices/LoadMonitor.cpp
@@ -97,17 +97,17 @@ LoadMonitor::Observe(nsISupports* /* aSu
 class LoadMonitorAddObserver : public Runnable
 {
 public:
   explicit LoadMonitorAddObserver(RefPtr<LoadMonitor> loadMonitor)
   {
     mLoadMonitor = loadMonitor;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIObserverService> observerService =
         mozilla::services::GetObserverService();
     if (!observerService)
       return NS_ERROR_FAILURE;
 
     nsresult rv = observerService->AddObserver(mLoadMonitor, "xpcom-shutdown-threads", false);
     NS_ENSURE_SUCCESS(rv, rv);
@@ -122,17 +122,17 @@ private:
 class LoadMonitorRemoveObserver : public Runnable
 {
 public:
   explicit LoadMonitorRemoveObserver(RefPtr<LoadMonitor> loadMonitor)
   {
     mLoadMonitor = loadMonitor;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // remove xpcom shutdown observer
     nsCOMPtr<nsIObserverService> observerService =
       mozilla::services::GetObserverService();
 
     if (observerService)
       observerService->RemoveObserver(mLoadMonitor, "xpcom-shutdown-threads");
 
@@ -541,17 +541,17 @@ public:
     : mThread(loadInfoThread),
       mLoadUpdateInterval(loadMonitor->mLoadUpdateInterval),
       mLoadNoiseCounter(0)
   {
     mLoadMonitor = loadMonitor;
     mLoadInfo = loadInfo;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (NS_IsMainThread()) {
       if (mThread) {
         // Don't leak threads!
         mThread->Shutdown(); // can't Shutdown from the thread itself, darn
         // Don't null out mThread!
         // See bug 999104.  We must hold a ref to the thread across Dispatch()
         // since the internal mThread ref could be released while processing
--- a/dom/media/systemservices/MediaUtils.h
+++ b/dom/media/systemservices/MediaUtils.h
@@ -149,17 +149,17 @@ private:
  * Passing variables (closures) to an async function is clunky with Runnable:
  *
  *   void Foo()
  *   {
  *     class FooRunnable : public Runnable
  *     {
  *     public:
  *       FooRunnable(const Bar &aBar) : mBar(aBar) {}
- *       NS_IMETHOD Run()
+ *       NS_IMETHOD Run() override
  *       {
  *         // Use mBar
  *       }
  *     private:
  *       RefPtr<Bar> mBar;
  *     };
  *
  *     RefPtr<Bar> bar = new Bar();
@@ -184,17 +184,17 @@ private:
 
 template<typename OnRunType>
 class LambdaRunnable : public Runnable
 {
 public:
   explicit LambdaRunnable(OnRunType&& aOnRun) : mOnRun(Move(aOnRun)) {}
 private:
   NS_IMETHODIMP
-  Run()
+  Run() override
   {
     return mOnRun();
   }
   OnRunType mOnRun;
 };
 
 template<typename OnRunType>
 already_AddRefed<LambdaRunnable<OnRunType>>
--- a/dom/media/webaudio/AnalyserNode.cpp
+++ b/dom/media/webaudio/AnalyserNode.cpp
@@ -31,17 +31,17 @@ class AnalyserNodeEngine final : public 
   public:
     TransferBuffer(AudioNodeStream* aStream,
                    const AudioChunk& aChunk)
       : mStream(aStream)
       , mChunk(aChunk)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       RefPtr<AnalyserNode> node =
         static_cast<AnalyserNode*>(mStream->Engine()->NodeMainThread());
       if (node) {
         node->AppendChunk(mChunk);
       }
       return NS_OK;
     }
--- a/dom/media/webaudio/MediaBufferDecoder.cpp
+++ b/dom/media/webaudio/MediaBufferDecoder.cpp
@@ -63,17 +63,17 @@ public:
                    WebAudioDecodeJob::ErrorCode aErrorCode)
     : mDecodeJob(aDecodeJob)
     , mFunction(aFunction)
     , mErrorCode(aErrorCode)
   {
     MOZ_ASSERT(aFunction);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     (mDecodeJob.*mFunction)(mErrorCode);
 
     return NS_OK;
   }
 
--- a/dom/media/webaudio/PlayingRefChangeHandler.h
+++ b/dom/media/webaudio/PlayingRefChangeHandler.h
@@ -18,17 +18,17 @@ class PlayingRefChangeHandler final : pu
 public:
   enum ChangeType { ADDREF, RELEASE };
   PlayingRefChangeHandler(AudioNodeStream* aStream, ChangeType aChange)
     : mStream(aStream)
     , mChange(aChange)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     RefPtr<AudioNode> node = mStream->Engine()->NodeMainThread();
     if (node) {
       if (mChange == ADDREF) {
         node->MarkActive();
       } else if (mChange == RELEASE) {
         node->MarkInactive();
       }
--- a/dom/media/webrtc/MediaEngineGonkVideoSource.cpp
+++ b/dom/media/webrtc/MediaEngineGonkVideoSource.cpp
@@ -577,17 +577,17 @@ MediaEngineGonkVideoSource::OnUserError(
   public:
     TakePhotoError(nsTArray<RefPtr<MediaEnginePhotoCallback>>& aCallbacks,
                    nsresult aRv)
       : mRv(aRv)
     {
       mCallbacks.SwapElements(aCallbacks);
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       uint32_t callbackNumbers = mCallbacks.Length();
       for (uint8_t i = 0; i < callbackNumbers; i++) {
         mCallbacks[i]->PhotoError(mRv);
       }
       // MediaEnginePhotoCallback needs to dereference on main thread.
       mCallbacks.Clear();
       return NS_OK;
@@ -624,17 +624,17 @@ MediaEngineGonkVideoSource::OnTakePictur
       : mPhotoDataLength(aLength)
     {
       mCallbacks.SwapElements(aCallbacks);
       mPhotoData = (uint8_t*) malloc(aLength);
       memcpy(mPhotoData, aData, mPhotoDataLength);
       mMimeType = aMimeType;
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       RefPtr<dom::Blob> blob =
         dom::Blob::CreateMemoryBlob(nullptr, mPhotoData, mPhotoDataLength, mMimeType);
       uint32_t callbackCounts = mCallbacks.Length();
       for (uint8_t i = 0; i < callbackCounts; i++) {
         RefPtr<dom::Blob> tempBlob = blob;
         mCallbacks[i]->PhotoComplete(tempBlob.forget());
       }
--- a/dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.cpp
+++ b/dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.cpp
@@ -42,17 +42,17 @@ public:
         mRecognition(recognition),
         mWorkerThread(do_GetCurrentThread())
   {
     MOZ_ASSERT(
       !NS_IsMainThread()); // This should be running on the worker thread
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     MOZ_ASSERT(NS_IsMainThread()); // This method is supposed to run on the main
                                    // thread!
 
     // Declare javascript result events
     RefPtr<SpeechEvent> event = new SpeechEvent(
       mRecognition, SpeechRecognition::EVENT_RECOGNITIONSERVICE_FINAL_RESULT);
     SpeechRecognitionResultList* resultList =
@@ -91,17 +91,17 @@ class DecodeTask : public Runnable
 public:
   DecodeTask(WeakPtr<dom::SpeechRecognition> recogntion,
              const nsTArray<int16_t>& audiovector, ps_decoder_t* ps)
       : mRecognition(recogntion), mAudiovector(audiovector), mPs(ps)
   {
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     char const* hyp;
     int rv;
     int32 final;
     int32 logprob;
     float64 confidence;
     nsAutoCString hypoValue;
 
--- a/dom/media/webspeech/synth/pico/nsPicoService.cpp
+++ b/dom/media/webspeech/synth/pico/nsPicoService.cpp
@@ -349,17 +349,17 @@ PicoCallbackRunnable::DispatchSynthDataR
                           size_t aBufferSize, bool aFirstData,
                           PicoCallbackRunnable* aCallback)
       : mBuffer(aBuffer)
       , mBufferSize(aBufferSize)
       , mFirstData(aFirstData)
       , mCallback(aCallback) {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread());
 
       if (!mCallback->IsCurrentTask()) {
         return NS_ERROR_NOT_AVAILABLE;
       }
 
       nsISpeechTask* task = mCallback->mTask;
--- a/dom/nfc/gonk/NfcService.cpp
+++ b/dom/nfc/gonk/NfcService.cpp
@@ -176,17 +176,17 @@ class NfcConsumer::DispatchNfcEventRunna
 public:
   DispatchNfcEventRunnable(NfcService* aNfcService, const EventOptions& aEvent)
     : mNfcService(aNfcService)
     , mEvent(aEvent)
   {
     MOZ_ASSERT(mNfcService);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     mozilla::AutoSafeJSContext cx;
     RootedDictionary<NfcEventOptions> event(cx);
 
     // the copy constructor is private.
 #define COPY_FIELD(prop) event.prop = mEvent.prop;
--- a/dom/notification/Notification.cpp
+++ b/dom/notification/Notification.cpp
@@ -317,17 +317,17 @@ class FocusWindowRunnable final : public
 {
   nsMainThreadPtrHandle<nsPIDOMWindowInner> mWindow;
 public:
   explicit FocusWindowRunnable(const nsMainThreadPtrHandle<nsPIDOMWindowInner>& aWindow)
     : mWindow(aWindow)
   { }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     AssertIsOnMainThread();
     if (!mWindow->IsCurrentInnerWindow()) {
       // Window has been closed, this observer is not valid anymore
       return NS_OK;
     }
 
     nsIDocument* doc = mWindow->GetExtantDoc();
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -1411,17 +1411,17 @@ nsPluginHost::GetPluginForContentProcess
   return NS_ERROR_FAILURE;
 }
 
 class nsPluginUnloadRunnable : public Runnable
 {
 public:
   explicit nsPluginUnloadRunnable(uint32_t aPluginId) : mPluginId(aPluginId) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     RefPtr<nsPluginHost> host = nsPluginHost::GetInst();
     if (!host) {
       return NS_OK;
     }
     nsPluginTag* pluginTag = host->PluginWithId(mPluginId);
     if (!pluginTag) {
       return NS_OK;
@@ -4190,17 +4190,17 @@ public:
     PR_APPEND_LINK(this, &sRunnableListHead);
   }
 
   virtual ~nsPluginDestroyRunnable()
   {
     PR_REMOVE_LINK(this);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     RefPtr<nsNPAPIPluginInstance> instance;
 
     // Null out mInstance to make sure this code in another runnable
     // will do the right thing even if someone was holding on to this
     // runnable longer than we expect.
     instance.swap(mInstance);
 
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp
+++ b/dom/plugins/base/nsPluginInstanceOwner.cpp
@@ -132,17 +132,17 @@ public:
 class AsyncPaintWaitEvent : public Runnable
 {
 public:
   AsyncPaintWaitEvent(nsIContent* aContent, bool aFinished) :
     mContent(aContent), mFinished(aFinished)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsContentUtils::DispatchTrustedEvent(mContent->OwnerDoc(), mContent,
         mFinished ? NS_LITERAL_STRING("MozPaintWaitFinished") : NS_LITERAL_STRING("MozPaintWait"),
         true, true);
     return NS_OK;
   }
 
 private:
--- a/dom/plugins/ipc/PluginHangUIParent.cpp
+++ b/dom/plugins/ipc/PluginHangUIParent.cpp
@@ -41,17 +41,17 @@ public:
     : mResponseCode(aResponseCode),
       mDontAskCode(aDontAskCode),
       mResponseTimeMs(aResponseTimeMs),
       mTimeoutMs(aTimeoutMs)
   {
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     mozilla::Telemetry::Accumulate(
               mozilla::Telemetry::PLUGIN_HANG_UI_USER_RESPONSE, mResponseCode);
     mozilla::Telemetry::Accumulate(
               mozilla::Telemetry::PLUGIN_HANG_UI_DONT_ASK, mDontAskCode);
     mozilla::Telemetry::Accumulate(
               mozilla::Telemetry::PLUGIN_HANG_UI_RESPONSE_TIME, mResponseTimeMs);
     mozilla::Telemetry::Accumulate(
--- a/dom/promise/PromiseDebugging.cpp
+++ b/dom/promise/PromiseDebugging.cpp
@@ -47,17 +47,17 @@ public:
     // Call the callbacks if necessary.
     // Note that these callbacks may in turn cause Promise to turn
     // uncaught or consumed. Since `sDispatched` is `false`,
     // `FlushRejections` will be called once again, on an ulterior
     // tick.
     PromiseDebugging::FlushUncaughtRejectionsInternal();
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     FlushSync();
     return NS_OK;
   }
 
 private:
   // `true` if an instance of `FlushRejections` is currently dispatched
   // and has not been executed yet.
   static MOZ_THREAD_LOCAL(bool) sDispatched;
--- a/dom/quota/ActorsParent.cpp
+++ b/dom/quota/ActorsParent.cpp
@@ -665,17 +665,17 @@ public:
   BlockAndReturnOriginsForEviction(
                                  nsTArray<RefPtr<DirectoryLockImpl>>& aLocks);
 
 private:
   ~CollectOriginsHelper()
   { }
 
   NS_IMETHOD
-  Run();
+  Run() override;
 };
 
 class OriginOperationBase
   : public BackgroundThreadObject
   , public Runnable
 {
 protected:
   nsresult mResultCode;
@@ -788,17 +788,17 @@ protected:
         mState = State_Complete;
         return;
       default:
         MOZ_CRASH("Bad state!");
     }
   }
 
   NS_IMETHOD
-  Run();
+  Run() override;
 
   virtual nsresult
   DoInitOnMainThread()
   {
     return NS_OK;
   }
 
   virtual void
@@ -1313,17 +1313,17 @@ protected:
   virtual nsresult
   DoProcessOriginDirectories() = 0;
 
 private:
   nsresult
   RunOnMainThread();
 
   NS_IMETHOD
-  Run();
+  Run() override;
 };
 
 struct StorageDirectoryHelper::OriginProps
 {
   enum Type
   {
     eChrome,
     eContent
--- a/dom/security/nsCSPContext.cpp
+++ b/dom/security/nsCSPContext.cpp
@@ -1041,17 +1041,17 @@ class CSPReportSenderRunnable final : pu
         nsCOMPtr<nsISupportsCString> supportscstr =
           do_CreateInstance(NS_SUPPORTS_CSTRING_CONTRACTID);
         NS_ASSERTION(supportscstr, "Couldn't allocate nsISupportsCString");
         supportscstr->SetData(NS_ConvertUTF16toUTF8(aObserverSubject));
         mObserverSubject = do_QueryInterface(supportscstr);
       }
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread());
 
       // 1) notify observers
       nsCOMPtr<nsIObserverService> observerService = mozilla::services::GetObserverService();
       NS_ASSERTION(observerService, "needs observer service");
       nsresult rv = observerService->NotifyObservers(mObserverSubject,
                                                      CSP_VIOLATION_TOPIC,
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -59,17 +59,17 @@ bool nsMixedContentBlocker::sBlockMixedD
 // choice to reload the page with mixed content permitted.
 class nsMixedContentEvent : public Runnable
 {
 public:
   nsMixedContentEvent(nsISupports *aContext, MixedContentTypes aType, bool aRootHasSecureConnection)
     : mContext(aContext), mType(aType), mRootHasSecureConnection(aRootHasSecureConnection)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_ASSERTION(mContext,
                  "You can't call this runnable without a requesting context");
 
     // To update the security UI in the tab with the blocked mixed content, call
     // nsISecurityEventSink::OnSecurityChange.  You can get to the event sink by
     // calling NS_CP_GetDocShellFromContext on the context, and QI'ing to
     // nsISecurityEventSink.
--- a/dom/smil/nsSMILTimedElement.cpp
+++ b/dom/smil/nsSMILTimedElement.cpp
@@ -90,17 +90,17 @@ namespace
     AsyncTimeEventRunner(nsIContent* aTarget, EventMessage aMsg,
                          int32_t aDetail)
       : mTarget(aTarget)
       , mMsg(aMsg)
       , mDetail(aDetail)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       InternalSMILTimeEvent event(true, mMsg);
       event.mDetail = mDetail;
 
       nsPresContext* context = nullptr;
       nsIDocument* doc = mTarget->GetUncomposedDoc();
       if (doc) {
         nsCOMPtr<nsIPresShell> shell = doc->GetShell();
--- a/dom/storage/DOMStorageCache.cpp
+++ b/dom/storage/DOMStorageCache.cpp
@@ -695,17 +695,17 @@ public:
     : mTarget(aUsage)
     , mDelta(aDelta)
   {}
 
 private:
   int64_t* mTarget;
   int64_t mDelta;
 
-  NS_IMETHOD Run() { *mTarget = mDelta; return NS_OK; }
+  NS_IMETHOD Run() override { *mTarget = mDelta; return NS_OK; }
 };
 
 } // namespace
 
 void
 DOMStorageUsage::LoadUsage(const int64_t aUsage)
 {
   // Using kDefaultSet index since it is the index for the persitent data
--- a/dom/storage/DOMStorageIPC.cpp
+++ b/dom/storage/DOMStorageIPC.cpp
@@ -303,17 +303,17 @@ namespace {
 class SendInitialChildDataRunnable : public Runnable
 {
 public:
   explicit SendInitialChildDataRunnable(DOMStorageDBParent* aParent)
     : mParent(aParent)
   {}
 
 private:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (!mParent->IPCOpen()) {
       return NS_OK;
     }
 
     DOMStorageDBBridge* db = DOMStorageCache::GetDatabase();
     if (db) {
       InfallibleTArray<nsCString> scopes;
@@ -663,17 +663,17 @@ public:
 private:
   RefPtr<DOMStorageDBParent> mParent;
   TaskType mType;
   nsCString mSuffix, mOrigin;
   nsString mKey;
   nsString mValue;
   nsresult mRv;
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (!mParent->IPCOpen()) {
       return NS_OK;
     }
 
     switch (mType)
     {
     case loadItem:
@@ -744,17 +744,17 @@ class UsageRunnable : public Runnable
 public:
   UsageRunnable(DOMStorageDBParent* aParent, const nsACString& aOriginScope, const int64_t& aUsage)
   : mParent(aParent)
   , mOriginScope(aOriginScope)
   , mUsage(aUsage)
   {}
 
 private:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (!mParent->IPCOpen()) {
       return NS_OK;
     }
 
     mozilla::Unused << mParent->SendLoadUsage(mOriginScope, mUsage);
     return NS_OK;
   }
--- a/dom/system/gonk/AutoMounterSetting.cpp
+++ b/dom/system/gonk/AutoMounterSetting.cpp
@@ -162,17 +162,17 @@ AutoMounterSetting::StatusStr(int32_t aS
 }
 
 class CheckVolumeSettingsRunnable : public Runnable
 {
 public:
   CheckVolumeSettingsRunnable(const nsACString& aVolumeName)
     : mVolumeName(aVolumeName) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     nsCOMPtr<nsISettingsService> settingsService =
       do_GetService("@mozilla.org/settingsService;1");
     NS_ENSURE_TRUE(settingsService, NS_ERROR_FAILURE);
     nsCOMPtr<nsISettingsServiceLock> lock;
     settingsService->CreateLock(nullptr, getter_AddRefs(lock));
     nsCOMPtr<nsISettingsServiceCallback> callback =
@@ -194,17 +194,17 @@ AutoMounterSetting::CheckVolumeSettings(
   NS_DispatchToMainThread(new CheckVolumeSettingsRunnable(aVolumeName));
 }
 
 class SetStatusRunnable : public Runnable
 {
 public:
   SetStatusRunnable(int32_t aStatus) : mStatus(aStatus) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     nsCOMPtr<nsISettingsService> settingsService =
       do_GetService("@mozilla.org/settingsService;1");
     NS_ENSURE_TRUE(settingsService, NS_ERROR_FAILURE);
     nsCOMPtr<nsISettingsServiceLock> lock;
     settingsService->CreateLock(nullptr, getter_AddRefs(lock));
     // lock may be null if this gets called during shutdown.
--- a/dom/system/gonk/GonkGPSGeolocationProvider.cpp
+++ b/dom/system/gonk/GonkGPSGeolocationProvider.cpp
@@ -106,17 +106,17 @@ GonkGPSGeolocationProvider::LocationCall
     return;
   }
 
   class UpdateLocationEvent : public Runnable {
   public:
     UpdateLocationEvent(nsGeoPosition* aPosition)
       : mPosition(aPosition)
     {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       RefPtr<GonkGPSGeolocationProvider> provider =
         GonkGPSGeolocationProvider::GetSingleton();
       nsCOMPtr<nsIGeolocationUpdate> callback = provider->mLocationCallback;
       provider->mLastGPSPosition = mPosition;
       if (callback) {
         callback->Update(mPosition);
       }
       return NS_OK;
@@ -270,17 +270,17 @@ GonkGPSGeolocationProvider::NmeaCallback
 void
 GonkGPSGeolocationProvider::SetCapabilitiesCallback(uint32_t capabilities)
 {
   class UpdateCapabilitiesEvent : public Runnable {
   public:
     UpdateCapabilitiesEvent(uint32_t aCapabilities)
       : mCapabilities(aCapabilities)
     {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       RefPtr<GonkGPSGeolocationProvider> provider =
         GonkGPSGeolocationProvider::GetSingleton();
 
       provider->mSupportsScheduling = mCapabilities & GPS_CAPABILITY_SCHEDULING;
 #ifdef MOZ_B2G_RIL
       provider->mSupportsMSB = mCapabilities & GPS_CAPABILITY_MSB;
       provider->mSupportsMSA = mCapabilities & GPS_CAPABILITY_MSA;
 #endif
@@ -338,17 +338,17 @@ GonkGPSGeolocationProvider::AGPSStatusCa
 {
   MOZ_ASSERT(status);
 
   class AGPSStatusEvent : public Runnable {
   public:
     AGPSStatusEvent(AGpsStatusValue aStatus)
       : mStatus(aStatus)
     {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       RefPtr<GonkGPSGeolocationProvider> provider =
         GonkGPSGeolocationProvider::GetSingleton();
 
       switch (mStatus) {
         case GPS_REQUEST_AGPS_DATA_CONN:
           provider->RequestDataConnection();
           break;
         case GPS_RELEASE_AGPS_DATA_CONN:
@@ -367,17 +367,17 @@ GonkGPSGeolocationProvider::AGPSStatusCa
 void
 GonkGPSGeolocationProvider::AGPSRILSetIDCallback(uint32_t flags)
 {
   class RequestSetIDEvent : public Runnable {
   public:
     RequestSetIDEvent(uint32_t flags)
       : mFlags(flags)
     {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       RefPtr<GonkGPSGeolocationProvider> provider =
         GonkGPSGeolocationProvider::GetSingleton();
       provider->RequestSetID(mFlags);
       return NS_OK;
     }
   private:
     uint32_t mFlags;
   };
@@ -387,17 +387,17 @@ GonkGPSGeolocationProvider::AGPSRILSetID
 
 void
 GonkGPSGeolocationProvider::AGPSRILRefLocCallback(uint32_t flags)
 {
   class RequestRefLocEvent : public Runnable {
   public:
     RequestRefLocEvent()
     {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       RefPtr<GonkGPSGeolocationProvider> provider =
         GonkGPSGeolocationProvider::GetSingleton();
       provider->SetReferenceLocation();
       return NS_OK;
     }
   };
 
   if (flags & AGPS_RIL_REQUEST_REFLOC_CELLID) {
--- a/dom/system/gonk/MozMtpDatabase.cpp
+++ b/dom/system/gonk/MozMtpDatabase.cpp
@@ -260,17 +260,17 @@ public:
   MtpWatcherNotifyRunnable(nsACString& aStorageName,
                            nsACString& aPath,
                            const char* aEventType)
     : mStorageName(aStorageName),
       mPath(aPath),
       mEventType(aEventType)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     NS_ConvertUTF8toUTF16 storageName(mStorageName);
     NS_ConvertUTF8toUTF16 path(mPath);
 
     RefPtr<DeviceStorageFile> dsf(
       new DeviceStorageFile(NS_LITERAL_STRING(DEVICESTORAGE_SDCARD),
--- a/dom/system/gonk/MozMtpServer.cpp
+++ b/dom/system/gonk/MozMtpServer.cpp
@@ -48,17 +48,17 @@ public:
                            DeviceStorageFile* aFile,
                            const nsACString& aEventType)
     : mMozMtpDatabase(aMozMtpDatabase),
       mMtpServer(aMtpServer),
       mFile(aFile),
       mEventType(aEventType)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Runs on the MtpWatcherUpdate->mIOThread
     MOZ_ASSERT(!NS_IsMainThread());
 
     mMozMtpDatabase->MtpWatcherUpdate(mMtpServer, mFile, mEventType);
     return NS_OK;
   }
 
@@ -143,17 +143,17 @@ static StaticRefPtr<MtpWatcherUpdate> sM
 
 class AllocMtpWatcherUpdateRunnable final : public Runnable
 {
 public:
   AllocMtpWatcherUpdateRunnable(MozMtpServer* aMozMtpServer)
     : mMozMtpServer(aMozMtpServer)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     sMtpWatcherUpdate = new MtpWatcherUpdate(mMozMtpServer);
     return NS_OK;
   }
 private:
   RefPtr<MozMtpServer> mMozMtpServer;
@@ -161,17 +161,17 @@ private:
 
 class FreeMtpWatcherUpdateRunnable final : public Runnable
 {
 public:
   FreeMtpWatcherUpdateRunnable(MozMtpServer* aMozMtpServer)
     : mMozMtpServer(aMozMtpServer)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     sMtpWatcherUpdate = nullptr;
     return NS_OK;
   }
 private:
   RefPtr<MozMtpServer> mMozMtpServer;
--- a/dom/system/gonk/NetworkWorker.cpp
+++ b/dom/system/gonk/NetworkWorker.cpp
@@ -34,17 +34,17 @@ class NetworkResultDispatcher : public R
 {
 public:
   NetworkResultDispatcher(const NetworkResultOptions& aResult)
     : mResult(aResult)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     if (gNetworkWorker) {
       gNetworkWorker->DispatchNetworkResult(mResult);
     }
     return NS_OK;
   }
@@ -57,17 +57,17 @@ class NetworkCommandDispatcher : public 
 {
 public:
   NetworkCommandDispatcher(const NetworkParams& aParams)
     : mParams(aParams)
   {
     MOZ_ASSERT(NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
 
     if (gNetworkUtils) {
       gNetworkUtils->ExecuteCommand(mParams);
     }
     return NS_OK;
   }
@@ -80,17 +80,17 @@ class NetdEventRunnable : public Runnabl
 {
 public:
   NetdEventRunnable(NetdCommand* aCommand)
     : mCommand(aCommand)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
 
     if (gNetworkUtils) {
       gNetworkUtils->onNetdMessage(mCommand);
     }
     return NS_OK;
   }
--- a/dom/system/gonk/VolumeServiceTest.cpp
+++ b/dom/system/gonk/VolumeServiceTest.cpp
@@ -155,17 +155,17 @@ VolumeTestObserver::Observe(nsISupports*
   }
 
   return NS_OK;
 }
 
 class InitVolumeServiceTestIO : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     DBG("InitVolumeServiceTest called");
     nsCOMPtr<nsIVolumeService> vs = do_GetService(NS_VOLUMESERVICE_CONTRACTID);
     if (!vs) {
       ERR("do_GetService('%s') failed", NS_VOLUMESERVICE_CONTRACTID);
       return NS_ERROR_FAILURE;
--- a/dom/system/gonk/mozstumbler/MozStumbler.cpp
+++ b/dom/system/gonk/mozstumbler/MozStumbler.cpp
@@ -29,17 +29,17 @@ using namespace mozilla::dom;
 NS_IMPL_ISUPPORTS(StumblerInfo, nsICellInfoListCallback, nsIWifiScanResultsReady)
 
 class RequestCellInfoEvent : public Runnable {
 public:
   RequestCellInfoEvent(StumblerInfo *callback)
   : mRequestCallback(callback)
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     // Get Cell Info
     nsCOMPtr<nsIMobileConnectionService> service =
     do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
 
     if (!service) {
       STUMBLER_ERR("Stumbler-can not get nsIMobileConnectionService \n");
       return NS_OK;
--- a/dom/system/gonk/nsVolumeService.cpp
+++ b/dom/system/gonk/nsVolumeService.cpp
@@ -508,17 +508,17 @@ class UpdateVolumeRunnable : public Runn
 public:
   UpdateVolumeRunnable(nsVolumeService* aVolumeService, const Volume* aVolume)
     : mVolumeService(aVolumeService),
       mVolume(new nsVolume(aVolume))
   {
     MOZ_ASSERT(MessageLoop::current() == XRE_GetIOMessageLoop());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     DBG("UpdateVolumeRunnable::Run '%s' state %s gen %d locked %d "
         "media %d sharing %d formatting %d unmounting %d removable %d hotswappable %d",
         mVolume->NameStr().get(), mVolume->StateStr(),
         mVolume->MountGeneration(), (int)mVolume->IsMountLocked(),
         (int)mVolume->IsMediaPresent(), mVolume->IsSharing(),
         mVolume->IsFormatting(), mVolume->IsUnmounting(),
--- a/dom/system/nsDeviceSensors.cpp
+++ b/dom/system/nsDeviceSensors.cpp
@@ -141,17 +141,17 @@ class DeviceSensorTestEvent : public Run
 public:
   DeviceSensorTestEvent(nsDeviceSensors* aTarget,
                         uint32_t aType)
   : mTarget(aTarget)
   , mType(aType)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     SensorData sensorData;
     sensorData.sensor() = static_cast<SensorType>(mType);
     sensorData.timestamp() = PR_Now();
     sensorData.values().AppendElement(0.5f);
     sensorData.values().AppendElement(0.5f);
     sensorData.values().AppendElement(0.5f);
     sensorData.values().AppendElement(0.5f);
--- a/dom/tv/TVServiceRunnables.h
+++ b/dom/tv/TVServiceRunnables.h
@@ -29,17 +29,17 @@ public:
   TVServiceNotifyRunnable(nsITVServiceCallback* aCallback,
                           nsIArray* aDataList,
                           uint16_t aErrorCode = nsITVServiceCallback::TV_ERROR_OK)
     : mCallback(aCallback)
     , mDataList(aDataList)
     , mErrorCode(aErrorCode)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mErrorCode == nsITVServiceCallback::TV_ERROR_OK) {
       return mCallback->NotifySuccess(mDataList);
     } else {
       return mCallback->NotifyError(mErrorCode);
     }
   }
 
--- a/dom/wifi/WifiProxyService.cpp
+++ b/dom/wifi/WifiProxyService.cpp
@@ -37,17 +37,17 @@ class WifiEventDispatcher : public Runna
 public:
   WifiEventDispatcher(const nsAString& aEvent, const nsACString& aInterface)
     : mEvent(aEvent)
     , mInterface(aInterface)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     gWifiProxyService->DispatchWifiEvent(mEvent, mInterface);
     return NS_OK;
   }
 
 private:
   nsString mEvent;
@@ -59,17 +59,17 @@ class EventRunnable : public Runnable
 {
 public:
   EventRunnable(const nsACString& aInterface)
     : mInterface(aInterface)
   {
     MOZ_ASSERT(NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
     nsAutoString event;
     gWpaSupplicant->WaitForEvent(event, mInterface);
     if (!event.IsEmpty()) {
 #ifdef MOZ_TASK_TRACER
       // Make wifi initialization events to be the source events of TaskTracer,
       // and originate the rest correlation tasks from here.
@@ -92,17 +92,17 @@ class WifiResultDispatcher : public Runn
 public:
   WifiResultDispatcher(WifiResultOptions& aResult, const nsACString& aInterface)
     : mResult(aResult)
     , mInterface(aInterface)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     gWifiProxyService->DispatchWifiResult(mResult, mInterface);
     return NS_OK;
   }
 
 private:
   WifiResultOptions mResult;
@@ -115,17 +115,17 @@ class ControlRunnable : public Runnable
 public:
   ControlRunnable(CommandOptions aOptions, const nsACString& aInterface)
     : mOptions(aOptions)
     , mInterface(aInterface)
   {
     MOZ_ASSERT(NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     WifiResultOptions result;
     if (gWpaSupplicant->ExecuteCommand(mOptions, result, mInterface)) {
       nsCOMPtr<nsIRunnable> runnable = new WifiResultDispatcher(result, mInterface);
       NS_DispatchToMainThread(runnable);
     }
     return NS_OK;
   }
--- a/dom/workers/ServiceWorkerClient.cpp
+++ b/dom/workers/ServiceWorkerClient.cpp
@@ -93,17 +93,17 @@ class ServiceWorkerClientPostMessageRunn
 public:
   explicit ServiceWorkerClientPostMessageRunnable(uint64_t aWindowId)
     : StructuredCloneHolder(CloningSupported, TransferringSupported,
                             SameProcessDifferentThread)
     , mWindowId(aWindowId)
   {}
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     AssertIsOnMainThread();
     nsGlobalWindow* window = nsGlobalWindow::GetInnerWindowWithId(mWindowId);
     if (!window) {
       return NS_ERROR_FAILURE;
     }
 
     ErrorResult result;
--- a/dom/workers/ServiceWorkerEvents.cpp
+++ b/dom/workers/ServiceWorkerEvents.cpp
@@ -180,17 +180,17 @@ public:
     , mInternalResponse(aInternalResponse)
     , mWorkerChannelInfo(aWorkerChannelInfo)
     , mScriptSpec(aScriptSpec)
     , mResponseURLSpec(aResponseURLSpec)
   {
   }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     AssertIsOnMainThread();
 
     nsCOMPtr<nsIChannel> underlyingChannel;
     nsresult rv = mChannel->GetChannel(getter_AddRefs(underlyingChannel));
     NS_ENSURE_SUCCESS(rv, rv);
     NS_ENSURE_TRUE(underlyingChannel, NS_ERROR_UNEXPECTED);
     nsCOMPtr<nsILoadInfo> loadInfo = underlyingChannel->GetLoadInfo();
--- a/dom/workers/ServiceWorkerInfo.cpp
+++ b/dom/workers/ServiceWorkerInfo.cpp
@@ -88,17 +88,17 @@ public:
                      ServiceWorkerState aState)
     : mState(aState)
   {
     for (size_t i = 0; i < aInstances.Length(); ++i) {
       mInstances.AppendElement(aInstances[i]);
     }
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     // We need to update the state of all instances atomically before notifying
     // them to make sure that the observed state for all instances inside
     // statechange event handlers is correct.
     for (size_t i = 0; i < mInstances.Length(); ++i) {
       mInstances[i]->SetState(mState);
     }
     for (size_t i = 0; i < mInstances.Length(); ++i) {
--- a/dom/workers/ServiceWorkerManager.cpp
+++ b/dom/workers/ServiceWorkerManager.cpp
@@ -649,18 +649,18 @@ class GetRegistrationsRunnable final : p
 {
   nsCOMPtr<nsPIDOMWindowInner> mWindow;
   RefPtr<Promise> mPromise;
 public:
   GetRegistrationsRunnable(nsPIDOMWindowInner* aWindow, Promise* aPromise)
     : mWindow(aWindow), mPromise(aPromise)
   {}
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
 
     nsIDocument* doc = mWindow->GetExtantDoc();
     if (!doc) {
       mPromise->MaybeReject(NS_ERROR_UNEXPECTED);
       return NS_OK;
     }
@@ -767,18 +767,18 @@ class GetRegistrationRunnable final : pu
   nsString mDocumentURL;
 
 public:
   GetRegistrationRunnable(nsPIDOMWindowInner* aWindow, Promise* aPromise,
                           const nsAString& aDocumentURL)
     : mWindow(aWindow), mPromise(aPromise), mDocumentURL(aDocumentURL)
   {}
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
 
     nsIDocument* doc = mWindow->GetExtantDoc();
     if (!doc) {
       mPromise->MaybeReject(NS_ERROR_UNEXPECTED);
       return NS_OK;
     }
@@ -867,18 +867,18 @@ class GetReadyPromiseRunnable final : pu
   nsCOMPtr<nsPIDOMWindowInner> mWindow;
   RefPtr<Promise> mPromise;
 
 public:
   GetReadyPromiseRunnable(nsPIDOMWindowInner* aWindow, Promise* aPromise)
     : mWindow(aWindow), mPromise(aPromise)
   {}
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
 
     nsIDocument* doc = mWindow->GetExtantDoc();
     if (!doc) {
       mPromise->MaybeReject(NS_ERROR_UNEXPECTED);
       return NS_OK;
     }
--- a/dom/workers/ServiceWorkerManagerParent.cpp
+++ b/dom/workers/ServiceWorkerManagerParent.cpp
@@ -32,18 +32,18 @@ public:
                                 uint64_t aParentID)
     : mData(aData)
     , mParentID(aParentID)
   {
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
 
     RefPtr<dom::ServiceWorkerRegistrar> service =
       dom::ServiceWorkerRegistrar::Get();
     MOZ_ASSERT(service);
 
@@ -72,18 +72,18 @@ public:
     : mPrincipalInfo(aPrincipalInfo)
     , mScope(aScope)
     , mParentID(aParentID)
   {
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
 
     RefPtr<dom::ServiceWorkerRegistrar> service =
       dom::ServiceWorkerRegistrar::Get();
     MOZ_ASSERT(service);
 
@@ -120,17 +120,17 @@ public:
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
 
     MOZ_ASSERT(mContentParent);
     MOZ_ASSERT(mCallback);
     MOZ_ASSERT(mBackgroundThread);
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     if (NS_IsMainThread()) {
       nsCOMPtr<nsIPrincipal> principal = PrincipalInfoToPrincipal(mPrincipalInfo);
       AssertAppPrincipal(mContentParent, principal);
       mContentParent = nullptr;
 
       mBackgroundThread->Dispatch(this, NS_DISPATCH_NORMAL);
       return NS_OK;
--- a/dom/workers/ServiceWorkerPrivate.cpp
+++ b/dom/workers/ServiceWorkerPrivate.cpp
@@ -1443,17 +1443,17 @@ private:
   class ResumeRequest final : public Runnable {
     nsMainThreadPtrHandle<nsIInterceptedChannel> mChannel;
   public:
     explicit ResumeRequest(nsMainThreadPtrHandle<nsIInterceptedChannel>& aChannel)
       : mChannel(aChannel)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       AssertIsOnMainThread();
       nsresult rv = mChannel->ResetInterception();
       NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "Failed to resume intercepted network request");
       return rv;
     }
   };
 
--- a/dom/workers/ServiceWorkerRegistrar.cpp
+++ b/dom/workers/ServiceWorkerRegistrar.cpp
@@ -525,18 +525,18 @@ class ServiceWorkerRegistrarSaveDataRunn
 {
 public:
   ServiceWorkerRegistrarSaveDataRunnable()
     : mThread(do_GetCurrentThread())
   {
     AssertIsOnBackgroundThread();
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     RefPtr<ServiceWorkerRegistrar> service = ServiceWorkerRegistrar::Get();
     MOZ_ASSERT(service);
 
     service->SaveData();
 
     RefPtr<Runnable> runnable =
       NewRunnableMethod(service, &ServiceWorkerRegistrar::DataSaved);
--- a/dom/xhr/XMLHttpRequestMainThread.cpp
+++ b/dom/xhr/XMLHttpRequestMainThread.cpp
@@ -123,17 +123,17 @@ namespace {
 
 NS_IMPL_ISUPPORTS(nsXHRParseEndListener, nsIDOMEventListener)
 
 class nsResumeTimeoutsEvent : public Runnable
 {
 public:
   explicit nsResumeTimeoutsEvent(nsPIDOMWindowInner* aWindow) : mWindow(aWindow) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mWindow->ResumeTimeouts(false);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsPIDOMWindowInner> mWindow;
 };
--- a/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
+++ b/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
@@ -548,17 +548,17 @@ public:
 
   ~nsTransformBlockerEvent()
   {
     nsCOMPtr<nsIDocument> document =
         do_QueryInterface(mProcessor->GetSourceContentModel());
     document->UnblockOnload(true);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mProcessor->TransformToDoc(nullptr, false);
     return NS_OK;
   }
 };
 
 nsresult
 txMozillaXSLTProcessor::DoTransform()
--- a/dom/xul/nsXULElement.cpp
+++ b/dom/xul/nsXULElement.cpp
@@ -798,17 +798,17 @@ IsInFeedSubscribeLine(nsXULElement* aEle
 }
 #endif
 
 class XULInContentErrorReporter : public Runnable
 {
 public:
   explicit XULInContentErrorReporter(nsIDocument* aDocument) : mDocument(aDocument) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mDocument->WarnOnceAbout(nsIDocument::eImportXULIntoContent, false);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIDocument> mDocument;
 };
@@ -1931,17 +1931,17 @@ nsXULElement::SetTitlebarColor(nscolor a
 class SetDrawInTitleBarEvent : public Runnable
 {
 public:
   SetDrawInTitleBarEvent(nsIWidget* aWidget, bool aState)
     : mWidget(aWidget)
     , mState(aState)
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     NS_ASSERTION(mWidget, "You shouldn't call this runnable with a null widget!");
 
     mWidget->SetDrawsInTitlebar(mState);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIWidget> mWidget;
@@ -1989,17 +1989,17 @@ class MarginSetter : public Runnable
 public:
     explicit MarginSetter(nsIWidget* aWidget) :
         mWidget(aWidget), mMargin(-1, -1, -1, -1)
     {}
     MarginSetter(nsIWidget *aWidget, const LayoutDeviceIntMargin& aMargin) :
         mWidget(aWidget), mMargin(aMargin)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         // SetNonClientMargins can dispatch native events, hence doing
         // it off a script runner.
         mWidget->SetNonClientMargins(mMargin);
         return NS_OK;
     }
 
 private:
--- a/editor/composer/nsEditorSpellCheck.cpp
+++ b/editor/composer/nsEditorSpellCheck.cpp
@@ -302,17 +302,17 @@ public:
   explicit CallbackCaller(nsIEditorSpellCheckCallback* aCallback)
     : mCallback(aCallback) {}
 
   ~CallbackCaller()
   {
     Run();
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mCallback) {
       mCallback->EditorSpellCheckDone();
       mCallback = nullptr;
     }
     return NS_OK;
   }
 
--- a/editor/libeditor/EditorBase.cpp
+++ b/editor/libeditor/EditorBase.cpp
@@ -1767,17 +1767,17 @@ public:
                              nsIContent* aTarget,
                              bool aIsComposing)
     : mEditorBase(aEditorBase)
     , mTarget(aTarget)
     , mIsComposing(aIsComposing)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Note that we don't need to check mDispatchInputEvent here.  We need
     // to check it only when the editor requests to dispatch the input event.
 
     if (!mTarget->IsInComposedDoc()) {
       return NS_OK;
     }
 
--- a/extensions/gio/nsGIOProtocolHandler.cpp
+++ b/extensions/gio/nsGIOProtocolHandler.cpp
@@ -547,17 +547,17 @@ class nsGIOSetContentTypeEvent : public 
   public:
     nsGIOSetContentTypeEvent(nsIChannel *channel, const char *contentType)
       : mChannel(channel), mContentType(contentType)
     {
       // stash channel reference in mChannel.  no AddRef here!  see note
       // in SetContentTypeOfchannel.
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       mChannel->SetContentType(mContentType);
       return NS_OK;
     }
 
   private:
     nsIChannel *mChannel;
     nsCString   mContentType;
--- a/extensions/spellcheck/src/mozInlineSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellChecker.cpp
@@ -479,17 +479,17 @@ public:
                        uint32_t aDisabledAsyncToken)
     : mDisabledAsyncToken(aDisabledAsyncToken), mStatus(aStatus) {}
 
   nsresult Post()
   {
     return NS_DispatchToMainThread(this);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Discard the resumption if the spell checker was disabled after the
     // resumption was scheduled.
     if (mDisabledAsyncToken == mStatus.mSpellChecker->mDisabledAsyncToken) {
       mStatus.mSpellChecker->ResumeCheck(&mStatus);
     }
     return NS_OK;
   }
--- a/gfx/layers/AsyncCanvasRenderer.cpp
+++ b/gfx/layers/AsyncCanvasRenderer.cpp
@@ -46,17 +46,17 @@ AsyncCanvasRenderer::NotifyElementAboutA
 {
   class Runnable final : public mozilla::Runnable
   {
   public:
     explicit Runnable(AsyncCanvasRenderer* aRenderer)
       : mRenderer(aRenderer)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       if (mRenderer) {
         dom::HTMLCanvasElement::SetAttrFromAsyncCanvasRenderer(mRenderer);
       }
 
       return NS_OK;
     }
 
@@ -81,17 +81,17 @@ AsyncCanvasRenderer::NotifyElementAboutI
 {
   class Runnable final : public mozilla::Runnable
   {
   public:
     explicit Runnable(AsyncCanvasRenderer* aRenderer)
       : mRenderer(aRenderer)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       if (mRenderer) {
         dom::HTMLCanvasElement::InvalidateFromAsyncCanvasRenderer(mRenderer);
       }
 
       return NS_OK;
     }
 
--- a/gfx/layers/ImageContainer.h
+++ b/gfx/layers/ImageContainer.h
@@ -54,17 +54,17 @@ public:
   typedef mozilla::gfx::SourceSurface* RawRef;
 
   /**
    * The XPCOM event that will do the actual release on the main thread.
    */
   class SurfaceReleaser : public mozilla::Runnable {
   public:
     explicit SurfaceReleaser(RawRef aRef) : mRef(aRef) {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       mRef->Release();
       return NS_OK;
     }
     RawRef mRef;
   };
 
   static RawRef Void() { return nullptr; }
   static void Release(RawRef aRawRef)
@@ -92,17 +92,17 @@ public:
   typedef mozilla::gfx::SourceSurface* RawRef;
 
   /**
    * The XPCOM event that will do the actual release on the creation thread.
    */
   class SurfaceReleaser : public mozilla::Runnable {
   public:
     explicit SurfaceReleaser(RawRef aRef) : mRef(aRef) {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       mRef->Release();
       return NS_OK;
     }
     RawRef mRef;
   };
 
   static RawRef Void() { return nullptr; }
   void Release(RawRef aRawRef)
--- a/gfx/layers/LayerScope.cpp
+++ b/gfx/layers/LayerScope.cpp
@@ -344,17 +344,17 @@ private:
     friend class CreateServerSocketRunnable;
     class CreateServerSocketRunnable : public Runnable
     {
     public:
         explicit CreateServerSocketRunnable(LayerScopeManager *aLayerScopeManager)
             : mLayerScopeManager(aLayerScopeManager)
         {
         }
-        NS_IMETHOD Run() {
+        NS_IMETHOD Run() override {
             mLayerScopeManager->mWebSocketManager =
                 mozilla::MakeUnique<LayerScopeWebSocketManager>();
             return NS_OK;
         }
     private:
         LayerScopeManager* mLayerScopeManager;
     };
 
--- a/gfx/layers/d3d11/ReadbackManagerD3D11.cpp
+++ b/gfx/layers/d3d11/ReadbackManagerD3D11.cpp
@@ -33,17 +33,17 @@ struct ReadbackTask {
 // destroyed by the main thread.
 class ReadbackResultWriterD3D11 final : public nsIRunnable
 {
   ~ReadbackResultWriterD3D11() {}
   NS_DECL_THREADSAFE_ISUPPORTS
 public:
   ReadbackResultWriterD3D11(ReadbackTask *aTask) : mTask(aTask) {}
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     D3D10_TEXTURE2D_DESC desc;
     mTask->mReadbackTexture->GetDesc(&desc);
 
     D3D10_MAPPED_TEXTURE2D mappedTex;
     // Unless there is an error this map should succeed immediately, as we've
     // recently mapped (and unmapped) this copied data on our task thread.
     HRESULT hr = mTask->mReadbackTexture->Map(0, D3D10_MAP_READ, 0, &mappedTex);
--- a/gfx/layers/ipc/ThreadSafeRefcountingWithMainThreadDestruction.h
+++ b/gfx/layers/ipc/ThreadSafeRefcountingWithMainThreadDestruction.h
@@ -38,17 +38,17 @@ struct HelperForMainThreadDestruction
   }
 };
 
 template<typename T>
 struct DeleteOnMainThreadTask : public Runnable
 {
   T* mToDelete;
   explicit DeleteOnMainThreadTask(T* aToDelete) : mToDelete(aToDelete) {}
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     mToDelete->DeleteToBeCalledOnMainThread();
     return NS_OK;
   }
 };
 
 } // namespace layers
 } // namespace mozilla
--- a/hal/gonk/GonkDiskSpaceWatcher.cpp
+++ b/hal/gonk/GonkDiskSpaceWatcher.cpp
@@ -115,33 +115,33 @@ static const char kWatchedPath[] = "/dat
 // Helper class to dispatch calls to xpcom on the main thread.
 class DiskSpaceNotifier : public Runnable
 {
 public:
   DiskSpaceNotifier(const bool aIsDiskFull, const uint64_t aFreeSpace) :
     mIsDiskFull(aIsDiskFull),
     mFreeSpace(aFreeSpace) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     DiskSpaceWatcher::UpdateState(mIsDiskFull, mFreeSpace);
     return NS_OK;
   }
 
 private:
   bool mIsDiskFull;
   uint64_t mFreeSpace;
 };
 
 // Helper runnable to delete the watcher on the main thread.
 class DiskSpaceCleaner : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     if (gHalDiskSpaceWatcher) {
       delete gHalDiskSpaceWatcher;
       gHalDiskSpaceWatcher = nullptr;
     }
     return NS_OK;
   }
--- a/hal/gonk/GonkFMRadio.cpp
+++ b/hal/gonk/GonkFMRadio.cpp
@@ -102,17 +102,17 @@ class RadioUpdate : public Runnable {
   hal::FMRadioOperation mOp;
   hal::FMRadioOperationStatus mStatus;
 public:
   RadioUpdate(hal::FMRadioOperation op, hal::FMRadioOperationStatus status)
     : mOp(op)
     , mStatus(status)
   {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     hal::FMRadioOperationInformation info;
     info.operation() = mOp;
     info.status() = mStatus;
     info.frequency() = GetFMRadioFrequency();
     hal::NotifyFMRadioStatus(info);
     return NS_OK;
   }
 };
--- a/hal/gonk/GonkHal.cpp
+++ b/hal/gonk/GonkHal.cpp
@@ -421,17 +421,17 @@ CancelVibrate(const hal::WindowIdentifie
   EnsureVibratorThreadInitialized();
   sVibratorRunnable->CancelVibrate();
 }
 
 namespace {
 
 class BatteryUpdater : public Runnable {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     hal::BatteryInformation info;
     hal_impl::GetCurrentBatteryInformation(&info);
 
     // Control the battery indicator (led light) here using BatteryInformation
     // we just retrieved.
     uint32_t color = 0; // Format: 0x00rrggbb.
     if (info.charging() && (info.level() == 1)) {
@@ -1041,17 +1041,17 @@ public:
 int AlarmData::sNextGeneration = 0;
 
 AlarmData* sAlarmData = nullptr;
 
 class AlarmFiredEvent : public Runnable {
 public:
   AlarmFiredEvent(int aGeneration) : mGeneration(aGeneration) {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Guard against spurious notifications caused by an alarm firing
     // concurrently with it being disabled.
     if (sAlarmData && !sAlarmData->mShuttingDown &&
         mGeneration == sAlarmData->mGeneration) {
       hal::NotifyAlarmFired();
     }
     // The fired alarm event has been delivered to the observer (if needed);
     // we can now release a CPU wake lock.
@@ -1978,17 +1978,17 @@ namespace {
 class SetThreadPriorityRunnable : public Runnable
 {
 public:
   SetThreadPriorityRunnable(pid_t aThreadId, hal::ThreadPriority aThreadPriority)
     : mThreadId(aThreadId)
     , mThreadPriority(aThreadPriority)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_ASSERTION(NS_IsMainThread(), "Can only set thread priorities on main thread");
     hal_impl::DoSetThreadPriority(mThreadId, mThreadPriority);
     return NS_OK;
   }
 
 private:
   pid_t mThreadId;
--- a/hal/gonk/GonkSensor.cpp
+++ b/hal/gonk/GonkSensor.cpp
@@ -179,17 +179,17 @@ public:
       mSensorValues.AppendElement(data.data[1]);
       mSensorValues.AppendElement(data.data[2]);
     }
     mSensorData.values() = mSensorValues;
   }
 
   ~SensorRunnable() {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NotifySensorChange(mSensorData);
     return NS_OK;
   }
 
 private:
   SensorData mSensorData;
   AutoTArray<float, 4> mSensorValues;
--- a/hal/gonk/GonkSwitch.cpp
+++ b/hal/gonk/GonkSwitch.cpp
@@ -215,17 +215,17 @@ typedef nsTArray<RefPtr<SwitchHandler> >
 
 class SwitchEventRunnable : public Runnable
 {
 public:
   SwitchEventRunnable(SwitchEvent& aEvent) : mEvent(aEvent)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NotifySwitchChange(mEvent);
     return NS_OK;
   }
 private:
   SwitchEvent mEvent;
 };
 
--- a/image/DecodePool.cpp
+++ b/image/DecodePool.cpp
@@ -156,17 +156,17 @@ private:
   bool mShuttingDown;
 };
 
 class DecodePoolWorker : public Runnable
 {
 public:
   explicit DecodePoolWorker(DecodePoolImpl* aImpl) : mImpl(aImpl) { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
 
     mImpl->InitCurrentThread();
 
     nsCOMPtr<nsIThread> thisThread;
     nsThreadManager::get()->GetCurrentThread(getter_AddRefs(thisThread));
 
--- a/image/ProgressTracker.cpp
+++ b/image/ProgressTracker.cpp
@@ -121,17 +121,17 @@ class AsyncNotifyRunnable : public Runna
       : mTracker(aTracker)
     {
       MOZ_ASSERT(NS_IsMainThread(), "Should be created on the main thread");
       MOZ_ASSERT(aTracker, "aTracker should not be null");
       MOZ_ASSERT(aObserver, "aObserver should not be null");
       mObservers.AppendElement(aObserver);
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread(), "Should be running on the main thread");
       MOZ_ASSERT(mTracker, "mTracker should not be null");
       for (uint32_t i = 0; i < mObservers.Length(); ++i) {
         mObservers[i]->SetNotificationsDeferred(false);
         mTracker->SyncNotify(mObservers[i]);
       }
 
@@ -202,17 +202,17 @@ class AsyncNotifyCurrentStateRunnable : 
       , mObserver(aObserver)
     {
       MOZ_ASSERT(NS_IsMainThread(), "Should be created on the main thread");
       MOZ_ASSERT(mProgressTracker, "mProgressTracker should not be null");
       MOZ_ASSERT(mObserver, "mObserver should not be null");
       mImage = mProgressTracker->GetImage();
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread(), "Should be running on the main thread");
       mObserver->SetNotificationsDeferred(false);
 
       mProgressTracker->SyncNotify(mObserver);
       return NS_OK;
     }
 
--- a/image/imgFrame.cpp
+++ b/image/imgFrame.cpp
@@ -751,17 +751,17 @@ class UnlockImageDataRunnable : public R
 {
 public:
   explicit UnlockImageDataRunnable(imgFrame* aTarget)
     : mTarget(aTarget)
   {
     MOZ_ASSERT(mTarget);
   }
 
-  NS_IMETHOD Run() { return mTarget->UnlockImageData(); }
+  NS_IMETHOD Run() override { return mTarget->UnlockImageData(); }
 
 private:
   RefPtr<imgFrame> mTarget;
 };
 
 nsresult
 imgFrame::UnlockImageData()
 {
--- a/image/imgRequest.cpp
+++ b/image/imgRequest.cpp
@@ -314,17 +314,17 @@ public:
   imgRequestMainThreadCancel(imgRequest* aImgRequest, nsresult aStatus)
     : mImgRequest(aImgRequest)
     , mStatus(aStatus)
   {
     MOZ_ASSERT(!NS_IsMainThread(), "Create me off main thread only!");
     MOZ_ASSERT(aImgRequest);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "I should be running on the main thread!");
     mImgRequest->ContinueCancel(mStatus);
     return NS_OK;
   }
 private:
   RefPtr<imgRequest> mImgRequest;
   nsresult mStatus;
@@ -363,17 +363,17 @@ class imgRequestMainThreadEvict : public
 public:
   explicit imgRequestMainThreadEvict(imgRequest* aImgRequest)
     : mImgRequest(aImgRequest)
   {
     MOZ_ASSERT(!NS_IsMainThread(), "Create me off main thread only!");
     MOZ_ASSERT(aImgRequest);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "I should be running on the main thread!");
     mImgRequest->ContinueEvict();
     return NS_OK;
   }
 private:
   RefPtr<imgRequest> mImgRequest;
 };
--- a/image/test/gtest/TestDecodeToSurface.cpp
+++ b/image/test/gtest/TestDecodeToSurface.cpp
@@ -28,17 +28,17 @@ public:
   DecodeToSurfaceRunnable(RefPtr<SourceSurface>& aSurface,
                           nsIInputStream* aInputStream,
                           const ImageTestCase& aTestCase)
     : mSurface(aSurface)
     , mInputStream(aInputStream)
     , mTestCase(aTestCase)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     Go();
     return NS_OK;
   }
 
   void Go()
   {
     mSurface =
--- a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
+++ b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
@@ -84,18 +84,17 @@ public:
   } 
 
   virtual ~ChildGrimReaper()
   {
     if (process_)
       KillProcess();
   }
 
-  // @override
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // we may have already been signaled by the time this runs
     if (process_)
       KillProcess();
 
     return NS_OK;
   }
 
--- a/ipc/glue/BackgroundParentImpl.cpp
+++ b/ipc/glue/BackgroundParentImpl.cpp
@@ -371,18 +371,18 @@ public:
                               const nsACString& aFilter)
     : mActor(aActor)
     , mFilter(aFilter)
   {
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
   }
 
-  NS_IMETHODIMP
-  Run()
+  NS_IMETHOD
+  Run() override
   {
     AssertIsInMainProcess();
 
     IPC::Principal principal;
     if (!mActor->Init(principal, mFilter)) {
       MOZ_CRASH("UDPSocketCallback - failed init");
     }
     return NS_OK;
@@ -498,17 +498,17 @@ public:
     , mOrigin(aOrigin)
   {
     AssertIsInMainProcess();
     AssertIsOnBackgroundThread();
 
     MOZ_ASSERT(mContentParent);
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     NullifyContentParentRAII raii(mContentParent);
 
     nsCOMPtr<nsIPrincipal> principal = PrincipalInfoToPrincipal(mPrincipalInfo);
     AssertAppPrincipal(mContentParent, principal);
 
--- a/ipc/netd/Netd.cpp
+++ b/ipc/netd/Netd.cpp
@@ -28,17 +28,17 @@ using mozilla::system::Property;
 
 namespace {
 
 RefPtr<mozilla::ipc::NetdClient> gNetdClient;
 RefPtr<mozilla::ipc::NetdConsumer> gNetdConsumer;
 
 class StopNetdConsumer : public mozilla::Runnable {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     gNetdConsumer = nullptr;
     return NS_OK;
   }
 };
 
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
@@ -2621,17 +2621,17 @@ nsXPCComponents_Utils::ForceShrinkingGC(
 }
 
 class PreciseGCRunnable : public Runnable
 {
   public:
     PreciseGCRunnable(ScheduledGCCallback* aCallback, bool aShrinking)
     : mCallback(aCallback), mShrinking(aShrinking) {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         JSRuntime* rt = nsXPConnect::GetRuntimeInstance()->Runtime();
 
         JSContext* cx = JS_GetContext(rt);
         if (JS_IsRunning(cx))
             return NS_DispatchToMainThread(this);
 
         nsJSContext::GarbageCollectNow(gcreason::COMPONENT_UTILS,
--- a/js/xpconnect/src/XPCJSRuntime.cpp
+++ b/js/xpconnect/src/XPCJSRuntime.cpp
@@ -131,17 +131,17 @@ xpc::SharedMemoryEnabled() { return sSha
 // *Some* NativeSets are referenced from mClassInfo2NativeSetMap.
 // *All* NativeSets are referenced from mNativeSetMap.
 // So, in mClassInfo2NativeSetMap we just clear references to the unmarked.
 // In mNativeSetMap we clear the references to the unmarked *and* delete them.
 
 class AsyncFreeSnowWhite : public Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
       TimeStamp start = TimeStamp::Now();
       bool hadSnowWhiteObjects = nsCycleCollector_doDeferredDeletion();
       Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING,
                             uint32_t((TimeStamp::Now() - start).ToMilliseconds()));
       if (hadSnowWhiteObjects && !mContinuation) {
           mContinuation = true;
           if (NS_FAILED(NS_DispatchToCurrentThread(this))) {
--- a/layout/base/nsPresContext.cpp
+++ b/layout/base/nsPresContext.cpp
@@ -115,17 +115,17 @@ class CharSetChangingRunnable : public R
 public:
   CharSetChangingRunnable(nsPresContext* aPresContext,
                           const nsCString& aCharSet)
     : mPresContext(aPresContext),
       mCharSet(aCharSet)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mPresContext->DoChangeCharSet(mCharSet);
     return NS_OK;
   }
 
 private:
   RefPtr<nsPresContext> mPresContext;
   nsCString mCharSet;
--- a/layout/base/nsPresShell.cpp
+++ b/layout/base/nsPresShell.cpp
@@ -6693,17 +6693,17 @@ nsIPresShell::SetCapturingContent(nsICon
 }
 
 class AsyncCheckPointerCaptureStateCaller : public Runnable
 {
 public:
   explicit AsyncCheckPointerCaptureStateCaller(int32_t aPointerId)
     : mPointerId(aPointerId) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsIPresShell::CheckPointerCaptureState(mPointerId);
     return NS_OK;
   }
 
 private:
   int32_t mPointerId;
 };
--- a/layout/forms/nsComboboxControlFrame.cpp
+++ b/layout/forms/nsComboboxControlFrame.cpp
@@ -515,32 +515,32 @@ nsComboboxControlFrame::GetCSSTransformT
   }
   return translation;
 }
 
 class nsAsyncRollup : public Runnable
 {
 public:
   explicit nsAsyncRollup(nsComboboxControlFrame* aFrame) : mFrame(aFrame) {}
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     if (mFrame.IsAlive()) {
       static_cast<nsComboboxControlFrame*>(mFrame.GetFrame())
         ->RollupFromList();
     }
     return NS_OK;
   }
   nsWeakFrame mFrame;
 };
 
 class nsAsyncResize : public Runnable
 {
 public:
   explicit nsAsyncResize(nsComboboxControlFrame* aFrame) : mFrame(aFrame) {}
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     if (mFrame.IsAlive()) {
       nsComboboxControlFrame* combo =
         static_cast<nsComboboxControlFrame*>(mFrame.GetFrame());
       static_cast<nsListControlFrame*>(combo->mDropdownFrame)->
         SetSuppressScrollbarUpdate(true);
       nsCOMPtr<nsIPresShell> shell = mFrame->PresContext()->PresShell();
       shell->FrameNeedsReflow(combo->mDropdownFrame, nsIPresShell::eResize,
--- a/layout/generic/nsSubDocumentFrame.cpp
+++ b/layout/generic/nsSubDocumentFrame.cpp
@@ -75,17 +75,17 @@ nsSubDocumentFrame::AccessibleType()
 NS_QUERYFRAME_HEAD(nsSubDocumentFrame)
   NS_QUERYFRAME_ENTRY(nsSubDocumentFrame)
 NS_QUERYFRAME_TAIL_INHERITING(nsAtomicContainerFrame)
 
 class AsyncFrameInit : public Runnable
 {
 public:
   explicit AsyncFrameInit(nsIFrame* aFrame) : mFrame(aFrame) {}
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     PROFILER_LABEL("mozilla", "AsyncFrameInit::Run", js::ProfileEntry::Category::OTHER);
     if (mFrame.IsAlive()) {
       static_cast<nsSubDocumentFrame*>(mFrame.GetFrame())->ShowViewer();
     }
     return NS_OK;
   }
 private:
@@ -937,17 +937,17 @@ public:
       mPresShell(aPresShell),
       mHideViewerIfFrameless(aHideViewerIfFrameless)
   {
     NS_ASSERTION(mFrameElement, "Must have a frame element");
     NS_ASSERTION(mFrameLoader, "Must have a frame loader");
     NS_ASSERTION(mPresShell, "Must have a presshell");
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Flush frames, to ensure any pending display:none changes are made.
     // Note it can be unsafe to flush if we've destroyed the presentation
     // for some other reason, like if we're shutting down.
     if (!mPresShell->IsDestroying()) {
       mPresShell->FlushPendingNotifications(Flush_Frames);
     }
 
--- a/layout/style/ErrorReporter.cpp
+++ b/layout/style/ErrorReporter.cpp
@@ -41,17 +41,17 @@ public:
     return mSpec;
   }
 
   bool IsInUse() const { return mURI != nullptr; }
   bool IsPending() const { return mPending; }
   void SetPending() { mPending = true; }
 
   // When invoked as a runnable, zap the cache.
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mURI = nullptr;
     mSpec.Truncate();
     mPending = false;
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIURI> mURI;
--- a/layout/xul/nsSliderFrame.cpp
+++ b/layout/xul/nsSliderFrame.cpp
@@ -202,17 +202,17 @@ public:
   nsValueChangedRunnable(nsISliderListener* aListener,
                          nsIAtom* aWhich,
                          int32_t aValue,
                          bool aUserChanged)
   : mListener(aListener), mWhich(aWhich),
     mValue(aValue), mUserChanged(aUserChanged)
   {}
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     return mListener->ValueChanged(nsDependentAtomString(mWhich),
                                    mValue, mUserChanged);
   }
 
   nsCOMPtr<nsISliderListener> mListener;
   nsCOMPtr<nsIAtom> mWhich;
   int32_t mValue;
@@ -223,17 +223,17 @@ class nsDragStateChangedRunnable : publi
 {
 public:
   nsDragStateChangedRunnable(nsISliderListener* aListener,
                              bool aDragBeginning)
   : mListener(aListener),
     mDragBeginning(aDragBeginning)
   {}
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     return mListener->DragStateChanged(mDragBeginning);
   }
 
   nsCOMPtr<nsISliderListener> mListener;
   bool mDragBeginning;
 };
 
--- a/media/mtransport/nr_socket_prsock.cpp
+++ b/media/mtransport/nr_socket_prsock.cpp
@@ -1653,17 +1653,17 @@ void NrUdpSocketIpc::recv_callback_s(Ref
 #if defined(MOZILLA_INTERNAL_API)
 // TCPSocket.
 class NrTcpSocketIpc::TcpSocketReadyRunner: public Runnable
 {
 public:
   explicit TcpSocketReadyRunner(NrTcpSocketIpc *sck)
     : socket_(sck) {}
 
-  NS_IMETHODIMP Run() {
+  NS_IMETHOD Run() override {
     socket_->maybe_post_socket_ready();
     return NS_OK;
   }
 
 private:
   RefPtr<NrTcpSocketIpc> socket_;
 };
 
--- a/media/mtransport/test/TestSyncRunnable.cpp
+++ b/media/mtransport/test/TestSyncRunnable.cpp
@@ -11,17 +11,17 @@
 using namespace mozilla;
 
 nsIThread *gThread = nullptr;
 
 class TestRunnable : public Runnable {
 public:
   TestRunnable() : ran_(false) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     ran_ = true;
 
     return NS_OK;
   }
 
   bool ran() const { return ran_; }
 
--- a/media/mtransport/test/sockettransportservice_unittest.cpp
+++ b/media/mtransport/test/sockettransportservice_unittest.cpp
@@ -76,32 +76,32 @@ class SocketTransportServiceTest : publi
 
 
 // Received an event.
 class EventReceived : public Runnable {
 public:
   explicit EventReceived(SocketTransportServiceTest *test) :
       test_(test) {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     test_->ReceiveEvent();
     return NS_OK;
   }
 
   SocketTransportServiceTest *test_;
 };
 
 
 // Register our listener on the socket
 class RegisterEvent : public Runnable {
 public:
   explicit RegisterEvent(SocketTransportServiceTest *test) :
       test_(test) {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     test_->RegisterHandler();
     return NS_OK;
   }
 
   SocketTransportServiceTest *test_;
 };
 
 
--- a/media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h
+++ b/media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h
@@ -80,17 +80,17 @@ class GmpInitDoneRunnable : public Runna
 {
   public:
     explicit GmpInitDoneRunnable(const std::string& aPCHandle) :
       mResult(WEBRTC_VIDEO_CODEC_OK),
       mPCHandle(aPCHandle)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       if (mResult == WEBRTC_VIDEO_CODEC_OK) {
         // Might be useful to notify the PeerConnection about successful init
         // someday.
         return NS_OK;
       }
 
       PeerConnectionWrapper wrapper(mPCHandle);
--- a/media/webrtc/signaling/src/mediapipeline/MediaPipeline.h
+++ b/media/webrtc/signaling/src/mediapipeline/MediaPipeline.h
@@ -286,17 +286,17 @@ class MediaPipeline : public sigslot::ha
 
 class ConduitDeleteEvent: public Runnable
 {
 public:
   explicit ConduitDeleteEvent(already_AddRefed<MediaSessionConduit> aConduit) :
     mConduit(aConduit) {}
 
   /* we exist solely to proxy release of the conduit */
-  NS_IMETHOD Run() { return NS_OK; }
+  NS_IMETHOD Run() override { return NS_OK; }
 private:
   RefPtr<MediaSessionConduit> mConduit;
 };
 
 // A specialization of pipeline for reading from an input device
 // and transmitting to the network.
 class MediaPipelineTransmit : public MediaPipeline {
 public:
--- a/modules/libpref/Preferences.cpp
+++ b/modules/libpref/Preferences.cpp
@@ -408,17 +408,17 @@ PreferenceServiceReporter::CollectReport
 #undef REPORT
 
   return NS_OK;
 }
 
 namespace {
 class AddPreferencesMemoryReporterRunnable : public Runnable
 {
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     return RegisterStrongMemoryReporter(new PreferenceServiceReporter());
   }
 };
 } // namespace
 
 // static
 Preferences*
--- a/netwerk/base/BackgroundFileSaver.cpp
+++ b/netwerk/base/BackgroundFileSaver.cpp
@@ -66,17 +66,17 @@ class NotifyTargetChangeRunnable final :
 {
 public:
   NotifyTargetChangeRunnable(BackgroundFileSaver *aSaver, nsIFile *aTarget)
   : mSaver(aSaver)
   , mTarget(aTarget)
   {
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     return mSaver->NotifyTargetChange(mTarget);
   }
 
 private:
   RefPtr<BackgroundFileSaver> mSaver;
   nsCOMPtr<nsIFile> mTarget;
 };
--- a/netwerk/base/NetStatistics.h
+++ b/netwerk/base/NetStatistics.h
@@ -57,17 +57,17 @@ public:
       mCountRecv(aCountRecv),
       mCountSent(aCountSent),
       mIsAccumulative(aIsAccumulative)
   {
     MOZ_ASSERT(mAppId != NECKO_NO_APP_ID);
     MOZ_ASSERT(mActiveNetworkInfo);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     nsresult rv;
     nsCOMPtr<nsINetworkStatsServiceProxy> mNetworkStatsServiceProxy =
       do_GetService("@mozilla.org/networkstatsServiceProxy;1", &rv);
     if (NS_FAILED(rv)) {
       return rv;
--- a/netwerk/base/NetworkActivityMonitor.cpp
+++ b/netwerk/base/NetworkActivityMonitor.cpp
@@ -149,17 +149,17 @@ nsNetMon_AcceptRead(PRFileDesc *listenSo
 }
 
 
 class NotifyNetworkActivity : public mozilla::Runnable {
 public:
   explicit NotifyNetworkActivity(NetworkActivityMonitor::Direction aDirection)
     : mDirection(aDirection)
   {}
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
     if (!obs)
       return NS_ERROR_FAILURE;
 
     obs->NotifyObservers(nullptr,
--- a/netwerk/base/nsAsyncRedirectVerifyHelper.cpp
+++ b/netwerk/base/nsAsyncRedirectVerifyHelper.cpp
@@ -27,17 +27,17 @@ NS_IMPL_ISUPPORTS(nsAsyncRedirectVerifyH
 
 class nsAsyncVerifyRedirectCallbackEvent : public Runnable {
 public:
     nsAsyncVerifyRedirectCallbackEvent(nsIAsyncVerifyRedirectCallback *cb,
                                        nsresult result)
         : mCallback(cb), mResult(result) {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         LOG(("nsAsyncVerifyRedirectCallbackEvent::Run() "
              "callback to %p with result %x",
              mCallback.get(), mResult));
        (void) mCallback->OnRedirectVerifyCallback(mResult);
        return NS_OK;
     }
 private:
--- a/netwerk/base/nsAsyncStreamCopier.cpp
+++ b/netwerk/base/nsAsyncStreamCopier.cpp
@@ -31,17 +31,17 @@ public:
     /**
      * @param aCopier
      *        The nsAsyncStreamCopier requesting the information.
      */
     explicit AsyncApplyBufferingPolicyEvent(nsAsyncStreamCopier* aCopier)
         : mCopier(aCopier)
       , mTarget(NS_GetCurrentThread())
       { }
-    NS_METHOD Run()
+    NS_IMETHOD Run() override
     {
       nsresult rv = mCopier->ApplyBufferingPolicy();
       if (NS_FAILED(rv)) {
           mCopier->Cancel(rv);
           return NS_OK;
       }
 
       rv = mTarget->Dispatch(NewRunnableMethod(mCopier,
--- a/netwerk/base/nsBaseChannel.h
+++ b/netwerk/base/nsBaseChannel.h
@@ -247,18 +247,18 @@ private:
   class RedirectRunnable : public mozilla::Runnable
   {
   public:
     RedirectRunnable(nsBaseChannel* chan, nsIChannel* newChannel)
       : mChannel(chan), mNewChannel(newChannel)
     {
       NS_PRECONDITION(newChannel, "Must have channel to redirect to");
     }
-    
-    NS_IMETHOD Run()
+
+    NS_IMETHOD Run() override
     {
       mChannel->HandleAsyncRedirect(mNewChannel);
       return NS_OK;
     }
 
   private:
     RefPtr<nsBaseChannel> mChannel;
     nsCOMPtr<nsIChannel> mNewChannel;
--- a/netwerk/base/nsIOService.cpp
+++ b/netwerk/base/nsIOService.cpp
@@ -1372,25 +1372,24 @@ IsWifiActive()
     }
 #else
     // On anything else than B2G we return true so than wifi-only
     // apps don't think they are offline.
     return true;
 #endif
 }
 
-class
-nsWakeupNotifier : public Runnable
+class nsWakeupNotifier : public Runnable
 {
 public:
     explicit nsWakeupNotifier(nsIIOServiceInternal *ioService)
         :mIOService(ioService)
     { }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         return mIOService->NotifyWakeup();
     }
 
 private:
     virtual ~nsWakeupNotifier() { }
     nsCOMPtr<nsIIOServiceInternal> mIOService;
 };
@@ -1926,17 +1925,17 @@ class SetAppOfflineMainThread : public R
 {
 public:
     SetAppOfflineMainThread(uint32_t aAppId, int32_t aState)
         : mAppId(aAppId)
         , mState(aState)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         MOZ_ASSERT(NS_IsMainThread());
         gIOService->SetAppOfflineInternal(mAppId, mState);
         return NS_OK;
     }
 private:
     uint32_t mAppId;
     int32_t mState;
--- a/netwerk/base/nsPACMan.cpp
+++ b/netwerk/base/nsPACMan.cpp
@@ -70,17 +70,17 @@ public:
     mPACString = pacString;
   }
 
   void SetPACURL(const nsCString &pacURL)
   {
     mPACURL = pacURL;
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     mCallback->OnQueryComplete(mStatus, mPACString, mPACURL);
     mCallback = nullptr;
     return NS_OK;
   }
 
 private:
   RefPtr<nsPACManCallback> mCallback;
@@ -98,17 +98,17 @@ private:
 class ShutdownThread final : public Runnable
 {
 public:
   explicit ShutdownThread(nsIThread *thread)
     : mThread(thread)
   {
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "wrong thread");
     mThread->Shutdown();
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIThread> mThread;
@@ -119,17 +119,17 @@ private:
 class WaitForThreadShutdown final : public Runnable
 {
 public:
   explicit WaitForThreadShutdown(nsPACMan *aPACMan)
     : mPACMan(aPACMan)
   {
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "wrong thread");
     if (mPACMan->mPACThread) {
       mPACMan->mPACThread->Shutdown();
       mPACMan->mPACThread = nullptr;
     }
     return NS_OK;
   }
@@ -147,17 +147,17 @@ private:
 class PACLoadComplete final : public Runnable
 {
 public:
   explicit PACLoadComplete(nsPACMan *aPACMan)
     : mPACMan(aPACMan)
   {
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "wrong thread");
     mPACMan->mLoader = nullptr;
     mPACMan->PostProcessPendingQ();
     return NS_OK;
   }
 
 private:
@@ -189,17 +189,17 @@ public:
 
   void SetupPAC (const char *text, uint32_t datalen, nsCString &pacURI)
   {
     mSetupPAC = true;
     mSetupPACData.Assign(text, datalen);
     mSetupPACURI = pacURI;
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread(), "wrong thread");
     if (mCancel) {
       mPACMan->CancelPendingQ(mCancelStatus);
       mCancel = false;
       return NS_OK;
     }
 
--- a/netwerk/base/nsPreloadedStream.cpp
+++ b/netwerk/base/nsPreloadedStream.cpp
@@ -109,20 +109,20 @@ nsPreloadedStream::CloseWithStatus(nsres
 
 class RunOnThread : public Runnable
 {
 public:
     RunOnThread(nsIAsyncInputStream *aStream,
                 nsIInputStreamCallback *aCallback)
       : mStream(aStream),
         mCallback(aCallback) {}
-    
+
     virtual ~RunOnThread() {}
-    
-    NS_IMETHOD Run()
+
+    NS_IMETHOD Run() override
     {
         mCallback->OnInputStreamReady(mStream);
         return NS_OK;
     }
 
 private:
     nsCOMPtr<nsIAsyncInputStream>    mStream;
     nsCOMPtr<nsIInputStreamCallback> mCallback;
--- a/netwerk/base/nsRequestObserverProxy.cpp
+++ b/netwerk/base/nsRequestObserverProxy.cpp
@@ -42,17 +42,17 @@ public:
         : nsARequestObserverEvent(request)
         , mProxy(proxy)
     {
         NS_PRECONDITION(mProxy, "null pointer");
     }
 
     virtual ~nsOnStartRequestEvent() {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         LOG(("nsOnStartRequestEvent::HandleEvent [req=%x]\n", mRequest.get()));
 
         if (!mProxy->mObserver) {
             NS_NOTREACHED("already handled onStopRequest event (observer is null)");
             return NS_OK;
         }
 
@@ -81,17 +81,17 @@ public:
         : nsARequestObserverEvent(request)
         , mProxy(proxy)
     {
         NS_PRECONDITION(mProxy, "null pointer");
     }
 
     virtual ~nsOnStopRequestEvent() {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         LOG(("nsOnStopRequestEvent::HandleEvent [req=%x]\n", mRequest.get()));
 
         nsMainThreadPtrHandle<nsIRequestObserver> observer = mProxy->mObserver;
         if (!observer) {
             NS_NOTREACHED("already handled onStopRequest event (observer is null)");
             return NS_OK;
         }
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -75,17 +75,17 @@ public:
     nsSocketEvent(nsSocketTransport *transport, uint32_t type,
                   nsresult status = NS_OK, nsISupports *param = nullptr)
         : mTransport(transport)
         , mType(type)
         , mStatus(status)
         , mParam(param)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         mTransport->OnSocketEvent(mType, mStatus, mParam);
         return NS_OK;
     }
 
 private:
     RefPtr<nsSocketTransport> mTransport;
 
@@ -1770,17 +1770,17 @@ nsSocketTransport::GetFD_Locked()
     return mFD;
 }
 
 class ThunkPRClose : public Runnable
 {
 public:
   explicit ThunkPRClose(PRFileDesc *fd) : mFD(fd) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsSocketTransport::CloseSocket(mFD,
       gSocketTransportService->IsTelemetryEnabledAndNotSleepPhase());
     return NS_OK;
   }
 private:
   PRFileDesc *mFD;
 };
--- a/netwerk/base/nsTransportUtils.cpp
+++ b/netwerk/base/nsTransportUtils.cpp
@@ -59,17 +59,17 @@ public:
         , mTransport(transport)
         , mStatus(status)
         , mProgress(progress)
         , mProgressMax(progressMax)
     {}
 
     ~nsTransportStatusEvent() {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         // since this event is being handled, we need to clear the proxy's ref.
         // if not coalescing all, then last event may not equal self!
         {
             MutexAutoLock lock(mProxy->mLock);
             if (mProxy->mLastEvent == this)
                 mProxy->mLastEvent = nullptr;
         }
--- a/netwerk/base/nsUDPSocket.cpp
+++ b/netwerk/base/nsUDPSocket.cpp
@@ -76,17 +76,17 @@ ResolveHost(const nsACString &host, nsID
 class SetSocketOptionRunnable : public Runnable
 {
 public:
   SetSocketOptionRunnable(nsUDPSocket* aSocket, const PRSocketOptionData& aOpt)
     : mSocket(aSocket)
     , mOpt(aOpt)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     return mSocket->SetSocketOption(mOpt);
   }
 
 private:
   RefPtr<nsUDPSocket> mSocket;
   PRSocketOptionData    mOpt;
 };
--- a/netwerk/cache/nsCacheEntryDescriptor.cpp
+++ b/netwerk/cache/nsCacheEntryDescriptor.cpp
@@ -33,17 +33,17 @@ public:
         mThread = do_GetCurrentThread();
         // We addref the listener here and release it in nsNotifyDoomListener
         // on the callers thread. If posting of nsNotifyDoomListener event fails
         // we leak the listener which is better than releasing it on a wrong
         // thread.
         NS_IF_ADDREF(mListener);
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsresult status = NS_OK;
 
         {
             nsCacheServiceAutoLock lock(LOCK_TELEM(NSASYNCDOOMEVENT_RUN));
 
             if (mDescriptor->mCacheEntry) {
                 status = nsCacheService::gService->DoomEntry_Internal(
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
@@ -267,17 +267,17 @@ public:
                         bool shouldUseOldMaxSmartSize)
       : mCachePath(cachePath)
       , mCurrentSize(currentSize)
       , mShouldUseOldMaxSmartSize(shouldUseOldMaxSmartSize)
     {}
    
     // Calculates user's disk space available on a background thread and
     // dispatches this value back to the main thread.
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         uint32_t size;
         size = nsCacheProfilePrefObserver::GetSmartCacheSize(mCachePath,
                                                              mCurrentSize,
                                                              mShouldUseOldMaxSmartSize);
         NS_DispatchToMainThread(new nsSetSmartSizeEvent(size));
         return NS_OK;
     }
@@ -288,17 +288,17 @@ private:
     bool     mShouldUseOldMaxSmartSize;
 };
 
 class nsBlockOnCacheThreadEvent : public Runnable {
 public:
     nsBlockOnCacheThreadEvent()
     {
     }
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsCacheServiceAutoLock autoLock(LOCK_TELEM(NSBLOCKONCACHETHREADEVENT_RUN));
         CACHE_LOG_DEBUG(("nsBlockOnCacheThreadEvent [%p]\n", this));
         nsCacheService::gService->mNotified = true;
         nsCacheService::gService->mCondVar.Notify();
         return NS_OK;
     }
 };
@@ -976,17 +976,17 @@ nsCacheProfilePrefObserver::CacheCompres
 
 class nsProcessRequestEvent : public Runnable {
 public:
     explicit nsProcessRequestEvent(nsCacheRequest *aRequest)
     {
         mRequest = aRequest;
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsresult rv;
 
         NS_ASSERTION(mRequest->mListener,
                      "Sync OpenCacheEntry() posted to background thread!");
 
         nsCacheServiceAutoLock lock(LOCK_TELEM(NSPROCESSREQUESTEVENT_RUN));
         rv = nsCacheService::gService->ProcessRequest(mRequest,
@@ -1026,17 +1026,17 @@ public:
         mThread = do_GetCurrentThread();
         // We addref the listener here and release it in nsNotifyDoomListener
         // on the callers thread. If posting of nsNotifyDoomListener event fails
         // we leak the listener which is better than releasing it on a wrong
         // thread.
         NS_IF_ADDREF(mListener);
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsCacheServiceAutoLock lock;
 
         bool foundActive = true;
         nsresult status = NS_ERROR_NOT_AVAILABLE;
         nsCacheEntry *entry;
         entry = nsCacheService::gService->mActiveEntries.GetEntry(&mKey);
         if (!entry) {
@@ -1644,17 +1644,17 @@ nsCacheService::CreateDiskDevice()
 }
 
 // Runnable sent from cache thread to main thread
 class nsDisableOldMaxSmartSizePrefEvent: public Runnable
 {
 public:
     nsDisableOldMaxSmartSizePrefEvent() {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         // Main thread may have already called nsCacheService::Shutdown
         if (!nsCacheService::IsInitialized())
             return NS_ERROR_NOT_AVAILABLE;
 
         nsCOMPtr<nsIPrefBranch> branch = do_GetService(NS_PREFSERVICE_CONTRACTID);
         if (!branch) {
             return NS_ERROR_NOT_AVAILABLE;
@@ -1862,17 +1862,17 @@ public:
                          nsCacheAccessMode accessGranted,
                          nsresult status)
         : mListener(listener)      // transfers reference
         , mDescriptor(descriptor)  // transfers reference (may be null)
         , mAccessGranted(accessGranted)
         , mStatus(status)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         mListener->OnCacheEntryAvailable(mDescriptor, mAccessGranted, mStatus);
 
         NS_RELEASE(mListener);
         NS_IF_RELEASE(mDescriptor);
         return NS_OK;
     }
 
--- a/netwerk/cache/nsCacheService.h
+++ b/netwerk/cache/nsCacheService.h
@@ -41,17 +41,17 @@ class mozIStorageService;
 class nsNotifyDoomListener : public mozilla::Runnable {
 public:
     nsNotifyDoomListener(nsICacheListener *listener,
                          nsresult status)
         : mListener(listener)      // transfers reference
         , mStatus(status)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         mListener->OnCacheEntryDoomed(mStatus);
         NS_RELEASE(mListener);
         return NS_OK;
     }
 
 private:
     nsICacheListener *mListener;
--- a/netwerk/cache/nsCacheUtils.cpp
+++ b/netwerk/cache/nsCacheUtils.cpp
@@ -10,17 +10,17 @@
 
 using namespace mozilla;
 
 class nsDestroyThreadEvent : public Runnable {
 public:
   explicit nsDestroyThreadEvent(nsIThread *thread)
     : mThread(thread)
   {}
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mThread->Shutdown();
     return NS_OK;
   }
 private:
   nsCOMPtr<nsIThread> mThread;
 };
 
--- a/netwerk/cache/nsDeleteDir.cpp
+++ b/netwerk/cache/nsDeleteDir.cpp
@@ -17,17 +17,17 @@
 #include "prtime.h"
 #include <time.h>
 
 using namespace mozilla;
 
 class nsBlockOnBackgroundThreadEvent : public Runnable {
 public:
   nsBlockOnBackgroundThreadEvent() {}
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MutexAutoLock lock(nsDeleteDir::gInstance->mLock);
     nsDeleteDir::gInstance->mNotified = true;
     nsDeleteDir::gInstance->mCondVar.Notify();
     return NS_OK;
   }
 };
 
--- a/netwerk/cache/nsDiskCacheDevice.cpp
+++ b/netwerk/cache/nsDiskCacheDevice.cpp
@@ -57,17 +57,17 @@ public:
                                           nsDiskCacheBinding * binding)
         : mCanceled(false),
           mEntry(entry),
           mDevice(device),
           mBinding(binding)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsCacheServiceAutoLock lock;
         CACHE_LOG_DEBUG(("nsDiskCacheDeviceDeactivateEntryEvent[%p]\n", this));
         if (!mCanceled) {
             (void) mDevice->DeactivateEntry_Private(mEntry, mBinding);
         }
         return NS_OK;
     }
@@ -80,17 +80,17 @@ private:
     nsDiskCacheBinding *mBinding;
 };
 
 class nsEvictDiskCacheEntriesEvent : public Runnable {
 public:
     explicit nsEvictDiskCacheEntriesEvent(nsDiskCacheDevice *device)
         : mDevice(device) {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsCacheServiceAutoLock lock;
         mDevice->EvictDiskCacheEntries(mDevice->mCacheCapacity);
         return NS_OK;
     }
 
 private:
     nsDiskCacheDevice *mDevice;
--- a/netwerk/cache/nsDiskCacheDeviceSQL.cpp
+++ b/netwerk/cache/nsDiskCacheDeviceSQL.cpp
@@ -253,17 +253,17 @@ public:
 			     nsCString &group,
 			     nsCString &clientID)
     : mDevice(device)
     , mGroup(group)
     , mClientID(clientID)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mDevice->IsActiveCache(mGroup, mClientID))
     {
       mDevice->DeactivateGroup(mGroup);
     }
 
     return mDevice->EvictEntries(mClientID.get());
   }
@@ -870,17 +870,17 @@ nsApplicationCache::GetUsage(uint32_t *u
 
 class nsCloseDBEvent : public Runnable {
 public:
   explicit nsCloseDBEvent(mozIStorageConnection *aDB)
   {
     mDB = aDB;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mDB->Close();
     return NS_OK;
   }
 
 protected:
   virtual ~nsCloseDBEvent() {}
 
--- a/netwerk/cache2/CacheEntry.h
+++ b/netwerk/cache2/CacheEntry.h
@@ -186,17 +186,17 @@ private:
   public:
     AvailableCallbackRunnable(CacheEntry* aEntry,
                               Callback const &aCallback)
       : mEntry(aEntry)
       , mCallback(aCallback)
     {}
 
   private:
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       mEntry->InvokeAvailableCallback(mCallback);
       return NS_OK;
     }
 
     RefPtr<CacheEntry> mEntry;
     Callback mCallback;
   };
@@ -205,17 +205,17 @@ private:
   // we need a runnable for it...
   class DoomCallbackRunnable : public Runnable
   {
   public:
     DoomCallbackRunnable(CacheEntry* aEntry, nsresult aRv)
       : mEntry(aEntry), mRv(aRv) {}
 
   private:
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       nsCOMPtr<nsICacheEntryDoomCallback> callback;
       {
         mozilla::MutexAutoLock lock(mEntry->mLock);
         mEntry->mDoomCallback.swap(callback);
       }
 
       if (callback)
--- a/netwerk/cache2/CacheFile.cpp
+++ b/netwerk/cache2/CacheFile.cpp
@@ -46,17 +46,17 @@ protected:
   ~NotifyCacheFileListenerEvent()
   {
     LOG(("NotifyCacheFileListenerEvent::~NotifyCacheFileListenerEvent() "
          "[this=%p]", this));
     MOZ_COUNT_DTOR(NotifyCacheFileListenerEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     LOG(("NotifyCacheFileListenerEvent::Run() [this=%p]", this));
 
     mCallback->OnFileReady(mRV, mIsNew);
     return NS_OK;
   }
 
 protected:
@@ -85,17 +85,17 @@ protected:
   ~NotifyChunkListenerEvent()
   {
     LOG(("NotifyChunkListenerEvent::~NotifyChunkListenerEvent() [this=%p]",
          this));
     MOZ_COUNT_DTOR(NotifyChunkListenerEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     LOG(("NotifyChunkListenerEvent::Run() [this=%p]", this));
 
     mCallback->OnChunkAvailable(mRV, mChunkIdx, mChunk);
     return NS_OK;
   }
 
 protected:
--- a/netwerk/cache2/CacheFileChunk.cpp
+++ b/netwerk/cache2/CacheFileChunk.cpp
@@ -250,17 +250,17 @@ protected:
   ~NotifyUpdateListenerEvent()
   {
     LOG(("NotifyUpdateListenerEvent::~NotifyUpdateListenerEvent() [this=%p]",
          this));
     MOZ_COUNT_DTOR(NotifyUpdateListenerEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     LOG(("NotifyUpdateListenerEvent::Run() [this=%p]", this));
 
     mCallback->OnChunkUpdated(mChunk);
     return NS_OK;
   }
 
 protected:
--- a/netwerk/cache2/CacheFileIOManager.cpp
+++ b/netwerk/cache2/CacheFileIOManager.cpp
@@ -548,17 +548,17 @@ public:
 
 protected:
   ~ShutdownEvent()
   {
     MOZ_COUNT_DTOR(ShutdownEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MonitorAutoLock mon(mMonitor);
 
     CacheFileIOManager::gInstance->ShutdownInternal();
 
     mNotified = true;
     mon.Notify();
 
@@ -597,17 +597,17 @@ public:
 
 protected:
   ~OpenFileEvent()
   {
     MOZ_COUNT_DTOR(OpenFileEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv = NS_OK;
 
     if (!(mFlags & CacheFileIOManager::SPECIAL_FILE)) {
       SHA1Sum sum;
       sum.update(mKey.BeginReading(), mKey.Length());
       sum.finish(mHash);
     }
@@ -658,17 +658,17 @@ public:
 
 protected:
   ~ReadEvent()
   {
     MOZ_COUNT_DTOR(ReadEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv;
 
     if (mHandle->IsClosed() || (mCallback && mCallback->IsKilled())) {
       rv = NS_ERROR_NOT_INITIALIZED;
     } else {
       rv = CacheFileIOManager::gInstance->ReadInternal(
         mHandle, mOffset, mBuf, mCount);
@@ -708,17 +708,17 @@ protected:
     MOZ_COUNT_DTOR(WriteEvent);
 
     if (!mCallback && mBuf) {
       free(const_cast<char *>(mBuf));
     }
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv;
 
     if (mHandle->IsClosed() || (mCallback && mCallback->IsKilled())) {
       // We usually get here only after the internal shutdown
       // (i.e. mShuttingDown == true).  Pretend write has succeeded
       // to avoid any past-shutdown file dooming.
       rv = (CacheObserver::IsPastShutdownIOLag() ||
@@ -765,17 +765,17 @@ public:
 
 protected:
   ~DoomFileEvent()
   {
     MOZ_COUNT_DTOR(DoomFileEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv;
 
     if (mHandle->IsClosed()) {
       rv = NS_ERROR_NOT_INITIALIZED;
     } else {
       rv = CacheFileIOManager::gInstance->DoomFileInternal(mHandle);
     }
@@ -810,17 +810,17 @@ public:
 
 protected:
   ~DoomFileByKeyEvent()
   {
     MOZ_COUNT_DTOR(DoomFileByKeyEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv;
 
     if (!mIOMan) {
       rv = NS_ERROR_NOT_INITIALIZED;
     } else {
       rv = mIOMan->DoomFileByKeyInternal(&mHash);
       mIOMan = nullptr;
@@ -849,17 +849,17 @@ public:
 
 protected:
   ~ReleaseNSPRHandleEvent()
   {
     MOZ_COUNT_DTOR(ReleaseNSPRHandleEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (!mHandle->IsClosed()) {
       CacheFileIOManager::gInstance->MaybeReleaseNSPRHandleInternal(mHandle);
     }
 
     return NS_OK;
   }
 
@@ -881,17 +881,17 @@ public:
 
 protected:
   ~TruncateSeekSetEOFEvent()
   {
     MOZ_COUNT_DTOR(TruncateSeekSetEOFEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv;
 
     if (mHandle->IsClosed() || (mCallback && mCallback->IsKilled())) {
       rv = NS_ERROR_NOT_INITIALIZED;
     } else {
       rv = CacheFileIOManager::gInstance->TruncateSeekSetEOFInternal(
         mHandle, mTruncatePos, mEOFPos);
@@ -924,17 +924,17 @@ public:
 
 protected:
   ~RenameFileEvent()
   {
     MOZ_COUNT_DTOR(RenameFileEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv;
 
     if (mHandle->IsClosed()) {
       rv = NS_ERROR_NOT_INITIALIZED;
     } else {
       rv = CacheFileIOManager::gInstance->RenameFileInternal(mHandle,
                                                              mNewName);
@@ -968,17 +968,17 @@ public:
 
 protected:
   ~InitIndexEntryEvent()
   {
     MOZ_COUNT_DTOR(InitIndexEntryEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mHandle->IsClosed() || mHandle->IsDoomed()) {
       return NS_OK;
     }
 
     CacheIndex::InitEntry(mHandle->Hash(), mAppId, mAnonymous, mInIsolatedMozBrowser, mPinning);
 
     // We cannot set the filesize before we init the entry. If we're opening
@@ -1020,17 +1020,17 @@ public:
 
 protected:
   ~UpdateIndexEntryEvent()
   {
     MOZ_COUNT_DTOR(UpdateIndexEntryEvent);
   }
 
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mHandle->IsClosed() || mHandle->IsDoomed()) {
       return NS_OK;
     }
 
     CacheIndex::UpdateEntry(mHandle->Hash(),
                             mHasFrecency ? &mFrecency : nullptr,
                             mHasExpirationTime ? &mExpirationTime : nullptr,
@@ -1063,17 +1063,17 @@ public:
                              EMode aMode)
     : mMode(aMode)
     , mFile(aFile)
     , mIOMan(aManager)
   { }
 
   virtual ~MetadataWriteScheduleEvent() { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     RefPtr<CacheFileIOManager> ioMan = CacheFileIOManager::gInstance;
     if (!ioMan) {
       NS_WARNING("CacheFileIOManager already gone in MetadataWriteScheduleEvent::Run()");
       return NS_OK;
     }
 
     switch (mMode)
@@ -4106,17 +4106,17 @@ public:
     }
 
     while (!mMonitorNotified) {
       mon.Wait();
     }
     return mSize;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mozilla::MonitorAutoLock mon(mMonitor);
     // Excluding this since the object itself is a member of CacheFileIOManager
     // reported in CacheFileIOManager::SizeOfIncludingThis as part of |this|.
     mSize = mHandles.SizeOfExcludingThis(mMallocSizeOf);
     for (uint32_t i = 0; i < mSpecialHandles.Length(); ++i) {
       mSize += mSpecialHandles[i]->SizeOfIncludingThis(mMallocSizeOf);
     }
--- a/netwerk/cache2/CacheIndex.h
+++ b/netwerk/cache2/CacheIndex.h
@@ -1066,17 +1066,17 @@ private:
     explicit DiskConsumptionObserver(nsWeakPtr const &aWeakObserver)
       : mObserver(aWeakObserver) { }
     virtual ~DiskConsumptionObserver() {
       if (mObserver && !NS_IsMainThread()) {
         NS_ReleaseOnMainThread(mObserver.forget());
       }
     }
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread());
 
       nsCOMPtr<nsICacheStorageConsumptionObserver> observer =
         do_QueryReferent(mObserver);
 
       mObserver = nullptr;
 
--- a/netwerk/cache2/CacheStorageService.cpp
+++ b/netwerk/cache2/CacheStorageService.cpp
@@ -231,17 +231,17 @@ public:
   }
 
   nsresult Walk()
   {
     return mService->Dispatch(this);
   }
 
 private:
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     if (CacheStorageService::IsOnManagementThread()) {
       LOG(("WalkMemoryCacheRunnable::Run - collecting [this=%p]", this));
       // First, walk, count and grab all entries from the storage
 
       mozilla::MutexAutoLock lock(CacheStorageService::Self()->Lock());
 
       if (!CacheStorageService::IsRunning())
@@ -312,17 +312,17 @@ private:
   {
     if (mCallback)
       ProxyReleaseMainThread(mCallback);
   }
 
   virtual void OnEntryInfo(const nsACString & aURISpec, const nsACString & aIdEnhance,
                            int64_t aDataSize, int32_t aFetchCount,
                            uint32_t aLastModifiedTime, uint32_t aExpirationTime,
-                           bool aPinned)
+                           bool aPinned) override
   {
     nsresult rv;
 
     nsCOMPtr<nsIURI> uri;
     rv = NS_NewURI(getter_AddRefs(uri), aURISpec);
     if (NS_FAILED(rv)) {
       return;
     }
@@ -376,17 +376,17 @@ private:
   class OnCacheEntryInfoRunnable : public Runnable
   {
   public:
     explicit OnCacheEntryInfoRunnable(WalkDiskCacheRunnable* aWalker)
       : mWalker(aWalker)
     {
     }
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread());
 
       nsresult rv;
 
       nsCOMPtr<nsIURI> uri;
       rv = NS_NewURI(getter_AddRefs(uri), mURISpec);
       if (NS_FAILED(rv)) {
@@ -409,17 +409,17 @@ private:
     nsCString mIdEnhance;
     int64_t mDataSize;
     int32_t mFetchCount;
     uint32_t mLastModifiedTime;
     uint32_t mExpirationTime;
     bool mPinned;
   };
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     // The main loop
     nsresult rv;
 
     if (CacheStorageService::IsOnManagementThread()) {
       switch (mPass) {
       case COLLECT_STATS:
         // Get quickly the cache stats.
@@ -487,17 +487,17 @@ private:
     }
 
     return NS_OK;
   }
 
   virtual void OnEntryInfo(const nsACString & aURISpec, const nsACString & aIdEnhance,
                            int64_t aDataSize, int32_t aFetchCount,
                            uint32_t aLastModifiedTime, uint32_t aExpirationTime,
-                           bool aPinned)
+                           bool aPinned) override
   {
     // Called directly from CacheFileIOManager::GetEntryInfo.
 
     // Invoke onCacheEntryInfo on the main thread for this entry.
     RefPtr<OnCacheEntryInfoRunnable> info = new OnCacheEntryInfoRunnable(this);
     info->mURISpec = aURISpec;
     info->mIdEnhance = aIdEnhance;
     info->mDataSize = aDataSize;
@@ -1719,17 +1719,17 @@ CacheStorageService::DoomStorageEntry(Ca
 
     return NS_OK;
   }
 
   class Callback : public Runnable
   {
   public:
     explicit Callback(nsICacheEntryDoomCallback* aCallback) : mCallback(aCallback) { }
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       mCallback->OnCacheEntryDoomed(NS_ERROR_NOT_AVAILABLE);
       return NS_OK;
     }
     nsCOMPtr<nsICacheEntryDoomCallback> mCallback;
   };
 
   if (aCallback) {
@@ -1843,17 +1843,17 @@ CacheStorageService::DoomStorageEntries(
   // being doomed is/are not accessible after the function returns.  So there is
   // probably no need for a callback - has no meaning.  But for compatibility
   // with the old cache that is still in the tree we keep the API similar to be
   // able to make tests as well as other consumers work for now.
   class Callback : public Runnable
   {
   public:
     explicit Callback(nsICacheEntryDoomCallback* aCallback) : mCallback(aCallback) { }
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       mCallback->OnCacheEntryDoomed(NS_OK);
       return NS_OK;
     }
     nsCOMPtr<nsICacheEntryDoomCallback> mCallback;
   };
 
   if (aCallback) {
--- a/netwerk/dns/DNSRequestChild.cpp
+++ b/netwerk/dns/DNSRequestChild.cpp
@@ -162,17 +162,17 @@ ChildDNSRecord::ReportUnusable(uint16_t 
 class CancelDNSRequestEvent : public Runnable
 {
 public:
   CancelDNSRequestEvent(DNSRequestChild* aDnsReq, nsresult aReason)
     : mDnsRequest(aDnsReq)
     , mReasonForCancel(aReason)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mDnsRequest->mIPCOpen) {
       // Send request to Parent process.
       mDnsRequest->SendCancelDNSRequest(mDnsRequest->mHost, mDnsRequest->mFlags,
                                         mDnsRequest->mNetworkInterface,
                                         mReasonForCancel);
     }
     return NS_OK;
--- a/netwerk/dns/nsDNSService2.cpp
+++ b/netwerk/dns/nsDNSService2.cpp
@@ -449,17 +449,17 @@ nsDNSSyncRequest::SizeOfIncludingThis(Ma
 class NotifyDNSResolution: public Runnable
 {
 public:
     explicit NotifyDNSResolution(const nsACString &aHostname)
         : mHostname(aHostname)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         MOZ_ASSERT(NS_IsMainThread());
         nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
         if (obs) {
             obs->NotifyObservers(nullptr,
                                  "dns-resolution-request",
                                  NS_ConvertUTF8toUTF16(mHostname).get());
         }
--- a/netwerk/ipc/RemoteOpenFileChild.cpp
+++ b/netwerk/ipc/RemoteOpenFileChild.cpp
@@ -49,17 +49,17 @@ public:
     {
         MOZ_ASSERT(NS_IsMainThread());
 
         nsresult rv = NS_DispatchToCurrentThread(this);
         NS_ENSURE_SUCCESS_VOID(rv);
     }
 
 private:
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         MOZ_ASSERT(NS_IsMainThread());
         MOZ_ASSERT(mListener);
 
         mListener->OnRemoteFileOpenComplete(mRV);
         return NS_OK;
     }
 
--- a/netwerk/protocol/file/nsFileChannel.cpp
+++ b/netwerk/protocol/file/nsFileChannel.cpp
@@ -58,17 +58,17 @@ public:
   // Call this method to interrupt a file copy operation that is occuring on
   // a background thread.  The status parameter passed to this function must
   // be a failure code and is set as the status of this file copy operation.
   void Interrupt(nsresult status) {
     NS_ASSERTION(NS_FAILED(status), "must be a failure code");
     mInterruptStatus = status;
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     DoCopy();
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIEventTarget> mCallbackTarget;
   nsCOMPtr<nsIRunnable> mCallback;
   nsCOMPtr<nsITransportEventSink> mSink;
--- a/netwerk/protocol/ftp/FTPChannelChild.cpp
+++ b/netwerk/protocol/ftp/FTPChannelChild.cpp
@@ -519,17 +519,17 @@ public:
     MOZ_COUNT_CTOR(nsFtpChildAsyncAlert);
   }
 protected:
   virtual ~nsFtpChildAsyncAlert()
   {
     MOZ_COUNT_DTOR(nsFtpChildAsyncAlert);
   }
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mPrompter) {
       mPrompter->Alert(nullptr, mResponseMsg.get());
     }
     return NS_OK;
   }
 private:
   nsCOMPtr<nsIPrompt> mPrompter;
--- a/netwerk/protocol/ftp/FTPChannelParent.cpp
+++ b/netwerk/protocol/ftp/FTPChannelParent.cpp
@@ -792,17 +792,17 @@ public:
                         bool aSkipResume)
     : mChannelParent(aChannelParent)
     , mErrorCode(aErrorCode)
     , mSkipResume(aSkipResume)
   {
     MOZ_RELEASE_ASSERT(aChannelParent);
     MOZ_RELEASE_ASSERT(NS_FAILED(aErrorCode));
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mChannelParent->NotifyDiversionFailed(mErrorCode, mSkipResume);
     return NS_OK;
   }
 private:
   RefPtr<FTPChannelParent> mChannelParent;
   nsresult mErrorCode;
   bool mSkipResume;
--- a/netwerk/protocol/ftp/nsFtpConnectionThread.cpp
+++ b/netwerk/protocol/ftp/nsFtpConnectionThread.cpp
@@ -1800,17 +1800,17 @@ public:
         MOZ_COUNT_CTOR(nsFtpAsyncAlert);
     }
 protected:
     virtual ~nsFtpAsyncAlert()
     {
         MOZ_COUNT_DTOR(nsFtpAsyncAlert);
     }
 public:
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         if (mPrompter) {
             mPrompter->Alert(nullptr, mResponseMsg.get());
         }
         return NS_OK;
     }
 private:
     nsCOMPtr<nsIPrompt> mPrompter;
--- a/netwerk/protocol/http/AlternateServices.cpp
+++ b/netwerk/protocol/http/AlternateServices.cpp
@@ -479,17 +479,17 @@ AltSvcCache::GetAltServiceMapping(const 
 
 class ProxyClearHostMapping : public Runnable {
 public:
   explicit ProxyClearHostMapping(const nsACString &host, int32_t port)
     : mHost(host)
     , mPort(port)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
       MOZ_ASSERT(NS_IsMainThread());
       gHttpHandler->ConnMgr()->ClearHostMapping(mHost, mPort);
       return NS_OK;
     }
 private:
     nsCString mHost;
     int32_t mPort;
--- a/netwerk/protocol/http/Http2Push.cpp
+++ b/netwerk/protocol/http/Http2Push.cpp
@@ -29,17 +29,17 @@ class CallChannelOnPush final : public R
                     const nsACString &pushedURI,
                     Http2PushedStream *pushStream)
     : mAssociatedChannel(associatedChannel)
     , mPushedURI(pushedURI)
     , mPushedStream(pushStream)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     RefPtr<nsHttpChannel> channel;
     CallQueryInterface(mAssociatedChannel, channel.StartAssignment());
     MOZ_ASSERT(channel);
     if (channel && NS_SUCCEEDED(channel->OnPush(mPushedURI, mPushedStream))) {
       return NS_OK;
     }
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -2028,17 +2028,17 @@ class CookieNotifierRunnable : public Ru
 {
 public:
   CookieNotifierRunnable(HttpBaseChannel* aChannel, char const * aCookie)
     : mChannel(aChannel)
   {
     CopyASCIItoUTF16(aCookie, mCookie);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
     if (obs) {
       obs->NotifyObservers(static_cast<nsIChannel*>(mChannel.get()),
                            "http-on-response-set-cookie",
                            mCookie.get());
     }
     return NS_OK;
--- a/netwerk/protocol/http/HttpChannelChild.cpp
+++ b/netwerk/protocol/http/HttpChannelChild.cpp
@@ -1551,17 +1551,17 @@ public:
   : mChannel(aChannel)
   , mNewChannel(aNewChannel)
   , mListener(aListener)
   , mInput(aInput)
   , mHead(aHead)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mChannel->Redirect3Complete();
     mNewChannel->OverrideWithSynthesizedResponse(mHead, mInput, mListener);
     return NS_OK;
   }
 };
 
 NS_IMETHODIMP
 HttpChannelChild::OnRedirectVerifyCallback(nsresult result)
--- a/netwerk/protocol/http/HttpChannelParent.cpp
+++ b/netwerk/protocol/http/HttpChannelParent.cpp
@@ -1567,17 +1567,17 @@ public:
                          bool aSkipResume)
     : mChannelParent(aChannelParent)
     , mErrorCode(aErrorCode)
     , mSkipResume(aSkipResume)
   {
     MOZ_RELEASE_ASSERT(aChannelParent);
     MOZ_RELEASE_ASSERT(NS_FAILED(aErrorCode));
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mChannelParent->NotifyDiversionFailed(mErrorCode, mSkipResume);
     return NS_OK;
   }
 private:
   RefPtr<HttpChannelParent> mChannelParent;
   nsresult mErrorCode;
   bool mSkipResume;
--- a/netwerk/protocol/http/HttpChannelParentListener.cpp
+++ b/netwerk/protocol/http/HttpChannelParentListener.cpp
@@ -281,17 +281,17 @@ class FinishSynthesizedResponse : public
 {
   nsCOMPtr<nsIInterceptedChannel> mChannel;
 public:
   explicit FinishSynthesizedResponse(nsIInterceptedChannel* aChannel)
   : mChannel(aChannel)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // The URL passed as an argument here doesn't matter, since the child will
     // receive a redirection notification as a result of this synthesized response.
     mChannel->FinishSynthesizedResponse(EmptyCString());
     return NS_OK;
   }
 };
 
--- a/netwerk/protocol/http/nsHttpActivityDistributor.cpp
+++ b/netwerk/protocol/http/nsHttpActivityDistributor.cpp
@@ -32,17 +32,17 @@ public:
         , mActivitySubtype(aActivitySubtype)
         , mTimestamp(aTimestamp)
         , mExtraSizeData(aExtraSizeData)
         , mExtraStringData(aExtraStringData)
         , mObservers(*aObservers)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         for (size_t i = 0 ; i < mObservers.Length() ; i++)
             mObservers[i]->ObserveActivity(mHttpChannel, mActivityType,
                                            mActivitySubtype, mTimestamp,
                                            mExtraSizeData, mExtraStringData);
         return NS_OK;
     }
 
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -6579,17 +6579,17 @@ public:
     : mEventSink(aEventSink)
     , mTransportStatus(aTransportStatus)
     , mProgress(aProgress)
     , mProgressMax(aProgressMax)
     {
         MOZ_ASSERT(!NS_IsMainThread(), "Shouldn't be created on main thread");
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         MOZ_ASSERT(NS_IsMainThread(), "Should run on main thread");
         if (mEventSink) {
             mEventSink->OnTransportStatus(nullptr, mTransportStatus,
                                           mProgress, mProgressMax);
         }
         return NS_OK;
     }
--- a/netwerk/protocol/http/nsHttpConnection.cpp
+++ b/netwerk/protocol/http/nsHttpConnection.cpp
@@ -1361,17 +1361,17 @@ nsHttpConnection::ResumeRecv()
 class HttpConnectionForceIO : public Runnable
 {
 public:
   HttpConnectionForceIO(nsHttpConnection *aConn, bool doRecv)
      : mConn(aConn)
      , mDoRecv(doRecv)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread);
 
         if (mDoRecv) {
             if (!mConn->mSocketIn)
                 return NS_OK;
             return mConn->OnInputStreamReady(mConn->mSocketIn);
         }
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -199,17 +199,17 @@ class ConnEvent : public Runnable
 public:
     ConnEvent(nsHttpConnectionMgr *mgr,
               nsConnEventHandler handler, int32_t iparam, ARefBase *vparam)
         : mMgr(mgr)
         , mHandler(handler)
         , mIParam(iparam)
         , mVParam(vparam) {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         (mMgr->*mHandler)(mIParam, mVParam);
         return NS_OK;
     }
 
 private:
     virtual ~ConnEvent() {}
 
--- a/netwerk/protocol/http/nsHttpTransaction.cpp
+++ b/netwerk/protocol/http/nsHttpTransaction.cpp
@@ -2096,17 +2096,17 @@ nsHttpTransaction::GetResponseEnd()
 //-----------------------------------------------------------------------------
 
 class DeleteHttpTransaction : public Runnable {
 public:
     explicit DeleteHttpTransaction(nsHttpTransaction *trans)
         : mTrans(trans)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         delete mTrans;
         return NS_OK;
     }
 private:
     nsHttpTransaction *mTrans;
 };
 
--- a/netwerk/protocol/http/nsHttpTransaction.h
+++ b/netwerk/protocol/http/nsHttpTransaction.h
@@ -201,17 +201,17 @@ private:
 private:
     class UpdateSecurityCallbacks : public Runnable
     {
       public:
         UpdateSecurityCallbacks(nsHttpTransaction* aTrans,
                                 nsIInterfaceRequestor* aCallbacks)
         : mTrans(aTrans), mCallbacks(aCallbacks) {}
 
-        NS_IMETHOD Run()
+        NS_IMETHOD Run() override
         {
             if (mTrans->mConnection)
                 mTrans->mConnection->SetSecurityCallbacks(mCallbacks);
             return NS_OK;
         }
       private:
         RefPtr<nsHttpTransaction> mTrans;
         nsCOMPtr<nsIInterfaceRequestor> mCallbacks;
--- a/netwerk/protocol/rtsp/RtspChannelChild.cpp
+++ b/netwerk/protocol/rtsp/RtspChannelChild.cpp
@@ -88,17 +88,17 @@ public:
   CallListenerOnStartRequestEvent(nsIStreamListener *aListener,
                                   nsIRequest *aRequest, nsISupports *aContext)
     : mListener(aListener)
     , mRequest(aRequest)
     , mContext(aContext)
   {
     MOZ_RELEASE_ASSERT(aListener);
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mListener->OnStartRequest(mRequest, mContext);
     return NS_OK;
   }
 private:
   RefPtr<nsIStreamListener> mListener;
   RefPtr<nsIRequest> mRequest;
@@ -193,17 +193,17 @@ public:
                                  nsISupports *aContext, nsresult aStatus)
     : mListener(aListener)
     , mRequest(aRequest)
     , mContext(aContext)
     , mStatus(aStatus)
   {
     MOZ_RELEASE_ASSERT(aListener);
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mListener->OnStopRequest(mRequest, mContext, mStatus);
     return NS_OK;
   }
 private:
   RefPtr<nsIStreamListener> mListener;
   RefPtr<nsIRequest> mRequest;
--- a/netwerk/protocol/rtsp/controller/RtspController.cpp
+++ b/netwerk/protocol/rtsp/controller/RtspController.cpp
@@ -208,17 +208,17 @@ public:
     , mLength(length)
     , mOffset(offset)
     , mMetaData(meta)
     , mListener(listener)
   {
     mData.Assign(data);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mListener->OnMediaDataAvailable(mIndex, mData, mLength,
                                     mOffset, mMetaData);
     return NS_OK;
   }
 
 private:
@@ -251,17 +251,17 @@ public:
   SendOnConnectedTask(nsIStreamingProtocolListener *listener,
                       uint8_t index,
                       nsIStreamingProtocolMetaData *meta)
     : mListener(listener)
     , mIndex(index)
     , mMetaData(meta)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mListener->OnConnected(mIndex, mMetaData);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIStreamingProtocolListener> mListener;
@@ -290,17 +290,17 @@ public:
   SendOnDisconnectedTask(nsIStreamingProtocolListener *listener,
                          uint8_t index,
                          nsresult reason)
     : mListener(listener)
     , mIndex(index)
     , mReason(reason)
   { }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mListener->OnDisconnected(mIndex, mReason);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIStreamingProtocolListener> mListener;
--- a/netwerk/protocol/rtsp/controller/RtspControllerChild.cpp
+++ b/netwerk/protocol/rtsp/controller/RtspControllerChild.cpp
@@ -268,17 +268,17 @@ public:
                IPCEvent aEvent,
                uint64_t aSeekTime)
     : mController(aController)
     , mEvent(aEvent)
     , mSeekTime(aSeekTime)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     if (mController->OKToSendIPC() == false) {
       // Don't send any more IPC events; no guarantee that parent objects are
       // still alive.
       return NS_ERROR_FAILURE;
     }
     bool rv = true;
--- a/netwerk/protocol/websocket/WebSocketChannel.cpp
+++ b/netwerk/protocol/websocket/WebSocketChannel.cpp
@@ -700,17 +700,17 @@ class CallAcknowledge final : public Can
 {
 public:
   CallAcknowledge(WebSocketChannel* aChannel,
                   uint32_t aSize)
     : mChannel(aChannel),
       mListenerMT(mChannel->mListenerMT),
       mSize(aSize) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(mChannel->IsOnTargetThread());
 
     LOG(("WebSocketChannel::CallAcknowledge: Size %u\n", mSize));
     if (mListenerMT) {
       mListenerMT->mListener->OnAcknowledge(mListenerMT->mContext, mSize);
     }
     return NS_OK;
@@ -2277,17 +2277,17 @@ class RemoveObserverRunnable : public Ru
 {
   RefPtr<WebSocketChannel> mChannel;
 
 public:
   explicit RemoveObserverRunnable(WebSocketChannel* aChannel)
     : mChannel(aChannel)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIObserverService> observerService =
       mozilla::services::GetObserverService();
     if (!observerService) {
       NS_WARNING("failed to get observer service");
       return NS_OK;
     }
 
--- a/netwerk/protocol/websocket/WebSocketChannelChild.cpp
+++ b/netwerk/protocol/websocket/WebSocketChannelChild.cpp
@@ -131,17 +131,17 @@ WebSocketChannelChild::IsEncrypted() con
 class WrappedChannelEvent : public Runnable
 {
 public:
   explicit WrappedChannelEvent(ChannelEvent *aChannelEvent)
     : mChannelEvent(aChannelEvent)
   {
     MOZ_RELEASE_ASSERT(aChannelEvent);
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mChannelEvent->Run();
     return NS_OK;
   }
 private:
   nsAutoPtr<ChannelEvent> mChannelEvent;
 };
 
@@ -510,17 +510,17 @@ public:
              const nsACString& aReason)
     : mChild(aChild)
     , mCode(aCode)
     , mReason(aReason)
   {
     MOZ_RELEASE_ASSERT(!NS_IsMainThread());
     MOZ_ASSERT(aChild);
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_RELEASE_ASSERT(NS_IsMainThread());
     mChild->Close(mCode, mReason);
     return NS_OK;
   }
 private:
   RefPtr<WebSocketChannelChild> mChild;
   uint16_t                        mCode;
@@ -558,17 +558,17 @@ public:
            bool aBinaryMsg)
     : mChild(aChild)
     , mMsg(aMsg)
     , mBinaryMsg(aBinaryMsg)
   {
     MOZ_RELEASE_ASSERT(!NS_IsMainThread());
     MOZ_ASSERT(aChild);
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_RELEASE_ASSERT(NS_IsMainThread());
     if (mBinaryMsg) {
       mChild->SendBinaryMsg(mMsg);
     } else {
       mChild->SendMsg(mMsg);
     }
     return NS_OK;
@@ -633,17 +633,17 @@ public:
                     uint32_t aLength)
     : mChild(aChild)
     , mStream(aStream)
     , mLength(aLength)
   {
     MOZ_RELEASE_ASSERT(!NS_IsMainThread());
     MOZ_ASSERT(aChild);
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mChild->SendBinaryStream(mStream, mLength);
     return NS_OK;
   }
 private:
   RefPtr<WebSocketChannelChild>      mChild;
   nsAutoPtr<OptionalInputStreamParams> mStream;
--- a/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
+++ b/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
@@ -46,43 +46,43 @@ protected:
   RefPtr<nsWyciwygChannel> mChannel;
 };
 
 class nsWyciwygSetCharsetandSourceEvent : public nsWyciwygAsyncEvent {
 public:
   explicit nsWyciwygSetCharsetandSourceEvent(nsWyciwygChannel *aChannel)
     : nsWyciwygAsyncEvent(aChannel) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mChannel->SetCharsetAndSourceInternal();
     return NS_OK;
   }
 };
 
 class nsWyciwygWriteEvent : public nsWyciwygAsyncEvent {
 public:
   nsWyciwygWriteEvent(nsWyciwygChannel *aChannel, const nsAString &aData)
     : nsWyciwygAsyncEvent(aChannel), mData(aData) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mChannel->WriteToCacheEntryInternal(mData);
     return NS_OK;
   }
 private:
   nsString mData;
 };
 
 class nsWyciwygCloseEvent : public nsWyciwygAsyncEvent {
 public:
   nsWyciwygCloseEvent(nsWyciwygChannel *aChannel, nsresult aReason)
     : nsWyciwygAsyncEvent(aChannel), mReason(aReason) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mChannel->CloseCacheEntryInternal(mReason);
     return NS_OK;
   }
 private:
   nsresult mReason;
 };
 
--- a/netwerk/sctp/datachannel/DataChannel.cpp
+++ b/netwerk/sctp/datachannel/DataChannel.cpp
@@ -2294,17 +2294,17 @@ class ReadBlobRunnable : public Runnable
 public:
   ReadBlobRunnable(DataChannelConnection* aConnection, uint16_t aStream,
     nsIInputStream* aBlob) :
     mConnection(aConnection),
     mStream(aStream),
     mBlob(aBlob)
   {}
 
-  NS_IMETHODIMP Run() {
+  NS_IMETHOD Run() override {
     // ReadBlob() is responsible to releasing the reference
     DataChannelConnection *self = mConnection;
     self->ReadBlob(mConnection.forget(), mStream, mBlob);
     return NS_OK;
   }
 
 private:
   // Make sure the Connection doesn't die while there are jobs outstanding.
@@ -2347,17 +2347,17 @@ public:
   {
     if (!NS_IsMainThread() && mConnection) {
       MOZ_ASSERT(false);
       // explicitly leak the connection if destroyed off mainthread
       Unused << mConnection.forget().take();
     }
   }
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     ASSERT_WEBRTC(NS_IsMainThread());
 
     mConnection->SendBinaryMsg(mStream, mData);
     mConnection = nullptr;
     return NS_OK;
   }
 
--- a/netwerk/sctp/datachannel/DataChannel.h
+++ b/netwerk/sctp/datachannel/DataChannel.h
@@ -489,17 +489,17 @@ public:
       mConnection(aConnection) {}
 
   // for ON_CONNECTION/ON_DISCONNECTED
   DataChannelOnMessageAvailable(int32_t     aType,
                                 DataChannelConnection *aConnection)
     : mType(aType),
       mConnection(aConnection) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     // Note: calling the listeners can indirectly cause the listeners to be
     // made available for GC (by removing event listeners), especially for
     // OnChannelClosed().  We hold a ref to the Channel and the listener
     // while calling this.
     switch (mType) {
--- a/netwerk/test/TestFileInput2.cpp
+++ b/netwerk/test/TestFileInput2.cpp
@@ -126,17 +126,17 @@ Copy(nsIInputStream* inStr, nsIOutputStr
     return rv;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 
 class FileSpecWorker : public nsIRunnable {
 public:
 
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
         nsresult rv;
 
         PRIntervalTime startTime = PR_IntervalNow();
         PRIntervalTime endTime;
         nsCOMPtr<nsIInputStream> inStr;
         nsCOMPtr<nsIOutputStream> outStr;
         uint32_t copyCount = 0;
 
@@ -223,17 +223,17 @@ NS_IMPL_ISUPPORTS(FileSpecWorker, nsIRun
 ////////////////////////////////////////////////////////////////////////////////
 
 #include "nsIIOService.h"
 #include "nsIChannel.h"
 
 class FileChannelWorker : public nsIRunnable {
 public:
 
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
         nsresult rv;
 
         PRIntervalTime startTime = PR_IntervalNow();
         PRIntervalTime endTime;
         uint32_t copyCount = 0;
         nsCOMPtr<nsIFileChannel> inCh;
         nsCOMPtr<nsIFileChannel> outCh;
         nsCOMPtr<nsIInputStream> inStr;
--- a/netwerk/test/TestIOThreads.cpp
+++ b/netwerk/test/TestIOThreads.cpp
@@ -18,17 +18,17 @@ static PRLogModuleInfo *gTestLog = nullp
 #define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
 
 class nsIOEvent : public nsIRunnable {
 public:
     NS_DECL_THREADSAFE_ISUPPORTS
 
     nsIOEvent(int i) : mIndex(i) {}
 
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
         LOG(("Run [%d]\n", mIndex));
         return NS_OK;
     }
 
 private:
     int mIndex;
 };
 NS_IMPL_ISUPPORTS(nsIOEvent, nsIRunnable)
--- a/parser/html/nsHtml5RefPtr.h
+++ b/parser/html/nsHtml5RefPtr.h
@@ -12,17 +12,17 @@ template <class T>
 class nsHtml5RefPtrReleaser : public mozilla::Runnable
   {
     private:
       T* mPtr;
     public:
       explicit nsHtml5RefPtrReleaser(T* aPtr)
           : mPtr(aPtr)
         {}
-      NS_IMETHODIMP Run()
+      NS_IMETHOD Run() override
         {
           mPtr->Release();
           return NS_OK;
         }
   };
 
 // template <class T> class nsHtml5RefPtrGetterAddRefs;
 
--- a/parser/html/nsHtml5StreamParser.cpp
+++ b/parser/html/nsHtml5StreamParser.cpp
@@ -117,34 +117,34 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 class nsHtml5ExecutorFlusher : public Runnable
 {
   private:
     RefPtr<nsHtml5TreeOpExecutor> mExecutor;
   public:
     explicit nsHtml5ExecutorFlusher(nsHtml5TreeOpExecutor* aExecutor)
       : mExecutor(aExecutor)
     {}
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       if (!mExecutor->isInList()) {
         mExecutor->RunFlushLoop();
       }
       return NS_OK;
     }
 };
 
 class nsHtml5LoadFlusher : public Runnable
 {
   private:
     RefPtr<nsHtml5TreeOpExecutor> mExecutor;
   public:
     explicit nsHtml5LoadFlusher(nsHtml5TreeOpExecutor* aExecutor)
       : mExecutor(aExecutor)
     {}
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       mExecutor->FlushSpeculativeLoads();
       return NS_OK;
     }
 };
 
 nsHtml5StreamParser::nsHtml5StreamParser(nsHtml5TreeOpExecutor* aExecutor,
                                          nsHtml5Parser* aOwner,
@@ -1044,17 +1044,17 @@ nsHtml5StreamParser::DoStopRequest()
 class nsHtml5RequestStopper : public Runnable
 {
   private:
     nsHtml5RefPtr<nsHtml5StreamParser> mStreamParser;
   public:
     explicit nsHtml5RequestStopper(nsHtml5StreamParser* aStreamParser)
       : mStreamParser(aStreamParser)
     {}
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       mozilla::MutexAutoLock autoLock(mStreamParser->mTokenizerMutex);
       mStreamParser->DoStopRequest();
       return NS_OK;
     }
 };
 
 nsresult
@@ -1132,17 +1132,17 @@ class nsHtml5DataAvailable : public Runn
   public:
     nsHtml5DataAvailable(nsHtml5StreamParser* aStreamParser,
                          UniquePtr<uint8_t[]> aData,
                          uint32_t             aLength)
       : mStreamParser(aStreamParser)
       , mData(Move(aData))
       , mLength(aLength)
     {}
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       mozilla::MutexAutoLock autoLock(mStreamParser->mTokenizerMutex);
       mStreamParser->DoDataAvailable(mData.get(), mLength);
       return NS_OK;
     }
 };
 
 nsresult
@@ -1449,17 +1449,17 @@ nsHtml5StreamParser::ParseAvailableData(
 class nsHtml5StreamParserContinuation : public Runnable
 {
 private:
   nsHtml5RefPtr<nsHtml5StreamParser> mStreamParser;
 public:
   explicit nsHtml5StreamParserContinuation(nsHtml5StreamParser* aStreamParser)
     : mStreamParser(aStreamParser)
   {}
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     mozilla::MutexAutoLock autoLock(mStreamParser->mTokenizerMutex);
     mStreamParser->Uninterrupt();
     mStreamParser->ParseAvailableData();
     return NS_OK;
   }
 };
 
@@ -1615,17 +1615,17 @@ nsHtml5StreamParser::ContinueAfterFailed
 class nsHtml5TimerKungFu : public Runnable
 {
 private:
   nsHtml5RefPtr<nsHtml5StreamParser> mStreamParser;
 public:
   explicit nsHtml5TimerKungFu(nsHtml5StreamParser* aStreamParser)
     : mStreamParser(aStreamParser)
   {}
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     if (mStreamParser->mFlushTimer) {
       mStreamParser->mFlushTimer->Cancel();
       mStreamParser->mFlushTimer = nullptr;
     }
     return NS_OK;
   }
 };
--- a/parser/html/nsHtml5TreeOpExecutor.cpp
+++ b/parser/html/nsHtml5TreeOpExecutor.cpp
@@ -48,17 +48,17 @@ NS_IMPL_RELEASE_INHERITED(nsHtml5TreeOpE
 class nsHtml5ExecutorReflusher : public Runnable
 {
   private:
     RefPtr<nsHtml5TreeOpExecutor> mExecutor;
   public:
     explicit nsHtml5ExecutorReflusher(nsHtml5TreeOpExecutor* aExecutor)
       : mExecutor(aExecutor)
     {}
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       mExecutor->RunFlushLoop();
       return NS_OK;
     }
 };
 
 static mozilla::LinkedList<nsHtml5TreeOpExecutor>* gBackgroundFlushList = nullptr;
 static nsITimer* gFlushTimer = nullptr;
--- a/parser/htmlparser/nsParser.cpp
+++ b/parser/htmlparser/nsParser.cpp
@@ -112,17 +112,17 @@ class nsParserContinueEvent : public Run
 {
 public:
   RefPtr<nsParser> mParser;
 
   explicit nsParserContinueEvent(nsParser* aParser)
     : mParser(aParser)
   {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mParser->HandleParserContinueEvent(this);
     return NS_OK;
   }
 };
 
 //-------------- End ParseContinue Event Definition ------------------------
 
--- a/security/manager/ssl/SSLServerCertVerification.cpp
+++ b/security/manager/ssl/SSLServerCertVerification.cpp
@@ -708,17 +708,17 @@ CreateCertErrorRunnable(CertVerifier& ce
 class CertErrorRunnableRunnable : public Runnable
 {
 public:
   explicit CertErrorRunnableRunnable(CertErrorRunnable* certErrorRunnable)
     : mCertErrorRunnable(certErrorRunnable)
   {
   }
 private:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsresult rv = mCertErrorRunnable->DispatchToMainThreadAndWait();
     // The result must run on the socket transport thread, which we are already
     // on, so we can just run it directly, instead of dispatching it.
     if (NS_SUCCEEDED(rv)) {
       rv = mCertErrorRunnable->mResult ? mCertErrorRunnable->mResult->Run()
                                        : NS_ERROR_UNEXPECTED;
     }
--- a/security/manager/ssl/nsNSSCallbacks.cpp
+++ b/security/manager/ssl/nsNSSCallbacks.cpp
@@ -176,17 +176,17 @@ nsHTTPDownloadEvent::Run()
   }
 
   return NS_OK;
 }
 
 struct nsCancelHTTPDownloadEvent : Runnable {
   RefPtr<nsHTTPListener> mListener;
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mListener->FreeLoadGroup(true);
     mListener = nullptr;
     return NS_OK;
   }
 };
 
 Result
 nsNSSHttpServerSession::createSessionFcn(const char* host,
--- a/storage/StorageBaseStatementInternal.cpp
+++ b/storage/StorageBaseStatementInternal.cpp
@@ -37,17 +37,17 @@ public:
    */
   AsyncStatementFinalizer(StorageBaseStatementInternal *aStatement,
                           Connection *aConnection)
   : mStatement(aStatement)
   , mConnection(aConnection)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mStatement->mAsyncStatement) {
       sqlite3_finalize(mStatement->mAsyncStatement);
       mStatement->mAsyncStatement = nullptr;
     }
 
     nsCOMPtr<nsIThread> targetThread(mConnection->threadOpenedOn);
     NS_ProxyRelease(targetThread, mStatement.forget());
@@ -83,17 +83,17 @@ public:
   LastDitchSqliteStatementFinalizer(RefPtr<Connection> &aConnection,
                                     sqlite3_stmt *aStatement)
   : mConnection(aConnection)
   , mAsyncStatement(aStatement)
   {
     NS_PRECONDITION(aConnection, "You must provide a Connection");
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     (void)::sqlite3_finalize(mAsyncStatement);
     mAsyncStatement = nullptr;
 
     nsCOMPtr<nsIThread> target(mConnection->threadOpenedOn);
     (void)::NS_ProxyRelease(target, mConnection.forget());
     return NS_OK;
   }
--- a/storage/mozStorageAsyncStatementExecution.cpp
+++ b/storage/mozStorageAsyncStatementExecution.cpp
@@ -57,17 +57,17 @@ public:
                          mozIStorageResultSet *aResults,
                          AsyncExecuteStatements *aEventStatus) :
       mCallback(aCallback)
     , mResults(aResults)
     , mEventStatus(aEventStatus)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_ASSERTION(mCallback, "Trying to notify about results without a callback!");
 
     if (mEventStatus->shouldNotify()) {
       // Hold a strong reference to the callback while notifying it, so that if
       // it spins the event loop, the callback won't be released and freed out
       // from under us.
       nsCOMPtr<mozIStorageStatementCallback> callback =
@@ -95,17 +95,17 @@ public:
                 mozIStorageError *aErrorObj,
                 AsyncExecuteStatements *aEventStatus) :
       mCallback(aCallback)
     , mErrorObj(aErrorObj)
     , mEventStatus(aEventStatus)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mEventStatus->shouldNotify() && mCallback) {
       // Hold a strong reference to the callback while notifying it, so that if
       // it spins the event loop, the callback won't be released and freed out
       // from under us.
       nsCOMPtr<mozIStorageStatementCallback> callback =
         do_QueryInterface(mCallback);
 
@@ -135,17 +135,17 @@ public:
    */
   CompletionNotifier(mozIStorageStatementCallback *aCallback,
                      ExecutionState aReason)
     : mCallback(aCallback)
     , mReason(aReason)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (mCallback) {
       (void)mCallback->HandleCompletion(mReason);
       NS_RELEASE(mCallback);
     }
 
     return NS_OK;
   }
--- a/storage/mozStorageConnection.cpp
+++ b/storage/mozStorageConnection.cpp
@@ -353,17 +353,17 @@ public:
                        already_AddRefed<nsIThread> aAsyncExecutionThread)
   : mConnection(aConnection)
   , mNativeConnection(aNativeConnection)
   , mCallbackEvent(aCallbackEvent)
   , mAsyncExecutionThread(aAsyncExecutionThread)
   {
   }
 
-  NS_METHOD Run()
+  NS_IMETHOD Run() override
   {
 #ifdef DEBUG
     // This code is executed on the background thread
     bool onAsyncThread = false;
     (void)mAsyncExecutionThread->IsOnCurrentThread(&onAsyncThread);
     MOZ_ASSERT(onAsyncThread);
 #endif // DEBUG
 
@@ -418,17 +418,17 @@ public:
     : mConnection(aConnection)
     , mClone(aClone)
     , mReadOnly(aReadOnly)
     , mCallback(aCallback)
   {
     MOZ_ASSERT(NS_IsMainThread());
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT (NS_GetCurrentThread() == mClone->getAsyncExecutionTarget());
 
     nsresult rv = mConnection->initializeClone(mClone, mReadOnly);
     if (NS_FAILED(rv)) {
       return Dispatch(rv, nullptr);
     }
     return Dispatch(NS_OK,
                     NS_ISUPPORTS_CAST(mozIStorageAsyncConnection*, mClone));
--- a/storage/mozStorageConnection.h
+++ b/storage/mozStorageConnection.h
@@ -386,17 +386,17 @@ public:
                    nsISupports* aValue,
                    already_AddRefed<mozIStorageCompletionCallback> aCallback)
     : mStatus(aStatus)
     , mValue(aValue)
     , mCallback(aCallback)
   {
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     nsresult rv = mCallback->Complete(mStatus, mValue);
 
     // Ensure that we release on the main thread
     mValue = nullptr;
     mCallback = nullptr;
     return rv;
   }
--- a/storage/mozStoragePrivateHelpers.cpp
+++ b/storage/mozStoragePrivateHelpers.cpp
@@ -251,17 +251,17 @@ namespace {
 class CallbackEvent : public Runnable
 {
 public:
   explicit CallbackEvent(mozIStorageCompletionCallback *aCallback)
   : mCallback(aCallback)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     (void)mCallback->Complete(NS_OK, nullptr);
     return NS_OK;
   }
 private:
   nsCOMPtr<mozIStorageCompletionCallback> mCallback;
 };
 } // namespace
--- a/storage/mozStorageService.cpp
+++ b/storage/mozStorageService.cpp
@@ -690,17 +690,17 @@ public:
     : mConnection(aConnection)
     , mStorageFile(aStorageFile)
     , mGrowthIncrement(aGrowthIncrement)
     , mCallback(aCallback)
   {
     MOZ_ASSERT(NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
     nsresult rv = mStorageFile ? mConnection->initialize(mStorageFile)
                                : mConnection->initialize();
     if (NS_FAILED(rv)) {
       nsCOMPtr<nsIRunnable> closeRunnable =
         NewRunnableMethod<mozIStorageCompletionCallback*>(
           mConnection.get(),
--- a/storage/test/storage_test_harness.h
+++ b/storage/test/storage_test_harness.h
@@ -323,17 +323,17 @@ class ThreadWedger : public mozilla::Run
 public:
   explicit ThreadWedger(nsIEventTarget *aTarget)
   : mReentrantMonitor("thread wedger")
   , unwedged(false)
   {
     aTarget->Dispatch(this, aTarget->NS_DISPATCH_NORMAL);
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mozilla::ReentrantMonitorAutoEnter automon(mReentrantMonitor);
 
     if (!unwedged)
       automon.Wait();
 
     return NS_OK;
   }
--- a/storage/test/test_service_init_background_thread.cpp
+++ b/storage/test/test_service_init_background_thread.cpp
@@ -14,17 +14,17 @@
  */
 
 ////////////////////////////////////////////////////////////////////////////////
 //// Helpers
 
 class ServiceInitializer : public mozilla::Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Use an explicit do_GetService instead of getService so that the check in
     // getService doesn't blow up.
     nsCOMPtr<mozIStorageService> service = do_GetService("@mozilla.org/storage/service;1");
     do_check_false(service);
     return NS_OK;
   }
 };
--- a/storage/test/test_unlock_notify.cpp
+++ b/storage/test/test_unlock_notify.cpp
@@ -45,17 +45,17 @@ public:
 
   void Shutdown()
   {
     if (mThread) {
       mThread->Shutdown();
     }
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mozilla::ReentrantMonitorAutoEnter lock(monitor);
 
     nsCOMPtr<mozIStorageConnection> db(getDatabase());
 
     nsCString sql(mSQL);
     nsCOMPtr<mozIStorageStatement> stmt;
     do_check_success(db->CreateStatement(sql, getter_AddRefs(stmt)));
@@ -97,17 +97,17 @@ class DatabaseTester : public DatabaseLo
 public:
   DatabaseTester(mozIStorageConnection *aConnection,
                  const char* aSQL)
   : DatabaseLocker(aSQL)
   , mConnection(aConnection)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mozilla::ReentrantMonitorAutoEnter lock(monitor);
     WaitFor(READ_LOCK);
 
     nsCString sql(mSQL);
     nsCOMPtr<mozIStorageStatement> stmt;
     do_check_success(mConnection->CreateStatement(sql, getter_AddRefs(stmt)));
 
--- a/toolkit/components/downloads/nsDownloadManager.cpp
+++ b/toolkit/components/downloads/nsDownloadManager.cpp
@@ -1713,17 +1713,17 @@ class AsyncResult : public Runnable
 {
 public:
   AsyncResult(nsresult aStatus, nsIDownload* aResult,
               nsIDownloadManagerResult* aCallback)
   : mStatus(aStatus), mResult(aResult), mCallback(aCallback)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mCallback->HandleResult(mStatus, mResult);
     return NS_OK;
   }
 
 private:
   nsresult mStatus;
   nsCOMPtr<nsIDownload> mResult;
--- a/toolkit/components/filewatcher/NativeFileWatcherWin.cpp
+++ b/toolkit/components/filewatcher/NativeFileWatcherWin.cpp
@@ -38,17 +38,17 @@ public:
   WatchedErrorEvent(const nsMainThreadPtrHandle<nsINativeFileWatcherErrorCallback>& aOnError,
                     const nsresult& anError, const DWORD& osError)
     : mOnError(aOnError)
     , mError(anError)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_METHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     // Make sure we wrap a valid callback since it's not mandatory to provide
     // one when watching a resource.
     if (mOnError) {
       (void)mOnError->Complete(mError, mOsError);
     }
@@ -76,17 +76,17 @@ public:
   WatchedSuccessEvent(const nsMainThreadPtrHandle<nsINativeFileWatcherSuccessCallback>& aOnSuccess,
                       const nsAString& aResourcePath)
     : mOnSuccess(aOnSuccess)
     , mResourcePath(aResourcePath)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_METHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     // Make sure we wrap a valid callback since it's not mandatory to provide
     // one when watching a resource.
     if (mOnSuccess) {
       (void)mOnSuccess->Complete(mResourcePath);
     }
@@ -113,17 +113,17 @@ public:
   WatchedChangeEvent(const nsMainThreadPtrHandle<nsINativeFileWatcherCallback>& aOnChange,
                      const nsAString& aChangedResource)
     : mOnChange(aOnChange)
     , mChangedResource(aChangedResource)
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_METHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
 
     // The second parameter is reserved for future uses: we use 0 as a placeholder.
     (void)mOnChange->Changed(mChangedResource, 0);
     return NS_OK;
   }
 
@@ -228,17 +228,17 @@ class NativeWatcherIOShutdownTask : publ
 {
 public:
   NativeWatcherIOShutdownTask()
     : mWorkerThread(do_GetCurrentThread())
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread());
     mWorkerThread->Shutdown();
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIThread> mWorkerThread;
--- a/toolkit/components/finalizationwitness/FinalizationWitnessService.cpp
+++ b/toolkit/components/finalizationwitness/FinalizationWitnessService.cpp
@@ -36,17 +36,17 @@ class FinalizationEvent final: public Ru
 {
 public:
   FinalizationEvent(const char* aTopic,
                   const char16_t* aValue)
     : mTopic(aTopic)
     , mValue(aValue)
   { }
 
-  NS_METHOD Run() {
+  NS_IMETHOD Run() override {
     nsCOMPtr<nsIObserverService> observerService =
       mozilla::services::GetObserverService();
     if (!observerService) {
       // This is either too early or, more likely, too late for notifications.
       // Bail out.
       return NS_ERROR_NOT_AVAILABLE;
     }
     (void)observerService->
--- a/toolkit/components/osfile/NativeOSFileInternals.cpp
+++ b/toolkit/components/osfile/NativeOSFileInternals.cpp
@@ -416,17 +416,17 @@ public:
     , mOnError(aOnError)
     , mDiscardedResult(aDiscardedResult)
     , mOSError(aOSError)
     , mOperation(aOperation)
     {
       MOZ_ASSERT(!NS_IsMainThread());
     }
 
-  NS_METHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     (void)mOnError->Complete(mOperation, mOSError);
 
     // Ensure that the callbacks are released on the main thread.
     mOnSuccess = nullptr;
     mOnError = nullptr;
     mDiscardedResult = nullptr;
 
@@ -466,17 +466,17 @@ public:
                already_AddRefed<nsINativeOSFileResult>& aResult)
     : mOnSuccess(aOnSuccess)
     , mOnError(aOnError)
     , mResult(aResult)
     {
       MOZ_ASSERT(!NS_IsMainThread());
     }
 
-  NS_METHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     (void)mOnSuccess->Complete(mResult);
 
     // Ensure that the callbacks are released on the main thread.
     mOnSuccess = nullptr;
     mOnError = nullptr;
     mResult = nullptr;
 
--- a/toolkit/components/places/Helpers.h
+++ b/toolkit/components/places/Helpers.h
@@ -196,17 +196,17 @@ public:
     nsISupports* aOwner
   )
   : mStatementCache(aStatementCache)
   , mOwner(aOwner)
   , mCallingThread(do_GetCurrentThread())
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mStatementCache.FinalizeStatements();
     // Release the owner back on the calling thread.
     NS_ProxyRelease(mCallingThread, mOwner.forget());
     return NS_OK;
   }
 
 protected:
--- a/toolkit/components/places/History.cpp
+++ b/toolkit/components/places/History.cpp
@@ -619,17 +619,17 @@ class NotifyVisitObservers : public Runn
 {
 public:
   explicit NotifyVisitObservers(VisitData& aPlace)
   : mPlace(aPlace)
   , mHistory(History::GetService())
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "This should be called on the main thread");
 
     // We are in the main thread, no need to lock.
     if (mHistory->IsShuttingDown()) {
       // If we are shutting down, we cannot notify the observers.
       return NS_OK;
     }
@@ -694,17 +694,17 @@ public:
                        const nsString& aTitle,
                        const nsCString& aGUID)
   : mSpec(aSpec)
   , mTitle(aTitle)
   , mGUID(aGUID)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "This should be called on the main thread");
 
     nsNavHistory* navHistory = nsNavHistory::GetHistoryService();
     NS_ENSURE_TRUE(navHistory, NS_ERROR_OUT_OF_MEMORY);
     nsCOMPtr<nsIURI> uri;
     MOZ_ALWAYS_SUCCEEDS(NS_NewURI(getter_AddRefs(uri), mSpec));
     if (!uri) {
@@ -735,17 +735,17 @@ public:
   : mCallback(aCallback)
   , mPlace(aPlace)
   , mResult(aResult)
   , mIsSingleVisit(aIsSingleVisit)
   {
     MOZ_ASSERT(aCallback, "Must pass a non-null callback!");
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "This should be called on the main thread");
 
     bool hasValidURIs = true;
     nsCOMPtr<nsIURI> referrerURI;
     if (!mPlace.referrerSpec.IsEmpty()) {
       MOZ_ALWAYS_SUCCEEDS(NS_NewURI(getter_AddRefs(referrerURI), mPlace.referrerSpec));
       hasValidURIs = !!referrerURI;
@@ -799,17 +799,17 @@ class NotifyCompletion : public Runnable
 {
 public:
   explicit NotifyCompletion(const nsMainThreadPtrHandle<mozIVisitInfoCallback>& aCallback)
   : mCallback(aCallback)
   {
     MOZ_ASSERT(aCallback, "Must pass a non-null callback!");
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (NS_IsMainThread()) {
       (void)mCallback->HandleCompletion();
     }
     else {
       (void)NS_DispatchToMainThread(this);
     }
     return NS_OK;
@@ -899,17 +899,17 @@ public:
     nsCOMPtr<nsIEventTarget> target = do_GetInterface(aConnection);
     NS_ENSURE_TRUE(target, NS_ERROR_UNEXPECTED);
     nsresult rv = target->Dispatch(event, NS_DISPATCH_NORMAL);
     NS_ENSURE_SUCCESS(rv, rv);
 
     return NS_OK;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread(), "This should not be called on the main thread");
 
     // Prevent the main thread from shutting down while this is running.
     MutexAutoLock lockedScope(mHistory->GetShutdownMutex());
     if (mHistory->IsShuttingDown()) {
       // If we were already shutting down, we cannot insert the URIs.
       return NS_OK;
@@ -1231,17 +1231,17 @@ public:
     nsCOMPtr<nsIEventTarget> target = do_GetInterface(aConnection);
     NS_ENSURE_TRUE(target, NS_ERROR_UNEXPECTED);
     nsresult rv = target->Dispatch(event, NS_DISPATCH_NORMAL);
     NS_ENSURE_SUCCESS(rv, rv);
 
     return NS_OK;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread(), "This should not be called on the main thread");
 
     bool exists;
     nsresult rv = mHistory->FetchPageInfo(mPlace, &exists);
     NS_ENSURE_SUCCESS(rv, rv);
 
     if (!exists)
@@ -1303,17 +1303,17 @@ public:
     nsCOMPtr<nsIEventTarget> target = do_GetInterface(aConnection);
     NS_ENSURE_TRUE(target, NS_ERROR_UNEXPECTED);
     rv = target->Dispatch(event, NS_DISPATCH_NORMAL);
     NS_ENSURE_SUCCESS(rv, rv);
 
     return NS_OK;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread(), "This should not be called on the main thread");
 
     // First, see if the page exists in the database (we'll need its id later).
     bool exists;
     nsresult rv = mHistory->FetchPageInfo(mPlace, &exists);
     NS_ENSURE_SUCCESS(rv, rv);
 
@@ -1500,17 +1500,17 @@ public:
     for (auto iter = aPlaces.Iter(); !iter.Done(); iter.Next()) {
       PlaceHashKey* entry = iter.Get();
       PlaceHashKey* copy = mPlaces.PutEntry(entry->GetKey());
       copy->SetProperties(entry->VisitCount(), entry->IsBookmarked());
       entry->mVisits.SwapElements(copy->mVisits);
     }
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "This should be called on the main thread");
 
     // We are in the main thread, no need to lock.
     if (mHistory->IsShuttingDown()) {
       // If we are shutting down, we cannot notify the observers.
       return NS_OK;
     }
@@ -1594,17 +1594,17 @@ public:
     nsCOMPtr<nsIEventTarget> target = do_GetInterface(aConnection);
     NS_ENSURE_TRUE(target, NS_ERROR_UNEXPECTED);
     nsresult rv = target->Dispatch(event, NS_DISPATCH_NORMAL);
     NS_ENSURE_SUCCESS(rv, rv);
 
     return NS_OK;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread(),
                "This should not be called on the main thread");
 
     // Prevent the main thread from shutting down while this is running.
     MutexAutoLock lockedScope(mHistory->GetShutdownMutex());
     if (mHistory->IsShuttingDown()) {
       // If we were already shutting down, we cannot remove the visits.
--- a/toolkit/components/places/nsNavHistory.cpp
+++ b/toolkit/components/places/nsNavHistory.cpp
@@ -556,17 +556,17 @@ public:
     : mSpec(aSpec)
     , mNewFrecency(aNewFrecency)
     , mGUID(aGUID)
     , mHidden(aHidden)
     , mLastVisitDate(aLastVisitDate)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(NS_IsMainThread(), "Must be called on the main thread");
     nsNavHistory* navHistory = nsNavHistory::GetHistoryService();
     if (navHistory) {
       nsCOMPtr<nsIURI> uri;
       (void)NS_NewURI(getter_AddRefs(uri), mSpec);
       // We cannot assert since some automated tests are checking this path.
       NS_WARN_IF_FALSE(uri, "Invalid URI in FrecencyNotification");
--- a/toolkit/components/places/tests/cpp/places_test_harness_tail.h
+++ b/toolkit/components/places/tests/cpp/places_test_harness_tail.h
@@ -20,17 +20,17 @@
 
 int gTestsIndex = 0;
 
 #define TEST_INFO_STR "TEST-INFO | (%s) | "
 
 class RunNextTest : public mozilla::Runnable
 {
 public:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_ASSERTION(NS_IsMainThread(), "Not running on the main thread?");
     if (gTestsIndex < int(mozilla::ArrayLength(gTests))) {
       do_test_pending();
       Test &test = gTests[gTestsIndex++];
       (void)fprintf(stderr, TEST_INFO_STR "Running %s.\n", TEST_FILE,
                     test.name);
       test.func();
--- a/toolkit/components/satchel/nsFormFillController.cpp
+++ b/toolkit/components/satchel/nsFormFillController.cpp
@@ -720,17 +720,17 @@ public:
     : mObserver(aObserver)
     , mSearch(aSearch)
     , mResult(aResult)
   {
     MOZ_ASSERT(mResult, "Should have a valid result");
     MOZ_ASSERT(mObserver, "You shouldn't call this runnable with a null observer!");
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     mObserver->OnUpdateSearchResult(mSearch, mResult);
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIAutoCompleteObserver> mObserver;
   nsCOMPtr<nsIAutoCompleteSearch> mSearch;
   nsCOMPtr<nsIAutoCompleteResult> mResult;
--- a/toolkit/components/startup/nsAppStartup.cpp
+++ b/toolkit/components/startup/nsAppStartup.cpp
@@ -102,17 +102,17 @@ uint32_t gRestartMode = 0;
 
 class nsAppExitEvent : public mozilla::Runnable {
 private:
   RefPtr<nsAppStartup> mService;
 
 public:
   explicit nsAppExitEvent(nsAppStartup *service) : mService(service) {}
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Tell the appshell to exit
     mService->mAppShell->Exit();
 
     mService->mRunning = false;
     return NS_OK;
   }
 };
 
--- a/toolkit/components/telemetry/Telemetry.cpp
+++ b/toolkit/components/telemetry/Telemetry.cpp
@@ -834,17 +834,17 @@ public:
   void MainThread() {
     mTelemetry->mCachedTelemetryData = true;
     for (unsigned int i = 0, n = mTelemetry->mCallbacks.Count(); i < n; ++i) {
       mTelemetry->mCallbacks[i]->Complete();
     }
     mTelemetry->mCallbacks.Clear();
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     LoadFailedLockCount(mTelemetry->mFailedLockCount);
     mTelemetry->mLastShutdownTime = 
       ReadLastShutdownDuration(mShutdownTimeFilename);
     mTelemetry->ReadLateWritesStacks(mProfileDir);
     nsCOMPtr<nsIRunnable> e =
       NewRunnableMethod(this, &nsFetchTelemetryData::MainThread);
     NS_ENSURE_STATE(e);
     NS_DispatchToMainThread(e);
--- a/toolkit/crashreporter/nsExceptionHandler.cpp
+++ b/toolkit/crashreporter/nsExceptionHandler.cpp
@@ -3286,17 +3286,17 @@ OOPInitialized()
 }
 
 void
 OOPInit()
 {
   class ProxyToMainThread : public Runnable
   {
   public:
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       OOPInit();
       return NS_OK;
     }
   };
   if (!NS_IsMainThread()) {
     // This logic needs to run on the main thread
     nsCOMPtr<nsIThread> mainThread = do_GetMainThread();
     mozilla::SyncRunnable::DispatchToThread(mainThread, new ProxyToMainThread());
--- a/toolkit/xre/EventTracer.cpp
+++ b/toolkit/xre/EventTracer.cpp
@@ -87,17 +87,17 @@ struct TracerStartClosure {
 
 #ifdef MOZ_WIDGET_GONK
 class EventLoopLagDispatcher : public Runnable
 {
   public:
     explicit EventLoopLagDispatcher(int aLag)
       : mLag(aLag) {}
 
-    NS_IMETHODIMP Run()
+    NS_IMETHOD Run() override
     {
       nsCOMPtr<nsIObserverService> obsService =
         mozilla::services::GetObserverService();
       if (!obsService) {
         return NS_ERROR_FAILURE;
       }
 
       nsAutoString value;
--- a/toolkit/xre/ProfileReset.h
+++ b/toolkit/xre/ProfileReset.h
@@ -19,17 +19,17 @@ class ProfileResetCleanupResultTask : pu
 {
 public:
   ProfileResetCleanupResultTask()
     : mWorkerThread(do_GetCurrentThread())
   {
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     MOZ_ASSERT(NS_IsMainThread());
     mWorkerThread->Shutdown();
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsIThread> mWorkerThread;
 };
@@ -43,17 +43,17 @@ public:
     , mProfileLocalDir(aProfileLocalDir)
     , mTargetDir(aTargetDir)
     , mLeafName(aLeafName)
   { }
 
 /**
  * Copy a root profile to a backup folder before deleting it.  Then delete the local profile dir.
  */
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // Copy to the destination then delete the profile. A move doesn't follow links.
     nsresult rv = mProfileDir->CopyToFollowingLinks(mTargetDir, mLeafName);
     if (NS_SUCCEEDED(rv))
       rv = mProfileDir->Remove(true);
     if (NS_WARN_IF(NS_FAILED(rv))) {
       NS_WARNING("Could not backup the root profile directory");
     }
--- a/tools/profiler/core/platform-linux.cc
+++ b/tools/profiler/core/platform-linux.cc
@@ -632,17 +632,17 @@ static void DoStartTask() {
 
   freeArray(threadNames, threadCount);
   freeArray(features, featureCount);
 }
 
 static void StartSignalHandler(int signal, siginfo_t* info, void* context) {
   class StartTask : public Runnable {
   public:
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
       DoStartTask();
       return NS_OK;
     }
   };
   // XXX: technically NS_DispatchToMainThread is NOT async signal safe. We risk
   // nasty things like deadlocks, but the probability is very low and we
   // typically only do this once so it tends to be ok. See bug 909403.
   NS_DispatchToMainThread(new StartTask());
--- a/widget/android/AndroidJNI.cpp
+++ b/widget/android/AndroidJNI.cpp
@@ -97,17 +97,17 @@ Java_org_mozilla_gecko_GeckoAppShell_not
     class NotifyBatteryChangeRunnable : public Runnable {
     public:
       NotifyBatteryChangeRunnable(double aLevel, bool aCharging, double aRemainingTime)
         : mLevel(aLevel)
         , mCharging(aCharging)
         , mRemainingTime(aRemainingTime)
       {}
 
-      NS_IMETHODIMP Run() {
+      NS_IMETHOD Run() override {
         hal::NotifyBatteryChange(hal::BatteryInformation(mLevel, mCharging, mRemainingTime));
         return NS_OK;
       }
 
     private:
       double mLevel;
       bool   mCharging;
       double mRemainingTime;
@@ -146,17 +146,17 @@ Java_org_mozilla_gecko_GeckoAppShell_rem
 
 NS_EXPORT void JNICALL
 Java_org_mozilla_gecko_GeckoAppShell_onFullScreenPluginHidden(JNIEnv* jenv, jclass, jobject view)
 {
   class ExitFullScreenRunnable : public Runnable {
     public:
       ExitFullScreenRunnable(jobject view) : mView(view) {}
 
-      NS_IMETHODIMP Run() {
+      NS_IMETHOD Run() override {
         JNIEnv* const env = jni::GetGeckoThreadEnv();
         nsPluginInstanceOwner::ExitFullScreen(mView);
         env->DeleteGlobalRef(mView);
         return NS_OK;
       }
 
     private:
       jobject mView;
--- a/widget/android/AndroidJNIWrapper.cpp
+++ b/widget/android/AndroidJNIWrapper.cpp
@@ -16,17 +16,17 @@
 extern "C" {
   jclass __jsjni_GetGlobalClassRef(const char *className);
 }
 
 class GetGlobalClassRefRunnable : public mozilla::Runnable {
   public:
     GetGlobalClassRefRunnable(const char *className, jclass *foundClass) :
         mClassName(className), mResult(foundClass) {}
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
         *mResult = __jsjni_GetGlobalClassRef(mClassName);
         return NS_OK;
     }
   private:
     const char *mClassName;
     jclass *mResult;
 };
 
--- a/widget/gonk/GonkMemoryPressureMonitoring.cpp
+++ b/widget/gonk/GonkMemoryPressureMonitoring.cpp
@@ -110,17 +110,17 @@ public:
       // Write something to the pipe; doesn't matter what.
       uint32_t dummy = 0;
       rv = write(mShutdownPipeWrite, &dummy, sizeof(dummy));
     } while(rv == -1 && errno == EINTR);
 
     return NS_OK;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread());
 
     int triggerResetTimeout = -1;
     bool memoryPressure;
     nsresult rv = CheckForMemoryPressure(&memoryPressure);
     NS_ENSURE_SUCCESS(rv, rv);
 
--- a/widget/gonk/HwcComposer2D.cpp
+++ b/widget/gonk/HwcComposer2D.cpp
@@ -209,17 +209,17 @@ namespace {
 class HotplugEvent : public Runnable {
 public:
     HotplugEvent(GonkDisplay::DisplayType aType, bool aConnected)
         : mType(aType)
         , mConnected(aConnected)
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         RefPtr<nsScreenManagerGonk> screenManager =
             nsScreenManagerGonk::GetInstance();
         if (mConnected) {
             screenManager->AddScreen(mType);
         } else {
             screenManager->RemoveScreen(mType);
         }
--- a/widget/gonk/nsAppShell.cpp
+++ b/widget/gonk/nsAppShell.cpp
@@ -350,17 +350,17 @@ KeyEventDispatcher::DispatchKeyUpEvent()
     DispatchKeyEventInternal(eKeyUp);
 }
 
 class SwitchEventRunnable : public mozilla::Runnable {
 public:
     SwitchEventRunnable(hal::SwitchEvent& aEvent) : mEvent(aEvent)
     {}
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         hal::NotifySwitchStateFromInputDevice(mEvent.device(),
           mEvent.status());
         return NS_OK;
     }
 private:
     hal::SwitchEvent mEvent;
 };
--- a/widget/gonk/nsScreenManagerGonk.cpp
+++ b/widget/gonk/nsScreenManagerGonk.cpp
@@ -59,17 +59,17 @@ using namespace mozilla::dom;
 namespace {
 
 class ScreenOnOffEvent : public mozilla::Runnable {
 public:
     ScreenOnOffEvent(bool on)
         : mIsOn(on)
     {}
 
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
         // Notify observers that the screen state has just changed.
         nsCOMPtr<nsIObserverService> observerService = mozilla::services::GetObserverService();
         if (observerService) {
           observerService->NotifyObservers(
             nullptr, "screen-state-changed",
             mIsOn ? u"on" : u"off"
           );
         }
@@ -976,17 +976,17 @@ NS_IMPL_ISUPPORTS(DisplayInfo, nsIDispla
 
 class NotifyTask : public mozilla::Runnable {
 public:
     NotifyTask(uint32_t aId, bool aConnected)
         : mDisplayInfo(new DisplayInfo(aId, aConnected))
     {
     }
 
-    NS_IMETHOD Run()
+    NS_IMETHOD Run() override
     {
         nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
         if (os) {
           os->NotifyObservers(mDisplayInfo, "display-changed", nullptr);
         }
 
         return NS_OK;
     }
--- a/widget/gonk/nsWindow.cpp
+++ b/widget/gonk/nsWindow.cpp
@@ -171,17 +171,17 @@ public:
                                    const uint64_t& aInputBlockId,
                                    nsEventStatus aApzResponse)
       : mInput(aInput)
       , mGuid(aGuid)
       , mInputBlockId(aInputBlockId)
       , mApzResponse(aApzResponse)
     {}
 
-    NS_IMETHOD Run() {
+    NS_IMETHOD Run() override {
         if (gFocusedWindow) {
             gFocusedWindow->DispatchTouchEventForAPZ(mInput, mGuid, mInputBlockId, mApzResponse);
         }
         return NS_OK;
     }
 
 private:
     MultiTouchInput mInput;
--- a/widget/nsBaseFilePicker.cpp
+++ b/widget/nsBaseFilePicker.cpp
@@ -69,17 +69,17 @@ class AsyncShowFilePicker : public mozil
 public:
   AsyncShowFilePicker(nsIFilePicker *aFilePicker,
                       nsIFilePickerShownCallback *aCallback) :
     mFilePicker(aFilePicker),
     mCallback(aCallback)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_ASSERTION(NS_IsMainThread(),
                  "AsyncShowFilePicker should be on the main thread!");
 
     // It's possible that some widget implementations require GUI operations
     // to be on the main thread, so that's why we're not dispatching to another
     // thread and calling back to the main after it's done.
     int16_t result = nsIFilePicker::returnCancel;
--- a/widget/tests/TestAppShellSteadyState.cpp
+++ b/widget/tests/TestAppShellSteadyState.cpp
@@ -40,27 +40,27 @@ class ExitAppShellRunnable : public Runn
   nsCOMPtr<nsIAppShell> mAppShell;
 
 public:
   explicit ExitAppShellRunnable(nsIAppShell* aAppShell)
   : mAppShell(aAppShell)
   { }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     return mAppShell->Exit();
   }
 };
 
 class StableStateRunnable : public Runnable
 {
 public:
   NS_IMETHOD
-  Run()
+  Run() override
   {
     if (gStableStateEventHasRun) {
       fail("StableStateRunnable already ran");
     }
     gStableStateEventHasRun = true;
     return NS_OK;
   }
 };
@@ -70,17 +70,17 @@ class CheckStableStateRunnable : public 
   bool mShouldHaveRun;
 
 public:
   explicit CheckStableStateRunnable(bool aShouldHaveRun)
   : mShouldHaveRun(aShouldHaveRun)
   { }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     if (mShouldHaveRun == gStableStateEventHasRun) {
       passed("StableStateRunnable state correct (%s)",
              mShouldHaveRun ? "true" : "false");
     } else {
       fail("StableStateRunnable ran at wrong time");
     }
     return NS_OK;
@@ -93,17 +93,17 @@ protected:
   nsCOMPtr<nsIAppShell> mAppShell;
 
 public:
   explicit ScheduleStableStateRunnable(nsIAppShell* aAppShell)
   : CheckStableStateRunnable(false), mAppShell(aAppShell)
   { }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     CheckStableStateRunnable::Run();
 
     nsCOMPtr<nsIRunnable> runnable = new StableStateRunnable();
     nsresult rv = mAppShell->RunBeforeNextEvent(runnable);
     if (NS_FAILED(rv)) {
       fail("RunBeforeNextEvent returned failure code %u", rv);
     }
@@ -127,17 +127,17 @@ public:
 class ScheduleNestedStableStateRunnable : public ScheduleStableStateRunnable
 {
 public:
   explicit ScheduleNestedStableStateRunnable(nsIAppShell* aAppShell)
   : ScheduleStableStateRunnable(aAppShell)
   { }
 
   NS_IMETHOD
-  Run()
+  Run() override
   {
     ScheduleStableStateRunnable::Run();
 
     nsCOMPtr<nsIRunnable> runnable = new CheckStableStateRunnable(false);
     if (NS_FAILED(NS_DispatchToCurrentThread(runnable))) {
       fail("Failed to dispatch check runnable");
     }
 
--- a/widget/windows/WidgetTraceEvent.cpp
+++ b/widget/windows/WidgetTraceEvent.cpp
@@ -38,17 +38,17 @@ public:
     MOZ_COUNT_CTOR(HWNDGetter);
   }
   ~HWNDGetter() {
     MOZ_COUNT_DTOR(HWNDGetter);
   }
 
   HWND hidden_window_hwnd;
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Jump through some hoops to locate the hidden window.
     nsCOMPtr<nsIAppShellService> appShell(do_GetService(NS_APPSHELLSERVICE_CONTRACTID));
     nsCOMPtr<nsIXULWindow> hiddenWindow;
 
     nsresult rv = appShell->GetHiddenWindow(getter_AddRefs(hiddenWindow));
     if (NS_FAILED(rv)) {
       return rv;
     }
--- a/xpcom/base/nsConsoleService.cpp
+++ b/xpcom/base/nsConsoleService.cpp
@@ -123,17 +123,17 @@ nsConsoleService::~nsConsoleService()
 
 class AddConsolePrefWatchers : public Runnable
 {
 public:
   explicit AddConsolePrefWatchers(nsConsoleService* aConsole) : mConsole(aConsole)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     Preferences::AddBoolVarCache(&sLoggingEnabled, "consoleservice.enabled", true);
     Preferences::AddBoolVarCache(&sLoggingBuffered, "consoleservice.buffered", true);
 #if defined(ANDROID)
     Preferences::AddBoolVarCache(&sLoggingLogcat, "consoleservice.logcat", true);
 #endif // defined(ANDROID)
 
     nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
--- a/xpcom/base/nsMemoryInfoDumper.cpp
+++ b/xpcom/base/nsMemoryInfoDumper.cpp
@@ -63,17 +63,17 @@ public:
   DumpMemoryInfoToTempDirRunnable(const nsAString& aIdentifier,
                                   bool aAnonymize, bool aMinimizeMemoryUsage)
     : mIdentifier(aIdentifier)
     , mAnonymize(aAnonymize)
     , mMinimizeMemoryUsage(aMinimizeMemoryUsage)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIMemoryInfoDumper> dumper =
       do_GetService("@mozilla.org/memory-info-dumper;1");
     dumper->DumpMemoryInfoToTempDir(mIdentifier, mAnonymize,
                                     mMinimizeMemoryUsage);
     return NS_OK;
   }
 
--- a/xpcom/base/nsMemoryReporterManager.cpp
+++ b/xpcom/base/nsMemoryReporterManager.cpp
@@ -2519,17 +2519,17 @@ class MinimizeMemoryUsageRunnable : publ
 {
 public:
   explicit MinimizeMemoryUsageRunnable(nsIRunnable* aCallback)
     : mCallback(aCallback)
     , mRemainingIters(sNumIters)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIObserverService> os = services::GetObserverService();
     if (!os) {
       return NS_ERROR_FAILURE;
     }
 
     if (mRemainingIters == 0) {
       os->NotifyObservers(nullptr, "after-minimize-memory-usage",
--- a/xpcom/base/nsStatusReporterManager.cpp
+++ b/xpcom/base/nsStatusReporterManager.cpp
@@ -30,17 +30,17 @@ namespace {
 
 class DumpStatusInfoToTempDirRunnable : public mozilla::Runnable
 {
 public:
   DumpStatusInfoToTempDirRunnable()
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     nsCOMPtr<nsIStatusReporterManager> mgr =
       do_GetService("@mozilla.org/status-reporter-manager;1");
     mgr->DumpReports();
     return NS_OK;
   }
 };
 
--- a/xpcom/components/nsNativeModuleLoader.cpp
+++ b/xpcom/components/nsNativeModuleLoader.cpp
@@ -62,17 +62,17 @@ public:
                                FileLocation& aFile)
     : mManager(nsComponentManagerImpl::gComponentManager)
     , mLoader(aLoader)
     , mFile(aFile)
     , mResult(nullptr)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mResult = mLoader->LoadModule(mFile);
     return NS_OK;
   }
 
   RefPtr<nsComponentManagerImpl> mManager;
   nsNativeModuleLoader* mLoader;
   FileLocation mFile;
--- a/xpcom/glue/nsProxyRelease.h
+++ b/xpcom/glue/nsProxyRelease.h
@@ -26,17 +26,17 @@ namespace detail {
 
 template<typename T>
 class ProxyReleaseEvent : public mozilla::Runnable
 {
 public:
   explicit ProxyReleaseEvent(already_AddRefed<T> aDoomed)
   : mDoomed(aDoomed.take()) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     NS_IF_RELEASE(mDoomed);
     return NS_OK;
   }
 
 private:
   T* MOZ_OWNING_REF mDoomed;
 };
--- a/xpcom/glue/nsThreadUtils.h
+++ b/xpcom/glue/nsThreadUtils.h
@@ -267,17 +267,17 @@ template<typename StoredFunction>
 class RunnableFunction : public Runnable
 {
 public:
   template <typename F>
   explicit RunnableFunction(F&& aFunction)
     : mFunction(Forward<F>(aFunction))
   { }
 
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     static_assert(IsVoid<decltype(mFunction())>::value,
                   "The lambda must return void!");
     mFunction();
     return NS_OK;
   }
 private:
   StoredFunction mFunction;
 };
--- a/xpcom/io/nsAnonymousTemporaryFile.cpp
+++ b/xpcom/io/nsAnonymousTemporaryFile.cpp
@@ -89,17 +89,17 @@ class nsRemoteAnonymousTemporaryFileRunn
 {
 public:
   dom::FileDescOrError *mResultPtr;
   explicit nsRemoteAnonymousTemporaryFileRunnable(dom::FileDescOrError *aResultPtr)
   : mResultPtr(aResultPtr)
   { }
 
 protected:
-  NS_IMETHODIMP Run() {
+  NS_IMETHOD Run() override {
     dom::ContentChild* child = dom::ContentChild::GetSingleton();
     MOZ_ASSERT(child);
     child->SendOpenAnonymousTemporaryFile(mResultPtr);
     return NS_OK;
   }
 };
 
 } // namespace
--- a/xpcom/io/nsInputStreamTee.cpp
+++ b/xpcom/io/nsInputStreamTee.cpp
@@ -72,17 +72,17 @@ public:
     mCount = aCount;
     mSink = aSink;
     bool isNonBlocking;
     mSink->IsNonBlocking(&isNonBlocking);
     NS_ASSERTION(isNonBlocking == false, "mSink is nonblocking");
     mTee = aTee;
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     if (!mBuf) {
       NS_WARNING("nsInputStreamTeeWriteEvent::Run() "
                  "memory not allocated\n");
       return NS_OK;
     }
     MOZ_ASSERT(mSink, "mSink is null!");
 
--- a/xpcom/io/nsLocalFileWin.cpp
+++ b/xpcom/io/nsLocalFileWin.cpp
@@ -116,17 +116,17 @@ class AsyncLocalFileWinDone : public Run
 public:
   AsyncLocalFileWinDone() :
     mWorkerThread(do_GetCurrentThread())
   {
     // Objects of this type must only be created on worker threads
     MOZ_ASSERT(!NS_IsMainThread());
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     // This event shuts down the worker thread and so must be main thread.
     MOZ_ASSERT(NS_IsMainThread());
 
     // If we don't destroy the thread when we're done with it, it will hang
     // around forever... and that is bad!
     mWorkerThread->Shutdown();
     return NS_OK;
@@ -143,17 +143,17 @@ private:
 class AsyncRevealOperation : public Runnable
 {
 public:
   explicit AsyncRevealOperation(const nsAString& aResolvedPath)
     : mResolvedPath(aResolvedPath)
   {
   }
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     MOZ_ASSERT(!NS_IsMainThread(),
                "AsyncRevealOperation should not be run on the main thread!");
 
     bool doCoUninitialize = SUCCEEDED(
       CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE));
     Reveal();
     if (doCoUninitialize) {
--- a/xpcom/tests/TestThreadUtils.cpp
+++ b/xpcom/tests/TestThreadUtils.cpp
@@ -37,17 +37,17 @@ class nsFoo : public nsISupports {
 
 private:
   virtual ~nsFoo() {}
 };
 
 NS_IMPL_ISUPPORTS0(nsFoo)
 
 class TestSuicide : public mozilla::Runnable {
-  NS_IMETHOD Run() {
+  NS_IMETHOD Run() override {
     // Runs first time on thread "Suicide", then dies on MainThread
     if (!NS_IsMainThread()) {
       mThread = do_GetCurrentThread();
       NS_DispatchToMainThread(this);
       return NS_OK;
     }
     MOZ_ASSERT(mThread);
     mThread->Shutdown();
--- a/xpcom/threads/MozPromise.h
+++ b/xpcom/threads/MozPromise.h
@@ -312,17 +312,17 @@ protected:
 
       ~ResolveOrRejectRunnable()
       {
         if (mThenValue) {
           mThenValue->AssertIsDead();
         }
       }
 
-      NS_IMETHODIMP Run()
+      NS_IMETHOD Run() override
       {
         PROMISE_LOG("ResolveOrRejectRunnable::Run() [this=%p]", this);
         mThenValue->DoResolveOrReject(mPromise->Value());
         mThenValue = nullptr;
         mPromise = nullptr;
         return NS_OK;
       }
 
@@ -950,17 +950,17 @@ private:
 
 template<typename PromiseType, typename ThisType, typename ...ArgTypes>
 class ProxyRunnable : public Runnable
 {
 public:
   ProxyRunnable(typename PromiseType::Private* aProxyPromise, MethodCall<PromiseType, ThisType, ArgTypes...>* aMethodCall)
     : mProxyPromise(aProxyPromise), mMethodCall(aMethodCall) {}
 
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     RefPtr<PromiseType> p = mMethodCall->Invoke();
     mMethodCall = nullptr;
     p->ChainTo(mProxyPromise.forget(), "<Proxy Promise>");
     return NS_OK;
   }
 
 private:
--- a/xpcom/threads/SyncRunnable.h
+++ b/xpcom/threads/SyncRunnable.h
@@ -100,17 +100,17 @@ public:
                                nsIRunnable* aRunnable,
                                bool aForceDispatch = false)
   {
     RefPtr<SyncRunnable> s(new SyncRunnable(aRunnable));
     s->DispatchToThread(aThread, aForceDispatch);
   }
 
 protected:
-  NS_IMETHODIMP Run()
+  NS_IMETHOD Run() override
   {
     mRunnable->Run();
 
     mozilla::MonitorAutoLock lock(mMonitor);
     MOZ_ASSERT(!mDone);
 
     mDone = true;
     mMonitor.Notify();
--- a/xpcom/threads/TaskDispatcher.h
+++ b/xpcom/threads/TaskDispatcher.h
@@ -169,17 +169,17 @@ private:
     AbstractThread::DispatchFailureHandling mFailureHandling;
   };
 
   class TaskGroupRunnable : public Runnable
   {
     public:
       explicit TaskGroupRunnable(UniquePtr<PerThreadTaskGroup>&& aTasks) : mTasks(Move(aTasks)) {}
 
-      NS_IMETHODIMP Run()
+      NS_IMETHOD Run() override
       {
         // State change tasks get run all together before any code is run, so
         // that all state changes are made in an atomic unit.
         for (size_t i = 0; i < mTasks->mStateChangeTasks.Length(); ++i) {
           mTasks->mStateChangeTasks[i]->Run();
         }
 
         // Once the state changes have completed, drain any direct tasks
--- a/xpcom/threads/nsThread.cpp
+++ b/xpcom/threads/nsThread.cpp
@@ -207,17 +207,17 @@ public:
     }
   }
 
   // This method needs to be public to support older compilers (xlC_r on AIX).
   // It should be called directly as this class type is reference counted.
   virtual ~nsThreadStartupEvent() {}
 
 private:
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     ReentrantMonitorAutoEnter mon(mMon);
     mInitialized = true;
     mon.Notify();
     return NS_OK;
   }
 
   ReentrantMonitor mMon;
@@ -348,17 +348,17 @@ class nsThreadShutdownEvent : public Run
 {
 public:
   nsThreadShutdownEvent(NotNull<nsThread*> aThr,
                         NotNull<nsThreadShutdownContext*> aCtx)
     : mThread(aThr)
     , mShutdownContext(aCtx)
   {
   }
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     mThread->mShutdownContext = mShutdownContext;
     MessageLoop::current()->Quit();
     return NS_OK;
   }
 private:
   NotNull<RefPtr<nsThread>> mThread;
   NotNull<nsThreadShutdownContext*> mShutdownContext;
--- a/xpfe/appshell/nsContentTreeOwner.cpp
+++ b/xpfe/appshell/nsContentTreeOwner.cpp
@@ -1006,17 +1006,17 @@ nsContentTreeOwner::ProvideWindow(mozIDO
 #if defined(XP_MACOSX)
 class nsContentTitleSettingEvent : public Runnable
 {
 public:
   nsContentTitleSettingEvent(dom::Element* dse, const nsAString& wtm)
     : mElement(dse),
       mTitleDefault(wtm) {}
 
-  NS_IMETHOD Run()
+  NS_IMETHOD Run() override
   {
     ErrorResult rv;
     mElement->SetAttribute(NS_LITERAL_STRING("titledefault"), mTitleDefault, rv);
     mElement->RemoveAttribute(NS_LITERAL_STRING("titlemodifier"), rv);
     return NS_OK;
   }
 
 private: