| 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_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ |
| 9 #define COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ | 9 #define COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ |
| 10 | 10 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 *out = base::StackSamplingProfiler::CallStackProfile(); | 127 *out = base::StackSamplingProfiler::CallStackProfile(); |
| 128 out->modules = std::move(modules); | 128 out->modules = std::move(modules); |
| 129 out->samples = std::move(samples); | 129 out->samples = std::move(samples); |
| 130 out->profile_duration = profile_duration; | 130 out->profile_duration = profile_duration; |
| 131 out->sampling_period = sampling_period; | 131 out->sampling_period = sampling_period; |
| 132 return true; | 132 return true; |
| 133 } | 133 } |
| 134 }; | 134 }; |
| 135 | 135 |
| 136 template <> | 136 template <> |
| 137 struct EnumTraits<metrics::mojom::SampleOrderingSpec, | 137 struct EnumTraits<metrics::mojom::Process, |
| 138 metrics::CallStackProfileParams::SampleOrderingSpec> { | 138 metrics::CallStackProfileParams::Process> { |
| 139 | 139 static metrics::mojom::Process ToMojom( |
| 140 static metrics::mojom::SampleOrderingSpec ToMojom( | 140 metrics::CallStackProfileParams::Process process) { |
| 141 metrics::CallStackProfileParams::SampleOrderingSpec spec) { | 141 switch (process) { |
| 142 switch (spec) { | 142 case metrics::CallStackProfileParams::Process::UNKNOWN_PROCESS: |
| 143 case metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE: | 143 return metrics::mojom::Process::UNKNOWN_PROCESS; |
| 144 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; | 144 case metrics::CallStackProfileParams::Process::BROWSER_PROCESS: |
| 145 case metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER: | 145 return metrics::mojom::Process::BROWSER_PROCESS; |
| 146 return metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER; | 146 case metrics::CallStackProfileParams::Process::RENDERER_PROCESS: |
| 147 return metrics::mojom::Process::RENDERER_PROCESS; |
| 148 case metrics::CallStackProfileParams::Process::GPU_PROCESS: |
| 149 return metrics::mojom::Process::GPU_PROCESS; |
| 150 case metrics::CallStackProfileParams::Process::UTILITY_PROCESS: |
| 151 return metrics::mojom::Process::UTILITY_PROCESS; |
| 152 case metrics::CallStackProfileParams::Process::ZYGOTE_PROCESS: |
| 153 return metrics::mojom::Process::ZYGOTE_PROCESS; |
| 154 case metrics::CallStackProfileParams::Process::SANDBOX_HELPER_PROCESS: |
| 155 return metrics::mojom::Process::SANDBOX_HELPER_PROCESS; |
| 156 case metrics::CallStackProfileParams::Process::PPAPI_PLUGIN_PROCESS: |
| 157 return metrics::mojom::Process::PPAPI_PLUGIN_PROCESS; |
| 158 case metrics::CallStackProfileParams::Process::PPAPI_BROKER_PROCESS: |
| 159 return metrics::mojom::Process::PPAPI_BROKER_PROCESS; |
| 147 } | 160 } |
| 148 NOTREACHED(); | 161 NOTREACHED(); |
| 149 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; | 162 return metrics::mojom::Process::UNKNOWN_PROCESS; |
| 150 } | 163 } |
| 151 | 164 |
| 152 static bool FromMojom( | 165 static bool FromMojom(metrics::mojom::Process process, |
| 153 metrics::mojom::SampleOrderingSpec spec, | 166 metrics::CallStackProfileParams::Process* out) { |
| 154 metrics::CallStackProfileParams::SampleOrderingSpec* out) { | 167 switch (process) { |
| 155 switch (spec) { | 168 case metrics::mojom::Process::UNKNOWN_PROCESS: |
| 156 case metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE: | 169 *out = metrics::CallStackProfileParams::Process::UNKNOWN_PROCESS; |
| 157 *out = metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE; | |
| 158 return true; | 170 return true; |
| 159 case metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER: | 171 case metrics::mojom::Process::BROWSER_PROCESS: |
| 160 *out = | 172 *out = metrics::CallStackProfileParams::Process::BROWSER_PROCESS; |
| 161 metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER; | 173 return true; |
| 174 case metrics::mojom::Process::RENDERER_PROCESS: |
| 175 *out = metrics::CallStackProfileParams::Process::RENDERER_PROCESS; |
| 176 return true; |
| 177 case metrics::mojom::Process::GPU_PROCESS: |
| 178 *out = metrics::CallStackProfileParams::Process::GPU_PROCESS; |
| 179 return true; |
| 180 case metrics::mojom::Process::UTILITY_PROCESS: |
| 181 *out = metrics::CallStackProfileParams::Process::UTILITY_PROCESS; |
| 182 return true; |
| 183 case metrics::mojom::Process::ZYGOTE_PROCESS: |
| 184 *out = metrics::CallStackProfileParams::Process::ZYGOTE_PROCESS; |
| 185 return true; |
| 186 case metrics::mojom::Process::SANDBOX_HELPER_PROCESS: |
| 187 *out = metrics::CallStackProfileParams::Process::SANDBOX_HELPER_PROCESS; |
| 188 return true; |
| 189 case metrics::mojom::Process::PPAPI_PLUGIN_PROCESS: |
| 190 *out = metrics::CallStackProfileParams::Process::PPAPI_PLUGIN_PROCESS; |
| 191 return true; |
| 192 case metrics::mojom::Process::PPAPI_BROKER_PROCESS: |
| 193 *out = metrics::CallStackProfileParams::Process::PPAPI_BROKER_PROCESS; |
| 162 return true; | 194 return true; |
| 163 } | 195 } |
| 164 return false; | 196 return false; |
| 197 } |
| 198 }; |
| 199 |
| 200 template <> |
| 201 struct EnumTraits<metrics::mojom::Thread, |
| 202 metrics::CallStackProfileParams::Thread> { |
| 203 static metrics::mojom::Thread ToMojom( |
| 204 metrics::CallStackProfileParams::Thread thread) { |
| 205 switch (thread) { |
| 206 case metrics::CallStackProfileParams::Thread::UNKNOWN_THREAD: |
| 207 return metrics::mojom::Thread::UNKNOWN_THREAD; |
| 208 case metrics::CallStackProfileParams::Thread::UI_THREAD: |
| 209 return metrics::mojom::Thread::UI_THREAD; |
| 210 case metrics::CallStackProfileParams::Thread::FILE_THREAD: |
| 211 return metrics::mojom::Thread::FILE_THREAD; |
| 212 case metrics::CallStackProfileParams::Thread::FILE_USER_BLOCKING_THREAD: |
| 213 return metrics::mojom::Thread::FILE_USER_BLOCKING_THREAD; |
| 214 case metrics::CallStackProfileParams::Thread::PROCESS_LAUNCHER_THREAD: |
| 215 return metrics::mojom::Thread::PROCESS_LAUNCHER_THREAD; |
| 216 case metrics::CallStackProfileParams::Thread::CACHE_THREAD: |
| 217 return metrics::mojom::Thread::CACHE_THREAD; |
| 218 case metrics::CallStackProfileParams::Thread::IO_THREAD: |
| 219 return metrics::mojom::Thread::IO_THREAD; |
| 220 case metrics::CallStackProfileParams::Thread::DB_THREAD: |
| 221 return metrics::mojom::Thread::DB_THREAD; |
| 222 case metrics::CallStackProfileParams::Thread::GPU_MAIN_THREAD: |
| 223 return metrics::mojom::Thread::GPU_MAIN_THREAD; |
| 224 case metrics::CallStackProfileParams::Thread::RENDER_THREAD: |
| 225 return metrics::mojom::Thread::RENDER_THREAD; |
| 226 case metrics::CallStackProfileParams::Thread::UTILITY_THREAD: |
| 227 return metrics::mojom::Thread::UTILITY_THREAD; |
| 228 } |
| 229 NOTREACHED(); |
| 230 return metrics::mojom::Thread::UNKNOWN_THREAD; |
| 231 } |
| 232 |
| 233 static bool FromMojom(metrics::mojom::Thread thread, |
| 234 metrics::CallStackProfileParams::Thread* out) { |
| 235 switch (thread) { |
| 236 case metrics::mojom::Thread::UNKNOWN_THREAD: |
| 237 *out = metrics::CallStackProfileParams::Thread::UNKNOWN_THREAD; |
| 238 return true; |
| 239 case metrics::mojom::Thread::UI_THREAD: |
| 240 *out = metrics::CallStackProfileParams::Thread::UI_THREAD; |
| 241 return true; |
| 242 case metrics::mojom::Thread::FILE_THREAD: |
| 243 *out = metrics::CallStackProfileParams::Thread::FILE_THREAD; |
| 244 return true; |
| 245 case metrics::mojom::Thread::FILE_USER_BLOCKING_THREAD: |
| 246 *out = |
| 247 metrics::CallStackProfileParams::Thread::FILE_USER_BLOCKING_THREAD; |
| 248 return true; |
| 249 case metrics::mojom::Thread::PROCESS_LAUNCHER_THREAD: |
| 250 *out = metrics::CallStackProfileParams::Thread::PROCESS_LAUNCHER_THREAD; |
| 251 return true; |
| 252 case metrics::mojom::Thread::CACHE_THREAD: |
| 253 *out = metrics::CallStackProfileParams::Thread::CACHE_THREAD; |
| 254 return true; |
| 255 case metrics::mojom::Thread::IO_THREAD: |
| 256 *out = metrics::CallStackProfileParams::Thread::IO_THREAD; |
| 257 return true; |
| 258 case metrics::mojom::Thread::DB_THREAD: |
| 259 *out = metrics::CallStackProfileParams::Thread::DB_THREAD; |
| 260 return true; |
| 261 case metrics::mojom::Thread::GPU_MAIN_THREAD: |
| 262 *out = metrics::CallStackProfileParams::Thread::GPU_MAIN_THREAD; |
| 263 return true; |
| 264 case metrics::mojom::Thread::RENDER_THREAD: |
| 265 *out = metrics::CallStackProfileParams::Thread::RENDER_THREAD; |
| 266 return true; |
| 267 case metrics::mojom::Thread::UTILITY_THREAD: |
| 268 *out = metrics::CallStackProfileParams::Thread::UTILITY_THREAD; |
| 269 return true; |
| 270 } |
| 271 return false; |
| 165 } | 272 } |
| 166 }; | 273 }; |
| 167 | 274 |
| 168 template <> | 275 template <> |
| 169 struct EnumTraits<metrics::mojom::Trigger, | 276 struct EnumTraits<metrics::mojom::Trigger, |
| 170 metrics::CallStackProfileParams::Trigger> { | 277 metrics::CallStackProfileParams::Trigger> { |
| 171 static metrics::mojom::Trigger ToMojom( | 278 static metrics::mojom::Trigger ToMojom( |
| 172 metrics::CallStackProfileParams::Trigger trigger) { | 279 metrics::CallStackProfileParams::Trigger trigger) { |
| 173 switch (trigger) { | 280 switch (trigger) { |
| 174 case metrics::CallStackProfileParams::Trigger::UNKNOWN: | 281 case metrics::CallStackProfileParams::Trigger::UNKNOWN: |
| (...skipping 25 matching lines...) Expand all Loading... |
| 200 *out = metrics::CallStackProfileParams::Trigger::THREAD_HUNG; | 307 *out = metrics::CallStackProfileParams::Trigger::THREAD_HUNG; |
| 201 return true; | 308 return true; |
| 202 } | 309 } |
| 203 return false; | 310 return false; |
| 204 } | 311 } |
| 205 }; | 312 }; |
| 206 | 313 |
| 207 template <> | 314 template <> |
| 208 struct StructTraits<metrics::mojom::CallStackProfileParamsDataView, | 315 struct StructTraits<metrics::mojom::CallStackProfileParamsDataView, |
| 209 metrics::CallStackProfileParams> { | 316 metrics::CallStackProfileParams> { |
| 317 static metrics::CallStackProfileParams::Process process( |
| 318 const metrics::CallStackProfileParams& params) { |
| 319 return params.process; |
| 320 } |
| 321 static metrics::CallStackProfileParams::Thread thread( |
| 322 const metrics::CallStackProfileParams& params) { |
| 323 return params.thread; |
| 324 } |
| 210 static metrics::CallStackProfileParams::Trigger trigger( | 325 static metrics::CallStackProfileParams::Trigger trigger( |
| 211 const metrics::CallStackProfileParams& params) { | 326 const metrics::CallStackProfileParams& params) { |
| 212 return params.trigger; | 327 return params.trigger; |
| 213 } | 328 } |
| 214 static metrics::CallStackProfileParams::SampleOrderingSpec ordering_spec( | 329 static metrics::CallStackProfileParams::SampleOrderingSpec ordering_spec( |
| 215 const metrics::CallStackProfileParams& params) { | 330 const metrics::CallStackProfileParams& params) { |
| 216 return params.ordering_spec; | 331 return params.ordering_spec; |
| 217 } | 332 } |
| 218 | 333 |
| 219 static bool Read(metrics::mojom::CallStackProfileParamsDataView data, | 334 static bool Read(metrics::mojom::CallStackProfileParamsDataView data, |
| 220 metrics::CallStackProfileParams* out) { | 335 metrics::CallStackProfileParams* out) { |
| 336 metrics::CallStackProfileParams::Process process; |
| 337 metrics::CallStackProfileParams::Thread thread; |
| 221 metrics::CallStackProfileParams::Trigger trigger; | 338 metrics::CallStackProfileParams::Trigger trigger; |
| 222 metrics::CallStackProfileParams::SampleOrderingSpec ordering_spec; | 339 metrics::CallStackProfileParams::SampleOrderingSpec ordering_spec; |
| 223 if (!data.ReadTrigger(&trigger) || !data.ReadOrderingSpec(&ordering_spec)) | 340 if (!data.ReadProcess(&process) || !data.ReadThread(&thread) || |
| 341 !data.ReadTrigger(&trigger) || !data.ReadOrderingSpec(&ordering_spec)) { |
| 224 return false; | 342 return false; |
| 225 *out = metrics::CallStackProfileParams(trigger, ordering_spec); | 343 } |
| 344 *out = metrics::CallStackProfileParams(process, thread, trigger, |
| 345 ordering_spec); |
| 226 return true; | 346 return true; |
| 227 } | 347 } |
| 228 }; | 348 }; |
| 229 | 349 |
| 350 template <> |
| 351 struct EnumTraits<metrics::mojom::SampleOrderingSpec, |
| 352 metrics::CallStackProfileParams::SampleOrderingSpec> { |
| 353 |
| 354 static metrics::mojom::SampleOrderingSpec ToMojom( |
| 355 metrics::CallStackProfileParams::SampleOrderingSpec spec) { |
| 356 switch (spec) { |
| 357 case metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE: |
| 358 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; |
| 359 case metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER: |
| 360 return metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER; |
| 361 } |
| 362 NOTREACHED(); |
| 363 return metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE; |
| 364 } |
| 365 |
| 366 static bool FromMojom( |
| 367 metrics::mojom::SampleOrderingSpec spec, |
| 368 metrics::CallStackProfileParams::SampleOrderingSpec* out) { |
| 369 switch (spec) { |
| 370 case metrics::mojom::SampleOrderingSpec::MAY_SHUFFLE: |
| 371 *out = metrics::CallStackProfileParams::SampleOrderingSpec::MAY_SHUFFLE; |
| 372 return true; |
| 373 case metrics::mojom::SampleOrderingSpec::PRESERVE_ORDER: |
| 374 *out = |
| 375 metrics::CallStackProfileParams::SampleOrderingSpec::PRESERVE_ORDER; |
| 376 return true; |
| 377 } |
| 378 return false; |
| 379 } |
| 380 }; |
| 381 |
| 230 } // mojo | 382 } // mojo |
| 231 | 383 |
| 232 #endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ | 384 #endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_STRUCT_TRAITS_H_ |
| OLD | NEW |