Changeset 17762 in webkit
- Timestamp:
- Nov 14, 2006 11:52:07 AM (17 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r17761 r17762 1 2006-11-14 Brady Eidson <beidson@apple.com> 2 3 Reviewed by Anders 4 5 Cleanup of my patch last night and merging with aroben-style changes from this morning 6 (More ref-counted FormData stuff) 7 8 * html/HTMLFormElement.cpp: 9 (WebCore::HTMLFormElement::submit): 10 * loader/FrameLoader.cpp: 11 (WebCore::FrameLoader::submitForm): 12 * platform/network/ResourceHandle.cpp: 13 (WebCore::ResourceHandle::postData): 14 * platform/network/ResourceHandle.h: 15 * platform/network/cf/FormDataStreamCFNet.cpp: 16 (WebCore::setHTTPBody): 17 * platform/network/mac/FormDataStreamMac.h: 18 * platform/network/mac/FormDataStreamMac.mm: 19 (WebCore::getStreamFormDatas): 20 (WebCore::formCreate): 21 (WebCore::formFinalize): 22 (WebCore::setHTTPBody): 23 (WebCore::httpBodyFromStream): 24 * platform/network/mac/ResourceRequestMac.mm: 25 (WebCore::getResourceRequest): 26 1 27 2006-11-14 Rob Buis <buis@kde.org> 2 28 -
trunk/WebCore/html/HTMLFormElement.cpp
r17755 r17762 205 205 } 206 206 207 RefPtr<FormData> result = new FormData ();207 RefPtr<FormData> result = new FormData; 208 208 209 209 for (unsigned i = 0; i < formElements.size(); ++i) { … … 376 376 m_multipart = false; 377 377 378 RefPtr<FormData> postData = formData();379 378 if (m_post) 380 frame->loader()->submitForm("POST", m_url, postData, m_target, enctype(), boundary(), event);379 frame->loader()->submitForm("POST", m_url, formData(), m_target, enctype(), boundary(), event); 381 380 else 382 frame->loader()->submitForm("GET", m_url, postData, m_target, String(), String(), event);381 frame->loader()->submitForm("GET", m_url, formData(), m_target, String(), String(), event); 383 382 384 383 if (needButtonActivation && firstSuccessfulSubmitButton) -
trunk/WebCore/loader/FrameLoader.cpp
r17755 r17762 441 441 if (m_deferredFormSubmission) 442 442 return; 443 m_deferredFormSubmission.set(new FormSubmission(action, url, formData .get(), target,443 m_deferredFormSubmission.set(new FormSubmission(action, url, formData, target, 444 444 contentType, boundary, event)); 445 445 return; … … 460 460 if (equalIgnoringCase(contentType, "multipart/form-data")) 461 461 // FIXME: is this correct? I suspect not, but what site can we test this on? 462 encodedBody = KURL::encode_string(formData .get()->flattenToString().deprecatedString());462 encodedBody = KURL::encode_string(formData->flattenToString().deprecatedString()); 463 463 else if (equalIgnoringCase(contentType, "text/plain")) { 464 464 // Convention seems to be to decode, and s/&/\n/ 465 encodedBody = formData .get()->flattenToString().deprecatedString();465 encodedBody = formData->flattenToString().deprecatedString(); 466 466 encodedBody.replace('&', '\n'); 467 467 encodedBody.replace('+', ' '); … … 469 469 encodedBody = KURL::encode_string(encodedBody); // Recode for the URL 470 470 } else 471 encodedBody = KURL::encode_string(formData .get()->flattenToString().deprecatedString());471 encodedBody = KURL::encode_string(formData->flattenToString().deprecatedString()); 472 472 473 473 DeprecatedString query = u.query(); … … 481 481 if (strcmp(action, "GET") == 0) { 482 482 if (!mailtoForm) 483 u.setQuery(formData .get()->flattenToString().deprecatedString());483 u.setQuery(formData->flattenToString().deprecatedString()); 484 484 } else { 485 485 frameRequest.resourceRequest().setHTTPBody(formData.get()); -
trunk/WebCore/platform/network/ResourceHandle.cpp
r17755 r17762 68 68 } 69 69 70 constPassRefPtr<FormData> ResourceHandle::postData() const70 PassRefPtr<FormData> ResourceHandle::postData() const 71 71 { 72 72 return d->m_request.httpBody(); -
trunk/WebCore/platform/network/ResourceHandle.h
r17755 r17762 112 112 const KURL& url() const; 113 113 const String& method() const; 114 constPassRefPtr<FormData> postData() const;114 PassRefPtr<FormData> postData() const; 115 115 116 116 private: -
trunk/WebCore/platform/network/cf/FormDataStreamCFNet.cpp
r17759 r17762 306 306 void setHTTPBody(CFMutableURLRequestRef request, PassRefPtr<FormData> formData) 307 307 { 308 if (!formData) 309 return; 308 310 size_t count = formData->elements().size(); 309 311 -
trunk/WebCore/platform/network/mac/FormDataStreamMac.h
r17755 r17762 37 37 class FormData; 38 38 void setHTTPBody(NSMutableURLRequest *, PassRefPtr<FormData>); 39 const PassRefPtr<FormData>httpBodyFromStream(NSInputStream* stream);39 FormData* httpBodyFromStream(NSInputStream* stream); 40 40 } 41 41 -
trunk/WebCore/platform/network/mac/FormDataStreamMac.mm
r17755 r17762 42 42 namespace WebCore { 43 43 44 static HashMap<CFReadStreamRef, RefPtr<FormData> >* streamFormDatas = 0; 45 46 static HashMap<CFReadStreamRef, RefPtr<FormData> >* getStreamFormDatas() 47 { 48 if (!streamFormDatas) 49 streamFormDatas = new HashMap<CFReadStreamRef, RefPtr<FormData> >(); 44 static HashMap<CFReadStreamRef, RefPtr<FormData> >& getStreamFormDatas() 45 { 46 static HashMap<CFReadStreamRef, RefPtr<FormData> > streamFormDatas; 50 47 return streamFormDatas; 51 48 } … … 167 164 static void* formCreate(CFReadStreamRef stream, void* context) 168 165 { 169 RefPtr<FormData>formData = static_cast<FormData*>(context);166 FormData* formData = static_cast<FormData*>(context); 170 167 171 168 CFSetCallBacks runLoopAndModeCallBacks = { 0, pairRetain, pairRelease, NULL, pairEqual, pairHash }; … … 183 180 newInfo->remainingElements.append(formData->elements()[size - i - 1]); 184 181 185 getStreamFormDatas() ->set(stream, formData);182 getStreamFormDatas().set(stream, adoptRef(formData)); 186 183 187 184 return newInfo; … … 192 189 FormStreamFields* form = static_cast<FormStreamFields*>(context); 193 190 194 getStreamFormDatas() ->remove(stream);191 getStreamFormDatas().remove(stream); 195 192 196 193 closeCurrentStream(form); … … 307 304 void setHTTPBody(NSMutableURLRequest *request, PassRefPtr<FormData> formData) 308 305 { 309 size_t count = formData.get()->elements().size(); 306 if (!formData) 307 return; 308 309 size_t count = formData->elements().size(); 310 310 311 311 // Handle the common special case of one piece of form data, with no files. 312 312 if (count == 1) { 313 const FormDataElement& element = formData .get()->elements()[0];313 const FormDataElement& element = formData->elements()[0]; 314 314 if (element.m_type == FormDataElement::data) { 315 315 NSData *data = [[NSData alloc] initWithBytes:element.m_data.data() length:element.m_data.size()]; … … 323 323 long long length = 0; 324 324 for (size_t i = 0; i < count; ++i) { 325 const FormDataElement& element = formData .get()->elements()[i];325 const FormDataElement& element = formData->elements()[i]; 326 326 if (element.m_type == FormDataElement::data) 327 327 length += element.m_data.size(); … … 340 340 CFReadStreamRef stream = wkCreateCustomCFReadStream(formCreate, formFinalize, 341 341 formOpen, formRead, formCanRead, formClose, formSchedule, formUnschedule, 342 formData. get());342 formData.releaseRef()); 343 343 [request setHTTPBodyStream:(NSInputStream *)stream]; 344 344 CFRelease(stream); … … 346 346 347 347 348 const PassRefPtr<FormData>httpBodyFromStream(NSInputStream* stream)349 { 350 return PassRefPtr<FormData>(getStreamFormDatas()->get((CFReadStreamRef)stream));351 } 352 353 } 348 FormData* httpBodyFromStream(NSInputStream* stream) 349 { 350 return getStreamFormDatas().get((CFReadStreamRef)stream).get(); 351 } 352 353 } -
trunk/WebCore/platform/network/mac/ResourceRequestMac.mm
r17755 r17762 53 53 54 54 if (NSData* bodyData = [nsRequest HTTPBody]) 55 request.setHTTPBody( PassRefPtr<FormData>(new FormData([bodyData bytes], [bodyData length])));55 request.setHTTPBody(new FormData([bodyData bytes], [bodyData length])); 56 56 else if (NSInputStream* bodyStream = [nsRequest HTTPBodyStream]) 57 if ( const PassRefPtr<FormData>formData = httpBodyFromStream(bodyStream))57 if (FormData* formData = httpBodyFromStream(bodyStream)) 58 58 request.setHTTPBody(formData); 59 59 // FIXME: what to do about arbitrary body streams?
Note: See TracChangeset
for help on using the changeset viewer.