Title: [134640] trunk/Source/WebKit2
Revision
134640
Author
[email protected]
Date
2012-11-14 11:43:42 -0800 (Wed, 14 Nov 2012)

Log Message

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

Reviewed by Alexey Proskuryakov.

WebResourceLoadScheduler has taken on too many responsibilities that shouldn't belong to it.

We should create a WebResourceLoader that will eventually act as an intermediary between
WebCore::ResourceLoader and NetworkResourceLoader.

This patch is prep-work: It adds a new skeleton class to the WebProcess.

* WebKit2.xcodeproj/project.pbxproj:

Add the new WebResourceLoader class which is a very thin skeleton for now:
* WebProcess/Network/WebResourceLoader.cpp: Added.
(WebKit::WebResourceLoader::create):
(WebKit::WebResourceLoader::WebResourceLoader):
(WebKit::WebResourceLoader::~WebResourceLoader):
* WebProcess/Network/WebResourceLoader.h: Added.
(WebKit::WebResourceLoader::coreLoader):

Adapt WebResourceLoadScheduler to use this new class where appropriate:
* WebProcess/Network/WebResourceLoadScheduler.cpp:
(WebKit::WebResourceLoadScheduler::scheduleLoad):
(WebKit::WebResourceLoadScheduler::addMainResourceLoad):
(WebKit::WebResourceLoadScheduler::remove):
(WebKit::WebResourceLoadScheduler::willSendRequest):
(WebKit::WebResourceLoadScheduler::didReceiveResponse):
(WebKit::WebResourceLoadScheduler::didReceiveData):
(WebKit::WebResourceLoadScheduler::didFinishResourceLoad):
(WebKit::WebResourceLoadScheduler::didReceiveResource):
(WebKit::WebResourceLoadScheduler::didFailResourceLoad):
* WebProcess/Network/WebResourceLoadScheduler.h:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (134639 => 134640)


--- trunk/Source/WebKit2/ChangeLog	2012-11-14 19:43:05 UTC (rev 134639)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-14 19:43:42 UTC (rev 134640)
@@ -1,5 +1,43 @@
 2012-11-14  Brady Eidson  <[email protected]>
 
+        Part of "Move loading responsibility out of WebResourceLoadScheduler into a new WebResourceLoader"
+        https://bugs.webkit.org/show_bug.cgi?id=102259
+
+        Reviewed by Alexey Proskuryakov.
+
+        WebResourceLoadScheduler has taken on too many responsibilities that shouldn't belong to it.
+
+        We should create a WebResourceLoader that will eventually act as an intermediary between
+        WebCore::ResourceLoader and NetworkResourceLoader.
+
+        This patch is prep-work: It adds a new skeleton class to the WebProcess.
+
+        * WebKit2.xcodeproj/project.pbxproj:
+
+        Add the new WebResourceLoader class which is a very thin skeleton for now:
+        * WebProcess/Network/WebResourceLoader.cpp: Added.
+        (WebKit::WebResourceLoader::create):
+        (WebKit::WebResourceLoader::WebResourceLoader):
+        (WebKit::WebResourceLoader::~WebResourceLoader):
+        * WebProcess/Network/WebResourceLoader.h: Added.
+        (WebKit::WebResourceLoader::coreLoader):
+
+        Adapt WebResourceLoadScheduler to use this new class where appropriate:
+        * WebProcess/Network/WebResourceLoadScheduler.cpp:
+        (WebKit::WebResourceLoadScheduler::scheduleLoad):
+        (WebKit::WebResourceLoadScheduler::addMainResourceLoad):
+        (WebKit::WebResourceLoadScheduler::remove):
+        (WebKit::WebResourceLoadScheduler::willSendRequest):
+        (WebKit::WebResourceLoadScheduler::didReceiveResponse):
+        (WebKit::WebResourceLoadScheduler::didReceiveData):
+        (WebKit::WebResourceLoadScheduler::didFinishResourceLoad):
+        (WebKit::WebResourceLoadScheduler::didReceiveResource):
+        (WebKit::WebResourceLoadScheduler::didFailResourceLoad):
+        * WebProcess/Network/WebResourceLoadScheduler.h:
+
+
+2012-11-14  Brady Eidson  <[email protected]>
+
         Deliver data from NetworkProcess to resources progressively.
         https://bugs.webkit.org/show_bug.cgi?id=102171
 

Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (134639 => 134640)


--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2012-11-14 19:43:05 UTC (rev 134639)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2012-11-14 19:43:42 UTC (rev 134640)
@@ -370,6 +370,8 @@
 		51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */; };
 		5105B0DD162F7E9D00E27709 /* NetworkProcessManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5105B0DB162F7E9D00E27709 /* NetworkProcessManager.cpp */; };
 		5105B0DE162F7E9D00E27709 /* NetworkProcessManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5105B0DC162F7E9D00E27709 /* NetworkProcessManager.h */; };
