Enable -Winconsistent-missing-override flag.

The problem with gmock is worked around by commenting out any other override declarations in classes using gmock.

NOPRESUBMIT=True
BUG=webrtc:3970

Review-Url: https://codereview.webrtc.org/1921653002
Cr-Commit-Position: refs/heads/master@{#12563}
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index 3ae09da..b31a07c 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -117,6 +117,7 @@
       cflags += [
         "-Wimplicit-fallthrough",
         "-Wthread-safety",
+        "-Winconsistent-missing-override",
       ]
     }
   }
diff --git a/webrtc/api/dtmfsender.h b/webrtc/api/dtmfsender.h
index e2c6735..c85557f 100644
--- a/webrtc/api/dtmfsender.h
+++ b/webrtc/api/dtmfsender.h
@@ -83,7 +83,7 @@
   DtmfSender();
 
   // Implements MessageHandler.
-  virtual void OnMessage(rtc::Message* msg);
+  void OnMessage(rtc::Message* msg) override;
 
   // The DTMF sending task.
   void DoInsertDtmf();
diff --git a/webrtc/api/dtmfsender_unittest.cc b/webrtc/api/dtmfsender_unittest.cc
index e6fa7fc..efe568d 100644
--- a/webrtc/api/dtmfsender_unittest.cc
+++ b/webrtc/api/dtmfsender_unittest.cc
@@ -96,7 +96,7 @@
     return true;
   }
 
