| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Defines StructTraits specializations for translating between mojo types and | 5 // Defines StructTraits specializations for translating between mojo types and |
| 6 // base::StackSamplingProfiler types, with data validity checks. | 6 // base::StackSamplingProfiler types, with data validity checks. |
| 7 | 7 |
| 8 #ifndef COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ | 8 #ifndef COMPONENTS_METRICS_PUBLIC_CPP_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ |
| 9 #define COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ | 9 #define COMPONENTS_METRICS_PUBLIC_CPP_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ |
| 10 | 10 |
| 11 #include <string> |
| 12 #include <utility> |
| 11 #include <vector> | 13 #include <vector> |
| 12 | 14 |
| 13 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
| 14 #include "base/profiler/stack_sampling_profiler.h" | 16 #include "base/profiler/stack_sampling_profiler.h" |
| 15 #include "components/metrics/public/interfaces/call_stack_profile_collector.mojo
m.h" | 17 #include "components/metrics/public/interfaces/call_stack_profile_collector.mojo
m.h" |
| 16 | 18 |
| 17 namespace mojo { | 19 namespace mojo { |
| 18 | 20 |
| 19 template <> | 21 template <> |
| 20 struct StructTraits<metrics::mojom::CallStackModuleDataView, | 22 struct StructTraits<metrics::mojom::CallStackModuleDataView, |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 metrics::CallStackProfileParams::Trigger trigger) { | 302 metrics::CallStackProfileParams::Trigger trigger) { |
| 301 switch (trigger) { | 303 switch (trigger) { |
| 302 case metrics::CallStackProfileParams::Trigger::UNKNOWN: | 304 case metrics::CallStackProfileParams::Trigger::UNKNOWN: |
| 303 return metrics::mojom::Trigger::UNKNOWN; | 305 return metrics::mojom::Trigger::UNKNOWN; |
| 304 case metrics::CallStackProfileParams::Trigger::PROCESS_STARTUP: | 306 case metrics::CallStackProfileParams::Trigger::PROCESS_STARTUP: |
| 305 return metrics::mojom::Trigger::PROCESS_STARTUP; | 307 return metrics::mojom::Trigger::PROCESS_STARTUP; |
| 306 case metrics::CallStackProfileParams::Trigger::JANKY_TASK: | 308 case metrics::CallStackProfileParams::Trigger::JANKY_TASK: |
| 307 return metrics::mojom::Trigger::JANKY_TASK; | 309 return metrics::mojom::Trigger::JANKY_TASK; |
| 308 case metrics::CallStackProfileParams::Trigger::THREAD_HUNG: | 310 case metrics::CallStackProfileParams::Trigger::THREAD_HUNG: |
| 309 return metrics::mojom::Trigger::THREAD_HUNG; | 311 return metrics::mojom::Trigger::THREAD_HUNG; |
| 312 case metrics::CallStackProfileParams::Trigger::PERIODIC_COLLECTION: |
| 313 return metrics::mojom::Trigger::PERIODIC_COLLECTION; |
| 310 } | 314 } |
| 311 NOTREACHED(); | 315 NOTREACHED(); |
| 312 return metrics::mojom::Trigger::UNKNOWN; | 316 return metrics::mojom::Trigger::UNKNOWN; |
| 313 } | 317 } |
| 314 | 318 |
| 315 static bool FromMojom(metrics::mojom::Trigger trigger, | 319 static bool FromMojom(metrics::mojom::Trigger trigger, |
| 316 metrics::CallStackProfileParams::Trigger* out) { | 320 metrics::CallStackProfileParams::Trigger* out) { |
| 317 switch (trigger) { | 321 switch (trigger) { |
| 318 case metrics::mojom::Trigger::UNKNOWN: | 322 case metrics::mojom::Trigger::UNKNOWN: |
| 319 *out = metrics::CallStackProfileParams::Trigger::UNKNOWN; | 323 *out = metrics::CallStackProfileParams::Trigger::UNKNOWN; |
| 320 return true; | 324 return true; |
| 321 case metrics::mojom::Trigger::PROCESS_STARTUP: | 325 case metrics::mojom::Trigger::PROCESS_STARTUP: |
| 322 *out = metrics::CallStackProfileParams::Trigger::PROCESS_STARTUP; | 326 *out = metrics::CallStackProfileParams::Trigger::PROCESS_STARTUP; |
| 323 return true; | 327 return true; |
| 324 case metrics::mojom::Trigger::JANKY_TASK: | 328 case metrics::mojom::Trigger::JANKY_TASK: |
| 325 *out = metrics::CallStackProfileParams::Trigger::JANKY_TASK; | 329 *out = metrics::CallStackProfileParams::Trigger::JANKY_TASK; |
| 326 return true; | 330 return true; |
| 327 case metrics::mojom::Trigger::THREAD_HUNG: | 331 case metrics::mojom::Trigger::THREAD_HUNG: |
| 328 *out = metrics::CallStackProfileParams::Trigger::THREAD_HUNG; | 332 *out = metrics::CallStackProfileParams::Trigger::THREAD_HUNG; |
| 329 return true; | 333 return true; |
| 334 case metrics::mojom::Trigger::PERIODIC_COLLECTION: |
| 335 *out = metrics::CallStackProfileParams::Trigger::PERIODIC_COLLECTION; |
| 336 return true; |
| 330 } | 337 } |
| 331 return false; | 338 return false; |
| 332 } | 339 } |
| 333 }; | 340 }; |
| 334 | 341 |
| 335 template <> | 342 template <> |
| 336 struct StructTraits<metrics::mojom::CallStackProfileParamsDataView, | 343 struct StructTraits<metrics::mojom::CallStackProfileParamsDataView, |
| 337 metrics::CallStackProfileParams> { | 344 metrics::CallStackProfileParams> { |
| 338 static metrics::CallStackProfileParams::Process process( | 345 static metrics::CallStackProfileParams::Process process( |
| 339 const metrics::CallStackProfileParams& params) { | 346 const metrics::CallStackProfileParams& params) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 364 } | 371 } |
| 365 *out = metrics::CallStackProfileParams(process, thread, trigger, | 372 *out = metrics::CallStackProfileParams(process, thread, trigger, |
| 366 ordering_spec); | 373 ordering_spec); |
| 367 return true; | 374 return true; |
| 368 } | 375 } |
| 369 }; | 376 }; |
| 370 | 377 |
| 371 template <> | 378 template <> |
| 372 struct EnumTraits<metrics::mojom::SampleOrderingSpec, | 379 struct EnumTraits<metrics::mojom::SampleOrderingSpec, |
| 373 metrics::CallStackProfileParams::SampleOrderingSpec> { | 380 metrics::CallStackProfileParams::SampleOrderingSpec> { |
| 374 | |
| 375 static metrics::mojom::SampleOrderingSpec ToMojom( | 381 static metrics::mojom::SampleOrderingSpec ToMojom( |
| 376 metrics::CallStackProfileParams::SampleOrderingSpec spec) { | 382 metrics::CallStackProfileParams::SampleOrderingSpec spec) { |
| 377 switch (spec) { | 383 switch (spec) { |
| 378 case metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE: | 384 case metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE: |
| 379 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; | 385 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; |
| 380 case metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER: | 386 case metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER: |
| 381 return metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER; | 387 return metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER; |
| 382 } | 388 } |
| 383 NOTREACHED(); | 389 NOTREACHED(); |
| 384 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; | 390 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; |
| 385 } | 391 } |
| 386 | 392 |
| 387 static bool FromMojom( | 393 static bool FromMojom( |
| 388 metrics::mojom::SampleOrderingSpec spec, | 394 metrics::mojom::SampleOrderingSpec spec, |
| 389 metrics::CallStackProfileParams::SampleOrderingSpec* out) { | 395 metrics::CallStackProfileParams::SampleOrderingSpec* out) { |
| 390 switch (spec) { | 396 switch (spec) { |
| 391 case metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE: | 397 case metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE: |
| 392 *out = metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE; | 398 *out = metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE; |
| 393 return true; | 399 return true; |
| 394 case metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER: | 400 case metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER: |
| 395 *out = | 401 *out = |
| 396 metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER; | 402 metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER; |
| 397 return true; | 403 return true; |
| 398 } | 404 } |
| 399 return false; | 405 return false; |
| 400 } | 406 } |
| 401 }; | 407 }; |
| 402 | 408 |
| 403 } // mojo | 409 } // namespace mojo |
| 404 | 410 |
| 405 #endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ | 411 #endif // COMPONENTS_METRICS_PUBLIC_CPP_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ |
| OLD | NEW |