Changeset 17264 in webkit


Ignore:
Timestamp:
Oct 24, 2006 2:53:08 PM (18 years ago)
Author:
mjs
Message:

Reviewed by Darin.

  • More movement towards the final network API.


Changed ResourceLoader::create to take a ResurceRequest and start
the load. Removed methods relating to setting request
headers. Removed methods relating to metaData. Added some more
convenience methods to ResourceRequest.

  • dom/XMLTokenizer.cpp: (WebCore::openFunc):
  • loader/LoaderFunctions.h:
  • loader/icon/IconLoader.cpp: (IconLoader::startLoading): (IconLoader::didFinishLoading):
  • loader/icon/IconLoader.h:
  • loader/loader.cpp: (WebCore::Loader::servePendingRequests):
  • loader/mac/LoaderFunctionsMac.mm: (WebCore::ServeSynchronousRequest):
  • platform/gdk/FrameGdk.cpp: (WebCore::FrameGdkClientDefault::openURL): (WebCore::FrameGdkClientDefault::submitForm):
  • platform/network/ResourceLoader.cpp: (WebCore::ResourceLoader::ResourceLoader): (WebCore::ResourceLoader::create): (WebCore::ResourceLoader::responseHTTPHeadersAsString): (WebCore::ResourceLoader::url): (WebCore::ResourceLoader::postData): (WebCore::ResourceLoader::method): (WebCore::ResourceLoader::client):
  • platform/network/ResourceLoader.h:
  • platform/network/ResourceLoaderInternal.h: (WebCore::ResourceLoaderInternal::ResourceLoaderInternal):
  • platform/network/ResourceRequest.h: (WebCore::ResourceRequest::ResourceRequest): (WebCore::ResourceRequest::httpAccept): (WebCore::ResourceRequest::setHTTPAccept): (WebCore::ResourceRequest::addHTTPHeaderFields):
  • platform/network/mac/ResourceLoaderMac.mm: (WebCore::ResourceLoader::start): (WebCore::ResourceLoader::receivedResponse):
  • platform/qt/FrameQtClient.cpp: (WebCore::FrameQtClientDefault::openURL): (WebCore::FrameQtClientDefault::submitForm):
  • platform/win/TemporaryLinkStubs.cpp: (WebCore::ResourceLoader::retrieveResponseEncoding):
  • xml/XSLTProcessor.cpp: (WebCore::docLoaderFunc):
  • xml/xmlhttprequest.cpp: (WebCore::XMLHttpRequest::send): (WebCore::XMLHttpRequest::didFinishLoading): (WebCore::XMLHttpRequest::didReceiveData):
  • xml/xmlhttprequest.h:
