Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index 5c0f88ee4a3d8a0d365b46fcd01fb9e373a48603..c3e646fda0e4be83148e06a750242f237225165d 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -92,6 +92,7 @@ |
#include "core/dom/ProcessingInstruction.h" |
#include "core/dom/ScriptRunner.h" |
#include "core/dom/ScriptedAnimationController.h" |
+#include "core/dom/ScriptedIdleTaskController.h" |
#include "core/dom/SelectorQuery.h" |
#include "core/dom/StaticNodeList.h" |
#include "core/dom/StyleEngine.h" |
@@ -590,6 +591,8 @@ void Document::dispose() |
m_scriptedAnimationController->clearDocumentPointer(); |
m_scriptedAnimationController.clear(); |
+ m_scriptedIdleTaskController.clear(); |
+ |
if (svgExtensions()) |
accessSVGExtensions().pauseAnimations(); |
@@ -2143,6 +2146,8 @@ void Document::detach(const AttachContext& context) |
m_scriptedAnimationController->clearDocumentPointer(); |
m_scriptedAnimationController.clear(); |
+ m_scriptedIdleTaskController.clear(); |
+ |
if (svgExtensions()) |
accessSVGExtensions().pauseAnimations(); |
@@ -5219,6 +5224,25 @@ void Document::serviceScriptedAnimations(double monotonicAnimationStartTime) |
m_scriptedAnimationController->serviceScriptedAnimations(monotonicAnimationStartTime); |
} |
+ScriptedIdleTaskController& Document::ensureScriptedIdleTaskController() |
+{ |
+ if (!m_scriptedIdleTaskController) |
+ m_scriptedIdleTaskController = ScriptedIdleTaskController::create(this, loader()->timing()); |
+ return *m_scriptedIdleTaskController; |
+} |
+ |
+int Document::requestIdleCallback(IdleRequestCallback* callback, double timeoutMillis) |
+{ |
+ return ensureScriptedIdleTaskController().registerCallback(callback, timeoutMillis); |
+} |
+ |
+void Document::cancelIdleCallback(int id) |
+{ |
+ if (!m_scriptedIdleTaskController) |
+ return; |
+ m_scriptedIdleTaskController->cancelCallback(id); |
+} |
+ |
PassRefPtrWillBeRawPtr<Touch> Document::createTouch(DOMWindow* window, EventTarget* target, int identifier, double pageX, double pageY, double screenX, double screenY, double radiusX, double radiusY, float rotationAngle, float force) const |
{ |
// Match behavior from when these types were integers, and avoid surprises from someone explicitly |
@@ -5747,6 +5771,7 @@ DEFINE_TRACE(Document) |
visitor->trace(m_styleSheetList); |
visitor->trace(m_mediaQueryMatcher); |
visitor->trace(m_scriptedAnimationController); |
+ visitor->trace(m_scriptedIdleTaskController); |
visitor->trace(m_textAutosizer); |
visitor->trace(m_registrationContext); |
visitor->trace(m_customElementMicrotaskRunQueue); |