Revert "Implement the stop resolution with MdnsDiscoveryManager"
This reverts commit 6d77c41f2ae8d6fdfb6822c92e6989b3197f7b04.
Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?branch=aosp-master&target=aosp_cf_x86_64_phone-userdebug&lkgb=9678930&lkbb=9678975&fkbb=9678975, bug b/271400306
Change-Id: I8bfd2b8117ea401df7441116b983f5fe19f63d5d
BUG: 271400306
diff --git a/service-t/src/com/android/server/NsdService.java b/service-t/src/com/android/server/NsdService.java
index d5d50c0..4ad39e1 100644
--- a/service-t/src/com/android/server/NsdService.java
+++ b/service-t/src/com/android/server/NsdService.java
@@ -545,12 +545,6 @@
return new String(out.array(), 0, out.position(), utf8);
}
- private void stopDiscoveryManagerRequest(ClientRequest request, int clientId, int id,
- ClientInfo clientInfo) {
- clientInfo.unregisterMdnsListenerFromRequest(request);
- removeRequestMap(clientId, id, clientInfo);
- }
-
@Override
public boolean processMessage(Message msg) {
final ClientInfo clientInfo;
@@ -637,7 +631,11 @@
// point, so this needs to check the type of the original request to
// unregister instead of looking at the flag value.
if (request instanceof DiscoveryManagerRequest) {
- stopDiscoveryManagerRequest(request, clientId, id, clientInfo);
+ final MdnsListener listener =
+ ((DiscoveryManagerRequest) request).mListener;
+ mMdnsDiscoveryManager.unregisterListener(
+ listener.getListenedServiceType(), listener);
+ removeRequestMap(clientId, id, clientInfo);
clientInfo.onStopDiscoverySucceeded(clientId);
} else {
removeRequestMap(clientId, id, clientInfo);
@@ -805,22 +803,15 @@
break;
}
id = request.mGlobalId;
- // Note isMdnsDiscoveryManagerEnabled may have changed to false at this
- // point, so this needs to check the type of the original request to
- // unregister instead of looking at the flag value.
- if (request instanceof DiscoveryManagerRequest) {
- stopDiscoveryManagerRequest(request, clientId, id, clientInfo);
+ removeRequestMap(clientId, id, clientInfo);
+ if (stopResolveService(id)) {
clientInfo.onStopResolutionSucceeded(clientId);
} else {
- removeRequestMap(clientId, id, clientInfo);
- if (stopResolveService(id)) {
- clientInfo.onStopResolutionSucceeded(clientId);
- } else {
- clientInfo.onStopResolutionFailed(
- clientId, NsdManager.FAILURE_OPERATION_NOT_RUNNING);
- }
- clientInfo.mResolvedService = null;
+ clientInfo.onStopResolutionFailed(
+ clientId, NsdManager.FAILURE_OPERATION_NOT_RUNNING);
}
+ clientInfo.mResolvedService = null;
+ // TODO: Implement the stop resolution with MdnsDiscoveryManager.
break;
}
case NsdManager.REGISTER_SERVICE_CALLBACK:
@@ -1173,7 +1164,10 @@
Log.wtf(TAG, "non-DiscoveryManager request in DiscoveryManager event");
break;
}
- stopDiscoveryManagerRequest(request, clientId, transactionId, clientInfo);
+ final MdnsListener listener = ((DiscoveryManagerRequest) request).mListener;
+ mMdnsDiscoveryManager.unregisterListener(
+ listener.getListenedServiceType(), listener);
+ removeRequestMap(clientId, transactionId, clientInfo);
break;
}
default:
@@ -1700,13 +1694,6 @@
mIsPreSClient = true;
}
- private void unregisterMdnsListenerFromRequest(ClientRequest request) {
- final MdnsListener listener =
- ((DiscoveryManagerRequest) request).mListener;
- mMdnsDiscoveryManager.unregisterListener(
- listener.getListenedServiceType(), listener);
- }
-
// Remove any pending requests from the global map when we get rid of a client,
// and send cancellations to the daemon.
private void expungeAllRequests() {
@@ -1722,7 +1709,10 @@
}
if (request instanceof DiscoveryManagerRequest) {
- unregisterMdnsListenerFromRequest(request);
+ final MdnsListener listener =
+ ((DiscoveryManagerRequest) request).mListener;
+ mMdnsDiscoveryManager.unregisterListener(
+ listener.getListenedServiceType(), listener);
continue;
}
diff --git a/tests/unit/java/com/android/server/NsdServiceTest.java b/tests/unit/java/com/android/server/NsdServiceTest.java
index 43637f7..0680772 100644
--- a/tests/unit/java/com/android/server/NsdServiceTest.java
+++ b/tests/unit/java/com/android/server/NsdServiceTest.java
@@ -1150,37 +1150,6 @@
argThat(info -> matches(info, new NsdServiceInfo(regInfo.getServiceName(), null))));
}
- @Test
- public void testStopServiceResolutionWithMdnsDiscoveryManager() {
- setMdnsDiscoveryManagerEnabled();
-
- final NsdManager client = connectClient(mService);
- final ResolveListener resolveListener = mock(ResolveListener.class);
- final Network network = new Network(999);
- final String serviceType = "_nsd._service._tcp";
- final String constructedServiceType = "_nsd._sub._service._tcp.local";
- final ArgumentCaptor<MdnsServiceBrowserListener> listenerCaptor =
- ArgumentCaptor.forClass(MdnsServiceBrowserListener.class);
- final NsdServiceInfo request = new NsdServiceInfo(SERVICE_NAME, serviceType);
- request.setNetwork(network);
- client.resolveService(request, resolveListener);
- waitForIdle();
- verify(mSocketProvider).startMonitoringSockets();
- verify(mDiscoveryManager).registerListener(eq(constructedServiceType),
- listenerCaptor.capture(), argThat(options -> network.equals(options.getNetwork())));
-
- client.stopServiceResolution(resolveListener);
- waitForIdle();
-
- // Verify the listener has been unregistered.
- verify(mDiscoveryManager, timeout(TIMEOUT_MS))
- .unregisterListener(eq(constructedServiceType), eq(listenerCaptor.getValue()));
- verify(resolveListener, timeout(TIMEOUT_MS)).onResolutionStopped(argThat(ns ->
- request.getServiceName().equals(ns.getServiceName())
- && request.getServiceType().equals(ns.getServiceType())));
- verify(mSocketProvider, timeout(CLEANUP_DELAY_MS + TIMEOUT_MS)).stopMonitoringSockets();
- }
-
private void waitForIdle() {
HandlerUtils.waitForIdle(mHandler, TIMEOUT_MS);
}