IDrm/ICrypto: implement getLogMessages
Bug: 162255728
Test: build
Change-Id: I68edcd04729a5721117e13a48304b842a61dfee5
diff --git a/drm/libmediadrm/interface/mediadrm/DrmUtils.h b/drm/libmediadrm/interface/mediadrm/DrmUtils.h
index de68a37..10b7207 100644
--- a/drm/libmediadrm/interface/mediadrm/DrmUtils.h
+++ b/drm/libmediadrm/interface/mediadrm/DrmUtils.h
@@ -19,12 +19,18 @@
#include <android/hardware/drm/1.0/ICryptoFactory.h>
#include <android/hardware/drm/1.0/IDrmFactory.h>
+#include <android/hardware/drm/1.4/IDrmPlugin.h>
#include <android/hardware/drm/1.4/types.h>
+#include <media/stagefright/MediaErrors.h>
#include <utils/Errors.h> // for status_t
+#include <utils/Vector.h>
#include <utils/StrongPointer.h>
#include <vector>
+
using namespace ::android::hardware::drm;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
namespace android {
@@ -107,6 +113,31 @@
return toStatusT_1_4(err);
}
+template<typename T, typename U>
+status_t GetLogMessages(const sp<U> &obj, Vector<::V1_4::LogMessage> &logs) {
+ sp<T> plugin = T::castFrom(obj);
+ if (plugin == NULL) {
+ return ERROR_UNSUPPORTED;
+ }
+
+ ::V1_4::Status err{};
+ ::V1_4::IDrmPlugin::getLogMessages_cb cb = [&](
+ ::V1_4::Status status,
+ hidl_vec<::V1_4::LogMessage> hLogs) {
+ if (::V1_4::Status::OK == status) {
+ err = status;
+ return;
+ }
+ logs.appendArray(hLogs.data(), hLogs.size());
+ };
+
+ Return<void> hResult = plugin->getLogMessages(cb);
+ if (!hResult.isOk()) {
+ return DEAD_OBJECT;
+ }
+ return toStatusT(err);
+}
+
} // namespace DrmUtils
} // namespace android
#endif // ANDROID_DRMUTILS_H
diff --git a/drm/libmediadrm/interface/mediadrm/ICrypto.h b/drm/libmediadrm/interface/mediadrm/ICrypto.h
index df980ae..2c4df60 100644
--- a/drm/libmediadrm/interface/mediadrm/ICrypto.h
+++ b/drm/libmediadrm/interface/mediadrm/ICrypto.h
@@ -32,6 +32,10 @@
struct SharedBuffer;
struct DestinationBuffer;
} // namespace V1_0
+
+namespace V1_4 {
+struct LogMessage;
+} // namespace V1_4
} // namespace drm
} // namespace hardware
} // namespace android
@@ -83,6 +87,8 @@
virtual int32_t setHeap(const sp<hardware::HidlMemory>& heap) = 0;
virtual void unsetHeap(int32_t seqNum) = 0;
+ virtual status_t getLogMessages(Vector<drm::V1_4::LogMessage> &logs) const = 0;
+
protected:
ICrypto() {}