| Index: Source/core/dom/Document.cpp
|
| diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
|
| index be4eee242f3c4bf5fd3e270dea6cac481171ded7..2aff5c201de51a354399b31c0ee3e245a9520ab6 100644
|
| --- a/Source/core/dom/Document.cpp
|
| +++ b/Source/core/dom/Document.cpp
|
| @@ -91,6 +91,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"
|
| @@ -644,6 +645,11 @@ void Document::dispose()
|
| m_scriptedAnimationController->clearDocumentPointer();
|
| m_scriptedAnimationController.clear();
|
|
|
| + // FIXME: consider using ActiveDOMObject.
|
| + if (m_scriptedIdleTaskController)
|
| + m_scriptedIdleTaskController->clearDocumentPointer();
|
| + m_scriptedIdleTaskController.clear();
|
| +
|
| if (svgExtensions())
|
| accessSVGExtensions().pauseAnimations();
|
|
|
| @@ -2130,6 +2136,11 @@ void Document::detach(const AttachContext& context)
|
| m_scriptedAnimationController->clearDocumentPointer();
|
| m_scriptedAnimationController.clear();
|
|
|
| + // FIXME: consider using ActiveDOMObject.
|
| + if (m_scriptedIdleTaskController)
|
| + m_scriptedIdleTaskController->clearDocumentPointer();
|
| + m_scriptedIdleTaskController.clear();
|
| +
|
| if (svgExtensions())
|
| accessSVGExtensions().pauseAnimations();
|
|
|
| @@ -5130,6 +5141,26 @@ void Document::serviceScriptedAnimations(double monotonicAnimationStartTime)
|
| m_scriptedAnimationController->serviceScriptedAnimations(monotonicAnimationStartTime);
|
| }
|
|
|
| +ScriptedIdleTaskController& Document::ensureScriptedIdleTaskController()
|
| +{
|
| + if (!m_scriptedIdleTaskController) {
|
| + m_scriptedIdleTaskController = ScriptedIdleTaskController::create(this);
|
| + }
|
| + return *m_scriptedIdleTaskController;
|
| +}
|
| +
|
| +int Document::requestIdleFrame(IdleRequestCallback* callback)
|
| +{
|
| + return ensureScriptedIdleTaskController().registerCallback(callback);
|
| +}
|
| +
|
| +void Document::cancelIdleFrame(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
|
| @@ -5734,6 +5765,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);
|
|
|