[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:

committed by
Chromium LUCI CQ

parent
c61ff61437
commit
11921c84b5
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};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user