Record JavaScript calls in DevTools timeline on Node/ipc callback

This commit is contained in:
Ryohei Ikegami 2016-12-07 20:22:08 +09:00
parent f1f73eff04
commit a7a06a483e
2 changed files with 16 additions and 0 deletions

View file

@ -17,6 +17,8 @@
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/trace_event/trace_event.h"
#include "base/trace_event/trace_event_argument.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/common/content_paths.h" #include "content/public/common/content_paths.h"
#include "native_mate/dictionary.h" #include "native_mate/dictionary.h"
@ -239,8 +241,17 @@ void NodeBindings::UvRunOnce() {
v8::MicrotasksScope script_scope(env->isolate(), v8::MicrotasksScope script_scope(env->isolate(),
v8::MicrotasksScope::kRunMicrotasks); v8::MicrotasksScope::kRunMicrotasks);
if (!is_browser_)
TRACE_EVENT_BEGIN1("devtools.timeline", "FunctionCall", "data",
std::unique_ptr<base::trace_event::TracedValue>(
new base::trace_event::TracedValue()));
// Deal with uv events. // Deal with uv events.
int r = uv_run(uv_loop_, UV_RUN_NOWAIT); int r = uv_run(uv_loop_, UV_RUN_NOWAIT);
if (!is_browser_)
TRACE_EVENT_END0("devtools.timeline", "FunctionCall");
if (r == 0) if (r == 0)
message_loop_->QuitWhenIdle(); // Quit from uv. message_loop_->QuitWhenIdle(); // Quit from uv.

View file

@ -18,6 +18,8 @@
#include "atom/renderer/atom_renderer_client.h" #include "atom/renderer/atom_renderer_client.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/trace_event/trace_event.h"
#include "base/trace_event/trace_event_argument.h"
#include "content/public/renderer/render_view.h" #include "content/public/renderer/render_view.h"
#include "ipc/ipc_message_macros.h" #include "ipc/ipc_message_macros.h"
#include "native_mate/dictionary.h" #include "native_mate/dictionary.h"
@ -102,6 +104,9 @@ void AtomRenderViewObserver::EmitIPCEvent(blink::WebFrame* frame,
v8::Local<v8::Object> ipc; v8::Local<v8::Object> ipc;
if (GetIPCObject(isolate, context, &ipc)) { if (GetIPCObject(isolate, context, &ipc)) {
TRACE_EVENT1("devtools.timeline", "FunctionCall", "data",
std::unique_ptr<base::trace_event::TracedValue>(
new base::trace_event::TracedValue()));
auto args_vector = ListValueToVector(isolate, args); auto args_vector = ListValueToVector(isolate, args);
// Insert the Event object, event.sender is ipc. // Insert the Event object, event.sender is ipc.
mate::Dictionary event = mate::Dictionary::CreateEmpty(isolate); mate::Dictionary event = mate::Dictionary::CreateEmpty(isolate);