Commit 18b8d9c4 authored by Ulan Degenbaev's avatar Ulan Degenbaev Committed by Commit Bot

Emit trace event on console error messages.

This is needed to implement a new metric that measures
health of Web Page Replay archives.

Bug: 880432

Change-Id: I8d3e7d83c9dc7b59ddc9953b5d4f0e1c5a707fcb
Reviewed-on: https://chromium-review.googlesource.com/1203957Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Reviewed-by: default avatarPavel Feldman <pfeldman@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589786}
parent 209dd4a8
...@@ -2652,8 +2652,8 @@ class ChromeLoggingCapabilityTest(ChromeDriverBaseTest): ...@@ -2652,8 +2652,8 @@ class ChromeLoggingCapabilityTest(ChromeDriverBaseTest):
self.assertTrue('params' in devtools_message) self.assertTrue('params' in devtools_message)
self.assertTrue(isinstance(devtools_message['params'], dict)) self.assertTrue(isinstance(devtools_message['params'], dict))
cat = devtools_message['params'].get('cat', '') cat = devtools_message['params'].get('cat', '')
if cat == 'blink.console': if (cat == 'blink.console' and
self.assertTrue(devtools_message['params']['name'] == 'foobar') devtools_message['params']['name'] == 'foobar'):
marked_timeline_events.append(devtools_message) marked_timeline_events.append(devtools_message)
self.assertEquals(2, len(marked_timeline_events)) self.assertEquals(2, len(marked_timeline_events))
self.assertEquals({'Network', 'Page', 'Tracing'}, self.assertEquals({'Network', 'Page', 'Tracing'},
......
...@@ -11,10 +11,60 @@ namespace blink { ...@@ -11,10 +11,60 @@ namespace blink {
static const unsigned kMaxConsoleMessageCount = 1000; static const unsigned kMaxConsoleMessageCount = 1000;
namespace {
const char* MessageSourceToString(MessageSource source) {
switch (source) {
case kXMLMessageSource:
return "XML";
case kJSMessageSource:
return "JS";
case kNetworkMessageSource:
return "Network";
case kConsoleAPIMessageSource:
return "ConsoleAPI";
case kStorageMessageSource:
return "Storage";
case kAppCacheMessageSource:
return "AppCache";
case kRenderingMessageSource:
return "Rendering";
case kSecurityMessageSource:
return "Security";
case kOtherMessageSource:
return "Other";
case kDeprecationMessageSource:
return "Deprecation";
case kWorkerMessageSource:
return "Worker";
case kViolationMessageSource:
return "Violation";
case kInterventionMessageSource:
return "Intervention";
case kRecommendationMessageSource:
return "Recommendation";
}
LOG(FATAL) << "Unreachable code.";
return nullptr;
}
void TraceConsoleMessageEvent(ConsoleMessage* message) {
// Change in this function requires adjustment of Catapult/Telemetry metric
// tracing/tracing/metrics/console_error_metric.html.
// See https://crbug.com/880432
if (message->Level() == kErrorMessageLevel) {
TRACE_EVENT_INSTANT1("blink.console", "ConsoleMessage::Error",
TRACE_EVENT_SCOPE_THREAD, "source",
MessageSourceToString(message->Source()));
}
}
} // anonymous namespace
ConsoleMessageStorage::ConsoleMessageStorage() : expired_count_(0) {} ConsoleMessageStorage::ConsoleMessageStorage() : expired_count_(0) {}
void ConsoleMessageStorage::AddConsoleMessage(ExecutionContext* context, void ConsoleMessageStorage::AddConsoleMessage(ExecutionContext* context,
ConsoleMessage* message) { ConsoleMessage* message) {
TraceConsoleMessageEvent(message);
probe::consoleMessageAdded(context, message); probe::consoleMessageAdded(context, message);
DCHECK(messages_.size() <= kMaxConsoleMessageCount); DCHECK(messages_.size() <= kMaxConsoleMessageCount);
if (messages_.size() == kMaxConsoleMessageCount) { if (messages_.size() == kMaxConsoleMessageCount) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment