Changeset 17264 in webkit
- Timestamp:
- Oct 24, 2006 2:53:08 PM (18 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r17263 r17264 1 2006-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 1 58 2006-10-24 Anders Carlsson <acarlsson@apple.com> 2 59 -
trunk/WebCore/dom/XMLTokenizer.cpp
r17252 r17264 458 458 return &globalDescriptor; 459 459 460 KURL kurl(uri); 461 ResourceRequest request(kurl); 460 462 KURL finalURL; 461 RefPtr<ResourceLoader> loader = ResourceLoader::create(0, "GET", uri);462 463 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); 464 465 465 466 return new OffsetBuffer(data); -
trunk/WebCore/loader/LoaderFunctions.h
r17152 r17264 28 28 #include "PlatformString.h" 29 29 #include "ResourceLoaderClient.h" // Defines PlatformResponse 30 #include "ResourceRequest.h" 30 31 31 32 #ifdef __OBJC__ … … 34 35 35 36 @interface NSDictionary (WebCore_Extras) 36 + (id)_webcore_dictionaryWithHeaderMap:(const HashMap<WebCore::String, WebCore::String>&)headerMap;37 + (id)_webcore_dictionaryWithHeaderMap:(const WebCore::ResourceRequest::HTTPHeaderMap&)headerMap; 37 38 @end 38 39 … … 49 50 class Loader; 50 51 class Request; 52 class ResourceRequest; 51 53 52 53 Vector<char> ServeSynchronousRequest(Loader*, DocLoader*, ResourceLoader*, KURL& finalURL, DeprecatedString& headers); 54 Vector<char> ServeSynchronousRequest(Loader*, DocLoader*, const ResourceRequest&, KURL& finalURL, DeprecatedString& headers); 54 55 55 56 void CheckCacheObjectStatus(DocLoader*, CachedResource*); -
trunk/WebCore/loader/icon/IconLoader.cpp
r17212 r17264 63 63 64 64 m_httpStatusCode = 0; 65 m_resourceLoader = ResourceLoader::create(this, "GET", m_frame->iconURL());66 65 67 66 // A frame may be documentless - one example is viewing a PDF directly … … 70 69 // Once the loader infrastructure will cleanly let us load an icon without a DocLoader, we can implement this 71 70 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) 73 78 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 }78 79 } 79 80 … … 115 116 ASSERT(iconDatabase); 116 117 117 KURL iconURL( resourceLoader->url());118 KURL iconURL(m_url); 118 119 119 120 if (data) -
trunk/WebCore/loader/icon/IconLoader.h
r17214 r17264 49 49 50 50 void notifyIconChanged(const KURL& iconURL); 51 51 52 KURL m_url; 52 53 RefPtr<ResourceLoader> m_resourceLoader; 53 54 Frame* m_frame; -
trunk/WebCore/loader/loader.cpp
r17212 r17264 69 69 Request* req = m_requestsPending.take(0); 70 70 71 KURL u(req->cachedObject()->url().deprecatedString()); 72 RefPtr<ResourceLoader> loader = ResourceLoader::create(this, "GET", u); 71 ResourceRequest request(req->cachedObject()->url()); 73 72 74 73 if (!req->cachedObject()->accept().isEmpty()) 75 loader->addMetaData("accept",req->cachedObject()->accept());74 request.setHTTPAccept(req->cachedObject()->accept()); 76 75 if (req->docLoader()) { 77 76 KURL r = req->docLoader()->doc()->URL(); 78 77 if (r.protocol().startsWith("http") && r.path().isEmpty()) 79 78 r.setPath("/"); 80 loader->addMetaData("referrer",r.url());79 request.setHTTPReferrer(r.url()); 81 80 DeprecatedString domain = r.host(); 82 81 if (req->docLoader()->doc()->isHTMLDocument()) 83 82 domain = static_cast<HTMLDocument*>(req->docLoader()->doc())->domain().deprecatedString(); 84 83 } 85 86 if (loader->start(req->docLoader())) 84 85 RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, req->docLoader()); 86 87 if (loader) 87 88 m_requestsLoading.add(loader.get(), req); 88 89 } -
trunk/WebCore/loader/mac/LoaderFunctionsMac.mm
r17201 r17264 39 39 #import "Request.h" 40 40 #import "ResourceLoader.h" 41 #import "ResourceRequest.h" 41 42 #import "WebCoreFrameBridge.h" 42 43 #import "loader.h" … … 48 49 @implementation NSDictionary (WebCore_Extras) 49 50 50 + (id)_webcore_dictionaryWithHeaderMap:(const HashMap<String, String>&)headerMap51 + (id)_webcore_dictionaryWithHeaderMap:(const ResourceRequest::HTTPHeaderMap&)headerMap 51 52 { 52 53 NSMutableDictionary *headers = [[NSMutableDictionary alloc] init]; 53 54 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) 56 57 [headers setValue:it->second forKey:it->first]; 57 58 … … 87 88 } 88 89 89 Vector<char> ServeSynchronousRequest(Loader *loader, DocLoader *docLoader, ResourceLoader *job, KURL &finalURL, DeprecatedString &responseHeaders)90 Vector<char> ServeSynchronousRequest(Loader *loader, DocLoader *docLoader, const ResourceRequest& request, KURL &finalURL, DeprecatedString &responseHeaders) 90 91 { 91 92 FrameMac *frame = static_cast<FrameMac *>(docLoader->frame()); … … 96 97 WebCoreFrameBridge *bridge = frame->bridge(); 97 98 98 frame->didTellBridgeAboutLoad( job->url().url());99 frame->didTellBridgeAboutLoad(request.url().url()); 99 100 100 101 BEGIN_BLOCK_OBJC_EXCEPTIONS; 101 102 102 103 NSDictionary *headerDict = nil; 103 const HashMap<String, String>& requestHeaders = job->requestHeaders();104 const ResourceRequest::HTTPHeaderMap& requestHeaders = request.httpHeaderFields(); 104 105 105 106 if (!requestHeaders.isEmpty()) … … 107 108 108 109 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()); 111 112 112 113 NSURL *finalNSURL = nil; 113 114 NSDictionary *responseHeaderDict = nil; 114 115 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 119 118 finalURL = finalNSURL; 120 119 responseHeaders = DeprecatedString::fromNSString(HeaderStringFromDictionary(responseHeaderDict, statusCode)); -
trunk/WebCore/platform/gdk/FrameGdk.cpp
r17260 r17264 93 93 m_beginCalled = false; 94 94 95 Re fPtr<ResourceLoader> loader = ResourceLoader::create(this, "GET",url);96 loader->start(0);95 ResourceRequest request(url); 96 RefPtr<ResourceLoader> loader = ResourceLoader::create(request, this, 0); 97 97 } 98 98 … … 101 101 m_beginCalled = false; 102 102 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); 105 108 } 106 109 -
trunk/WebCore/platform/network/ResourceLoader.cpp
r17210 r17264 33 33 namespace WebCore { 34 34 35 ResourceLoader::ResourceLoader( ResourceLoaderClient* client, const String& method, const KURL& url)36 : d(new ResourceLoaderInternal(this, client, method, url))35 ResourceLoader::ResourceLoader(const ResourceRequest& request, ResourceLoaderClient* client) 36 : d(new ResourceLoaderInternal(this, request, client)) 37 37 { 38 38 } 39 39 40 ResourceLoader::ResourceLoader(ResourceLoaderClient* client, const String& method, const KURL& url, const FormData& postData) 41 : d(new ResourceLoaderInternal(this, client, method, url, postData)) 40 PassRefPtr<ResourceLoader> ResourceLoader::create(const ResourceRequest& request, ResourceLoaderClient* client, DocLoader* dl) 42 41 { 43 } 42 RefPtr<ResourceLoader> newLoader(new ResourceLoader(request, client)); 43 44 if (newLoader->start(dl)) 45 return newLoader.release(); 44 46 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; 53 48 } 54 49 … … 75 70 } 76 71 77 void ResourceLoader::setRequestHeaders(const HashMap<String, String>& requestHeaders) 72 String ResourceLoader::responseHTTPHeadersAsString() const 78 73 { 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; 107 76 } 108 77 … … 117 86 } 118 87 119 KURL ResourceLoader::url() const88 const ResourceRequest::HTTPHeaderMap& ResourceLoader::requestHeaders() const 120 89 { 121 return d-> URL;90 return d->m_request.httpHeaderFields(); 122 91 } 123 92 124 FormData ResourceLoader::postData() const93 const KURL& ResourceLoader::url() const 125 94 { 126 return d-> postData;95 return d->m_request.url(); 127 96 } 128 97 129 String ResourceLoader::method() const98 const FormData& ResourceLoader::postData() const 130 99 { 131 return d->method; 100 return d->m_request.httpBody(); 101 } 102 103 const String& ResourceLoader::method() const 104 { 105 return d->m_request.httpMethod(); 132 106 } 133 107 134 108 ResourceLoaderClient* ResourceLoader::client() const 135 109 { 136 return d-> client;110 return d->m_client; 137 111 } 138 112 -
trunk/WebCore/platform/network/ResourceLoader.h
r17210 r17264 28 28 29 29 #include "ResourceLoaderClient.h" // for PlatformResponse 30 #include "ResourceRequest.h" 30 31 #include "StringHash.h" 31 32 #include "Timer.h" … … 62 63 class ResourceLoader : public Shared<ResourceLoader> { 63 64 private: 64 ResourceLoader(ResourceLoaderClient*, const String& method, const KURL&); 65 ResourceLoader(ResourceLoaderClient*, const String& method, const KURL&, const FormData& postData); 65 ResourceLoader(const ResourceRequest&, ResourceLoaderClient*); 66 66 67 67 public: 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*); 70 70 71 71 ~ResourceLoader(); 72 73 bool start(DocLoader*);74 bool startHTTPRequest(const String& referrer);75 72 76 73 int error() const; … … 79 76 bool isErrorPage() const; 80 77 81 void setRequestHeaders(const HashMap<String, String>& requestHeaders);82 const HashMap<String, String>& requestHeaders() const;83 84 78 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; 88 81 void kill(); 89 90 KURL url() const;91 String method() const;92 FormData postData() const;93 82 94 83 #if PLATFORM(MAC) … … 122 111 void receivedResponse(PlatformResponse); 123 112 113 const ResourceRequest::HTTPHeaderMap& requestHeaders() const; 114 const KURL& url() const; 115 const String& method() const; 116 const FormData& postData() const; 117 124 118 private: 119 bool start(DocLoader*); 120 125 121 void assembleResponseHeaders() const; 126 122 void retrieveResponseEncoding() const; -
trunk/WebCore/platform/network/ResourceLoaderInternal.h
r17210 r17264 59 59 { 60 60 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) 63 64 , status(0) 64 , URL(u)65 , method(method)66 65 , assembledResponseHeaders(true) 67 66 , m_retrievedResponseEncoding(true) … … 76 75 #if USE(WININET) 77 76 , m_fileHandle(INVALID_HANDLE_VALUE) 78 , m_fileLoadTimer( job, &ResourceLoader::fileLoadTimer)77 , m_fileLoadTimer(loader, &ResourceLoader::fileLoadTimer) 79 78 , m_resourceHandle(0) 80 79 , m_secondaryHandle(0) … … 94 93 } 95 94 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 #endif112 #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 #endif126 #if USE(CURL)127 , m_handle(0)128 #endif129 {130 }131 132 95 ~ResourceLoaderInternal(); 133 96 134 ResourceLoaderClient* client; 97 ResourceLoaderClient* m_client; 98 99 ResourceRequest m_request; 135 100 136 101 int status; 137 HashMap<String, String> metaData;138 KURL URL;139 String method;140 FormData postData;141 142 HashMap<String, String> m_requestHeaders;143 144 102 String m_responseEncoding; 145 103 DeprecatedString responseHeaders; -
trunk/WebCore/platform/network/ResourceRequest.h
r17248 r17264 58 58 , m_cachePolicy(UseProtocolCachePolicy) 59 59 , m_timeoutInterval(defaultTimeoutInterval) 60 , m_httpMethod("GET") 60 61 , m_allowHTTPCookies(true) 61 62 { … … 66 67 , m_cachePolicy(policy) 67 68 , m_timeoutInterval(defaultTimeoutInterval) 69 , m_httpMethod("GET") 68 70 , m_allowHTTPCookies(true) 69 71 { … … 99 101 void setHTTPHeaderField(const String& name, const String& value) { m_httpHeaderFields.set(name, value); } 100 102 void addHTTPHeaderField(const String& name, const String& value); 103 void addHTTPHeaderFields(const HTTPHeaderMap& headerFields); 101 104 102 105 String httpContentType() const { return httpHeaderField("Content-Type"); } … … 108 111 String httpUserAgent() const { return httpHeaderField("User-Agent"); } 109 112 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 111 117 const FormData& httpBody() const { return m_httpBody; } 112 118 FormData& httpBody() { return m_httpBody; } … … 137 143 } 138 144 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 139 153 } // namespace WebCore 140 154 -
trunk/WebCore/platform/network/mac/ResourceLoaderMac.mm
r17210 r17264 81 81 NSDictionary* headerDict = nil; 82 82 83 if (!d->m_request Headers.isEmpty())84 headerDict = [[NSDictionary _webcore_dictionaryWithHeaderMap:d->m_request Headers] retain];83 if (!d->m_request.httpHeaderFields().isEmpty()) 84 headerDict = [[NSDictionary _webcore_dictionaryWithHeaderMap:d->m_request.httpHeaderFields()] retain]; 85 85 86 86 if (!postData().elements().isEmpty()) … … 135 135 d->response = response; 136 136 HardRetain(d->response); 137 if ( d->client)138 d->client->receivedResponse(this, response);137 if (client()) 138 client()->receivedResponse(this, response); 139 139 } 140 140 -
trunk/WebCore/platform/qt/FrameQtClient.cpp
r17212 r17264 67 67 m_assignedMimetype = false; 68 68 69 Re fPtr<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); 71 71 } 72 72 … … 77 77 m_assignedMimetype = false; 78 78 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); 81 84 } 82 85 -
trunk/WebCore/platform/win/TemporaryLinkStubs.cpp
r17260 r17264 245 245 void ResourceLoader::assembleResponseHeaders() const { } 246 246 void ResourceLoader::retrieveResponseEncoding() const {} 247 bool ResourceLoader::startHTTPRequest(const String& referrer) { return false; }248 247 249 248 -
trunk/WebCore/xml/XSLTProcessor.cpp
r17131 r17264 85 85 KURL url((const char*)base, (const char*)uri); 86 86 xmlFree(base); 87 ResourceRequest request(url); 87 88 KURL finalURL; 88 RefPtr<ResourceLoader> loader = ResourceLoader::create(0, "GET", url);89 89 DeprecatedString headers; 90 90 xmlGenericErrorFunc oldErrorFunc = xmlGenericError; 91 91 void *oldErrorContext = xmlGenericErrorContext; 92 92 93 Vector<char> data = ServeSynchronousRequest(cache()->loader(), globalDocLoader, loader.get(), finalURL, headers);93 Vector<char> data = ServeSynchronousRequest(cache()->loader(), globalDocLoader, request, finalURL, headers); 94 94 95 95 xmlSetGenericErrorFunc(0, parseErrorFunc); -
trunk/WebCore/xml/xmlhttprequest.cpp
r17212 r17264 298 298 m_aborted = false; 299 299 300 ResourceRequest request(m_url); 301 300 302 if (!body.isNull() && m_method != "GET" && m_method != "HEAD" && (m_url.protocol().lower() == "http" || m_url.protocol().lower() == "https")) { 301 303 String contentType = getRequestHeader("Content-Type"); … … 315 317 m_encoding = UTF8Encoding(); 316 318 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())); 318 320 } else { 319 321 // 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 320 323 if (m_method == "HEAD") 321 324 m_method = "GET"; 322 m_loader = ResourceLoader::create(m_async ? this : 0, m_method, m_url);323 }325 } 326 request.setHTTPMethod(m_method); 324 327 325 328 if (m_requestHeaders.size() > 0) 326 m_loader->setRequestHeaders(m_requestHeaders);329 request.addHTTPHeaderFields(m_requestHeaders); 327 330 328 331 if (!m_async) { … … 334 337 // avoid deadlock in case the loader wants to use JS on a background thread 335 338 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); 337 340 } 338 341 … … 352 355 } 353 356 354 // start can return falsehere, 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. 355 358 // 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()); 359 361 } 360 362 … … 528 530 529 531 if (m_responseHeaders.isEmpty() && m_loader) 530 m_responseHeaders = m_loader-> queryMetaData("HTTP-Headers");532 m_responseHeaders = m_loader->responseHTTPHeadersAsString(); 531 533 532 534 if (m_state < Sent) … … 560 562 { 561 563 if (m_responseHeaders.isEmpty() && m_loader) 562 m_responseHeaders = m_loader-> queryMetaData("HTTP-Headers");564 m_responseHeaders = m_loader->responseHTTPHeadersAsString(); 563 565 564 566 if (m_state < Sent) -
trunk/WebCore/xml/xmlhttprequest.h
r17212 r17264 28 28 #include "ResourceLoaderClient.h" 29 29 #include "PlatformString.h" 30 #include "ResourceRequest.h" 30 31 #include "StringHash.h" 31 32 … … 102 103 DeprecatedString m_method; 103 104 bool m_async; 104 HashMap<String, String>m_requestHeaders;105 ResourceRequest::HTTPHeaderMap m_requestHeaders; 105 106 106 107 RefPtr<ResourceLoader> m_loader;
Note: See TracChangeset
for help on using the changeset viewer.