18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2006 Apple Computer, 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#ifndef ResourceHandle_h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ResourceHandle_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "AuthenticationChallenge.h" 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "AuthenticationClient.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTTPHeaderMap.h" 3268513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "NetworkingContext.h" 335f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "ThreadableLoader.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/OwnPtr.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if USE(SOUP) 378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qiantypedef struct _SoupSession SoupSession; 388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 4081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CF) 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef const struct __CFData * CFDataRef; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if USE(WININET) 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef unsigned long DWORD; 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef unsigned long DWORD_PTR; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef void* LPVOID; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef LPVOID HINTERNET; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RetainPtr.h> 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __OBJC__ 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSData; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSError; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSURLConnection; 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class WebCoreResourceHandleAsDelegate; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSData; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSError; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSURLConnection; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebCoreResourceHandleAsDelegate; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct objc_object *id; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if USE(CFNETWORK) 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct _CFURLConnection* CFURLConnectionRef; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef int CFHTTPCookieStorageAcceptPolicy; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CFURLSTORAGESESSIONS) 7581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochtypedef const struct __CFURLStorageSession* CFURLStorageSessionRef; 7681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 7781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AuthenticationChallenge; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Credential; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass FormData; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass KURL; 8521939df44de1705786c545cd1bf519d47250322dBen Murdochclass ProtectionSpace; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ResourceError; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ResourceHandleClient; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ResourceHandleInternal; 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass ResourceRequest; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ResourceResponse; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass SchedulePair; 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass SharedBuffer; 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttemplate <typename T> class Timer; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass ResourceHandle : public RefCounted<ResourceHandle> 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if PLATFORM(MAC) || USE(CFNETWORK) || USE(CURL) 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , public AuthenticationClient 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 10268513a70bcd92384395513322f1b801e7bf9c729Steve Block static PassRefPtr<ResourceHandle> create(NetworkingContext*, const ResourceRequest&, ResourceHandleClient*, bool defersLoading, bool shouldContentSniff); 10368513a70bcd92384395513322f1b801e7bf9c729Steve Block static void loadResourceSynchronously(NetworkingContext*, const ResourceRequest&, StoredCredentials, ResourceError&, ResourceResponse&, Vector<char>& data); 104967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static void prepareForURL(const KURL&); 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static bool willLoadFromCache(ResourceRequest&, Frame*); 1076c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen static void cacheMetadata(const ResourceResponse&, const Vector<char>&); 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool didSendBodyDataDelegateExists(); 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual ~ResourceHandle(); 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 114635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if PLATFORM(MAC) || USE(CFNETWORK) 1155f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void willSendRequest(ResourceRequest&, const ResourceResponse& redirectResponse); 116635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool shouldUseCredentialStorage(); 117635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) || USE(CFNETWORK) || USE(CURL) 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didReceiveAuthenticationChallenge(const AuthenticationChallenge&); 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void receivedCredential(const AuthenticationChallenge&, const Credential&); 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void receivedRequestToContinueWithoutCredential(const AuthenticationChallenge&); 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void receivedCancellation(const AuthenticationChallenge&); 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didCancelAuthenticationChallenge(const AuthenticationChallenge&); 12721939df44de1705786c545cd1bf519d47250322dBen Murdoch#if USE(PROTECTION_SPACE_AUTH_CALLBACK) 12821939df44de1705786c545cd1bf519d47250322dBen Murdoch bool canAuthenticateAgainstProtectionSpace(const ProtectionSpace&); 12921939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSURLConnection *connection() const; 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCoreResourceHandleAsDelegate *delegate(); 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void releaseDelegate(); 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project id releaseProxy(); 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void schedule(SchedulePair*); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void unschedule(SchedulePair*); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#elif USE(CFNETWORK) 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFURLConnectionRef connection() const; 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFURLConnectionRef releaseConnectionForDownload(); 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void setHostAllowsAnyHTTPSCertificate(const String&); 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void setClientCertificate(const String& host, CFDataRef); 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WIN) && USE(CURL) 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void setHostAllowsAnyHTTPSCertificate(const String&); 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 14781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if PLATFORM(WIN) && USE(CURL) && USE(CF) 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void setClientCertificate(const String& host, CFDataRef); 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PassRefPtr<SharedBuffer> bufferedData(); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool supportsBufferedData(); 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool shouldContentSniff() const; 1555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian static bool shouldContentSniffURL(const KURL&); 1565f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1575f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian static void forceContentSniffing(); 1585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if USE(WININET) 160bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen void setSynchronousInternetHandle(HINTERNET); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void fileLoadTimer(Timer<ResourceHandle>*); 162bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen void onRedirect(); 163bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen bool onRequestComplete(); 164bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen static void CALLBACK internetStatusCallback(HINTERNET, DWORD_PTR, DWORD, LPVOID, DWORD); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 167f07202aa5d185feb2bd6a0a038123863aadb3491Andrei Popescu#if PLATFORM(QT) || USE(CURL) || USE(SOUP) || PLATFORM(ANDROID) 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ResourceHandleInternal* getInternal() { return d.get(); } 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1718f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if USE(SOUP) 1728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian static SoupSession* defaultSession(); 1738f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 1748f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Used to work around the fact that you don't get any more NSURLConnection callbacks until you return from the one you're in. 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool loadsBlocked(); 177967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 178967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch bool hasAuthenticationChallenge() const; 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearAuthentication(); 1802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void cancel(); 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The client may be 0, in which case no callbacks will be made. 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ResourceHandleClient* client() const; 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setClient(ResourceHandleClient*); 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setDefersLoading(bool); 187a923424180b9d2cbe3a3951caed13039eef1edf6Ben Murdoch#if PLATFORM(ANDROID) 188a923424180b9d2cbe3a3951caed13039eef1edf6Ben Murdoch// TODO: this needs upstreaming. 189a923424180b9d2cbe3a3951caed13039eef1edf6Ben Murdoch void pauseLoad(bool); 190a923424180b9d2cbe3a3951caed13039eef1edf6Ben Murdoch#endif 191967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 192967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ResourceRequest& firstRequest(); 193dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const String& lastHTTPMethod() const; 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void fireFailure(Timer<ResourceHandle>*); 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 19781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CFURLSTORAGESESSIONS) 19881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static void setPrivateBrowsingEnabled(bool); 19981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static CFURLStorageSessionRef privateBrowsingStorageSession(); 20081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static void setPrivateBrowsingStorageSessionIdentifierBase(const String&); 20181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 20281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block using RefCounted<ResourceHandle>::ref; 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block using RefCounted<ResourceHandle>::deref; 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 206a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochprotected: 207a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ResourceHandle(const ResourceRequest&, ResourceHandleClient*, bool defersLoading, bool shouldContentSniff); 208a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 210a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch enum FailureType { 211a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch NoFailure, 212a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch BlockedFailure, 213a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch InvalidURLFailure 214a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch }; 215a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 21606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen void platformSetDefersLoading(bool); 21706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void scheduleFailure(FailureType); 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 22068513a70bcd92384395513322f1b801e7bf9c729Steve Block bool start(NetworkingContext*); 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void refAuthenticationClient() { ref(); } 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void derefAuthenticationClient() { deref(); } 224643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 225967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#if PLATFORM(MAC) 226967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch void createNSURLConnection(id delegate, bool shouldUseCredentialStorage, bool shouldContentSniff); 22781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#elif USE(CF) 228967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch void createCFURLConnection(bool shouldUseCredentialStorage, bool shouldContentSniff); 229967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#endif 230967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 23181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CFURLSTORAGESESSIONS) 23281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static RetainPtr<CFURLStorageSessionRef> createPrivateBrowsingStorageSession(CFStringRef identifier); 23381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static String privateBrowsingStorageSessionIdentifierDefaultBase(); 23481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 23581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project friend class ResourceHandleInternal; 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project OwnPtr<ResourceHandleInternal> d; 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ResourceHandle_h 243