Merge HttpProxyClientSocketWrapper into HttpProxyConnectJob.

These used to be a single class, but were split apart years ago to
support re-connecting in the HTTPS proxy auth challenge case.
Reconnecting in that case is now scoped to the lifetime of the
HttpProxyConnectJob, so these classes can be merged again.

Change-Id: I74eb74ae479a4949c566cd4b021f6eab7c439ede
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1504171
Commit-Queue: Matt Menke <[email protected]>
Reviewed-by: Paul Jensen <[email protected]>
Reviewed-by: Asanka Herath <[email protected]>
Cr-Commit-Position: refs/heads/master@{#639272}
diff --git a/net/quic/quic_proxy_client_socket.cc b/net/quic/quic_proxy_client_socket.cc
index e0e22c7..db69ce0 100644
--- a/net/quic/quic_proxy_client_socket.cc
+++ b/net/quic/quic_proxy_client_socket.cc
@@ -153,8 +153,14 @@
 }
 
 void QuicProxyClientSocket::ApplySocketTag(const SocketTag& tag) {
-  // |session_| can be tagged, but |stream_| cannot.
-  CHECK(false);
+  // In the case of a connection to the proxy using HTTP/2 or HTTP/3 where the
+  // underlying socket may multiplex multiple streams, applying this request's
+  // socket tag to the multiplexed session would incorrectly apply the socket
+  // tag to all mutliplexed streams. Fortunately socket tagging is only
+  // supported on Android without the data reduction proxy, so only simple HTTP
+  // proxies are supported, so proxies won't be using HTTP/2 or HTTP/3. Enforce
+  // that a specific (non-default) tag isn't being applied.
+  CHECK(tag == SocketTag());
 }
 
 int QuicProxyClientSocket::Read(IOBuffer* buf,