| Index: net/websockets/websocket_stream_test.cc
|
| diff --git a/net/websockets/websocket_stream_test.cc b/net/websockets/websocket_stream_test.cc
|
| index 0fdc34b93bba51aef06abaf6a4c3fb468d9dae93..6fdd0ac894e86b6a12b5d5c562e9a058c85ff1e8 100644
|
| --- a/net/websockets/websocket_stream_test.cc
|
| +++ b/net/websockets/websocket_stream_test.cc
|
| @@ -31,6 +31,7 @@
|
| #include "net/websockets/websocket_handshake_request_info.h"
|
| #include "net/websockets/websocket_handshake_response_info.h"
|
| #include "net/websockets/websocket_handshake_stream_create_helper.h"
|
| +#include "net/websockets/websocket_stream_test_util.h"
|
| #include "net/websockets/websocket_test_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "url/gurl.h"
|
| @@ -39,25 +40,6 @@
|
| namespace net {
|
| namespace {
|
|
|
| -typedef std::pair<std::string, std::string> HeaderKeyValuePair;
|
| -
|
| -std::vector<HeaderKeyValuePair> ToVector(const HttpRequestHeaders& headers) {
|
| - HttpRequestHeaders::Iterator it(headers);
|
| - std::vector<HeaderKeyValuePair> result;
|
| - while (it.GetNext())
|
| - result.push_back(HeaderKeyValuePair(it.name(), it.value()));
|
| - return result;
|
| -}
|
| -
|
| -std::vector<HeaderKeyValuePair> ToVector(const HttpResponseHeaders& headers) {
|
| - void* iter = NULL;
|
| - std::string name, value;
|
| - std::vector<HeaderKeyValuePair> result;
|
| - while (headers.EnumerateHeaderLines(&iter, &name, &value))
|
| - result.push_back(HeaderKeyValuePair(name, value));
|
| - return result;
|
| -}
|
| -
|
| // Simple builder for a DeterministicSocketData object to save repetitive code.
|
| // It always sets the connect data to MockConnect(SYNCHRONOUS, OK), so it cannot
|
| // be used in tests where the connect fails. In practice, those tests never have
|
| @@ -88,25 +70,9 @@ class MockWeakTimer : public base::MockTimer,
|
| : MockTimer(retain_user_task, is_repeating) {}
|
| };
|
|
|
| -// A sub-class of WebSocketHandshakeStreamCreateHelper which always sets a
|
| -// deterministic key to use in the WebSocket handshake.
|
| -class DeterministicKeyWebSocketHandshakeStreamCreateHelper
|
| - : public WebSocketHandshakeStreamCreateHelper {
|
| - public:
|
| - DeterministicKeyWebSocketHandshakeStreamCreateHelper(
|
| - WebSocketStream::ConnectDelegate* connect_delegate,
|
| - const std::vector<std::string>& requested_subprotocols)
|
| - : WebSocketHandshakeStreamCreateHelper(connect_delegate,
|
| - requested_subprotocols) {}
|
| -
|
| - void OnStreamCreated(WebSocketBasicHandshakeStream* stream) override {
|
| - stream->SetWebSocketKeyForTesting("dGhlIHNhbXBsZSBub25jZQ==");
|
| - }
|
| -};
|
| -
|
| -class WebSocketStreamCreateTest : public ::testing::Test {
|
| +class WebSocketStreamCreateTest : public ::testing::Test,
|
| + public WebSocketStreamCreateTestBase {
|
| public:
|
| - WebSocketStreamCreateTest() : has_failed_(false), ssl_fatal_(false) {}
|
| ~WebSocketStreamCreateTest() override {
|
| // Permit any endpoint locks to be released.
|
| stream_request_.reset();
|
| @@ -161,100 +127,6 @@ class WebSocketStreamCreateTest : public ::testing::Test {
|
| void AddRawExpectations(scoped_ptr<DeterministicSocketData> socket_data) {
|
| url_request_context_host_.AddRawExpectations(socket_data.Pass());
|
| }
|
| -
|
| - // A wrapper for CreateAndConnectStreamForTesting that knows about our default
|
| - // parameters.
|
| - void CreateAndConnectStream(const std::string& socket_url,
|
| - const std::vector<std::string>& sub_protocols,
|
| - const std::string& origin,
|
| - scoped_ptr<base::Timer> timer) {
|
| - for (size_t i = 0; i < ssl_data_.size(); ++i) {
|
| - scoped_ptr<SSLSocketDataProvider> ssl_data(ssl_data_[i]);
|
| - ssl_data_[i] = NULL;
|
| - url_request_context_host_.AddSSLSocketDataProvider(ssl_data.Pass());
|
| - }
|
| - ssl_data_.clear();
|
| - scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate(
|
| - new TestConnectDelegate(this));
|
| - WebSocketStream::ConnectDelegate* delegate = connect_delegate.get();
|
| - scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
|
| - new DeterministicKeyWebSocketHandshakeStreamCreateHelper(
|
| - delegate, sub_protocols));
|
| - stream_request_ = ::net::CreateAndConnectStreamForTesting(
|
| - GURL(socket_url),
|
| - create_helper.Pass(),
|
| - url::Origin(origin),
|
| - url_request_context_host_.GetURLRequestContext(),
|
| - BoundNetLog(),
|
| - connect_delegate.Pass(),
|
| - timer ? timer.Pass() : scoped_ptr<base::Timer>(
|
| - new base::Timer(false, false)));
|
| - }
|
| -
|
| - static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); }
|
| -
|
| - // A simple function to make the tests more readable. Creates an empty vector.
|
| - static std::vector<std::string> NoSubProtocols() {
|
| - return std::vector<std::string>();
|
| - }
|
| -
|
| - const std::string& failure_message() const { return failure_message_; }
|
| - bool has_failed() const { return has_failed_; }
|
| -
|
| - class TestConnectDelegate : public WebSocketStream::ConnectDelegate {
|
| - public:
|
| - explicit TestConnectDelegate(WebSocketStreamCreateTest* owner)
|
| - : owner_(owner) {}
|
| -
|
| - void OnSuccess(scoped_ptr<WebSocketStream> stream) override {
|
| - stream.swap(owner_->stream_);
|
| - }
|
| -
|
| - void OnFailure(const std::string& message) override {
|
| - owner_->has_failed_ = true;
|
| - owner_->failure_message_ = message;
|
| - }
|
| -
|
| - void OnStartOpeningHandshake(
|
| - scoped_ptr<WebSocketHandshakeRequestInfo> request) override {
|
| - // Can be called multiple times (in the case of HTTP auth). Last call
|
| - // wins.
|
| - owner_->request_info_ = request.Pass();
|
| - }
|
| - void OnFinishOpeningHandshake(
|
| - scoped_ptr<WebSocketHandshakeResponseInfo> response) override {
|
| - if (owner_->response_info_)
|
| - ADD_FAILURE();
|
| - owner_->response_info_ = response.Pass();
|
| - }
|
| - void OnSSLCertificateError(
|
| - scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks>
|
| - ssl_error_callbacks,
|
| - const SSLInfo& ssl_info,
|
| - bool fatal) override {
|
| - owner_->ssl_error_callbacks_ = ssl_error_callbacks.Pass();
|
| - owner_->ssl_info_ = ssl_info;
|
| - owner_->ssl_fatal_ = fatal;
|
| - }
|
| -
|
| - private:
|
| - WebSocketStreamCreateTest* owner_;
|
| - };
|
| -
|
| - WebSocketTestURLRequestContextHost url_request_context_host_;
|
| - scoped_ptr<WebSocketStreamRequest> stream_request_;
|
| - // Only set if the connection succeeded.
|
| - scoped_ptr<WebSocketStream> stream_;
|
| - // Only set if the connection failed.
|
| - std::string failure_message_;
|
| - bool has_failed_;
|
| - scoped_ptr<WebSocketHandshakeRequestInfo> request_info_;
|
| - scoped_ptr<WebSocketHandshakeResponseInfo> response_info_;
|
| - scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks> ssl_error_callbacks_;
|
| - SSLInfo ssl_info_;
|
| - bool ssl_fatal_;
|
| - ScopedVector<SSLSocketDataProvider> ssl_data_;
|
| - ScopedWebSocketEndpointZeroUnlockDelay zero_unlock_delay_;
|
| };
|
|
|
| // There are enough tests of the Sec-WebSocket-Extensions header that they
|
|
|