2011-02-15  James Robinson  <jamesr@chromium.org>

        Reviewed by Alexey Proskuryakov.

        requestAnimationFrame callbacks should not fire within a modal dialog
        https://bugs.webkit.org/show_bug.cgi?id=53188

        Tests that requestAnimationFrame callbacks are suspended while a modal
        dialog is showing.

        * fast/animation/request-animation-frame-during-modal-expected.txt: Added.
        * fast/animation/request-animation-frame-during-modal.html: Added.
2011-02-15  James Robinson  <jamesr@chromium.org>

        Reviewed by Alexey Proskuryakov.

        requestAnimationFrame callbacks should not fire within a modal dialog
        https://bugs.webkit.org/show_bug.cgi?id=53188

        requestAnimationFrame callbacks shouldn't fire while a modal dialog is up (like a window.alert()).
        This matches Firefox and other async APIs.  This patch moves the callback servicing into its own
        controller class which receives notifications on suspend/resume.

        Test: fast/animation/request-animation-frame-during-modal.html

        * WebCore.gypi:
        * bindings/js/ScriptDebugServer.cpp:
        (WebCore::ScriptDebugServer::setJavaScriptPaused):
        * dom/Document.cpp:
        (WebCore::Document::Document):
        (WebCore::Document::suspendScriptedAnimationControllerCallbacks):
        (WebCore::Document::resumeScriptedAnimationControllerCallbacks):
        (WebCore::Document::webkitRequestAnimationFrame):
        (WebCore::Document::webkitCancelRequestAnimationFrame):
        (WebCore::Document::serviceScriptedAnimations):
        * dom/Document.h:
        * dom/ScriptExecutionContext.h:
        (WebCore::ScriptExecutionContext::suspendScriptedAnimationControllerCallbacks):
        (WebCore::ScriptExecutionContext::resumeScriptedAnimationControllerCallbacks):
        * dom/ScriptedAnimationController.cpp: Added.
        (WebCore::ScriptedAnimationController::ScriptedAnimationController):
        (WebCore::ScriptedAnimationController::suspend):
        (WebCore::ScriptedAnimationController::resume):
        (WebCore::ScriptedAnimationController::registerCallback):
        (WebCore::ScriptedAnimationController::cancelCallback):
        (WebCore::ScriptedAnimationController::serviceScriptedAnimations):
        * dom/ScriptedAnimationController.h: Added.
        (WebCore::ScriptedAnimationController::create):
        * history/CachedFrame.cpp:
        (WebCore::CachedFrameBase::restore):
        (WebCore::CachedFrame::CachedFrame):
        * page/PageGroupLoadDeferrer.cpp:
        (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
        (WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@78648 268f45cc-cd09-0410-ab3c-d52691b4dbfc
13 files changed