[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 12:26:37 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 9340697052a19573da957c2eb1ea5dee7255f614
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Aug 23 21:31:11 2010 +0000

    2010-08-23  Mihai Parparita  <mihaip at chromium.org>
    
            Reviewed by David Hyatt.
    
            Assertion failure in FrameView::layout when modifying the DOM during
            pagehide with PageCache enabled
            https://bugs.webkit.org/show_bug.cgi?id=43152
    
            Always unschedule any pending relayouts when changing the view, not just
            when we're not using the page cache. Otherwise touching the DOM during
            the pagehide handler can lead to layouts that will be done by the time
            the view has changed, which triggers an assert.
    
            * fast/loader/resources/unschedule-relayout-after-unload-target.html: Added.
            * fast/loader/unschedule-relayout-after-unload-expected.txt: Added.
            * fast/loader/unschedule-relayout-after-unload.html: Added.
    2010-08-23  Mihai Parparita  <mihaip at chromium.org>
    
            Reviewed by David Hyatt.
    
            Assertion failure in FrameView::layout when modifying the DOM during
            pagehide with PageCache enabled
            https://bugs.webkit.org/show_bug.cgi?id=43152
    
            Always unschedule any pending relayouts when changing the view, not just
            when we're not using the page cache. Otherwise touching the DOM during
            the pagehide handler can lead to layouts that will be done by the time
            the view has changed, which triggers an assert.
    
            Test: fast/loader/unschedule-relayout-after-unload.html
    
            * page/Frame.cpp:
            (WebCore::Frame::setView): move unscheduleRelayout outside page cache
            check.
            * page/FrameView.cpp:
            (WebCore::FrameView::layout): remove early return now that assert
            should be correct (and the referenced rdar:// got fixed).
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 9ce740d..d873206 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,20 @@
+2010-08-23  Mihai Parparita  <mihaip at chromium.org>
+
+        Reviewed by David Hyatt.
+
+        Assertion failure in FrameView::layout when modifying the DOM during
+        pagehide with PageCache enabled
+        https://bugs.webkit.org/show_bug.cgi?id=43152
+
+        Always unschedule any pending relayouts when changing the view, not just
+        when we're not using the page cache. Otherwise touching the DOM during
+        the pagehide handler can lead to layouts that will be done by the time
+        the view has changed, which triggers an assert.
+
+        * fast/loader/resources/unschedule-relayout-after-unload-target.html: Added.
+        * fast/loader/unschedule-relayout-after-unload-expected.txt: Added.
+        * fast/loader/unschedule-relayout-after-unload.html: Added.
+
 2010-08-20  Jon Honeycutt  <jhoneycutt at apple.com>
 
         Add more tests to the WebKit2 skipped lists.
diff --git a/LayoutTests/fast/loader/resources/unschedule-relayout-after-unload-target.html b/LayoutTests/fast/loader/resources/unschedule-relayout-after-unload-target.html
new file mode 100644
index 0000000..0578f8b
--- /dev/null
+++ b/LayoutTests/fast/loader/resources/unschedule-relayout-after-unload-target.html
@@ -0,0 +1,10 @@
+<html>
+<script>
+  window.setTimeout(
+    function() {
+        document.body.innerHTML = 'SUCCESS: Navigated';
+        if (window.layoutTestController)
+            layoutTestController.notifyDone();
+    }, 0);
+</script>
+</html>
diff --git a/LayoutTests/fast/loader/unschedule-relayout-after-unload-expected.txt b/LayoutTests/fast/loader/unschedule-relayout-after-unload-expected.txt
new file mode 100644
index 0000000..1d5bae9
--- /dev/null
+++ b/LayoutTests/fast/loader/unschedule-relayout-after-unload-expected.txt
@@ -0,0 +1 @@
+SUCCESS: Navigated
diff --git a/LayoutTests/fast/loader/unschedule-relayout-after-unload.html b/LayoutTests/fast/loader/unschedule-relayout-after-unload.html
new file mode 100644
index 0000000..801b36f
--- /dev/null
+++ b/LayoutTests/fast/loader/unschedule-relayout-after-unload.html
@@ -0,0 +1,23 @@
+<html>
+<body>
+<pre id="log"></pre>
+</body>
+<script>
+
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+    layoutTestController.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
+}
+
+window.onpageshow = function(evt) {
+    // Location changes need to happen outside the onload handler to generate history entries.
+    setTimeout(function() {window.location.href = 'resources/unschedule-relayout-after-unload-target.html';}, 0);
+};
+
+window.onpagehide = function(evt) {
+    document.getElementById('log').innerHTML += 'onpagehide';
+};
+
+</script>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index ffe744a..a8ed748 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,25 @@
+2010-08-23  Mihai Parparita  <mihaip at chromium.org>
+
+        Reviewed by David Hyatt.
+
+        Assertion failure in FrameView::layout when modifying the DOM during
+        pagehide with PageCache enabled
+        https://bugs.webkit.org/show_bug.cgi?id=43152
+
+        Always unschedule any pending relayouts when changing the view, not just
+        when we're not using the page cache. Otherwise touching the DOM during
+        the pagehide handler can lead to layouts that will be done by the time
+        the view has changed, which triggers an assert.
+
+        Test: fast/loader/unschedule-relayout-after-unload.html
+
+        * page/Frame.cpp:
+        (WebCore::Frame::setView): move unscheduleRelayout outside page cache
+        check.
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout): remove early return now that assert
+        should be correct (and the referenced rdar:// got fixed).
+
 2010-08-23  Abhishek Arya  <inferno at chromium.org>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
index 6f74f93..271c223 100644
--- a/WebCore/page/Frame.cpp
+++ b/WebCore/page/Frame.cpp
@@ -237,9 +237,11 @@ void Frame::setView(PassRefPtr<FrameView> view)
     if (!view && m_doc && m_doc->attached() && !m_doc->inPageCache()) {
         // FIXME: We don't call willRemove here. Why is that OK?
         m_doc->detach();
-        if (m_view)
-            m_view->unscheduleRelayout();
     }
+    
+    if (m_view)
+        m_view->unscheduleRelayout();
+    
     eventHandler()->clear();
 
     m_view = view;
diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
index 76fec1e..f53b47f 100644
--- a/WebCore/page/FrameView.cpp
+++ b/WebCore/page/FrameView.cpp
@@ -633,11 +633,6 @@ void FrameView::layout(bool allowSubtree)
     }
 
     ASSERT(m_frame->view() == this);
-    // This early return should be removed when rdar://5598072 is resolved. In the meantime, there is a
-    // gigantic CrashTracer because of this issue, and the early return will hopefully cause graceful 
-    // failure instead.  
-    if (m_frame->view() != this)
-        return;
 
     Document* document = m_frame->document();
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list