18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2006, 2007, 2008 Apple, Inc.  All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "config.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "ResourceRequest.h"
28cad810f21b803229eb11403f9209855525a25d57Steve Block
29cad810f21b803229eb11403f9209855525a25d57Steve Block#if !USE(CFNETWORK)
30cad810f21b803229eb11403f9209855525a25d57Steve Block
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "WebCoreSystemInterface.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "FormDataStreamMac.h"
342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#import "ResourceRequestCFNet.h"
352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#import "WebCoreSystemInterface.h"
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <Foundation/Foundation.h>
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#ifdef BUILDING_ON_TIGER
40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projecttypedef unsigned NSUInteger;
41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif
42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
4381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch@interface NSURLRequest (WebNSURLRequestDetails)
44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (NSArray *)contentDispositionEncodingFallbackArray;
4581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch+ (void)setDefaultTimeoutInterval:(NSTimeInterval)seconds;
46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project@end
47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch@interface NSMutableURLRequest (WebMutableNSURLRequestDetails)
49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)setContentDispositionEncodingFallbackArray:(NSArray *)theEncodingFallbackArray;
50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project@end
51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNSURLRequest* ResourceRequest::nsURLRequest() const
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    updatePlatformRequest();
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return [[m_nsRequest.get() retain] autorelease];
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceRequest::doUpdateResourceRequest()
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_url = [m_nsRequest.get() URL];
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_cachePolicy = (ResourceRequestCachePolicy)[m_nsRequest.get() cachePolicy];
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_timeoutInterval = [m_nsRequest.get() timeoutInterval];
665f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    m_firstPartyForCookies = [m_nsRequest.get() mainDocumentURL];
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (NSString* method = [m_nsRequest.get() HTTPMethod])
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_httpMethod = method;
70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    m_allowCookies = [m_nsRequest.get() HTTPShouldHandleCookies];
712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    if (ResourceRequest::httpPipeliningEnabled())
742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        m_priority = toResourceLoadPriority(wkGetHTTPPipeliningPriority(m_nsRequest.get()));
752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif
762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSDictionary *headers = [m_nsRequest.get() allHTTPHeaderFields];
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSEnumerator *e = [headers keyEnumerator];
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSString *name;
80cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    m_httpHeaderFields.clear();
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    while ((name = [e nextObject]))
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_httpHeaderFields.set(name, [headers objectForKey:name]);
83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
84635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    // The below check can be removed once we require a version of Foundation with -[NSURLRequest contentDispositionEncodingFallbackArray] method.
85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    static bool supportsContentDispositionEncodingFallbackArray = [NSURLRequest instancesRespondToSelector:@selector(contentDispositionEncodingFallbackArray)];
86635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (supportsContentDispositionEncodingFallbackArray) {
87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        m_responseContentDispositionEncodingFallbackArray.clear();
88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        NSArray *encodingFallbacks = [m_nsRequest.get() contentDispositionEncodingFallbackArray];
89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        NSUInteger count = [encodingFallbacks count];
90635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        for (NSUInteger i = 0; i < count; ++i) {
91635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            CFStringEncoding encoding = CFStringConvertNSStringEncodingToEncoding([(NSNumber *)[encodingFallbacks objectAtIndex:i] unsignedLongValue]);
92635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (encoding != kCFStringEncodingInvalidId)
935f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian                m_responseContentDispositionEncodingFallbackArray.append(CFStringConvertEncodingToIANACharSetName(encoding));
94635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    }
96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (NSData* bodyData = [m_nsRequest.get() HTTPBody])
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_httpBody = FormData::create([bodyData bytes], [bodyData length]);
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else if (NSInputStream* bodyStream = [m_nsRequest.get() HTTPBodyStream])
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (FormData* formData = httpBodyFromStream(bodyStream))
101635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            m_httpBody = formData;
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceRequest::doUpdatePlatformRequest()
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (isNull()) {
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_nsRequest = nil;
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return;
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSMutableURLRequest* nsRequest = [m_nsRequest.get() mutableCopy];
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (nsRequest)
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        [nsRequest setURL:url()];
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        nsRequest = [[NSMutableURLRequest alloc] initWithURL:url()];
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef BUILDING_ON_TIGER
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wkSupportsMultipartXMixedReplace(nsRequest);
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
1232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    if (ResourceRequest::httpPipeliningEnabled())
1242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        wkSetHTTPPipeliningPriority(nsRequest, toHTTPPipeliningPriority(m_priority));
1252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif
1262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    [nsRequest setCachePolicy:(NSURLRequestCachePolicy)cachePolicy()];
12881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
12981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    double timeoutInterval = ResourceRequestBase::timeoutInterval();
13081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (timeoutInterval)
13181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        [nsRequest setTimeoutInterval:timeoutInterval];
13281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    // Otherwise, respect NSURLRequest default timeout.
13381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
1345f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    [nsRequest setMainDocumentURL:firstPartyForCookies()];
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!httpMethod().isEmpty())
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        [nsRequest setHTTPMethod:httpMethod()];
137231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    [nsRequest setHTTPShouldHandleCookies:allowCookies()];
138cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
139cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    // Cannot just use setAllHTTPHeaderFields here, because it does not remove headers.
140cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    NSArray *oldHeaderFieldNames = [[nsRequest allHTTPHeaderFields] allKeys];
141cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    for (unsigned i = [oldHeaderFieldNames count]; i != 0; --i)
142cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        [nsRequest setValue:nil forHTTPHeaderField:[oldHeaderFieldNames objectAtIndex:i - 1]];
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HTTPHeaderMap::const_iterator end = httpHeaderFields().end();
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    for (HTTPHeaderMap::const_iterator it = httpHeaderFields().begin(); it != end; ++it)
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        [nsRequest setValue:it->second forHTTPHeaderField:it->first];
146635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
1478f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    // The below check can be removed once we require a version of Foundation with -[NSMutableURLRequest setContentDispositionEncodingFallbackArray:] method.
1488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static bool supportsContentDispositionEncodingFallbackArray = [NSMutableURLRequest instancesRespondToSelector:@selector(setContentDispositionEncodingFallbackArray:)];
149635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (supportsContentDispositionEncodingFallbackArray) {
150635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        NSMutableArray *encodingFallbacks = [NSMutableArray array];
151635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        unsigned count = m_responseContentDispositionEncodingFallbackArray.size();
152635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        for (unsigned i = 0; i != count; ++i) {
153635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            CFStringRef encodingName = m_responseContentDispositionEncodingFallbackArray[i].createCFString();
154635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            unsigned long nsEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding(encodingName));
155635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            CFRelease(encodingName);
156635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (nsEncoding != kCFStringEncodingInvalidId)
157635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                [encodingFallbacks addObject:[NSNumber numberWithUnsignedLong:nsEncoding]];
158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
159635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        [nsRequest setContentDispositionEncodingFallbackArray:encodingFallbacks];
160635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    }
161635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<FormData> formData = httpBody();
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (formData && !formData->isEmpty())
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        WebCore::setHTTPBody(nsRequest, formData);
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_nsRequest.adoptNS(nsRequest);
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceRequest::applyWebArchiveHackForMail()
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Hack because Mail checks for this property to detect data / archive loads
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    [NSURLProtocol setProperty:@"" forKey:@"WebDataRequest" inRequest:(NSMutableURLRequest *)nsURLRequest()];
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
17581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CFURLSTORAGESESSIONS)
17681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
17781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid ResourceRequest::setStorageSession(CFURLStorageSessionRef storageSession)
17881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{
17981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    m_nsRequest = wkCopyRequestWithStorageSession(storageSession, m_nsRequest.get());
18081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch}
18181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
18281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif
18381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
184cad810f21b803229eb11403f9209855525a25d57Steve Block} // namespace WebCore
185cad810f21b803229eb11403f9209855525a25d57Steve Block
186cad810f21b803229eb11403f9209855525a25d57Steve Block#endif // !USE(CFNETWORK)
187