+		510AFFB916542048001BA05E /* WebResourceLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510AFFB716542048001BA05E /* WebResourceLoader.cpp */; };
+		510AFFBA16542048001BA05E /* WebResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 510AFFB816542048001BA05E /* WebResourceLoader.h */; };
 		510CC8491613C85C00D03ED3 /* NetworkProcess.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 510CC80E1613C79900D03ED3 /* NetworkProcess.app */; };
 		510CC84F1613C92C00D03ED3 /* MainMacProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FA31011E3921E00DB1371 /* MainMacProcess.cpp */; };
 		510FBB9A1288C95E00AFFDF4 /* WebContextMenuItemData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510FBB981288C95E00AFFDF4 /* WebContextMenuItemData.cpp */; };
@@ -1587,6 +1589,8 @@
 		5105B0DB162F7E9D00E27709 /* NetworkProcessManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkProcessManager.cpp; sourceTree = "<group>"; };
 		5105B0DC162F7E9D00E27709 /* NetworkProcessManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkProcessManager.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
@@ -3052,6 +3056,8 @@
 				51FB0902163A3B1C00EC324A /* NetworkProcessConnection.messages.in */,
 				51ABF65616392F1500132A7A /* WebResourceLoadScheduler.cpp */,
 				51ABF65716392F1500132A7A /* WebResourceLoadScheduler.h */,
+				510AFFB716542048001BA05E /* WebResourceLoader.cpp */,
+				510AFFB816542048001BA05E /* WebResourceLoader.h */,
 			);
 			name = Network;
 			sourceTree = "<group>";
@@ -4908,6 +4914,7 @@
 				1AA3D7621651B7D3008713D0 /* RemoteLayerTreeHostMessages.h in Headers */,
 				51FD18B61651FBAD00DBE1CE /* NetworkResourceLoader.h in Headers */,
 				51CBBA10165219B6005BE8FD /* NetworkResourceLoadParameters.h in Headers */,
+				510AFFBA16542048001BA05E /* WebResourceLoader.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -5854,6 +5861,7 @@
 				1AA3D7611651B7D3008713D0 /* RemoteLayerTreeHostMessageReceiver.cpp in Sources */,
 				51FD18B51651FBAD00DBE1CE /* NetworkResourceLoader.cpp in Sources */,
 				51CBBA0F165219B6005BE8FD /* NetworkResourceLoadParameters.cpp in Sources */,
