Use generic MOCK_METHOD macros

These macros were introduced in 2018. See
https://github.com/google/googletest/commit/c5f08bf.

Mark mocks "override" where needed and move
"-Wno-inconsistent-missing-override" to gmock_all_test since
googletest/googlemock/test/gmock-function-mocker_test.cc doesn't always
specify "override" on mocks.

Change-Id: I16f81ebfe18679644f1a49de1092c956cb8cd0b7
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3079439
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
GitOrigin-RevId: 79d85979e6738ffa0f401813f1c9ef787419b9a5
diff --git a/client/prune_crash_reports_test.cc b/client/prune_crash_reports_test.cc
index 32f8388..333c37e 100644
--- a/client/prune_crash_reports_test.cc
+++ b/client/prune_crash_reports_test.cc
@@ -36,22 +36,39 @@
 class MockDatabase : public CrashReportDatabase {
  public:
   // CrashReportDatabase:
-  MOCK_METHOD0(GetSettings, Settings*());
-  MOCK_METHOD1(PrepareNewCrashReport,
-               OperationStatus(std::unique_ptr<NewReport>*));
-  MOCK_METHOD2(LookUpCrashReport, OperationStatus(const UUID&, Report*));
-  MOCK_METHOD1(GetPendingReports, OperationStatus(std::vector<Report>*));
-  MOCK_METHOD1(GetCompletedReports, OperationStatus(std::vector<Report>*));
-  MOCK_METHOD3(GetReportForUploading,
-               OperationStatus(const UUID&,
-                               std::unique_ptr<const UploadReport>*,
-                               bool report_metrics));
-  MOCK_METHOD3(RecordUploadAttempt,
-               OperationStatus(UploadReport*, bool, const std::string&));
-  MOCK_METHOD2(SkipReportUpload,
-               OperationStatus(const UUID&, Metrics::CrashSkippedReason));
-  MOCK_METHOD1(DeleteReport, OperationStatus(const UUID&));
-  MOCK_METHOD1(RequestUpload, OperationStatus(const UUID&));
+  MOCK_METHOD(Settings*, GetSettings, (), (override));
+  MOCK_METHOD(OperationStatus,
+              PrepareNewCrashReport,
+              (std::unique_ptr<NewReport>*),
+              (override));
+  MOCK_METHOD(OperationStatus,
+              LookUpCrashReport,
+              (const UUID&, Report*),
+              (override));
+  MOCK_METHOD(OperationStatus,
+              GetPendingReports,
+              (std::vector<Report>*),
+              (override));
+  MOCK_METHOD(OperationStatus,
+              GetCompletedReports,
+              (std::vector<Report>*),
+              (override));
+  MOCK_METHOD(OperationStatus,
+              GetReportForUploading,
+              (const UUID&,
+               std::unique_ptr<const UploadReport>*,
+               bool report_metrics),
+              (override));
+  MOCK_METHOD(OperationStatus,
+              RecordUploadAttempt,
+              (UploadReport*, bool, const std::string&),
+              (override));
+  MOCK_METHOD(OperationStatus,
+              SkipReportUpload,
+              (const UUID&, Metrics::CrashSkippedReason),
+              (override));
+  MOCK_METHOD(OperationStatus, DeleteReport, (const UUID&), (override));
+  MOCK_METHOD(OperationStatus, RequestUpload, (const UUID&), (override));
 
   // Google Mock doesn't support mocking methods with non-copyable types such as
   // unique_ptr.
@@ -158,6 +175,7 @@
     bool lhs_executed;
     bool rhs_executed;
   } kTests[] = {
+      // clang-format off
     {"false && false",
      BinaryPruneCondition::AND, false, false,
      false, true, false},
@@ -182,6 +200,7 @@
     {"true || true",
      BinaryPruneCondition::OR, true, true,
      true, true, false},
+      // clang-format on
   };
   for (const auto& test : kTests) {
     SCOPED_TRACE(test.name);
@@ -215,18 +234,18 @@
   }
   std::mt19937 urng(std::random_device{}());
   std::shuffle(reports.begin(), reports.end(), urng);
