Title: [121020] trunk/Source
Revision
121020
Author
[email protected]
Date
2012-06-22 06:24:31 -0700 (Fri, 22 Jun 2012)

Log Message

[Qt] Fix the remote inspector loading problems on Mac
https://bugs.webkit.org/show_bug.cgi?id=89747

Patch by Jocelyn Turcotte <[email protected]> on 2012-06-22
Reviewed by Simon Hausmann.

Source/WebCore:

Make sure that the state of a SocketStreamHandle is set properly
when created from an existing QTcpSocket.

This fixes the inspectorserver Qt api auto test on Mac.

* platform/network/qt/SocketStreamHandleQt.cpp:
(WebCore::SocketStreamHandle::SocketStreamHandle):

Source/WebKit2:

Reverse the creation order of the inter-dependent WebSocketServerConnection
and SocketStreamHandle to make sure that the later has a client properly
set on construction.

This is to work around the assert on m_state in SocketStreamHandle::setClient.

* UIProcess/InspectorServer/WebSocketServer.cpp:
(WebKit::WebSocketServer::didAcceptConnection):
* UIProcess/InspectorServer/WebSocketServer.h:
(WebKit::WebSocketServer::client):
(WebSocketServer):
* UIProcess/InspectorServer/WebSocketServerConnection.cpp:
(WebKit::WebSocketServerConnection::WebSocketServerConnection):
(WebKit::WebSocketServerConnection::setSocketHandle):
(WebKit):
* UIProcess/InspectorServer/WebSocketServerConnection.h:
(WebSocketServerConnection):
* UIProcess/InspectorServer/qt/WebSocketServerQt.cpp:
(WebKit::QtTcpServerHandler::handleNewConnection):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (121019 => 121020)


--- trunk/Source/WebCore/ChangeLog	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebCore/ChangeLog	2012-06-22 13:24:31 UTC (rev 121020)
@@ -1,3 +1,18 @@
+2012-06-22  Jocelyn Turcotte  <[email protected]>
+
+        [Qt] Fix the remote inspector loading problems on Mac
+        https://bugs.webkit.org/show_bug.cgi?id=89747
+
+        Reviewed by Simon Hausmann.
+
+        Make sure that the state of a SocketStreamHandle is set properly
+        when created from an existing QTcpSocket.
+
+        This fixes the inspectorserver Qt api auto test on Mac.
+
+        * platform/network/qt/SocketStreamHandleQt.cpp:
+        (WebCore::SocketStreamHandle::SocketStreamHandle):
+
 2012-06-22  Yoshifumi Inoue  <[email protected]>
 
         REGRESSION(r117738):[Forms] validationMessage IDL attribute should not have range overflow message if value isn't range overflow

Modified: trunk/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp (121019 => 121020)


--- trunk/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp	2012-06-22 13:24:31 UTC (rev 121020)
@@ -191,6 +191,8 @@
 {
     LOG(Network, "SocketStreamHandle %p new client %p", this, m_client);
     m_p = new SocketStreamHandlePrivate(this, socket);
+    if (socket->isOpen())
+        m_state = Open;
 }
 
 SocketStreamHandle::~SocketStreamHandle()

Modified: trunk/Source/WebKit2/ChangeLog (121019 => 121020)


--- trunk/Source/WebKit2/ChangeLog	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebKit2/ChangeLog	2012-06-22 13:24:31 UTC (rev 121020)
@@ -1,3 +1,30 @@
+2012-06-22  Jocelyn Turcotte  <[email protected]>
+
+        [Qt] Fix the remote inspector loading problems on Mac
+        https://bugs.webkit.org/show_bug.cgi?id=89747
+
+        Reviewed by Simon Hausmann.
+
+        Reverse the creation order of the inter-dependent WebSocketServerConnection
+        and SocketStreamHandle to make sure that the later has a client properly
+        set on construction.
+
+        This is to work around the assert on m_state in SocketStreamHandle::setClient.
+
+        * UIProcess/InspectorServer/WebSocketServer.cpp:
+        (WebKit::WebSocketServer::didAcceptConnection):
+        * UIProcess/InspectorServer/WebSocketServer.h:
+        (WebKit::WebSocketServer::client):
+        (WebSocketServer):
+        * UIProcess/InspectorServer/WebSocketServerConnection.cpp:
+        (WebKit::WebSocketServerConnection::WebSocketServerConnection):
+        (WebKit::WebSocketServerConnection::setSocketHandle):
+        (WebKit):
+        * UIProcess/InspectorServer/WebSocketServerConnection.h:
+        (WebSocketServerConnection):
+        * UIProcess/InspectorServer/qt/WebSocketServerQt.cpp:
+        (WebKit::QtTcpServerHandler::handleNewConnection):
+
 2012-06-22  Sergio Villar Senin  <[email protected]>
 
         [WK2] FindController::hideFindUI should unmark highlighted text matches

