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; } |