| 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
|
| deleted file mode 100644
|
| index a9b2b280a2acdb2976f4fd5bdbc9d9cf977d9d2e..0000000000000000000000000000000000000000
|
| --- a/components/metrics/public/cpp/call_stack_profile_struct_traits.h
|
| +++ /dev/null
|
| @@ -1,138 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Defines StructTraits specializations for translating between mojo types and
|
| -// base::StackSamplingProfiler types, with data validity checks.
|
| -
|
| -#ifndef COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_
|
| -#define COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/files/file_path.h"
|
| -#include "base/profiler/stack_sampling_profiler.h"
|
| -#include "components/metrics/public/interfaces/call_stack_profile_collector.mojom.h"
|
| -
|
| -namespace mojo {
|
| -
|
| -template <>
|
| -struct StructTraits<metrics::mojom::CallStackModule,
|
| - base::StackSamplingProfiler::Module> {
|
| - static uint64_t base_address(
|
| - const base::StackSamplingProfiler::Module& module) {
|
| - return module.base_address;
|
| - }
|
| - static const std::string& id(
|
| - const base::StackSamplingProfiler::Module& module) {
|
| - return module.id;
|
| - }
|
| - static const base::FilePath& filename(
|
| - const base::StackSamplingProfiler::Module& module) {
|
| - return module.filename;
|
| - }
|
| -
|
| - static bool Read(metrics::mojom::CallStackModuleDataView data,
|
| - base::StackSamplingProfiler::Module* out) {
|
| - // Linux has the longest build id at 40 bytes.
|
| - static const size_t kMaxIDSize = 40;
|
| -
|
| - std::string id;
|
| - base::FilePath filename;
|
| - if (!data.ReadId(&id) || id.size() > kMaxIDSize ||
|
| - !data.ReadFilename(&filename))
|
| - return false;
|
| -
|
| - *out =
|
| - base::StackSamplingProfiler::Module(data.base_address(), id, filename);
|
| - return true;
|
| - }
|
| -};
|
| -
|
| -template <>
|
| -struct StructTraits<metrics::mojom::CallStackFrame,
|
| - base::StackSamplingProfiler::Frame> {
|
| - static uint64_t instruction_pointer(
|
| - const base::StackSamplingProfiler::Frame& frame) {
|
| - return frame.instruction_pointer;
|
| - }
|
| - static uint64_t module_index(
|
| - const base::StackSamplingProfiler::Frame& frame) {
|
| - return frame.module_index ==
|
| - base::StackSamplingProfiler::Frame::kUnknownModuleIndex ?
|
| - static_cast<uint64_t>(-1) :
|
| - frame.module_index;
|
| - }
|
| -
|
| - static bool Read(metrics::mojom::CallStackFrameDataView data,
|
| - base::StackSamplingProfiler::Frame* out) {
|
| - size_t module_index = data.module_index() == static_cast<uint64_t>(-1) ?
|
| - base::StackSamplingProfiler::Frame::kUnknownModuleIndex :
|
| - data.module_index();
|
| -
|
| - // We can't know whether the module_index field is valid at this point since
|
| - // we don't have access to the number of modules here. This will be checked
|
| - // in CallStackProfile's Read function below.
|
| - *out = base::StackSamplingProfiler::Frame(data.instruction_pointer(),
|
| - module_index);
|
| - return true;
|
| - }
|
| -};
|
| -
|
| -template <>
|
| -struct StructTraits<metrics::mojom::CallStackProfile,
|
| - base::StackSamplingProfiler::CallStackProfile> {
|
| - static const std::vector<base::StackSamplingProfiler::Module>& modules(
|
| - const base::StackSamplingProfiler::CallStackProfile& profile) {
|
| - return profile.modules;
|
| - }
|
| - static const std::vector<base::StackSamplingProfiler::Sample>& samples(
|
| - const base::StackSamplingProfiler::CallStackProfile& profile) {
|
| - return profile.samples;
|
| - }
|
| - static const base::TimeDelta profile_duration(
|
| - const base::StackSamplingProfiler::CallStackProfile& profile) {
|
| - return profile.profile_duration;
|
| - }
|
| - static const base::TimeDelta sampling_period(
|
| - const base::StackSamplingProfiler::CallStackProfile& profile) {
|
| - return profile.sampling_period;
|
| - }
|
| -
|
| - static bool ValidateSamples(
|
| - std::vector<base::StackSamplingProfiler::Sample> samples,
|
| - size_t module_count) {
|
| - for (const base::StackSamplingProfiler::Sample& sample : samples) {
|
| - for (const base::StackSamplingProfiler::Frame& frame : sample) {
|
| - if (frame.module_index >= module_count &&
|
| - frame.module_index !=
|
| - base::StackSamplingProfiler::Frame::kUnknownModuleIndex)
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - static bool Read(metrics::mojom::CallStackProfileDataView data,
|
| - base::StackSamplingProfiler::CallStackProfile* out) {
|
| - std::vector<base::StackSamplingProfiler::Module> modules;
|
| - std::vector<base::StackSamplingProfiler::Sample> samples;
|
| - base::TimeDelta profile_duration, sampling_period;
|
| - if (!data.ReadModules(&modules) || !data.ReadSamples(&samples) ||
|
| - !data.ReadProfileDuration(&profile_duration) ||
|
| - !data.ReadSamplingPeriod(&sampling_period) ||
|
| - !ValidateSamples(samples, modules.size()))
|
| - return false;
|
| -
|
| - *out = base::StackSamplingProfiler::CallStackProfile();
|
| - out->modules = std::move(modules);
|
| - out->samples = std::move(samples);
|
| - out->profile_duration = profile_duration;
|
| - out->sampling_period = sampling_period;
|
| - return true;
|
| - }
|
| -};
|
| -
|
| -} // mojo
|
| -
|
| -#endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_
|
|
|