Jelajahi Sumber

LibWebView+LibProtocol: Allow app to pass custom WebSocketClients

Andrew Kaster 1 tahun lalu
induk
melakukan
dd694215bc

+ 2 - 2
Userland/Libraries/LibProtocol/WebSocketClient.h

@@ -21,6 +21,8 @@ class WebSocketClient final
     IPC_CLIENT_CONNECTION(WebSocketClient, "/tmp/session/%sid/portal/websocket"sv)
     IPC_CLIENT_CONNECTION(WebSocketClient, "/tmp/session/%sid/portal/websocket"sv)
 
 
 public:
 public:
+    explicit WebSocketClient(NonnullOwnPtr<Core::LocalSocket>);
+
     RefPtr<WebSocket> connect(const URL&, DeprecatedString const& origin = {}, Vector<DeprecatedString> const& protocols = {}, Vector<DeprecatedString> const& extensions = {}, HashMap<DeprecatedString, DeprecatedString> const& request_headers = {});
     RefPtr<WebSocket> connect(const URL&, DeprecatedString const& origin = {}, Vector<DeprecatedString> const& protocols = {}, Vector<DeprecatedString> const& extensions = {}, HashMap<DeprecatedString, DeprecatedString> const& request_headers = {});
 
 
     u32 ready_state(Badge<WebSocket>, WebSocket&);
     u32 ready_state(Badge<WebSocket>, WebSocket&);
@@ -30,8 +32,6 @@ public:
     bool set_certificate(Badge<WebSocket>, WebSocket&, DeprecatedString, DeprecatedString);
     bool set_certificate(Badge<WebSocket>, WebSocket&, DeprecatedString, DeprecatedString);
 
 
 private:
 private:
-    WebSocketClient(NonnullOwnPtr<Core::LocalSocket>);
-
     virtual void connected(i32) override;
     virtual void connected(i32) override;
     virtual void received(i32, bool, ByteBuffer const&) override;
     virtual void received(i32, bool, ByteBuffer const&) override;
     virtual void errored(i32, i32) override;
     virtual void errored(i32, i32) override;

+ 5 - 0
Userland/Libraries/LibWebView/WebSocketClientAdapter.cpp

@@ -107,6 +107,11 @@ void WebSocketClientSocketAdapter::close(u16 code, DeprecatedString reason)
     m_websocket->close(code, reason);
     m_websocket->close(code, reason);
 }
 }
 
 
+ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> WebSocketClientManagerAdapter::try_create(NonnullRefPtr<Protocol::WebSocketClient> websocket_client)
+{
+    return adopt_nonnull_ref_or_enomem(new (nothrow) WebSocketClientManagerAdapter(move(websocket_client)));
+}
+
 ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> WebSocketClientManagerAdapter::try_create()
 ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> WebSocketClientManagerAdapter::try_create()
 {
 {
     auto websocket_client = TRY(Protocol::WebSocketClient::try_create());
     auto websocket_client = TRY(Protocol::WebSocketClient::try_create());

+ 1 - 0
Userland/Libraries/LibWebView/WebSocketClientAdapter.h

@@ -40,6 +40,7 @@ private:
 
 
 class WebSocketClientManagerAdapter : public Web::WebSockets::WebSocketClientManager {
 class WebSocketClientManagerAdapter : public Web::WebSockets::WebSocketClientManager {
 public:
 public:
+    static ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> try_create(NonnullRefPtr<Protocol::WebSocketClient>);
     static ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> try_create();
     static ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> try_create();
 
 
     virtual ~WebSocketClientManagerAdapter() override;
     virtual ~WebSocketClientManagerAdapter() override;