Disable abseil hash checking in Chromium

This change makes VerifyTypeImplementsAbslHashCorrectly a nop when
compiling in Chromium, because we aren't allowed to use abseil's
hash_testing.h due to component build + DEPS issues.  The unittests will
still work the same outside of Chromium, and in Chromium, everything
other than the hash checking is the same.

Bug: 1159046
Change-Id: I8997bbf2fb080a6ef1b5b475f239d229204b258c
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2691326
Reviewed-by: Ryan Keane <rwkeane@google.com>
Commit-Queue: Brandon Tolsch <btolsch@chromium.org>
diff --git a/discovery/BUILD.gn b/discovery/BUILD.gn
index 2f5ff33..11598c8 100644
--- a/discovery/BUILD.gn
+++ b/discovery/BUILD.gn
@@ -120,14 +120,24 @@
   sources = [
     "common/testing/mock_reporting_client.h",
     "dnssd/testing/fake_dns_record_factory.cc",
+    "mdns/testing/hash_test_util.h",
     "mdns/testing/mdns_test_util.cc",
     "mdns/testing/mdns_test_util.h",
   ]
 
+  defines = []
+  if (build_with_chromium) {
+    sources += [ "mdns/testing/hash_test_util_nop.h" ]
+  } else {
+    defines += [ "HASH_TEST_UTIL_USE_ABSL" ]
+    sources += [ "mdns/testing/hash_test_util_abseil.h" ]
+  }
+
   public_deps = [
     ":mdns",
     "../third_party/abseil",
     "../third_party/googletest:gmock",
+    "../third_party/googletest:gtest",
   ]
 }
 
diff --git a/discovery/mdns/mdns_records_unittest.cc b/discovery/mdns/mdns_records_unittest.cc
index f30b884..4cb3460 100644
--- a/discovery/mdns/mdns_records_unittest.cc
+++ b/discovery/mdns/mdns_records_unittest.cc
@@ -9,9 +9,9 @@
 #include <utility>
 #include <vector>
 
-#include "absl/hash/hash_testing.h"
 #include "discovery/mdns/mdns_reader.h"
 #include "discovery/mdns/mdns_writer.h"
+#include "discovery/mdns/testing/hash_test_util.h"
 #include "discovery/mdns/testing/mdns_test_util.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
@@ -109,7 +109,7 @@
   EXPECT_FALSE(fourth < fifth);
   EXPECT_FALSE(fifth < fourth);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly(
       {first, second, third, fourth, fifth}));
 }
 
@@ -157,8 +157,7 @@
   EXPECT_EQ(rdata1, rdata2);
   EXPECT_NE(rdata1, rdata3);
 
-  EXPECT_TRUE(
-      absl::VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
 }
 
 TEST(MdnsRawRecordRdataTest, CopyAndMove) {
@@ -198,7 +197,7 @@
   EXPECT_NE(rdata1, rdata5);
   EXPECT_NE(rdata1, rdata6);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly(
       {rdata1, rdata2, rdata3, rdata4, rdata5, rdata6}));
 }
 
@@ -224,8 +223,7 @@
   EXPECT_EQ(rdata1, rdata2);
   EXPECT_NE(rdata1, rdata3);
 
