Title: [204395] trunk/Source
Revision
204395
Author
[email protected]
Date
2016-08-11 17:34:22 -0700 (Thu, 11 Aug 2016)

Log Message

Don't use a NetworkingContext when creating SocketStreamHandles
https://bugs.webkit.org/show_bug.cgi?id=160732

Patch by Alex Christensen <[email protected]> on 2016-08-11
Reviewed by Brady Eidson.

Source/WebCore:

No change in behavior.  After r204327 a SessionID is all we need to get the NetworkStorageSession,
and we pass the SessionID to the SocketStreamHandle constructor, so use that instead.
SessionIDs can be serialized and sent over IPC.  NetworkingContexts can't.

* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::connect):
* page/SocketProvider.cpp:
(WebCore::SocketProvider::createSocketStreamHandle):
* page/SocketProvider.h:
* platform/network/cf/SocketStreamHandle.h:
(WebCore::SocketStreamHandle::create):
* platform/network/cf/SocketStreamHandleCFNet.cpp:
(WebCore::SocketStreamHandle::SocketStreamHandle):
(WebCore::SocketStreamHandle::getStoredCONNECTProxyCredentials):
* platform/network/curl/SocketStreamHandle.h:
(WebCore::SocketStreamHandle::create):
* platform/network/soup/SocketStreamHandle.h:
* platform/network/soup/SocketStreamHandleSoup.cpp:
(WebCore::SocketStreamHandle::create):

Source/WebKit2:

* WebProcess/Network/WebSocketProvider.cpp:
(WebKit::WebSocketProvider::createSocketStreamHandle):
* WebProcess/Network/WebSocketProvider.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (204394 => 204395)


--- trunk/Source/WebCore/ChangeLog	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/ChangeLog	2016-08-12 00:34:22 UTC (rev 204395)
@@ -1,5 +1,32 @@
 2016-08-11  Alex Christensen  <[email protected]>
 
+        Don't use a NetworkingContext when creating SocketStreamHandles
+        https://bugs.webkit.org/show_bug.cgi?id=160732
+
+        Reviewed by Brady Eidson.
+
+        No change in behavior.  After r204327 a SessionID is all we need to get the NetworkStorageSession,
+        and we pass the SessionID to the SocketStreamHandle constructor, so use that instead.
+        SessionIDs can be serialized and sent over IPC.  NetworkingContexts can't.
+
+        * Modules/websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::connect):
+        * page/SocketProvider.cpp:
+        (WebCore::SocketProvider::createSocketStreamHandle):
+        * page/SocketProvider.h:
+        * platform/network/cf/SocketStreamHandle.h:
+        (WebCore::SocketStreamHandle::create):
+        * platform/network/cf/SocketStreamHandleCFNet.cpp:
+        (WebCore::SocketStreamHandle::SocketStreamHandle):
+        (WebCore::SocketStreamHandle::getStoredCONNECTProxyCredentials):
+        * platform/network/curl/SocketStreamHandle.h:
+        (WebCore::SocketStreamHandle::create):
+        * platform/network/soup/SocketStreamHandle.h:
+        * platform/network/soup/SocketStreamHandleSoup.cpp:
+        (WebCore::SocketStreamHandle::create):
+
+2016-08-11  Alex Christensen  <[email protected]>
+
         Use StringBuilder::appendLiteral when possible don't append result of makeString
         https://bugs.webkit.org/show_bug.cgi?id=160772
 

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp (204394 => 204395)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp	2016-08-12 00:34:22 UTC (rev 204395)
@@ -124,12 +124,10 @@
         InspectorInstrumentation::didCreateWebSocket(m_document, m_identifier, url);
 
     if (Frame* frame = m_document->frame()) {
-        if (NetworkingContext* networkingContext = frame->loader().networkingContext()) {
-            ref();
-            Page* page = frame->page();
-            SessionID sessionID = page ? page->sessionID() : SessionID::defaultSessionID();
-            m_handle = m_socketProvider->createSocketStreamHandle(m_handshake->url(), *this, *networkingContext, sessionID);
-        }
+        ref();
+        Page* page = frame->page();
+        SessionID sessionID = page ? page->sessionID() : SessionID::defaultSessionID();
+        m_handle = m_socketProvider->createSocketStreamHandle(m_handshake->url(), *this, sessionID);
     }
 }
 

Modified: trunk/Source/WebCore/page/SocketProvider.cpp (204394 => 204395)


--- trunk/Source/WebCore/page/SocketProvider.cpp	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/page/SocketProvider.cpp	2016-08-12 00:34:22 UTC (rev 204395)
@@ -32,9 +32,9 @@
 
 namespace WebCore {
     
-Ref<SocketStreamHandle> SocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, NetworkingContext& context, SessionID sessionID)
+Ref<SocketStreamHandle> SocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, SessionID sessionID)
 {
-    return SocketStreamHandle::create(url, client, context, sessionID);
+    return SocketStreamHandle::create(url, client, sessionID);
 }
     
 }

Modified: trunk/Source/WebCore/page/SocketProvider.h (204394 => 204395)


