Title: [134299] trunk/Source
Revision
134299
Author
[email protected]
Date
2012-11-12 13:56:33 -0800 (Mon, 12 Nov 2012)

Log Message

NetworkProcess: Use an accurate shouldContentSniff value when creating ResourceHandles
https://bugs.webkit.org/show_bug.cgi?id=101872

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Expose shouldSniffContent to pass it along to the NetworkProcess.

* loader/ResourceLoader.h:
(WebCore::ResourceLoader::shouldSniffContent):

Source/WebKit2:

The WebProcess now passes "shouldContentSniff" over to the NetworkProcess with the requests so it can be respected.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::scheduleNetworkRequest): Update to pass through "shouldContentSniff"
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:

* NetworkProcess/NetworkRequest.cpp:
(WebKit::NetworkRequest::NetworkRequest):
(WebKit::NetworkRequest::start):
* NetworkProcess/NetworkRequest.h:
(WebKit::NetworkRequest::create):

* NetworkProcess/NetworkResourceLoadScheduler.cpp:
(WebKit::NetworkResourceLoadScheduler::scheduleNetworkRequest): Update to pass through "shouldContentSniff"
* NetworkProcess/NetworkResourceLoadScheduler.h:
* WebProcess/Network/NetworkProcessConnection.h:

* WebProcess/Network/WebResourceLoadScheduler.cpp:
(WebKit::WebResourceLoadScheduler::scheduleLoad): Update to pass through "shouldContentSniff"

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (134298 => 134299)


--- trunk/Source/WebCore/ChangeLog	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebCore/ChangeLog	2012-11-12 21:56:33 UTC (rev 134299)
@@ -1,3 +1,15 @@
+2012-11-12  Brady Eidson  <[email protected]>
+
+        NetworkProcess: Use an accurate shouldContentSniff value when creating ResourceHandles
+        https://bugs.webkit.org/show_bug.cgi?id=101872
+
+        Reviewed by Alexey Proskuryakov.
+
+        Expose shouldSniffContent to pass it along to the NetworkProcess.
+
+        * loader/ResourceLoader.h:
+        (WebCore::ResourceLoader::shouldSniffContent):
+
 2012-11-12  Christophe Dumez  <[email protected]>
 
         Fix memory leak in createSurfaceForBackingStore()

Modified: trunk/Source/WebCore/loader/ResourceLoader.h (134298 => 134299)


--- trunk/Source/WebCore/loader/ResourceLoader.h	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebCore/loader/ResourceLoader.h	2012-11-12 21:56:33 UTC (rev 134299)
@@ -140,6 +140,7 @@
     const KURL& url() const { return m_request.url(); } 
     ResourceHandle* handle() const { return m_handle.get(); }
     bool shouldSendResourceLoadCallbacks() const { return m_options.sendLoadCallbacks == SendCallbacks; }
+    bool shouldSniffContent() const { return m_options.sniffContent == SniffContent; }
 
     bool reachedTerminalState() const { return m_reachedTerminalState; }
 

Modified: trunk/Source/WebKit2/ChangeLog (134298 => 134299)


--- trunk/Source/WebKit2/ChangeLog	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-12 21:56:33 UTC (rev 134299)
@@ -1,3 +1,31 @@
+2012-11-12  Brady Eidson  <[email protected]>
+
+        NetworkProcess: Use an accurate shouldContentSniff value when creating ResourceHandles
+        https://bugs.webkit.org/show_bug.cgi?id=101872
+
+        Reviewed by Alexey Proskuryakov.
+
+        The WebProcess now passes "shouldContentSniff" over to the NetworkProcess with the requests so it can be respected.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::scheduleNetworkRequest): Update to pass through "shouldContentSniff"
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+
+        * NetworkProcess/NetworkRequest.cpp:
+        (WebKit::NetworkRequest::NetworkRequest):
+        (WebKit::NetworkRequest::start):
+        * NetworkProcess/NetworkRequest.h:
+        (WebKit::NetworkRequest::create):
+
+        * NetworkProcess/NetworkResourceLoadScheduler.cpp:
+        (WebKit::NetworkResourceLoadScheduler::scheduleNetworkRequest): Update to pass through "shouldContentSniff"
+        * NetworkProcess/NetworkResourceLoadScheduler.h:
+        * WebProcess/Network/NetworkProcessConnection.h:
+
+        * WebProcess/Network/WebResourceLoadScheduler.cpp:
+        (WebKit::WebResourceLoadScheduler::scheduleLoad): Update to pass through "shouldContentSniff"
+
 2012-11-12  Anders Carlsson  <[email protected]>
 
         More work towards packaging layer changes up into a transaction object

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp	2012-11-12 21:56:33 UTC (rev 134299)
@@ -29,6 +29,7 @@
 #include "ConnectionStack.h"
 #include "NetworkProcess.h"
 #include "NetworkRequest.h"
+#include <WebCore/ResourceLoaderOptions.h>
 #include <WebCore/ResourceRequest.h>
 #include <WebCore/RunLoop.h>
 
@@ -109,9 +110,9 @@
 {
 }
 