Modified: trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp (121019 => 121020)


--- trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp	2012-06-22 13:24:31 UTC (rev 121020)
@@ -82,9 +82,9 @@
     m_bindAddress = String();
 }
 
-void WebSocketServer::didAcceptConnection(PassRefPtr<SocketStreamHandle> socketHandle)
+void WebSocketServer::didAcceptConnection(PassOwnPtr<WebSocketServerConnection> connection)
 {
-    m_connections.append(adoptPtr(new WebSocketServerConnection(socketHandle, m_client, this)));
+    m_connections.append(connection);
 }
 
 void WebSocketServer::didCloseWebSocketServerConnection(WebSocketServerConnection* connection)

Modified: trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h (121019 => 121020)


--- trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h	2012-06-22 13:24:31 UTC (rev 121020)
@@ -61,7 +61,8 @@
     ServerState serverState() const { return m_state; };
     void close();
 
-    void didAcceptConnection(PassRefPtr<WebCore::SocketStreamHandle>);
+    WebSocketServerClient* client() const { return m_client; }
+    void didAcceptConnection(PassOwnPtr<WebSocketServerConnection>);
 
 private:
     void didCloseWebSocketServerConnection(WebSocketServerConnection*);

Modified: trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp (121019 => 121020)


--- trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp	2012-06-22 13:24:31 UTC (rev 121020)
@@ -45,14 +45,12 @@
 
 namespace WebKit {
 
-WebSocketServerConnection::WebSocketServerConnection(PassRefPtr<SocketStreamHandle> socket, WebSocketServerClient* client, WebSocketServer* server)
+WebSocketServerConnection::WebSocketServerConnection(WebSocketServerClient* client, WebSocketServer* server)
     : m_identifier(0)
     , m_mode(HTTP)
-    , m_socket(socket)
     , m_server(server)
     , m_client(client)
 {
-    m_socket->setClient(this);
 }
 
 WebSocketServerConnection::~WebSocketServerConnection()
@@ -60,6 +58,12 @@
     shutdownNow();
 }
 
+void WebSocketServerConnection::setSocketHandle(PassRefPtr<WebCore::SocketStreamHandle> socket)
+{
+    ASSERT(!m_socket);
+    m_socket = socket;
+}
+
 void WebSocketServerConnection::shutdownNow()
 {
     if (!m_socket)

Modified: trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h (121019 => 121020)


--- trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h	2012-06-22 13:24:31 UTC (rev 121020)
@@ -49,11 +49,12 @@
 class WebSocketServerConnection : public WebCore::SocketStreamHandleClient {
 public:
     enum WebSocketServerMode { HTTP, WebSocket };
-    WebSocketServerConnection(PassRefPtr<WebCore::SocketStreamHandle>, WebSocketServerClient*, WebSocketServer*);
+    WebSocketServerConnection(WebSocketServerClient*, WebSocketServer*);
     virtual ~WebSocketServerConnection();
 
     unsigned identifier() const { return m_identifier; }
     void setIdentifier(unsigned id) { m_identifier = id; }
+    void setSocketHandle(PassRefPtr<WebCore::SocketStreamHandle>);
 
     // Sending data over the connection.
     void sendWebSocketMessage(const String& message);

Modified: trunk/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp (121019 => 121020)


--- trunk/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp	2012-06-22 12:54:04 UTC (rev 121019)
+++ trunk/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp	2012-06-22 13:24:31 UTC (rev 121020)
@@ -23,6 +23,7 @@
 #include "WebSocketServerQt.h"
 
 #include "WebSocketServer.h"
+#include "WebSocketServerConnection.h"
 #include <WebCore/SocketStreamHandle.h>
 #include <wtf/PassOwnPtr.h>
 
@@ -55,7 +56,9 @@
 {
     QTcpSocket* socket = m_serverSocket.nextPendingConnection();
     ASSERT(socket);
-    m_webSocketServer->didAcceptConnection(SocketStreamHandle::create(socket, 0));
+    OwnPtr<WebSocketServerConnection> conection = adoptPtr(new WebSocketServerConnection(m_webSocketServer->client(), m_webSocketServer));
+    conection->setSocketHandle(SocketStreamHandle::create(socket, conection.get()));
+    m_webSocketServer->didAcceptConnection(conection.release());
 }
 
 bool QtTcpServerHandler::listen(const String& bindAddress, unsigned short port)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to