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();
}