Commit 490e38f4 authored by tyoshino@chromium.org's avatar tyoshino@chromium.org

Move work done in CreateAndConnectStreamWithCreateHelper into StreamRequestImpl's ctor

BUG=none

Review URL: https://codereview.chromium.org/291343004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272882 0039d316-1c4b-4281-b951-d872f2087c98
parent 1d930a61
...@@ -67,18 +67,37 @@ class StreamRequestImpl : public WebSocketStreamRequest { ...@@ -67,18 +67,37 @@ class StreamRequestImpl : public WebSocketStreamRequest {
StreamRequestImpl( StreamRequestImpl(
const GURL& url, const GURL& url,
const URLRequestContext* context, const URLRequestContext* context,
const url::Origin& origin,
scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate, scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate,
WebSocketHandshakeStreamCreateHelper* create_helper) scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper)
: delegate_(new Delegate(this)), : delegate_(new Delegate(this)),
url_request_(url, DEFAULT_PRIORITY, delegate_.get(), context), url_request_(url, DEFAULT_PRIORITY, delegate_.get(), context),
connect_delegate_(connect_delegate.Pass()), 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 // Destroying this object destroys the URLRequest, which cancels the request
// and so terminates the handshake if it is incomplete. // and so terminates the handshake if it is incomplete.
virtual ~StreamRequestImpl() {} virtual ~StreamRequestImpl() {}
URLRequest* url_request() { return &url_request_; } void Start() {
url_request_.Start();
}
void PerformUpgrade() { void PerformUpgrade() {
connect_delegate_->OnSuccess(create_helper_->stream()->Upgrade()); connect_delegate_->OnSuccess(create_helper_->stream()->Upgrade());
...@@ -158,37 +177,6 @@ void Delegate::OnReadCompleted(URLRequest* request, int bytes_read) { ...@@ -158,37 +177,6 @@ void Delegate::OnReadCompleted(URLRequest* request, int bytes_read) {
NOTREACHED(); 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 } // namespace
WebSocketStreamRequest::~WebSocketStreamRequest() {} WebSocketStreamRequest::~WebSocketStreamRequest() {}
...@@ -208,12 +196,14 @@ scoped_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream( ...@@ -208,12 +196,14 @@ scoped_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream(
scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper( scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(), new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(),
requested_subprotocols)); requested_subprotocols));
return CreateAndConnectStreamWithCreateHelper(socket_url, scoped_ptr<StreamRequestImpl> request(
create_helper.Pass(), new StreamRequestImpl(socket_url,
origin, url_request_context,
url_request_context, origin,
net_log, connect_delegate.Pass(),
connect_delegate.Pass()); create_helper.Pass()));
request->Start();
return request.PassAs<WebSocketStreamRequest>();
} }
// This is declared in websocket_test_util.h. // This is declared in websocket_test_util.h.
...@@ -224,12 +214,14 @@ scoped_ptr<WebSocketStreamRequest> CreateAndConnectStreamForTesting( ...@@ -224,12 +214,14 @@ scoped_ptr<WebSocketStreamRequest> CreateAndConnectStreamForTesting(
URLRequestContext* url_request_context, URLRequestContext* url_request_context,
const BoundNetLog& net_log, const BoundNetLog& net_log,
scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) { scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) {
return CreateAndConnectStreamWithCreateHelper(socket_url, scoped_ptr<StreamRequestImpl> request(
create_helper.Pass(), new StreamRequestImpl(socket_url,
origin, url_request_context,
url_request_context, origin,
net_log, connect_delegate.Pass(),
connect_delegate.Pass()); create_helper.Pass()));
request->Start();
return request.PassAs<WebSocketStreamRequest>();
} }
} // namespace net } // namespace net
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