| 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 b9301bb268e4d0c97319916752f2d31dd231834e..0e943508079bd814169fae18b759ff563f74c21f 100644
|
| --- a/components/metrics/profiler/tracking_synchronizer_observer.h
|
| +++ b/components/metrics/profiler/tracking_synchronizer_observer.h
|
| @@ -5,21 +5,53 @@
|
| #ifndef COMPONENTS_METRICS_PROFILER_TRACKING_SYNCHRONIZER_OBSERVER_H_
|
| #define COMPONENTS_METRICS_PROFILER_TRACKING_SYNCHRONIZER_OBSERVER_H_
|
|
|
| +#include <vector>
|
| +
|
| +#include "base/process/process_handle.h"
|
| +#include "components/metrics/proto/chrome_user_metrics_extension.pb.h"
|
| +#include "content/public/common/process_type.h"
|
| +
|
| +namespace base {
|
| +class TimeDelta;
|
| +}
|
| +
|
| namespace tracked_objects {
|
| -struct ProcessDataSnapshot;
|
| +struct ProcessDataPhaseSnapshot;
|
| }
|
|
|
| namespace metrics {
|
|
|
| +// Set of profiling events, in no guaranteed order. Implemented as a vector
|
| +// because we don't need to have an efficient .find() on it, so vector<> is more
|
| +// efficient.
|
| +typedef std::vector<ProfilerEventProto::ProfilerEvent> ProfilerEvents;
|
| +
|
| // Observer for notifications from the TrackingSynchronizer class.
|
| class TrackingSynchronizerObserver {
|
| public:
|
| - // Received |profiler_data| from a single process of |process_type|.
|
| + // 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.
|
| // The observer should assume there might be more data coming until
|
| - // |FinishedReceivingData()| is called.
|
| + // FinishedReceivingData() is called.
|
| virtual void ReceivedProfilerData(
|
| - const tracked_objects::ProcessDataSnapshot& profiler_data,
|
| - int process_type) = 0;
|
| + 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()|
|
| // (without re-registering). This is sent either when data from all processes
|
|
|