blob: f6a2ca1ce53925053a1e89ccbb4fb29cefa3486a [file] [log] [blame]
wittmane16da2782016-09-21 16:43:041// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_METRICS_CALL_STACK_PROFILE_COLLECTOR_H_
6#define COMPONENTS_METRICS_CALL_STACK_PROFILE_COLLECTOR_H_
7
8#include "base/macros.h"
9#include "components/metrics/public/interfaces/call_stack_profile_collector.mojom.h"
10
11namespace metrics {
12
13class CallStackProfileCollector : public mojom::CallStackProfileCollector {
14 public:
15 using CallStackProfile = base::StackSamplingProfiler::CallStackProfile;
16
wittman4472aa92016-09-22 20:13:4617 explicit CallStackProfileCollector(
18 CallStackProfileParams::Process expected_process);
wittmane16da2782016-09-21 16:43:0419 ~CallStackProfileCollector() override;
20
wittman4472aa92016-09-22 20:13:4621 // Create a collector to receive profiles from |expected_process|.
22 static void Create(CallStackProfileParams::Process expected_process,
23 mojom::CallStackProfileCollectorRequest request);
wittmane16da2782016-09-21 16:43:0424
25 // mojom::CallStackProfileCollector:
26 void Collect(const CallStackProfileParams& params,
27 base::TimeTicks start_timestamp,
28 const std::vector<CallStackProfile>& profiles) override;
29
30 private:
wittman4472aa92016-09-22 20:13:4631 // Profile params are validated to come from this process. Profiles with a
32 // different process declared in the params are considered untrustworthy and
33 // ignored.
34 const CallStackProfileParams::Process expected_process_;
35
wittmane16da2782016-09-21 16:43:0436 DISALLOW_COPY_AND_ASSIGN(CallStackProfileCollector);
37};
38
39} // namespace metrics
40
41#endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_COLLECTOR_H_