-  EXPECT_TRUE(
-      absl::VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
 }
 
 TEST(MdnsARecordRdataTest, CopyAndMove) {
@@ -268,8 +266,7 @@
   EXPECT_EQ(rdata1, rdata2);
   EXPECT_NE(rdata1, rdata3);
 
-  EXPECT_TRUE(
-      absl::VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
 }
 
 TEST(MdnsAAAARecordRdataTest, CopyAndMove) {
@@ -297,8 +294,7 @@
   EXPECT_EQ(rdata1, rdata2);
   EXPECT_NE(rdata1, rdata3);
 
-  EXPECT_TRUE(
-      absl::VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3}));
 }
 
 TEST(MdnsPtrRecordRdataTest, CopyAndMove) {
@@ -325,8 +321,8 @@
   EXPECT_NE(rdata1, rdata3);
   EXPECT_NE(rdata1, rdata4);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
-      {rdata1, rdata2, rdata3, rdata4}));
+  EXPECT_TRUE(
+      VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3, rdata4}));
 }
 
 TEST(MdnsTxtRecordRdataTest, CopyAndMove) {
@@ -456,8 +452,8 @@
   EXPECT_NE(rdata1, rdata4);
   EXPECT_NE(rdata3, rdata4);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
-      {rdata1, rdata2, rdata3, rdata4}));
+  EXPECT_TRUE(
+      VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3, rdata4}));
 }
 
 TEST(MdnsNsecRecordRdataTest, CopyAndMove) {
@@ -507,8 +503,8 @@
   EXPECT_NE(rdata2, rdata4);
   EXPECT_NE(rdata3, rdata4);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
-      {rdata1, rdata2, rdata3, rdata4}));
+  EXPECT_TRUE(
+      VerifyTypeImplementsAbslHashCorrectly({rdata1, rdata2, rdata3, rdata4}));
 }
 
 TEST(MdnsOptRecordRdataTest, CopyAndMove) {
@@ -593,7 +589,7 @@
     }
   }
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly(
       {record1, record2, record3, record4, record5, record6, record7, record8,
        record9}));
 }
@@ -639,7 +635,7 @@
   EXPECT_NE(question1, question4);
   EXPECT_NE(question1, question5);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly(
       {question1, question2, question3, question4, question5}));
 }
 
@@ -767,7 +763,7 @@
   EXPECT_NE(message1, message7);
   EXPECT_NE(message1, message8);
 
-  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
+  EXPECT_TRUE(VerifyTypeImplementsAbslHashCorrectly(
       {message1, message2, message3, message4, message5, message6, message7,
        message8}));
 }
diff --git a/discovery/mdns/testing/hash_test_util.h b/discovery/mdns/testing/hash_test_util.h
new file mode 100644
index 0000000..1965534
--- /dev/null
+++ b/discovery/mdns/testing/hash_test_util.h
@@ -0,0 +1,14 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_H_
+#define DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_H_
+
+#if HASH_TEST_UTIL_USE_ABSL
+#include "discovery/mdns/testing/hash_test_util_abseil.h"
+#else
+#include "discovery/mdns/testing/hash_test_util_nop.h"
+#endif
+
+#endif  // DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_H_
diff --git a/discovery/mdns/testing/hash_test_util_abseil.h b/discovery/mdns/testing/hash_test_util_abseil.h
new file mode 100644
index 0000000..dead96a
--- /dev/null
+++ b/discovery/mdns/testing/hash_test_util_abseil.h
@@ -0,0 +1,25 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_ABSEIL_H_
+#define DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_ABSEIL_H_
+
+#include <utility>
+
+#include "absl/hash/hash_testing.h"
+#include "gtest/gtest.h"
+
+namespace openscreen {
+namespace discovery {
+
+template <int&..., typename T>
+testing::AssertionResult VerifyTypeImplementsAbslHashCorrectly(
+    std::initializer_list<T> values) {
+  absl::VerifyTypeImplementsAbslHashCorrectly(std::move(values));
+}
+
+}  // namespace discovery
+}  // namespace openscreen
+
+#endif  // DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_ABSEIL_H_
diff --git a/discovery/mdns/testing/hash_test_util_nop.h b/discovery/mdns/testing/hash_test_util_nop.h
new file mode 100644
index 0000000..97328f7
--- /dev/null
+++ b/discovery/mdns/testing/hash_test_util_nop.h
@@ -0,0 +1,22 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_NOP_H_
+#define DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_NOP_H_
+
+#include "gtest/gtest.h"
+
+namespace openscreen {
+namespace discovery {
+
+template <int&..., typename T>
+testing::AssertionResult VerifyTypeImplementsAbslHashCorrectly(
+    std::initializer_list<T> values) {
+  return testing::AssertionSuccess();
+}
+
+}  // namespace discovery
+}  // namespace openscreen
+
+#endif  // DISCOVERY_MDNS_TESTING_HASH_TEST_UTIL_NOP_H_