Title: [134687] trunk/Source/WebKit2
Revision
134687
Author
beid...@apple.com
Date
2012-11-14 15:59:01 -0800 (Wed, 14 Nov 2012)

Log Message

Move loading responsibility out of WebResourceLoadScheduler into a new WebResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=102259

Reviewed by Alexey Proskuryakov.

Add a new WebResourceLoader message class which allows NetworkResourceLoader to message
WebResourceLoaders directly.

Consolidate the NetworkProcessConnection and WebResourceLoadScheduler messaging responsibilities
directly into WebResourceLoader.

Build-system infrastructure stuff:
* DerivedSources.make:
* Platform/CoreIPC/MessageID.h:
* WebKit2.xcodeproj/project.pbxproj:

Message directly to WebResourceLoader instead of NetworkProcessConnection:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::connection):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didReceiveData):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFail):
(WebKit::NetworkResourceLoader::willSendRequest):
* NetworkProcess/NetworkResourceLoader.h:
(WebKit::NetworkResourceLoader::destinationID):

For now handle the only relevant message class which is the WebResourceLoader class:
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
* WebProcess/Network/NetworkProcessConnection.h:
* WebProcess/Network/NetworkProcessConnection.messages.in:

Allow access to WebResourceLoaders by identifier:
* WebProcess/Network/WebResourceLoadScheduler.cpp:
* WebProcess/Network/WebResourceLoadScheduler.h:
(WebKit::WebResourceLoadScheduler::webResourceLoaderForIdentifier):

Directly handle resource loading messages instead of having WebResourceLoadScheduler do it:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::willSendRequest):
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.messages.in:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (134686 => 134687)


--- trunk/Source/WebKit2/ChangeLog	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-14 23:59:01 UTC (rev 134687)
@@ -1,3 +1,54 @@
+2012-11-14  Brady Eidson  <beid...@apple.com>
+
+        Move loading responsibility out of WebResourceLoadScheduler into a new WebResourceLoader
+        https://bugs.webkit.org/show_bug.cgi?id=102259
+
+        Reviewed by Alexey Proskuryakov.
+
+        Add a new WebResourceLoader message class which allows NetworkResourceLoader to message
+        WebResourceLoaders directly.
+
+        Consolidate the NetworkProcessConnection and WebResourceLoadScheduler messaging responsibilities
+        directly into WebResourceLoader.
+
+        Build-system infrastructure stuff:
+        * DerivedSources.make:
+        * Platform/CoreIPC/MessageID.h:
+        * WebKit2.xcodeproj/project.pbxproj:
+
+        Message directly to WebResourceLoader instead of NetworkProcessConnection:
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::connection):
+        (WebKit::NetworkResourceLoader::didReceiveResponse):
+        (WebKit::NetworkResourceLoader::didReceiveData):
+        (WebKit::NetworkResourceLoader::didFinishLoading):
+        (WebKit::NetworkResourceLoader::didFail):
+        (WebKit::NetworkResourceLoader::willSendRequest):
+        * NetworkProcess/NetworkResourceLoader.h:
+        (WebKit::NetworkResourceLoader::destinationID):
+
+        For now handle the only relevant message class which is the WebResourceLoader class:
+        * WebProcess/Network/NetworkProcessConnection.cpp:
+        (WebKit::NetworkProcessConnection::didReceiveMessage):
+        * WebProcess/Network/NetworkProcessConnection.h:
+        * WebProcess/Network/NetworkProcessConnection.messages.in:
+
+        Allow access to WebResourceLoaders by identifier:
+        * WebProcess/Network/WebResourceLoadScheduler.cpp:
+        * WebProcess/Network/WebResourceLoadScheduler.h:
+        (WebKit::WebResourceLoadScheduler::webResourceLoaderForIdentifier):
+
+        Directly handle resource loading messages instead of having WebResourceLoadScheduler do it:
+        * WebProcess/Network/WebResourceLoader.cpp:
+        (WebKit::WebResourceLoader::willSendRequest):
+        (WebKit::WebResourceLoader::didReceiveResponse):
+        (WebKit::WebResourceLoader::didReceiveData):
+        (WebKit::WebResourceLoader::didFinishResourceLoad):
+        (WebKit::WebResourceLoader::didFailResourceLoad):
+        (WebKit::WebResourceLoader::didReceiveResource):
+        * WebProcess/Network/WebResourceLoader.h:
+        * WebProcess/Network/WebResourceLoader.messages.in:
+
 2012-11-14  Andy Estes  <aes...@apple.com>
 
         Fix the Lion build after r134681.

