// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "flutter/shell/common/tracing_controller.h" #include #include "dart/runtime/include/dart_tools_api.h" #include "flutter/common/threads.h" #include "flutter/fml/trace_event.h" #include "flutter/runtime/dart_init.h" #include "flutter/shell/common/shell.h" #include "lib/ftl/logging.h" namespace shell { TracingController::TracingController() : tracing_active_(false) { blink::SetEmbedderTracingCallbacks( std::unique_ptr( new blink::EmbedderTracingCallbacks([this]() { StartTracing(); }, [this]() { StopTracing(); }))); } TracingController::~TracingController() { blink::SetEmbedderTracingCallbacks(nullptr); } static void AddTraceMetadata() { blink::Threads::Gpu()->PostTask([]() { Dart_SetThreadName("gpu_thread"); }); blink::Threads::UI()->PostTask([]() { Dart_SetThreadName("ui_thread"); }); blink::Threads::IO()->PostTask([]() { Dart_SetThreadName("io_thread"); }); blink::Threads::Platform()->PostTask( []() { Dart_SetThreadName("platform_thread"); }); } void TracingController::StartTracing() { if (tracing_active_) return; tracing_active_ = true; AddTraceMetadata(); } void TracingController::StopTracing() { if (!tracing_active_) { return; } tracing_active_ = false; } } // namespace shell