|  | // 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_ | 
|  |  | 
|  | #include "base/time/time.h" | 
|  |  | 
|  | namespace metrics { | 
|  |  | 
|  | // Parameters to pass back to the metrics provider. | 
|  | struct CallStackProfileParams { | 
|  | // The process in which the collection occurred. | 
|  | enum Process { | 
|  | UNKNOWN_PROCESS, | 
|  | BROWSER_PROCESS, | 
|  | RENDERER_PROCESS, | 
|  | GPU_PROCESS, | 
|  | UTILITY_PROCESS, | 
|  | ZYGOTE_PROCESS, | 
|  | SANDBOX_HELPER_PROCESS, | 
|  | PPAPI_PLUGIN_PROCESS, | 
|  | PPAPI_BROKER_PROCESS | 
|  | }; | 
|  |  | 
|  | // The thread from which the collection occurred. | 
|  | enum Thread { | 
|  | UNKNOWN_THREAD, | 
|  |  | 
|  | // Each process has a 'main thread'. In the Browser process, the 'main | 
|  | // thread' is also often called the 'UI thread'. | 
|  | MAIN_THREAD, | 
|  | IO_THREAD, | 
|  |  | 
|  | // Compositor thread (can be in both renderer and gpu processes). | 
|  | COMPOSITOR_THREAD, | 
|  | }; | 
|  |  | 
|  | // The event that triggered the profile collection. | 
|  | enum Trigger { | 
|  | UNKNOWN, | 
|  | PROCESS_STARTUP, | 
|  | JANKY_TASK, | 
|  | THREAD_HUNG, | 
|  | PERIODIC_COLLECTION, | 
|  | TRIGGER_LAST = PERIODIC_COLLECTION | 
|  | }; | 
|  |  | 
|  | // The default constructor is required for mojo and should not be used | 
|  | // otherwise. A valid trigger should always be specified. | 
|  | constexpr CallStackProfileParams() | 
|  | : CallStackProfileParams(UNKNOWN_PROCESS, UNKNOWN_THREAD, UNKNOWN) {} | 
|  | 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_ |