-  std::vector<CrashReportDatabase::Report> pending_reports(
-      reports.begin(), reports.begin() + 5);
+  std::vector<CrashReportDatabase::Report> pending_reports(reports.begin(),
+                                                           reports.begin() + 5);
   std::vector<CrashReportDatabase::Report> completed_reports(
       reports.begin() + 5, reports.end());
 
   MockDatabase db;
-  EXPECT_CALL(db, GetPendingReports(_)).WillOnce(DoAll(
-      SetArgPointee<0>(pending_reports),
-      Return(CrashReportDatabase::kNoError)));
-  EXPECT_CALL(db, GetCompletedReports(_)).WillOnce(DoAll(
-      SetArgPointee<0>(completed_reports),
-      Return(CrashReportDatabase::kNoError)));
+  EXPECT_CALL(db, GetPendingReports(_))
+      .WillOnce(DoAll(SetArgPointee<0>(pending_reports),
+                      Return(CrashReportDatabase::kNoError)));
+  EXPECT_CALL(db, GetCompletedReports(_))
+      .WillOnce(DoAll(SetArgPointee<0>(completed_reports),
+                      Return(CrashReportDatabase::kNoError)));
   for (size_t i = 0; i < reports.size(); ++i) {
     EXPECT_CALL(db, DeleteReport(TestUUID(i)))
         .WillOnce(Return(CrashReportDatabase::kNoError));
diff --git a/third_party/googletest/BUILD.gn b/third_party/googletest/BUILD.gn
index ee3485d..de1c84d 100644
--- a/third_party/googletest/BUILD.gn
+++ b/third_party/googletest/BUILD.gn
@@ -248,17 +248,6 @@
 
   config("googlemock_public_config") {
     include_dirs = [ "$googletest_dir/googlemock/include" ]
-
-    if (crashpad_is_clang) {
-      cflags_cc = [
-        # The MOCK_METHODn() macros do not specify “override”, which triggers
-        # this warning in users: “error: 'Method' overrides a member function
-        # but is not marked 'override'
-        # [-Werror,-Winconsistent-missing-override]”. Suppress these warnings
-        # until https://github.com/google/googletest/issues/533 is fixed.
-        "-Wno-inconsistent-missing-override",
-      ]
-    }
   }
 
   static_library("googlemock") {
@@ -331,6 +320,10 @@
 
     if (crashpad_is_clang) {
       cflags_cc = [
+        # googletest/googlemock/test/gmock-function-mocker_test.cc does not
+        # always use the override modifier with MOCK_METHOD.
+        "-Wno-inconsistent-missing-override",
+
         # For googletest/googlemock/test/gmock-matchers_test.cc’s
         # testing::googlemock_matchers_test::Unprintable::c_.
         "-Wno-unused-private-field",
@@ -341,7 +334,6 @@
       # TODO: Correct SDK in vc\tools\msvc\14.14.26428\include\functional
       cflags = [ "/wd4789" ]  # VAR of size N bytes will be overrun
     }
-
   }
 
   test("gmock_link_test") {
diff --git a/util/file/file_io_test.cc b/util/file/file_io_test.cc
index cea1855..fc61857 100644
--- a/util/file/file_io_test.cc
+++ b/util/file/file_io_test.cc
@@ -51,7 +51,7 @@
     return ReadExactly(reinterpret_cast<void*>(data), size, can_log);
   }
 
-  MOCK_METHOD3(ReadInt, FileOperationResult(uintptr_t, size_t, bool));
+  MOCK_METHOD(FileOperationResult, ReadInt, (uintptr_t, size_t, bool));
 
   // ReadExactlyInternal:
   FileOperationResult Read(void* data, size_t size, bool can_log) {
@@ -248,7 +248,7 @@
     return WriteAll(reinterpret_cast<const void*>(data), size);
   }
 
-  MOCK_METHOD2(WriteInt, FileOperationResult(uintptr_t, size_t));
+  MOCK_METHOD(FileOperationResult, WriteInt, (uintptr_t, size_t));
 
   // WriteAllInternal:
   FileOperationResult Write(const void* data, size_t size) {
diff --git a/util/file/file_reader_test.cc b/util/file/file_reader_test.cc
index ed6ee86..ea2dd35 100644
--- a/util/file/file_reader_test.cc
+++ b/util/file/file_reader_test.cc
@@ -42,7 +42,7 @@
     return ReadExactly(reinterpret_cast<void*>(data), size);
   }
 
-  MOCK_METHOD2(ReadInt, FileOperationResult(uintptr_t, size_t));
+  MOCK_METHOD(FileOperationResult, ReadInt, (uintptr_t, size_t));
 
   // FileReaderInterface:
   FileOperationResult Read(void* data, size_t size) override {
@@ -50,7 +50,7 @@
   }
 
   // FileSeekerInterface:
-  MOCK_METHOD2(Seek, FileOffset(FileOffset, int));
+  MOCK_METHOD(FileOffset, Seek, (FileOffset, int), (override));
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockFileReader);
diff --git a/util/mach/child_port_server_test.cc b/util/mach/child_port_server_test.cc
index 984d64a..451caa8 100644
--- a/util/mach/child_port_server_test.cc
+++ b/util/mach/child_port_server_test.cc
@@ -89,13 +89,14 @@
 
 class MockChildPortServerInterface : public ChildPortServer::Interface {
  public:
-  MOCK_METHOD6(HandleChildPortCheckIn,
-               kern_return_t(child_port_server_t server,
-                             const child_port_token_t token,
-                             mach_port_t port,
-                             mach_msg_type_name_t right_type,
-                             const mach_msg_trailer_t* trailer,
-                             bool* destroy_request));
+  MOCK_METHOD(kern_return_t,
+              HandleChildPortCheckIn,
+              (child_port_server_t server,
+               const child_port_token_t token,
+               mach_port_t port,
+               mach_msg_type_name_t right_type,
+               const mach_msg_trailer_t* trailer,
+               bool* destroy_request));
 };
 
 TEST(ChildPortServer, MockChildPortCheckIn) {
diff --git a/util/mach/exc_server_variants_test.cc b/util/mach/exc_server_variants_test.cc
index 287551b..836048b 100644
--- a/util/mach/exc_server_variants_test.cc
+++ b/util/mach/exc_server_variants_test.cc
@@ -371,8 +371,8 @@
 // are identical.
 using MachExceptionRaiseStateReply = ExceptionRaiseStateReply;
 
-struct __attribute__((packed,
-                      aligned(4))) MachExceptionRaiseStateIdentityRequest {
+struct __attribute__((packed, aligned(4)))
+MachExceptionRaiseStateIdentityRequest {
   MachExceptionRaiseStateIdentityRequest() {
     memset(this, 0xa5, sizeof(*this));
     Head.msgh_bits =
@@ -509,17 +509,18 @@
                                   trailer);
   }
 
-  MOCK_METHOD10(MockCatchMachException,
-                kern_return_t(exception_behavior_t behavior,
-                              exception_handler_t exception_port,
-                              thread_t thread,
-                              task_t task,
-                              exception_type_t exception,
-                              const ConstExceptionCodes* exception_codes,
-                              thread_state_flavor_t* flavor,
-                              const ConstThreadStateAndCount* old_thread_state,
-                              ThreadStateAndCount* new_thread_state,
-                              const mach_msg_trailer_t* trailer));
+  MOCK_METHOD(kern_return_t,
+              MockCatchMachException,
+              (exception_behavior_t behavior,
+               exception_handler_t exception_port,
+               thread_t thread,
+               task_t task,
+               exception_type_t exception,
+               const ConstExceptionCodes* exception_codes,
+               thread_state_flavor_t* flavor,
+               const ConstThreadStateAndCount* old_thread_state,
+               ThreadStateAndCount* new_thread_state,
+               const mach_msg_trailer_t* trailer));
 };
 
 // Matcher for ConstExceptionCodes, testing that it carries 2 codes matching
diff --git a/util/mach/notify_server_test.cc b/util/mach/notify_server_test.cc
index 5e05c6d..40a3826 100644
--- a/util/mach/notify_server_test.cc
+++ b/util/mach/notify_server_test.cc
@@ -165,30 +165,39 @@
  public:
   // NotifyServer::Interface:
 
-  MOCK_METHOD3(DoMachNotifyPortDeleted,
-               kern_return_t(notify_port_t notify,
-                             mach_port_name_t name,
-                             const mach_msg_trailer_t* trailer));
+  MOCK_METHOD(kern_return_t,
+              DoMachNotifyPortDeleted,
+              (notify_port_t notify,
+               mach_port_name_t name,
+               const mach_msg_trailer_t* trailer),
+              (override));
 
-  MOCK_METHOD4(DoMachNotifyPortDestroyed,
-               kern_return_t(notify_port_t notify,
-                             mach_port_t rights,
-                             const mach_msg_trailer_t* trailer,
-                             bool* destroy_request));
+  MOCK_METHOD(kern_return_t,
+              DoMachNotifyPortDestroyed,
+              (notify_port_t notify,
+               mach_port_t rights,
+               const mach_msg_trailer_t* trailer,
+               bool* destroy_request),
+              (override));
 
-  MOCK_METHOD3(DoMachNotifyNoSenders,
-               kern_return_t(notify_port_t notify,
-                             mach_port_mscount_t mscount,
-                             const mach_msg_trailer_t* trailer));
+  MOCK_METHOD(kern_return_t,
+              DoMachNotifyNoSenders,
+              (notify_port_t notify,
+               mach_port_mscount_t mscount,
+               const mach_msg_trailer_t* trailer),
+              (override));
 
-  MOCK_METHOD2(DoMachNotifySendOnce,
-               kern_return_t(notify_port_t notify,
-                             const mach_msg_trailer_t* trailer));
+  MOCK_METHOD(kern_return_t,
+              DoMachNotifySendOnce,
+              (notify_port_t notify, const mach_msg_trailer_t* trailer),
+              (override));
 
-  MOCK_METHOD3(DoMachNotifyDeadName,
-               kern_return_t(notify_port_t notify,
-                             mach_port_name_t name,
-                             const mach_msg_trailer_t* trailer));
+  MOCK_METHOD(kern_return_t,
+              DoMachNotifyDeadName,
+              (notify_port_t notify,
+               mach_port_name_t name,
+               const mach_msg_trailer_t* trailer),
+              (override));
 
  protected:
   NotifyServerTestBase() : testing::Test(), NotifyServer::Interface() {}
@@ -269,9 +278,7 @@
   }
 
   // testing::Test:
-  void TearDown() override {
-    server_port_.reset();
-  }
+  void TearDown() override { server_port_.reset(); }
 
  private:
   base::mac::ScopedMachReceiveRight server_port_;
@@ -520,7 +527,7 @@
                                          ResultOf(DeadNameRightRefCount, 2)),
                                    ResultOf(AuditPIDFromMachMessageTrailer, 0)))
       .WillOnce(
-           DoAll(WithArg<1>(Invoke(MachPortDeallocate)), Return(MIG_NO_REPLY)))
+          DoAll(WithArg<1>(Invoke(MachPortDeallocate)), Return(MIG_NO_REPLY)))
       .RetiresOnSaturation();
 
   receive_right.reset();