#include "chrome/test/chromedriver/devtools_events_logger.h"
#include "base/json/json_writer.h"
#include "chrome/test/chromedriver/chrome/devtools_client.h"
#include "chrome/test/chromedriver/chrome/devtools_client_impl.h"
DevToolsEventsLogger::DevToolsEventsLogger(Log* log, const base::Value& prefs)
: log_(log), prefs_(prefs) {}
inline DevToolsEventsLogger::~DevToolsEventsLogger() = default;
Status DevToolsEventsLogger::OnConnected(DevToolsClient* client) {
for (const auto& entry : prefs_->GetList())
events_.insert(entry.is_string() ? entry.GetString() : std::string());
return Status(kOk);
}
Status DevToolsEventsLogger::OnEvent(DevToolsClient* client,
const std::string& method,
const base::Value::Dict& params) {
auto it = events_.find(method);
if (it != events_.end()) {
base::Value::Dict log_message_dict;
log_message_dict.Set("method", method);
log_message_dict.Set("params", params.Clone());
log_->AddEntry(Log::kInfo, base::WriteJson(log_message_dict).value_or(""));
}
return Status(kOk);
}