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( BackgroundTracingAgentImpl::BackgroundTracingAgentImpl(
mojo::PendingRemote<mojom::BackgroundTracingAgentClient> client) mojo::PendingRemote<mojom::BackgroundTracingAgentClient> client)
: client_(std::move(client)) { : client_(std::move(client)),
task_runner_{base::SequencedTaskRunner::GetCurrentDefault()} {
client_->OnInitialized(); client_->OnInitialized();
NamedTriggerManager::SetInstance(this); NamedTriggerManager::SetInstance(this);
} }
@@ -53,9 +54,22 @@ bool BackgroundTracingAgentImpl::DoEmitNamedTrigger(
std::optional<int32_t> value) { std::optional<int32_t> value) {
TRACE_EVENT_INSTANT("latency", "NamedTrigger", TRACE_EVENT_INSTANT("latency", "NamedTrigger",
base::trace_event::TriggerFlow(trigger_name, value)); 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( client_->OnTriggerBackgroundTrace(
tracing::mojom::BackgroundTracingRule::New(trigger_name), value); tracing::mojom::BackgroundTracingRule::New(trigger_name), value);
return true;
} }
void BackgroundTracingAgentImpl::OnHistogramChanged( void BackgroundTracingAgentImpl::OnHistogramChanged(

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