Allow multiple hal entries with the same name.

Also remove "default" from HalManifest::getInstances.

Bug: 36570950 VINTF: should not assume "default" service names
Bug: 37294247 VINTF: allow multiple entries in <manifest> and
<compatibility-matrix> to have the same name

Test: libvintf_test

Change-Id: I9c288ef2a530db800220a303ca7ca39a7ea5a3df
diff --git a/test/main.cpp b/test/main.cpp
index e82cab1..e6517b1 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -68,10 +68,10 @@
     void setAvb(CompatibilityMatrix &cm, Version &&avbVersion) {
         cm.framework.mAvbMetaVersion = avbVersion;
     }
-    const ManifestHal *getHal(HalManifest &vm, const std::string &name) {
-        return vm.getHal(name);
+    const ManifestHal *getAnyHal(HalManifest &vm, const std::string &name) {
+        return vm.getAnyHal(name);
     }
-    ConstMapValueIterable<std::string, ManifestHal> getHals(HalManifest &vm) {
+    ConstMultiMapValueIterable<std::string, ManifestHal> getHals(HalManifest &vm) {
         return vm.getHals();
     }
     bool isValid(const ManifestHal &mh) {
@@ -162,6 +162,12 @@
     EXPECT_EQ(v, v2);
 }
 
+TEST_F(LibVintfTest, GetTransport) {
+    HalManifest vm = testDeviceManifest();
+    EXPECT_EQ(Transport::HWBINDER, vm.getTransport("android.hardware.camera",
+            {2, 0}, "ICamera", "default"));
+}
+
 TEST_F(LibVintfTest, HalManifestConverter) {
     HalManifest vm = testDeviceManifest();
     std::string xml = gHalManifestConverter(vm);
@@ -258,16 +264,16 @@
     EXPECT_EQ(vm.getInstances("android.hardware.camera", "IBetterCamera"),
             std::set<std::string>({"camera"}));
     EXPECT_EQ(vm.getInstances("android.hardware.camera", "INotExist"),
-            std::set<std::string>({"default"}));
+            std::set<std::string>({}));
     EXPECT_EQ(vm.getInstances("android.hardware.nfc", "INfc"),
             std::set<std::string>({"default"}));
 
     EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "ICamera", "default"));
     EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "ICamera", "legacy/0"));
     EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "IBetterCamera", "camera"));
-    EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "INotExist", "default"));
     EXPECT_TRUE(vm.hasInstance("android.hardware.nfc", "INfc", "default"));
 
+    EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "INotExist", "default"));
     EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "ICamera", "notexist"));
     EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "IBetterCamera", "default"));
     EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "INotExist", "notexist"));
@@ -500,8 +506,8 @@
 
 TEST_F(LibVintfTest, HalManifestGetHal) {
     HalManifest vm = testDeviceManifest();
-    EXPECT_NE(getHal(vm, "android.hardware.camera"), nullptr);
-    EXPECT_EQ(getHal(vm, "non-existent"), nullptr);
+    EXPECT_NE(getAnyHal(vm, "android.hardware.camera"), nullptr);
+    EXPECT_EQ(getAnyHal(vm, "non-existent"), nullptr);
 
     std::vector<std::string> arr{"android.hardware.camera", "android.hardware.nfc"};
     size_t i = 0;