Title: [111944] releases/WebKitGTK/webkit-1.8

Diff

Modified: releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog (111943 => 111944)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog	2012-03-24 00:51:56 UTC (rev 111943)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog	2012-03-24 00:52:56 UTC (rev 111944)
@@ -1,3 +1,15 @@
+2012-03-23  Kent Tamura  <[email protected]>
+
+        REGRESSION(r106388): Form state is restored to a wrong document.
+        https://bugs.webkit.org/show_bug.cgi?id=79206
+
+        Reviewed by Brady Eidson.
+
+        * fast/loader/form-state-restore-with-locked-back-forward-list-expected.txt: Added.
+        * fast/loader/form-state-restore-with-locked-back-forward-list.html: Added.
+        * fast/loader/resources/form-state-restore-with-locked-back-forward-list-2.html: Added.
+        * fast/loader/resources/form-state-restore-with-locked-back-forward-list-3.html: Added.
+
 2012-03-23  Oliver Hunt  <[email protected]>
 
         REGRESSION (r108112): AWS Management Console at amazon.com fails to initialize

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list-expected.txt (0 => 111944)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list-expected.txt	2012-03-24 00:52:56 UTC (rev 111944)
@@ -0,0 +1,2 @@
+PASS location.search is "?TestName1=Ok1&TestName2=Ok2"
+
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list.html (0 => 111944)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list.html	2012-03-24 00:52:56 UTC (rev 111944)
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<body _onLoad_="document.forms[0].submit();">
+<form method=POST action=""
+<input name="TestName1" type="hidden" value="Bad1">
+<input name="TestName2" type="hidden" value="Bad2">
+</form>
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+</script>
+</body>
+</html>
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/form-state-restore-with-locked-back-forward-list.html
___________________________________________________________________

Added: svn:eol-style

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-2.html (0 => 111944)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-2.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-2.html	2012-03-24 00:52:56 UTC (rev 111944)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body _onLoad_="document.forms[0].submit();">
+<form method="GET" action=""
+<input name="TestName1" type="hidden" value="Ok1">
+<input name="TestName2" type="hidden" value="Ok2">
+</form>
+</body>
+</html>
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-2.html
___________________________________________________________________

Added: svn:eol-style

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-3.html (0 => 111944)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-3.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-3.html	2012-03-24 00:52:56 UTC (rev 111944)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<body>
+<script src=""
+<script>
+shouldBeEqualToString("location.search", '?TestName1=Ok1&TestName2=Ok2');
+if (window.layoutTestController)
+    layoutTestController.notifyDone();
+</script>
+</body>
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/loader/resources/form-state-restore-with-locked-back-forward-list-3.html
___________________________________________________________________

Added: svn:eol-style

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog (111943 => 111944)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-03-24 00:51:56 UTC (rev 111943)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-03-24 00:52:56 UTC (rev 111944)
@@ -1,3 +1,30 @@
+2012-03-23  Kent Tamura  <[email protected]>
+
+        REGRESSION(r106388): Form state is restored to a wrong document.
+        https://bugs.webkit.org/show_bug.cgi?id=79206
+
+        Reviewed by Brady Eidson.
+
+        In some cases, the URL of the current HistoryItem and the document
+        URL are mismatched.
+        A form state should be restored only if the document was loaded
+        with a HistoryItem and the document is not loaded as a
+        redirection.
+
+        Test: fast/loader/form-state-restore-with-locked-back-forward-list.html
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::checkCompleted): Clear m_requestedHistoryItem.
+        (WebCore::FrameLoader::loadItem):
+        Save the requested HistoryItem for didLoadWithLodItem().
+        * loader/FrameLoader.h:
+        (WebCore::FrameLoader::requestedHistoryItem):
+        Added. Accessor for m_requestedHistoryItem.
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::restoreDocumentState):
+        Restore a form state only if the current document was loaded with
+        FrameLoader::loadItem() and not redirection.
+
 2012-03-23  Abhishek Arya  <[email protected]>
 
         Regression(r107477): Crash in StaticNodeList::itemWithName.

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/FrameLoader.cpp (111943 => 111944)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/FrameLoader.cpp	2012-03-24 00:51:56 UTC (rev 111943)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/FrameLoader.cpp	2012-03-24 00:52:56 UTC (rev 111944)
@@ -736,6 +736,7 @@
 
     // OK, completed.
     m_isComplete = true;
+    m_requestedHistoryItem = 0;
     m_frame->document()->setReadyState(Document::Complete);
 
     RefPtr<Frame> protect(m_frame);
@@ -3171,6 +3172,7 @@
 // Loads content into this frame, as specified by history item
 void FrameLoader::loadItem(HistoryItem* item, FrameLoadType loadType)
 {
+    m_requestedHistoryItem = item;
     HistoryItem* currentItem = history()->currentItem();
     bool sameDocumentNavigation = currentItem && item->shouldDoSameDocumentNavigationTo(currentItem);
 

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/FrameLoader.h (111943 => 111944)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/FrameLoader.h	2012-03-24 00:51:56 UTC (rev 111943)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/FrameLoader.h	2012-03-24 00:52:56 UTC (rev 111944)
@@ -119,6 +119,7 @@
 
     void open(CachedFrameBase&);
     void loadItem(HistoryItem*, FrameLoadType);
+    HistoryItem* requestedHistoryItem() const { return m_requestedHistoryItem.get(); }
 
     static void reportLocalLoadFailed(Frame*, const String& url);
 
@@ -437,6 +438,7 @@
 #endif
 
     KURL m_previousUrl;
+    RefPtr<HistoryItem> m_requestedHistoryItem;
 };
 
 // This function is called by createWindow() in JSDOMWindowBase.cpp, for example, for

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/HistoryController.cpp (111943 => 111944)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/HistoryController.cpp	2012-03-24 00:51:56 UTC (rev 111943)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/loader/HistoryController.cpp	2012-03-24 00:52:56 UTC (rev 111944)
@@ -200,9 +200,10 @@
     
     if (!itemToRestore)
         return;
-
-    LOG(Loading, "WebCoreLoading %s: restoring form state from %p", m_frame->tree()->uniqueName().string().utf8().data(), itemToRestore);
-    doc->setStateForNewFormElements(itemToRestore->documentState());
+    if (m_frame->loader()->requestedHistoryItem() == m_currentItem.get() && !m_frame->loader()->documentLoader()->isClientRedirect()) {
+        LOG(Loading, "WebCoreLoading %s: restoring form state from %p", m_frame->tree()->uniqueName().string().utf8().data(), itemToRestore);
+        doc->setStateForNewFormElements(itemToRestore->documentState());
+    }
 }
 
 void HistoryController::invalidateCurrentItemCachedPage()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to