--- trunk/Source/WebCore/page/SocketProvider.h	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/page/SocketProvider.h	2016-08-12 00:34:22 UTC (rev 204395)
@@ -31,7 +31,6 @@
 
 namespace WebCore {
 
-class NetworkingContext;
 class ScriptExecutionContext;
 class SocketStreamHandle;
 class SocketStreamHandleClient;
@@ -41,7 +40,7 @@
 public:
 #if ENABLE(WEB_SOCKETS)
     static Ref<SocketProvider> create() { return adoptRef(*new SocketProvider); }
-    virtual Ref<SocketStreamHandle> createSocketStreamHandle(const URL&, SocketStreamHandleClient&, NetworkingContext&, SessionID);
+    virtual Ref<SocketStreamHandle> createSocketStreamHandle(const URL&, SocketStreamHandleClient&, SessionID);
 #endif
     virtual ~SocketProvider() { };
 };

Modified: trunk/Source/WebCore/platform/network/cf/SocketStreamHandle.h (204394 => 204395)


--- trunk/Source/WebCore/platform/network/cf/SocketStreamHandle.h	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/platform/network/cf/SocketStreamHandle.h	2016-08-12 00:34:22 UTC (rev 204395)
@@ -40,15 +40,13 @@
 
 namespace WebCore {
 
-class AuthenticationChallenge;
 class Credential;
-class NetworkingContext;
 class ProtectionSpace;
 class SocketStreamHandleClient;
 
 class SocketStreamHandle : public ThreadSafeRefCounted<SocketStreamHandle>, public SocketStreamHandleBase {
 public:
-    static Ref<SocketStreamHandle> create(const URL& url, SocketStreamHandleClient& client, NetworkingContext& networkingContext, SessionID sessionID) { return adoptRef(*new SocketStreamHandle(url, client, networkingContext, sessionID)); }
+    static Ref<SocketStreamHandle> create(const URL& url, SocketStreamHandleClient& client, SessionID sessionID) { return adoptRef(*new SocketStreamHandle(url, client, sessionID)); }
 
     virtual ~SocketStreamHandle();
 
@@ -56,7 +54,7 @@
     virtual int platformSend(const char* data, int length);
     virtual void platformClose();
 
-    WEBCORE_EXPORT SocketStreamHandle(const URL&, SocketStreamHandleClient&, NetworkingContext&, SessionID);
+    WEBCORE_EXPORT SocketStreamHandle(const URL&, SocketStreamHandleClient&, SessionID);
     void createStreams();
     void scheduleStreams();
     void chooseProxy();
@@ -98,8 +96,7 @@
     RetainPtr<CFWriteStreamRef> m_writeStream;
 
     RetainPtr<CFURLRef> m_httpsURL; // ws(s): replaced with https:
-
-    Ref<NetworkingContext> m_networkingContext;
+    SessionID m_sessionID;
 };
 
 }  // namespace WebCore

Modified: trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp (204394 => 204395)


--- trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp	2016-08-12 00:34:22 UTC (rev 204395)
@@ -36,7 +36,6 @@
 #include "CredentialStorage.h"
 #include "Logging.h"
 #include "NetworkStorageSession.h"
-#include "NetworkingContext.h"
 #include "ProtectionSpace.h"
 #include "Settings.h"
 #include "SocketStreamError.h"
