Revert "checkUnusedHals: use hidl metadata"

Revert "Use HIDL metadata for deprecation check"

Revert submission 10745362-check_unused

Reason for revert: Droidcop: Potential culprit for Bug 152161259
Reverted Changes:
I92cd7ce1c:Use HIDL metadata for deprecation check
I2b9492eec:Fix check deprecation to use Hidl Metadata.
I6e40a49d5:Add no unused hals test
Ia352a979d:Delete unused GNSS@2.0 Thermal@2.0 checks
I1c0ef715b:checkUnusedHals: use hidl metadata
I44a5240e8:Check unused HALs on device with target FCM versio...
I5c5ec4891:Check unused HALs when system ext matrix exists.
I17894c025:Add libhidlmetadata_headers
I2c7cbf8f5:Drop GNSS1.1 and Thermal1.0

Change-Id: I554396de6bd12d62915e8a16b576b571d493772a
diff --git a/Android.bp b/Android.bp
index 12ab161..bfbd353 100644
--- a/Android.bp
+++ b/Android.bp
@@ -63,9 +63,6 @@
         "libtinyxml2",
         "libz",
     ],
-    header_libs: [
-        "libhidlmetadata_headers",
-    ],
     export_include_dirs: ["include", "."],
     local_include_dirs: ["include/vintf"],
 
@@ -73,9 +70,7 @@
         "libbase",
         "libhidl-gen-utils",
     ],
