| 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..22736848645e1f01f47668e5c0e1b9df833b78be 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 (RefPtrWillBeRawPtr<ScriptedIdleTaskController> controller = callbackWrapper->controller())
|
| + 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 (RefPtrWillBeRawPtr<ScriptedIdleTaskController> controller = callbackWrapper->controller())
|
| + controller->callbackFired(callbackWrapper->id(), monotonicallyIncreasingTime(), IdleDeadline::CallbackType::CalledByTimeout);
|
| + callbackWrapper->cancel();
|
| + }
|
| +
|
| + void cancel()
|
| + {
|
| + m_controller = nullptr;
|
| }
|
|
|
| ScriptedIdleTaskController::CallbackId id() const { return m_id; }
|
|
|