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

mihaip at chromium.org mihaip at chromium.org
Wed Dec 22 13:53:51 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 74757d05c5a063cba810aa74fe1d91c4ee413827
Author: mihaip at chromium.org <mihaip at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Sep 28 23:50:11 2010 +0000

    2010-09-28  Mihai Parparita  <mihaip at chromium.org>
    
            Reviewed by Dimitri Glazkov.
    
            No back/forward list entry added when submitting a form via an onclick handler inside a frame
            https://bugs.webkit.org/show_bug.cgi?id=44140
    
            Add tests for user-gesture initiated form submissions inside iframes to
            make sure that they generate back/forward list entries.
    
            * fast/history/form-submit-in-frame-expected.txt: Added.
            * fast/history/form-submit-in-frame-via-onclick-expected.txt: Added.
            * fast/history/form-submit-in-frame-via-onclick.html: Added.
            * fast/history/form-submit-in-frame.html: Added.
            * fast/history/resources/form-with-input-submit.html: Added.
            * fast/history/resources/form-with-onclick-submit.html: Added.
    2010-09-28  Mihai Parparita  <mihaip at chromium.org>
    
            Reviewed by Dimitri Glazkov.
    
            No back/forward list entry added when submitting a form via an onclick handler inside a frame
            https://bugs.webkit.org/show_bug.cgi?id=44140
    
            Lock the back/forward list for JavaScript form submissions inside frames
            only if they're not in response to user gestures.
    
            Tests: fast/history/form-submit-in-frame-via-onclick.html
                   fast/history/form-submit-in-frame.html
    
            * loader/RedirectScheduler.cpp:
            (WebCore::RedirectScheduler::scheduleFormSubmission):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68609 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index cb82f11..7e2db7d 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-28  Mihai Parparita  <mihaip at chromium.org>
+
+        Reviewed by Dimitri Glazkov.
+
+        No back/forward list entry added when submitting a form via an onclick handler inside a frame
+        https://bugs.webkit.org/show_bug.cgi?id=44140
+        
+        Add tests for user-gesture initiated form submissions inside iframes to
+        make sure that they generate back/forward list entries.
+
+        * fast/history/form-submit-in-frame-expected.txt: Added.
+        * fast/history/form-submit-in-frame-via-onclick-expected.txt: Added.
+        * fast/history/form-submit-in-frame-via-onclick.html: Added.
+        * fast/history/form-submit-in-frame.html: Added.
+        * fast/history/resources/form-with-input-submit.html: Added.
+        * fast/history/resources/form-with-onclick-submit.html: Added.
+
 2010-09-28  Stephen White  <senorblanco at chromium.org>
 
         Unreviewed; new Chromium/Win test baselines.
