Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Side by Side Diff: net/websockets/websocket_stream_create_test_base.cc

Issue 869073002: Add WebSocket cookie tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/websockets/websocket_stream_create_test_base.h"
6
7 #include "base/run_loop.h"
8 #include "net/http/http_request_headers.h"
9 #include "net/http/http_response_headers.h"
10 #include "net/websockets/websocket_basic_handshake_stream.h"
11 #include "net/websockets/websocket_handshake_request_info.h"
12 #include "net/websockets/websocket_handshake_response_info.h"
13 #include "net/websockets/websocket_handshake_stream_create_helper.h"
14 #include "net/websockets/websocket_stream.h"
15 #include "url/gurl.h"
16 #include "url/origin.h"
17
18 namespace net {
19
20 using HeaderKeyValuePair = WebSocketStreamCreateTestBase::HeaderKeyValuePair;
21
22 // A sub-class of WebSocketHandshakeStreamCreateHelper which always sets a
23 // deterministic key to use in the WebSocket handshake.
24 class DeterministicKeyWebSocketHandshakeStreamCreateHelper
25 : public WebSocketHandshakeStreamCreateHelper {
26 public:
27 DeterministicKeyWebSocketHandshakeStreamCreateHelper(
28 WebSocketStream::ConnectDelegate* connect_delegate,
29 const std::vector<std::string>& requested_subprotocols)
30 : WebSocketHandshakeStreamCreateHelper(connect_delegate,
31 requested_subprotocols) {}
32
33 void OnStreamCreated(WebSocketBasicHandshakeStream* stream) override {
34 stream->SetWebSocketKeyForTesting("dGhlIHNhbXBsZSBub25jZQ==");
35 }
36 };
Ryan Sleevi 2015/02/10 01:26:49 private: DISALLOW_COPY_AND_ASSIGN(...);
yhirano 2015/02/10 03:14:03 Done.
37
38 class WebSocketStreamCreateTestBase::TestConnectDelegate
39 : public WebSocketStream::ConnectDelegate {
40 public:
41 explicit TestConnectDelegate(WebSocketStreamCreateTestBase* owner)
42 : owner_(owner) {}
43
44 void OnSuccess(scoped_ptr<WebSocketStream> stream) override {
45 stream.swap(owner_->stream_);
46 }
47
48 void OnFailure(const std::string& message) override {
49 owner_->has_failed_ = true;
50 owner_->failure_message_ = message;
51 }
52
53 void OnStartOpeningHandshake(
54 scoped_ptr<WebSocketHandshakeRequestInfo> request) override {
55 // Can be called multiple times (in the case of HTTP auth). Last call
56 // wins.
57 owner_->request_info_ = request.Pass();
58 }
59 void OnFinishOpeningHandshake(
Ryan Sleevi 2015/02/10 01:26:49 nit newline after }
yhirano 2015/02/10 03:14:03 Done.
60 scoped_ptr<WebSocketHandshakeResponseInfo> response) override {
61 if (owner_->response_info_)
62 ADD_FAILURE();
63 owner_->response_info_ = response.Pass();
64 }
65 void OnSSLCertificateError(
Ryan Sleevi 2015/02/10 01:26:49 nit: newline after }
yhirano 2015/02/10 03:14:02 Done.
66 scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks>
67 ssl_error_callbacks,
68 const SSLInfo& ssl_info,
69 bool fatal) override {
70 owner_->ssl_error_callbacks_ = ssl_error_callbacks.Pass();
71 owner_->ssl_info_ = ssl_info;
72 owner_->ssl_fatal_ = fatal;
73 }
74
75 private:
76 WebSocketStreamCreateTestBase* owner_;
77 };
Ryan Sleevi 2015/02/10 01:26:49 DISALLOW_COPY_AND_ASSIGN(...)
yhirano 2015/02/10 03:14:02 Done.
78
79 WebSocketStreamCreateTestBase::WebSocketStreamCreateTestBase()
80 : has_failed_(false), ssl_fatal_(false) {
81 }
82
83 WebSocketStreamCreateTestBase::~WebSocketStreamCreateTestBase() {
84 }
Ryan Sleevi 2015/02/10 01:26:49 git cl format do this? I thought it preferred {} s
yhirano 2015/02/10 03:14:02 Yes, it likes this style.
85
86 void WebSocketStreamCreateTestBase::CreateAndConnectStream(
87 const std::string& socket_url,
88 const std::vector<std::string>& sub_protocols,
89 const std::string& origin,
90 scoped_ptr<base::Timer> timer) {
91 for (size_t i = 0; i < ssl_data_.size(); ++i) {
92 scoped_ptr<SSLSocketDataProvider> ssl_data(ssl_data_[i]);
93 ssl_data_[i] = NULL;
94 url_request_context_host_.AddSSLSocketDataProvider(ssl_data.Pass());
95 }
96 ssl_data_.clear();
Ryan Sleevi 2015/02/10 01:26:48 Doesn't it make more sense to remove line 93 and u
yhirano 2015/02/10 03:14:02 Done.
97 scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate(
98 new TestConnectDelegate(this));
99 WebSocketStream::ConnectDelegate* delegate = connect_delegate.get();
100 scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
101 new DeterministicKeyWebSocketHandshakeStreamCreateHelper(delegate,
102 sub_protocols));
103 stream_request_ = ::net::CreateAndConnectStreamForTesting(
Ryan Sleevi 2015/02/10 01:26:49 You're in net::, no need for ::net:: here
yhirano 2015/02/10 03:14:02 Done.
104 GURL(socket_url), create_helper.Pass(), url::Origin(origin),
105 url_request_context_host_.GetURLRequestContext(), BoundNetLog(),
106 connect_delegate.Pass(),
107 timer ? timer.Pass()
108 : scoped_ptr<base::Timer>(new base::Timer(false, false)));
109 }
110
111 std::vector<HeaderKeyValuePair> WebSocketStreamCreateTestBase::ToVector(
112 const HttpRequestHeaders& headers) {
113 HttpRequestHeaders::Iterator it(headers);
114 std::vector<HeaderKeyValuePair> result;
115 while (it.GetNext())
116 result.push_back(HeaderKeyValuePair(it.name(), it.value()));
117 return result;
118 }
119
120 std::vector<HeaderKeyValuePair> WebSocketStreamCreateTestBase::ToVector(
121 const HttpResponseHeaders& headers) {
122 void* iter = NULL;
123 std::string name, value;
124 std::vector<HeaderKeyValuePair> result;
125 while (headers.EnumerateHeaderLines(&iter, &name, &value))
126 result.push_back(HeaderKeyValuePair(name, value));
127 return result;
128 }
129
130 void WebSocketStreamCreateTestBase::RunUntilIdle() {
131 base::RunLoop().RunUntilIdle();
132 }
133
134 std::vector<std::string> WebSocketStreamCreateTestBase::NoSubProtocols() {
135 return std::vector<std::string>();
136 }
137
138 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698