Load vintf manifests from the correct location.

Hardware differentiation is based on ro.product.device, not
ro.product.model. The vendor value of this
(ro.boot.product.hardware.sku) is used instead of ro.product.model so
that the correct value is used for GSI builds. After this change, the
odm manifest can be loaded from
/odm/etc/manifest_${ro.boot.product.hardware.sku}.xml or
/odm/etc/manifest.xml. Note that these files must be loaded from under
etc so that symlinks can be created on devices without an odm partition
as part of b/70678783. Moving the vendor manifest to etc is covered in
b/36790901, but is not required for correctness in this case because
the GSI is only ever used on devices with a vendor image.

Test: vintf_object_test
Bug: 70685002
Change-Id: Ie8c195fc844166ff24a40080e711860951afbe2a
diff --git a/VintfObject.cpp b/VintfObject.cpp
index a49fc24..8dd08ef 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -79,11 +79,11 @@
     std::unique_lock<std::mutex> _lock(gDeviceManifestMutex);
 
 #ifdef LIBVINTF_TARGET
-    std::string productModel = android::base::GetProperty("ro.product.model", "");
+    std::string productModel = android::base::GetProperty("ro.boot.product.hardware.sku", "");
     if (!productModel.empty()) {
         auto product = Get(&gProductManifest, skipCache,
                            std::bind(&HalManifest::fetchAllInformation, _1,
-                                     "/odm/manifest_" + productModel + ".xml", _2));
+                                     "/odm/etc/manifest_" + productModel + ".xml", _2));
         if (product != nullptr) {
             return product;
         }
@@ -91,7 +91,7 @@
 #endif
 
     auto odm = Get(&gOdmManifest, skipCache,
-                   std::bind(&HalManifest::fetchAllInformation, _1, "/odm/manifest.xml", _2));
+                   std::bind(&HalManifest::fetchAllInformation, _1, "/odm/etc/manifest.xml", _2));
     if (odm != nullptr) {
         return odm;
     }