diff --git a/LayoutTests/fast/history/form-submit-in-frame-expected.txt b/LayoutTests/fast/history/form-submit-in-frame-expected.txt
new file mode 100644
index 0000000..774f143
--- /dev/null
+++ b/LayoutTests/fast/history/form-submit-in-frame-expected.txt
@@ -0,0 +1,18 @@
+Tests that form submissions inside an iframe generate history entries.
+
+
+
+--------
+Frame: 'the-frame'
+--------
+This page is the target of a redirect.
+
+PASS: History item count should be 2 and is.
+
+
+============== Back Forward List ==============
+        (file test):fast/history/form-submit-in-frame.html  **nav target**
+            (file test):fast/history/resources/form-with-input-submit.html (in frame "the-frame")
+curr->  (file test):fast/history/form-submit-in-frame.html
+            (file test):fast/history/resources/redirect-target.html#2 (in frame "the-frame")  **nav target**
+===============================================
diff --git a/LayoutTests/fast/history/form-submit-in-frame-via-onclick-expected.txt b/LayoutTests/fast/history/form-submit-in-frame-via-onclick-expected.txt
new file mode 100644
index 0000000..6f81194
--- /dev/null
+++ b/LayoutTests/fast/history/form-submit-in-frame-via-onclick-expected.txt
@@ -0,0 +1,18 @@
+Tests that form submissions (via an onclick handler) inside an iframe generate history entries.
+
+
+
+--------
+Frame: 'the-frame'
+--------
+This page is the target of a redirect.
+
+PASS: History item count should be 2 and is.
+
+
+============== Back Forward List ==============
+        (file test):fast/history/form-submit-in-frame-via-onclick.html  **nav target**
+            (file test):fast/history/resources/form-with-onclick-submit.html (in frame "the-frame")
+curr->  (file test):fast/history/form-submit-in-frame-via-onclick.html
+            (file test):fast/history/resources/redirect-target.html#2 (in frame "the-frame")  **nav target**
+===============================================
diff --git a/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html b/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html
new file mode 100644
index 0000000..f9ca4e1
--- /dev/null
+++ b/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p id="description">Tests that form submissions (via an onclick handler) inside an iframe generate history entries.</p>
+
+<div id="manual-explanation" style="display: none; color: blue">When running this test outside of DRT, please click on the "Submit" button.</div>
+
+<pre id="console"></pre>
+
+<iframe id="the-frame" src="resources/form-with-onclick-submit.html" onload="submitForm()"></iframe>
+
+<script>
+if (window.layoutTestController) {
+    layoutTestController.clearBackForwardList();
+    layoutTestController.waitUntilDone();
+    layoutTestController.dumpAsText();
+    layoutTestController.dumpChildFramesAsText();
+}
+
+var formSubmitted = false;
+
+function submitForm()
+{
+    if (formSubmitted) return;
+    formSubmitted = true;
+
+    // Make sure we always generate history entries for the page that we're on.
+    window.setTimeout(function() {
+        if (window.eventSender) {
+            var frameNode = document.getElementById('the-frame');
+            var submitButtonNode = frameNode.contentWindow.document.getElementById('submit-button');
+            eventSender.mouseMoveTo(
+                frameNode.offsetLeft + submitButtonNode.offsetLeft + submitButtonNode.offsetWidth / 2,
+                frameNode.offsetTop + submitButtonNode.offsetTop + submitButtonNode.offsetHeight / 2);
+            eventSender.mouseDown();
+            eventSender.mouseUp();  
+        } else {
+            document.getElementById('manual-explanation').style.display = '';    
+        }
+    }, 0);
+}
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/fast/history/form-submit-in-frame.html b/LayoutTests/fast/history/form-submit-in-frame.html
new file mode 100644
index 0000000..2d53291
--- /dev/null
+++ b/LayoutTests/fast/history/form-submit-in-frame.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p id="description">Tests that form submissions inside an iframe generate history entries.</p>
+
+<div id="manual-explanation" style="display: none; color: blue">When running this test outside of DRT, please click on the "Submit" button.</div>
+
+<pre id="console"></pre>
+
+<iframe id="the-frame" src="resources/form-with-input-submit.html" onload="submitForm()"></iframe>
+
+<script>
+if (window.layoutTestController) {
+    layoutTestController.clearBackForwardList();
+    layoutTestController.waitUntilDone();
+    layoutTestController.dumpAsText();
+    layoutTestController.dumpChildFramesAsText();
+}
+
+var formSubmitted = false;
+
+function submitForm()
+{
+    if (formSubmitted) return;
+    formSubmitted = true;
+
+    // Make sure we always generate history entries for the page that we're on.
+    window.setTimeout(function() {
+        if (window.eventSender) {
+            var frameNode = document.getElementById('the-frame');
+            var submitButtonNode = frameNode.contentWindow.document.getElementById('submit-button');
+            eventSender.mouseMoveTo(
+                frameNode.offsetLeft + submitButtonNode.offsetLeft + submitButtonNode.offsetWidth / 2,
+                frameNode.offsetTop + submitButtonNode.offsetTop + submitButtonNode.offsetHeight / 2);
+            eventSender.mouseDown();
+            eventSender.mouseUp();  
+        } else {
+            document.getElementById('manual-explanation').style.display = '';    
+        }
+    }, 0);
+}
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/fast/history/resources/form-with-input-submit.html b/LayoutTests/fast/history/resources/form-with-input-submit.html
new file mode 100644
index 0000000..48e1caf
--- /dev/null
+++ b/LayoutTests/fast/history/resources/form-with-input-submit.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+Frame 1
+
+<script>document.write('<form method="post" action="redirect-target.html#' + (history.length + 1) + '">');</script>
+  <input id="submit-button" type="submit">
+</form>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/fast/history/resources/form-with-onclick-submit.html b/LayoutTests/fast/history/resources/form-with-onclick-submit.html
new file mode 100644
index 0000000..59d42bf
--- /dev/null
+++ b/LayoutTests/fast/history/resources/form-with-onclick-submit.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+Frame 1
+
+<script>document.write('<form name="testform" method="post" action="redirect-target.html#' + (history.length + 1) + '">');</script>
+  <input type="button" id="submit-button" value="Submit" onClick="document.forms.testform.submit();">
+</form>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 91e9c0c..65eb364 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-09-28  Mihai Parparita  <mihaip at chromium.org>
+
+        Reviewed by Dimitri Glazkov.
+
+        No back/forward list entry added when submitting a form via an onclick handler inside a frame
+        https://bugs.webkit.org/show_bug.cgi?id=44140
+        
+        Lock the back/forward list for JavaScript form submissions inside frames
+        only if they're not in response to user gestures.
+
+        Tests: fast/history/form-submit-in-frame-via-onclick.html
+               fast/history/form-submit-in-frame.html
+
+        * loader/RedirectScheduler.cpp:
+        (WebCore::RedirectScheduler::scheduleFormSubmission):
+
 2010-09-28  David Hyatt  <hyatt at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebCore/loader/RedirectScheduler.cpp b/WebCore/loader/RedirectScheduler.cpp
index ce0e3f8..ce41cde 100644
--- a/WebCore/loader/RedirectScheduler.cpp
+++ b/WebCore/loader/RedirectScheduler.cpp
@@ -318,7 +318,7 @@ void RedirectScheduler::scheduleFormSubmission(PassRefPtr<FormSubmission> submis
     // to match IE and Opera.
     // See https://bugs.webkit.org/show_bug.cgi?id=32383 for the original motivation for this.
     bool isUserGesture = m_frame->loader()->isProcessingUserGesture();
-    bool lockBackForwardList = mustLockBackForwardList(m_frame, isUserGesture) || (submission->state()->formSubmissionTrigger() == SubmittedByJavaScript && m_frame->tree()->parent());
+    bool lockBackForwardList = mustLockBackForwardList(m_frame, isUserGesture) || (submission->state()->formSubmissionTrigger() == SubmittedByJavaScript && m_frame->tree()->parent() && !isUserGesture);
 
     schedule(adoptPtr(new ScheduledFormSubmission(submission, lockBackForwardList, duringLoad, isUserGesture)));
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list