Display correct expiration time of service record

The expiration time for each service record is currently
incorrect. It displays the current timestamp instead of the
current time + the remaining TTL.

Before:
2024-06-27T15:37:45.292231 - [MdnsDiscoveryManager._nearby_\
presence._tcp.local-187/47] onServiceNameDiscovered: Name: \
NsdManagerTest7899, type: _nearby_presence._tcp.local, \
subtypes: , ip: [192.168.144.219], ipv6: [fe80::9c4c:52ff:fe61\
:3509], port: 12345, interfaceIndex: 47, network: 187, \
textStrings: [T=0, SAI=800, SAT=4000, SII=800], textEntries: \
[T=0, SAI=800, SAT=4000, SII=800], \
expirationTime: 2024-06-27T07:37:45Z

After:
2024-06-27T15:37:45.292231 - [MdnsDiscoveryManager._nearby_\
presence._tcp.local-187/47] onServiceNameDiscovered: Name: \
NsdManagerTest7899, type: _nearby_presence._tcp.local, \
subtypes: , ip: [192.168.144.219], ipv6: [fe80::9c4c:52ff:fe61:\
3509], port: 12345, interfaceIndex: 47, network: 187, \
textStrings: [T=0, SAI=800, SAT=4000, SII=800], textEntries: \
[T=0, SAI=800, SAT=4000, SII=800], \
expirationTime: 2024-06-27T07:39:45Z

Fix: 345129252
Test: atest FrameworksNetTests NsdManagerTest
Change-Id: Ib68a439d99e3eba38d639058737a307fd74478c3
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
index b3bdbe0..643430a 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
@@ -303,8 +303,8 @@
         serviceCache.unregisterServiceExpiredCallback(cacheKey);
     }
 
-    private static MdnsServiceInfo buildMdnsServiceInfoFromResponse(
-            @NonNull MdnsResponse response, @NonNull String[] serviceTypeLabels) {
+    private static MdnsServiceInfo buildMdnsServiceInfoFromResponse(@NonNull MdnsResponse response,
+            @NonNull String[] serviceTypeLabels, long elapsedRealtimeMillis) {
         String[] hostName = null;
         int port = 0;
         if (response.hasServiceRecord()) {
@@ -351,7 +351,7 @@
                 textEntries,
                 response.getInterfaceIndex(),
                 response.getNetwork(),
-                now.plusMillis(response.getMinRemainingTtl(now.toEpochMilli())));
+                now.plusMillis(response.getMinRemainingTtl(elapsedRealtimeMillis)));
     }
 
     private List<MdnsResponse> getExistingServices() {
@@ -380,8 +380,8 @@
         if (existingInfo == null) {
             for (MdnsResponse existingResponse : serviceCache.getCachedServices(cacheKey)) {
                 if (!responseMatchesOptions(existingResponse, searchOptions)) continue;
-                final MdnsServiceInfo info =
-                        buildMdnsServiceInfoFromResponse(existingResponse, serviceTypeLabels);
+                final MdnsServiceInfo info = buildMdnsServiceInfoFromResponse(
+                        existingResponse, serviceTypeLabels, clock.elapsedRealtime());
                 listener.onServiceNameDiscovered(info, true /* isServiceFromCache */);
                 listenerInfo.setServiceDiscovered(info.getServiceInstanceName());
                 if (existingResponse.isComplete()) {
@@ -561,7 +561,7 @@
             if (response.getServiceInstanceName() != null) {
                 listeners.valueAt(i).unsetServiceDiscovered(response.getServiceInstanceName());
                 final MdnsServiceInfo serviceInfo = buildMdnsServiceInfoFromResponse(
-                        response, serviceTypeLabels);
+                        response, serviceTypeLabels, clock.elapsedRealtime());
                 if (response.isComplete()) {
                     sharedLog.log(message + ". onServiceRemoved: " + serviceInfo);
                     listener.onServiceRemoved(serviceInfo);
@@ -605,8 +605,8 @@
                         + " %b, responseIsComplete: %b",
                 serviceInstanceName, newInCache, serviceBecomesComplete,
                 response.isComplete()));
-        MdnsServiceInfo serviceInfo =
-                buildMdnsServiceInfoFromResponse(response, serviceTypeLabels);
+        final MdnsServiceInfo serviceInfo = buildMdnsServiceInfoFromResponse(
+                response, serviceTypeLabels, clock.elapsedRealtime());
 
         for (int i = 0; i < listeners.size(); i++) {
             // If a service stops matching the options (currently can only happen if it loses a