Modified: trunk/Source/WebKit2/DerivedSources.make (134686 => 134687)


--- trunk/Source/WebKit2/DerivedSources.make	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/DerivedSources.make	2012-11-14 23:59:01 UTC (rev 134687)
@@ -105,6 +105,7 @@
     WebProcessProxy \
     WebResourceCacheManager \
     WebResourceCacheManagerProxy \
+    WebResourceLoader \
 #
 
 SCRIPTS = \

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (134686 => 134687)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2012-11-14 23:59:01 UTC (rev 134687)
@@ -33,11 +33,11 @@
 #include "Logging.h"
 #include "NetworkConnectionToWebProcess.h"
 #include "NetworkProcess.h"
-#include "NetworkProcessConnectionMessages.h"
 #include "NetworkResourceLoadParameters.h"
 #include "RemoteNetworkingContext.h"
 #include "SharedMemory.h"
 #include "WebCoreArgumentCoders.h"
+#include "WebResourceLoaderMessages.h"
 #include <WebCore/NotImplemented.h>
 #include <WebCore/ResourceBuffer.h>
 #include <WebCore/ResourceHandle.h>
@@ -64,6 +64,11 @@
         m_connection->unregisterObserver(this);
 }
 
+CoreIPC::Connection* NetworkResourceLoader::connection() const
+{
+    return m_connection->connection();
+}
+
 ResourceLoadPriority NetworkResourceLoader::priority() const
 {
     return m_requestParameters.priority();
@@ -146,7 +151,7 @@
 void NetworkResourceLoader::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
 {
     // FIXME (NetworkProcess): Cache the response.
-    connectionToWebProcess()->connection()->send(Messages::NetworkProcessConnection::DidReceiveResponse(m_identifier, response), 0);
+    send(Messages::WebResourceLoader::DidReceiveResponse(response));
 }
 
 void NetworkResourceLoader::didReceiveData(ResourceHandle*, const char* data, int length, int encodedDataLength)
@@ -155,14 +160,14 @@
     // Such buffering will need to be thread safe, as this callback is happening on a background thread.
     
     CoreIPC::DataReference dataReference(reinterpret_cast<const uint8_t*>(data), length);
-    connectionToWebProcess()->connection()->send(Messages::NetworkProcessConnection::DidReceiveData(m_identifier, dataReference, encodedDataLength, false), 0);
+    send(Messages::WebResourceLoader::DidReceiveData(dataReference, encodedDataLength, false));
 }
 
 void NetworkResourceLoader::didFinishLoading(ResourceHandle*, double finishTime)
 {
     // FIXME (NetworkProcess): For the memory cache we'll need to update the finished status of the cached resource here.
     // Such bookkeeping will need to be thread safe, as this callback is happening on a background thread.
-    connectionToWebProcess()->connection()->send(Messages::NetworkProcessConnection::DidFinishResourceLoad(m_identifier, finishTime), 0);
+    send(Messages::WebResourceLoader::DidFinishResourceLoad(finishTime));
     scheduleStopOnMainThread();
 }
 
@@ -170,7 +175,7 @@
 {
     // FIXME (NetworkProcess): For the memory cache we'll need to update the finished status of the cached resource here.
     // Such bookkeeping will need to be thread safe, as this callback is happening on a background thread.
-    connectionToWebProcess()->connection()->send(Messages::NetworkProcessConnection::DidFailResourceLoad(m_identifier, error), 0);
+    send(Messages::WebResourceLoader::DidFailResourceLoad(error));
     scheduleStopOnMainThread();
 }
 
@@ -198,10 +203,7 @@
 
     uint64_t requestID = generateWillSendRequestID();
 
-    if (!connectionToWebProcess()->connection()->send(Messages::NetworkProcessConnection::WillSendRequest(requestID, m_identifier, request, redirectResponse), 0)) {
-        // FIXME (NetworkProcess): What should we do if we can't send the message?
-        return;
-    }
+    send(Messages::WebResourceLoader::WillSendRequest(requestID, request, redirectResponse));
     
     OwnPtr<ResourceRequest> newRequest = responseMap().waitForResponse(requestID);
     request = *newRequest;

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h (134686 => 134687)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h	2012-11-14 23:59:01 UTC (rev 134687)
@@ -28,6 +28,7 @@
 
 #if ENABLE(NETWORK_PROCESS)
 