-void NetworkConnectionToWebProcess::scheduleNetworkRequest(const ResourceRequest& request, uint32_t resourceLoadPriority, ResourceLoadIdentifier& resourceLoadIdentifier)
+void NetworkConnectionToWebProcess::scheduleNetworkRequest(const ResourceRequest& request, uint32_t resourceLoadPriority, bool shouldContentSniff, ResourceLoadIdentifier& resourceLoadIdentifier)
 {
-    resourceLoadIdentifier = NetworkProcess::shared().networkResourceLoadScheduler().scheduleNetworkRequest(request, static_cast<ResourceLoadPriority>(resourceLoadPriority), this);
+    resourceLoadIdentifier = NetworkProcess::shared().networkResourceLoadScheduler().scheduleNetworkRequest(request, static_cast<ResourceLoadPriority>(resourceLoadPriority), shouldContentSniff ? SniffContent : DoNotSniffContent, this);
 }
 
 void NetworkConnectionToWebProcess::addLoadInProgress(const WebCore::KURL& url, ResourceLoadIdentifier& identifier)

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h	2012-11-12 21:56:33 UTC (rev 134299)
@@ -74,7 +74,7 @@
     void didReceiveNetworkConnectionToWebProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
     void didReceiveSyncNetworkConnectionToWebProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&, OwnPtr<CoreIPC::MessageEncoder>&);
     
-    void scheduleNetworkRequest(const WebCore::ResourceRequest&, uint32_t resourceLoadPriority, ResourceLoadIdentifier&);
+    void scheduleNetworkRequest(const WebCore::ResourceRequest&, uint32_t resourceLoadPriority, bool shouldContentSniff, ResourceLoadIdentifier&);
     void addLoadInProgress(const WebCore::KURL&, ResourceLoadIdentifier&);
     void removeLoadIdentifier(ResourceLoadIdentifier);
     void crossOriginRedirectReceived(ResourceLoadIdentifier, const WebCore::KURL& redirectURL);

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2012-11-12 21:56:33 UTC (rev 134299)
@@ -28,7 +28,7 @@
     // that we synchronously get an identifier for new ResourceLoaders as they are created.
     // There's possible ResourceLoader identifier refactoring that can remove that requirement.
     // We might also have the NetworkProcess divvy up identifiers in blocks to each WebProcess beforehand.
