HalManifests can be merged.

assemble_vintf and VintfObject can now merge manifests
correctly (previously, only <hal>'s are merged).

Test: libvintf_test
Test: vintf_object_test
Fixes: 78943004
Change-Id: I5e2987e9c97e0b60e976fe4e0bb8833edf043a53
diff --git a/VintfObject.cpp b/VintfObject.cpp
index fbe4045..e66bcbe 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -215,7 +215,12 @@
         err = fetchOneHalManifest(directory + file, &fragmentManifest, error);
         if (err != OK) return err;
 
-        manifest->addAllHals(&fragmentManifest);
+        if (!manifest->addAll(&fragmentManifest, error)) {
+            if (error) {
+                error->insert(0, "Cannot add manifest fragment " + directory + file + ":");
+            }
+            return UNKNOWN_ERROR;
+        }
     }
 
     return OK;
@@ -250,7 +255,12 @@
 
     if (vendorStatus == OK) {
         if (odmStatus == OK) {
-            out->addAllHals(&odmManifest);
+            if (!out->addAll(&odmManifest, error)) {
+                if (error) {
+                    error->insert(0, "Cannot add ODM manifest :");
+                }
+                return UNKNOWN_ERROR;
+            }
         }
         return addDirectoryManifests(kOdmManifestFragmentDir, out, error);
     }