Updated metrics logging IDrm implementation

Added cdm_err, oem_err and error_context values in
reportMediaDrmErrored API

Bug: 260066511

Test: gts-tradefed run gts --abi arm64-v8a -m GtsMediaTestCases
Test: atest CtsMediaDrmFrameworkTestCases
Change-Id: I03b6d55622acb604fcef4462f03e71a0a7bcd736
diff --git a/drm/libmediadrm/DrmMetricsLogger.cpp b/drm/libmediadrm/DrmMetricsLogger.cpp
index bcdfadf..9c737a0 100644
--- a/drm/libmediadrm/DrmMetricsLogger.cpp
+++ b/drm/libmediadrm/DrmMetricsLogger.cpp
@@ -458,7 +458,7 @@
     mediametrics_delete(handle);
 }
 
-void DrmMetricsLogger::reportMediaDrmSessionOpened(std::vector<uint8_t> sessionId) const {
+void DrmMetricsLogger::reportMediaDrmSessionOpened(const std::vector<uint8_t>& sessionId) const {
     mediametrics_handle_t handle(mediametrics_create("mediadrm.session_opened"));
     mediametrics_setInt64(handle, "obj_nonce_msb", mObjNonceMsb);
     mediametrics_setInt64(handle, "obj_nonce_lsb", mObjNonceLsb);
@@ -475,8 +475,8 @@
     mediametrics_delete(handle);
 }
 
-void DrmMetricsLogger::reportMediaDrmErrored(DrmStatus error_code, const char* api,
-                                             std::vector<uint8_t> sessionId) const {
+void DrmMetricsLogger::reportMediaDrmErrored(const DrmStatus& error_code, const char* api,
+                                             const std::vector<uint8_t>& sessionId) const {
     mediametrics_handle_t handle(mediametrics_create("mediadrm.errored"));
     mediametrics_setInt64(handle, "obj_nonce_msb", mObjNonceMsb);
     mediametrics_setInt64(handle, "obj_nonce_lsb", mObjNonceLsb);
@@ -491,6 +491,9 @@
     mediametrics_setInt64(handle, "uuid_msb", be64toh(mUuid[0]));
     mediametrics_setInt64(handle, "uuid_lsb", be64toh(mUuid[1]));
     mediametrics_setInt32(handle, "error_code", error_code);
+    mediametrics_setInt32(handle, "cdm_err", error_code.getCdmErr());
+    mediametrics_setInt32(handle, "oem_err", error_code.getOemErr());
+    mediametrics_setInt32(handle, "error_context", error_code.getContext());
     mediametrics_setCString(handle, "api", api);
     mediametrics_setInt32(handle, "frontend", mFrontend);
     mediametrics_selfRecord(handle);
diff --git a/drm/libmediadrm/include/mediadrm/DrmMetricsLogger.h b/drm/libmediadrm/include/mediadrm/DrmMetricsLogger.h
index 638fb35..b618314 100644
--- a/drm/libmediadrm/include/mediadrm/DrmMetricsLogger.h
+++ b/drm/libmediadrm/include/mediadrm/DrmMetricsLogger.h
@@ -144,10 +144,11 @@
 
     void reportMediaDrmCreated() const;
 
-    void reportMediaDrmSessionOpened(std::vector<uint8_t> sessionId) const;
+    void reportMediaDrmSessionOpened(const std::vector<uint8_t>& sessionId) const;
 
-    void reportMediaDrmErrored(DrmStatus error_code, const char* api,
-                               std::vector<uint8_t> sessionId = std::vector<uint8_t>()) const;
+    void reportMediaDrmErrored(
+            const DrmStatus& error_code, const char* api,
+            const std::vector<uint8_t>& sessionId = std::vector<uint8_t>()) const;
 
     DrmStatus checkGetRandom(int64_t* nonce, const char* api);