Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d1dfa01 authored by Devin Moore's avatar Devin Moore
Browse files

Skip logging error when service name doesn't match vintf format

VINTF services are expected to have a specific format for their names.
We now build an AidlName for each service so we can check for them in
the manifest files. In these cases we don't want to produce a log when
the format doesn't match because these services are not all vintf
services.

Test: m
Bug: 355053763
Change-Id: I76a12985495892809d3319963a9c020d60fd4084
parent 7bbb4840
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -112,13 +112,15 @@ struct AidlName {
    std::string iface;
    std::string instance;

    static bool fill(const std::string& name, AidlName* aname) {
    static bool fill(const std::string& name, AidlName* aname, bool logError) {
        size_t firstSlash = name.find('/');
        size_t lastDot = name.rfind('.', firstSlash);
        if (firstSlash == std::string::npos || lastDot == std::string::npos) {
            if (logError) {
                ALOGE("VINTF HALs require names in the format type/instance (e.g. "
                      "some.package.foo.IFoo/default) but got: %s",
                      name.c_str());
            }
            return false;
        }
        aname->package = name.substr(0, lastDot);
@@ -151,7 +153,7 @@ static bool isVintfDeclared(const Access::CallingContext& ctx, const std::string
    }

    AidlName aname;
    if (!AidlName::fill(name, &aname)) return false;
    if (!AidlName::fill(name, &aname, true)) return false;

    bool found = forEachManifest([&](const ManifestWithDescription& mwd) {
        if (mwd.manifest->hasAidlInstance(aname.package, aname.iface, aname.instance)) {
@@ -209,7 +211,7 @@ static std::optional<std::string> getVintfUpdatableApex(const std::string& name)
    }

    AidlName aname;
    if (!AidlName::fill(name, &aname)) return std::nullopt;
    if (!AidlName::fill(name, &aname, true)) return std::nullopt;

    std::optional<std::string> updatableViaApex;

@@ -251,7 +253,7 @@ static std::vector<std::string> getVintfUpdatableNames(const std::string& apexNa

static std::optional<std::string> getVintfAccessorName(const std::string& name) {
    AidlName aname;
    if (!AidlName::fill(name, &aname)) return std::nullopt;
    if (!AidlName::fill(name, &aname, false)) return std::nullopt;

    std::optional<std::string> accessor;
    forEachManifest([&](const ManifestWithDescription& mwd) {
@@ -270,7 +272,7 @@ static std::optional<std::string> getVintfAccessorName(const std::string& name)

static std::optional<ConnectionInfo> getVintfConnectionInfo(const std::string& name) {
    AidlName aname;
    if (!AidlName::fill(name, &aname)) return std::nullopt;
    if (!AidlName::fill(name, &aname, true)) return std::nullopt;

    std::optional<std::string> ip;
    std::optional<uint64_t> port;