diff --git a/tools/gn/header_checker.cc b/tools/gn/header_checker.cc
index 2729653..19a07a3 100644
--- a/tools/gn/header_checker.cc
+++ b/tools/gn/header_checker.cc
@@ -120,7 +120,7 @@
 
 HeaderChecker::HeaderChecker(const BuildSettings* build_settings,
                              const std::vector<const Target*>& targets)
-    : build_settings_(build_settings), task_count_cv_(&lock_) {
+    : build_settings_(build_settings), lock_(), task_count_cv_() {
   for (auto* target : targets)
     AddTargetToFileMap(target, &file_map_);
 }
@@ -174,22 +174,22 @@
   }
 
   // Wait for all tasks posted by this method to complete.
-  base::AutoLock auto_lock(lock_);
+  std::unique_lock<std::mutex> auto_lock(lock_);
   while (!task_count_.IsZero())
-    task_count_cv_.Wait();
+    task_count_cv_.wait(auto_lock);
 }
 
 void HeaderChecker::DoWork(const Target* target, const SourceFile& file) {
   Err err;
   if (!CheckFile(target, file, &err)) {
-    base::AutoLock lock(lock_);
+    std::lock_guard<std::mutex> lock(lock_);
     errors_.push_back(err);
   }
 
   if (!task_count_.Decrement()) {
     // Signal |task_count_cv_| when |task_count_| becomes zero.
-    base::AutoLock auto_lock(lock_);
-    task_count_cv_.Signal();
+    std::unique_lock<std::mutex> auto_lock(lock_);
+    task_count_cv_.notify_one();
   }
 }
 
diff --git a/tools/gn/header_checker.h b/tools/gn/header_checker.h
index 8b2d504..9fde97c 100644
--- a/tools/gn/header_checker.h
+++ b/tools/gn/header_checker.h
@@ -5,7 +5,9 @@
 #ifndef TOOLS_GN_HEADER_CHECKER_H_
 #define TOOLS_GN_HEADER_CHECKER_H_
 
+#include <condition_variable>
 #include <map>
+#include <mutex>
 #include <vector>
 
 #include "base/atomic_ref_count.h"
@@ -13,8 +15,6 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/strings/string_piece.h"
-#include "base/synchronization/condition_variable.h"
-#include "base/synchronization/lock.h"
 #include "tools/gn/err.h"
 #include "tools/gn/source_dir.h"
 
@@ -182,12 +182,12 @@
   //
   // These are mutable during runtime and require locking.
 
-  base::Lock lock_;
+  std::mutex lock_;
 
   std::vector<Err> errors_;
 
   // Signaled when |task_count_| becomes zero.
-  base::ConditionVariable task_count_cv_;
+  std::condition_variable task_count_cv_;
 
   DISALLOW_COPY_AND_ASSIGN(HeaderChecker);
 };