-    ScheduleNetworkRequest(WebCore::ResourceRequest request, uint32_t resourceLoadPriority) -> (uint64_t resourceLoadIdentifier)
+    ScheduleNetworkRequest(WebCore::ResourceRequest request, uint32_t resourceLoadPriority, bool shouldContentSniff) -> (uint64_t resourceLoadIdentifier)
     AddLoadInProgress(WebCore::KURL url) -> (uint64_t resourceLoadIdentifier)
     RemoveLoadIdentifier(uint64_t resourceLoadIdentifier)
 

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkRequest.cpp (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkRequest.cpp	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkRequest.cpp	2012-11-12 21:56:33 UTC (rev 134299)
@@ -45,9 +45,10 @@
 
 namespace WebKit {
 
-NetworkRequest::NetworkRequest(const WebCore::ResourceRequest& request, ResourceLoadIdentifier identifier, NetworkConnectionToWebProcess* connection)
+NetworkRequest::NetworkRequest(const WebCore::ResourceRequest& request, ResourceLoadIdentifier identifier, ContentSniffingPolicy contentSniffingPolicy, NetworkConnectionToWebProcess* connection)
     : m_request(request)
     , m_identifier(identifier)
+    , m_contentSniffingPolicy(contentSniffingPolicy)
     , m_connection(connection)
 {
     ASSERT(isMainThread());
@@ -72,8 +73,8 @@
     // FIXME (NetworkProcess): Create RemoteNetworkingContext with actual settings.
     m_networkingContext = RemoteNetworkingContext::create(false, false);
 
-    // FIXME (NetworkProcess): Pass an actual value for shouldContentSniff (XMLHttpRequest needs that).
-    m_handle = ResourceHandle::create(m_networkingContext.get(), m_request, this, false, false);
+    // FIXME (NetworkProcess): Pass an actual value for defersLoading
+    m_handle = ResourceHandle::create(m_networkingContext.get(), m_request, this, false /* defersLoading */, m_contentSniffingPolicy == SniffContent);
 }
 
 static bool stopRequestsCalled = false;

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkRequest.h (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkRequest.h	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkRequest.h	2012-11-12 21:56:33 UTC (rev 134299)
@@ -30,6 +30,7 @@
 
 #include "NetworkConnectionToWebProcess.h"
 #include <WebCore/ResourceHandleClient.h>
+#include <WebCore/ResourceLoaderOptions.h>
 #include <WebCore/ResourceRequest.h>
 
 namespace WebCore {
@@ -44,9 +45,9 @@
 
 class NetworkRequest : public RefCounted<NetworkRequest>, public NetworkConnectionToWebProcessObserver, public WebCore::ResourceHandleClient {
 public:
-    static RefPtr<NetworkRequest> create(const WebCore::ResourceRequest& request, ResourceLoadIdentifier identifier, NetworkConnectionToWebProcess* connection)
+    static RefPtr<NetworkRequest> create(const WebCore::ResourceRequest& request, ResourceLoadIdentifier identifier, WebCore::ContentSniffingPolicy contentSniffingPolicy, NetworkConnectionToWebProcess* connection)
     {
-        return adoptRef(new NetworkRequest(request, identifier, connection));
+        return adoptRef(new NetworkRequest(request, identifier, contentSniffingPolicy, connection));
     }
     
     ~NetworkRequest();
@@ -98,7 +99,7 @@
 #endif
 
 private:
-    NetworkRequest(const WebCore::ResourceRequest&, ResourceLoadIdentifier, NetworkConnectionToWebProcess*);
+    NetworkRequest(const WebCore::ResourceRequest&, ResourceLoadIdentifier, WebCore::ContentSniffingPolicy, NetworkConnectionToWebProcess*);
 
     void scheduleStopOnMainThread();
     static void performStops(void*);
@@ -110,7 +111,7 @@
 
     RefPtr<RemoteNetworkingContext> m_networkingContext;
     RefPtr<WebCore::ResourceHandle> m_handle;
-
+    WebCore::ContentSniffingPolicy m_contentSniffingPolicy;
     RefPtr<NetworkConnectionToWebProcess> m_connection;
 
     // FIXME (NetworkProcess): Response data lifetime should be managed outside NetworkRequest.

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp	2012-11-12 21:56:33 UTC (rev 134299)
@@ -38,7 +38,7 @@
     servePendingRequests();
 }
 
-ResourceLoadIdentifier NetworkResourceLoadScheduler::scheduleNetworkRequest(const ResourceRequest& request, ResourceLoadPriority priority, NetworkConnectionToWebProcess* connection)
+ResourceLoadIdentifier NetworkResourceLoadScheduler::scheduleNetworkRequest(const ResourceRequest& request, ResourceLoadPriority priority, ContentSniffingPolicy contentSniffingPolicy, NetworkConnectionToWebProcess* connection)
 {    
     ResourceLoadIdentifier identifier = ++s_currentResourceLoadIdentifier;
 
@@ -46,7 +46,7 @@
 
     HostRecord* host = hostForURL(request.url(), CreateIfNotFound);
     bool hadRequests = host->hasRequests();
-    host->schedule(NetworkRequest::create(request, identifier, connection), priority);
+    host->schedule(NetworkRequest::create(request, identifier, contentSniffingPolicy, connection), priority);
     m_identifiers.add(identifier, host);
 
     if (priority > ResourceLoadPriorityLow || !request.url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriorityLow && !hadRequests)) {

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h (134298 => 134299)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h	2012-11-12 21:56:33 UTC (rev 134299)
@@ -26,6 +26,7 @@
 #ifndef NetworkResourceLoadScheduler_h
 #define NetworkResourceLoadScheduler_h
 
+#include <WebCore/ResourceLoaderOptions.h>
 #include <WebCore/ResourceRequest.h>
 #include <WebCore/Timer.h>
 #include <wtf/HashSet.h>
@@ -45,7 +46,7 @@
     NetworkResourceLoadScheduler();
     
     // Adds the request to the queue for its host and create a unique identifier for it.
-    ResourceLoadIdentifier scheduleNetworkRequest(const WebCore::ResourceRequest&, WebCore::ResourceLoadPriority, NetworkConnectionToWebProcess*);
+    ResourceLoadIdentifier scheduleNetworkRequest(const WebCore::ResourceRequest&, WebCore::ResourceLoadPriority, WebCore::ContentSniffingPolicy, NetworkConnectionToWebProcess*);
     
     // Creates a unique identifier for an already-in-progress load.
     ResourceLoadIdentifier addLoadInProgress(const WebCore::KURL&);

Modified: trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h (134298 => 134299)


--- trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h	2012-11-12 21:56:33 UTC (rev 134299)
@@ -63,6 +63,7 @@
     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&);

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp (134298 => 134299)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp	2012-11-12 21:54:35 UTC (rev 134298)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp	2012-11-12 21:56:33 UTC (rev 134299)
@@ -37,6 +37,7 @@
 #include <WebCore/NetscapePlugInStreamLoader.h>
 #include <WebCore/ResourceBuffer.h>
 #include <WebCore/ResourceLoader.h>
+#include <WebCore/Settings.h>
 #include <WebCore/SubresourceLoader.h>
 #include <wtf/text/CString.h>
 
@@ -95,7 +96,7 @@
         request.setURL(dataURL);
     }
 
-    if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::ScheduleNetworkRequest(request, priority), Messages::NetworkConnectionToWebProcess::ScheduleNetworkRequest::Reply(identifier), 0)) {
+    if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::ScheduleNetworkRequest(request, priority, resourceLoader->shouldSniffContent()), Messages::NetworkConnectionToWebProcess::ScheduleNetworkRequest::Reply(identifier), 0)) {
         // FIXME (NetworkProcess): What should we do if this fails?
         ASSERT_NOT_REACHED();
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to