Commit 06a7200b authored by Julie Jeongeun Kim's avatar Julie Jeongeun Kim Committed by Commit Bot

Convert WebSocket to new Mojo types

This CL converts WebSocketPtr, to new Mojo types and
updates OnConnectionEstablished from websocket.mojom.

Bug: 955171, 978694
Change-Id: I82416b209e2380241b64ebd3d829dd8bde5247c7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1773016
Commit-Queue: Julie Kim <jkim@igalia.com>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/master@{#691574}
parent accb327f
...@@ -190,7 +190,7 @@ void WebRequestProxyingWebSocket::ContinueToHeadersReceived() { ...@@ -190,7 +190,7 @@ void WebRequestProxyingWebSocket::ContinueToHeadersReceived() {
} }
void WebRequestProxyingWebSocket::OnConnectionEstablished( void WebRequestProxyingWebSocket::OnConnectionEstablished(
network::mojom::WebSocketPtr websocket, mojo::PendingRemote<network::mojom::WebSocket> websocket,
mojo::PendingReceiver<network::mojom::WebSocketClient> client_receiver, mojo::PendingReceiver<network::mojom::WebSocketClient> client_receiver,
const std::string& selected_protocol, const std::string& selected_protocol,
const std::string& extensions, const std::string& extensions,
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include "components/keyed_service/core/keyed_service_shutdown_notifier.h" #include "components/keyed_service/core/keyed_service_shutdown_notifier.h"
#include "extensions/browser/api/web_request/web_request_api.h" #include "extensions/browser/api/web_request/web_request_api.h"
#include "extensions/browser/api/web_request/web_request_info.h" #include "extensions/browser/api/web_request/web_request_info.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
...@@ -65,7 +64,7 @@ class WebRequestProxyingWebSocket ...@@ -65,7 +64,7 @@ class WebRequestProxyingWebSocket
void OnResponseReceived( void OnResponseReceived(
network::mojom::WebSocketHandshakeResponsePtr response) override; network::mojom::WebSocketHandshakeResponsePtr response) override;
void OnConnectionEstablished( void OnConnectionEstablished(
network::mojom::WebSocketPtr websocket, mojo::PendingRemote<network::mojom::WebSocket> websocket,
mojo::PendingReceiver<network::mojom::WebSocketClient> client_receiver, mojo::PendingReceiver<network::mojom::WebSocketClient> client_receiver,
const std::string& selected_protocol, const std::string& selected_protocol,
const std::string& extensions, const std::string& extensions,
......
...@@ -65,7 +65,7 @@ interface WebSocketHandshakeClient { ...@@ -65,7 +65,7 @@ interface WebSocketHandshakeClient {
// |extensions| is the list of extensions negotiated for the connection. // |extensions| is the list of extensions negotiated for the connection.
// default threshold value // default threshold value
// |readable| is readable datapipe to receive data from browser. // |readable| is readable datapipe to receive data from browser.
OnConnectionEstablished(WebSocket socket, OnConnectionEstablished(pending_remote<WebSocket> socket,
pending_receiver<WebSocketClient> client_receiver, pending_receiver<WebSocketClient> client_receiver,
string selected_protocol, string selected_protocol,
string extensions, string extensions,
......
...@@ -146,11 +146,6 @@ void WebSocket::WebSocketEventHandler::OnAddChannelResponse( ...@@ -146,11 +146,6 @@ void WebSocket::WebSocketEventHandler::OnAddChannelResponse(
<< selected_protocol << "\"" << selected_protocol << "\""
<< " extensions=\"" << extensions << "\""; << " extensions=\"" << extensions << "\"";
mojom::WebSocketPtr websocket_to_pass;
impl_->binding_.Bind(mojo::MakeRequest(&websocket_to_pass));
impl_->binding_.set_connection_error_handler(base::BindOnce(
&WebSocket::OnConnectionError, base::Unretained(impl_), FROM_HERE));
impl_->handshake_succeeded_ = true; impl_->handshake_succeeded_ = true;
impl_->pending_connection_tracker_.OnCompleteHandshake(); impl_->pending_connection_tracker_.OnCompleteHandshake();
...@@ -185,8 +180,11 @@ void WebSocket::WebSocketEventHandler::OnAddChannelResponse( ...@@ -185,8 +180,11 @@ void WebSocket::WebSocketEventHandler::OnAddChannelResponse(
DCHECK_EQ(mojo_result, MOJO_RESULT_OK); DCHECK_EQ(mojo_result, MOJO_RESULT_OK);
impl_->handshake_client_->OnConnectionEstablished( impl_->handshake_client_->OnConnectionEstablished(
std::move(websocket_to_pass), impl_->client_.BindNewPipeAndPassReceiver(), impl_->receiver_.BindNewPipeAndPassRemote(),
selected_protocol, extensions, std::move(readable)); impl_->client_.BindNewPipeAndPassReceiver(), selected_protocol,
extensions, std::move(readable));
impl_->receiver_.set_disconnect_handler(base::BindOnce(
&WebSocket::OnConnectionError, base::Unretained(impl_), FROM_HERE));
impl_->handshake_client_.reset(); impl_->handshake_client_.reset();
impl_->auth_handler_.reset(); impl_->auth_handler_.reset();
impl_->header_client_.reset(); impl_->header_client_.reset();
...@@ -379,7 +377,6 @@ WebSocket::WebSocket( ...@@ -379,7 +377,6 @@ WebSocket::WebSocket(
WebSocketThrottler::PendingConnection pending_connection_tracker, WebSocketThrottler::PendingConnection pending_connection_tracker,
base::TimeDelta delay) base::TimeDelta delay)
: factory_(factory), : factory_(factory),
binding_(this),
handshake_client_(std::move(handshake_client)), handshake_client_(std::move(handshake_client)),
auth_handler_(std::move(auth_handler)), auth_handler_(std::move(auth_handler)),
header_client_(std::move(header_client)), header_client_(std::move(header_client)),
...@@ -693,7 +690,7 @@ void WebSocket::Reset() { ...@@ -693,7 +690,7 @@ void WebSocket::Reset() {
client_.reset(); client_.reset();
auth_handler_.reset(); auth_handler_.reset();
header_client_.reset(); header_client_.reset();
binding_.Close(); receiver_.reset();
// net::WebSocketChannel requires that we delete it at this point. // net::WebSocketChannel requires that we delete it at this point.
channel_.reset(); channel_.reset();
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "base/util/type_safety/strong_alias.h" #include "base/util/type_safety/strong_alias.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "net/websockets/websocket_event_interface.h" #include "net/websockets/websocket_event_interface.h"
#include "services/network/public/mojom/network_context.mojom.h" #include "services/network/public/mojom/network_context.mojom.h"
...@@ -148,7 +148,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) WebSocket : public mojom::WebSocket { ...@@ -148,7 +148,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) WebSocket : public mojom::WebSocket {
// |factory_| owns |this|. // |factory_| owns |this|.
WebSocketFactory* const factory_; WebSocketFactory* const factory_;
mojo::Binding<mojom::WebSocket> binding_; mojo::Receiver<mojom::WebSocket> receiver_{this};
mojo::Remote<mojom::WebSocketHandshakeClient> handshake_client_; mojo::Remote<mojom::WebSocketHandshakeClient> handshake_client_;
mojo::Remote<mojom::WebSocketClient> client_; mojo::Remote<mojom::WebSocketClient> client_;
......
...@@ -148,7 +148,7 @@ void WebSocketHandleImpl::OnResponseReceived( ...@@ -148,7 +148,7 @@ void WebSocketHandleImpl::OnResponseReceived(
} }
void WebSocketHandleImpl::OnConnectionEstablished( void WebSocketHandleImpl::OnConnectionEstablished(
network::mojom::blink::WebSocketPtr websocket, mojo::PendingRemote<network::mojom::blink::WebSocket> websocket,
mojo::PendingReceiver<network::mojom::blink::WebSocketClient> mojo::PendingReceiver<network::mojom::blink::WebSocketClient>
client_receiver, client_receiver,
const String& protocol, const String& protocol,
...@@ -168,7 +168,7 @@ void WebSocketHandleImpl::OnConnectionEstablished( ...@@ -168,7 +168,7 @@ void WebSocketHandleImpl::OnConnectionEstablished(
FROM_HERE)); FROM_HERE));
DCHECK(!websocket_); DCHECK(!websocket_);
websocket_ = std::move(websocket); websocket_.Bind(std::move(websocket));
readable_ = std::move(readable); readable_ = std::move(readable);
const MojoResult mojo_result = readable_watcher_.Watch( const MojoResult mojo_result = readable_watcher_.Watch(
readable_.get(), MOJO_HANDLE_SIGNAL_READABLE, readable_.get(), MOJO_HANDLE_SIGNAL_READABLE,
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/mojom/websocket.mojom-blink.h" #include "services/network/public/mojom/websocket.mojom-blink.h"
#include "third_party/blink/public/mojom/websockets/websocket_connector.mojom-blink.h" #include "third_party/blink/public/mojom/websockets/websocket_connector.mojom-blink.h"
#include "third_party/blink/renderer/modules/websockets/websocket_handle.h" #include "third_party/blink/renderer/modules/websockets/websocket_handle.h"
...@@ -89,7 +90,7 @@ class WebSocketHandleImpl ...@@ -89,7 +90,7 @@ class WebSocketHandleImpl
void OnResponseReceived( void OnResponseReceived(
network::mojom::blink::WebSocketHandshakeResponsePtr) override; network::mojom::blink::WebSocketHandshakeResponsePtr) override;
void OnConnectionEstablished( void OnConnectionEstablished(
network::mojom::blink::WebSocketPtr websocket, mojo::PendingRemote<network::mojom::blink::WebSocket> websocket,
mojo::PendingReceiver<network::mojom::blink::WebSocketClient> mojo::PendingReceiver<network::mojom::blink::WebSocketClient>
client_receiver, client_receiver,
const String& selected_protocol, const String& selected_protocol,
...@@ -117,7 +118,7 @@ class WebSocketHandleImpl ...@@ -117,7 +118,7 @@ class WebSocketHandleImpl
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
WeakPersistent<WebSocketChannelImpl> channel_; WeakPersistent<WebSocketChannelImpl> channel_;
network::mojom::blink::WebSocketPtr websocket_; mojo::Remote<network::mojom::blink::WebSocket> websocket_;
mojo::Receiver<network::mojom::blink::WebSocketHandshakeClient> mojo::Receiver<network::mojom::blink::WebSocketHandshakeClient>
handshake_client_receiver_{this}; handshake_client_receiver_{this};
mojo::Binding<network::mojom::blink::WebSocketClient> client_binding_; mojo::Binding<network::mojom::blink::WebSocketClient> client_binding_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment