diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
commit | cfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch) | |
tree | 24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp | |
parent | 69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff) | |
download | qtwebkit-cfd86b747d32ac22246a1aa908eaa720c63a88c1.tar.gz |
Imported WebKit commit 20271caf2e2c016d5cef40184cddeefeac4f1876 (http://svn.webkit.org/repository/webkit/trunk@133733)
New snapshot that contains all previous fixes as well as build fix for latest QtMultimedia API changes.
Diffstat (limited to 'Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp')
-rw-r--r-- | Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp | 73 |
1 files changed, 66 insertions, 7 deletions
diff --git a/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp index 1fdce180b..f9bd5af55 100644 --- a/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp @@ -28,6 +28,7 @@ #include "ConnectionStack.h" #include "NetworkProcess.h" +#include <WebCore/ResourceRequest.h> #include <WebCore/RunLoop.h> #if ENABLE(NETWORK_PROCESS) @@ -42,6 +43,7 @@ PassRefPtr<NetworkConnectionToWebProcess> NetworkConnectionToWebProcess::create( } NetworkConnectionToWebProcess::NetworkConnectionToWebProcess(CoreIPC::Connection::Identifier connectionIdentifier) + : m_serialLoadingEnabled(false) { m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main()); m_connection->setOnlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage(true); @@ -51,22 +53,36 @@ NetworkConnectionToWebProcess::NetworkConnectionToWebProcess(CoreIPC::Connection NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess() { ASSERT(!m_connection); + ASSERT(m_observers.isEmpty()); } -void NetworkConnectionToWebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder) +void NetworkConnectionToWebProcess::registerObserver(NetworkConnectionToWebProcessObserver* observer) { - ConnectionStack::CurrentConnectionPusher currentConnection(ConnectionStack::shared(), connection); + ASSERT(!m_observers.contains(observer)); + m_observers.add(observer); +} +void NetworkConnectionToWebProcess::unregisterObserver(NetworkConnectionToWebProcessObserver* observer) +{ + ASSERT(m_observers.contains(observer)); + m_observers.remove(observer); +} + +void NetworkConnectionToWebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder) +{ if (messageID.is<CoreIPC::MessageClassNetworkConnectionToWebProcess>()) { didReceiveNetworkConnectionToWebProcessMessage(connection, messageID, decoder); return; } - ASSERT_NOT_REACHED(); } -void NetworkConnectionToWebProcess::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& arguments, OwnPtr<CoreIPC::MessageEncoder>& reply) +void NetworkConnectionToWebProcess::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& reply) { + if (messageID.is<CoreIPC::MessageClassNetworkConnectionToWebProcess>()) { + didReceiveSyncNetworkConnectionToWebProcessMessage(connection, messageID, decoder, reply); + return; + } ASSERT_NOT_REACHED(); } @@ -77,16 +93,59 @@ void NetworkConnectionToWebProcess::didClose(CoreIPC::Connection*) NetworkProcess::shared().removeNetworkConnectionToWebProcess(this); + Vector<NetworkConnectionToWebProcessObserver*> observers; + copyToVector(m_observers, observers); + for (size_t i = 0; i < observers.size(); ++i) + observers[i]->connectionToWebProcessDidClose(this); + + // FIXME (NetworkProcess): We might consider actively clearing out all requests for this connection. + // But that might not be necessary as the observer mechanism used above is much more direct. + m_connection = 0; } -void NetworkConnectionToWebProcess::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID) +void NetworkConnectionToWebProcess::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference, CoreIPC::StringReference) +{ +} + +void NetworkConnectionToWebProcess::scheduleNetworkRequest(const ResourceRequest& request, uint32_t resourceLoadPriority, ResourceLoadIdentifier& resourceLoadIdentifier) +{ + resourceLoadIdentifier = NetworkProcess::shared().networkResourceLoadScheduler().scheduleNetworkRequest(request, static_cast<ResourceLoadPriority>(resourceLoadPriority), this); +} + +void NetworkConnectionToWebProcess::addLoadInProgress(const WebCore::KURL& url, ResourceLoadIdentifier& identifier) +{ + identifier = NetworkProcess::shared().networkResourceLoadScheduler().addLoadInProgress(url); +} + +void NetworkConnectionToWebProcess::removeLoadIdentifier(ResourceLoadIdentifier identifier) +{ + NetworkProcess::shared().networkResourceLoadScheduler().removeLoadIdentifier(identifier); +} + +void NetworkConnectionToWebProcess::crossOriginRedirectReceived(ResourceLoadIdentifier identifier, const KURL& redirectURL) +{ + NetworkProcess::shared().networkResourceLoadScheduler().crossOriginRedirectReceived(identifier, redirectURL); +} + +void NetworkConnectionToWebProcess::servePendingRequests(uint32_t resourceLoadPriority) +{ + NetworkProcess::shared().networkResourceLoadScheduler().servePendingRequests(static_cast<ResourceLoadPriority>(resourceLoadPriority)); +} + +void NetworkConnectionToWebProcess::suspendPendingRequests() +{ + NetworkProcess::shared().networkResourceLoadScheduler().suspendPendingRequests(); +} + +void NetworkConnectionToWebProcess::resumePendingRequests() { + NetworkProcess::shared().networkResourceLoadScheduler().resumePendingRequests(); } -void NetworkConnectionToWebProcess::didReceiveNetworkConnectionToWebProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) +void NetworkConnectionToWebProcess::setSerialLoadingEnabled(bool enabled) { - // Empty for now - There are no messages to handle. + m_serialLoadingEnabled = enabled; } } // namespace WebKit |