// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/metrics/call_stacks/call_stack_profile_encoding.h" #include "base/notreached.h" #include "components/sampling_profiler/call_stack_profile_params.h" #include "components/sampling_profiler/process_type.h" #include "third_party/metrics_proto/sampled_profile.pb.h" namespace metrics { Process ToExecutionContextProcess( sampling_profiler::ProfilerProcessType process) { switch (process) { case sampling_profiler::ProfilerProcessType::kUnknown: return UNKNOWN_PROCESS; case sampling_profiler::ProfilerProcessType::kBrowser: return BROWSER_PROCESS; case sampling_profiler::ProfilerProcessType::kRenderer: return RENDERER_PROCESS; case sampling_profiler::ProfilerProcessType::kGpu: return GPU_PROCESS; case sampling_profiler::ProfilerProcessType::kUtility: return UTILITY_PROCESS; case sampling_profiler::ProfilerProcessType::kNetworkService: return NETWORK_SERVICE_PROCESS; case sampling_profiler::ProfilerProcessType::kZygote: return ZYGOTE_PROCESS; case sampling_profiler::ProfilerProcessType::kSandboxHelper: return SANDBOX_HELPER_PROCESS; case sampling_profiler::ProfilerProcessType::kPpapiPlugin: return PPAPI_PLUGIN_PROCESS; } NOTREACHED(); } Thread ToExecutionContextThread(sampling_profiler::ProfilerThreadType thread) { switch (thread) { case sampling_profiler::ProfilerThreadType::kUnknown: return UNKNOWN_THREAD; case sampling_profiler::ProfilerThreadType::kMain: return MAIN_THREAD; case sampling_profiler::ProfilerThreadType::kIo: return IO_THREAD; case sampling_profiler::ProfilerThreadType::kCompositor: return COMPOSITOR_THREAD; case sampling_profiler::ProfilerThreadType::kServiceWorker: return SERVICE_WORKER_THREAD; case sampling_profiler::ProfilerThreadType::kThreadPoolWorker: return THREAD_POOL_THREAD; } NOTREACHED(); } SampledProfile::TriggerEvent ToSampledProfileTriggerEvent( sampling_profiler::CallStackProfileParams::Trigger trigger) { switch (trigger) { case sampling_profiler::CallStackProfileParams::Trigger::kUnknown: return SampledProfile::UNKNOWN_TRIGGER_EVENT; case sampling_profiler::CallStackProfileParams::Trigger::kProcessStartup: return SampledProfile::PROCESS_STARTUP; case sampling_profiler::CallStackProfileParams::Trigger::kJankyTask: return SampledProfile::JANKY_TASK; case sampling_profiler::CallStackProfileParams::Trigger::kThreadHung: return SampledProfile::THREAD_HUNG; case sampling_profiler::CallStackProfileParams::Trigger:: kPeriodicCollection: return SampledProfile::PERIODIC_COLLECTION; case sampling_profiler::CallStackProfileParams::Trigger:: kPeriodicHeapCollection: return SampledProfile::PERIODIC_HEAP_COLLECTION; } NOTREACHED(); } } // namespace metrics