-    export_header_lib_headers: [
-        "libhidlmetadata_headers",
-    ],
+
     target: {
         host: {
             srcs: [
@@ -118,7 +113,6 @@
     static_libs: [
         "libbase",
         "libhidl-gen-utils",
-        "libhidlmetadata",
         "liblog",
         "libvintf",
         "libutils",
diff --git a/HalManifest.cpp b/HalManifest.cpp
index 9118773..bd0379a 100644
--- a/HalManifest.cpp
+++ b/HalManifest.cpp
@@ -227,44 +227,15 @@
     return ret;
 }
 
-std::set<std::string> HalManifest::checkUnusedHals(
-    const CompatibilityMatrix& mat, const std::vector<HidlInterfaceMetadata>& hidlMetadata) const {
-    std::multimap<std::string, std::string> childrenMap;
-    for (const auto& child : hidlMetadata) {
-        for (const auto& parent : child.inherited) {
-            childrenMap.emplace(parent, child.name);
-        }
-    }
-
+std::set<std::string> HalManifest::checkUnusedHals(const CompatibilityMatrix& mat) const {
     std::set<std::string> ret;
 
-    forEachInstance([&ret, &mat, &childrenMap](const auto& manifestInstance) {
-        if (mat.matchInstance(manifestInstance.format(), manifestInstance.package(),
-                              manifestInstance.version(), manifestInstance.interface(),
-                              manifestInstance.instance())) {
-            // manifestInstance exactly matches an instance in |mat|.
-            return true;
+    forEachInstance([&ret, &mat](const auto& manifestInstance) {
+        if (!mat.matchInstance(manifestInstance.format(), manifestInstance.package(),
+                               manifestInstance.version(), manifestInstance.interface(),
+                               manifestInstance.instance())) {
+            ret.insert(manifestInstance.description());
         }
-        // For HIDL instances, If foo@2.0 inherits from foo@1.0, manifest may contain both, but
-        // matrix may contain only 2.0 if 1.0 is considered deprecated. Hence, if manifestInstance
-        // is 1.0, check all its children in the matrix too.
-        // If there is at least one match, do not consider it unused.
-        if (manifestInstance.format() == HalFormat::HIDL) {
-            auto range =
-                childrenMap.equal_range(manifestInstance.getFqInstance().getFqName().string());
-            for (auto it = range.first; it != range.second; ++it) {
-                FQName fqName;
-                CHECK(fqName.setTo(it->second));
-                if (mat.matchInstance(manifestInstance.format(), fqName.package(),
-                                      fqName.getVersion(), fqName.name(),
-                                      manifestInstance.instance())) {
-                    return true;
-                }
-            }
-        }
-
-        // If no match is found, consider it unused.
-        ret.insert(manifestInstance.description());
         return true;
     });
 
diff --git a/VintfObject.cpp b/VintfObject.cpp
index 320f97f..4f47622 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -25,7 +25,6 @@
 #include <android-base/logging.h>
 #include <android-base/result.h>
 #include <android-base/strings.h>
-#include <hidl/metadata.h>
 
 #include "CompatibilityMatrix.h"
 #include "parse_string.h"
@@ -834,8 +833,7 @@
     return false;
 }
 
-android::base::Result<void> VintfObject::checkUnusedHals(
-    const std::vector<HidlInterfaceMetadata>& hidlMetadata) {
+android::base::Result<void> VintfObject::checkUnusedHals() {
     auto matrix = getFrameworkCompatibilityMatrix();
     if (matrix == nullptr) {
         return android::base::Error(-NAME_NOT_FOUND) << "Missing framework matrix.";
@@ -844,7 +842,7 @@
     if (manifest == nullptr) {
         return android::base::Error(-NAME_NOT_FOUND) << "Missing device manifest.";
     }
-    auto unused = manifest->checkUnusedHals(*matrix, hidlMetadata);
+    auto unused = manifest->checkUnusedHals(*matrix);
     if (!unused.empty()) {
         return android::base::Error()
                << "The following instances are in the device manifest but "
diff --git a/check_vintf.cpp b/check_vintf.cpp
index c2a20a1..f2a239a 100644
--- a/check_vintf.cpp
+++ b/check_vintf.cpp
@@ -26,7 +26,6 @@
 #include <android-base/parseint.h>
 #include <android-base/result.h>
 #include <android-base/strings.h>
-#include <hidl/metadata.h>
 #include <utils/Errors.h>
 #include <vintf/KernelConfigParser.h>
 #include <vintf/VintfObject.h>
@@ -381,8 +380,7 @@
     }
     auto targetFcm = deviceManifest->level();
     if (*hasFcmExt || (targetFcm != Level::UNSPECIFIED && targetFcm >= Level::R)) {
-        auto hidlMetadata = HidlInterfaceMetadata::all();
-        return vintfObject->checkUnusedHals(hidlMetadata);
+        return vintfObject->checkUnusedHals();
     }
     LOG(INFO) << "Skip checking unused HALs.";
     return {};
diff --git a/include/vintf/HalManifest.h b/include/vintf/HalManifest.h
index 41298f0..e7b2a0e 100644
--- a/include/vintf/HalManifest.h
+++ b/include/vintf/HalManifest.h
@@ -24,8 +24,6 @@
 #include <string>
 #include <vector>
 
-#include <hidl/metadata.h>
-
 #include "CheckFlags.h"
 #include "FileSystem.h"
 #include "HalGroup.h"
@@ -177,9 +175,7 @@
     // required HAL.
     // That is, return empty list iff
     // (instance in manifest) => (instance in matrix).
-    std::set<std::string> checkUnusedHals(
-        const CompatibilityMatrix& mat,
-        const std::vector<HidlInterfaceMetadata>& hidlMetadata) const;
+    std::set<std::string> checkUnusedHals(const CompatibilityMatrix& mat) const;
 
     // Check that manifest has no entries.
     bool empty() const;
diff --git a/include/vintf/VintfObject.h b/include/vintf/VintfObject.h
index 2a40271..900a90a 100644
--- a/include/vintf/VintfObject.h
+++ b/include/vintf/VintfObject.h
@@ -21,7 +21,6 @@
 #include <optional>
 
 #include <android-base/result.h>
-#include <hidl/metadata.h>
 
 #include "CheckFlags.h"
 #include "CompatibilityMatrix.h"
@@ -214,8 +213,7 @@
      * - !result.ok() && result.error().code() != 0 if any error. Check
      *     result.error() for detailed message.
      */
-    android::base::Result<void> checkUnusedHals(
-        const std::vector<HidlInterfaceMetadata>& hidlMetadata);
+    android::base::Result<void> checkUnusedHals();
 
    private:
     std::unique_ptr<FileSystem> mFileSystem;
diff --git a/test/LibVintfTest.cpp b/test/LibVintfTest.cpp
index fac2306..c22220b 100644
--- a/test/LibVintfTest.cpp
+++ b/test/LibVintfTest.cpp
@@ -125,7 +125,7 @@
         return cm1->addAllXmlFilesAsOptional(cm2, e);
     }
     std::set<std::string> checkUnusedHals(const HalManifest& m, const CompatibilityMatrix& cm) {
-        return m.checkUnusedHals(cm, {});
+        return m.checkUnusedHals(cm);
     }
 
     std::map<std::string, HalInterface> testHalInterfaces() {