+#include "MessageSender.h"
 #include "NetworkConnectionToWebProcess.h"
 #include "NetworkResourceLoadParameters.h"
 #include <WebCore/ResourceHandleClient.h>
@@ -44,7 +45,7 @@
 class RemoteNetworkingContext;
 typedef uint64_t ResourceLoadIdentifier;
 
-class NetworkResourceLoader : public RefCounted<NetworkResourceLoader>, public NetworkConnectionToWebProcessObserver, public WebCore::ResourceHandleClient {
+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)
     {
@@ -53,6 +54,10 @@
     
     ~NetworkResourceLoader();
 
+    // Used by MessageSender.
+    CoreIPC::Connection* connection() const;
+    uint64_t destinationID() const { return identifier(); }
+    
     void start();
 
     virtual void connectionToWebProcessDidClose(NetworkConnectionToWebProcess*) OVERRIDE;

Modified: trunk/Source/WebKit2/Platform/CoreIPC/MessageID.h (134686 => 134687)


--- trunk/Source/WebKit2/Platform/CoreIPC/MessageID.h	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/Platform/CoreIPC/MessageID.h	2012-11-14 23:59:01 UTC (rev 134687)
@@ -118,6 +118,7 @@
 
     // Messages sent by the network process to a web process.
     MessageClassNetworkProcessConnection,
+    MessageClassWebResourceLoader,
     
 #if ENABLE(SHARED_WORKER_PROCESS)
     // Messages sent by the UI process to the shared worker process.

Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (134686 => 134687)


--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2012-11-14 23:59:01 UTC (rev 134687)
@@ -523,6 +523,8 @@
 		51DD9F2816367DA2001578E9 /* NetworkConnectionToWebProcessMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51DD9F2616367DA2001578E9 /* NetworkConnectionToWebProcessMessageReceiver.cpp */; };
 		51DD9F2916367DA2001578E9 /* NetworkConnectionToWebProcessMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51DD9F2716367DA2001578E9 /* NetworkConnectionToWebProcessMessages.h */; };
 		51EFC1CF1524E62500C9A938 /* WKBundleDOMWindowExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 51FA2D541521118600C1BA0B /* WKBundleDOMWindowExtension.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		51F060E01654317F00F3281B /* WebResourceLoaderMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F060DE1654317500F3281B /* WebResourceLoaderMessages.h */; };
+		51F060E11654318500F3281B /* WebResourceLoaderMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3281B /* WebResourceLoaderMessageReceiver.cpp */; };
 		51FA2D7415212DF100C1BA0B /* InjectedBundleDOMWindowExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51FA2D5C15211A5000C1BA0B /* InjectedBundleDOMWindowExtension.cpp */; };
 		51FA2D7715212E2600C1BA0B /* WKBundleDOMWindowExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51FA2D7515212E1E00C1BA0B /* WKBundleDOMWindowExtension.cpp */; };
 		51FB08FF1639DE1A00EC324A /* WebResourceLoadScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51ABF65616392F1500132A7A /* WebResourceLoadScheduler.cpp */; };
