Chromium Code Reviews| Index: components/metrics/profiler/tracking_synchronizer_observer.h |
| diff --git a/components/metrics/profiler/tracking_synchronizer_observer.h b/components/metrics/profiler/tracking_synchronizer_observer.h |
| index 0e943508079bd814169fae18b759ff563f74c21f..b4ebe52f4ddab51680c7604dd148fa3a925bdf0a 100644 |
| --- a/components/metrics/profiler/tracking_synchronizer_observer.h |
| +++ b/components/metrics/profiler/tracking_synchronizer_observer.h |
| @@ -8,6 +8,7 @@ |
| #include <vector> |
| #include "base/process/process_handle.h" |
| +#include "base/time/time.h" |
| #include "components/metrics/proto/chrome_user_metrics_extension.pb.h" |
| #include "content/public/common/process_type.h" |
| @@ -26,31 +27,46 @@ namespace metrics { |
| // efficient. |
| typedef std::vector<ProfilerEventProto::ProfilerEvent> ProfilerEvents; |
| +// Attributes of profiler data passed to |
| +// TrackingSynchronizerObserver::ReceivedProfilerData. |
| +struct ProfilerDataAttributes { |
| + ProfilerDataAttributes(int profiling_phase, |
| + base::ProcessId process_id, |
| + content::ProcessType process_type, |
| + base::TimeTicks phase_start, |
| + base::TimeTicks phase_finish); |
| + |
| + // 0-indexed profiling phase number. |
| + int profiling_phase; |
| + |
| + // ID of the process that reported the data. |
| + base::ProcessId process_id; |
| + |
| + // Type of the process that reported the data. |
| + content::ProcessType process_type; |
| + |
| + // Time of the profiling phase start. |
| + base::TimeTicks phase_start; |
| + |
| + // Time of the profiling phase finish. |
| + base::TimeTicks phase_finish; |
|
Ilya Sherman
2015/04/17 02:14:26
nit: Can all of the attributes be marked as const?
vadimt
2015/04/17 16:15:51
Done.
|
| +}; |
| + |
| // Observer for notifications from the TrackingSynchronizer class. |
| class TrackingSynchronizerObserver { |
| public: |
| - // TODO(vadimt): Consider isherman@ idea: I'd change the phase_start and |
| - // phase_finish from TimeDeltas to TimeTicks. And I'd omit the |past_events| |
| - // list -- either in favor of a single ProfilerEvent that corresponds to the |
| - // phase, or a method on the TrackingSynchronizer that can translate a |
| - // profiling_phase to a ProfilerEvent. |
| - |
| - // Received |process_data_phase| for profiling phase |profiling_phase| from a |
| - // single process of |process_type|. The phase start and finish times, |
| - // relative to the start time are |phase_start| and |
| - // |phase_finish|. All profiling phases prior to the reported one have already |
| - // completed, and each completion was associated with an instance of |
| - // ProfilerEventProto::ProfilerEvent. |past_events| contains events associated |
| - // with completions of phases prior to the reported one. |
| + // Received |process_data_phase| for profiling phase and process defined by |
| + // |attributes|. |
| + // Each completed phase is associated with an event that triggered the |
| + // completion of the phase. |past_events| contains the set of events that |
| + // completed prior to the reported phase. This data structure is useful for |
| + // quickly computing the full set of profiled traces that occurred before or |
| + // after a given event. |
| // The observer should assume there might be more data coming until |
| // FinishedReceivingData() is called. |
| virtual void ReceivedProfilerData( |
| + const ProfilerDataAttributes& attributes, |
| const tracked_objects::ProcessDataPhaseSnapshot& process_data_phase, |
| - base::ProcessId process_id, |
| - content::ProcessType process_type, |
| - int profiling_phase, |
| - base::TimeDelta phase_start, |
| - base::TimeDelta phase_finish, |
| const ProfilerEvents& past_events) = 0; |
| // The observer should not expect any more calls to |ReceivedProfilerData()| |