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() {
void PosixSystemProducer::ConnectSocket() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
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(
socket_name_.c_str(), this,
base::StrCat(
{mojom::kPerfettoProducerNamePrefix,
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())}),
task_runner(),
socket_name_.c_str(), this, std::move(producer_name), task_runner(),
perfetto::TracingService::ProducerSMBScrapingMode::kEnabled);
base::AutoLock lock(lock_);
......
......@@ -4,7 +4,13 @@
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 kMetaDataSourceName = "org.chromium.trace_metadata";
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