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

Commit cf3916a1 authored by Jeff Tinker's avatar Jeff Tinker
Browse files

Support binderized and passthrough vendor services

Previously only the vendor service name was used
to get the drm and crypto services, which would work
either for binderized or passthrough devices, but not
both. With this change, the vendor service name is
tried first, and failing that the default passthrough
service is used.

Change-Id: I05e9552da992e8d9dbba0f8dde485406262410a9
related-to-bug:34178477
Test: drm vts test
parent 7dfa9bdf
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ using std::vector;

using ContentConfiguration = ::DrmHalVTSVendorModule_V1::ContentConfiguration;
using Key = ::DrmHalVTSVendorModule_V1::ContentConfiguration::Key;
using VtsTestBase = ::testing::VtsHalHidlTargetTestBase;

#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk())
#define EXPECT_OK(ret) EXPECT_TRUE(ret.isOk())
@@ -104,14 +105,22 @@ class DrmHalVendorFactoryTest : public testing::TestWithParam<std::string> {
              GetParam().c_str());

        ASSERT_NE(vendorModule, nullptr);

        // First try the binderized service name provided by the vendor module.
        // If that fails, which it can on non-binderized devices, try the default
        // service.
        string name = vendorModule->getServiceName();
        drmFactory =
                ::testing::VtsHalHidlTargetTestBase::getService<IDrmFactory>(
                        name != "default" ? name : "drm");
        drmFactory = VtsTestBase::getService<IDrmFactory>(name);
        if (drmFactory == nullptr) {
            drmFactory = VtsTestBase::getService<IDrmFactory>("drm");
        }
        ASSERT_NE(drmFactory, nullptr);
        cryptoFactory =
                ::testing::VtsHalHidlTargetTestBase::getService<ICryptoFactory>(
                        name != "default" ? name : "crypto");

        // Dot the same for the crypto factory
        cryptoFactory = VtsTestBase::getService<ICryptoFactory>(name);
        if (cryptoFactory == nullptr) {
            VtsTestBase::getService<ICryptoFactory>("crypto");
        }
        ASSERT_NE(cryptoFactory, nullptr);
    }