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

Side by Side Diff: net/spdy/spdy_stream_unittest.cc

Issue 1828203005: Expose SPDY pushes in DevTools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed tests Created 4 years, 8 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
« no previous file with comments | « net/spdy/spdy_stream.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/spdy_stream.h" 5 #include "net/spdy/spdy_stream.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstddef> 9 #include <cstddef>
10 #include <limits> 10 #include <limits>
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 size_t GetNumReads() const { 128 size_t GetNumReads() const {
129 return reads_.size(); 129 return reads_.size();
130 } 130 }
131 131
132 MockWrite* GetWrites() { return writes_.data(); } 132 MockWrite* GetWrites() { return writes_.data(); }
133 133
134 int GetNumWrites() const { 134 int GetNumWrites() const {
135 return writes_.size(); 135 return writes_.size();
136 } 136 }
137 137
138 void ActivatePushStream(SpdySession* session, SpdyStream* stream) {
139 std::unique_ptr<SpdyStream> activated =
140 session->ActivateCreatedStream(stream);
141 activated->set_stream_id(2);
142 session->InsertActivatedStream(std::move(activated));
143 }
144
138 SpdyTestUtil spdy_util_; 145 SpdyTestUtil spdy_util_;
139 SpdySessionDependencies session_deps_; 146 SpdySessionDependencies session_deps_;
140 std::unique_ptr<HttpNetworkSession> session_; 147 std::unique_ptr<HttpNetworkSession> session_;
141 148
142 private: 149 private:
143 // Used by Add{Read,Write}() above. 150 // Used by Add{Read,Write}() above.
144 std::vector<MockWrite> writes_; 151 std::vector<MockWrite> writes_;
145 std::vector<MockRead> reads_; 152 std::vector<MockRead> reads_;
146 int offset_; 153 int offset_;
147 }; 154 };
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), 305 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
299 GetNumWrites()); 306 GetNumWrites());
300 MockConnect connect_data(SYNCHRONOUS, OK); 307 MockConnect connect_data(SYNCHRONOUS, OK);
301 data.set_connect_data(connect_data); 308 data.set_connect_data(connect_data);
302 309
303 session_deps_.socket_factory->AddSocketDataProvider(&data); 310 session_deps_.socket_factory->AddSocketDataProvider(&data);
304 311
305 base::WeakPtr<SpdySession> spdy_session(CreateDefaultSpdySession()); 312 base::WeakPtr<SpdySession> spdy_session(CreateDefaultSpdySession());
306 313
307 // Conjure up a stream. 314 // Conjure up a stream.
308 SpdyStream stream(SPDY_PUSH_STREAM, spdy_session, GURL(), DEFAULT_PRIORITY, 315 SpdyStreamRequest stream_request;
309 SpdySession::GetDefaultInitialWindowSize(kProtoSPDY31), 316 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session,
310 SpdySession::GetDefaultInitialWindowSize(kProtoSPDY31), 317 GURL(), DEFAULT_PRIORITY,
311 BoundNetLog()); 318 BoundNetLog(), CompletionCallback());
312 stream.set_stream_id(2); 319 ASSERT_EQ(OK, result);
313 EXPECT_FALSE(stream.HasUrlFromHeaders()); 320 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream();
321 ActivatePushStream(spdy_session.get(), stream.get());
322
323 EXPECT_FALSE(stream->HasUrlFromHeaders());
314 324
315 // Set required request headers. 325 // Set required request headers.
316 SpdyHeaderBlock request_headers; 326 SpdyHeaderBlock request_headers;
317 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); 327 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers);
318 stream.OnPushPromiseHeadersReceived(request_headers); 328 stream->OnPushPromiseHeadersReceived(request_headers);
319 329
330 base::Time response_time = base::Time::Now();
331 base::TimeTicks first_byte_time = base::TimeTicks::Now();
320 // Send some basic response headers. 332 // Send some basic response headers.
321 SpdyHeaderBlock response; 333 SpdyHeaderBlock response;
322 response[spdy_util_.GetStatusKey()] = "200"; 334 response[spdy_util_.GetStatusKey()] = "200";
323 response[spdy_util_.GetVersionKey()] = "OK"; 335 response[spdy_util_.GetVersionKey()] = "OK";
324 stream.OnInitialResponseHeadersReceived( 336 stream->OnInitialResponseHeadersReceived(response, response_time,
325 response, base::Time::Now(), base::TimeTicks::Now()); 337 first_byte_time);
326 338
327 // And some more headers. 339 // And some more headers.
328 // TODO(baranovich): not valid for HTTP 2. 340 // TODO(baranovich): not valid for HTTP 2.
329 SpdyHeaderBlock headers; 341 SpdyHeaderBlock headers;
330 headers["alpha"] = "beta"; 342 headers["alpha"] = "beta";
331 stream.OnAdditionalResponseHeadersReceived(headers); 343 stream->OnAdditionalResponseHeadersReceived(headers);
332 344
333 EXPECT_TRUE(stream.HasUrlFromHeaders()); 345 EXPECT_TRUE(stream->HasUrlFromHeaders());
334 EXPECT_EQ(kStreamUrl, stream.GetUrlFromHeaders().spec()); 346 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
335 347
336 StreamDelegateDoNothing delegate(stream.GetWeakPtr()); 348 StreamDelegateDoNothing delegate(stream->GetWeakPtr());
337 stream.SetDelegate(&delegate); 349 stream->SetDelegate(&delegate);
350
351 LoadTimingInfo load_timing_info;
352 EXPECT_TRUE(stream->GetLoadTimingInfo(&load_timing_info));
353 EXPECT_EQ(first_byte_time, load_timing_info.push_start);
354 EXPECT_TRUE(load_timing_info.push_end.is_null());
355
356 stream->OnDataReceived(nullptr);
357 LoadTimingInfo load_timing_info2;
358 EXPECT_TRUE(stream->GetLoadTimingInfo(&load_timing_info2));
359 EXPECT_FALSE(load_timing_info2.push_end.is_null());
338 360
339 base::RunLoop().RunUntilIdle(); 361 base::RunLoop().RunUntilIdle();
340 362
341 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 363 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
342 EXPECT_EQ("beta", delegate.GetResponseHeaderValue("alpha")); 364 EXPECT_EQ("beta", delegate.GetResponseHeaderValue("alpha"));
343 365
344 EXPECT_TRUE(spdy_session == NULL); 366 EXPECT_TRUE(spdy_session == NULL);
345 } 367 }
346 368
347 TEST_P(SpdyStreamTest, StreamError) { 369 TEST_P(SpdyStreamTest, StreamError) {
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after
1126 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1148 EXPECT_EQ(response_len, stream->raw_received_bytes());
1127 1149
1128 // FIN 1150 // FIN
1129 data.Resume(); 1151 data.Resume();
1130 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 1152 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose());
1131 } 1153 }
1132 1154
1133 } // namespace test 1155 } // namespace test
1134 1156
1135 } // namespace net 1157 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698