Index: components/metrics/call_stack_profile_metrics_provider.cc |
diff --git a/components/metrics/call_stack_profile_metrics_provider.cc b/components/metrics/call_stack_profile_metrics_provider.cc |
index 1d228153b2ce551ff20f76655e6a5fd9166d018c..82e9b81f450e8c3ece4fb39100a9fdc79e673082 100644 |
--- a/components/metrics/call_stack_profile_metrics_provider.cc |
+++ b/components/metrics/call_stack_profile_metrics_provider.cc |
@@ -289,6 +289,84 @@ void CopyProfileToProto( |
profile.sampling_period.InMilliseconds()); |
} |
+// Translates CallStackProfileParams's process to the corresponding |
+// execution context Process. |
+Process ToExecutionContextProcess(CallStackProfileParams::Process process) { |
+ switch (process) { |
+ case CallStackProfileParams::UNKNOWN_PROCESS: |
+ return UNKNOWN_PROCESS; |
+ break; |
sky
2016/09/21 22:06:16
No break after returns in these switches.
Mike Wittman
2016/09/21 22:26:21
Done.
|
+ case CallStackProfileParams::BROWSER_PROCESS: |
+ return BROWSER_PROCESS; |
+ break; |
+ case CallStackProfileParams::RENDERER_PROCESS: |
+ return RENDERER_PROCESS; |
+ break; |
+ case CallStackProfileParams::GPU_PROCESS: |
+ return GPU_PROCESS; |
+ break; |
+ case CallStackProfileParams::UTILITY_PROCESS: |
+ return UTILITY_PROCESS; |
+ break; |
+ case CallStackProfileParams::ZYGOTE_PROCESS: |
+ return ZYGOTE_PROCESS; |
+ break; |
+ case CallStackProfileParams::SANDBOX_HELPER_PROCESS: |
+ return SANDBOX_HELPER_PROCESS; |
+ break; |
+ case CallStackProfileParams::PPAPI_PLUGIN_PROCESS: |
+ return PPAPI_PLUGIN_PROCESS; |
+ break; |
+ case CallStackProfileParams::PPAPI_BROKER_PROCESS: |
+ return PPAPI_BROKER_PROCESS; |
+ break; |
+ } |
+ NOTREACHED(); |
+ return UNKNOWN_PROCESS; |
+} |
+ |
+// Translates CallStackProfileParams's thread to the corresponding |
+// SampledProfile TriggerEvent. |
+Thread ToExecutionContextThread(CallStackProfileParams::Thread thread) { |
+ switch (thread) { |
+ case CallStackProfileParams::UNKNOWN_THREAD: |
+ return UNKNOWN_THREAD; |
+ break; |
+ case CallStackProfileParams::UI_THREAD: |
+ return UI_THREAD; |
+ break; |
+ case CallStackProfileParams::FILE_THREAD: |
+ return FILE_THREAD; |
+ break; |
+ case CallStackProfileParams::FILE_USER_BLOCKING_THREAD: |
+ return FILE_USER_BLOCKING_THREAD; |
+ break; |
+ case CallStackProfileParams::PROCESS_LAUNCHER_THREAD: |
+ return PROCESS_LAUNCHER_THREAD; |
+ break; |
+ case CallStackProfileParams::CACHE_THREAD: |
+ return CACHE_THREAD; |
+ break; |
+ case CallStackProfileParams::IO_THREAD: |
+ return IO_THREAD; |
+ break; |
+ case CallStackProfileParams::DB_THREAD: |
+ return DB_THREAD; |
+ break; |
+ case CallStackProfileParams::GPU_MAIN_THREAD: |
+ return GPU_MAIN_THREAD; |
+ break; |
+ case CallStackProfileParams::RENDER_THREAD: |
+ return RENDER_THREAD; |
+ break; |
+ case CallStackProfileParams::UTILITY_THREAD: |
+ return UTILITY_THREAD; |
+ break; |
+ } |
+ NOTREACHED(); |
+ return UNKNOWN_THREAD; |
+} |
+ |
// Translates CallStackProfileParams's trigger to the corresponding |
// SampledProfile TriggerEvent. |
SampledProfile::TriggerEvent ToSampledProfileTriggerEvent( |
@@ -367,6 +445,10 @@ void CallStackProfileMetricsProvider::ProvideGeneralMetrics( |
for (const StackSamplingProfiler::CallStackProfile& profile : |
profiles_state.profiles) { |
SampledProfile* sampled_profile = uma_proto->add_sampled_profile(); |
+ sampled_profile->set_process(ToExecutionContextProcess( |
+ profiles_state.params.process)); |
+ sampled_profile->set_thread(ToExecutionContextThread( |
+ profiles_state.params.thread)); |
sampled_profile->set_trigger_event(ToSampledProfileTriggerEvent( |
profiles_state.params.trigger)); |
CopyProfileToProto(profile, profiles_state.params.ordering_spec, |