@@ -1609,6 +1611,7 @@
 		5105B0F31630872E00E27709 /* NetworkProcessProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = NetworkProcessProxy.messages.in; sourceTree = "<group>"; };
 		510AFFB716542048001BA05E /* WebResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebResourceLoader.cpp; path = Network/WebResourceLoader.cpp; sourceTree = "<group>"; };
 		510AFFB816542048001BA05E /* WebResourceLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebResourceLoader.h; path = Network/WebResourceLoader.h; sourceTree = "<group>"; };
+		510AFFCE16542CBD001BA05E /* WebResourceLoader.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = WebResourceLoader.messages.in; path = Network/WebResourceLoader.messages.in; sourceTree = "<group>"; };
 		510CC7DD16138E2900D03ED3 /* NetworkProcessMainMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkProcessMainMac.mm; sourceTree = "<group>"; };
 		510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcess.cpp; path = NetworkProcess/NetworkProcess.cpp; sourceTree = "<group>"; };
 		510CC7E016138E2900D03ED3 /* NetworkProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcess.h; path = NetworkProcess/NetworkProcess.h; sourceTree = "<group>"; };
@@ -1761,6 +1764,8 @@
 		51D130571382F10500351EDD /* WebProcessProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessProxyMac.mm; sourceTree = "<group>"; };
 		51DD9F2616367DA2001578E9 /* NetworkConnectionToWebProcessMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkConnectionToWebProcessMessageReceiver.cpp; sourceTree = "<group>"; };
 		51DD9F2716367DA2001578E9 /* NetworkConnectionToWebProcessMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkConnectionToWebProcessMessages.h; sourceTree = "<group>"; };
+		51F060DD1654317500F3281B /* WebResourceLoaderMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebResourceLoaderMessageReceiver.cpp; sourceTree = "<group>"; };
+		51F060DE1654317500F3281B /* WebResourceLoaderMessages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebResourceLoaderMessages.h; sourceTree = "<group>"; };
 		51FA2D541521118600C1BA0B /* WKBundleDOMWindowExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBundleDOMWindowExtension.h; sourceTree = "<group>"; };
 		51FA2D5A15211A1E00C1BA0B /* InjectedBundleDOMWindowExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleDOMWindowExtension.h; sourceTree = "<group>"; };
 		51FA2D5C15211A5000C1BA0B /* InjectedBundleDOMWindowExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleDOMWindowExtension.cpp; sourceTree = "<group>"; };
@@ -3113,6 +3118,7 @@
 				51ABF65716392F1500132A7A /* WebResourceLoadScheduler.h */,
 				510AFFB716542048001BA05E /* WebResourceLoader.cpp */,
 				510AFFB816542048001BA05E /* WebResourceLoader.h */,
+				510AFFCE16542CBD001BA05E /* WebResourceLoader.messages.in */,
 			);
 			name = Network;
 			sourceTree = "<group>";
@@ -4331,6 +4337,8 @@
 				33367652130C9ECA006C9DE2 /* WebResourceCacheManagerMessages.h */,
 				33367653130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessageReceiver.cpp */,
 				33367654130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessages.h */,
+				51F060DD1654317500F3281B /* WebResourceLoaderMessageReceiver.cpp */,
+				51F060DE1654317500F3281B /* WebResourceLoaderMessages.h */,
 			);
 			name = "Derived Sources";
 			path = DerivedSources/WebKit2;
@@ -4979,6 +4987,7 @@
 				2984F57D164B915F004BC0C6 /* CustomProtocolManagerProxyMessages.h in Headers */,
 				2984F581164B9BBD004BC0C6 /* CustomProtocolManager.h in Headers */,
 				2984F589164BA095004BC0C6 /* CustomProtocolManagerMessages.h in Headers */,
+				51F060E01654317F00F3281B /* WebResourceLoaderMessages.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -5930,6 +5939,7 @@
 				2984F57C164B915F004BC0C6 /* CustomProtocolManagerProxyMessageReceiver.cpp in Sources */,
 				2984F583164B9BD9004BC0C6 /* CustomProtocolManagerMac.mm in Sources */,
 				2984F588164BA095004BC0C6 /* CustomProtocolManagerMessageReceiver.cpp in Sources */,
