// 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. #ifndef COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_ #define COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_ namespace metrics { // Parameters to pass back to the metrics provider. struct CallStackProfileParams { // The process in which the collection occurred. enum class Process { kUnknown, kBrowser, kRenderer, kGpu, kUtility, kZygote, kSandboxHelper, kPpapiPlugin, kNetworkService, kMax = kNetworkService, }; // The thread from which the collection occurred. enum class Thread { kUnknown, // Each process has a 'main thread'. In the Browser process, the 'main // thread' is also often called the 'UI thread'. kMain, kIo, // Compositor thread (can be in both renderer and gpu processes). kCompositor, // Service worker thread. kServiceWorker, kMax = kServiceWorker, }; // The event that triggered the profile collection. enum class Trigger { kUnknown, kProcessStartup, kJankyTask, kThreadHung, kPeriodicCollection, kPeriodicHeapCollection, kLast = kPeriodicHeapCollection }; // The default constructor is required for mojo and should not be used // otherwise. A valid trigger should always be specified. constexpr CallStackProfileParams() : CallStackProfileParams(Process::kUnknown, Thread::kUnknown, Trigger::kUnknown) {} constexpr CallStackProfileParams(Process process, Thread thread, Trigger trigger) : process(process), thread(thread), trigger(trigger) {} // The collection process. Process process; // The collection thread. Thread thread; // The triggering event. Trigger trigger; }; } // namespace metrics #endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_