Changeset 124336 in webkit


Ignore:
Timestamp:
Aug 1, 2012 8:45:28 AM (12 years ago)
Author:
zeno.albisser@nokia.com
Message:

[Qt]REGRESSION(r123786): It made 3 fast/animation tests fail.
https://bugs.webkit.org/show_bug.cgi?id=92490

Source/WebKit/qt:

QAbstractAnimation:start() is implicitly calling updateTime
without going through the event loop. This resulted in executing
scripted animation callbacks right when registering a first callback.

Reviewed by Noam Rosenthal.

  • WebCoreSupport/ChromeClientQt.cpp:

(WebCore::RefreshAnimation::scheduleAnimation):

Invoke QAbstractAnimation::start() method through the event loop.

Source/WebKit2:

Make sure that scripted animations are also serviced when
forceRepaint is being executed. As this is what is being used for
running layout tests.
Move servicing of scripted animations and layoutIfNeeded call
into a separate function syncDisplayState.
This function can then be called from forceRepaint as well as from
performScheduledLayerFlush.

Reviewed by Noam Rosenthal.

  • WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp:

(WebKit::LayerTreeCoordinator::forceRepaint):
(WebKit::LayerTreeCoordinator::performScheduledLayerFlush):
(WebKit):
(WebKit::LayerTreeCoordinator::syncDisplayState):

  • WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h:

(LayerTreeCoordinator):

LayoutTests:

Reviewed by Noam Rosenthal.

  • platform/qt/Skipped: Unskipping the tests listed below.

fast/animation/request-animation-frame-cancel2.html
fast/animation/request-animation-frame-detach-element.html
fast/animation/request-animation-frame-during-modal.html
fast/animation/request-animation-frame-timestamps.html
fast/dom/Window/post-message-crash.html

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r124326 r124336  
     12012-08-01  Zeno Albisser  <zeno@webkit.org>
     2
     3        [Qt]REGRESSION(r123786): It made 3 fast/animation tests fail.
     4        https://bugs.webkit.org/show_bug.cgi?id=92490
     5
     6        Reviewed by Noam Rosenthal.
     7
     8        * platform/qt/Skipped: Unskipping the tests listed below.
     9            fast/animation/request-animation-frame-cancel2.html
     10            fast/animation/request-animation-frame-detach-element.html
     11            fast/animation/request-animation-frame-during-modal.html
     12            fast/animation/request-animation-frame-timestamps.html
     13            fast/dom/Window/post-message-crash.html
     14
    1152012-08-01  Keishi Hattori  <keishi@webkit.org>
    216
  • trunk/LayoutTests/platform/qt/Skipped

    r124295 r124336  
    19691969fast/repaint/line-flow-with-floats-in-regions.html
    19701970
    1971 # [Qt]REGRESSION(r123786) It made 3 fast/animation tests fail
    1972 # https://bugs.webkit.org/show_bug.cgi?id=92490
    1973 fast/animation/request-animation-frame-cancel2.html
    1974 fast/animation/request-animation-frame-detach-element.html
    1975 fast/animation/request-animation-frame-during-modal.html
    1976 fast/animation/request-animation-frame-timestamps.html
    1977 fast/dom/Window/post-message-crash.html
    1978 
    19791971# [Qt] fast/block/positioning/offsetLeft-offsetTop-multicolumn.html is failing
    19801972# https://bugs.webkit.org/show_bug.cgi?id=86130
  • trunk/Source/WebKit/qt/ChangeLog

    r123841 r124336  
     12012-08-01  Zeno Albisser  <zeno@webkit.org>
     2
     3        [Qt]REGRESSION(r123786): It made 3 fast/animation tests fail.
     4        https://bugs.webkit.org/show_bug.cgi?id=92490
     5
     6        QAbstractAnimation:start() is implicitly calling updateTime
     7        without going through the event loop. This resulted in executing
     8        scripted animation callbacks right when registering a first callback.
     9
     10        Reviewed by Noam Rosenthal.
     11
     12        * WebCoreSupport/ChromeClientQt.cpp:
     13        (WebCore::RefreshAnimation::scheduleAnimation):
     14            Invoke QAbstractAnimation::start() method through the event loop.
     15
    1162012-07-27  Csaba Osztrogonác  <ossy@webkit.org>
    217
  • trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp

    r123796 r124336  
    105105        m_animationScheduled = true;
    106106        if (state() != QAbstractAnimation::Running)
    107             start();
     107            QMetaObject::invokeMethod(this, "start", Qt::QueuedConnection);
    108108    }
    109109
  • trunk/Source/WebKit2/ChangeLog

    r124318 r124336  
     12012-08-01  Zeno Albisser  <zeno@webkit.org>
     2
     3        [Qt]REGRESSION(r123786): It made 3 fast/animation tests fail.
     4        https://bugs.webkit.org/show_bug.cgi?id=92490
     5
     6        Make sure that scripted animations are also serviced when
     7        forceRepaint is being executed. As this is what is being used for
     8        running layout tests.
     9        Move servicing of scripted animations and layoutIfNeeded call
     10        into a separate function syncDisplayState.
     11        This function can then be called from forceRepaint as well as from
     12        performScheduledLayerFlush.
     13
     14        Reviewed by Noam Rosenthal.
     15
     16        * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp:
     17        (WebKit::LayerTreeCoordinator::forceRepaint):
     18        (WebKit::LayerTreeCoordinator::performScheduledLayerFlush):
     19        (WebKit):
     20        (WebKit::LayerTreeCoordinator::syncDisplayState):
     21        * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h:
     22        (LayerTreeCoordinator):
     23
    1242012-08-01  Carlos Garcia Campos  <cgarcia@igalia.com>
    225
  • trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp

    r124200 r124336  
    175175void LayerTreeCoordinator::forceRepaint()
    176176{
     177    // This is necessary for running layout tests. Since in this case we are not waiting for a UIProcess to reply nicely.
     178    // Instead we are just triggering forceRepaint. But we still want to have the scripted animation callbacks being executed.
     179    syncDisplayState();
     180
    177181    // We need to schedule another flush, otherwise the forced paint might cancel a later expected flush.
    178182    // This is aligned with LayerTreeHostCA.
     
    357361    if (m_isSuspended || m_waitingForUIProcess)
    358362        return;
     363
     364    syncDisplayState();
     365
     366    if (!m_isValid)
     367        return;
     368
     369    if (flushPendingLayerChanges())
     370        didPerformScheduledLayerFlush();
     371}
     372
     373void LayerTreeCoordinator::syncDisplayState()
     374{
    359375#if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER) && !USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR)
    360376    // Make sure that any previously registered animation callbacks are being executed before we flush the layers.
     
    363379
    364380    m_webPage->layoutIfNeeded();
    365 
    366     if (!m_isValid)
    367         return;
    368 
    369     if (flushPendingLayerChanges())
    370         didPerformScheduledLayerFlush();
    371381}
    372382
  • trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h

    r123796 r124336  
    109109    void performScheduledLayerFlush();
    110110    void didPerformScheduledLayerFlush();
     111    void syncDisplayState();
    111112
    112113    OwnPtr<WebCore::GraphicsLayer> m_rootLayer;
Note: See TracChangeset for help on using the changeset viewer.