Add WebSocketClientSocketHandleAdapter.

Bug: 801564
Change-Id: I41e16956e9179b7dbacea6672702e282434df663
Reviewed-on: https://chromium-review.googlesource.com/906891
Commit-Queue: Bence Béky <[email protected]>
Reviewed-by: Adam Rice <[email protected]>
Cr-Commit-Position: refs/heads/master@{#535375}
diff --git a/net/websockets/websocket_basic_stream.cc b/net/websockets/websocket_basic_stream.cc
index d7bccc1..22d0c68 100644
--- a/net/websockets/websocket_basic_stream.cc
+++ b/net/websockets/websocket_basic_stream.cc
@@ -8,9 +8,7 @@
 #include <stdint.h>
 #include <algorithm>
 #include <limits>
-#include <string>
 #include <utility>
-#include <vector>
 
 #include "base/bind.h"
 #include "base/logging.h"
@@ -19,10 +17,9 @@
 #include "net/base/io_buffer.h"
 #include "net/base/net_errors.h"
 #include "net/socket/client_socket_handle.h"
-#include "net/traffic_annotation/network_traffic_annotation.h"
+#include "net/websockets/websocket_basic_stream_adapters.h"
 #include "net/websockets/websocket_errors.h"
 #include "net/websockets/websocket_frame.h"
-#include "net/websockets/websocket_frame_parser.h"
 
 namespace net {
 
@@ -98,7 +95,7 @@
 }  // namespace
 
 WebSocketBasicStream::WebSocketBasicStream(
-    std::unique_ptr<ClientSocketHandle> connection,
+    std::unique_ptr<Adapter> connection,
     const scoped_refptr<GrowableIOBuffer>& http_read_buffer,
     const std::string& sub_protocol,
     const std::string& extensions)
@@ -147,13 +144,10 @@
     // call any callbacks after Disconnect(), which we call from the
     // destructor. The caller of ReadFrames() is required to keep |frames|
     // valid.
-    int result = connection_->socket()->Read(
-        read_buffer_.get(),
-        read_buffer_->size(),
+    int result = connection_->Read(
+        read_buffer_.get(), read_buffer_->size(),
         base::Bind(&WebSocketBasicStream::OnReadComplete,
-                   base::Unretained(this),
-                   base::Unretained(frames),
-                   callback));
+                   base::Unretained(this), base::Unretained(frames), callback));
     if (result == ERR_IO_PENDING)
       return result;
     result = HandleReadResult(result, frames);
@@ -206,7 +200,9 @@
   return WriteEverything(drainable_buffer, callback);
 }
 
-void WebSocketBasicStream::Close() { connection_->socket()->Disconnect(); }
+void WebSocketBasicStream::Close() {
+  connection_->Disconnect();
+}
 
 std::string WebSocketBasicStream::GetSubProtocol() const {
   return sub_protocol_;
@@ -222,8 +218,10 @@
     const std::string& sub_protocol,
     const std::string& extensions,
     WebSocketMaskingKeyGeneratorFunction key_generator_function) {
-  std::unique_ptr<WebSocketBasicStream> stream(new WebSocketBasicStream(
-      std::move(connection), http_read_buffer, sub_protocol, extensions));
+  auto stream = std::make_unique<WebSocketBasicStream>(
+      std::make_unique<WebSocketClientSocketHandleAdapter>(
+          std::move(connection)),
+      http_read_buffer, sub_protocol, extensions);
   stream->generate_websocket_masking_key_ = key_generator_function;
   return stream;
 }
@@ -234,11 +232,11 @@
   while (buffer->BytesRemaining() > 0) {
     // The use of base::Unretained() here is safe because on destruction we
     // disconnect the socket, preventing any further callbacks.
-    int result = connection_->socket()->Write(
-        buffer.get(), buffer->BytesRemaining(),
-        base::Bind(&WebSocketBasicStream::OnWriteComplete,
-                   base::Unretained(this), buffer, callback),
-        kTrafficAnnotation);
+    int result =
+        connection_->Write(buffer.get(), buffer->BytesRemaining(),
+                           base::Bind(&WebSocketBasicStream::OnWriteComplete,
+                                      base::Unretained(this), buffer, callback),
+                           kTrafficAnnotation);
     if (result > 0) {
       UMA_HISTOGRAM_COUNTS_100000("Net.WebSocket.DataUse.Upstream", result);
       buffer->DidConsume(result);