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)14Process 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)39Thread 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)57SampledProfile::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