Save recent Widevine CDM logs

Bug: 162255728
Test: cdm unit tests
Change-Id: Ibc0daf374bedd8ac2a9a0515835e2775045962a7
This commit is contained in:
Robert Shih
2021-02-03 08:10:40 -08:00
parent 2b094e710e
commit 83ef9081d1
2 changed files with 53 additions and 0 deletions

View File

@@ -26,7 +26,9 @@
#include <stdarg.h>
#include <stdio.h>
#include <sys/time.h>
#include <mutex>
#include <string>
/*
@@ -38,8 +40,20 @@
namespace wvcdm {
namespace {
int64_t GetCurrentTimeMs() {
struct timeval tv{};
gettimeofday(&tv, NULL);
auto msec1 = static_cast<int64_t>(tv.tv_sec) * 1000;
auto msec2 = static_cast<int64_t>(tv.tv_usec) / 1000;
return msec1 + msec2;
}
}
LogPriority g_cutoff = LOG_VERBOSE;
LogBuffer g_logbuf;
void InitLogging() {}
void Log(const char* file, const char* function, int line, LogPriority level,
@@ -86,6 +100,22 @@ void Log(const char* file, const char* function, int line, LogPriority level,
}
__android_log_write(prio, LOG_TAG, buf);
if (level <= LOG_INFO) {
g_logbuf.addLog({GetCurrentTimeMs(), level, buf});
}
}
void LogBuffer::addLog(const LogMessage& log) {
std::unique_lock<std::mutex> lock(mutex_);
buffer_.push_back(log);
while (buffer_.size() > MAX_CAPACITY) {
buffer_.pop_front();
}
}
std::vector<LogMessage> LogBuffer::getLogs() {
std::unique_lock<std::mutex> lock(mutex_);
return {buffer_.begin(), buffer_.end()};
}
} // namespace wvcdm