1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// This is a simple struct with tracking information that is stored 6// with a PendingTask (when message_loop is handling the task). 7// Only the information that is shared with the profiler in tracked_objects 8// are included in this structure. 9 10 11#ifndef BASE_TRACKING_INFO_H_ 12#define BASE_TRACKING_INFO_H_ 13 14#include "base/base_export.h" 15#include "base/profiler/tracked_time.h" 16#include "base/time/time.h" 17 18namespace tracked_objects { 19class Location; 20class Births; 21} 22 23namespace base { 24 25// This structure is copied around by value. 26struct BASE_EXPORT TrackingInfo { 27 TrackingInfo(); 28 TrackingInfo(const tracked_objects::Location& posted_from, 29 base::TimeTicks delayed_run_time); 30 ~TrackingInfo(); 31 32 // To avoid conflating our stats with the delay duration in a PostDelayedTask, 33 // we identify such tasks, and replace their post_time with the time they 34 // were scheduled (requested?) to emerge from the delayed task queue. This 35 // means that queuing delay for such tasks will show how long they went 36 // unserviced, after they *could* be serviced. This is the same stat as we 37 // have for non-delayed tasks, and we consistently call it queuing delay. 38 tracked_objects::TrackedTime EffectiveTimePosted() const { 39 return delayed_run_time.is_null() 40 ? time_posted 41 : tracked_objects::TrackedTime(delayed_run_time); 42 } 43 44 // Record of location and thread that the task came from. 45 tracked_objects::Births* birth_tally; 46 47 // Time when the related task was posted. Note that this value may be empty 48 // if task profiling is disabled, and should only be used in conjunction with 49 // profiling-related reporting. 50 tracked_objects::TrackedTime time_posted; 51 52 // The time when the task should be run. 53 base::TimeTicks delayed_run_time; 54}; 55 56} // namespace base 57 58#endif // BASE_TRACKING_INFO_H_ 59