Extend DnsTlsServer to store validation state

This change also fixes a bug in PrivateDnsConfiguration which DoT
servers not valid for the network might somehow be counted as
validated servers. For instance, if a validation for DoT server
finishes after the server is removed, the server is mistakenly
deemed as a validated server.

Bug: 79727473
Test: cd packages/modules/DnsResolver && atest
Change-Id: Idee1f34f59dce1451b7b3e87fd20e6795af883ba
diff --git a/resolv_tls_unit_test.cpp b/resolv_tls_unit_test.cpp
index 78f98cb..919ff6f 100644
--- a/resolv_tls_unit_test.cpp
+++ b/resolv_tls_unit_test.cpp
@@ -800,6 +800,18 @@
     EXPECT_FALSE(s2 == s1);
 }
 
+void checkEqual(const DnsTlsServer& s1, const DnsTlsServer& s2) {
+    EXPECT_TRUE(s1 == s1);
+    EXPECT_TRUE(s2 == s2);
+    EXPECT_TRUE(isAddressEqual(s1, s1));
+    EXPECT_TRUE(isAddressEqual(s2, s2));
+
+    EXPECT_FALSE(s1 < s2);
+    EXPECT_FALSE(s2 < s1);
+    EXPECT_TRUE(s1 == s2);
+    EXPECT_TRUE(s2 == s1);
+}
+
 class ServerTest : public BaseTest {};
 
 TEST_F(ServerTest, IPv4) {
@@ -873,6 +885,18 @@
     EXPECT_TRUE(s2.wasExplicitlyConfigured());
 }
 
+TEST_F(ServerTest, State) {
+    DnsTlsServer s1(V4ADDR1), s2(V4ADDR1);
+    checkEqual(s1, s2);
+    s1.setValidationState(Validation::success);
+    checkEqual(s1, s2);
+    s2.setValidationState(Validation::fail);
+    checkEqual(s1, s2);
+
+    EXPECT_EQ(s1.validationState(), Validation::success);
+    EXPECT_EQ(s2.validationState(), Validation::fail);
+}
+
 TEST(QueryMapTest, Basic) {
     DnsTlsQueryMap map;