Chromium Code Reviews| Index: src/cancelable-task.h |
| diff --git a/src/cancelable-task.h b/src/cancelable-task.h |
| index 1a15e248efe8bf555b4f4e6db6e0ca73e7b1a76a..8e1f9b1f505d3b4786ecc88c1caaaf886501adcf 100644 |
| --- a/src/cancelable-task.h |
| +++ b/src/cancelable-task.h |
| @@ -13,13 +13,29 @@ namespace internal { |
| class Isolate; |
| -class CancelableTask : public Task { |
| + |
| +class Cancelable { |
| public: |
| - explicit CancelableTask(Isolate* isolate); |
| - ~CancelableTask() override; |
| + explicit Cancelable(Isolate* isolate); |
| + virtual ~Cancelable(); |
| + |
| + virtual void Cancel() { is_cancelled_ = true; } |
| + |
| + protected: |
| + Isolate* isolate_; |
| + bool is_cancelled_; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(Cancelable); |
| +}; |
| - void Cancel() { is_cancelled_ = true; } |
| +// Multiple inheritance can be used because Task is a pure interface. |
| +class CancelableTask : public Cancelable, public Task { |
| + public: |
| + explicit CancelableTask(Isolate* isolate) : Cancelable(isolate) {} |
| + |
| + // Task overrides. |
| void Run() final { |
| if (!is_cancelled_) { |
| RunInternal(); |
| @@ -28,15 +44,30 @@ class CancelableTask : public Task { |
| virtual void RunInternal() = 0; |
| - protected: |
| - Isolate* isolate_; |
| - |
| private: |
| - bool is_cancelled_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(CancelableTask); |
| }; |
| + |
| +// Multiple inheritance can be used because IdleTask is a pure interface. |
| +class CancelableIdleTask : public Cancelable, public IdleTask { |
| + public: |
| + explicit CancelableIdleTask(Isolate* isolate) : Cancelable(isolate) {} |
| + |
| + // Task overrides. |
|
epertoso
2015/07/30 12:05:30
These are IdleTask overrides.
ulan
2015/07/30 13:22:13
Done.
|
| + void Run(double deadline_in_seconds) final { |
| + if (!is_cancelled_) { |
| + RunInternal(deadline_in_seconds); |
| + } |
| + } |
| + |
| + virtual void RunInternal(double deadline_in_seconds) = 0; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(CancelableIdleTask); |
| +}; |
| + |
| + |
| } // namespace internal |
| } // namespace v8 |