Location:
trunk/WebCore
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r17263 r17264  
     12006-10-24  Maciej Stachowiak  <mjs@apple.com>
     2
     3        Reviewed by Darin.
     4
     5        - More movement towards the final network API.
     6       
     7        Changed ResourceLoader::create to take a ResurceRequest and start
     8        the load. Removed methods relating to setting request
     9        headers. Removed methods relating to metaData. Added some more
     10        convenience methods to ResourceRequest.
     11
     12        * dom/XMLTokenizer.cpp:
     13        (WebCore::openFunc):
     14        * loader/LoaderFunctions.h:
     15        * loader/icon/IconLoader.cpp:
     16        (IconLoader::startLoading):
     17        (IconLoader::didFinishLoading):
     18        * loader/icon/IconLoader.h:
     19        * loader/loader.cpp:
     20        (WebCore::Loader::servePendingRequests):
     21        * loader/mac/LoaderFunctionsMac.mm:
     22        (WebCore::ServeSynchronousRequest):
     23        * platform/gdk/FrameGdk.cpp:
     24        (WebCore::FrameGdkClientDefault::openURL):
     25        (WebCore::FrameGdkClientDefault::submitForm):
     26        * platform/network/ResourceLoader.cpp:
     27        (WebCore::ResourceLoader::ResourceLoader):
     28        (WebCore::ResourceLoader::create):
     29        (WebCore::ResourceLoader::responseHTTPHeadersAsString):
     30        (WebCore::ResourceLoader::url):
     31        (WebCore::ResourceLoader::postData):
     32        (WebCore::ResourceLoader::method):
     33        (WebCore::ResourceLoader::client):
     34        * platform/network/ResourceLoader.h:
     35        * platform/network/ResourceLoaderInternal.h:
     36        (WebCore::ResourceLoaderInternal::ResourceLoaderInternal):
     37        * platform/network/ResourceRequest.h:
     38        (WebCore::ResourceRequest::ResourceRequest):
     39        (WebCore::ResourceRequest::httpAccept):
     40        (WebCore::ResourceRequest::setHTTPAccept):
     41        (WebCore::ResourceRequest::addHTTPHeaderFields):
     42        * platform/network/mac/ResourceLoaderMac.mm:
     43        (WebCore::ResourceLoader::start):
     44        (WebCore::ResourceLoader::receivedResponse):
     45        * platform/qt/FrameQtClient.cpp:
     46        (WebCore::FrameQtClientDefault::openURL):
     47        (WebCore::FrameQtClientDefault::submitForm):
     48        * platform/win/TemporaryLinkStubs.cpp:
     49        (WebCore::ResourceLoader::retrieveResponseEncoding):
     50        * xml/XSLTProcessor.cpp:
     51        (WebCore::docLoaderFunc):
     52        * xml/xmlhttprequest.cpp:
     53        (WebCore::XMLHttpRequest::send):
     54        (WebCore::XMLHttpRequest::didFinishLoading):
     55        (WebCore::XMLHttpRequest::didReceiveData):
     56        * xml/xmlhttprequest.h:
     57
    1582006-10-24  Anders Carlsson  <acarlsson@apple.com>
    259
  • trunk/WebCore/dom/XMLTokenizer.cpp

    r17252 r17264  
    458458        return &globalDescriptor;
    459459
     460    KURL kurl(uri);
     461    ResourceRequest request(kurl);
    460462    KURL finalURL;
    461     RefPtr<ResourceLoader> loader = ResourceLoader::create(0, "GET", uri);
    462463    DeprecatedString headers;
    463     Vector<char> data = ServeSynchronousRequest(cache()->loader(), globalDocLoader, loader.get(), finalURL, headers);
     464    Vector<char> data = ServeSynchronousRequest(cache()->loader(), globalDocLoader, request, finalURL, headers);
    464465   
    465466    return new OffsetBuffer(data);
  • trunk/WebCore/loader/LoaderFunctions.h

    r17152 r17264  
    2828#include "PlatformString.h"
    2929#include "ResourceLoaderClient.h"  // Defines PlatformResponse
     30#include "ResourceRequest.h"
    3031
    3132#ifdef __OBJC__
     
    3435
    3536@interface NSDictionary (WebCore_Extras)
    36 + (id)_webcore_dictionaryWithHeaderMap:(const HashMap<WebCore::String, WebCore::String>&)headerMap;
     37+ (id)_webcore_dictionaryWithHeaderMap:(const WebCore::ResourceRequest::HTTPHeaderMap&)headerMap;
    3738@end
    3839
     
    4950class Loader;
    5051class Request;
     52class ResourceRequest;
    5153
    52 
    53 Vector<char> ServeSynchronousRequest(Loader*, DocLoader*, ResourceLoader*, KURL& finalURL, DeprecatedString& headers);
     54Vector<char> ServeSynchronousRequest(Loader*, DocLoader*, const ResourceRequest&, KURL& finalURL, DeprecatedString& headers);
    5455
    5556void CheckCacheObjectStatus(DocLoader*, CachedResource*);
  • trunk/WebCore/loader/icon/IconLoader.cpp

    r17212 r17264  
    6363   
    6464    m_httpStatusCode = 0;
    65     m_resourceLoader = ResourceLoader::create(this, "GET", m_frame->iconURL());
    6665   
    6766    // A frame may be documentless - one example is viewing a PDF directly
     
    7069        // Once the loader infrastructure will cleanly let us load an icon without a DocLoader, we can implement this
    7170        LOG(IconDatabase, "Documentless-frame - icon won't be loaded");
    72     } else if (!m_resourceLoader->start(m_frame->document()->docLoader())) {
     71    }
     72   
     73    m_url = m_frame->iconURL();
     74    ResourceRequest request(m_url);
     75    m_resourceLoader = ResourceLoader::create(request, this, m_frame->document()->docLoader());
     76
     77    if (!m_resourceLoader)
    7378        LOG_ERROR("Failed to start load for icon at url %s", m_frame->iconURL().url().ascii());
    74         if (m_resourceLoader)
    75             m_resourceLoader->kill();
    76         m_resourceLoader = 0;
    77     }
    7879}
    7980
     
    115116    ASSERT(iconDatabase);
    116117   
    117     KURL iconURL(resourceLoader->url());
     118    KURL iconURL(m_url);
    118119   
    119120    if (data)
  • trunk/WebCore/loader/icon/IconLoader.h

    r17214 r17264  
    4949   
    5050    void notifyIconChanged(const KURL& iconURL);
    51    
     51
     52    KURL m_url;
    5253    RefPtr<ResourceLoader> m_resourceLoader;
    5354    Frame* m_frame;
  • trunk/WebCore/loader/loader.cpp

    r17212 r17264  
    6969    Request* req = m_requestsPending.take(0);
    7070
    71     KURL u(req->cachedObject()->url().deprecatedString());
    72     RefPtr<ResourceLoader> loader = ResourceLoader::create(this, "GET", u);
     71    ResourceRequest request(req->cachedObject()->url());
    7372
    7473    if (!req->cachedObject()->accept().isEmpty())
    75         loader->addMetaData("accept", req->cachedObject()->accept());
     74        request.setHTTPAccept(req->cachedObject()->accept());
    7675    if (req->docLoader())  {
    7776        KURL r = req->docLoader()->doc()->URL();
    7877        if (r.protocol().startsWith("http") && r.path().isEmpty())
    7978            r.setPath("/");
    80         loader->addMetaData("referrer", r.url());
     79        request.setHTTPReferrer(r.url());
    8180        DeprecatedString domain = r.host();
    8281        if (req->docLoader()->doc()->isHTMLDocument())
    8382            domain = static_cast<HTMLDocument*>(req->docLoader()->doc())->domain().deprecatedString();
    8483    }
    85 
    86     if (loader->start(req->docLoader()))
     84   
     85    RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, req->docLoader());
     86
     87    if (loader)
    8788        m_requestsLoading.add(loader.get(), req);
    8889}
  • trunk/WebCore/loader/mac/LoaderFunctionsMac.mm

    r17201 r17264  
    3939#import "Request.h"
    4040#import "ResourceLoader.h"
     41#import "ResourceRequest.h"
    4142#import "WebCoreFrameBridge.h"
    4243#import "loader.h"
     
    4849@implementation NSDictionary (WebCore_Extras)
    4950
    50 + (id)_webcore_dictionaryWithHeaderMap:(const HashMap<String, String>&)headerMap
     51+ (id)_webcore_dictionaryWithHeaderMap:(const ResourceRequest::HTTPHeaderMap&)headerMap
    5152{
    5253    NSMutableDictionary *headers = [[NSMutableDictionary alloc] init];
    5354   
    54     HashMap<String, String>::const_iterator end = headerMap.end();
    55     for (HashMap<String, String>::const_iterator it = headerMap.begin(); it != end; ++it)
     55    ResourceRequest::HTTPHeaderMap::const_iterator end = headerMap.end();
     56    for (ResourceRequest::HTTPHeaderMap::const_iterator it = headerMap.begin(); it != end; ++it)
    5657        [headers setValue:it->second forKey:it->first];
    5758   
     
    8788}
    8889
    89 Vector<char> ServeSynchronousRequest(Loader *loader, DocLoader *docLoader, ResourceLoader *job, KURL &finalURL, DeprecatedString &responseHeaders)
     90Vector<char> ServeSynchronousRequest(Loader *loader, DocLoader *docLoader, const ResourceRequest& request, KURL &finalURL, DeprecatedString &responseHeaders)
    9091{
    9192    FrameMac *frame = static_cast<FrameMac *>(docLoader->frame());
     
    9697    WebCoreFrameBridge *bridge = frame->bridge();
    9798
    98     frame->didTellBridgeAboutLoad(job->url().url());
     99    frame->didTellBridgeAboutLoad(request.url().url());
    99100
    100101    BEGIN_BLOCK_OBJC_EXCEPTIONS;
    101102
    102103    NSDictionary *headerDict = nil;
    103     const HashMap<String, String>& requestHeaders = job->requestHeaders();
     104    const ResourceRequest::HTTPHeaderMap& requestHeaders = request.httpHeaderFields();
    104105
    105106    if (!requestHeaders.isEmpty())
     
    107108   
    108109    NSArray *postData = nil;
    109     if (!job->postData().elements().isEmpty())
    110         postData = arrayFromFormData(job->postData());
     110    if (!request.httpBody().elements().isEmpty())
     111        postData = arrayFromFormData(request.httpBody());
    111112
    112113    NSURL *finalNSURL = nil;
    113114    NSDictionary *responseHeaderDict = nil;
    114115    int statusCode = 0;
    115     NSData *resultData = [bridge syncLoadResourceWithMethod:job->method() URL:job->url().getNSURL() customHeaders:headerDict postData:postData finalURL:&finalNSURL responseHeaders:&responseHeaderDict statusCode:&statusCode];
    116    
    117     job->kill();
    118 
     116    NSData *resultData = [bridge syncLoadResourceWithMethod:request.httpMethod() URL:request.url().getNSURL() customHeaders:headerDict postData:postData finalURL:&finalNSURL responseHeaders:&responseHeaderDict statusCode:&statusCode];
     117   
    119118    finalURL = finalNSURL;
    120119    responseHeaders = DeprecatedString::fromNSString(HeaderStringFromDictionary(responseHeaderDict, statusCode));
  • trunk/WebCore/platform/gdk/FrameGdk.cpp

    r17260 r17264  
    9393    m_beginCalled = false;
    9494
    95     RefPtr<ResourceLoader> loader = ResourceLoader::create(this, "GET", url);
    96     loader->start(0);
     95    ResourceRequest request(url);
     96    RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, 0);
    9797}
    9898
     
    101101    m_beginCalled = false;
    102102
    103     RefPtr<ResourceLoader> loader = ResourceLoader::create(this, method, url, *postData);
    104     loader->start(0);
     103    ResourceRequest request(url);
     104    request.setHTTPMethod(method);
     105    request.setHTTPBody(*postData);
     106
     107    RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, 0);
    105108}
    106109
  • trunk/WebCore/platform/network/ResourceLoader.cpp

    r17210 r17264  
    3333namespace WebCore {
    3434
    35 ResourceLoader::ResourceLoader(ResourceLoaderClient* client, const String& method, const KURL& url)
    36     : d(new ResourceLoaderInternal(this, client, method, url))
     35ResourceLoader::ResourceLoader(const ResourceRequest& request, ResourceLoaderClient* client)
     36    : d(new ResourceLoaderInternal(this, request, client))
    3737{
    3838}
    3939
    40 ResourceLoader::ResourceLoader(ResourceLoaderClient* client, const String& method, const KURL& url, const FormData& postData)
    41     : d(new ResourceLoaderInternal(this, client, method, url, postData))
     40PassRefPtr<ResourceLoader> ResourceLoader::create(const ResourceRequest& request, ResourceLoaderClient* client, DocLoader* dl)
    4241{
    43 }
     42    RefPtr<ResourceLoader> newLoader(new ResourceLoader(request, client));
     43   
     44    if (newLoader->start(dl))
     45        return newLoader.release();
    4446
    45 PassRefPtr<ResourceLoader> ResourceLoader::create(ResourceLoaderClient* client, const String& method, const KURL& url)
    46 {
    47     return new ResourceLoader(client, method, url);
    48 }
    49 
    50 PassRefPtr<ResourceLoader> ResourceLoader::create(ResourceLoaderClient* client, const String& method, const KURL& url, const FormData& postData)
    51 {
    52     return new ResourceLoader(client, method, url, postData);
     47    return 0;
    5348}
    5449
     
    7570}
    7671
    77 void ResourceLoader::setRequestHeaders(const HashMap<String, String>& requestHeaders)
     72String ResourceLoader::responseHTTPHeadersAsString() const
    7873{
    79     d->m_requestHeaders = requestHeaders;
    80 }
    81 
    82 const HashMap<String, String>& ResourceLoader::requestHeaders() const
    83 {
    84     return d->m_requestHeaders;
    85 }
    86 
    87 String ResourceLoader::queryMetaData(const String& key) const
    88 {
    89     if (key == "HTTP-Headers") {
    90         assembleResponseHeaders();
    91         return d->responseHeaders;
    92     }
    93 
    94     return d->metaData.get(key);
    95 }
    96 
    97 void ResourceLoader::addMetaData(const String& key, const String& value)
    98 {
    99     d->metaData.set(key, value);
    100 }
    101 
    102 void ResourceLoader::addMetaData(const HashMap<String, String>& keysAndValues)
    103 {
    104     HashMap<String, String>::const_iterator end = keysAndValues.end();
    105     for (HashMap<String, String>::const_iterator it = keysAndValues.begin(); it != end; ++it)
    106         d->metaData.set(it->first, it->second);
     74    assembleResponseHeaders();
     75    return d->responseHeaders;
    10776}
    10877
     
    11786}
    11887
    119 KURL ResourceLoader::url() const
     88const ResourceRequest::HTTPHeaderMap& ResourceLoader::requestHeaders() const
    12089{
    121     return d->URL;
     90    return d->m_request.httpHeaderFields();
    12291}
    12392
    124 FormData ResourceLoader::postData() const
     93const KURL& ResourceLoader::url() const
    12594{
    126     return d->postData;
     95    return d->m_request.url();
    12796}
    12897
    129 String ResourceLoader::method() const
     98const FormData& ResourceLoader::postData() const
    13099{
    131     return d->method;
     100    return d->m_request.httpBody();
     101}
     102
     103const String& ResourceLoader::method() const
     104{
     105    return d->m_request.httpMethod();
    132106}
    133107
    134108ResourceLoaderClient* ResourceLoader::client() const
    135109{
    136     return d->client;
     110    return d->m_client;
    137111}
    138112
  • trunk/WebCore/platform/network/ResourceLoader.h

    r17210 r17264  
    2828
    2929#include "ResourceLoaderClient.h" // for PlatformResponse
     30#include "ResourceRequest.h"
    3031#include "StringHash.h"
    3132#include "Timer.h"
     
    6263class ResourceLoader : public Shared<ResourceLoader> {
    6364private:
    64     ResourceLoader(ResourceLoaderClient*, const String& method, const KURL&);
    65     ResourceLoader(ResourceLoaderClient*, const String& method, const KURL&, const FormData& postData);
     65    ResourceLoader(const ResourceRequest&, ResourceLoaderClient*);
    6666
    6767public:
    68     static PassRefPtr<ResourceLoader> create(ResourceLoaderClient*, const String& method, const KURL&);
    69     static PassRefPtr<ResourceLoader> create(ResourceLoaderClient*, const String& method, const KURL&, const FormData& postData);   
     68    // FIXME: should not need the DocLoader
     69    static PassRefPtr<ResourceLoader> create(const ResourceRequest&, ResourceLoaderClient*, DocLoader*);
    7070
    7171    ~ResourceLoader();
    72 
    73     bool start(DocLoader*);
    74     bool startHTTPRequest(const String& referrer);
    7572
    7673    int error() const;
     
    7976    bool isErrorPage() const;
    8077   
    81     void setRequestHeaders(const HashMap<String, String>& requestHeaders);
    82     const HashMap<String, String>& requestHeaders() const;
    83    
    8478    String responseEncoding() const;
    85     String queryMetaData(const String&) const;
    86     void addMetaData(const String& key, const String& value);
    87     void addMetaData(const HashMap<String, String>&);
     79
     80    String responseHTTPHeadersAsString() const;
    8881    void kill();
    89 
    90     KURL url() const;
    91     String method() const;
    92     FormData postData() const;
    9382
    9483#if PLATFORM(MAC)
     
    122111    void receivedResponse(PlatformResponse);
    123112
     113    const ResourceRequest::HTTPHeaderMap& requestHeaders() const;
     114    const KURL& url() const;
     115    const String& method() const;
     116    const FormData& postData() const;
     117
    124118private:
     119    bool start(DocLoader*);
     120
    125121    void assembleResponseHeaders() const;
    126122    void retrieveResponseEncoding() const;
  • trunk/WebCore/platform/network/ResourceLoaderInternal.h

    r17210 r17264  
    5959    {
    6060    public:
    61         ResourceLoaderInternal(ResourceLoader* job, ResourceLoaderClient* c, const String& method, const KURL& u)
    62             : client(c)
     61        ResourceLoaderInternal(ResourceLoader* loader, const ResourceRequest& request, ResourceLoaderClient* c)
     62            : m_client(c)
     63            , m_request(request)
    6364            , status(0)
    64             , URL(u)
    65             , method(method)
    6665            , assembledResponseHeaders(true)
    6766            , m_retrievedResponseEncoding(true)
     
    7675#if USE(WININET)
    7776            , m_fileHandle(INVALID_HANDLE_VALUE)
    78             , m_fileLoadTimer(job, &ResourceLoader::fileLoadTimer)
     77            , m_fileLoadTimer(loader, &ResourceLoader::fileLoadTimer)
    7978            , m_resourceHandle(0)
    8079            , m_secondaryHandle(0)
     
    9493        }
    9594       
    96         ResourceLoaderInternal(ResourceLoader* job, ResourceLoaderClient* c, const String& method, const KURL& u, const FormData& p)
    97             : client(c)
    98             , status(0)
    99             , URL(u)
    100             , method(method)
    101             , postData(p)
    102             , assembledResponseHeaders(true)
    103             , m_retrievedResponseEncoding(true)
    104             , m_loading(false)
    105             , m_cancelled(false)
    106 #if USE(CFNETWORK)
    107             , m_connection(0)
    108 #elif PLATFORM(MAC)
    109             , loader(nil)
    110             , response(nil)
    111 #endif
    112 #if USE(WININET)
    113             , m_fileHandle(INVALID_HANDLE_VALUE)
    114             , m_fileLoadTimer(job, &ResourceLoader::fileLoadTimer)
    115             , m_resourceHandle(0)
    116             , m_secondaryHandle(0)
    117             , m_jobId(0)
    118             , m_threadId(0)
    119             , m_writing(false)
    120             , m_formDataString(0)
    121             , m_formDataLength(0)
    122             , m_bytesRemainingToWrite(0)
    123             , m_hasReceivedResponse(false)
    124             , m_resend(false)
    125 #endif
    126 #if USE(CURL)
    127             , m_handle(0)
    128 #endif
    129         {
    130         }
    131 
    13295        ~ResourceLoaderInternal();
    13396       
    134         ResourceLoaderClient* client;
     97        ResourceLoaderClient* m_client;
     98       
     99        ResourceRequest m_request;
    135100       
    136101        int status;
    137         HashMap<String, String> metaData;
    138         KURL URL;
    139         String method;
    140         FormData postData;
    141        
    142         HashMap<String, String> m_requestHeaders;
    143        
    144102        String m_responseEncoding;
    145103        DeprecatedString responseHeaders;
  • trunk/WebCore/platform/network/ResourceRequest.h

    r17248 r17264  
    5858            , m_cachePolicy(UseProtocolCachePolicy)
    5959            , m_timeoutInterval(defaultTimeoutInterval)
     60            , m_httpMethod("GET")
    6061            , m_allowHTTPCookies(true)
    6162        {
     
    6667            , m_cachePolicy(policy)
    6768            , m_timeoutInterval(defaultTimeoutInterval)
     69            , m_httpMethod("GET")
    6870            , m_allowHTTPCookies(true)
    6971        {
     
    99101        void setHTTPHeaderField(const String& name, const String& value) { m_httpHeaderFields.set(name, value); }
    100102        void addHTTPHeaderField(const String& name, const String& value);
     103        void addHTTPHeaderFields(const HTTPHeaderMap& headerFields);
    101104       
    102105        String httpContentType() const { return httpHeaderField("Content-Type");  }
     
    108111        String httpUserAgent() const { return httpHeaderField("User-Agent"); }
    109112        void setHTTPUserAgent(const String& httpUserAgent) { setHTTPHeaderField("User-Agent", httpUserAgent); }
    110        
     113
     114        String httpAccept() const { return httpHeaderField("Accept"); }
     115        void setHTTPAccept(const String& httpUserAgent) { setHTTPHeaderField("Accept", httpUserAgent); }
     116
    111117        const FormData& httpBody() const { return m_httpBody; }
    112118        FormData& httpBody() { return m_httpBody; }
     
    137143    }
    138144
     145    // FIXME: probably shouldn't inline this
     146    inline void ResourceRequest::addHTTPHeaderFields(const HTTPHeaderMap& headerFields)
     147    {
     148        HTTPHeaderMap::const_iterator end = headerFields.end();
     149        for (HTTPHeaderMap::const_iterator it = headerFields.begin(); it != end; ++it)
     150            addHTTPHeaderField(it->first, it->second);
     151    }
     152
    139153} // namespace WebCore
    140154
  • trunk/WebCore/platform/network/mac/ResourceLoaderMac.mm

    r17210 r17264  
    8181    NSDictionary* headerDict = nil;
    8282   
    83     if (!d->m_requestHeaders.isEmpty())
    84         headerDict = [[NSDictionary _webcore_dictionaryWithHeaderMap:d->m_requestHeaders] retain];
     83    if (!d->m_request.httpHeaderFields().isEmpty())
     84        headerDict = [[NSDictionary _webcore_dictionaryWithHeaderMap:d->m_request.httpHeaderFields()] retain];
    8585
    8686    if (!postData().elements().isEmpty())
     
    135135    d->response = response;
    136136    HardRetain(d->response);
    137     if (d->client)
    138         d->client->receivedResponse(this, response);
     137    if (client())
     138        client()->receivedResponse(this, response);
    139139}
    140140
  • trunk/WebCore/platform/qt/FrameQtClient.cpp

    r17212 r17264  
    6767    m_assignedMimetype = false;
    6868
    69     RefPtr<ResourceLoader> loader = ResourceLoader::create(this, "GET", url);
    70     loader->start(m_frame->document() ? m_frame->document()->docLoader() : 0);
     69    RequestRequest request(url);
     70    RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, m_frame->document() ? m_frame->document()->docLoader() : 0);
    7171}
    7272
     
    7777    m_assignedMimetype = false;
    7878
    79     RefPtr<ResourceLoader> loader = ResourceLoader::create(this, method, url, *postData);
    80     loader->start(m_frame->document() ? m_frame->document()->docLoader() : 0);
     79    ResourceRequest request(url);
     80    request.setHTTPMethod(method);
     81    request.setHTTPBody(*postData);
     82
     83    RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, m_frame->document() ? m_frame->document()->docLoader() : 0);
    8184}
    8285
  • trunk/WebCore/platform/win/TemporaryLinkStubs.cpp

    r17260 r17264  
    245245void ResourceLoader::assembleResponseHeaders() const { }
    246246void ResourceLoader::retrieveResponseEncoding() const {}
    247 bool ResourceLoader::startHTTPRequest(const String& referrer) { return false; }
    248247
    249248
  • trunk/WebCore/xml/XSLTProcessor.cpp

    r17131 r17264  
    8585            KURL url((const char*)base, (const char*)uri);
    8686            xmlFree(base);
     87            ResourceRequest request(url);
    8788            KURL finalURL;
    88             RefPtr<ResourceLoader> loader = ResourceLoader::create(0, "GET", url);
    8989            DeprecatedString headers;
    9090            xmlGenericErrorFunc oldErrorFunc = xmlGenericError;
    9191            void *oldErrorContext = xmlGenericErrorContext;
    9292           
    93             Vector<char> data = ServeSynchronousRequest(cache()->loader(), globalDocLoader, loader.get(), finalURL, headers);
     93            Vector<char> data = ServeSynchronousRequest(cache()->loader(), globalDocLoader, request, finalURL, headers);
    9494       
    9595            xmlSetGenericErrorFunc(0, parseErrorFunc);
  • trunk/WebCore/xml/xmlhttprequest.cpp

    r17212 r17264  
    298298    m_aborted = false;
    299299
     300    ResourceRequest request(m_url);
     301   
    300302    if (!body.isNull() && m_method != "GET" && m_method != "HEAD" && (m_url.protocol().lower() == "http" || m_url.protocol().lower() == "https")) {
    301303        String contentType = getRequestHeader("Content-Type");
     
    315317            m_encoding = UTF8Encoding();
    316318
    317         m_loader = ResourceLoader::create(m_async ? this : 0, m_method, m_url, m_encoding.encode(body.characters(), body.length()));
     319        request.setHTTPBody(m_encoding.encode(body.characters(), body.length()));
    318320    } else {
    319321        // FIXME: HEAD requests just crash; see <rdar://4460899> and the commented out tests in http/tests/xmlhttprequest/methods.html.
     322        // FIXME: the radar is fixed, should conditionalize this
    320323        if (m_method == "HEAD")
    321324            m_method = "GET";
    322         m_loader = ResourceLoader::create(m_async ? this : 0, m_method, m_url);
    323     }
     325    }
     326    request.setHTTPMethod(m_method);
    324327
    325328    if (m_requestHeaders.size() > 0)
    326         m_loader->setRequestHeaders(m_requestHeaders);
     329        request.addHTTPHeaderFields(m_requestHeaders);
    327330
    328331    if (!m_async) {
     
    334337            // avoid deadlock in case the loader wants to use JS on a background thread
    335338            KJS::JSLock::DropAllLocks dropLocks;
    336             data = ServeSynchronousRequest(cache()->loader(), m_doc->docLoader(), m_loader.get(), finalURL, headers);
     339            data = ServeSynchronousRequest(cache()->loader(), m_doc->docLoader(), request, finalURL, headers);
    337340        }
    338341
     
    352355    }
    353356 
    354     // start can return false here, for example if we're no longer attached to a page.
     357    // create can return null here, for example if we're no longer attached to a page.
    355358    // this is true while running onunload handlers
    356     // FIXME: Maybe start can return false for other reasons too?
    357     if (!m_loader->start(m_doc->docLoader()))
    358         m_loader = 0;
     359    // FIXME: Maybe create can return false for other reasons too?
     360    m_loader = ResourceLoader::create(request, this, m_doc->docLoader());
    359361}
    360362
     
    528530
    529531    if (m_responseHeaders.isEmpty() && m_loader)
    530         m_responseHeaders = m_loader->queryMetaData("HTTP-Headers");
     532        m_responseHeaders = m_loader->responseHTTPHeadersAsString();
    531533
    532534    if (m_state < Sent)
     
    560562{
    561563    if (m_responseHeaders.isEmpty() && m_loader)
    562         m_responseHeaders = m_loader->queryMetaData("HTTP-Headers");
     564        m_responseHeaders = m_loader->responseHTTPHeadersAsString();
    563565
    564566    if (m_state < Sent)
  • trunk/WebCore/xml/xmlhttprequest.h

    r17212 r17264  
    2828#include "ResourceLoaderClient.h"
    2929#include "PlatformString.h"
     30#include "ResourceRequest.h"
    3031#include "StringHash.h"
    3132
     
    102103    DeprecatedString m_method;
    103104    bool m_async;
    104     HashMap<String, String> m_requestHeaders;
     105    ResourceRequest::HTTPHeaderMap m_requestHeaders;
    105106
    106107    RefPtr<ResourceLoader> m_loader;
Note: See TracChangeset for help on using the changeset viewer.