• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/metrics/call_stacks/call_stack_profile_encoding.h"
6 
7 #include "base/notreached.h"
8 #include "components/sampling_profiler/call_stack_profile_params.h"
9 #include "components/sampling_profiler/process_type.h"
10 #include "third_party/metrics_proto/sampled_profile.pb.h"
11 
12 namespace metrics {
13 
ToExecutionContextProcess(sampling_profiler::ProfilerProcessType process)14 Process ToExecutionContextProcess(
15     sampling_profiler::ProfilerProcessType process) {
16   switch (process) {
17     case sampling_profiler::ProfilerProcessType::kUnknown:
18       return UNKNOWN_PROCESS;
19     case sampling_profiler::ProfilerProcessType::kBrowser:
20       return BROWSER_PROCESS;
21     case sampling_profiler::ProfilerProcessType::kRenderer:
22       return RENDERER_PROCESS;
23     case sampling_profiler::ProfilerProcessType::kGpu:
24       return GPU_PROCESS;
25     case sampling_profiler::ProfilerProcessType::kUtility:
26       return UTILITY_PROCESS;
27     case sampling_profiler::ProfilerProcessType::kNetworkService:
28       return NETWORK_SERVICE_PROCESS;
29     case sampling_profiler::ProfilerProcessType::kZygote:
30       return ZYGOTE_PROCESS;
31     case sampling_profiler::ProfilerProcessType::kSandboxHelper:
32       return SANDBOX_HELPER_PROCESS;
33     case sampling_profiler::ProfilerProcessType::kPpapiPlugin:
34       return PPAPI_PLUGIN_PROCESS;
35   }
36   NOTREACHED();
37 }
38 
ToExecutionContextThread(sampling_profiler::ProfilerThreadType thread)39 Thread ToExecutionContextThread(sampling_profiler::ProfilerThreadType thread) {
40   switch (thread) {
41     case sampling_profiler::ProfilerThreadType::kUnknown:
42       return UNKNOWN_THREAD;
43     case sampling_profiler::ProfilerThreadType::kMain:
44       return MAIN_THREAD;
45     case sampling_profiler::ProfilerThreadType::kIo:
46       return IO_THREAD;
47     case sampling_profiler::ProfilerThreadType::kCompositor:
48       return COMPOSITOR_THREAD;
49     case sampling_profiler::ProfilerThreadType::kServiceWorker:
50       return SERVICE_WORKER_THREAD;
51     case sampling_profiler::ProfilerThreadType::kThreadPoolWorker:
52       return THREAD_POOL_THREAD;
53   }
54   NOTREACHED();
55 }
56 
ToSampledProfileTriggerEvent(sampling_profiler::CallStackProfileParams::Trigger trigger)57 SampledProfile::TriggerEvent ToSampledProfileTriggerEvent(
58     sampling_profiler::CallStackProfileParams::Trigger trigger) {
59   switch (trigger) {
60     case sampling_profiler::CallStackProfileParams::Trigger::kUnknown:
61       return SampledProfile::UNKNOWN_TRIGGER_EVENT;
62     case sampling_profiler::CallStackProfileParams::Trigger::kProcessStartup:
63       return SampledProfile::PROCESS_STARTUP;
64     case sampling_profiler::CallStackProfileParams::Trigger::kJankyTask:
65       return SampledProfile::JANKY_TASK;
66     case sampling_profiler::CallStackProfileParams::Trigger::kThreadHung:
67       return SampledProfile::THREAD_HUNG;
68     case sampling_profiler::CallStackProfileParams::Trigger::
69         kPeriodicCollection:
70       return SampledProfile::PERIODIC_COLLECTION;
71     case sampling_profiler::CallStackProfileParams::Trigger::
72         kPeriodicHeapCollection:
73       return SampledProfile::PERIODIC_HEAP_COLLECTION;
74   }
75   NOTREACHED();
76 }
77 
78 }  // namespace metrics
79