diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/InspectorServer')
10 files changed, 65 insertions, 76 deletions
diff --git a/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.cpp b/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.cpp index c026d7744..a88f4e027 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.cpp @@ -27,6 +27,7 @@ #include "HTTPRequest.h" #include <wtf/text/CString.h> +#include <wtf/text/StringView.h> using namespace WebCore; @@ -82,7 +83,7 @@ size_t HTTPRequest::parseHeaders(const char* data, size_t length, String& failur { const char* p = data; const char* end = data + length; - AtomicString name; + StringView name; String value; for (; p < data + length; p++) { size_t consumedLength = parseHTTPHeader(p, end - p, failureReason, name, value); @@ -91,7 +92,7 @@ size_t HTTPRequest::parseHeaders(const char* data, size_t length, String& failur p += consumedLength; if (name.isEmpty()) break; - m_headerFields.add(name, value); + m_headerFields.add(name.toString(), value); } // If we got here and "name" is empty, it means the headers are valid and ended with a diff --git a/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.h b/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.h index ecda14e99..ffb317ec8 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.h +++ b/Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.h @@ -43,8 +43,8 @@ namespace WebKit { class HTTPRequest : public RefCounted<HTTPRequest> { public: - static PassRefPtr<HTTPRequest> create() { return adoptRef(new HTTPRequest()); } - static PassRefPtr<HTTPRequest> create(const String& requestMethod, const WebCore::URL& url, WebCore::HTTPVersion version) { return adoptRef(new HTTPRequest(requestMethod, url, version)); } + static Ref<HTTPRequest> create() { return adoptRef(*new HTTPRequest()); } + static Ref<HTTPRequest> create(const String& requestMethod, const WebCore::URL& url, WebCore::HTTPVersion version) { return adoptRef(*new HTTPRequest(requestMethod, url, version)); } static PassRefPtr<HTTPRequest> parseHTTPRequestFromBuffer(const char* data, size_t length, String& failureReason); virtual ~HTTPRequest(); diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp index 8f689ac67..663877485 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp @@ -30,6 +30,7 @@ #include "WebInspectorServer.h" +#include "HTTPHeaderNames.h" #include "HTTPRequest.h" #include "WebInspectorProxy.h" #include "WebSocketServerConnection.h" @@ -50,7 +51,7 @@ static unsigned pageIdFromRequestPath(const String& path) return number; } -WebInspectorServer& WebInspectorServer::shared() +WebInspectorServer& WebInspectorServer::singleton() { static WebInspectorServer& server = *new WebInspectorServer; return server; @@ -124,10 +125,10 @@ void WebInspectorServer::didReceiveUnrecognizedHTTPRequest(WebSocketServerConnec bool found = platformResourceForPath(path, body, contentType); HTTPHeaderMap headerFields; - headerFields.set("Connection", "close"); - headerFields.set("Content-Length", String::number(body.size())); + headerFields.set(HTTPHeaderName::Connection, "close"); + headerFields.set(HTTPHeaderName::ContentLength, String::number(body.size())); if (found) - headerFields.set("Content-Type", contentType); + headerFields.set(HTTPHeaderName::ContentType, contentType); // Send when ready and close immediately afterwards. connection->sendHTTPResponseHeader(found ? 200 : 404, found ? "OK" : "Not Found", headerFields); @@ -140,7 +141,7 @@ bool WebInspectorServer::didReceiveWebSocketUpgradeHTTPRequest(WebSocketServerCo String path = request->url(); // NOTE: Keep this in sync with WebCore/inspector/front-end/inspector.js. - DEFINE_STATIC_LOCAL(const String, inspectorWebSocketConnectionPathPrefix, (ASCIILiteral("/devtools/page/"))); + DEPRECATED_DEFINE_STATIC_LOCAL(const String, inspectorWebSocketConnectionPathPrefix, (ASCIILiteral("/devtools/page/"))); // Unknown path requested. if (!path.startsWith(inspectorWebSocketConnectionPathPrefix)) diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.h b/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.h index 19675b2b9..939a7e21b 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.h +++ b/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.h @@ -24,8 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef WebInspectorServer_h -#define WebInspectorServer_h +#pragma once #if ENABLE(INSPECTOR_SERVER) @@ -38,10 +37,10 @@ namespace WebKit { class WebInspectorProxy; -class WebInspectorServer : public WebSocketServer, public WebSocketServerClient { +class WebInspectorServer final : public WebSocketServer, public WebSocketServerClient { public: typedef HashMap<unsigned, WebInspectorProxy*> ClientMap; - static WebInspectorServer& shared(); + static WebInspectorServer& singleton(); // Page registry to manage known pages. int registerPage(WebInspectorProxy* client); @@ -54,14 +53,14 @@ private: ~WebInspectorServer(); // WebSocketServerClient implementation. Events coming from remote connections. - virtual void didReceiveUnrecognizedHTTPRequest(WebSocketServerConnection*, PassRefPtr<HTTPRequest>); - virtual bool didReceiveWebSocketUpgradeHTTPRequest(WebSocketServerConnection*, PassRefPtr<HTTPRequest>); - virtual void didEstablishWebSocketConnection(WebSocketServerConnection*, PassRefPtr<HTTPRequest>); - virtual void didReceiveWebSocketMessage(WebSocketServerConnection*, const String& message); - virtual void didCloseWebSocketConnection(WebSocketServerConnection*); + void didReceiveUnrecognizedHTTPRequest(WebSocketServerConnection*, PassRefPtr<HTTPRequest>) final; + bool didReceiveWebSocketUpgradeHTTPRequest(WebSocketServerConnection*, PassRefPtr<HTTPRequest>) final; + void didEstablishWebSocketConnection(WebSocketServerConnection*, PassRefPtr<HTTPRequest>) final; + void didReceiveWebSocketMessage(WebSocketServerConnection*, const String& message) final; + void didCloseWebSocketConnection(WebSocketServerConnection*) final; bool platformResourceForPath(const String& path, Vector<char>& data, String& contentType); -#if PLATFORM(GTK) || PLATFORM(EFL) +#if PLATFORM(GTK) void buildPageList(Vector<char>& data, String& contentType); #endif @@ -75,5 +74,3 @@ private: } #endif // ENABLE(INSPECTOR_SERVER) - -#endif // WebInspectorServer_h diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp index a78835d38..c534b4fcb 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp @@ -32,7 +32,6 @@ #include "WebSocketServerConnection.h" #include <WebCore/SocketStreamHandle.h> -#include <wtf/PassOwnPtr.h> using namespace WebCore; @@ -78,20 +77,20 @@ void WebSocketServer::close() m_bindAddress = String(); } -void WebSocketServer::didAcceptConnection(PassOwnPtr<WebSocketServerConnection> connection) +void WebSocketServer::didAcceptConnection(std::unique_ptr<WebSocketServerConnection> connection) { - m_connections.append(connection); + m_connections.append(WTFMove(connection)); } void WebSocketServer::didCloseWebSocketServerConnection(WebSocketServerConnection* connection) { - Deque<OwnPtr<WebSocketServerConnection> >::iterator end = m_connections.end(); - for (Deque<OwnPtr<WebSocketServerConnection> >::iterator it = m_connections.begin(); it != end; ++it) { + for (auto it = m_connections.begin(), end = m_connections.end(); it != end; ++it) { if (it->get() == connection) { m_connections.remove(it); return; } } + ASSERT_NOT_REACHED(); } diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h index a331dda3f..2e227ef00 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h @@ -29,13 +29,13 @@ #if ENABLE(INSPECTOR_SERVER) +#include <memory> #include <wtf/Deque.h> -#include <wtf/OwnPtr.h> #include <wtf/text/WTFString.h> #if USE(SOUP) #include <gio/gio.h> -#include <wtf/gobject/GRefPtr.h> +#include <wtf/glib/GRefPtr.h> #endif namespace WebCore { @@ -61,7 +61,7 @@ public: void close(); WebSocketServerClient* client() const { return m_client; } - void didAcceptConnection(PassOwnPtr<WebSocketServerConnection>); + void didAcceptConnection(std::unique_ptr<WebSocketServerConnection>); private: void didCloseWebSocketServerConnection(WebSocketServerConnection*); @@ -71,7 +71,7 @@ private: void platformClose(); ServerState m_state; - Deque<OwnPtr<WebSocketServerConnection> > m_connections; + Deque<std::unique_ptr<WebSocketServerConnection>> m_connections; WebSocketServerClient* m_client; String m_bindAddress; unsigned short m_port; diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp index a33855546..7af854217 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp @@ -30,6 +30,7 @@ #include "WebSocketServerConnection.h" +#include "HTTPHeaderNames.h" #include "HTTPRequest.h" #include "WebSocketServer.h" #include "WebSocketServerClient.h" @@ -46,11 +47,8 @@ using namespace WebCore; namespace WebKit { WebSocketServerConnection::WebSocketServerConnection(WebSocketServerClient* client, WebSocketServer* server) - : m_identifier(0) - , m_mode(HTTP) - , m_server(server) + : m_server(server) , m_client(client) - , m_shutdownAfterSend(false) { } @@ -59,17 +57,17 @@ WebSocketServerConnection::~WebSocketServerConnection() shutdownNow(); } -void WebSocketServerConnection::setSocketHandle(PassRefPtr<WebCore::SocketStreamHandle> socket) +void WebSocketServerConnection::setSocketHandle(Ref<SocketStreamHandle>&& socket) { ASSERT(!m_socket); - m_socket = socket; + m_socket = WTFMove(socket); } void WebSocketServerConnection::shutdownNow() { if (!m_socket) return; - RefPtr<SocketStreamHandle> socket = m_socket.release(); + auto socket = WTFMove(m_socket); socket->close(); m_shutdownAfterSend = false; } @@ -122,10 +120,10 @@ void WebSocketServerConnection::sendRawData(const char* data, size_t length) m_socket->send(data, length); } -void WebSocketServerConnection::didCloseSocketStream(SocketStreamHandle*) +void WebSocketServerConnection::didCloseSocketStream(SocketStreamHandle&) { // Destroy the SocketStreamHandle now to prevent closing an already closed socket later. - m_socket.clear(); + m_socket = nullptr; // Web Socket Mode. if (m_mode == WebSocket) @@ -135,11 +133,12 @@ void WebSocketServerConnection::didCloseSocketStream(SocketStreamHandle*) m_server->didCloseWebSocketServerConnection(this); } -void WebSocketServerConnection::didReceiveSocketStreamData(SocketStreamHandle*, const char* data, int length) +void WebSocketServerConnection::didReceiveSocketStreamData(SocketStreamHandle&, const char* data, std::optional<size_t> length) { // Each didReceiveData call adds more data to our buffer. // We clear the buffer when we have handled data from it. - m_bufferedData.append(data, length); + if (length) + m_bufferedData.append(data, length.value()); switch (m_mode) { case HTTP: @@ -154,17 +153,12 @@ void WebSocketServerConnection::didReceiveSocketStreamData(SocketStreamHandle*, } } -void WebSocketServerConnection::didUpdateBufferedAmount(WebCore::SocketStreamHandle*, size_t) +void WebSocketServerConnection::didUpdateBufferedAmount(SocketStreamHandle&, size_t) { if (m_shutdownAfterSend && !m_socket->bufferedAmount()) shutdownNow(); } -void WebSocketServerConnection::didFailSocketStream(SocketStreamHandle*, const SocketStreamError&) -{ - // Possible read or write error. -} - void WebSocketServerConnection::readHTTPMessage() { String failureReason; @@ -177,7 +171,7 @@ void WebSocketServerConnection::readHTTPMessage() // If this is a WebSocket request, perform the WebSocket Handshake. const HTTPHeaderMap& headers = request->headerFields(); - String upgradeHeaderValue = headers.get("Upgrade"); + String upgradeHeaderValue = headers.get(HTTPHeaderName::Upgrade); if (upgradeHeaderValue == "websocket") { upgradeToWebSocketServerConnection(request); return; @@ -206,10 +200,10 @@ void WebSocketServerConnection::upgradeToWebSocketServerConnection(PassRefPtr<HT // Build and send the WebSocket handshake response. const HTTPHeaderMap& requestHeaders = protectedRequest->headerFields(); - String accept = WebSocketHandshake::getExpectedWebSocketAccept(requestHeaders.get("Sec-WebSocket-Key")); + String accept = WebSocketHandshake::getExpectedWebSocketAccept(requestHeaders.get(HTTPHeaderName::SecWebSocketKey)); HTTPHeaderMap responseHeaders; - responseHeaders.add("Upgrade", requestHeaders.get("Upgrade")); - responseHeaders.add("Connection", requestHeaders.get("Connection")); + responseHeaders.add("Upgrade", requestHeaders.get(HTTPHeaderName::Upgrade)); + responseHeaders.add("Connection", requestHeaders.get(HTTPHeaderName::Connection)); responseHeaders.add("Sec-WebSocket-Accept", accept); sendHTTPResponseHeader(101, "WebSocket Protocol Handshake", responseHeaders); diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h index 13c551644..1ead501a9 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.h @@ -24,8 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef WebSocketServerConnection_h -#define WebSocketServerConnection_h +#pragma once #if ENABLE(INSPECTOR_SERVER) @@ -37,6 +36,7 @@ namespace WebCore { class HTTPHeaderMap; +class SocketStreamError; class SocketStreamHandle; } @@ -46,7 +46,7 @@ class HTTPRequest; class WebSocketServer; class WebSocketServerClient; -class WebSocketServerConnection : public WebCore::SocketStreamHandleClient { +class WebSocketServerConnection final : public WebCore::SocketStreamHandleClient { public: enum WebSocketServerMode { HTTP, WebSocket }; WebSocketServerConnection(WebSocketServerClient*, WebSocketServer*); @@ -54,7 +54,7 @@ public: unsigned identifier() const { return m_identifier; } void setIdentifier(unsigned id) { m_identifier = id; } - void setSocketHandle(PassRefPtr<WebCore::SocketStreamHandle>); + void setSocketHandle(Ref<WebCore::SocketStreamHandle>&&); // Sending data over the connection. void sendWebSocketMessage(const String& message); @@ -65,13 +65,14 @@ public: void shutdownNow(); void shutdownAfterSendOrNow(); +private: // SocketStreamHandleClient implementation. - virtual void didCloseSocketStream(WebCore::SocketStreamHandle*); - virtual void didReceiveSocketStreamData(WebCore::SocketStreamHandle*, const char* data, int length); - virtual void didUpdateBufferedAmount(WebCore::SocketStreamHandle*, size_t bufferedAmount); - virtual void didFailSocketStream(WebCore::SocketStreamHandle*, const WebCore::SocketStreamError&); + void didOpenSocketStream(WebCore::SocketStreamHandle&) final { } + void didCloseSocketStream(WebCore::SocketStreamHandle&) final; + void didReceiveSocketStreamData(WebCore::SocketStreamHandle&, const char* data, std::optional<size_t> length) final; + void didUpdateBufferedAmount(WebCore::SocketStreamHandle&, size_t bufferedAmount) final; + void didFailSocketStream(WebCore::SocketStreamHandle&, const WebCore::SocketStreamError&) final { } -private: // HTTP Mode. void readHTTPMessage(); @@ -80,18 +81,15 @@ private: void readWebSocketFrames(); bool readWebSocketFrame(); -protected: - unsigned m_identifier; + unsigned m_identifier { 0 }; Vector<char> m_bufferedData; - WebSocketServerMode m_mode; + WebSocketServerMode m_mode { HTTP }; RefPtr<WebCore::SocketStreamHandle> m_socket; - WebSocketServer* m_server; - WebSocketServerClient* m_client; - bool m_shutdownAfterSend; + WebSocketServer* m_server { nullptr }; + WebSocketServerClient* m_client { nullptr }; + bool m_shutdownAfterSend { false }; }; } #endif // ENABLE(INSPECTOR_SERVER) - -#endif // WebSocketServerConnection_h diff --git a/Source/WebKit2/UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp b/Source/WebKit2/UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp index 5011666b3..c5393a47d 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp @@ -33,7 +33,7 @@ #include <WebCore/MIMETypeRegistry.h> #include <gio/gio.h> #include <glib.h> -#include <wtf/gobject/GUniquePtr.h> +#include <wtf/glib/GUniquePtr.h> #include <wtf/text/CString.h> #include <wtf/text/StringBuilder.h> #include <wtf/text/StringConcatenate.h> @@ -94,7 +94,7 @@ void WebInspectorServer::buildPageList(Vector<char>& data, String& contentType) builder.appendLiteral("[ "); ClientMap::iterator end = m_clientMap.end(); for (ClientMap::iterator it = m_clientMap.begin(); it != end; ++it) { - WebPageProxy* webPage = it->value->page(); + WebPageProxy* webPage = it->value->inspectedPage(); if (it != m_clientMap.begin()) builder.appendLiteral(", "); builder.appendLiteral("{ \"id\": "); diff --git a/Source/WebKit2/UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp b/Source/WebKit2/UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp index f3ad13ac2..bf3e019e6 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp @@ -28,11 +28,10 @@ #include "Logging.h" #include "WebSocketServerConnection.h" -#include <WebCore/SocketStreamHandle.h> +#include <WebCore/SocketStreamHandleImpl.h> #include <gio/gio.h> #include <glib.h> -#include <wtf/PassOwnPtr.h> -#include <wtf/gobject/GUniquePtr.h> +#include <wtf/glib/GUniquePtr.h> #include <wtf/text/CString.h> using namespace WebCore; @@ -47,9 +46,9 @@ static gboolean connectionCallback(GSocketService* /*service*/, GSocketConnectio LOG(InspectorServer, "New Connection from %s:%d.", addressString.get(), g_inet_socket_address_get_port(G_INET_SOCKET_ADDRESS(socketAddress.get()))); #endif - OwnPtr<WebSocketServerConnection> webSocketConnection = adoptPtr(new WebSocketServerConnection(server->client(), server)); - webSocketConnection->setSocketHandle(SocketStreamHandle::create(connection, webSocketConnection.get())); - server->didAcceptConnection(webSocketConnection.release()); + auto webSocketConnection = std::make_unique<WebSocketServerConnection>(server->client(), server); + webSocketConnection->setSocketHandle(SocketStreamHandleImpl::create(connection, *webSocketConnection)); + server->didAcceptConnection(WTFMove(webSocketConnection)); return TRUE; } |