@@ -68,12 +67,12 @@
 
 namespace WebCore {
 
-SocketStreamHandle::SocketStreamHandle(const URL& url, SocketStreamHandleClient& client, NetworkingContext& networkingContext, SessionID sessionID)
+SocketStreamHandle::SocketStreamHandle(const URL& url, SocketStreamHandleClient& client, SessionID sessionID)
     : SocketStreamHandleBase(url, client)
     , m_connectingSubstate(New)
     , m_connectionType(Unknown)
     , m_sentStoredCredentials(false)
-    , m_networkingContext(networkingContext)
+    , m_sessionID(sessionID)
 {
     LOG(Network, "SocketStreamHandle %p new client %p", this, &m_client);
 
@@ -356,9 +355,12 @@
     // FIXME (<rdar://problem/10416495>): Proxy credentials should be retrieved from AuthBrokerAgent.
 
     // Try system credential storage first, matching HTTP behavior (CFNetwork only asks the client for password if it couldn't find it in Keychain).
-    Credential storedCredential = m_networkingContext->storageSession().credentialStorage().getFromPersistentStorage(protectionSpace);
-    if (storedCredential.isEmpty())
-        storedCredential = m_networkingContext->storageSession().credentialStorage().get(protectionSpace);
+    Credential storedCredential;
+    if (auto* storageSession = NetworkStorageSession::storageSession(m_sessionID)) {
+        storedCredential = storageSession->credentialStorage().getFromPersistentStorage(protectionSpace);
+        if (storedCredential.isEmpty())
+            storedCredential = storageSession->credentialStorage().get(protectionSpace);
+    }
 
     if (storedCredential.isEmpty())
         return false;

Modified: trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h (204394 => 204395)


--- trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h	2016-08-12 00:34:22 UTC (rev 204395)
@@ -46,12 +46,11 @@
 
 namespace WebCore {
 
-class NetworkingContext;
 class SocketStreamHandleClient;
 
 class SocketStreamHandle : public ThreadSafeRefCounted<SocketStreamHandle>, public SocketStreamHandleBase {
 public:
-    static Ref<SocketStreamHandle> create(const URL& url, SocketStreamHandleClient& client, NetworkingContext&, SessionID) { return adoptRef(*new SocketStreamHandle(url, client)); }
+    static Ref<SocketStreamHandle> create(const URL& url, SocketStreamHandleClient& client, SessionID) { return adoptRef(*new SocketStreamHandle(url, client)); }
 
     virtual ~SocketStreamHandle();
 

Modified: trunk/Source/WebCore/platform/network/soup/SocketStreamHandle.h (204394 => 204395)


--- trunk/Source/WebCore/platform/network/soup/SocketStreamHandle.h	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/platform/network/soup/SocketStreamHandle.h	2016-08-12 00:34:22 UTC (rev 204395)
@@ -30,8 +30,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef SocketStreamHandle_h
-#define SocketStreamHandle_h
+#pragma once
 
 #include "SocketStreamHandleBase.h"
 
@@ -43,13 +42,12 @@
 
 namespace WebCore {
 
-class NetworkingContext;
 class SocketStreamError;
 class SocketStreamHandleClient;
 
 class SocketStreamHandle final : public RefCounted<SocketStreamHandle>, public SocketStreamHandleBase {
 public:
-    static Ref<SocketStreamHandle> create(const URL&, SocketStreamHandleClient&, NetworkingContext&, SessionID);
+    static Ref<SocketStreamHandle> create(const URL&, SocketStreamHandleClient&, SessionID);
     static Ref<SocketStreamHandle> create(GSocketConnection*, SocketStreamHandleClient&);
 
     virtual ~SocketStreamHandle();
@@ -83,5 +81,3 @@
 }  // namespace WebCore
 
 #endif
-
-#endif  // SocketStreamHandle_h

Modified: trunk/Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp (204394 => 204395)


--- trunk/Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp	2016-08-12 00:34:22 UTC (rev 204395)
@@ -48,7 +48,7 @@
 
 namespace WebCore {
 
-Ref<SocketStreamHandle> SocketStreamHandle::create(const URL& url, SocketStreamHandleClient& client, NetworkingContext&, SessionID)
+Ref<SocketStreamHandle> SocketStreamHandle::create(const URL& url, SocketStreamHandleClient& client, SessionID)
 {
     Ref<SocketStreamHandle> socket = adoptRef(*new SocketStreamHandle(url, client));
 

Modified: trunk/Source/WebKit2/ChangeLog (204394 => 204395)


--- trunk/Source/WebKit2/ChangeLog	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebKit2/ChangeLog	2016-08-12 00:34:22 UTC (rev 204395)
@@ -1,5 +1,16 @@
 2016-08-11  Alex Christensen  <[email protected]>
 
+        Don't use a NetworkingContext when creating SocketStreamHandles
+        https://bugs.webkit.org/show_bug.cgi?id=160732
+
+        Reviewed by Brady Eidson.
+
+        * WebProcess/Network/WebSocketProvider.cpp:
+        (WebKit::WebSocketProvider::createSocketStreamHandle):
+        * WebProcess/Network/WebSocketProvider.h:
+
+2016-08-11  Alex Christensen  <[email protected]>
+
         Use StringBuilder::appendLiteral when possible don't append result of makeString
         https://bugs.webkit.org/show_bug.cgi?id=160772
 

Modified: trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp (204394 => 204395)


--- trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp	2016-08-12 00:34:22 UTC (rev 204395)
@@ -49,10 +49,10 @@
 
 namespace WebKit {
 
-Ref<SocketStreamHandle> WebSocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, NetworkingContext& context, SessionID sessionID)
+Ref<SocketStreamHandle> WebSocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, SessionID sessionID)
 {
     // FIXME: This should return a proxy so we can do the actual network interactions in the NetworkProcess.
-    return SocketStreamHandle::create(url, client, context, sessionID);
+    return SocketStreamHandle::create(url, client, sessionID);
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h (204394 => 204395)


--- trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h	2016-08-12 00:33:47 UTC (rev 204394)
+++ trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h	2016-08-12 00:34:22 UTC (rev 204395)
@@ -33,7 +33,7 @@
 public:
     static Ref<WebSocketProvider> create() { return adoptRef(*new WebSocketProvider); }
 #if ENABLE(WEB_SOCKETS)
-    Ref<WebCore::SocketStreamHandle> createSocketStreamHandle(const WebCore::URL&, WebCore::SocketStreamHandleClient&, WebCore::NetworkingContext&, WebCore::SessionID) final;
+    Ref<WebCore::SocketStreamHandle> createSocketStreamHandle(const WebCore::URL&, WebCore::SocketStreamHandleClient&, WebCore::SessionID) final;
 #endif
     virtual ~WebSocketProvider() { }
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to