+				51F060E11654318500F3281B /* WebResourceLoaderMessageReceiver.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp	2012-11-14 23:59:01 UTC (rev 134687)
@@ -51,10 +51,13 @@
 
 void NetworkProcessConnection::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder)
 {
-    if (messageID.is<CoreIPC::MessageClassNetworkProcessConnection>()) {
-        didReceiveNetworkProcessConnectionMessage(connection, messageID, decoder);
+    if (messageID.is<CoreIPC::MessageClassWebResourceLoader>()) {
+        if (WebResourceLoader* webResourceLoader = WebProcess::shared().webResourceLoadScheduler().webResourceLoaderForIdentifier(decoder.destinationID()))
+            webResourceLoader->didReceiveWebResourceLoaderMessage(connection, messageID, decoder);
+        
         return;
     }
+
     ASSERT_NOT_REACHED();
 }
 
@@ -73,47 +76,6 @@
 {
 }
 
-void NetworkProcessConnection::willSendRequest(uint64_t requestID, ResourceLoadIdentifier resourceLoadIdentifier, const ResourceRequest& proposedRequest, const ResourceResponse& redirectResponse)
-{
-    ResourceRequest newRequest = proposedRequest;
-    WebProcess::shared().webResourceLoadScheduler().willSendRequest(resourceLoadIdentifier, newRequest, redirectResponse);
-
-    WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::WillSendRequestHandled(requestID, newRequest), 0);
-}
-
-void NetworkProcessConnection::didReceiveResponse(ResourceLoadIdentifier resourceLoadIdentifier, const ResourceResponse& response)
-{
-    WebProcess::shared().webResourceLoadScheduler().didReceiveResponse(resourceLoadIdentifier, response);
-}
-
-void NetworkProcessConnection::didReceiveData(ResourceLoadIdentifier resourceLoadIdentifier, const CoreIPC::DataReference& data, int64_t encodedDataLength, bool allAtOnce)
-{
-    WebProcess::shared().webResourceLoadScheduler().didReceiveData(resourceLoadIdentifier, reinterpret_cast<const char*>(data.data()), data.size(), encodedDataLength, allAtOnce);
-}
-
-void NetworkProcessConnection::didFinishResourceLoad(ResourceLoadIdentifier resourceLoadIdentifier, double finishTime)
-{
-    WebProcess::shared().webResourceLoadScheduler().didFinishResourceLoad(resourceLoadIdentifier, finishTime);
-}
-
-void NetworkProcessConnection::didFailResourceLoad(ResourceLoadIdentifier resourceLoadIdentifier, const ResourceError& error)
-{
-    WebProcess::shared().webResourceLoadScheduler().didFailResourceLoad(resourceLoadIdentifier, error);
-}
-
-void NetworkProcessConnection::didReceiveResource(ResourceLoadIdentifier resourceLoadIdentifier, const ShareableResource::Handle& handle, double finishTime)
-{
-    RefPtr<ResourceBuffer> resourceBuffer;
-
-    RefPtr<ShareableResource> resource = ShareableResource::create(handle);
-    if (resource)
-        resourceBuffer = WebResourceBuffer::create(resource.release());
-    else
-        resourceBuffer = ResourceBuffer::create();
-    
-    WebProcess::shared().webResourceLoadScheduler().didReceiveResource(resourceLoadIdentifier, *resourceBuffer, finishTime);
-}
-
 } // namespace WebKit
 
 #endif // ENABLE(NETWORK_PROCESS)

Modified: trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h	2012-11-14 23:59:01 UTC (rev 134687)
@@ -27,7 +27,6 @@
 #define NetworkProcessConnection_h
 
 #include "Connection.h"
-#include "ShareableResource.h"
 #include <wtf/RefCounted.h>
 #include <wtf/text/WTFString.h>
 
@@ -66,17 +65,6 @@
     virtual void didClose(CoreIPC::Connection*);
     virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference messageReceiverName, CoreIPC::StringReference messageName) OVERRIDE;
 
-    void didReceiveNetworkProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
-    void didReceiveSyncNetworkProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&, OwnPtr<CoreIPC::MessageEncoder>&);
-
-    void willSendRequest(uint64_t requestID, ResourceLoadIdentifier, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
-    void didReceiveResponse(ResourceLoadIdentifier, const WebCore::ResourceResponse&);
-    void didReceiveData(ResourceLoadIdentifier, const CoreIPC::DataReference&, int64_t encodedDataLength, bool allAtOnce);
-    void didFinishResourceLoad(ResourceLoadIdentifier, double finishTime);
-    void didFailResourceLoad(ResourceLoadIdentifier, const WebCore::ResourceError&);
-
-    void didReceiveResource(ResourceLoadIdentifier, const ShareableResource::Handle&, double finishTime);
-
     // The connection from the web process to the network process.
     RefPtr<CoreIPC::Connection> m_connection;
 };

Modified: trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.messages.in (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.messages.in	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.messages.in	2012-11-14 23:59:01 UTC (rev 134687)
@@ -24,15 +24,6 @@
 
 messages -> NetworkProcessConnection {
 
-    // FIXME (NetworkProcess): We'll need much more granularity for response messages.
-    WillSendRequest(uint64_t requestID, uint64_t resourceLoadIdentifier, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse)
-    DidReceiveResponse(uint64_t resourceLoadIdentifier, WebCore::ResourceResponse response)
-    DidReceiveData(uint64_t resourceLoadIdentifier, CoreIPC::DataReference data, int64_t encodedDataLength, bool allAtOnce)
-    DidFinishResourceLoad(uint64_t resourceLoadIdentifier, double finishTime)
-    DidFailResourceLoad(uint64_t resourceLoadIdentifier, WebCore::ResourceError error)
-
-    // DidReceiveResource is for when we have the entire resource data available at once, such as when the resource is cached in memory
-    DidReceiveResource(uint64_t resourceLoadIdentifier, WebKit::ShareableResource::Handle resource, double finishTime)
 }
 
 #endif // ENABLE(NETWORK_PROCESS)

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp	2012-11-14 23:59:01 UTC (rev 134687)
@@ -104,7 +104,7 @@
     }
     
     resourceLoader->setIdentifier(identifier);
-    m_webResourceLoaders.set(identifier, WebResourceLoader::create(identifier, resourceLoader));
+    m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader));
     
     notifyDidScheduleResourceRequest(resourceLoader);
 }
@@ -188,69 +188,6 @@
     WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::SetSerialLoadingEnabled(enabled), Messages::NetworkConnectionToWebProcess::SetSerialLoadingEnabled::Reply(), 0);
 }
 
-void WebResourceLoadScheduler::willSendRequest(ResourceLoadIdentifier identifier, WebCore::ResourceRequest& request, const WebCore::ResourceResponse& redirectResponse)
-{
-    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
-    ASSERT(loader);
-
-    LOG(Network, "(WebProcess) WebResourceLoadScheduler::willSendRequest to '%s'", request.url().string().utf8().data());
-    loader->willSendRequest(request, redirectResponse);
-}
-
-void WebResourceLoadScheduler::didReceiveResponse(ResourceLoadIdentifier identifier, const WebCore::ResourceResponse& response)
-{
-    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
-    ASSERT(loader);
-
-    LOG(Network, "(WebProcess) WebResourceLoadScheduler::didReceiveResponse for '%s'", loader->url().string().utf8().data());
-    loader->didReceiveResponse(response);
-}
-
-void WebResourceLoadScheduler::didReceiveData(ResourceLoadIdentifier identifier, const char* data, int size, int64_t encodedDataLength, bool allAtOnce)
-{
-    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
-    ASSERT(loader);
-
-    LOG(Network, "(WebProcess) WebResourceLoadScheduler::didReceiveData of size %i for '%s'", size, loader->url().string().utf8().data());
-    loader->didReceiveData(data, size, encodedDataLength, allAtOnce);
-}
-
-void WebResourceLoadScheduler::didFinishResourceLoad(ResourceLoadIdentifier identifier, double finishTime)
-{
-    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
-    ASSERT(loader);
-
-    LOG(Network, "(WebProcess) WebResourceLoadScheduler::didFinishResourceLoad for '%s'", loader->url().string().utf8().data());
-    loader->didFinishLoading(finishTime);
-}
-
-void WebResourceLoadScheduler::didReceiveResource(ResourceLoadIdentifier identifier, const ResourceBuffer& buffer, double finishTime)
-{    
-    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
-    ASSERT(loader);
-
-    LOG(Network, "(WebProcess) WebResourceLoadScheduler::didReceiveResource for '%s'", loader->url().string().utf8().data());
-    
-    // Only send data to the didReceiveData callback if it exists.
-    if (!buffer.isEmpty()) {
-        // FIXME (NetworkProcess): Give ResourceLoader the ability to take ResourceBuffer arguments.
-        // That will allow us to pass it along to CachedResources and allow them to hang on to the shared memory behind the scenes.
-        loader->didReceiveData(reinterpret_cast<const char*>(buffer.data()), buffer.size(), -1 /* encodedDataLength */, true);
-    }
-
-    loader->didFinishLoading(finishTime);
-}
-
-void WebResourceLoadScheduler::didFailResourceLoad(ResourceLoadIdentifier identifier, const WebCore::ResourceError& error)
-{
-    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
-    ASSERT(loader);
-
-    LOG(Network, "(WebProcess) WebResourceLoadScheduler::didFailResourceLoad for '%s'", loader->url().string().utf8().data());
-    
-    loader->didFail(error);
-}
-
 } // namespace WebKit
 
 #endif // ENABLE(NETWORK_PROCESS)

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h	2012-11-14 23:59:01 UTC (rev 134687)
@@ -26,6 +26,7 @@
 #ifndef WebResourceLoadScheduler_h
 #define WebResourceLoadScheduler_h
 
