From becda35df4a15cb3933a8b95be80ebfc6cf02635 Mon Sep 17 00:00:00 2001 From: "commit-queue@webkit.org" Date: Fri, 22 Jun 2012 13:24:31 +0000 Subject: [PATCH] [Qt] Fix the remote inspector loading problems on Mac https://bugs.webkit.org/show_bug.cgi?id=89747 Patch by Jocelyn Turcotte 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): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121020 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 15 ++++++++++++ .../platform/network/qt/SocketStreamHandleQt.cpp | 2 ++ Source/WebKit2/ChangeLog | 27 ++++++++++++++++++++++ .../UIProcess/InspectorServer/WebSocketServer.cpp | 4 ++-- .../UIProcess/InspectorServer/WebSocketServer.h | 3 ++- .../InspectorServer/WebSocketServerConnection.cpp | 10 +++++--- .../InspectorServer/WebSocketServerConnection.h | 3 ++- .../InspectorServer/qt/WebSocketServerQt.cpp | 5 +++- 8 files changed, 61 insertions(+), 8 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index affad85..2b25841 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,18 @@ +2012-06-22 Jocelyn Turcotte + + [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 REGRESSION(r117738):[Forms] validationMessage IDL attribute should not have range overflow message if value isn't range overflow diff --git a/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp b/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp index 28101a6..271edd8 100644 --- a/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp +++ b/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp @@ -191,6 +191,8 @@ SocketStreamHandle::SocketStreamHandle(QTcpSocket* socket, SocketStreamHandleCli { LOG(Network, "SocketStreamHandle %p new client %p", this, m_client); m_p = new SocketStreamHandlePrivate(this, socket); + if (socket->isOpen()) + m_state = Open; } SocketStreamHandle::~SocketStreamHandle() diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog index 99c7c86..f218e11 100644 --- a/Source/WebKit2/ChangeLog +++ b/Source/WebKit2/ChangeLog @@ -1,3 +1,30 @@ +2012-06-22 Jocelyn Turcotte + + [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 [WK2] FindController::hideFindUI should unmark highlighted text matches diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp index 7a0beb5..cf4ee13 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp @@ -82,9 +82,9 @@ void WebSocketServer::close() m_bindAddress = String(); } -void WebSocketServer::didAcceptConnection(PassRefPtr socketHandle) +void WebSocketServer::didAcceptConnection(PassOwnPtr connection) { - m_connections.append(adoptPtr(new WebSocketServerConnection(socketHandle, m_client, this))); + m_connections.append(connection); } void WebSocketServer::didCloseWebSocketServerConnection(WebSocketServerConnection* connection) diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h index e5bd2fd..56aa7fb 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h @@ -61,7 +61,8 @@ public: ServerState serverState() const { return m_state; }; void close(); - void didAcceptConnection(PassRefPtr); + WebSocketServerClient* client() const { return m_client; } + void didAcceptConnection(PassOwnPtr); private: void didCloseWebSocketServerConnection(WebSocketServerConnection*); diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp index 9ffbbbe..57206eb 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp @@ -45,14 +45,12 @@ using namespace WebCore; namespace WebKit { -WebSocketServerConnection::WebSocketServerConnection(PassRefPtr 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 @@ WebSocketServerConnection::~WebSocketServerConnection() shutdownNow(); } +void WebSocketServerConnection::setSocketHandle(PassRefPtr socket) +{ + ASSERT(!m_socket); + m_socket = socket; +} + void WebSocketServerConnection::shutdownNow() { if (!m_socket) diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h index 6cc7701..64da82c 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h @@ -49,11 +49,12 @@ class WebSocketServerClient; class WebSocketServerConnection : public WebCore::SocketStreamHandleClient { public: enum WebSocketServerMode { HTTP, WebSocket }; - WebSocketServerConnection(PassRefPtr, WebSocketServerClient*, WebSocketServer*); + WebSocketServerConnection(WebSocketServerClient*, WebSocketServer*); virtual ~WebSocketServerConnection(); unsigned identifier() const { return m_identifier; } void setIdentifier(unsigned id) { m_identifier = id; } + void setSocketHandle(PassRefPtr); // Sending data over the connection. void sendWebSocketMessage(const String& message); diff --git a/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp b/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp index 6a9c5b3..4503104 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/qt/WebSocketServerQt.cpp @@ -23,6 +23,7 @@ #include "WebSocketServerQt.h" #include "WebSocketServer.h" +#include "WebSocketServerConnection.h" #include #include @@ -55,7 +56,9 @@ void QtTcpServerHandler::handleNewConnection() { QTcpSocket* socket = m_serverSocket.nextPendingConnection(); ASSERT(socket); - m_webSocketServer->didAcceptConnection(SocketStreamHandle::create(socket, 0)); + OwnPtr 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) -- 2.7.4