0

[background_tracing] Allow DoEmitNamedTrigger to be called from any

sequence

Bug: 394973090
Change-Id: I956c934e675750ee808a8eb3238711a8afa6b484
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6244400
Commit-Queue: Thiabaud Engelbrecht <thiabaud@google.com>
Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1417579}
This commit is contained in:
Thiabaud Engelbrecht
2025-02-07 14:09:08 -08:00
committed by Chromium LUCI CQ
parent c61ff61437
commit 11921c84b5
2 changed files with 20 additions and 2 deletions
services/tracing/public/cpp/background_tracing

@ -17,7 +17,8 @@ namespace tracing {
BackgroundTracingAgentImpl::BackgroundTracingAgentImpl(
mojo::PendingRemote<mojom::BackgroundTracingAgentClient> client)
: client_(std::move(client)) {
: client_(std::move(client)),
task_runner_{base::SequencedTaskRunner::GetCurrentDefault()} {
client_->OnInitialized();
NamedTriggerManager::SetInstance(this);
}
@ -53,9 +54,22 @@ bool BackgroundTracingAgentImpl::DoEmitNamedTrigger(
std::optional<int32_t> value) {
TRACE_EVENT_INSTANT("latency", "NamedTrigger",
base::trace_event::TriggerFlow(trigger_name, value));
DoEmitNamedTriggerImpl(trigger_name, value);
return true;
}
void BackgroundTracingAgentImpl::DoEmitNamedTriggerImpl(
const std::string& trigger_name,
std::optional<int32_t> value) {
if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&BackgroundTracingAgentImpl::DoEmitNamedTriggerImpl,
weak_factory_.GetWeakPtr(), trigger_name, value));
return;
}
client_->OnTriggerBackgroundTrace(
tracing::mojom::BackgroundTracingRule::New(trigger_name), value);
return true;
}
void BackgroundTracingAgentImpl::OnHistogramChanged(

@ -52,6 +52,9 @@ class COMPONENT_EXPORT(BACKGROUND_TRACING_CPP) BackgroundTracingAgentImpl
uint64_t name_hash,
base::Histogram::Sample32 actual_value);
void DoEmitNamedTriggerImpl(const std::string& trigger_name,
std::optional<int32_t> value);
mojo::Remote<mojom::BackgroundTracingAgentClient> client_;
base::Time histogram_last_changed_;
// Tracks histogram names and corresponding registered callbacks.
@ -60,6 +63,7 @@ class COMPONENT_EXPORT(BACKGROUND_TRACING_CPP) BackgroundTracingAgentImpl
std::unique_ptr<base::StatisticsRecorder::ScopedHistogramSampleObserver>>
histogram_callback_map_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
base::WeakPtrFactory<BackgroundTracingAgentImpl> weak_factory_{this};
};