@1.2::IServiceManager: listManifestByInterface

This API lists VINTF manifest HALs (those that are expected to be on
the device even if they are not currently running).

This API is being added for a couple of reasons:
- libvintf is not in the VNDK. This new API will allow vendors to read
  the vintf manifest and get the HALs which are expected to be on the
  device.
- more and more HALs are using dynamic lifecycles which means an API
  like this is increasingly useful.
- having an easy API like this helps ensure that vintf things are
  easier to get correct since users of this API will automatically
  get the correct configuration.

There are a couple of possible expected usages of this API:

    # running HALs
    R = listByInterface(IFoo::descriptor)
    # VINTF Manifest HALs
    M = listManfiestByInterface(IFoo::descriptor)

    # Lazy HALs that are not started
    ... = M - R

    # Getting all HALs on the device if some are lazy
    for i in M:
        ... = IFoo::getService(i)

Change-Id: I279a9048f27dac9f7ee6d3ea57d5842d64cadb3b
Fixes: 76108617
Bug: 66921961
Test: hidl_test
diff --git a/transport/manager/1.2/IServiceManager.hal b/transport/manager/1.2/IServiceManager.hal
index b4c990a..e1629d6 100644
--- a/transport/manager/1.2/IServiceManager.hal
+++ b/transport/manager/1.2/IServiceManager.hal
@@ -21,10 +21,6 @@
 import IClientCallback;
 
 interface IServiceManager extends @1.1::IServiceManager {
-    // TODO(b/66921961): additional functionality for the next release:
-    // - Method to list interfaces in the manifest (for b/76108617, since if they are
-    //     lazy, they will no longer show up in listByInterface)
-
     /**
      * Adds a callback that must be called when the specified server has no clients.
      *
@@ -65,4 +61,16 @@
      * @return success Whether or not the service was registered.
      */
     addWithChain(string name, interface service, vec<string> chain) generates (bool success);
+
+    /**
+     * List all instances of a particular service from the manifest. Must be sorted. These HALs
+     * may not be started if they are lazy.
+     *
+     * See also @1.0::IServiceManager's listByInterface function.
+     *
+     * @param fqName         Fully-qualified interface name.
+     *
+     * @return instanceNames List of instance names running the particular service.
+     */
+    listManifestByInterface(string fqName) generates (vec<string> instanceNames);
 };