Changeset 61511 in webkit
- Timestamp:
- Jun 20, 2010 2:00:35 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/Android.mk
r61366 r61511 300 300 loader/DocumentWriter.cpp \ 301 301 loader/FormState.cpp \ 302 loader/FormSubmission.cpp \ 302 303 loader/FrameLoader.cpp \ 303 304 loader/HistoryController.cpp \ -
trunk/WebCore/ChangeLog
r61507 r61511 1 2010-06-14 Dimitri Glazkov <dglazkov@chromium.org> 2 3 Reviewed by Darin Adler. 4 5 Introduce FormSubmission, the structure representing a form submission. 6 https://bugs.webkit.org/show_bug.cgi?id=40084 7 8 No change in functionality, covered by existing tests. 9 10 * GNUmakefile.am: Added FormSubmission.h/cpp. 11 * WebCore.gypi: Ditto. 12 * WebCore.pro: Ditto. 13 * WebCore.vcproj/WebCore.vcproj: Ditto. 14 * WebCore.xcodeproj/project.pbxproj: Ditto. 15 * html/HTMLFormElement.cpp: 16 (WebCore::HTMLFormElement::prepareFormSubmission): Renamed prepareFormData to prepareFormSubmission, 17 added code for populating a FormSubmission instance, moved the loop of accumulating text input 18 values into this functions (it belongs here logically). 19 (WebCore::HTMLFormElement::submit): Modified to use prepareFormSubmission. 20 * html/HTMLFormElement.h: 21 * loader/FormSubmission.cpp: Added. 22 * loader/FormSubmission.h: Added. 23 * loader/FrameLoader.cpp: 24 (WebCore::FrameLoader::submitForm): Modified to use FormSubmission. Stopped plumbing further to keep 25 the patch size down. 26 * loader/FrameLoader.h: Modified submitForm signature. 27 1 28 2010-06-20 Joseph Pecoraro <joepeck@webkit.org> 2 29 -
trunk/WebCore/GNUmakefile.am
r61414 r61511 1388 1388 WebCore/loader/FormState.cpp \ 1389 1389 WebCore/loader/FormState.h \ 1390 WebCore/loader/FormSubmission.cpp \ 1391 WebCore/loader/FormSubmission.h \ 1390 1392 WebCore/loader/FrameLoader.cpp \ 1391 1393 WebCore/loader/FrameLoader.h \ -
trunk/WebCore/WebCore.gypi
r61414 r61511 1793 1793 'loader/FormState.cpp', 1794 1794 'loader/FormState.h', 1795 'loader/FormSubmission.cpp', 1796 'loader/FormSubmission.h', 1795 1797 'loader/FrameLoader.cpp', 1796 1798 'loader/FrameLoader.h', -
trunk/WebCore/WebCore.pro
r61478 r61511 743 743 loader/DocumentWriter.cpp \ 744 744 loader/FormState.cpp \ 745 loader/FormSubmission.cpp \ 745 746 loader/FrameLoader.cpp \ 746 747 loader/HistoryController.cpp \ -
trunk/WebCore/WebCore.vcproj/WebCore.vcproj
r61414 r61511 21954 21954 </File> 21955 21955 <File 21956 RelativePath="..\loader\FormSubmission.cpp" 21957 > 21958 </File> 21959 <File 21960 RelativePath="..\loader\FormSubmission.h" 21961 > 21962 </File> 21963 <File 21956 21964 RelativePath="..\loader\FrameLoader.cpp" 21957 21965 > -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r61444 r61511 783 783 416E75CC0EDF90C700360E1D /* ScriptCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */; }; 784 784 416F45F00ED7B311008215B6 /* ScriptString.h in Headers */ = {isa = PBXBuildFile; fileRef = 416F45EF0ED7B311008215B6 /* ScriptString.h */; settings = {ATTRIBUTES = (Private, ); }; }; 785 41885B9311B6FDA6003383BB /* FormSubmission.h in Headers */ = {isa = PBXBuildFile; fileRef = 41885B9111B6FDA6003383BB /* FormSubmission.h */; }; 786 41885B9411B6FDA6003383BB /* FormSubmission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41885B9211B6FDA6003383BB /* FormSubmission.cpp */; }; 785 787 418F88040FF957AE0080F045 /* JSAbstractWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 418F88020FF957AE0080F045 /* JSAbstractWorker.cpp */; }; 786 788 418F88050FF957AF0080F045 /* JSAbstractWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 418F88030FF957AE0080F045 /* JSAbstractWorker.h */; }; … … 6359 6361 416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallFrame.cpp; sourceTree = "<group>"; }; 6360 6362 416F45EF0ED7B311008215B6 /* ScriptString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptString.h; sourceTree = "<group>"; }; 6363 41885B9111B6FDA6003383BB /* FormSubmission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormSubmission.h; sourceTree = "<group>"; }; 6364 41885B9211B6FDA6003383BB /* FormSubmission.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormSubmission.cpp; sourceTree = "<group>"; }; 6361 6365 418F88020FF957AE0080F045 /* JSAbstractWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAbstractWorker.cpp; sourceTree = "<group>"; }; 6362 6366 418F88030FF957AE0080F045 /* JSAbstractWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAbstractWorker.h; sourceTree = "<group>"; }; … … 15743 15747 656D37230ADBA5DE00A4554D /* FormState.cpp */, 15744 15748 656D37220ADBA5DE00A4554D /* FormState.h */, 15749 41885B9111B6FDA6003383BB /* FormSubmission.h */, 15750 41885B9211B6FDA6003383BB /* FormSubmission.cpp */, 15745 15751 932E16080AF578340025F408 /* FrameLoader.cpp */, 15746 15752 656D37240ADBA5DE00A4554D /* FrameLoader.h */, … … 17943 17949 514C764E0CE9234E007EF3CD /* FormDataStreamMac.h in Headers */, 17944 17950 656D373A0ADBA5DE00A4554D /* FormState.h in Headers */, 17951 41885B9311B6FDA6003383BB /* FormSubmission.h in Headers */, 17945 17952 935C476D09AC4D6300A6AAB4 /* FoundationExtras.h in Headers */, 17946 17953 65BF022F0974816300C43196 /* Frame.h in Headers */, … … 20286 20293 514C764F0CE9234E007EF3CD /* FormDataStreamMac.mm in Sources */, 20287 20294 656D373B0ADBA5DE00A4554D /* FormState.cpp in Sources */, 20295 41885B9411B6FDA6003383BB /* FormSubmission.cpp in Sources */, 20288 20296 65BF022E0974816300C43196 /* Frame.cpp in Sources */, 20289 20297 932E16090AF578340025F408 /* FrameLoader.cpp in Sources */, -
trunk/WebCore/html/HTMLFormElement.cpp
r61360 r61511 38 38 #include "FormDataList.h" 39 39 #include "FormState.h" 40 #include "FormSubmission.h" 40 41 #include "Frame.h" 41 42 #include "FrameLoader.h" … … 222 223 } 223 224 224 PassRefPtr<Form Data> HTMLFormElement::prepareFormData()225 PassRefPtr<FormSubmission> HTMLFormElement::prepareFormSubmission(Event* event, bool lockHistory, FormSubmissionTrigger trigger) 225 226 { 226 227 if (m_formDataBuilder.isPostMethod()) { … … 234 235 235 236 RefPtr<DOMFormData> domFormData = DOMFormData::create(dataEncoding().encodingForFormSubmission()); 237 Vector<pair<String, String> > formValues; 238 236 239 for (unsigned i = 0; i < m_associatedElements.size(); ++i) { 237 240 HTMLFormControlElement* control = m_associatedElements[i]; 238 241 if (!control->disabled()) 239 242 control->appendFormData(*domFormData, m_formDataBuilder.isMultiPartForm()); 240 } 241 242 RefPtr<FormData> result; 243 244 if (m_formDataBuilder.isMultiPartForm()) 245 result = FormData::createMultiPart(domFormData->items(), domFormData->encoding(), document()); 246 else { 247 result = FormData::create(domFormData->items(), domFormData->encoding()); 243 if (control->hasLocalName(inputTag)) { 244 HTMLInputElement* input = static_cast<HTMLInputElement*>(control); 245 if (input->isTextField()) { 246 formValues.append(pair<String, String>(input->name(), input->value())); 247 if (input->isSearchField()) 248 input->addSearchResult(); 249 } 250 } 251 } 252 253 RefPtr<FormData> formData; 254 String boundary; 255 256 if (m_formDataBuilder.isMultiPartForm()) { 257 formData = FormData::createMultiPart(domFormData->items(), domFormData->encoding(), document()); 258 boundary = formData->boundary().data(); 259 } else { 260 formData = FormData::create(domFormData->items(), domFormData->encoding()); 248 261 if (m_formDataBuilder.isPostMethod() && isMailtoForm()) { 249 262 // Convert the form data into a string that we put into the URL. 250 263 KURL url = document()->completeURL(m_url); 251 appendMailtoPostFormDataToURL(url, * result, m_formDataBuilder.encodingType());264 appendMailtoPostFormDataToURL(url, *formData, m_formDataBuilder.encodingType()); 252 265 m_url = url.string(); 253 266 254 result = FormData::create(); 255 } 256 } 257 258 result->setIdentifier(generateFormDataIdentifier()); 259 return result.release(); 267 formData = FormData::create(); 268 } 269 } 270 271 formData->setIdentifier(generateFormDataIdentifier()); 272 FormSubmission::Method method = m_formDataBuilder.isPostMethod() ? FormSubmission::PostMethod : FormSubmission::GetMethod; 273 return FormSubmission::create(method, m_url, m_target, m_formDataBuilder.encodingType(), FormState::create(this, formValues, document()->frame(), trigger), formData.release(), boundary, lockHistory, event); 260 274 } 261 275 … … 374 388 bool needButtonActivation = activateSubmitButton; // do we need to activate a submit button? 375 389 376 Vector<pair<String, String> > formValues;377 378 390 for (unsigned i = 0; i < m_associatedElements.size(); ++i) { 379 391 HTMLFormControlElement* control = m_associatedElements[i]; 380 if (control->hasLocalName(inputTag)) {381 HTMLInputElement* input = static_cast<HTMLInputElement*>(control);382 if (input->isTextField()) {383 formValues.append(pair<String, String>(input->name(), input->value()));384 if (input->isSearchField())385 input->addSearchResult();386 }387 }388 392 if (needButtonActivation) { 389 393 if (control->isActivatedSubmit()) … … 394 398 } 395 399 396 RefPtr<FormState> formState = FormState::create(this, formValues, frame, formSubmissionTrigger);397 398 400 if (needButtonActivation && firstSuccessfulSubmitButton) 399 401 firstSuccessfulSubmitButton->setActivatedSubmit(true); … … 402 404 m_url = document()->url().string(); 403 405 404 RefPtr<FormData> data = prepareFormData(); 405 String boundary = m_formDataBuilder.isMultiPartForm() ? data->boundary().data() : String(); 406 const char* method = m_formDataBuilder.isPostMethod() ? "POST" : "GET"; 407 frame->loader()->submitForm(method, m_url, data.release(), m_target, m_formDataBuilder.encodingType(), boundary, lockHistory, event, formState.release()); 406 frame->loader()->submitForm(prepareFormSubmission(event, lockHistory, formSubmissionTrigger)); 408 407 409 408 if (needButtonActivation && firstSuccessfulSubmitButton) -
trunk/WebCore/html/HTMLFormElement.h
r61152 r61511 35 35 class Event; 36 36 class FormData; 37 class FormSubmission; 37 38 class HTMLFormControlElement; 38 39 class HTMLImageElement; … … 138 139 bool isMailtoForm() const; 139 140 TextEncoding dataEncoding() const; 140 PassRefPtr<Form Data> prepareFormData();141 PassRefPtr<FormSubmission> prepareFormSubmission(Event*, bool lockHistory, FormSubmissionTrigger); 141 142 unsigned formElementIndex(HTMLFormControlElement*); 142 143 // Returns true if the submission should be proceeded. -
trunk/WebCore/loader/FrameLoader.cpp
r61230 r61511 54 54 #include "FloatRect.h" 55 55 #include "FormState.h" 56 #include "FormSubmission.h" 56 57 #include "Frame.h" 57 58 #include "FrameLoadRequest.h" … … 461 462 } 462 463 463 void FrameLoader::submitForm(const char* action, const String& url, PassRefPtr<FormData> formData, 464 const String& target, const String& contentType, const String& boundary, 465 bool lockHistory, PassRefPtr<Event> event, PassRefPtr<FormState> formState) 466 { 464 void FrameLoader::submitForm(PassRefPtr<FormSubmission> submission) 465 { 466 // FIXME: Plumb this further in. 467 const char* action = submission->method() == FormSubmission::PostMethod ? "POST" : "GET"; 468 RefPtr<FormData> formData = submission->data(); 469 RefPtr<FormState> formState = submission->state(); 470 String url = submission->action(); 471 String target = submission->target(); 472 String boundary = submission->boundary(); 473 String contentType = submission->contentType(); 474 bool lockHistory = submission->lockHistory(); 475 RefPtr<Event> event = submission->event(); 476 467 477 ASSERT(action); 468 478 ASSERT(strcmp(action, "GET") == 0 || strcmp(action, "POST") == 0); -
trunk/WebCore/loader/FrameLoader.h
r60813 r61511 58 58 class FormData; 59 59 class FormState; 60 class FormSubmission; 60 61 class Frame; 61 62 class FrameLoaderClient; … … 225 226 bool requestFrame(HTMLFrameOwnerElement*, const String& url, const AtomicString& frameName, bool lockHistory = true, bool lockBackForwardList = true); 226 227 227 void submitForm(const char* action, const String& url, 228 PassRefPtr<FormData>, const String& target, const String& contentType, const String& boundary, 229 bool lockHistory, PassRefPtr<Event>, PassRefPtr<FormState>); 228 void submitForm(PassRefPtr<FormSubmission>); 230 229 231 230 void stop();
Note: See TracChangeset
for help on using the changeset viewer.