Commit 9f0e99aa authored by Stephen Nusko's avatar Stephen Nusko Committed by Commit Bot

Make the producer name include the host_package_name on Android.

This allows you to trace with perfetto "producer_name_filter" to scope
your system traces to only particular apps (chrome stable/canary/etc).

Change-Id: I9a677a8d8edfdf6645eb50d9e77e9ffb025ca94d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2144135
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarEric Seckler <eseckler@chromium.org>
Auto-Submit: Stephen Nusko <nuskos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759188}
parent 20433584
...@@ -363,13 +363,30 @@ bool PosixSystemProducer::SetupSharedMemoryForStartupTracing() { ...@@ -363,13 +363,30 @@ bool PosixSystemProducer::SetupSharedMemoryForStartupTracing() {
void PosixSystemProducer::ConnectSocket() { void PosixSystemProducer::ConnectSocket() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
state_ = State::kConnecting; state_ = State::kConnecting;
const char* host_package_name = nullptr;
#if defined(OS_ANDROID)
host_package_name =
base::android::BuildInfo::GetInstance()->host_package_name();
#endif // defined(OS_ANDROID)
// On android we want to include if this is webview inside of an app or
// Android Chrome. To aid this we add the host_package_name to differentiate
// the various apps and sources.
std::string producer_name;
if (host_package_name) {
producer_name = base::StrCat(
{mojom::kPerfettoProducerNamePrefix, host_package_name, "-",
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())});
} else {
producer_name = base::StrCat(
{mojom::kPerfettoProducerNamePrefix,
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())});
}
auto service = perfetto::ProducerIPCClient::Connect( auto service = perfetto::ProducerIPCClient::Connect(
socket_name_.c_str(), this, socket_name_.c_str(), this, std::move(producer_name), task_runner(),
base::StrCat(
{mojom::kPerfettoProducerNamePrefix,
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())}),
task_runner(),
perfetto::TracingService::ProducerSMBScrapingMode::kEnabled); perfetto::TracingService::ProducerSMBScrapingMode::kEnabled);
base::AutoLock lock(lock_); base::AutoLock lock(lock_);
......
...@@ -4,7 +4,13 @@ ...@@ -4,7 +4,13 @@
module tracing.mojom; module tracing.mojom;
const string kPerfettoProducerNamePrefix = "org.chromium.perfetto_producer."; // Producer processes register with the format
// "kPerfettoProducerNamePrefix-PID" when connecting to Chrome's internal
// tracing service. Note that system producers use a different but similar
// naming scheme to disambiguate between different apps on the same system,
// see SystemProducer::ConnectToSystemService() implementations. Of
// particular interest is PosixSystemProducer::ConnectSocket().
const string kPerfettoProducerNamePrefix = "org.chromium-";
const string kTraceEventDataSourceName = "org.chromium.trace_event"; const string kTraceEventDataSourceName = "org.chromium.trace_event";
const string kMetaDataSourceName = "org.chromium.trace_metadata"; const string kMetaDataSourceName = "org.chromium.trace_metadata";
const string kSystemTraceDataSourceName = "org.chromium.trace_system"; const string kSystemTraceDataSourceName = "org.chromium.trace_system";
......
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