| Index: components/metrics/public/cpp/call_stack_profile_struct_traits.h
|
| diff --git a/components/metrics/public/cpp/call_stack_profile_struct_traits.h b/components/metrics/public/cpp/call_stack_profile_struct_traits.h
|
| index 6e200341c09c88f752b4ee3b5356b86c11a5401a..d03e80fe4d58311253d38b672e1c12c3f37087ce 100644
|
| --- a/components/metrics/public/cpp/call_stack_profile_struct_traits.h
|
| +++ b/components/metrics/public/cpp/call_stack_profile_struct_traits.h
|
| @@ -80,6 +80,36 @@ struct StructTraits<metrics::mojom::CallStackFrameDataView,
|
| };
|
|
|
| template <>
|
| +struct StructTraits<metrics::mojom::CallStackSampleDataView,
|
| + base::StackSamplingProfiler::Sample> {
|
| + static const std::vector<base::StackSamplingProfiler::Frame>& frames(
|
| + const base::StackSamplingProfiler::Sample& sample) {
|
| + return sample.frames;
|
| + }
|
| + static int32_t process_phases(
|
| + const base::StackSamplingProfiler::Sample& sample) {
|
| + return sample.process_phases;
|
| + }
|
| + static int32_t current_activities(
|
| + const base::StackSamplingProfiler::Sample& sample) {
|
| + return sample.current_activities;
|
| + }
|
| +
|
| + static bool Read(metrics::mojom::CallStackSampleDataView data,
|
| + base::StackSamplingProfiler::Sample* out) {
|
| + std::vector<base::StackSamplingProfiler::Frame> frames;
|
| + if (!data.ReadFrames(&frames))
|
| + return false;
|
| +
|
| + *out = base::StackSamplingProfiler::Sample();
|
| + out->frames = std::move(frames);
|
| + out->process_phases = data.process_phases();
|
| + out->current_activities = data.current_activities();
|
| + return true;
|
| + }
|
| +};
|
| +
|
| +template <>
|
| struct StructTraits<metrics::mojom::CallStackProfileDataView,
|
| base::StackSamplingProfiler::CallStackProfile> {
|
| static const std::vector<base::StackSamplingProfiler::Module>& modules(
|
| @@ -103,7 +133,7 @@ struct StructTraits<metrics::mojom::CallStackProfileDataView,
|
| std::vector<base::StackSamplingProfiler::Sample> samples,
|
| size_t module_count) {
|
| for (const base::StackSamplingProfiler::Sample& sample : samples) {
|
| - for (const base::StackSamplingProfiler::Frame& frame : sample) {
|
| + for (const base::StackSamplingProfiler::Frame& frame : sample.frames) {
|
| if (frame.module_index >= module_count &&
|
| frame.module_index !=
|
| base::StackSamplingProfiler::Frame::kUnknownModuleIndex)
|
|
|