18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2005, 2006, 2009 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 *
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.  Redistributions of source code must retain the above copyright
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2.  Redistributions in binary form must reproduce the above copyright
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer in the
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     documentation and/or other materials provided with the distribution.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     its contributors may be used to endorse or promote products derived
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     from this software without specific prior written permission.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef SubresourceLoader_h
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SubresourceLoader_h
31d0825bca7fe65beaee391d30da42e937db621564Steve Block
32d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "FrameLoaderTypes.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceLoader.h"
342bde8e466a4451c7319e3a072d118917957d6554Steve Block
352bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/text/WTFString.h>
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    class ResourceRequest;
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class SubresourceLoaderClient;
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class SubresourceLoader : public ResourceLoader {
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
4454cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block        static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, const String& optionalOutgoingReferrer = String(), bool shouldBufferData = true);
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        void clearClient() { m_client = 0; }
47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    private:
49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        SubresourceLoader(Frame*, SubresourceLoaderClient*, bool sendResourceLoadCallbacks, bool shouldContentSniff);
50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual ~SubresourceLoader();
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void willSendRequest(ResourceRequest&, const ResourceResponse& redirectResponse);
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void didReceiveResponse(const ResourceResponse&);
552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        virtual void didReceiveData(const char*, int, long long encodedDataLength, bool allAtOnce);
566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen        virtual void didReceiveCachedMetadata(const char*, int);
5768513a70bcd92384395513322f1b801e7bf9c729Steve Block        virtual void didFinishLoading(double finishTime);
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void didFail(const ResourceError&);
59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual bool shouldUseCredentialStorage();
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void didReceiveAuthenticationChallenge(const AuthenticationChallenge&);
61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual void receivedCancellation(const AuthenticationChallenge&);
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void didCancel(const ResourceError&);
63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
642bde8e466a4451c7319e3a072d118917957d6554Steve Block#if HAVE(CFNETWORK_DATA_ARRAY_CALLBACK)
652bde8e466a4451c7319e3a072d118917957d6554Steve Block        virtual bool supportsDataArray() { return true; }
662bde8e466a4451c7319e3a072d118917957d6554Steve Block        virtual void didReceiveDataArray(CFArrayRef);
672bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
682bde8e466a4451c7319e3a072d118917957d6554Steve Block
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        SubresourceLoaderClient* m_client;
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_loadingMultipartContent;
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // SubresourceLoader_h
76