Index: base/message_loop/message_pump.h |
diff --git a/base/message_loop/message_pump.h b/base/message_loop/message_pump.h |
index 0ebba3a3e60ccfd07abb2808e2632a254a76747c..816bb3c3d39eb88097731ad9cc2e4178c4ae1a63 100644 |
--- a/base/message_loop/message_pump.h |
+++ b/base/message_loop/message_pump.h |
@@ -6,10 +6,12 @@ |
#define BASE_MESSAGE_LOOP_MESSAGE_PUMP_H_ |
#include "base/base_export.h" |
+#include "base/basictypes.h" |
#include "base/threading/non_thread_safe.h" |
namespace base { |
+class TimeDelta; |
class TimeTicks; |
class BASE_EXPORT MessagePump : public NonThreadSafe { |
@@ -39,6 +41,19 @@ class BASE_EXPORT MessagePump : public NonThreadSafe { |
// Called from within Run just before the message pump goes to sleep. |
// Returns true to indicate that idle work was done. |
virtual bool DoIdleWork() = 0; |
+ |
+ // Via the two required out pointers, returns the length of the Delegate's |
+ // work queue and the length of time that the first item in the queue has |
+ // been waiting to run. If the work queue is empty, the count and delay |
+ // will both be zero. |
+ // Note that this only counts the tasks in the ready-to-run queue and not |
+ // the incoming queue that is used by other threads to post tasks. The |
+ // latter queue requires holding a lock, which is deemed too expensive for |
+ // instrumentation code. Under normal conditions, the incoming queue should |
+ // be small or zero, but under heavy loads it may be much larger and |
+ // |queue_count| may be up to 1/4 the size of the incoming queue. |
+ virtual void GetQueueingInformation(size_t* queue_count, |
+ TimeDelta* queueing_delay) {} |
}; |
MessagePump(); |