diff --git a/download_action_unittest.cc b/download_action_unittest.cc
index 5825286..0bb0732 100644
--- a/download_action_unittest.cc
+++ b/download_action_unittest.cc
@@ -59,8 +59,8 @@
   ~DownloadActionTestProcessorDelegate() override {
     EXPECT_TRUE(processing_done_called_);
   }
-  virtual void ProcessingDone(const ActionProcessor* processor,
-                              ErrorCode code) {
+  void ProcessingDone(const ActionProcessor* processor,
+                      ErrorCode code) override {
     ASSERT_TRUE(loop_);
     g_main_loop_quit(loop_);
     vector<char> found_data;
@@ -74,9 +74,9 @@
     processing_done_called_ = true;
   }
 
-  virtual void ActionCompleted(ActionProcessor* processor,
-                               AbstractAction* action,
-                               ErrorCode code) {
+  void ActionCompleted(ActionProcessor* processor,
+                       AbstractAction* action,
+                       ErrorCode code) override {
     const string type = action->Type();
     if (type == DownloadAction::StaticType()) {
       EXPECT_EQ(expected_code_, code);
diff --git a/omaha_request_action_unittest.cc b/omaha_request_action_unittest.cc
index f358c39..5bf48de 100644
--- a/omaha_request_action_unittest.cc
+++ b/omaha_request_action_unittest.cc
@@ -225,15 +225,15 @@
         expected_code_(ErrorCode::kSuccess) {}
   ~OmahaRequestActionTestProcessorDelegate() override {
   }
-  virtual void ProcessingDone(const ActionProcessor* processor,
-                              ErrorCode code) {
+  void ProcessingDone(const ActionProcessor* processor,
+                      ErrorCode code) override {
     ASSERT_TRUE(loop_);
     g_main_loop_quit(loop_);
   }
 
-  virtual void ActionCompleted(ActionProcessor* processor,
-                               AbstractAction* action,
-                               ErrorCode code) {
+  void ActionCompleted(ActionProcessor* processor,
+                       AbstractAction* action,
+                       ErrorCode code) override {
     // make sure actions always succeed
     if (action->Type() == OmahaRequestAction::StaticType())
       EXPECT_EQ(expected_code_, code);
diff --git a/update_manager/fake_variable.h b/update_manager/fake_variable.h
index 5b9facc..9e51f7b 100644
--- a/update_manager/fake_variable.h
+++ b/update_manager/fake_variable.h
@@ -42,8 +42,8 @@
   // to the caller and the pointer is release from the FakeVariable. A second
   // call to GetValue() without reset() will return null and set the error
   // message.
-  virtual const T* GetValue(base::TimeDelta /* timeout */,
-                            std::string* errmsg) {
+  const T* GetValue(base::TimeDelta /* timeout */,
+                    std::string* errmsg) override {
     if (ptr_ == nullptr && errmsg != nullptr)
       *errmsg = this->GetName() + " is an empty FakeVariable";
     // Passes the pointer ownership to the caller.
diff --git a/update_manager/real_random_provider.cc b/update_manager/real_random_provider.cc
index add26e5..2aa8d57 100644
--- a/update_manager/real_random_provider.cc
+++ b/update_manager/real_random_provider.cc
@@ -37,8 +37,8 @@
   ~RandomSeedVariable() override {}
 
  protected:
-  virtual const uint64_t* GetValue(base::TimeDelta /* timeout */,
-                                   string* errmsg) {
+  const uint64_t* GetValue(base::TimeDelta /* timeout */,
+                           string* errmsg) override {
     uint64_t result;
     // Aliasing via char pointer abides by the C/C++ strict-aliasing rules.
     char* const buf = reinterpret_cast<char*>(&result);
diff --git a/update_manager/variable_unittest.cc b/update_manager/variable_unittest.cc
index 912d55c..642b5dd 100644
--- a/update_manager/variable_unittest.cc
+++ b/update_manager/variable_unittest.cc
@@ -28,8 +28,8 @@
   ~DefaultVariable() override {}
 
  protected:
-  virtual const T* GetValue(TimeDelta /* timeout */,
-                            string* /* errmsg */) {
+  const T* GetValue(TimeDelta /* timeout */,
+                    string* /* errmsg */) override {
     return new T();
   }
 
