Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(309)

Unified Diff: components/metrics/public/cpp/call_stack_profile_struct_traits.h

Issue 2362493002: Stack sampling profiler: set process and thread information (Closed)
Patch Set: address comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/metrics/public/cpp/call_stack_profile_struct_traits.h
diff --git a/components/metrics/public/cpp/call_stack_profile_struct_traits.h b/components/metrics/public/cpp/call_stack_profile_struct_traits.h
index 5e38aa9aa368d81bc53c74d59c163cb9112a2441..6e200341c09c88f752b4ee3b5356b86c11a5401a 100644
--- a/components/metrics/public/cpp/call_stack_profile_struct_traits.h
+++ b/components/metrics/public/cpp/call_stack_profile_struct_traits.h
@@ -134,31 +134,138 @@ struct StructTraits<metrics::mojom::CallStackProfileDataView,
};
template <>
-struct EnumTraits<metrics::mojom::SampleOrderingSpec,
- metrics::CallStackProfileParams::SampleOrderingSpec> {
+struct EnumTraits<metrics::mojom::Process,
+ metrics::CallStackProfileParams::Process> {
+ static metrics::mojom::Process ToMojom(
+ metrics::CallStackProfileParams::Process process) {
+ switch (process) {
+ case metrics::CallStackProfileParams::Process::UNKNOWN_PROCESS:
+ return metrics::mojom::Process::UNKNOWN_PROCESS;
+ case metrics::CallStackProfileParams::Process::BROWSER_PROCESS:
+ return metrics::mojom::Process::BROWSER_PROCESS;
+ case metrics::CallStackProfileParams::Process::RENDERER_PROCESS:
+ return metrics::mojom::Process::RENDERER_PROCESS;
+ case metrics::CallStackProfileParams::Process::GPU_PROCESS:
+ return metrics::mojom::Process::GPU_PROCESS;
+ case metrics::CallStackProfileParams::Process::UTILITY_PROCESS:
+ return metrics::mojom::Process::UTILITY_PROCESS;
+ case metrics::CallStackProfileParams::Process::ZYGOTE_PROCESS:
+ return metrics::mojom::Process::ZYGOTE_PROCESS;
+ case metrics::CallStackProfileParams::Process::SANDBOX_HELPER_PROCESS:
+ return metrics::mojom::Process::SANDBOX_HELPER_PROCESS;
+ case metrics::CallStackProfileParams::Process::PPAPI_PLUGIN_PROCESS:
+ return metrics::mojom::Process::PPAPI_PLUGIN_PROCESS;
+ case metrics::CallStackProfileParams::Process::PPAPI_BROKER_PROCESS:
+ return metrics::mojom::Process::PPAPI_BROKER_PROCESS;
+ }
+ NOTREACHED();
+ return metrics::mojom::Process::UNKNOWN_PROCESS;
+ }
- static metrics::mojom::SampleOrderingSpec ToMojom(
- metrics::CallStackProfileParams::SampleOrderingSpec spec) {
- switch (spec) {
- case metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE:
- return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE;
- case metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER:
- return metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER;
+ static bool FromMojom(metrics::mojom::Process process,
+ metrics::CallStackProfileParams::Process* out) {
+ switch (process) {
+ case metrics::mojom::Process::UNKNOWN_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::UNKNOWN_PROCESS;
+ return true;
+ case metrics::mojom::Process::BROWSER_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::BROWSER_PROCESS;
+ return true;
+ case metrics::mojom::Process::RENDERER_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::RENDERER_PROCESS;
+ return true;
+ case metrics::mojom::Process::GPU_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::GPU_PROCESS;
+ return true;
+ case metrics::mojom::Process::UTILITY_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::UTILITY_PROCESS;
+ return true;
+ case metrics::mojom::Process::ZYGOTE_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::ZYGOTE_PROCESS;
+ return true;
+ case metrics::mojom::Process::SANDBOX_HELPER_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::SANDBOX_HELPER_PROCESS;
+ return true;
+ case metrics::mojom::Process::PPAPI_PLUGIN_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::PPAPI_PLUGIN_PROCESS;
+ return true;
+ case metrics::mojom::Process::PPAPI_BROKER_PROCESS:
+ *out = metrics::CallStackProfileParams::Process::PPAPI_BROKER_PROCESS;
+ return true;
+ }
+ return false;
+ }
+};
+
+template <>
+struct EnumTraits<metrics::mojom::Thread,
+ metrics::CallStackProfileParams::Thread> {
+ static metrics::mojom::Thread ToMojom(
+ metrics::CallStackProfileParams::Thread thread) {
+ switch (thread) {
+ case metrics::CallStackProfileParams::Thread::UNKNOWN_THREAD:
+ return metrics::mojom::Thread::UNKNOWN_THREAD;
+ case metrics::CallStackProfileParams::Thread::UI_THREAD:
+ return metrics::mojom::Thread::UI_THREAD;
+ case metrics::CallStackProfileParams::Thread::FILE_THREAD:
+ return metrics::mojom::Thread::FILE_THREAD;
+ case metrics::CallStackProfileParams::Thread::FILE_USER_BLOCKING_THREAD:
+ return metrics::mojom::Thread::FILE_USER_BLOCKING_THREAD;
+ case metrics::CallStackProfileParams::Thread::PROCESS_LAUNCHER_THREAD:
+ return metrics::mojom::Thread::PROCESS_LAUNCHER_THREAD;
+ case metrics::CallStackProfileParams::Thread::CACHE_THREAD:
+ return metrics::mojom::Thread::CACHE_THREAD;
+ case metrics::CallStackProfileParams::Thread::IO_THREAD:
+ return metrics::mojom::Thread::IO_THREAD;
+ case metrics::CallStackProfileParams::Thread::DB_THREAD:
+ return metrics::mojom::Thread::DB_THREAD;
+ case metrics::CallStackProfileParams::Thread::GPU_MAIN_THREAD:
+ return metrics::mojom::Thread::GPU_MAIN_THREAD;
+ case metrics::CallStackProfileParams::Thread::RENDER_THREAD:
+ return metrics::mojom::Thread::RENDER_THREAD;
+ case metrics::CallStackProfileParams::Thread::UTILITY_THREAD:
+ return metrics::mojom::Thread::UTILITY_THREAD;
}
NOTREACHED();
- return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE;
+ return metrics::mojom::Thread::UNKNOWN_THREAD;
}
- static bool FromMojom(
- metrics::mojom::SampleOrderingSpec spec,
- metrics::CallStackProfileParams::SampleOrderingSpec* out) {
- switch (spec) {
- case metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE:
- *out = metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE;
+ static bool FromMojom(metrics::mojom::Thread thread,
+ metrics::CallStackProfileParams::Thread* out) {
+ switch (thread) {
+ case metrics::mojom::Thread::UNKNOWN_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::UNKNOWN_THREAD;
return true;
- case metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER:
+ case metrics::mojom::Thread::UI_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::UI_THREAD;
+ return true;
+ case metrics::mojom::Thread::FILE_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::FILE_THREAD;
+ return true;
+ case metrics::mojom::Thread::FILE_USER_BLOCKING_THREAD:
*out =
- metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER;
+ metrics::CallStackProfileParams::Thread::FILE_USER_BLOCKING_THREAD;
+ return true;
+ case metrics::mojom::Thread::PROCESS_LAUNCHER_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::PROCESS_LAUNCHER_THREAD;
+ return true;
+ case metrics::mojom::Thread::CACHE_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::CACHE_THREAD;
+ return true;
+ case metrics::mojom::Thread::IO_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::IO_THREAD;
+ return true;
+ case metrics::mojom::Thread::DB_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::DB_THREAD;
+ return true;
+ case metrics::mojom::Thread::GPU_MAIN_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::GPU_MAIN_THREAD;
+ return true;
+ case metrics::mojom::Thread::RENDER_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::RENDER_THREAD;
+ return true;
+ case metrics::mojom::Thread::UTILITY_THREAD:
+ *out = metrics::CallStackProfileParams::Thread::UTILITY_THREAD;
return true;
}
return false;
@@ -207,6 +314,14 @@ struct EnumTraits<metrics::mojom::Trigger,
template <>
struct StructTraits<metrics::mojom::CallStackProfileParamsDataView,
metrics::CallStackProfileParams> {
+ static metrics::CallStackProfileParams::Process process(
+ const metrics::CallStackProfileParams& params) {
+ return params.process;
+ }
+ static metrics::CallStackProfileParams::Thread thread(
+ const metrics::CallStackProfileParams& params) {
+ return params.thread;
+ }
static metrics::CallStackProfileParams::Trigger trigger(
const metrics::CallStackProfileParams& params) {
return params.trigger;
@@ -218,15 +333,52 @@ struct StructTraits<metrics::mojom::CallStackProfileParamsDataView,
static bool Read(metrics::mojom::CallStackProfileParamsDataView data,
metrics::CallStackProfileParams* out) {
+ metrics::CallStackProfileParams::Process process;
+ metrics::CallStackProfileParams::Thread thread;
metrics::CallStackProfileParams::Trigger trigger;
metrics::CallStackProfileParams::SampleOrderingSpec ordering_spec;
- if (!data.ReadTrigger(&trigger) || !data.ReadOrderingSpec(&ordering_spec))
+ if (!data.ReadProcess(&process) || !data.ReadThread(&thread) ||
+ !data.ReadTrigger(&trigger) || !data.ReadOrderingSpec(&ordering_spec)) {
return false;
- *out = metrics::CallStackProfileParams(trigger, ordering_spec);
+ }
+ *out = metrics::CallStackProfileParams(process, thread, trigger,
+ ordering_spec);
return true;
}
};
+template <>
+struct EnumTraits<metrics::mojom::SampleOrderingSpec,
+ metrics::CallStackProfileParams::SampleOrderingSpec> {
+
+ static metrics::mojom::SampleOrderingSpec ToMojom(
+ metrics::CallStackProfileParams::SampleOrderingSpec spec) {
+ switch (spec) {
+ case metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE:
+ return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE;
+ case metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER:
+ return metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER;
+ }
+ NOTREACHED();
+ return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE;
+ }
+
+ static bool FromMojom(
+ metrics::mojom::SampleOrderingSpec spec,
+ metrics::CallStackProfileParams::SampleOrderingSpec* out) {
+ switch (spec) {
+ case metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE:
+ *out = metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE;
+ return true;
+ case metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER:
+ *out =
+ metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER;
+ return true;
+ }
+ return false;
+ }
+};
+
} // mojo
#endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_

Powered by Google App Engine
This is Rietveld 408576698