+#include "WebResourceLoader.h"
 #include <WebCore/ResourceLoadPriority.h>
 #include <WebCore/ResourceLoadScheduler.h>
 #include <WebCore/ResourceLoader.h>
@@ -35,7 +36,6 @@
 namespace WebKit {
 
 class NetworkProcessConnection;
-class WebResourceLoader;
 typedef uint64_t ResourceLoadIdentifier;
 
 class WebResourceLoadScheduler : public WebCore::ResourceLoadScheduler {
@@ -58,14 +58,7 @@
 
     virtual void setSerialLoadingEnabled(bool) OVERRIDE;
 
-    // FIXME (NetworkProcess): Get the ResourceLoadScheduler out of the business of vending this data directly to ResourceLoaders.
-    // The Messages should be sent to an object that proxies the ResourceLoader directly.
-    void willSendRequest(ResourceLoadIdentifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
-    void didReceiveResponse(ResourceLoadIdentifier, const WebCore::ResourceResponse&);
-    void didReceiveData(ResourceLoadIdentifier, const char*, int, int64_t encodedDataLength, bool allAtOnce);
-    void didFinishResourceLoad(ResourceLoadIdentifier, double finishTime);
-    void didFailResourceLoad(ResourceLoadIdentifier, const WebCore::ResourceError&);
-    void didReceiveResource(ResourceLoadIdentifier, const WebCore::ResourceBuffer&, double finishTime);
+    WebResourceLoader* webResourceLoaderForIdentifier(ResourceLoadIdentifier identifier) const { return m_webResourceLoaders.get(identifier).get(); }
 
 private:
     void scheduleLoad(WebCore::ResourceLoader*, WebCore::ResourceLoadPriority);

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2012-11-14 23:59:01 UTC (rev 134687)
@@ -28,20 +28,25 @@
 
 #if ENABLE(NETWORK_PROCESS)
 
+#include "DataReference.h"
+#include "Logging.h"
+#include "NetworkConnectionToWebProcessMessages.h"
+#include "NetworkProcessConnection.h"
+#include "WebCoreArgumentCoders.h"
+#include "WebProcess.h"
 #include <WebCore/ResourceLoader.h>
 
 using namespace WebCore;
 
 namespace WebKit {
 
-PassRefPtr<WebResourceLoader> WebResourceLoader::create(ResourceLoadIdentifier identifier, PassRefPtr<ResourceLoader> coreLoader)
+PassRefPtr<WebResourceLoader> WebResourceLoader::create(PassRefPtr<ResourceLoader> coreLoader)
 {
-    return adoptRef(new WebResourceLoader(identifier, coreLoader));
+    return adoptRef(new WebResourceLoader(coreLoader));
 }
 
-WebResourceLoader::WebResourceLoader(ResourceLoadIdentifier identifier, PassRefPtr<WebCore::ResourceLoader> coreLoader)
-    : m_resourceLoadIdentifier(identifier)
-    , m_coreLoader(coreLoader)
+WebResourceLoader::WebResourceLoader(PassRefPtr<WebCore::ResourceLoader> coreLoader)
+    : m_coreLoader(coreLoader)
 {
 }
 
@@ -49,6 +54,58 @@
 {
 }
 
+void WebResourceLoader::willSendRequest(uint64_t requestID, const ResourceRequest& proposedRequest, const ResourceResponse& redirectResponse)
+{
+    LOG(Network, "(WebProcess) WebResourceLoader::willSendRequest to '%s'", proposedRequest.url().string().utf8().data());
+    
+    ResourceRequest newRequest = proposedRequest;
+    m_coreLoader->willSendRequest(newRequest, redirectResponse);
+
+    WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::WillSendRequestHandled(requestID, newRequest), 0);
+}
+
+void WebResourceLoader::didReceiveResponse(const WebCore::ResourceResponse& response)
+{
+    LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResponse for '%s'", m_coreLoader->url().string().utf8().data());
+    m_coreLoader->didReceiveResponse(response);
+}
+
+void WebResourceLoader::didReceiveData(const CoreIPC::DataReference& data, int64_t encodedDataLength, bool allAtOnce)
+{
+    LOG(Network, "(WebProcess) WebResourceLoader::didReceiveData of size %i for '%s'", (int)data.size(), m_coreLoader->url().string().utf8().data());
+    m_coreLoader->didReceiveData(reinterpret_cast<const char*>(data.data()), data.size(), encodedDataLength, allAtOnce);
+}
+
+void WebResourceLoader::didFinishResourceLoad(double finishTime)
+{
+    LOG(Network, "(WebProcess) WebResourceLoader::didFinishResourceLoad for '%s'", m_coreLoader->url().string().utf8().data());
+    m_coreLoader->didFinishLoading(finishTime);
+}
+
+void WebResourceLoader::didFailResourceLoad(const ResourceError& error)
+{
+    LOG(Network, "(WebProcess) WebResourceLoader::didFailResourceLoad for '%s'", m_coreLoader->url().string().utf8().data());
+    
+    m_coreLoader->didFail(error);
+}
+
+void WebResourceLoader::didReceiveResource(const ShareableResource::Handle& handle, double finishTime)
+{
+    LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResource for '%s'", m_coreLoader->url().string().utf8().data());
+
+    RefPtr<ShareableResource> resource = ShareableResource::create(handle);
+
+    // Only send data to the didReceiveData callback if it exists.
+    if (!resource->size()) {
+        // FIXME (NetworkProcess): Give ResourceLoader the ability to take ResourceBuffer arguments.
+        // That will allow us to pass it along to CachedResources and allow them to hang on to the shared memory behind the scenes.
+        // FIXME (NetworkProcess): Pass along the correct value for encodedDataLength.
+        m_coreLoader->didReceiveData(reinterpret_cast<const char*>(resource->data()), resource->size(), -1 /* encodedDataLength */ , true);
+    }
+
+    m_coreLoader->didFinishLoading(finishTime);
+}
+
 } // namespace WebKit
 
 #endif // ENABLE(NETWORK_PROCESS)

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h (134686 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h	2012-11-14 23:56:13 UTC (rev 134686)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h	2012-11-14 23:59:01 UTC (rev 134687)
@@ -28,12 +28,22 @@
 
 #if ENABLE(NETWORK_PROCESS)
 
+#include "Connection.h"
+#include "ShareableResource.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
 
+namespace CoreIPC {
+class DataReference;
+}
+
 namespace WebCore {
+class ResourceBuffer;
+class ResourceError;
 class ResourceLoader;
+class ResourceRequest;
+class ResourceResponse;
 }
 
 namespace WebKit {
@@ -42,17 +52,22 @@
 
 class WebResourceLoader : public RefCounted<WebResourceLoader> {
 public:
-    static PassRefPtr<WebResourceLoader> create(ResourceLoadIdentifier, PassRefPtr<WebCore::ResourceLoader>);
+    static PassRefPtr<WebResourceLoader> create(PassRefPtr<WebCore::ResourceLoader>);
 
     ~WebResourceLoader();
 
-    WebCore::ResourceLoader* coreLoader() const { return m_coreLoader.get(); }
-    ResourceLoadIdentifier resourceLoadIdentifier() const { return m_resourceLoadIdentifier; }
+    void didReceiveWebResourceLoaderMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
 
 private:
-    WebResourceLoader(ResourceLoadIdentifier, PassRefPtr<WebCore::ResourceLoader>);
+    WebResourceLoader(PassRefPtr<WebCore::ResourceLoader>);
 
-    ResourceLoadIdentifier m_resourceLoadIdentifier;
+    void willSendRequest(uint64_t requestID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
+    void didReceiveResponse(const WebCore::ResourceResponse&);
+    void didReceiveData(const CoreIPC::DataReference&, int64_t encodedDataLength, bool allAtOnce);
+    void didFinishResourceLoad(double finishTime);
+    void didFailResourceLoad(const WebCore::ResourceError&);
+    void didReceiveResource(const ShareableResource::Handle&, double finishTime);
+
     RefPtr<WebCore::ResourceLoader> m_coreLoader;
 };
 

Copied: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in (from rev 134686, trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.messages.in) (0 => 134687)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in	                        (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in	2012-11-14 23:59:01 UTC (rev 134687)
@@ -0,0 +1,34 @@
+# 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.
+
+messages -> WebResourceLoader {
+
+    // FIXME (NetworkProcess): We'll need much more granularity for response messages.
+    WillSendRequest(uint64_t requestID, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse)
+    DidReceiveResponse(WebCore::ResourceResponse response)
+    DidReceiveData(CoreIPC::DataReference data, int64_t encodedDataLength, bool allAtOnce)
+    DidFinishResourceLoad(double finishTime)
+    DidFailResourceLoad(WebCore::ResourceError error)
+
+    // DidReceiveResource is for when we have the entire resource data available at once, such as when the resource is cached in memory
+    DidReceiveResource(WebKit::ShareableResource::Handle resource, double finishTime)
+}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to