summaryrefslogtreecommitdiff
path: root/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-22 09:09:45 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-22 09:10:13 +0100
commit470286ecfe79d59df14944e5b5d34630fc739391 (patch)
tree43983212872e06cebefd2ae474418fa2908ca54c /Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
parent23037105e948c2065da5a937d3a2396b0ff45c1e (diff)
downloadqtwebkit-470286ecfe79d59df14944e5b5d34630fc739391.tar.gz
Imported WebKit commit e89504fa9195b2063b2530961d4b73dd08de3242 (http://svn.webkit.org/repository/webkit/trunk@135485)
Change-Id: I03774e5ac79721c13ffa30d152537a74d0b12e66 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2/NetworkProcess/NetworkResourceLoader.h')
-rw-r--r--Source/WebKit2/NetworkProcess/NetworkResourceLoader.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h b/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
new file mode 100644
index 000000000..bbfbc5dfe
--- /dev/null
+++ b/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2012 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef NetworkResourceLoader_h
+#define NetworkResourceLoader_h
+
+#if ENABLE(NETWORK_PROCESS)
+
+#include "MessageSender.h"
+#include "NetworkConnectionToWebProcess.h"
+#include "NetworkResourceLoadParameters.h"
+#include <WebCore/AuthenticationChallenge.h>
+#include <WebCore/ResourceHandleClient.h>
+#include <WebCore/ResourceLoaderOptions.h>
+#include <WebCore/ResourceRequest.h>
+
+namespace WebCore {
+class ResourceBuffer;
+class ResourceHandle;
+}
+
+namespace WebKit {
+
+class RemoteNetworkingContext;
+typedef uint64_t ResourceLoadIdentifier;
+
+class NetworkResourceLoader : public RefCounted<NetworkResourceLoader>, public NetworkConnectionToWebProcessObserver, public WebCore::ResourceHandleClient, public CoreIPC::MessageSender<NetworkResourceLoader> {
+public:
+ static RefPtr<NetworkResourceLoader> create(const NetworkResourceLoadParameters& parameters, ResourceLoadIdentifier identifier, NetworkConnectionToWebProcess* connection)
+ {
+ return adoptRef(new NetworkResourceLoader(parameters, identifier, connection));
+ }
+
+ ~NetworkResourceLoader();
+
+ // Used by MessageSender.
+ CoreIPC::Connection* connection() const;
+ uint64_t destinationID() const { return identifier(); }
+
+ void didReceiveNetworkResourceLoaderMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
+
+ void start();
+
+ virtual void connectionToWebProcessDidClose(NetworkConnectionToWebProcess*) OVERRIDE;
+
+ ResourceLoadIdentifier identifier() const { return m_identifier; }
+ WebCore::ResourceLoadPriority priority() const;
+
+ NetworkConnectionToWebProcess* connectionToWebProcess() { return m_connection.get(); }
+
+ // ResourceHandleClient methods
+ virtual void willSendRequest(WebCore::ResourceHandle*, WebCore::ResourceRequest&, const WebCore::ResourceResponse& /*redirectResponse*/) OVERRIDE;
+ virtual void didSendData(WebCore::ResourceHandle*, unsigned long long /*bytesSent*/, unsigned long long /*totalBytesToBeSent*/) OVERRIDE;
+ virtual void didReceiveResponse(WebCore::ResourceHandle*, const WebCore::ResourceResponse&) OVERRIDE;
+ virtual void didReceiveData(WebCore::ResourceHandle*, const char*, int, int /*encodedDataLength*/) OVERRIDE;
+ virtual void didReceiveCachedMetadata(WebCore::ResourceHandle*, const char*, int) OVERRIDE;
+ virtual void didFinishLoading(WebCore::ResourceHandle*, double /*finishTime*/) OVERRIDE;
+ virtual void didFail(WebCore::ResourceHandle*, const WebCore::ResourceError&) OVERRIDE;
+ virtual void wasBlocked(WebCore::ResourceHandle*) OVERRIDE;
+ virtual void cannotShowURL(WebCore::ResourceHandle*) OVERRIDE;
+ virtual void willCacheResponse(WebCore::ResourceHandle*, WebCore::CacheStoragePolicy&) OVERRIDE;
+ virtual bool shouldUseCredentialStorage(WebCore::ResourceHandle*) OVERRIDE;
+ virtual void didReceiveAuthenticationChallenge(WebCore::ResourceHandle*, const WebCore::AuthenticationChallenge&) OVERRIDE;
+ virtual void didCancelAuthenticationChallenge(WebCore::ResourceHandle*, const WebCore::AuthenticationChallenge&) OVERRIDE;
+ virtual void receivedCancellation(WebCore::ResourceHandle*, const WebCore::AuthenticationChallenge&) OVERRIDE;
+
+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
+ virtual bool canAuthenticateAgainstProtectionSpace(WebCore::ResourceHandle*, const WebCore::ProtectionSpace&) OVERRIDE;
+#endif
+
+#if HAVE(NETWORK_CFDATA_ARRAY_CALLBACK)
+ virtual bool supportsDataArray() OVERRIDE;
+ virtual void didReceiveDataArray(WebCore::ResourceHandle*, CFArrayRef) OVERRIDE;
+#endif
+
+#if PLATFORM(MAC)
+#if USE(CFNETWORK)
+ virtual CFCachedURLResponseRef willCacheResponse(WebCore::ResourceHandle*, CFCachedURLResponseRef) OVERRIDE;
+#else
+ virtual NSCachedURLResponse* willCacheResponse(WebCore::ResourceHandle*, NSCachedURLResponse*) OVERRIDE;
+#endif
+ virtual void willStopBufferingData(WebCore::ResourceHandle*, const char*, int) OVERRIDE;
+#endif // PLATFORM(MAC)
+
+#if ENABLE(BLOB)
+ virtual WebCore::AsyncFileStream* createAsyncFileStream(WebCore::FileStreamClient*) OVERRIDE;
+#endif
+
+private:
+ NetworkResourceLoader(const NetworkResourceLoadParameters&, ResourceLoadIdentifier, NetworkConnectionToWebProcess*);
+
+ void willSendRequestHandled(uint64_t requestID, const WebCore::ResourceRequest&);
+ void canAuthenticateAgainstProtectionSpaceHandled(uint64_t requestID, bool canAuthenticate);
+ void receivedAuthenticationCredential(const WebCore::AuthenticationChallenge&, const WebCore::Credential&);
+ void receivedRequestToContinueWithoutAuthenticationCredential(const WebCore::AuthenticationChallenge&);
+ void receivedAuthenticationCancellation(const WebCore::AuthenticationChallenge&);
+
+ void scheduleStopOnMainThread();
+ static void performStops(void*);
+
+ void stop();
+
+ NetworkResourceLoadParameters m_requestParameters;
+ ResourceLoadIdentifier m_identifier;
+
+ RefPtr<RemoteNetworkingContext> m_networkingContext;
+ RefPtr<WebCore::ResourceHandle> m_handle;
+ RefPtr<NetworkConnectionToWebProcess> m_connection;
+
+ OwnPtr<WebCore::AuthenticationChallenge> m_currentAuthenticationChallenge;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(NETWORK_PROCESS)
+
+#endif // NetworkResourceLoader_h