Index: Source/platform/scheduler/TracedTask.h |
diff --git a/Source/platform/scheduler/TracedTask.h b/Source/platform/scheduler/TracedTask.h |
index 87f18beec58d5ffefd0d73a249b2ac30771980f6..1a3296e594281e3993923da8c65b67702af17abf 100644 |
--- a/Source/platform/scheduler/TracedTask.h |
+++ b/Source/platform/scheduler/TracedTask.h |
@@ -10,6 +10,7 @@ |
#include "platform/TraceLocation.h" |
namespace blink { |
+namespace internal { |
#ifdef MANGLE_COMPILES_ON_WIN_OK |
// TODO: Once win version compiles correctly when using TRACE_ID_MANGLE remove |
@@ -21,23 +22,51 @@ namespace blink { |
class TracedTask { |
public: |
- typedef Function<void()> Task; |
+ virtual void run() const = 0; |
+ virtual ~TracedTask(); |
- void run() const; |
+protected: |
+ TracedTask(const TraceLocation&, const char* traceName); |
+ TraceLocation getLocation() const; |
+ const char* getTraceName() const; |
+ void endFlowTraceEvent() const; |
private: |
- friend class Scheduler; |
- TracedTask(const Task&, const TraceLocation&, const char* traceName); |
- |
// Declared volatile as it is atomically incremented. |
static volatile int s_nextFlowTraceID; |
uint64_t m_flowTraceID; |
- Task m_task; |
TraceLocation m_location; |
const char* m_traceName; |
}; |
+class TracedStandardTask : public TracedTask { |
+public: |
+ typedef Function<void()> Task; |
+ |
+ static PassOwnPtr<TracedStandardTask> Create(const Task&, const TraceLocation&, const char* traceName); |
+ virtual void run() const; |
+ virtual ~TracedStandardTask(); |
+ |
+private: |
+ TracedStandardTask(const Task&, const TraceLocation&, const char* traceName); |
+ Task m_task; |
+}; |
+ |
+class TracedIdleTask : public TracedTask { |
+public: |
+ typedef Function<void(double deadlineSeconds)> IdleTask; |
+ |
+ static PassOwnPtr<TracedIdleTask> Create(const IdleTask&, const TraceLocation&, const char* traceName); |
+ virtual void run() const; |
+ virtual ~TracedIdleTask(); |
+ |
+private: |
+ TracedIdleTask(const IdleTask&, const TraceLocation&, const char* traceName); |
+ IdleTask m_idleTask; |
+}; |
+ |
+} // namespace internal |
} // namespace blink |
#endif // TracedTask_h |