Changeset 17762 in webkit


Ignore:
Timestamp:
Nov 14, 2006 11:52:07 AM (17 years ago)
Author:
beidson
Message:

Reviewed by Anders

Cleanup of my patch last night and merging with aroben-style changes from this morning
(More ref-counted FormData stuff)

  • html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::submit):
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::submitForm):
  • platform/network/ResourceHandle.cpp: (WebCore::ResourceHandle::postData):
  • platform/network/ResourceHandle.h:
  • platform/network/cf/FormDataStreamCFNet.cpp: (WebCore::setHTTPBody):
  • platform/network/mac/FormDataStreamMac.h:
  • platform/network/mac/FormDataStreamMac.mm: (WebCore::getStreamFormDatas): (WebCore::formCreate): (WebCore::formFinalize): (WebCore::setHTTPBody): (WebCore::httpBodyFromStream):
  • platform/network/mac/ResourceRequestMac.mm: (WebCore::getResourceRequest):
Location:
trunk/WebCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r17761 r17762  
     12006-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
    1272006-11-14  Rob Buis  <buis@kde.org>
    228
  • trunk/WebCore/html/HTMLFormElement.cpp

    r17755 r17762  
    205205    }
    206206
    207     RefPtr<FormData> result = new FormData();
     207    RefPtr<FormData> result = new FormData;
    208208   
    209209    for (unsigned i = 0; i < formElements.size(); ++i) {
     
    376376        m_multipart = false;
    377377   
    378     RefPtr<FormData> postData = formData();
    379378    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);
    381380    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);
    383382
    384383    if (needButtonActivation && firstSuccessfulSubmitButton)
  • trunk/WebCore/loader/FrameLoader.cpp

    r17755 r17762  
    441441        if (m_deferredFormSubmission)
    442442            return;
    443         m_deferredFormSubmission.set(new FormSubmission(action, url, formData.get(), target,
     443        m_deferredFormSubmission.set(new FormSubmission(action, url, formData, target,
    444444            contentType, boundary, event));
    445445        return;
     
    460460        if (equalIgnoringCase(contentType, "multipart/form-data"))
    461461            // 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());
    463463        else if (equalIgnoringCase(contentType, "text/plain")) {
    464464            // Convention seems to be to decode, and s/&/\n/
    465             encodedBody = formData.get()->flattenToString().deprecatedString();
     465            encodedBody = formData->flattenToString().deprecatedString();
    466466            encodedBody.replace('&', '\n');
    467467            encodedBody.replace('+', ' ');
     
    469469            encodedBody = KURL::encode_string(encodedBody); // Recode for the URL
    470470        } else
    471             encodedBody = KURL::encode_string(formData.get()->flattenToString().deprecatedString());
     471            encodedBody = KURL::encode_string(formData->flattenToString().deprecatedString());
    472472
    473473        DeprecatedString query = u.query();
     
    481481    if (strcmp(action, "GET") == 0) {
    482482        if (!mailtoForm)
    483             u.setQuery(formData.get()->flattenToString().deprecatedString());
     483            u.setQuery(formData->flattenToString().deprecatedString());
    484484    } else {
    485485        frameRequest.resourceRequest().setHTTPBody(formData.get());
  • trunk/WebCore/platform/network/ResourceHandle.cpp

    r17755 r17762  
    6868}
    6969
    70 const PassRefPtr<FormData> ResourceHandle::postData() const
     70PassRefPtr<FormData> ResourceHandle::postData() const
    7171{
    7272    return d->m_request.httpBody();
  • trunk/WebCore/platform/network/ResourceHandle.h

    r17755 r17762  
    112112    const KURL& url() const;
    113113    const String& method() const;
    114     const PassRefPtr<FormData> postData() const;
     114    PassRefPtr<FormData> postData() const;
    115115
    116116private:
  • trunk/WebCore/platform/network/cf/FormDataStreamCFNet.cpp

    r17759 r17762  
    306306void setHTTPBody(CFMutableURLRequestRef request, PassRefPtr<FormData> formData)
    307307{
     308    if (!formData)
     309        return;
    308310    size_t count = formData->elements().size();
    309311
  • trunk/WebCore/platform/network/mac/FormDataStreamMac.h

    r17755 r17762  
    3737    class FormData;
    3838    void setHTTPBody(NSMutableURLRequest *, PassRefPtr<FormData>);
    39     const PassRefPtr<FormData> httpBodyFromStream(NSInputStream* stream);
     39    FormData* httpBodyFromStream(NSInputStream* stream);
    4040}
    4141
  • trunk/WebCore/platform/network/mac/FormDataStreamMac.mm

    r17755 r17762  
    4242namespace WebCore {
    4343
    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> >();
     44static HashMap<CFReadStreamRef, RefPtr<FormData> >& getStreamFormDatas()
     45{
     46    static HashMap<CFReadStreamRef, RefPtr<FormData> > streamFormDatas;
    5047    return streamFormDatas;
    5148}
     
    167164static void* formCreate(CFReadStreamRef stream, void* context)
    168165{
    169     RefPtr<FormData> formData = static_cast<FormData*>(context);
     166    FormData* formData = static_cast<FormData*>(context);
    170167
    171168    CFSetCallBacks runLoopAndModeCallBacks = { 0, pairRetain, pairRelease, NULL, pairEqual, pairHash };
     
    183180        newInfo->remainingElements.append(formData->elements()[size - i - 1]);
    184181
    185     getStreamFormDatas()->set(stream, formData);
     182    getStreamFormDatas().set(stream, adoptRef(formData));
    186183
    187184    return newInfo;
     
    192189    FormStreamFields* form = static_cast<FormStreamFields*>(context);
    193190
    194     getStreamFormDatas()->remove(stream);
     191    getStreamFormDatas().remove(stream);
    195192
    196193    closeCurrentStream(form);
     
    307304void setHTTPBody(NSMutableURLRequest *request, PassRefPtr<FormData> formData)
    308305{
    309     size_t count = formData.get()->elements().size();
     306    if (!formData)
     307        return;
     308       
     309    size_t count = formData->elements().size();
    310310
    311311    // Handle the common special case of one piece of form data, with no files.
    312312    if (count == 1) {
    313         const FormDataElement& element = formData.get()->elements()[0];
     313        const FormDataElement& element = formData->elements()[0];
    314314        if (element.m_type == FormDataElement::data) {
    315315            NSData *data = [[NSData alloc] initWithBytes:element.m_data.data() length:element.m_data.size()];
     
    323323    long long length = 0;
    324324    for (size_t i = 0; i < count; ++i) {
    325         const FormDataElement& element = formData.get()->elements()[i];
     325        const FormDataElement& element = formData->elements()[i];
    326326        if (element.m_type == FormDataElement::data)
    327327            length += element.m_data.size();
     
    340340    CFReadStreamRef stream = wkCreateCustomCFReadStream(formCreate, formFinalize,
    341341        formOpen, formRead, formCanRead, formClose, formSchedule, formUnschedule,
    342         formData.get());
     342        formData.releaseRef());
    343343    [request setHTTPBodyStream:(NSInputStream *)stream];
    344344    CFRelease(stream);
     
    346346
    347347
    348 const PassRefPtr<FormData> httpBodyFromStream(NSInputStream* stream)
    349 {
    350     return PassRefPtr<FormData>(getStreamFormDatas()->get((CFReadStreamRef)stream));
    351 }
    352 
    353 }
     348FormData* httpBodyFromStream(NSInputStream* stream)
     349{
     350    return getStreamFormDatas().get((CFReadStreamRef)stream).get();
     351}
     352
     353}
  • trunk/WebCore/platform/network/mac/ResourceRequestMac.mm

    r17755 r17762  
    5353
    5454        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]));
    5656        else if (NSInputStream* bodyStream = [nsRequest HTTPBodyStream])
    57             if (const PassRefPtr<FormData> formData = httpBodyFromStream(bodyStream))
     57            if (FormData* formData = httpBodyFromStream(bodyStream))
    5858                request.setHTTPBody(formData);
    5959        // FIXME: what to do about arbitrary body streams?
Note: See TracChangeset for help on using the changeset viewer.