| Index: components/metrics/public/interfaces/call_stack_profile_collector.mojom
 | 
| diff --git a/components/metrics/public/interfaces/call_stack_profile_collector.mojom b/components/metrics/public/interfaces/call_stack_profile_collector.mojom
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..80e9ac3ccc308515134335c1e3717ccdcfc411d3
 | 
| --- /dev/null
 | 
| +++ b/components/metrics/public/interfaces/call_stack_profile_collector.mojom
 | 
| @@ -0,0 +1,40 @@
 | 
| +// 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.
 | 
| +
 | 
| +module metrics.mojom;
 | 
| +
 | 
| +import "mojo/common/common_custom_types.mojom";
 | 
| +
 | 
| +// These structs mirror the corresponding types in base::StackSamplingProfiler.
 | 
| +
 | 
| +struct CallStackModule {
 | 
| +  uint64 base_address;
 | 
| +  string id;
 | 
| +  mojo.common.mojom.FilePath filename;
 | 
| +};
 | 
| +
 | 
| +struct CallStackFrame {
 | 
| +  uint64 instruction_pointer;
 | 
| +  uint64 module_index;
 | 
| +};
 | 
| +
 | 
| +struct CallStackProfile {
 | 
| +  array<CallStackModule> modules;
 | 
| +  array<array<CallStackFrame>> samples;
 | 
| +  mojo.common.mojom.TimeDelta profile_duration;
 | 
| +  mojo.common.mojom.TimeDelta sampling_period;
 | 
| +};
 | 
| +
 | 
| +enum Trigger {
 | 
| +  UNKNOWN,
 | 
| +  PROCESS_STARTUP,
 | 
| +  JANKY_TASK,
 | 
| +  THREAD_HUNG,
 | 
| +};
 | 
| +
 | 
| +interface CallStackProfileCollector {
 | 
| +  Collect(Trigger trigger, bool preserve_sample_ordering,
 | 
| +          mojo.common.mojom.TimeTicks start_timestamp,
 | 
| +          array<CallStackProfile> profiles);
 | 
| +};
 | 
| 
 |