https://bugs.webkit.org/show_bug.cgi?id=89747
Patch by Jocelyn Turcotte <turcotte.j@gmail.com> 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
+2012-06-22 Jocelyn Turcotte <turcotte.j@gmail.com>
+
+ [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 <yosin@chromium.org>
REGRESSION(r117738):[Forms] validationMessage IDL attribute should not have range overflow message if value isn't range overflow
{
LOG(Network, "SocketStreamHandle %p new client %p", this, m_client);
m_p = new SocketStreamHandlePrivate(this, socket);
+ if (socket->isOpen())
+ m_state = Open;
}
SocketStreamHandle::~SocketStreamHandle()
+2012-06-22 Jocelyn Turcotte <turcotte.j@gmail.com>
+
+ [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 <svillar@igalia.com>
[WK2] FindController::hideFindUI should unmark highlighted text matches
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)
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*);
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()
shutdownNow();
}
+void WebSocketServerConnection::setSocketHandle(PassRefPtr<WebCore::SocketStreamHandle> socket)
+{
+ ASSERT(!m_socket);
+ m_socket = socket;
+}
+
void WebSocketServerConnection::shutdownNow()
{
if (!m_socket)
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);
#include "WebSocketServerQt.h"
#include "WebSocketServer.h"
+#include "WebSocketServerConnection.h"
#include <WebCore/SocketStreamHandle.h>
#include <wtf/PassOwnPtr.h>
{
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)