// // Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine License // Agreement. // #ifndef WV_DRM_FACTORY_H_ #define WV_DRM_FACTORY_H_ #include "HidlTypes.h" #include "WVGenericCryptoInterface.h" #include "WVTypes.h" namespace wvdrm { namespace hardware { namespace drm { namespace V1_4 { namespace widevine { using ::android::hardware::hidl_handle; using ::android::hardware::hidl_vec; struct WVDrmFactory : public ::drm::V1_4::IDrmFactory { WVDrmFactory() {} virtual ~WVDrmFactory() {} Return isCryptoSchemeSupported( const hidl_array& uuid) override; Return isCryptoSchemeSupported_1_2(const hidl_array& uuid, const hidl_string& mimeType, SecurityLevel level) override; Return isContentTypeSupported(const hidl_string& mimeType) override; Return createPlugin(const hidl_array& uuid, const hidl_string& appPackageName, createPlugin_cb _hidl_cb) override; Return getSupportedCryptoSchemes( getSupportedCryptoSchemes_cb _hidl_cb) override; Return debug(const hidl_handle& fd, const hidl_vec& args); private: WVDRM_DISALLOW_COPY_AND_ASSIGN(WVDrmFactory); static WVGenericCryptoInterface sOemCryptoInterface; static bool areSpoidsEnabled(); static bool isBlankAppPackageNameAllowed(); static int32_t firstApiLevel(); static std::string stringToHex(const std::string& input); static void printCdmMetrics(FILE* out); static void printCdmProperties(FILE* out); friend class WVDrmFactoryTestPeer; }; extern "C" IDrmFactory* HIDL_FETCH_IDrmFactory(const char* name); } // namespace widevine } // namespace V1_4 } // namespace drm } // namespace hardware } // namespace wvdrm #endif // WV_DRM_FACTORY_H_