-  virtual sigslot::signal0<>* GetOnDestroyedSignal() {
+  sigslot::signal0<>* GetOnDestroyedSignal() override {
     return &SignalDestroyed;
   }
 
diff --git a/webrtc/api/java/jni/peerconnection_jni.cc b/webrtc/api/java/jni/peerconnection_jni.cc
index 34358ad..10b8134 100644
--- a/webrtc/api/java/jni/peerconnection_jni.cc
+++ b/webrtc/api/java/jni/peerconnection_jni.cc
@@ -202,7 +202,7 @@
   }
 
   void OnIceCandidatesRemoved(
-      const std::vector<cricket::Candidate>& candidates) {
+      const std::vector<cricket::Candidate>& candidates) override {
     ScopedLocalRefFrame local_ref_frame(jni());
     jobjectArray candidates_array = ToJavaCandidateArray(jni(), candidates);
     jmethodID m =
diff --git a/webrtc/api/mediastream.h b/webrtc/api/mediastream.h
index 2a77f0d..1f80f25 100644
--- a/webrtc/api/mediastream.h
+++ b/webrtc/api/mediastream.h
@@ -31,10 +31,10 @@
   bool AddTrack(VideoTrackInterface* track) override;
   bool RemoveTrack(AudioTrackInterface* track) override;
   bool RemoveTrack(VideoTrackInterface* track) override;
-  virtual rtc::scoped_refptr<AudioTrackInterface>
-      FindAudioTrack(const std::string& track_id);
-  virtual rtc::scoped_refptr<VideoTrackInterface>
-      FindVideoTrack(const std::string& track_id);
+  rtc::scoped_refptr<AudioTrackInterface>
+      FindAudioTrack(const std::string& track_id) override;
+  rtc::scoped_refptr<VideoTrackInterface>
+      FindVideoTrack(const std::string& track_id) override;
 
   AudioTrackVector GetAudioTracks() override { return audio_tracks_; }
   VideoTrackVector GetVideoTracks() override { return video_tracks_; }
diff --git a/webrtc/api/peerconnectionfactory.h b/webrtc/api/peerconnectionfactory.h
index 995c760..1992087 100644
--- a/webrtc/api/peerconnectionfactory.h
+++ b/webrtc/api/peerconnectionfactory.h
@@ -35,7 +35,7 @@
 
 class PeerConnectionFactory : public PeerConnectionFactoryInterface {
  public:
-  virtual void SetOptions(const Options& options) {
+  void SetOptions(const Options& options) override {
     options_ = options;
   }
 
diff --git a/webrtc/api/peerconnectioninterface_unittest.cc b/webrtc/api/peerconnectioninterface_unittest.cc
index 738b736..1a8dd57 100644
--- a/webrtc/api/peerconnectioninterface_unittest.cc
+++ b/webrtc/api/peerconnectioninterface_unittest.cc
@@ -424,8 +424,8 @@
       state_ = pc_->signaling_state();
     }
   }
-  virtual void OnSignalingChange(
-      PeerConnectionInterface::SignalingState new_state) {
+  void OnSignalingChange(
+      PeerConnectionInterface::SignalingState new_state) override {
     EXPECT_EQ(pc_->signaling_state(), new_state);
     state_ = new_state;
   }
diff --git a/webrtc/api/rtpsender.h b/webrtc/api/rtpsender.h
index fe61cbd..86de765 100644
--- a/webrtc/api/rtpsender.h
+++ b/webrtc/api/rtpsender.h
@@ -98,8 +98,8 @@
 
   void Stop() override;
 
-  RtpParameters GetParameters() const;
-  bool SetParameters(const RtpParameters& parameters);
+  RtpParameters GetParameters() const override;
+  bool SetParameters(const RtpParameters& parameters) override;
 
  private:
   // TODO(nisse): Since SSRC == 0 is technically valid, figure out
@@ -164,8 +164,8 @@
 
   void Stop() override;
 
-  RtpParameters GetParameters() const;
-  bool SetParameters(const RtpParameters& parameters);
+  RtpParameters GetParameters() const override;
+  bool SetParameters(const RtpParameters& parameters) override;
 
  private:
   bool can_send_track() const { return track_ && ssrc_; }
diff --git a/webrtc/api/rtpsenderreceiver_unittest.cc b/webrtc/api/rtpsenderreceiver_unittest.cc
index 4cd1425..0ec3cfe 100644
--- a/webrtc/api/rtpsenderreceiver_unittest.cc
+++ b/webrtc/api/rtpsenderreceiver_unittest.cc
@@ -43,7 +43,11 @@
 // Helper class to test RtpSender/RtpReceiver.
 class MockAudioProvider : public AudioProviderInterface {
  public:
-  ~MockAudioProvider() override {}
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
+  ~MockAudioProvider() /* override */ {}
 
   MOCK_METHOD2(SetAudioPlayout,
                void(uint32_t ssrc,
@@ -58,8 +62,8 @@
   MOCK_METHOD2(SetAudioRtpParameters,
                bool(uint32_t ssrc, const RtpParameters&));
 
-  void SetRawAudioSink(uint32_t,
-                       std::unique_ptr<AudioSinkInterface> sink) override {
+  void SetRawAudioSink(
+      uint32_t, std::unique_ptr<AudioSinkInterface> sink) /* override */ {
     sink_ = std::move(sink);
   }
 
diff --git a/webrtc/api/statscollector_unittest.cc b/webrtc/api/statscollector_unittest.cc
index 760db0f..2924c51 100644
--- a/webrtc/api/statscollector_unittest.cc
+++ b/webrtc/api/statscollector_unittest.cc
@@ -67,6 +67,10 @@
 
 class MockWebRtcSession : public webrtc::WebRtcSession {
  public:
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
   explicit MockWebRtcSession(webrtc::MediaControllerInterface* media_controller)
       : WebRtcSession(media_controller,
                       rtc::Thread::Current(),
@@ -85,7 +89,7 @@
 
   // Workaround for gmock's inability to cope with move-only return values.
   std::unique_ptr<rtc::SSLCertificate> GetRemoteSSLCertificate(
-      const std::string& transport_name) override {
+      const std::string& transport_name) /* override */ {
     return std::unique_ptr<rtc::SSLCertificate>(
         GetRemoteSSLCertificate_ReturnsRawPointer(transport_name));
   }
diff --git a/webrtc/api/test/fakeaudiocapturemodule.h b/webrtc/api/test/fakeaudiocapturemodule.h
index 30ad3f8..098243f 100644
--- a/webrtc/api/test/fakeaudiocapturemodule.h
+++ b/webrtc/api/test/fakeaudiocapturemodule.h
@@ -174,12 +174,12 @@
   int32_t ResetAudioDevice() override;
   int32_t SetLoudspeakerStatus(bool enable) override;
   int32_t GetLoudspeakerStatus(bool* enabled) const override;
-  virtual bool BuiltInAECIsAvailable() const { return false; }
-  virtual int32_t EnableBuiltInAEC(bool enable) { return -1; }
-  virtual bool BuiltInAGCIsAvailable() const { return false; }
-  virtual int32_t EnableBuiltInAGC(bool enable) { return -1; }
-  virtual bool BuiltInNSIsAvailable() const { return false; }
-  virtual int32_t EnableBuiltInNS(bool enable) { return -1; }
+  bool BuiltInAECIsAvailable() const override { return false; }
+  int32_t EnableBuiltInAEC(bool enable) override { return -1; }
+  bool BuiltInAGCIsAvailable() const override { return false; }
+  int32_t EnableBuiltInAGC(bool enable) override { return -1; }
+  bool BuiltInNSIsAvailable() const override { return false; }
+  int32_t EnableBuiltInNS(bool enable) override { return -1; }
   // End of functions inherited from webrtc::AudioDeviceModule.
 
   // The following function is inherited from rtc::MessageHandler.
diff --git a/webrtc/api/test/fakeaudiocapturemodule_unittest.cc b/webrtc/api/test/fakeaudiocapturemodule_unittest.cc
index 8ac1acc..d0dcd85 100644
--- a/webrtc/api/test/fakeaudiocapturemodule_unittest.cc
+++ b/webrtc/api/test/fakeaudiocapturemodule_unittest.cc
@@ -31,7 +31,7 @@
     memset(rec_buffer_, 0, sizeof(rec_buffer_));
   }
 
-  virtual void SetUp() {
+  void SetUp() override {
     fake_audio_capture_module_ = FakeAudioCaptureModule::Create();
     EXPECT_TRUE(fake_audio_capture_module_.get() != NULL);
   }
diff --git a/webrtc/api/test/fakedtlsidentitystore.h b/webrtc/api/test/fakedtlsidentitystore.h
index 89c4084..c6f5a3c 100644
--- a/webrtc/api/test/fakedtlsidentitystore.h
+++ b/webrtc/api/test/fakedtlsidentitystore.h
@@ -146,7 +146,7 @@
   const char* get_cert() { return kKeysAndCerts[key_index_].cert_pem; }
 
   // rtc::MessageHandler implementation.
-  void OnMessage(rtc::Message* msg) {
+  void OnMessage(rtc::Message* msg) override {
     MessageData* message_data = static_cast<MessageData*>(msg->pdata);
     rtc::scoped_refptr<webrtc::DtlsIdentityRequestObserver> observer =
         message_data->data();
diff --git a/webrtc/api/videotrack.h b/webrtc/api/videotrack.h
index 2f87532..60a0a64 100644
--- a/webrtc/api/videotrack.h
+++ b/webrtc/api/videotrack.h
@@ -33,11 +33,11 @@
                        const rtc::VideoSinkWants& wants) override;
   void RemoveSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink) override;
 
-  virtual VideoTrackSourceInterface* GetSource() const {
+  VideoTrackSourceInterface* GetSource() const override {
     return video_source_.get();
   }
-  virtual bool set_enabled(bool enable);
-  virtual std::string kind() const;
+  bool set_enabled(bool enable) override;
+  std::string kind() const override;
 
  protected:
   VideoTrack(const std::string& id, VideoTrackSourceInterface* video_source);
diff --git a/webrtc/api/videotracksource.h b/webrtc/api/videotracksource.h
index 7100612..10e24ab 100644
--- a/webrtc/api/videotracksource.h
+++ b/webrtc/api/videotracksource.h
@@ -36,8 +36,8 @@
   void Stop() override{};
   void Restart() override{};
 
-  virtual bool is_screencast() const { return false; }
-  virtual rtc::Optional<bool> needs_denoising() const {
+  bool is_screencast() const override { return false; }
+  rtc::Optional<bool> needs_denoising() const override {
     return rtc::Optional<bool>(); }
 
   bool GetStats(Stats* stats) override { return false; }
diff --git a/webrtc/api/webrtcsession.h b/webrtc/api/webrtcsession.h
index 89b77bb..970f967 100644
--- a/webrtc/api/webrtcsession.h
+++ b/webrtc/api/webrtcsession.h
@@ -267,10 +267,10 @@
                              const RtpParameters& parameters) override;
 
   // Implements DtmfProviderInterface.
-  virtual bool CanInsertDtmf(const std::string& track_id);
-  virtual bool InsertDtmf(const std::string& track_id,
-                          int code, int duration);
-  virtual sigslot::signal0<>* GetOnDestroyedSignal();
+  bool CanInsertDtmf(const std::string& track_id) override;
+  bool InsertDtmf(const std::string& track_id,
+                  int code, int duration) override;
+  sigslot::signal0<>* GetOnDestroyedSignal() override;
 
   // Implements DataChannelProviderInterface.
   bool SendData(const cricket::SendDataParams& params,
diff --git a/webrtc/api/webrtcsession_unittest.cc b/webrtc/api/webrtcsession_unittest.cc
index 24e830e..5e9b039 100644
--- a/webrtc/api/webrtcsession_unittest.cc
+++ b/webrtc/api/webrtcsession_unittest.cc
@@ -191,7 +191,7 @@
 
   // Some local candidates are removed.
   void OnIceCandidatesRemoved(
-      const std::vector<cricket::Candidate>& candidates) {
+      const std::vector<cricket::Candidate>& candidates) override {
     num_candidates_removed_ += candidates.size();
   }
 
diff --git a/webrtc/base/callback_unittest.cc b/webrtc/base/callback_unittest.cc
index db294cd..aba1e0c 100644
--- a/webrtc/base/callback_unittest.cc
+++ b/webrtc/base/callback_unittest.cc
@@ -34,7 +34,7 @@
   int AddRef() const override {
     return ++count_;
   }
-  int Release() const {
+  int Release() const override {
     return --count_;
   }
   int RefCount() const { return count_; }
diff --git a/webrtc/base/fakesslidentity.h b/webrtc/base/fakesslidentity.h
index 9f98c4e..3b0df29 100644
--- a/webrtc/base/fakesslidentity.h
+++ b/webrtc/base/fakesslidentity.h
@@ -37,13 +37,13 @@
       certs_.push_back(FakeSSLCertificate(*it));
     }
   }
-  virtual FakeSSLCertificate* GetReference() const {
+  FakeSSLCertificate* GetReference() const override {
     return new FakeSSLCertificate(*this);
   }
-  virtual std::string ToPEMString() const {
+  std::string ToPEMString() const override {
     return data_;
   }
-  virtual void ToDER(Buffer* der_buffer) const {
+  void ToDER(Buffer* der_buffer) const override {
     std::string der_string;
     VERIFY(SSLIdentity::PemToDer(kPemTypeCertificate, data_, &der_string));
     der_buffer->SetData(der_string.c_str(), der_string.size());
@@ -57,19 +57,19 @@
   void set_digest_algorithm(const std::string& algorithm) {
     digest_algorithm_ = algorithm;
   }
-  virtual bool GetSignatureDigestAlgorithm(std::string* algorithm) const {
+  bool GetSignatureDigestAlgorithm(std::string* algorithm) const override {
     *algorithm = digest_algorithm_;
     return true;
   }
-  virtual bool ComputeDigest(const std::string& algorithm,
-                             unsigned char* digest,
-                             size_t size,
-                             size_t* length) const {
+  bool ComputeDigest(const std::string& algorithm,
+                     unsigned char* digest,
+                     size_t size,
+                     size_t* length) const override {
     *length = rtc::ComputeDigest(algorithm, data_.c_str(), data_.size(),
                                        digest, size);
     return (*length != 0);
   }
-  virtual std::unique_ptr<SSLCertChain> GetChain() const {
+  std::unique_ptr<SSLCertChain> GetChain() const override {
     if (certs_.empty())
       return nullptr;
     std::vector<SSLCertificate*> new_certs(certs_.size());
diff --git a/webrtc/base/rtccertificategenerator_unittest.cc b/webrtc/base/rtccertificategenerator_unittest.cc
index 750839c..a6e88a1 100644
--- a/webrtc/base/rtccertificategenerator_unittest.cc
+++ b/webrtc/base/rtccertificategenerator_unittest.cc
@@ -36,13 +36,13 @@
   RTCCertificateGenerator* generator() const { return generator_.get(); }
   RTCCertificate* certificate() const { return certificate_.get(); }
 
-  void OnSuccess(const scoped_refptr<RTCCertificate>& certificate) {
+  void OnSuccess(const scoped_refptr<RTCCertificate>& certificate) override {
     RTC_CHECK(signaling_thread_->IsCurrent());
     RTC_CHECK(certificate);
     certificate_ = certificate;
     generate_async_completed_ = true;
   }
-  void OnFailure() {
+  void OnFailure() override {
     RTC_CHECK(signaling_thread_->IsCurrent());
     certificate_ = nullptr;
     generate_async_completed_ = true;
diff --git a/webrtc/base/sslstreamadapter_unittest.cc b/webrtc/base/sslstreamadapter_unittest.cc
index ac9fef9..dc62ac0 100644
--- a/webrtc/base/sslstreamadapter_unittest.cc
+++ b/webrtc/base/sslstreamadapter_unittest.cc
@@ -562,7 +562,7 @@
   }
 
   // Test data transfer for TLS
-  virtual void TestTransfer(int size) {
+  void TestTransfer(int size) override {
     LOG(LS_INFO) << "Starting transfer test with " << size << " bytes";
     // Create some dummy data to send.
     size_t received;
@@ -591,7 +591,7 @@
                         recv_stream_.GetBuffer(), size));
   }
 
-  void WriteData() {
+  void WriteData() override {
     size_t position, tosend, size;
     rtc::StreamResult rv;
     size_t sent;
@@ -627,7 +627,7 @@
     }
   };
 
-  virtual void ReadData(rtc::StreamInterface *stream) {
+  void ReadData(rtc::StreamInterface *stream) override {
     char buffer[1600];
     size_t bread;
     int err2;
@@ -691,7 +691,7 @@
         new SSLDummyStreamDTLS(this, "s2c", &server_buffer_, &client_buffer_);
   }
 
-  virtual void WriteData() {
+  void WriteData() override {
     unsigned char *packet = new unsigned char[1600];
 
     while (sent_ < count_) {
@@ -720,7 +720,7 @@
     delete [] packet;
   }
 
-  virtual void ReadData(rtc::StreamInterface *stream) {
+  void ReadData(rtc::StreamInterface *stream) override {
     unsigned char buffer[2000];
     size_t bread;
     int err2;
@@ -756,7 +756,7 @@
     }
   }
 
-  virtual void TestTransfer(int count) {
+  void TestTransfer(int count) override {
     count_ = count;
 
     WriteData();
diff --git a/webrtc/build/common.gypi b/webrtc/build/common.gypi
index 948cc8a..1409e0b 100644
--- a/webrtc/build/common.gypi
+++ b/webrtc/build/common.gypi
@@ -309,6 +309,7 @@
             'cflags': [
               '-Wimplicit-fallthrough',
               '-Wthread-safety',
+              '-Winconsistent-missing-override',
             ],
           }],
         ],
diff --git a/webrtc/call/call_perf_tests.cc b/webrtc/call/call_perf_tests.cc
index 8412564..329c1f2 100644
--- a/webrtc/call/call_perf_tests.cc
+++ b/webrtc/call/call_perf_tests.cc
@@ -395,7 +395,7 @@
       EXPECT_TRUE(std::abs(time_offset_ms) < threshold_ms_);
     }
 
-    virtual Action OnSendRtp(const uint8_t* packet, size_t length) {
+    Action OnSendRtp(const uint8_t* packet, size_t length) override {
       rtc::CritScope lock(&crit_);
       RTPHeader header;
       EXPECT_TRUE(parser_->Parse(packet, length, &header));
diff --git a/webrtc/common_video/i420_buffer_pool.cc b/webrtc/common_video/i420_buffer_pool.cc
index c382e93..8896260 100644
--- a/webrtc/common_video/i420_buffer_pool.cc
+++ b/webrtc/common_video/i420_buffer_pool.cc
@@ -30,7 +30,7 @@
   const uint8_t* DataU() const override { return buffer_->DataU(); }
   const uint8_t* DataV() const override { return buffer_->DataV(); }
 
-  bool IsMutable() { return HasOneRef(); }
+  bool IsMutable() override { return HasOneRef(); }
   // Make the IsMutable() check here instead of in |buffer_|, because the pool
   // also has a reference to |buffer_|.
   uint8_t* MutableDataY() override {
diff --git a/webrtc/media/base/fakemediaengine.h b/webrtc/media/base/fakemediaengine.h
index 24c4106..1cddda8 100644
--- a/webrtc/media/base/fakemediaengine.h
+++ b/webrtc/media/base/fakemediaengine.h
@@ -482,23 +482,23 @@
     return sinks_;
   }
   int max_bps() const { return max_bps_; }
-  virtual bool SetSendParameters(const VideoSendParameters& params) {
+  bool SetSendParameters(const VideoSendParameters& params) override {
     return (SetSendCodecs(params.codecs) &&
             SetSendRtpHeaderExtensions(params.extensions) &&
             SetMaxSendBandwidth(params.max_bandwidth_bps));
   }
-  virtual bool SetRecvParameters(const VideoRecvParameters& params) {
+  bool SetRecvParameters(const VideoRecvParameters& params) override {
     return (SetRecvCodecs(params.codecs) &&
             SetRecvRtpHeaderExtensions(params.extensions));
   }
-  virtual bool AddSendStream(const StreamParams& sp) {
+  bool AddSendStream(const StreamParams& sp) override {
     return RtpHelper<VideoMediaChannel>::AddSendStream(sp);
   }
-  virtual bool RemoveSendStream(uint32_t ssrc) {
+  bool RemoveSendStream(uint32_t ssrc) override {
     return RtpHelper<VideoMediaChannel>::RemoveSendStream(ssrc);
   }
 
-  virtual bool GetSendCodec(VideoCodec* send_codec) {
+  bool GetSendCodec(VideoCodec* send_codec) override {
     if (send_codecs_.empty()) {
       return false;
     }
@@ -516,9 +516,9 @@
     return true;
   }
 
-  virtual bool SetSend(bool send) { return set_sending(send); }
-  virtual bool SetVideoSend(uint32_t ssrc, bool enable,
-                            const VideoOptions* options) {
+  bool SetSend(bool send) override { return set_sending(send); }
+  bool SetVideoSend(uint32_t ssrc, bool enable,
+                    const VideoOptions* options) override {
     if (!RtpHelper<VideoMediaChannel>::MuteStream(ssrc, !enable)) {
       return false;
     }
@@ -536,20 +536,20 @@
   bool HasSource(uint32_t ssrc) const {
     return sources_.find(ssrc) != sources_.end();
   }
-  virtual bool AddRecvStream(const StreamParams& sp) {
+  bool AddRecvStream(const StreamParams& sp) override {
     if (!RtpHelper<VideoMediaChannel>::AddRecvStream(sp))
       return false;
     sinks_[sp.first_ssrc()] = NULL;
     return true;
   }
-  virtual bool RemoveRecvStream(uint32_t ssrc) {
+  bool RemoveRecvStream(uint32_t ssrc) override {
     if (!RtpHelper<VideoMediaChannel>::RemoveRecvStream(ssrc))
       return false;
     sinks_.erase(ssrc);
     return true;
   }
 
-  virtual bool GetStats(VideoMediaInfo* info) { return false; }
+  bool GetStats(VideoMediaInfo* info) override { return false; }
 
  private:
   bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) {
diff --git a/webrtc/media/engine/fakewebrtcvideoengine.h b/webrtc/media/engine/fakewebrtcvideoengine.h
index b445d21..f8b8cbb 100644
--- a/webrtc/media/engine/fakewebrtcvideoengine.h
+++ b/webrtc/media/engine/fakewebrtcvideoengine.h
@@ -182,8 +182,8 @@
         num_created_encoders_(0),
         encoders_have_internal_sources_(false) {}
 
-  virtual webrtc::VideoEncoder* CreateVideoEncoder(
-      webrtc::VideoCodecType type) {
+  webrtc::VideoEncoder* CreateVideoEncoder(
+      webrtc::VideoCodecType type) override {
     rtc::CritScope lock(&crit_);
     if (supported_codec_types_.count(type) == 0) {
       return NULL;
@@ -203,7 +203,7 @@
     return false;
   }
 
-  virtual void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) {
+  void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override {
     rtc::CritScope lock(&crit_);
     encoders_.erase(
         std::remove(encoders_.begin(), encoders_.end(), encoder),
@@ -211,12 +211,12 @@
     delete encoder;
   }
 
-  virtual const std::vector<WebRtcVideoEncoderFactory::VideoCodec>& codecs()
-      const {
+  const std::vector<WebRtcVideoEncoderFactory::VideoCodec>& codecs()
+      const override {
     return codecs_;
   }
 
-  virtual bool EncoderTypeHasInternalSource(
+  bool EncoderTypeHasInternalSource(
       webrtc::VideoCodecType type) const override {
     return encoders_have_internal_sources_;
   }
diff --git a/webrtc/media/engine/fakewebrtcvoiceengine.h b/webrtc/media/engine/fakewebrtcvoiceengine.h
index 4aa6ea3..5343800 100644
--- a/webrtc/media/engine/fakewebrtcvoiceengine.h
+++ b/webrtc/media/engine/fakewebrtcvoiceengine.h
@@ -298,7 +298,7 @@
     channels_[channel]->associate_send_channel = accociate_send_channel;
     return 0;
   }
-  webrtc::RtcEventLog* GetEventLog() { return nullptr; }
+  webrtc::RtcEventLog* GetEventLog() override { return nullptr; }
 
   // webrtc::VoECodec
   WEBRTC_STUB(NumOfCodecs, ());
@@ -449,11 +449,11 @@
   WEBRTC_STUB(SetPlayoutSampleRate, (unsigned int samples_per_sec));
   WEBRTC_STUB_CONST(PlayoutSampleRate, (unsigned int* samples_per_sec));
   WEBRTC_STUB(EnableBuiltInAEC, (bool enable));
-  virtual bool BuiltInAECIsAvailable() const { return false; }
+  bool BuiltInAECIsAvailable() const override { return false; }
   WEBRTC_STUB(EnableBuiltInAGC, (bool enable));
-  virtual bool BuiltInAGCIsAvailable() const { return false; }
+  bool BuiltInAGCIsAvailable() const override { return false; }
   WEBRTC_STUB(EnableBuiltInNS, (bool enable));
-  virtual bool BuiltInNSIsAvailable() const { return false; }
+  bool BuiltInNSIsAvailable() const override { return false; }
 
   // webrtc::VoENetwork
   WEBRTC_FUNC(RegisterExternalTransport, (int channel,
@@ -661,17 +661,17 @@
                                              int reportingThreshold,
                                              int penaltyDecay,
                                              int typeEventDelay));
-  int EnableHighPassFilter(bool enable) {
+  int EnableHighPassFilter(bool enable) override {
     highpass_filter_enabled_ = enable;
     return 0;
   }
-  bool IsHighPassFilterEnabled() {
+  bool IsHighPassFilterEnabled() override {
     return highpass_filter_enabled_;
   }
-  bool IsStereoChannelSwappingEnabled() {
+  bool IsStereoChannelSwappingEnabled() override {
     return stereo_swapping_enabled_;
   }
-  void EnableStereoChannelSwapping(bool enable) {
+  void EnableStereoChannelSwapping(bool enable) override {
     stereo_swapping_enabled_ = enable;
   }
   int GetNetEqCapacity() const {
diff --git a/webrtc/media/engine/webrtcvideocapturer.h b/webrtc/media/engine/webrtcvideocapturer.h
index b6b3938..1efa4ad 100644
--- a/webrtc/media/engine/webrtcvideocapturer.h
+++ b/webrtc/media/engine/webrtcvideocapturer.h
@@ -61,14 +61,14 @@
  protected:
   void OnSinkWantsChanged(const rtc::VideoSinkWants& wants) override;
   // Override virtual methods of the parent class VideoCapturer.
-  virtual bool GetPreferredFourccs(std::vector<uint32_t>* fourccs);
+  bool GetPreferredFourccs(std::vector<uint32_t>* fourccs) override;
 
  private:
   // Callback when a frame is captured by camera.
-  virtual void OnIncomingCapturedFrame(const int32_t id,
-                                       const webrtc::VideoFrame& frame);
-  virtual void OnCaptureDelayChanged(const int32_t id,
-                                     const int32_t delay);
+  void OnIncomingCapturedFrame(const int32_t id,
+                               const webrtc::VideoFrame& frame) override;
+  void OnCaptureDelayChanged(const int32_t id,
+                             const int32_t delay) override;
 
   // Used to signal captured frames on the same thread as invoked Start().
   // With WebRTC's current VideoCapturer implementations, this will mean a
diff --git a/webrtc/modules/audio_coding/acm2/acm_send_test_oldapi.h b/webrtc/modules/audio_coding/acm2/acm_send_test_oldapi.h
index cfee353..938e39e 100644
--- a/webrtc/modules/audio_coding/acm2/acm_send_test_oldapi.h
+++ b/webrtc/modules/audio_coding/acm2/acm_send_test_oldapi.h
@@ -47,7 +47,7 @@
   // Returns the next encoded packet. Returns NULL if the test duration was
   // exceeded. Ownership of the packet is handed over to the caller.
   // Inherited from PacketSource.
-  Packet* NextPacket();
+  Packet* NextPacket() override;
 
   // Inherited from AudioPacketizationCallback.
   int32_t SendData(FrameType frame_type,
diff --git a/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc b/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc
index 503acdd..dc6bbf6 100644
--- a/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc
+++ b/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest_oldapi.cc
@@ -608,7 +608,7 @@
 
   ~AcmIsacMtTestOldApi() {}
 
-  void SetUp() {
+  void SetUp() override {
     AudioCodingModuleTestOldApi::SetUp();
     RegisterCodec();  // Must be called before the threads start below.
 
@@ -642,7 +642,7 @@
     ASSERT_EQ(0, acm_->RegisterSendCodec(codec_));
   }
 
-  void InsertPacket() {
+  void InsertPacket() override {
     int num_calls = packet_cb_.num_calls();  // Store locally for thread safety.
     if (num_calls > last_packet_number_) {
       // Get the new payload out from the callback handler.
@@ -661,7 +661,7 @@
             &last_payload_vec_[0], last_payload_vec_.size(), rtp_header_));
   }
 
-  void InsertAudio() {
+  void InsertAudio() override {
     // TODO(kwiberg): Use std::copy here. Might be complications because AFAICS
     // this call confuses the number of samples with the number of bytes, and
     // ends up copying only half of what it should.
@@ -677,7 +677,7 @@
   // This method is the same as AudioCodingModuleMtTestOldApi::TestDone(), but
   // here it is using the constants defined in this class (i.e., shorter test
   // run).
-  virtual bool TestDone() {
+  bool TestDone() override {
     if (packet_cb_.num_calls() > kNumPackets) {
       rtc::CritScope lock(&crit_sect_);
       if (pull_audio_count_ > kNumPullCalls) {
@@ -728,7 +728,7 @@
     clock_ = fake_clock_.get();
   }
 
-  void SetUp() {
+  void SetUp() override {
     AudioCodingModuleTestOldApi::SetUp();
     // Set up input audio source to read from specified file, loop after 5
     // seconds, and deliver blocks of 10 ms.
@@ -757,7 +757,7 @@
     codec_registration_thread_.SetPriority(rtc::kRealtimePriority);
   }
 
-  void TearDown() {
+  void TearDown() override {
     AudioCodingModuleTestOldApi::TearDown();
     receive_thread_.Stop();
     codec_registration_thread_.Stop();
@@ -1737,7 +1737,7 @@
   }
 
   // Inherited from test::AudioSink.
-  bool WriteArray(const int16_t* audio, size_t num_samples) {
+  bool WriteArray(const int16_t* audio, size_t num_samples) override {
     // Skip checking the first output frame, since it has a number of zeros
     // due to how NetEq is initialized.
     if (first_output_) {
diff --git a/webrtc/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc b/webrtc/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc
index 32f36c5..276eb60 100644
--- a/webrtc/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc
+++ b/webrtc/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc
@@ -25,10 +25,10 @@
   IsacSpeedTest();
   void SetUp() override;
   void TearDown() override;
-  virtual float EncodeABlock(int16_t* in_data, uint8_t* bit_stream,
-                             size_t max_bytes, size_t* encoded_bytes);
-  virtual float DecodeABlock(const uint8_t* bit_stream, size_t encoded_bytes,
-                             int16_t* out_data);
+  float EncodeABlock(int16_t* in_data, uint8_t* bit_stream,
+                     size_t max_bytes, size_t* encoded_bytes) override;
+  float DecodeABlock(const uint8_t* bit_stream, size_t encoded_bytes,
+                     int16_t* out_data) override;
   ISACFIX_MainStruct *ISACFIX_main_inst_;
 };
 
diff --git a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
index 6fafc25..2ffb30b 100644
--- a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
+++ b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
@@ -22,7 +22,11 @@
 
 class MockAudioEncoder : public AudioEncoder {
  public:
-  ~MockAudioEncoder() override { Die(); }
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
+  ~MockAudioEncoder() /* override */ { Die(); }
   MOCK_METHOD0(Die, void());
   MOCK_METHOD1(Mark, void(std::string desc));
   MOCK_CONST_METHOD0(SampleRateHz, int());
diff --git a/webrtc/modules/audio_coding/codecs/opus/opus_speed_test.cc b/webrtc/modules/audio_coding/codecs/opus/opus_speed_test.cc
index 4d1aa42..7165d29 100644
--- a/webrtc/modules/audio_coding/codecs/opus/opus_speed_test.cc
+++ b/webrtc/modules/audio_coding/codecs/opus/opus_speed_test.cc
@@ -23,10 +23,10 @@
   OpusSpeedTest();
   void SetUp() override;
   void TearDown() override;
-  virtual float EncodeABlock(int16_t* in_data, uint8_t* bit_stream,
-                             size_t max_bytes, size_t* encoded_bytes);
-  virtual float DecodeABlock(const uint8_t* bit_stream, size_t encoded_bytes,
-                             int16_t* out_data);
+  float EncodeABlock(int16_t* in_data, uint8_t* bit_stream,
+                     size_t max_bytes, size_t* encoded_bytes) override;
+  float DecodeABlock(const uint8_t* bit_stream, size_t encoded_bytes,
+                     int16_t* out_data) override;
   WebRtcOpusEncInst* opus_encoder_;
   WebRtcOpusDecInst* opus_decoder_;
 };
diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
index 42f2c1e..77622bc 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
@@ -783,11 +783,15 @@
 
   class MockAudioDecoder : public AudioDecoder {
    public:
-    void Reset() override {}
+    // TODO(nisse): Valid overrides commented out, because the gmock
+    // methods don't use any override declarations, and we want to avoid
+    // warnings from -Winconsistent-missing-override. See
+    // http://crbug.com/428099.
+    void Reset() /* override */ {}
     MOCK_CONST_METHOD2(PacketDuration, int(const uint8_t*, size_t));
     MOCK_METHOD5(DecodeInternal, int(const uint8_t*, size_t, int, int16_t*,
                                      SpeechType*));
-    size_t Channels() const override { return kChannels; }
+    size_t Channels() const /* override */ { return kChannels; }
   } decoder_;
 
   const uint8_t kFirstPayloadValue = 1;
diff --git a/webrtc/modules/audio_coding/neteq/neteq_network_stats_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
index 770ebd5..1a77abc 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
@@ -24,31 +24,36 @@
 
 class MockAudioDecoder final : public AudioDecoder {
  public:
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
   static const int kPacketDuration = 960;  // 48 kHz * 20 ms
 
   explicit MockAudioDecoder(size_t num_channels)
       : num_channels_(num_channels), fec_enabled_(false) {
   }
-  ~MockAudioDecoder() override { Die(); }
+  ~MockAudioDecoder() /* override */ { Die(); }
   MOCK_METHOD0(Die, void());
 
   MOCK_METHOD0(Reset, void());
 
   int PacketDuration(const uint8_t* encoded,
-                     size_t encoded_len) const override {
+                     size_t encoded_len) const /* override */ {
     return kPacketDuration;
   }
 
   int PacketDurationRedundant(const uint8_t* encoded,
-                              size_t encoded_len) const override {
+                              size_t encoded_len) const /* override */ {
     return kPacketDuration;
   }
 
-  bool PacketHasFec(const uint8_t* encoded, size_t encoded_len) const override {
+  bool PacketHasFec(
+      const uint8_t* encoded, size_t encoded_len) const /* override */ {
     return fec_enabled_;
   }
 
-  size_t Channels() const override { return num_channels_; }
+  size_t Channels() const /* override */ { return num_channels_; }
 
   void set_fec_enabled(bool enable_fec) { fec_enabled_ = enable_fec; }
 
@@ -60,7 +65,7 @@
                      size_t encoded_len,
                      int /*sample_rate_hz*/,
                      int16_t* decoded,
-                     SpeechType* speech_type) override {
+                     SpeechType* speech_type) /* override */ {
     *speech_type = kSpeech;
     memset(decoded, 0, sizeof(int16_t) * kPacketDuration * Channels());
     return kPacketDuration * Channels();
@@ -70,7 +75,7 @@
                               size_t encoded_len,
                               int sample_rate_hz,
                               int16_t* decoded,
-                              SpeechType* speech_type) override {
+                              SpeechType* speech_type) /* override */ {
     return DecodeInternal(encoded, encoded_len, sample_rate_hz, decoded,
                           speech_type);
   }
@@ -294,7 +299,3 @@
 
 }  // namespace test
 }  // namespace webrtc
-
-
-
-
diff --git a/webrtc/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc b/webrtc/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc
index 2ebd192..62bfc1b 100644
--- a/webrtc/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc
+++ b/webrtc/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc
@@ -43,8 +43,8 @@
   NetEqIsacQualityTest();
   void SetUp() override;
   void TearDown() override;
-  virtual int EncodeBlock(int16_t* in_data, size_t block_size_samples,
-                          rtc::Buffer* payload, size_t max_bytes);
+  int EncodeBlock(int16_t* in_data, size_t block_size_samples,
+                  rtc::Buffer* payload, size_t max_bytes) override;
  private:
   ISACFIX_MainStruct* isac_encoder_;
   int bit_rate_kbps_;
diff --git a/webrtc/modules/audio_coding/neteq/test/neteq_opus_quality_test.cc b/webrtc/modules/audio_coding/neteq/test/neteq_opus_quality_test.cc
index baa0d67..a6117a4 100644
--- a/webrtc/modules/audio_coding/neteq/test/neteq_opus_quality_test.cc
+++ b/webrtc/modules/audio_coding/neteq/test/neteq_opus_quality_test.cc
@@ -103,8 +103,8 @@
   NetEqOpusQualityTest();
   void SetUp() override;
   void TearDown() override;
-  virtual int EncodeBlock(int16_t* in_data, size_t block_size_samples,
-                          rtc::Buffer* payload, size_t max_bytes);
+  int EncodeBlock(int16_t* in_data, size_t block_size_samples,
+                  rtc::Buffer* payload, size_t max_bytes) override;
  private:
   WebRtcOpusEncInst* opus_encoder_;
   OpusRepacketizer* repacketizer_;
diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc
index 6985e67..14a73fe 100644
--- a/webrtc/modules/congestion_controller/congestion_controller.cc
+++ b/webrtc/modules/congestion_controller/congestion_controller.cc
@@ -81,7 +81,7 @@
     return rbe_->LatestEstimate(ssrcs, bitrate_bps);
   }
 
-  void SetMinBitrate(int min_bitrate_bps) {
+  void SetMinBitrate(int min_bitrate_bps) override {
     CriticalSectionScoped cs(crit_sect_.get());
     rbe_->SetMinBitrate(min_bitrate_bps);
     min_bitrate_bps_ = min_bitrate_bps;
diff --git a/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc b/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc
index 898ec02..f6cbe74 100644
--- a/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc
@@ -157,8 +157,8 @@
         : RtcpStatisticsCallback(), num_calls_(0), ssrc_(0), stats_() {}
     virtual ~TestCallback() {}
 
-    virtual void StatisticsUpdated(const RtcpStatistics& statistics,
-                                   uint32_t ssrc) {
+    void StatisticsUpdated(const RtcpStatistics& statistics,
+                           uint32_t ssrc) override {
       ssrc_ = ssrc;
       stats_ = statistics;
       ++num_calls_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
index 1511afb..0630adb 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
@@ -50,7 +50,7 @@
   static const size_t kRrBaseLength = 4;
   static const size_t kMaxNumberOfReportBlocks = 0x1F;
 
-  size_t BlockLength() const {
+  size_t BlockLength() const override {
     return kHeaderLength + kRrBaseLength +
            report_blocks_.size() * ReportBlock::kLength;
   }
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc
index 091d271..283c284 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc
@@ -406,7 +406,8 @@
     return payload;
   }
 
-  int GetPayloadTypeFrequency(const RtpUtility::Payload& payload) const {
+  int GetPayloadTypeFrequency(
+      const RtpUtility::Payload& payload) const override {
     return payload.typeSpecific.Audio.frequency;
   }
 };
@@ -456,7 +457,8 @@
     return payload;
   }
 
-  int GetPayloadTypeFrequency(const RtpUtility::Payload& payload) const {
+  int GetPayloadTypeFrequency(
+      const RtpUtility::Payload& payload) const override {
     return kVideoPayloadTypeFrequency;
   }
 };
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h
index bec1578..d5d89ba 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h
@@ -31,15 +31,15 @@
 
   // The following three methods implement the TelephoneEventHandler interface.
   // Forward DTMFs to decoder for playout.
-  void SetTelephoneEventForwardToDecoder(bool forward_to_decoder);
+  void SetTelephoneEventForwardToDecoder(bool forward_to_decoder) override;
 
   // Is forwarding of outband telephone events turned on/off?
-  bool TelephoneEventForwardToDecoder() const;
+  bool TelephoneEventForwardToDecoder() const override;
 
   // Is TelephoneEvent configured with payload type payload_type
-  bool TelephoneEventPayloadType(const int8_t payload_type) const;
+  bool TelephoneEventPayloadType(const int8_t payload_type) const override;
 
-  TelephoneEventHandler* GetTelephoneEventHandler() { return this; }
+  TelephoneEventHandler* GetTelephoneEventHandler() override { return this; }
 
   // Returns true if CNG is configured with payload type payload_type. If so,
   // the frequency and cng_payload_type_has_changed are filled in.
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h
index dc89b8f..486eced 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h
@@ -34,7 +34,7 @@
                          int64_t timestamp,
                          bool is_first_packet) override;
 
-  TelephoneEventHandler* GetTelephoneEventHandler() { return NULL; }
+  TelephoneEventHandler* GetTelephoneEventHandler() override { return NULL; }
 
   int GetPayloadTypeFrequency() const override;
 
diff --git a/webrtc/modules/utility/include/mock/mock_process_thread.h b/webrtc/modules/utility/include/mock/mock_process_thread.h
index 3d39307..621fcee 100644
--- a/webrtc/modules/utility/include/mock/mock_process_thread.h
+++ b/webrtc/modules/utility/include/mock/mock_process_thread.h
@@ -21,6 +21,10 @@
 
 class MockProcessThread : public ProcessThread {
  public:
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
   MOCK_METHOD0(Start, void());
   MOCK_METHOD0(Stop, void());
   MOCK_METHOD1(WakeUp, void(Module* module));
@@ -31,7 +35,7 @@
   // MOCK_METHOD1 gets confused with mocking this method, so we work around it
   // by overriding the method from the interface and forwarding the call to a
   // mocked, simpler method.
-  void PostTask(std::unique_ptr<ProcessTask> task) override {
+  void PostTask(std::unique_ptr<ProcessTask> task) /* override */ {
     PostTask(task.get());
   }
 };
diff --git a/webrtc/modules/utility/source/file_recorder_impl.h b/webrtc/modules/utility/source/file_recorder_impl.h
index 697d759..44169cc 100644
--- a/webrtc/modules/utility/source/file_recorder_impl.h
+++ b/webrtc/modules/utility/source/file_recorder_impl.h
@@ -45,23 +45,23 @@
     virtual ~FileRecorderImpl();
 
     // FileRecorder functions.
-    virtual int32_t RegisterModuleFileCallback(FileCallback* callback);
-    virtual FileFormats RecordingFileFormat() const;
-    virtual int32_t StartRecordingAudioFile(
+    int32_t RegisterModuleFileCallback(FileCallback* callback) override;
+    FileFormats RecordingFileFormat() const override;
+    int32_t StartRecordingAudioFile(
         const char* fileName,
         const CodecInst& codecInst,
         uint32_t notificationTimeMs) override;
-    virtual int32_t StartRecordingAudioFile(
+    int32_t StartRecordingAudioFile(
         OutStream& destStream,
         const CodecInst& codecInst,
         uint32_t notificationTimeMs) override;
-    virtual int32_t StopRecording();
-    virtual bool IsRecording() const;
-    virtual int32_t codec_info(CodecInst& codecInst) const;
-    virtual int32_t RecordAudioToFile(
+    int32_t StopRecording() override;
+    bool IsRecording() const override;
+    int32_t codec_info(CodecInst& codecInst) const override;
+    int32_t RecordAudioToFile(
         const AudioFrame& frame,
-        const TickTime* playoutTS = NULL);
-    virtual int32_t StartRecordingVideoFile(
+        const TickTime* playoutTS = NULL) override;
+    int32_t StartRecordingVideoFile(
         const char* fileName,
         const CodecInst& audioCodecInst,
         const VideoCodec& videoCodecInst,
@@ -69,7 +69,7 @@
     {
         return -1;
     }
-    virtual int32_t RecordVideoToFile(const VideoFrame& videoFrame) {
+    int32_t RecordVideoToFile(const VideoFrame& videoFrame) override {
         return -1;
     }
 
diff --git a/webrtc/modules/video_coding/codecs/vp8/realtime_temporal_layers.cc b/webrtc/modules/video_coding/codecs/vp8/realtime_temporal_layers.cc
index d226013..b9721cd 100644
--- a/webrtc/modules/video_coding/codecs/vp8/realtime_temporal_layers.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/realtime_temporal_layers.cc
@@ -101,10 +101,10 @@
 
   virtual ~RealTimeTemporalLayers() {}
 
-  virtual bool ConfigureBitrates(int bitrate_kbit,
-                                 int max_bitrate_kbit,
-                                 int framerate,
-                                 vpx_codec_enc_cfg_t* cfg) {
+  bool ConfigureBitrates(int bitrate_kbit,
+                         int max_bitrate_kbit,
+                         int framerate,
+                         vpx_codec_enc_cfg_t* cfg) override {
     temporal_layers_ =
         CalculateNumberOfTemporalLayers(temporal_layers_, framerate);
     temporal_layers_ = std::min(temporal_layers_, max_temporal_layers_);
@@ -184,7 +184,7 @@
     return true;
   }
 
-  virtual int EncodeFlags(uint32_t timestamp) {
+  int EncodeFlags(uint32_t timestamp) override {
     frame_counter_++;
     return CurrentEncodeFlags();
   }
@@ -196,16 +196,16 @@
     return encode_flags_[index];
   }
 
-  virtual int CurrentLayerId() const {
+  int CurrentLayerId() const override {
     assert(layer_ids_length_ > 0 && layer_ids_ != NULL);
     int index = frame_counter_ % layer_ids_length_;
     assert(index >= 0 && index < layer_ids_length_);
     return layer_ids_[index];
   }
 
-  virtual void PopulateCodecSpecific(bool base_layer_sync,
-                                     CodecSpecificInfoVP8* vp8_info,
-                                     uint32_t timestamp) {
+  void PopulateCodecSpecific(bool base_layer_sync,
+                             CodecSpecificInfoVP8* vp8_info,
+                             uint32_t timestamp) override {
     assert(temporal_layers_ > 0);
 
     if (temporal_layers_ == 1) {
diff --git a/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc b/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc
index 9a7e1b2..aafcd79 100644
--- a/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc
@@ -107,34 +107,40 @@
 
 class MockVideoEncoder : public VideoEncoder {
  public:
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
   int32_t InitEncode(const VideoCodec* codecSettings,
                      int32_t numberOfCores,
-                     size_t maxPayloadSize) override {
+                     size_t maxPayloadSize) /* override */ {
     codec_ = *codecSettings;
     return 0;
   }
 
   int32_t Encode(const VideoFrame& inputImage,
                  const CodecSpecificInfo* codecSpecificInfo,
-                 const std::vector<FrameType>* frame_types) override {
+                 const std::vector<FrameType>* frame_types) /* override */ {
     return 0;
   }
 
   int32_t RegisterEncodeCompleteCallback(
-      EncodedImageCallback* callback) override {
+      EncodedImageCallback* callback) /* override */ {
     callback_ = callback;
     return 0;
   }
 
-  int32_t Release() override { return 0; }
+  int32_t Release() /* override */ { return 0; }
 
-  int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override {
+  int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) /* override */ {
     return 0;
   }
 
   MOCK_METHOD2(SetChannelParameters, int32_t(uint32_t packetLoss, int64_t rtt));
 
-  bool SupportsNativeHandle() const override { return supports_native_handle_; }
+  bool SupportsNativeHandle() const /* override */ {
+    return supports_native_handle_;
+  }
 
   virtual ~MockVideoEncoder() {}
 
diff --git a/webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.h b/webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.h
index 2b2aa5d..8d5b74f 100644
--- a/webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.h
+++ b/webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.h
@@ -168,7 +168,7 @@
 
     virtual ~SpyingTemporalLayers() { delete layers_; }
 
-    virtual int EncodeFlags(uint32_t timestamp) {
+    int EncodeFlags(uint32_t timestamp) override {
       return layers_->EncodeFlags(timestamp);
     }
 
diff --git a/webrtc/modules/video_coding/codecs/vp8/vp8_impl.h b/webrtc/modules/video_coding/codecs/vp8/vp8_impl.h
index 6906a32..f8af642 100644
--- a/webrtc/modules/video_coding/codecs/vp8/vp8_impl.h
+++ b/webrtc/modules/video_coding/codecs/vp8/vp8_impl.h
@@ -40,21 +40,21 @@
 
   virtual ~VP8EncoderImpl();
 
-  virtual int Release();
+  int Release() override;
 
-  virtual int InitEncode(const VideoCodec* codec_settings,
-                         int number_of_cores,
-                         size_t max_payload_size);
+  int InitEncode(const VideoCodec* codec_settings,
+                 int number_of_cores,
+                 size_t max_payload_size) override;
 
-  virtual int Encode(const VideoFrame& input_image,
-                     const CodecSpecificInfo* codec_specific_info,
-                     const std::vector<FrameType>* frame_types);
+  int Encode(const VideoFrame& input_image,
+             const CodecSpecificInfo* codec_specific_info,
+             const std::vector<FrameType>* frame_types) override;
 
-  virtual int RegisterEncodeCompleteCallback(EncodedImageCallback* callback);
+  int RegisterEncodeCompleteCallback(EncodedImageCallback* callback) override;
 
-  virtual int SetChannelParameters(uint32_t packet_loss, int64_t rtt);
+  int SetChannelParameters(uint32_t packet_loss, int64_t rtt) override;
 
-  virtual int SetRates(uint32_t new_bitrate_kbit, uint32_t frame_rate);
+  int SetRates(uint32_t new_bitrate_kbit, uint32_t frame_rate) override;
 
   void OnDroppedFrame() override {}
 
diff --git a/webrtc/modules/video_coding/jitter_buffer_unittest.cc b/webrtc/modules/video_coding/jitter_buffer_unittest.cc
index eb7d78b..af9c20a 100644
--- a/webrtc/modules/video_coding/jitter_buffer_unittest.cc
+++ b/webrtc/modules/video_coding/jitter_buffer_unittest.cc
@@ -215,7 +215,7 @@
 
  protected:
   TestBasicJitterBuffer() : scoped_field_trial_(GetParam()) {}
-  virtual void SetUp() {
+  void SetUp() override {
     clock_.reset(new SimulatedClock(0));
     jitter_buffer_.reset(new VCMJitterBuffer(
         clock_.get(),
diff --git a/webrtc/p2p/base/faketransportcontroller.h b/webrtc/p2p/base/faketransportcontroller.h
index c099c8c..e2bdc10 100644
--- a/webrtc/p2p/base/faketransportcontroller.h
+++ b/webrtc/p2p/base/faketransportcontroller.h
@@ -231,7 +231,7 @@
   }
 
   bool SetLocalCertificate(
-      const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) {
+      const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) override {
     local_cert_ = certificate;
     return true;
   }
@@ -257,7 +257,7 @@
 
   bool GetSslCipherSuite(int* cipher_suite) override { return false; }
 
-  rtc::scoped_refptr<rtc::RTCCertificate> GetLocalCertificate() const {
+  rtc::scoped_refptr<rtc::RTCCertificate> GetLocalCertificate() const override {
     return local_cert_;
   }
 
diff --git a/webrtc/p2p/base/port_unittest.cc b/webrtc/p2p/base/port_unittest.cc
index 7e787e0..7231d59 100644
--- a/webrtc/p2p/base/port_unittest.cc
+++ b/webrtc/p2p/base/port_unittest.cc
@@ -965,7 +965,7 @@
   void set_next_client_tcp_socket(AsyncPacketSocket* next_client_tcp_socket) {
     next_client_tcp_socket_ = next_client_tcp_socket;
   }
-  rtc::AsyncResolverInterface* CreateAsyncResolver() {
+  rtc::AsyncResolverInterface* CreateAsyncResolver() override {
     return NULL;
   }
 
diff --git a/webrtc/test/mock_voice_engine.h b/webrtc/test/mock_voice_engine.h
index fac088b..b9eb05f 100644
--- a/webrtc/test/mock_voice_engine.h
+++ b/webrtc/test/mock_voice_engine.h
@@ -24,6 +24,10 @@
 // able to get the various interfaces as usual, via T::GetInterface().
 class MockVoiceEngine : public VoiceEngineImpl {
  public:
+  // TODO(nisse): Valid overrides commented out, because the gmock
+  // methods don't use any override declarations, and we want to avoid
+  // warnings from -Winconsistent-missing-override. See
+  // http://crbug.com/428099.
   MockVoiceEngine() : VoiceEngineImpl(new Config(), true) {
     // Increase ref count so this object isn't automatically deleted whenever
     // interfaces are Release():d.
@@ -36,7 +40,7 @@
               return new testing::NiceMock<MockVoEChannelProxy>();
             }));
   }
-  ~MockVoiceEngine() override {
+  ~MockVoiceEngine() /* override */ {
     // Decrease ref count before base class d-tor is called; otherwise it will
     // trigger an assertion.
     --_ref_count;
@@ -45,7 +49,8 @@
   MOCK_METHOD1(ChannelProxyFactory, voe::ChannelProxy*(int channel_id));
 
   // VoiceEngineImpl
-  std::unique_ptr<voe::ChannelProxy> GetChannelProxy(int channel_id) override {
+  std::unique_ptr<voe::ChannelProxy> GetChannelProxy(
+      int channel_id) /* override */ {
     return std::unique_ptr<voe::ChannelProxy>(ChannelProxyFactory(channel_id));
   }
 
diff --git a/webrtc/test/rtp_file_reader.cc b/webrtc/test/rtp_file_reader.cc
index 3687ef7..476767a 100644
--- a/webrtc/test/rtp_file_reader.cc
+++ b/webrtc/test/rtp_file_reader.cc
@@ -131,7 +131,7 @@
   }
 
   bool Init(const std::string& filename,
-            const std::set<uint32_t>& ssrc_filter) {
+            const std::set<uint32_t>& ssrc_filter) override {
     file_ = fopen(filename.c_str(), "rb");
     if (file_ == NULL) {
       printf("ERROR: Can't open file: %s\n", filename.c_str());
diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
index ef1771a..0e02ff8 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -1765,7 +1765,7 @@
 
     ~BweObserver() {}
 
-    test::PacketTransport* CreateReceiveTransport() {
+    test::PacketTransport* CreateReceiveTransport() override {
       receive_transport_ = new test::PacketTransport(
           nullptr, this, test::PacketTransport::kReceiver,
           FakeNetworkPipe::Config());
@@ -2248,7 +2248,7 @@
       return SEND_PACKET;
     }
     // Send stream should send SR packets (and DLRR packets if enabled).
-    virtual Action OnSendRtcp(const uint8_t* packet, size_t length) {
+    Action OnSendRtcp(const uint8_t* packet, size_t length) override {
       rtc::CritScope lock(&crit_);
       RTCPUtility::RTCPParserV2 parser(packet, length, true);
       EXPECT_TRUE(parser.IsValid());
diff --git a/webrtc/video/overuse_frame_detector_unittest.cc b/webrtc/video/overuse_frame_detector_unittest.cc
index 06cff38..67d0532 100644
--- a/webrtc/video/overuse_frame_detector_unittest.cc
+++ b/webrtc/video/overuse_frame_detector_unittest.cc
@@ -53,7 +53,7 @@
 class OveruseFrameDetectorTest : public ::testing::Test,
                                  public CpuOveruseMetricsObserver {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     clock_.reset(new SimulatedClock(1234));
     observer_.reset(new MockCpuOveruseObserver());
     options_.min_process_count = 0;
diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc
index 5df2425..53cb72d 100644
--- a/webrtc/video/video_send_stream_tests.cc
+++ b/webrtc/video/video_send_stream_tests.cc
@@ -708,7 +708,7 @@
       }
     }
 
-    virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) {
+    void EncodedFrameCallback(const EncodedFrame& encoded_frame) override {
       // Increase frame size for next encoded frame, in the context of the
       // encoder thread.
       if (!use_fec_ &&
@@ -999,8 +999,8 @@
 
     size_t GetNumVideoStreams() const override { return 3; }
 
-    virtual void OnFrameGeneratorCapturerCreated(
-        test::FrameGeneratorCapturer* frame_generator_capturer) {
+    void OnFrameGeneratorCapturerCreated(
+        test::FrameGeneratorCapturer* frame_generator_capturer) override {
       rtc::CritScope lock(&crit_);
       capturer_ = frame_generator_capturer;
     }
@@ -1040,7 +1040,7 @@
     }
 
    private:
-    virtual Action OnSendRtp(const uint8_t* packet, size_t length) {
+    Action OnSendRtp(const uint8_t* packet, size_t length) override {
       if (RtpHeaderParser::IsRtcp(packet, length))
         return DROP_PACKET;
 
diff --git a/webrtc/video/vie_channel.h b/webrtc/video/vie_channel.h
index 0411857..92adc4e 100644
--- a/webrtc/video/vie_channel.h
+++ b/webrtc/video/vie_channel.h
@@ -81,11 +81,10 @@
   CallStatsObserver* GetStatsObserver();
 
   // Implements VCMReceiveCallback.
-  virtual int32_t FrameToRender(VideoFrame& video_frame);  // NOLINT
+  int32_t FrameToRender(VideoFrame& video_frame) override;  // NOLINT
 
   // Implements VCMReceiveCallback.
-  virtual int32_t ReceivedDecodedReferenceFrame(
-      const uint64_t picture_id);
+  int32_t ReceivedDecodedReferenceFrame(const uint64_t picture_id) override;
 
   // Implements VCMReceiveCallback.
   void OnIncomingPayloadType(int payload_type) override;
@@ -97,20 +96,20 @@
   void OnFrameCountsUpdated(const FrameCounts& frame_counts) override;
 
   // Implements VCMDecoderTimingCallback.
-  virtual void OnDecoderTiming(int decode_ms,
-                               int max_decode_ms,
-                               int current_delay_ms,
-                               int target_delay_ms,
-                               int jitter_buffer_ms,
-                               int min_playout_delay_ms,
-                               int render_delay_ms);
+  void OnDecoderTiming(int decode_ms,
+                       int max_decode_ms,
+                       int current_delay_ms,
+                       int target_delay_ms,
+                       int jitter_buffer_ms,
+                       int min_playout_delay_ms,
+                       int render_delay_ms) override;
 
   // Implements FrameTypeCallback.
-  virtual int32_t RequestKeyFrame();
+  int32_t RequestKeyFrame() override;
 
   // Implements FrameTypeCallback.
-  virtual int32_t SliceLossIndicationRequest(
-      const uint64_t picture_id);
+  int32_t SliceLossIndicationRequest(
+      const uint64_t picture_id) override;
 
   // Implements VideoPacketRequestCallback.
   int32_t ResendPackets(const uint16_t* sequence_numbers,