Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.cpp b/third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.cpp |
| index b0bdb09aeb8c4f3fada72a03476c28700fc39e66..4c8427651bbf1e3c2a1a1c1cf08428663b437168 100644 |
| --- a/third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.cpp |
| +++ b/third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.cpp |
| @@ -34,12 +34,21 @@ public: |
| static void idleTaskFired(PassRefPtr<IdleRequestCallbackWrapper> callbackWrapper, double deadlineSeconds) |
| { |
| // TODO(rmcilroy): Implement clamping of deadline in some form. |
| - callbackWrapper->controller()->callbackFired(callbackWrapper->id(), deadlineSeconds, IdleDeadline::CallbackType::CalledWhenIdle); |
| + if (callbackWrapper->controller()) |
|
esprehn
2016/03/16 16:32:18
We normally assign to a local in the if to avoid t
rmcilroy
2016/03/16 16:40:15
Done.
|
| + callbackWrapper->controller()->callbackFired(callbackWrapper->id(), deadlineSeconds, IdleDeadline::CallbackType::CalledWhenIdle); |
| + callbackWrapper->cancel(); |
| } |
| static void timeoutFired(PassRefPtr<IdleRequestCallbackWrapper> callbackWrapper) |
| { |
| - callbackWrapper->controller()->callbackFired(callbackWrapper->id(), monotonicallyIncreasingTime(), IdleDeadline::CallbackType::CalledByTimeout); |
| + if (callbackWrapper->controller()) |
| + callbackWrapper->controller()->callbackFired(callbackWrapper->id(), monotonicallyIncreasingTime(), IdleDeadline::CallbackType::CalledByTimeout); |
| + callbackWrapper->cancel(); |
| + } |
| + |
| + void cancel() |
| + { |
| + m_controller = nullptr; |
| } |
| ScriptedIdleTaskController::CallbackId id() const { return m_id; } |