Reviewed by Brady.
authoradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Aug 2007 01:52:01 +0000 (01:52 +0000)
committeradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Aug 2007 01:52:01 +0000 (01:52 +0000)
        Fix for http://bugs.webkit.org/show_bug.cgi?id=14746
        <rdar://problem/5401041> REGRESSION: Form state not saved for forms that submit via HTTPS even if they do not contain a password field

        * loader/FrameLoader.cpp: (WebCore::FrameLoader::saveDocumentState): Restore our old behavior that will save form state for secure forms.
          This will also match Firefox behavior.

        * dom/Document.cpp: Removed secureFormAdded(), secureFormRemoved(), hasSecureForm() which are no longer used.
        * dom/Document.h:
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::attach):
        (WebCore::HTMLFormElement::parseMappedAttribute):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@25064 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/dom/Document.cpp
WebCore/dom/Document.h
WebCore/html/HTMLFormElement.cpp
WebCore/loader/FrameLoader.cpp

index 8d58f7233d1b59abb905b0bfc316ff2d23b8a84d..76578a81613a3416cf1978a6561ea0294f603a84 100644 (file)
@@ -1,3 +1,19 @@
+2007-08-13  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Brady.
+
+        Fix for http://bugs.webkit.org/show_bug.cgi?id=14746
+        <rdar://problem/5401041> REGRESSION: Form state not saved for forms that submit via HTTPS even if they do not contain a password field
+
+        * loader/FrameLoader.cpp: (WebCore::FrameLoader::saveDocumentState): Restore our old behavior that will save form state for secure forms.
+          This will also match Firefox behavior.
+
+        * dom/Document.cpp: Removed secureFormAdded(), secureFormRemoved(), hasSecureForm() which are no longer used.
+        * dom/Document.h:
+        * html/HTMLFormElement.cpp:
+        (WebCore::HTMLFormElement::attach):
+        (WebCore::HTMLFormElement::parseMappedAttribute):
+
 2007-08-13  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Maciej.
index 3cba445d7dd9ef6fbe93a4a5b4072f9fb9dab0e4..4944b130ff251fefecb939393cba9b68b7550910 100644 (file)
@@ -2737,22 +2737,6 @@ void Document::didRestoreFromCache()
         (*it)->didRestoreFromCache();
 }
 
-void Document::secureFormAdded()
-{
-    m_secureForms++;
-}
-
-void Document::secureFormRemoved()
-{
-    ASSERT(m_secureForms > 0);
-    m_secureForms--;
-}
-
-bool Document::hasSecureForm() const
-{
-    return m_secureForms > 0;
-}
-
 void Document::setShouldCreateRenderers(bool f)
 {
     m_createRenderers = f;
index 9d3c4c91666df1775bb353615b8c198fa6db0adf..6d07fb7fec3e8140fc677bbcb0c1371b15971e47 100644 (file)
@@ -797,10 +797,6 @@ public:
     
     void didRestoreFromCache();
 
-    void secureFormAdded();
-    void secureFormRemoved();
-    bool hasSecureForm() const;
-
     void setShouldCreateRenderers(bool);
     bool shouldCreateRenderers();
     
index d2a88b7161544a7830cf7efeaea55333f8c179d0..7d331f028deadf528342b5fb15bf69815feea250 100644 (file)
@@ -85,11 +85,6 @@ bool HTMLFormElement::formWouldHaveSecureSubmission(const String &url)
 void HTMLFormElement::attach()
 {
     HTMLElement::attach();
-
-    // note we don't deal with calling secureFormRemoved() on detach, because the timing
-    // was such that it cleared our state too early
-    if (formWouldHaveSecureSubmission(m_url))
-        document()->secureFormAdded();
 }
 
 void HTMLFormElement::insertedIntoDocument()
@@ -493,17 +488,8 @@ void HTMLFormElement::reset()
 
 void HTMLFormElement::parseMappedAttribute(MappedAttribute *attr)
 {
-    if (attr->name() == actionAttr) {
-        bool oldURLWasSecure = formWouldHaveSecureSubmission(m_url);
+    if (attr->name() == actionAttr)
         m_url = parseURL(attr->value());
-        bool newURLIsSecure = formWouldHaveSecureSubmission(m_url);
-
-        if (m_attached && (oldURLWasSecure != newURLIsSecure))
-            if (newURLIsSecure)
-                document()->secureFormAdded();
-            else
-                document()->secureFormRemoved();
-    }
     else if (attr->name() == targetAttr)
         m_target = attr->value();
     else if (attr->name() == methodAttr) {
index d4bf9175a465a9d7b024c79953d2a6dbbaa1ed4c..7120caf01c0083c9ce24f9c62b90edbbb48d1c79 100644 (file)
@@ -3834,13 +3834,6 @@ void FrameLoader::saveDocumentState()
     if (m_creatingInitialEmptyDocument)
         return;
 
-    // Do not save doc state if the page has a form that would be submitted via https.
-    Document* document = m_frame->document();
-    ASSERT(document);
-        
-    if (document->hasSecureForm())
-        return;
-         
     // For a standard page load, we will have a previous item set, which will be used to
     // store the form state.  However, in some cases we will have no previous item, and
     // the current item is the right place to save the state.  One example is when we
@@ -3855,7 +3848,10 @@ void FrameLoader::saveDocumentState()
     HistoryItem* item = m_previousHistoryItem ? m_previousHistoryItem.get() : m_currentHistoryItem.get();
     if (!item)
         return;
-        
+
+    Document* document = m_frame->document();
+    ASSERT(document);
+    
     if (document && item->isCurrentDocument(document)) {
         LOG(Loading, "WebCoreLoading %s: saving form state to %p", m_frame->tree()->name().domString().utf8().data(), item);
         item->setDocumentState(document->formElementsState());