From 9a33bb2b25aaa1ff0fc05b0b4d73f7c2af55ac92 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Tue, 14 Feb 2017 21:04:31 +0000 Subject: [PATCH] Revert "Enable loading of treble-based plugins" bug:35329920 Tests: Verfied playback on Ryu with Play Movies in combination with ag/1907708, ag/1909159 This reverts commit fbf365037014e81711611384aeee9469590210f6. Change-Id: I4a35a329b24e4cd9efcff4fe84e9d8901c714d57 --- drm/1.0/default/CryptoFactory.cpp | 85 +++++++++++------------------ drm/1.0/default/CryptoFactory.h | 25 +-------- drm/1.0/default/DrmFactory.cpp | 91 ++++++++++++++----------------- drm/1.0/default/DrmFactory.h | 33 +---------- 4 files changed, 79 insertions(+), 155 deletions(-) diff --git a/drm/1.0/default/CryptoFactory.cpp b/drm/1.0/default/CryptoFactory.cpp index 13cad67207..e46233de2e 100644 --- a/drm/1.0/default/CryptoFactory.cpp +++ b/drm/1.0/default/CryptoFactory.cpp @@ -15,11 +15,10 @@ */ #define LOG_TAG "android.hardware.drm@1.0-impl" -#include - #include "CryptoFactory.h" #include "CryptoPlugin.h" #include "TypeConvert.h" +#include namespace android { namespace hardware { @@ -27,63 +26,45 @@ namespace drm { namespace V1_0 { namespace implementation { -CryptoFactory::CryptoFactory() : - trebleLoader("/vendor/lib/hw", "createCryptoFactory"), - legacyLoader("/vendor/lib/mediadrm", "createCryptoFactory") { -} - -// Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow. -Return CryptoFactory::isCryptoSchemeSupported( - const hidl_array& uuid) { - return isCryptoSchemeSupported(trebleLoader, uuid) || - isCryptoSchemeSupported(legacyLoader, uuid); -} - -Return CryptoFactory::createPlugin(const hidl_array& uuid, - const hidl_vec& initData, createPlugin_cb _hidl_cb) { - sp plugin = createTreblePlugin(uuid, initData); - if (plugin == nullptr) { - plugin = createLegacyPlugin(uuid, initData); + CryptoFactory::CryptoFactory() : + loader("/vendor/lib/mediadrm", "createCryptoFactory") { } - _hidl_cb(plugin != nullptr ? Status::OK : Status::ERROR_DRM_CANNOT_HANDLE, plugin); - return Void(); -} -sp CryptoFactory::createTreblePlugin(const hidl_array& uuid, - const hidl_vec& initData) { - sp plugin; - for (size_t i = 0; i < trebleLoader.factoryCount(); i++) { - Return hResult = trebleLoader.getFactory(i)->createPlugin(uuid, initData, - [&](Status status, const sp& hPlugin) { - if (status == Status::OK) { - plugin = hPlugin; - } + // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow. + Return CryptoFactory::isCryptoSchemeSupported( + const hidl_array& uuid) { + for (size_t i = 0; i < loader.factoryCount(); i++) { + if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) { + return true; + } + } + return false; + } + + Return CryptoFactory::createPlugin(const hidl_array& uuid, + const hidl_vec& initData, createPlugin_cb _hidl_cb) { + for (size_t i = 0; i < loader.factoryCount(); i++) { + if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) { + android::CryptoPlugin *legacyPlugin = NULL; + status_t status = loader.getFactory(i)->createPlugin(uuid.data(), + initData.data(), initData.size(), &legacyPlugin); + CryptoPlugin *newPlugin = NULL; + if (legacyPlugin == NULL) { + ALOGE("Crypto legacy HAL: failed to create crypto plugin"); + } else { + newPlugin = new CryptoPlugin(legacyPlugin); } - ); - if (plugin != nullptr) { - return plugin; + _hidl_cb(toStatus(status), newPlugin); + return Void(); + } } + _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, NULL); + return Void(); } - return nullptr; -} -sp CryptoFactory::createLegacyPlugin(const hidl_array& uuid, - const hidl_vec& initData) { - android::CryptoPlugin *legacyPlugin = nullptr; - for (size_t i = 0; i < legacyLoader.factoryCount(); i++) { - legacyLoader.getFactory(i)->createPlugin(uuid.data(), - initData.data(), initData.size(), &legacyPlugin); - if (legacyPlugin) { - return new CryptoPlugin(legacyPlugin); - } + ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) { + return new CryptoFactory(); } - return nullptr; -} - - -ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) { - return new CryptoFactory(); -} } // namespace implementation } // namespace V1_0 diff --git a/drm/1.0/default/CryptoFactory.h b/drm/1.0/default/CryptoFactory.h index d774406efd..412b5576c5 100644 --- a/drm/1.0/default/CryptoFactory.h +++ b/drm/1.0/default/CryptoFactory.h @@ -41,7 +41,8 @@ struct CryptoFactory : public ICryptoFactory { CryptoFactory(); virtual ~CryptoFactory() {} - // Methods from ::android::hardware::drmn::V1_0::ICryptoFactory follow. + // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow. + Return isCryptoSchemeSupported(const hidl_array& uuid) override; @@ -50,27 +51,7 @@ struct CryptoFactory : public ICryptoFactory { override; private: - template Return isCryptoSchemeSupported( - const L& loader, const hidl_array& uuid) { - for (size_t i = 0; i < loader.factoryCount(); i++) { - if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) { - return true; - } - } - return false; - } - - sp createTreblePlugin(const hidl_array& uuid, - const hidl_vec& initData); - - sp createLegacyPlugin(const hidl_array& uuid, - const hidl_vec& initData); - - typedef android::PluginLoader PluginLoader; - PluginLoader trebleLoader; - - typedef android::PluginLoader LegacyLoader; - LegacyLoader legacyLoader; + android::PluginLoader loader; CryptoFactory(const CryptoFactory &) = delete; void operator=(const CryptoFactory &) = delete; diff --git a/drm/1.0/default/DrmFactory.cpp b/drm/1.0/default/DrmFactory.cpp index c98c1daa0a..92f54f1acb 100644 --- a/drm/1.0/default/DrmFactory.cpp +++ b/drm/1.0/default/DrmFactory.cpp @@ -15,11 +15,10 @@ */ #define LOG_TAG "android.hardware.drm@1.0-impl" -#include - #include "DrmFactory.h" #include "DrmPlugin.h" #include "TypeConvert.h" +#include namespace android { namespace hardware { @@ -27,66 +26,56 @@ namespace drm { namespace V1_0 { namespace implementation { -DrmFactory::DrmFactory() : - trebleLoader("/vendor/lib/hw", "createDrmFactory"), - legacyLoader("/vendor/lib/mediadrm", "createDrmFactory") { -} + DrmFactory::DrmFactory() : + loader("/vendor/lib/mediadrm", "createDrmFactory") { + } -// Methods from ::android::hardware::drm::V1_0::IDrmFactory follow. -Return DrmFactory::isCryptoSchemeSupported( - const hidl_array& uuid) { - return isCryptoSchemeSupported(trebleLoader, uuid) || - isCryptoSchemeSupported(legacyLoader, uuid); -} + // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow. + Return DrmFactory::isCryptoSchemeSupported ( + const hidl_array& uuid) { + for (size_t i = 0; i < loader.factoryCount(); i++) { + if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) { + return true; + } + } + return false; + } -Return DrmFactory::isContentTypeSupported ( - const hidl_string& mimeType) { - return isContentTypeSupported(trebleLoader, mimeType) || - isContentTypeSupported(legacyLoader, mimeType); -} + Return DrmFactory::isContentTypeSupported ( + const hidl_string& mimeType) { + for (size_t i = 0; i < loader.factoryCount(); i++) { + if (loader.getFactory(i)->isContentTypeSupported(String8(mimeType.c_str()))) { + return true; + } + } + return false; + } Return DrmFactory::createPlugin(const hidl_array& uuid, const hidl_string& appPackageName, createPlugin_cb _hidl_cb) { - sp plugin = createTreblePlugin(uuid, appPackageName); - if (plugin == nullptr) { - plugin = createLegacyPlugin(uuid); - } - _hidl_cb(plugin != nullptr ? Status::OK : Status::ERROR_DRM_CANNOT_HANDLE, plugin); - return Void(); -} -sp DrmFactory::createTreblePlugin(const hidl_array& uuid, - const hidl_string& appPackageName) { - sp plugin; - for (size_t i = 0; i < trebleLoader.factoryCount(); i++) { - Return hResult = trebleLoader.getFactory(i)->createPlugin(uuid, - appPackageName, [&](Status status, const sp& hPlugin) { - if (status == Status::OK) { - plugin = hPlugin; - } + for (size_t i = 0; i < loader.factoryCount(); i++) { + if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) { + android::DrmPlugin *legacyPlugin = NULL; + status_t status = loader.getFactory(i)->createDrmPlugin( + uuid.data(), &legacyPlugin); + DrmPlugin *newPlugin = NULL; + if (legacyPlugin == NULL) { + ALOGE("Drm legacy HAL: failed to create drm plugin"); + } else { + newPlugin = new DrmPlugin(legacyPlugin); } - ); - if (plugin != nullptr) { - return plugin; + _hidl_cb(toStatus(status), newPlugin); + return Void(); + } } + _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, NULL); + return Void(); } - return nullptr; -} -sp DrmFactory::createLegacyPlugin(const hidl_array& uuid) { - android::DrmPlugin *legacyPlugin = nullptr; - for (size_t i = 0; i < legacyLoader.factoryCount(); i++) { - legacyLoader.getFactory(i)->createDrmPlugin(uuid.data(), &legacyPlugin); - if (legacyPlugin) { - return new DrmPlugin(legacyPlugin); - } + IDrmFactory* HIDL_FETCH_IDrmFactory(const char* /* name */) { + return new DrmFactory(); } - return nullptr; -} - -IDrmFactory* HIDL_FETCH_IDrmFactory(const char* /* name */) { - return new DrmFactory(); -} } // namespace implementation } // namespace V1_0 diff --git a/drm/1.0/default/DrmFactory.h b/drm/1.0/default/DrmFactory.h index 2e71624ea0..a0088447f1 100644 --- a/drm/1.0/default/DrmFactory.h +++ b/drm/1.0/default/DrmFactory.h @@ -42,45 +42,18 @@ struct DrmFactory : public IDrmFactory { virtual ~DrmFactory() {} // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow. + Return isCryptoSchemeSupported(const hidl_array& uuid) override; - Return isContentTypeSupported(const hidl_string& mimeType) + Return isContentTypeSupported(const hidl_string &mimeType) override; Return createPlugin(const hidl_array& uuid, const hidl_string& appPackageName, createPlugin_cb _hidl_cb) override; private: - template Return isCryptoSchemeSupported( - const L& loader, const hidl_array& uuid) { - for (size_t i = 0; i < loader.factoryCount(); i++) { - if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) { - return true; - } - } - return false; - } - - template Return isContentTypeSupported( - const L& loader, const hidl_string& mimeType) { - for (size_t i = 0; i < loader.factoryCount(); i++) { - if (loader.getFactory(i)->isContentTypeSupported(S(mimeType))) { - return true; - } - } - return false; - } - - sp createTreblePlugin(const hidl_array& uuid, - const hidl_string& appPackageName); - sp createLegacyPlugin(const hidl_array& uuid); - - typedef android::PluginLoader PluginLoader; - PluginLoader trebleLoader; - - typedef android::PluginLoader LegacyLoader; - LegacyLoader legacyLoader; + android::PluginLoader loader; DrmFactory(const DrmFactory &) = delete; void operator=(const DrmFactory &) = delete;