Changeset 35611 in webkit
- Timestamp:
- Aug 6, 2008 2:15:39 PM (16 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r35606 r35611 1 2008-08-05 David D. Kilzer <ddkilzer@apple.com> 2 3 Bug 20038: REGRESSION (r35151): Can't post comments on flickr.com 4 5 <https://bugs.webkit.org/show_bug.cgi?id=20038> 6 <rdar://problem/6092270> 7 8 Reviewed by Eric Seidel. 9 10 * fast/forms/submit-to-url-fragment-expected.txt: Added. 11 * fast/forms/submit-to-url-fragment.html: Added. 12 1 13 2008-07-02 David Kilzer <ddkilzer@apple.com> 2 14 -
trunk/WebCore/ChangeLog
r35610 r35611 1 2008-08-05 David D. Kilzer <ddkilzer@apple.com> 2 3 Bug 20038: REGRESSION (r35151): Can't post comments on flickr.com 4 5 <https://bugs.webkit.org/show_bug.cgi?id=20038> 6 <rdar://problem/6092270> 7 8 Reviewed by Eric Seidel. 9 10 Test: fast/forms/submit-to-url-fragment.html 11 12 The problem was that isFormSubmission was not being set to true in 13 FrameLoader::loadWithDocumentLoader() when we were actually 14 submitting a form, causing the page to scroll instead of the form to 15 be submitted. 16 17 The isFormSubmission variable wasn't set to true because a FormState 18 object was not being created in 19 FrameLoader::loadFrameRequestWithFormAndValues(). 20 21 The FormState object was not being created because 22 HTMLFormElement::submit(Event*, bool activateSubmitButton) would 23 only set FrameLoader::m_formAboutToBeSubmitted to the current form 24 if there was a "text field" element in the form (type = text, 25 password, search or isindex). 26 27 Thus when FrameLoader::submitForm(const FrameLoadRequest&, Event*) 28 called FrameLoader::loadFrameRequestWithFormAndValues(), a null 29 HTMLFormElement pointer would be sent and cause the above failures. 30 31 * html/HTMLFormElement.cpp: 32 (WebCore::HTMLFormElement::submit): Call new 33 FrameLoader::setFormAboutToBeSubmitted() method outside the for 34 loop so we always set FrameLoader::m_formAboutToBeSubmitted exactly 35 once for any form submission. The FrameLoader::recordFormValue() 36 method is only called with the name/value pair of each text field. 37 38 * loader/FrameLoader.cpp: 39 (WebCore::FrameLoader::setFormAboutToBeSubmitted): Added method that 40 only sets m_formAboutToBeSubmitted. 41 (WebCore::FrameLoader::recordFormValue): Removed 42 PassRefPtr<HTMLFormElement> argument since this method only sets 43 name/value pairs on m_formValuesAboutToBeSubmitted now. 44 (WebCore::FrameLoader::loadFrameRequestWithFormAndValues): Create a 45 FormState object as long as submitForm is not null so that other 46 FrameLoader methods know when a form is being submitted. 47 * loader/FrameLoader.h: 48 1 49 2008-08-06 David D. Kilzer <ddkilzer@apple.com> 2 50 -
trunk/WebCore/html/HTMLFormElement.cpp
r35415 r35611 444 444 445 445 frame->loader()->clearRecordedFormValues(); 446 frame->loader()->setFormAboutToBeSubmitted(this); 446 447 for (unsigned i = 0; i < formElements.size(); ++i) { 447 448 HTMLFormControlElement* control = formElements[i]; … … 449 450 HTMLInputElement* input = static_cast<HTMLInputElement*>(control); 450 451 if (input->isTextField()) { 451 frame->loader()->recordFormValue(input->name(), input->value() , this);452 frame->loader()->recordFormValue(input->name(), input->value()); 452 453 if (input->isSearchField()) 453 454 input->addSearchResult(); -
trunk/WebCore/loader/FrameLoader.cpp
r35590 r35611 1750 1750 } 1751 1751 1752 void FrameLoader:: recordFormValue(const String& name, const String& value,PassRefPtr<HTMLFormElement> element)1752 void FrameLoader::setFormAboutToBeSubmitted(PassRefPtr<HTMLFormElement> element) 1753 1753 { 1754 1754 m_formAboutToBeSubmitted = element; 1755 } 1756 1757 void FrameLoader::recordFormValue(const String& name, const String& value) 1758 { 1755 1759 m_formValuesAboutToBeSubmitted.set(name, value); 1756 1760 } … … 2089 2093 page->chrome()->focus(); 2090 2094 } 2091 2095 2092 2096 void FrameLoader::loadFrameRequestWithFormAndValues(const FrameLoadRequest& request, bool lockHistory, Event* event, 2093 2097 HTMLFormElement* submitForm, const HashMap<String, String>& formValues) 2094 2098 { 2095 2099 RefPtr<FormState> formState; 2096 if (submitForm && !formValues.isEmpty())2100 if (submitForm) 2097 2101 formState = FormState::create(submitForm, formValues, m_frame); 2098 2102 2099 2103 loadFrameRequestWithFormState(request, lockHistory, event, formState.release()); 2100 2104 } -
trunk/WebCore/loader/FrameLoader.h
r35378 r35611 387 387 388 388 void clearRecordedFormValues(); 389 void recordFormValue(const String& name, const String& value, PassRefPtr<HTMLFormElement>); 389 void setFormAboutToBeSubmitted(PassRefPtr<HTMLFormElement> element); 390 void recordFormValue(const String& name, const String& value); 390 391 391 392 bool isComplete() const;
Note: See TracChangeset
for help on using the changeset viewer.