[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

jschuh at chromium.org jschuh at chromium.org
Sun Feb 20 23:54:50 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit ce0961b932c55f7146de60b0602a3ad8ee6426b3
Author: jschuh at chromium.org <jschuh at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jan 26 20:42:28 2011 +0000

    2011-01-26  Justin Schuh  <jschuh at chromium.org>
    
            Reviewed by Adam Barth.
    
            Make fireEventsAndUpdateStyle use stack local vectors.
            https://bugs.webkit.org/show_bug.cgi?id=46760
    
            Test: animations/animation-add-events-in-handler.html
    
            * page/animation/AnimationController.cpp:
            (WebCore::AnimationControllerPrivate::fireEventsAndUpdateStyle):
    2011-01-26  Justin Schuh  <jschuh at chromium.org>
    
            Reviewed by Adam Barth.
    
            Make fireEventsAndUpdateStyle use stack local vectors.
            https://bugs.webkit.org/show_bug.cgi?id=46760
    
            * animations/animation-add-events-in-handler-expected.txt: Added.
            * animations/animation-add-events-in-handler.html: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76708 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index dddb964..500de8a 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
+2011-01-26  Justin Schuh  <jschuh at chromium.org>
+
+        Reviewed by Adam Barth.
+
+        Make fireEventsAndUpdateStyle use stack local vectors.   
+        https://bugs.webkit.org/show_bug.cgi?id=46760
+
+        * animations/animation-add-events-in-handler-expected.txt: Added.
+        * animations/animation-add-events-in-handler.html: Added.
+
 2011-01-26  Tony Chang  <tony at chromium.org>
 
         Unreviewed, marking fast/overflow/overflow-rtl-vertical.html as
diff --git a/LayoutTests/animations/animation-add-events-in-handler-expected.txt b/LayoutTests/animations/animation-add-events-in-handler-expected.txt
new file mode 100644
index 0000000..1dd9c0b
--- /dev/null
+++ b/LayoutTests/animations/animation-add-events-in-handler-expected.txt
@@ -0,0 +1 @@
+PASS: Adding animation events in the handler did not crash.
diff --git a/LayoutTests/animations/animation-add-events-in-handler.html b/LayoutTests/animations/animation-add-events-in-handler.html
new file mode 100644
index 0000000..a2c14eb
--- /dev/null
+++ b/LayoutTests/animations/animation-add-events-in-handler.html
@@ -0,0 +1,58 @@
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+
+function touchElement(evt) {
+    getComputedStyle(evt.srcElement.firstElementChild)['-webkit-animation-duration'];
+    evt.srcElement.firstElementChild.style.display = 'block';
+    total++;
+    if (total == 500) {
+        document.getElementById("results").innerHTML = "PASS: Adding animation events in the handler did not crash.";
+        if (window.layoutTestController)
+          layoutTestController.notifyDone();
+    }
+}
+
+window.onload = function() {
+    total = 0;
+    var padding = document.getElementsByClassName("padding");
+    for (var i = 0; i < padding.length; i++)
+        padding[i].addEventListener('webkitAnimationIteration', touchElement, false, false);
+};
+</script>
+<style>
+ at -webkit-keyframes keyframes {
+    from { }
+}
+
+.crash {
+    -webkit-animation-name: keyframes;
+}
+
+.padding {
+    -webkit-animation-name: keyframes;
+    -webkit-animation-iteration-count: infinite;
+    -webkit-animation-duration: 0.001;
+}
+</style>
+<div id="results">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<div class="padding">
+<img class="crash">
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index e52126a..1a81236 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,15 @@
+2011-01-26  Justin Schuh  <jschuh at chromium.org>
+
+        Reviewed by Adam Barth.
+
+        Make fireEventsAndUpdateStyle use stack local vectors. 
+        https://bugs.webkit.org/show_bug.cgi?id=46760
+
+        Test: animations/animation-add-events-in-handler.html
+
+        * page/animation/AnimationController.cpp:
+        (WebCore::AnimationControllerPrivate::fireEventsAndUpdateStyle):
+
 2011-01-26  Nate Chapin  <japhet at chromium.org>
 
         Reviewed by Adam Barth.
diff --git a/Source/WebCore/page/animation/AnimationController.cpp b/Source/WebCore/page/animation/AnimationController.cpp
index e1281dd..dcdea03 100644
--- a/Source/WebCore/page/animation/AnimationController.cpp
+++ b/Source/WebCore/page/animation/AnimationController.cpp
@@ -145,16 +145,16 @@ void AnimationControllerPrivate::fireEventsAndUpdateStyle()
     bool updateStyle = !m_eventsToDispatch.isEmpty() || !m_nodeChangesToDispatch.isEmpty();
     
     // fire all the events
-    Vector<EventToDispatch>::const_iterator eventsToDispatchEnd = m_eventsToDispatch.end();
-    for (Vector<EventToDispatch>::const_iterator it = m_eventsToDispatch.begin(); it != eventsToDispatchEnd; ++it) {
+    Vector<EventToDispatch> eventsToDispatch = m_eventsToDispatch;
+    m_eventsToDispatch.clear();
+    Vector<EventToDispatch>::const_iterator eventsToDispatchEnd = eventsToDispatch.end();
+    for (Vector<EventToDispatch>::const_iterator it = eventsToDispatch.begin(); it != eventsToDispatchEnd; ++it) {
         if (it->eventType == eventNames().webkitTransitionEndEvent)
             it->element->dispatchEvent(WebKitTransitionEvent::create(it->eventType, it->name, it->elapsedTime));
         else
             it->element->dispatchEvent(WebKitAnimationEvent::create(it->eventType, it->name, it->elapsedTime));
     }
     
-    m_eventsToDispatch.clear();
-    
     // call setChanged on all the elements
     Vector<RefPtr<Node> >::const_iterator nodeChangesToDispatchEnd = m_nodeChangesToDispatch.end();
     for (Vector<RefPtr<Node> >::const_iterator it = m_nodeChangesToDispatch.begin(); it != nodeChangesToDispatchEnd; ++it)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list