OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/quic/core/quic_client_promised_info.h" | 5 #include "net/quic/core/quic_client_promised_info.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "net/quic/core/spdy_utils.h" | 10 #include "net/quic/core/spdy_utils.h" |
11 #include "net/quic/test_tools/crypto_test_utils.h" | 11 #include "net/quic/test_tools/crypto_test_utils.h" |
12 #include "net/quic/test_tools/quic_client_promised_info_peer.h" | 12 #include "net/quic/test_tools/quic_client_promised_info_peer.h" |
13 #include "net/test/gtest_util.h" | 13 #include "net/test/gtest_util.h" |
14 #include "net/tools/quic/quic_client_session.h" | 14 #include "net/tools/quic/quic_client_session.h" |
| 15 #include "net/tools/quic/test_tools/push_promise_delegate.h" |
15 | 16 |
16 using std::string; | 17 using std::string; |
17 using testing::StrictMock; | 18 using testing::StrictMock; |
18 | 19 |
19 namespace net { | 20 namespace net { |
20 namespace test { | 21 namespace test { |
21 namespace { | 22 namespace { |
22 | 23 |
23 class MockQuicClientSession : public QuicClientSession { | 24 class MockQuicClientSession : public QuicClientSession { |
24 public: | 25 public: |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 | 79 |
79 client_request_ = push_promise_.Clone(); | 80 client_request_ = push_promise_.Clone(); |
80 } | 81 } |
81 | 82 |
82 class StreamVisitor : public QuicSpdyClientStream::Visitor { | 83 class StreamVisitor : public QuicSpdyClientStream::Visitor { |
83 void OnClose(QuicSpdyStream* stream) override { | 84 void OnClose(QuicSpdyStream* stream) override { |
84 DVLOG(1) << "stream " << stream->id(); | 85 DVLOG(1) << "stream " << stream->id(); |
85 } | 86 } |
86 }; | 87 }; |
87 | 88 |
88 class PushPromiseDelegate : public QuicClientPushPromiseIndex::Delegate { | |
89 public: | |
90 explicit PushPromiseDelegate(bool match) | |
91 : match_(match), | |
92 rendezvous_fired_(false), | |
93 rendezvous_stream_(nullptr) {} | |
94 | |
95 bool CheckVary(const SpdyHeaderBlock& client_request, | |
96 const SpdyHeaderBlock& promise_request, | |
97 const SpdyHeaderBlock& promise_response) override { | |
98 DVLOG(1) << "match " << match_; | |
99 return match_; | |
100 } | |
101 | |
102 void OnRendezvousResult(QuicSpdyStream* stream) override { | |
103 rendezvous_fired_ = true; | |
104 rendezvous_stream_ = stream; | |
105 } | |
106 | |
107 QuicSpdyStream* rendezvous_stream() { return rendezvous_stream_; } | |
108 bool rendezvous_fired() { return rendezvous_fired_; } | |
109 | |
110 private: | |
111 bool match_; | |
112 bool rendezvous_fired_; | |
113 QuicSpdyStream* rendezvous_stream_; | |
114 }; | |
115 | |
116 void ReceivePromise(QuicStreamId id) { | 89 void ReceivePromise(QuicStreamId id) { |
117 auto headers = AsHeaderList(push_promise_); | 90 auto headers = AsHeaderList(push_promise_); |
118 stream_->OnPromiseHeaderList(id, headers.uncompressed_header_bytes(), | 91 stream_->OnPromiseHeaderList(id, headers.uncompressed_header_bytes(), |
119 headers); | 92 headers); |
120 } | 93 } |
121 | 94 |
122 MockQuicConnectionHelper helper_; | 95 MockQuicConnectionHelper helper_; |
123 MockAlarmFactory alarm_factory_; | 96 MockAlarmFactory alarm_factory_; |
124 StrictMock<MockQuicConnection>* connection_; | 97 StrictMock<MockQuicConnection>* connection_; |
125 QuicClientPushPromiseIndex push_promise_index_; | 98 QuicClientPushPromiseIndex push_promise_index_; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 EXPECT_FALSE(delegate.rendezvous_fired()); | 306 EXPECT_FALSE(delegate.rendezvous_fired()); |
334 EXPECT_EQ(delegate.rendezvous_stream(), nullptr); | 307 EXPECT_EQ(delegate.rendezvous_stream(), nullptr); |
335 | 308 |
336 // Promise is gone | 309 // Promise is gone |
337 EXPECT_EQ(session_.GetPromisedById(promise_id_), nullptr); | 310 EXPECT_EQ(session_.GetPromisedById(promise_id_), nullptr); |
338 } | 311 } |
339 | 312 |
340 } // namespace | 313 } // namespace |
341 } // namespace test | 314 } // namespace test |
342 } // namespace net | 315 } // namespace net |
OLD | NEW |