| Index: net/websockets/websocket_stream.cc
|
| diff --git a/net/websockets/websocket_stream.cc b/net/websockets/websocket_stream.cc
|
| index 8766316342fa15d599e4db982f06d5da39eea50b..546e01b852cb4a10230110b177a9aa4112d041e1 100644
|
| --- a/net/websockets/websocket_stream.cc
|
| +++ b/net/websockets/websocket_stream.cc
|
| @@ -67,18 +67,37 @@ class StreamRequestImpl : public WebSocketStreamRequest {
|
| StreamRequestImpl(
|
| const GURL& url,
|
| const URLRequestContext* context,
|
| + const url::Origin& origin,
|
| scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate,
|
| - WebSocketHandshakeStreamCreateHelper* create_helper)
|
| + scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper)
|
| : delegate_(new Delegate(this)),
|
| url_request_(url, DEFAULT_PRIORITY, delegate_.get(), context),
|
| connect_delegate_(connect_delegate.Pass()),
|
| - create_helper_(create_helper) {}
|
| + create_helper_(create_helper.release()) {
|
| + HttpRequestHeaders headers;
|
| + headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase);
|
| + headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade);
|
| + headers.SetHeader(HttpRequestHeaders::kOrigin, origin.string());
|
| + headers.SetHeader(websockets::kSecWebSocketVersion,
|
| + websockets::kSupportedVersion);
|
| + url_request_.SetExtraRequestHeaders(headers);
|
| +
|
| + // This passes the ownership of |create_helper_| to |url_request_|.
|
| + url_request_.SetUserData(
|
| + WebSocketHandshakeStreamBase::CreateHelper::DataKey(),
|
| + create_helper_);
|
| + url_request_.SetLoadFlags(LOAD_DISABLE_CACHE |
|
| + LOAD_BYPASS_CACHE |
|
| + LOAD_DO_NOT_PROMPT_FOR_LOGIN);
|
| + }
|
|
|
| // Destroying this object destroys the URLRequest, which cancels the request
|
| // and so terminates the handshake if it is incomplete.
|
| virtual ~StreamRequestImpl() {}
|
|
|
| - URLRequest* url_request() { return &url_request_; }
|
| + void Start() {
|
| + url_request_.Start();
|
| + }
|
|
|
| void PerformUpgrade() {
|
| connect_delegate_->OnSuccess(create_helper_->stream()->Upgrade());
|
| @@ -158,37 +177,6 @@ void Delegate::OnReadCompleted(URLRequest* request, int bytes_read) {
|
| NOTREACHED();
|
| }
|
|
|
| -// Internal implementation of CreateAndConnectStream and
|
| -// CreateAndConnectStreamForTesting.
|
| -scoped_ptr<WebSocketStreamRequest> CreateAndConnectStreamWithCreateHelper(
|
| - const GURL& socket_url,
|
| - scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper,
|
| - const url::Origin& origin,
|
| - URLRequestContext* url_request_context,
|
| - const BoundNetLog& net_log,
|
| - scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) {
|
| - scoped_ptr<StreamRequestImpl> request(
|
| - new StreamRequestImpl(socket_url,
|
| - url_request_context,
|
| - connect_delegate.Pass(),
|
| - create_helper.get()));
|
| - HttpRequestHeaders headers;
|
| - headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase);
|
| - headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade);
|
| - headers.SetHeader(HttpRequestHeaders::kOrigin, origin.string());
|
| - headers.SetHeader(websockets::kSecWebSocketVersion,
|
| - websockets::kSupportedVersion);
|
| - request->url_request()->SetExtraRequestHeaders(headers);
|
| - request->url_request()->SetUserData(
|
| - WebSocketHandshakeStreamBase::CreateHelper::DataKey(),
|
| - create_helper.release());
|
| - request->url_request()->SetLoadFlags(LOAD_DISABLE_CACHE |
|
| - LOAD_BYPASS_CACHE |
|
| - LOAD_DO_NOT_PROMPT_FOR_LOGIN);
|
| - request->url_request()->Start();
|
| - return request.PassAs<WebSocketStreamRequest>();
|
| -}
|
| -
|
| } // namespace
|
|
|
| WebSocketStreamRequest::~WebSocketStreamRequest() {}
|
| @@ -208,12 +196,14 @@ scoped_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream(
|
| scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
|
| new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(),
|
| requested_subprotocols));
|
| - return CreateAndConnectStreamWithCreateHelper(socket_url,
|
| - create_helper.Pass(),
|
| - origin,
|
| - url_request_context,
|
| - net_log,
|
| - connect_delegate.Pass());
|
| + scoped_ptr<StreamRequestImpl> request(
|
| + new StreamRequestImpl(socket_url,
|
| + url_request_context,
|
| + origin,
|
| + connect_delegate.Pass(),
|
| + create_helper.Pass()));
|
| + request->Start();
|
| + return request.PassAs<WebSocketStreamRequest>();
|
| }
|
|
|
| // This is declared in websocket_test_util.h.
|
| @@ -224,12 +214,14 @@ scoped_ptr<WebSocketStreamRequest> CreateAndConnectStreamForTesting(
|
| URLRequestContext* url_request_context,
|
| const BoundNetLog& net_log,
|
| scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) {
|
| - return CreateAndConnectStreamWithCreateHelper(socket_url,
|
| - create_helper.Pass(),
|
| - origin,
|
| - url_request_context,
|
| - net_log,
|
| - connect_delegate.Pass());
|
| + scoped_ptr<StreamRequestImpl> request(
|
| + new StreamRequestImpl(socket_url,
|
| + url_request_context,
|
| + origin,
|
| + connect_delegate.Pass(),
|
| + create_helper.Pass()));
|
| + request->Start();
|
| + return request.PassAs<WebSocketStreamRequest>();
|
| }
|
|
|
| } // namespace net
|
|
|