+				510AFFB916542048001BA05E /* WebResourceLoader.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp (134639 => 134640)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp	2012-11-14 19:43:05 UTC (rev 134639)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp	2012-11-14 19:43:42 UTC (rev 134640)
@@ -32,6 +32,7 @@
 #include "NetworkResourceLoadParameters.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebProcess.h"
+#include "WebResourceLoader.h"
 #include <WebCore/DocumentLoader.h>
 #include <WebCore/Frame.h>
 #include <WebCore/FrameLoader.h>
@@ -103,7 +104,7 @@
     }
     
     resourceLoader->setIdentifier(identifier);
-    m_pendingResourceLoaders.set(identifier, resourceLoader);
+    m_webResourceLoaders.set(identifier, WebResourceLoader::create(identifier, resourceLoader));
     
     notifyDidScheduleResourceRequest(resourceLoader);
 }
@@ -121,7 +122,7 @@
 
     resourceLoader->setIdentifier(identifier);
     
-    m_activeResourceLoaders.set(identifier, resourceLoader);
+    m_coreResourceLoaders.set(identifier, resourceLoader);
 }
 
 void WebResourceLoadScheduler::remove(ResourceLoader* resourceLoader)
@@ -144,9 +145,9 @@
     // If a resource load was actually started within the NetworkProcess then the NetworkProcess handles clearing out the identifier.
     WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RemoveLoadIdentifier(identifier), 0);
     
-    ASSERT(m_pendingResourceLoaders.contains(identifier) || m_activeResourceLoaders.contains(identifier));
-    m_pendingResourceLoaders.remove(identifier);
-    m_activeResourceLoaders.remove(identifier);
+    ASSERT(m_webResourceLoaders.contains(identifier) || m_coreResourceLoaders.contains(identifier));
+    m_webResourceLoaders.remove(identifier);
+    m_coreResourceLoaders.remove(identifier);
 }
 
 void WebResourceLoadScheduler::crossOriginRedirectReceived(ResourceLoader*, const KURL&)
@@ -189,7 +190,7 @@
 
 void WebResourceLoadScheduler::willSendRequest(ResourceLoadIdentifier identifier, WebCore::ResourceRequest& request, const WebCore::ResourceResponse& redirectResponse)
 {
-    RefPtr<ResourceLoader> loader = m_pendingResourceLoaders.get(identifier);
+    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
     ASSERT(loader);
 
     LOG(Network, "(WebProcess) WebResourceLoadScheduler::willSendRequest to '%s'", request.url().string().utf8().data());
@@ -198,7 +199,7 @@
 
 void WebResourceLoadScheduler::didReceiveResponse(ResourceLoadIdentifier identifier, const WebCore::ResourceResponse& response)
 {
-    RefPtr<ResourceLoader> loader = m_pendingResourceLoaders.get(identifier);
+    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
     ASSERT(loader);
 
     LOG(Network, "(WebProcess) WebResourceLoadScheduler::didReceiveResponse for '%s'", loader->url().string().utf8().data());
@@ -207,7 +208,7 @@
 
 void WebResourceLoadScheduler::didReceiveData(ResourceLoadIdentifier identifier, const char* data, int size, int64_t encodedDataLength, bool allAtOnce)
 {
-    RefPtr<ResourceLoader> loader = m_pendingResourceLoaders.get(identifier);
+    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());
@@ -216,7 +217,7 @@
 
 void WebResourceLoadScheduler::didFinishResourceLoad(ResourceLoadIdentifier identifier, double finishTime)
 {
-    RefPtr<ResourceLoader> loader = m_pendingResourceLoaders.get(identifier);
+    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
     ASSERT(loader);
 
     LOG(Network, "(WebProcess) WebResourceLoadScheduler::didFinishResourceLoad for '%s'", loader->url().string().utf8().data());
@@ -225,7 +226,7 @@
 
 void WebResourceLoadScheduler::didReceiveResource(ResourceLoadIdentifier identifier, const ResourceBuffer& buffer, double finishTime)
 {    
-    RefPtr<ResourceLoader> loader = m_pendingResourceLoaders.get(identifier);
+    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
     ASSERT(loader);
 
     LOG(Network, "(WebProcess) WebResourceLoadScheduler::didReceiveResource for '%s'", loader->url().string().utf8().data());
@@ -242,7 +243,7 @@
 
 void WebResourceLoadScheduler::didFailResourceLoad(ResourceLoadIdentifier identifier, const WebCore::ResourceError& error)
 {
-    RefPtr<ResourceLoader> loader = m_pendingResourceLoaders.get(identifier);
+    RefPtr<ResourceLoader> loader = m_webResourceLoaders.get(identifier)->coreLoader();
     ASSERT(loader);
 
     LOG(Network, "(WebProcess) WebResourceLoadScheduler::didFailResourceLoad for '%s'", loader->url().string().utf8().data());

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h (134639 => 134640)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h	2012-11-14 19:43:05 UTC (rev 134639)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h	2012-11-14 19:43:42 UTC (rev 134640)
@@ -35,6 +35,7 @@
 namespace WebKit {
 
 class NetworkProcessConnection;
+class WebResourceLoader;
 typedef uint64_t ResourceLoadIdentifier;
 
 class WebResourceLoadScheduler : public WebCore::ResourceLoadScheduler {
@@ -69,9 +70,8 @@
 private:
     void scheduleLoad(WebCore::ResourceLoader*, WebCore::ResourceLoadPriority);
     
-    typedef HashMap<unsigned long, RefPtr<WebCore::ResourceLoader> > ResourceLoaderMap;
-    ResourceLoaderMap m_pendingResourceLoaders;
-    ResourceLoaderMap m_activeResourceLoaders;
+    HashMap<unsigned long, RefPtr<WebCore::ResourceLoader> > m_coreResourceLoaders;
+    HashMap<unsigned long, RefPtr<WebResourceLoader> > m_webResourceLoaders;
     
     unsigned m_suspendPendingRequestsCount;
 

Added: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (0 => 134640)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	                        (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2012-11-14 19:43:42 UTC (rev 134640)
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+#include "config.h"
+#include "WebResourceLoader.h"
+
+#if ENABLE(NETWORK_PROCESS)
+
+#include <WebCore/ResourceLoader.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+PassRefPtr<WebResourceLoader> WebResourceLoader::create(ResourceLoadIdentifier identifier, PassRefPtr<ResourceLoader> coreLoader)
+{
+    return adoptRef(new WebResourceLoader(identifier, coreLoader));
+}
+
+WebResourceLoader::WebResourceLoader(ResourceLoadIdentifier identifier, PassRefPtr<WebCore::ResourceLoader> coreLoader)
+    : m_resourceLoadIdentifier(identifier)
+    , m_coreLoader(coreLoader)
+{
+}
+
+WebResourceLoader::~WebResourceLoader()
+{
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(NETWORK_PROCESS)

Added: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h (0 => 134640)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h	                        (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h	2012-11-14 19:43:42 UTC (rev 134640)
@@ -0,0 +1,62 @@
+/*
+ * 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 WebResourceLoader_h
+#define WebResourceLoader_h
+
+#if ENABLE(NETWORK_PROCESS)
+
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
+
+namespace WebCore {
+class ResourceLoader;
+}
+
+namespace WebKit {
+
+typedef uint64_t ResourceLoadIdentifier;
+
+class WebResourceLoader : public RefCounted<WebResourceLoader> {
+public:
+    static PassRefPtr<WebResourceLoader> create(ResourceLoadIdentifier, PassRefPtr<WebCore::ResourceLoader>);
+
+    ~WebResourceLoader();
+
+    WebCore::ResourceLoader* coreLoader() const { return m_coreLoader.get(); }
+
+private:
+    WebResourceLoader(ResourceLoadIdentifier, PassRefPtr<WebCore::ResourceLoader>);
+
+    ResourceLoadIdentifier m_resourceLoadIdentifier;
+    RefPtr<WebCore::ResourceLoader> m_coreLoader;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(NETWORK_PROCESS)
+
+#endif // WebResourceLoader_h
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to