Enable loading of treble-based plugins
Test: gtests passing
bug: 34507158
Change-Id: I712dea8e211e83b36cb103d913405521d55123f5
diff --git a/drm/1.0/default/CryptoFactory.h b/drm/1.0/default/CryptoFactory.h
index 412b557..d774406 100644
--- a/drm/1.0/default/CryptoFactory.h
+++ b/drm/1.0/default/CryptoFactory.h
@@ -41,8 +41,7 @@
CryptoFactory();
virtual ~CryptoFactory() {}
- // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
-
+ // Methods from ::android::hardware::drmn::V1_0::ICryptoFactory follow.
Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
override;
@@ -51,7 +50,27 @@
override;
private:
- android::PluginLoader<android::CryptoFactory> loader;
+ template <typename L> Return<bool> isCryptoSchemeSupported(
+ const L& loader, const hidl_array<uint8_t, 16>& uuid) {
+ for (size_t i = 0; i < loader.factoryCount(); i++) {
+ if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ sp<ICryptoPlugin> createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
+ const hidl_vec<uint8_t>& initData);
+
+ sp<ICryptoPlugin> createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid,
+ const hidl_vec<uint8_t>& initData);
+
+ typedef android::PluginLoader<ICryptoFactory> PluginLoader;
+ PluginLoader trebleLoader;
+
+ typedef android::PluginLoader<android::CryptoFactory> LegacyLoader;
+ LegacyLoader legacyLoader;
CryptoFactory(const CryptoFactory &) = delete;
void operator=(const CryptoFactory &) = delete;