OLD | NEW |
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_websocket_stream.h" | 5 #include "net/spdy/spdy_websocket_stream.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 EventType event_type; | 44 EventType event_type; |
45 SpdyHeaderBlock headers; | 45 SpdyHeaderBlock headers; |
46 int result; | 46 int result; |
47 std::string data; | 47 std::string data; |
48 }; | 48 }; |
49 | 49 |
50 class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate { | 50 class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate { |
51 public: | 51 public: |
52 explicit SpdyWebSocketStreamEventRecorder(const CompletionCallback& callback) | 52 explicit SpdyWebSocketStreamEventRecorder(const CompletionCallback& callback) |
53 : callback_(callback) {} | 53 : callback_(callback) {} |
54 virtual ~SpdyWebSocketStreamEventRecorder() {} | 54 ~SpdyWebSocketStreamEventRecorder() override {} |
55 | 55 |
56 typedef base::Callback<void(SpdyWebSocketStreamEvent*)> StreamEventCallback; | 56 typedef base::Callback<void(SpdyWebSocketStreamEvent*)> StreamEventCallback; |
57 | 57 |
58 void SetOnCreated(const StreamEventCallback& callback) { | 58 void SetOnCreated(const StreamEventCallback& callback) { |
59 on_created_ = callback; | 59 on_created_ = callback; |
60 } | 60 } |
61 void SetOnSentHeaders(const StreamEventCallback& callback) { | 61 void SetOnSentHeaders(const StreamEventCallback& callback) { |
62 on_sent_headers_ = callback; | 62 on_sent_headers_ = callback; |
63 } | 63 } |
64 void SetOnReceivedHeader(const StreamEventCallback& callback) { | 64 void SetOnReceivedHeader(const StreamEventCallback& callback) { |
65 on_received_header_ = callback; | 65 on_received_header_ = callback; |
66 } | 66 } |
67 void SetOnSentData(const StreamEventCallback& callback) { | 67 void SetOnSentData(const StreamEventCallback& callback) { |
68 on_sent_data_ = callback; | 68 on_sent_data_ = callback; |
69 } | 69 } |
70 void SetOnReceivedData(const StreamEventCallback& callback) { | 70 void SetOnReceivedData(const StreamEventCallback& callback) { |
71 on_received_data_ = callback; | 71 on_received_data_ = callback; |
72 } | 72 } |
73 void SetOnClose(const StreamEventCallback& callback) { | 73 void SetOnClose(const StreamEventCallback& callback) { |
74 on_close_ = callback; | 74 on_close_ = callback; |
75 } | 75 } |
76 | 76 |
77 virtual void OnCreatedSpdyStream(int result) override { | 77 void OnCreatedSpdyStream(int result) override { |
78 events_.push_back( | 78 events_.push_back( |
79 SpdyWebSocketStreamEvent(SpdyWebSocketStreamEvent::EVENT_CREATED, | 79 SpdyWebSocketStreamEvent(SpdyWebSocketStreamEvent::EVENT_CREATED, |
80 SpdyHeaderBlock(), | 80 SpdyHeaderBlock(), |
81 result, | 81 result, |
82 std::string())); | 82 std::string())); |
83 if (!on_created_.is_null()) | 83 if (!on_created_.is_null()) |
84 on_created_.Run(&events_.back()); | 84 on_created_.Run(&events_.back()); |
85 } | 85 } |
86 virtual void OnSentSpdyHeaders() override { | 86 void OnSentSpdyHeaders() override { |
87 events_.push_back( | 87 events_.push_back( |
88 SpdyWebSocketStreamEvent(SpdyWebSocketStreamEvent::EVENT_SENT_HEADERS, | 88 SpdyWebSocketStreamEvent(SpdyWebSocketStreamEvent::EVENT_SENT_HEADERS, |
89 SpdyHeaderBlock(), | 89 SpdyHeaderBlock(), |
90 OK, | 90 OK, |
91 std::string())); | 91 std::string())); |
92 if (!on_sent_data_.is_null()) | 92 if (!on_sent_data_.is_null()) |
93 on_sent_data_.Run(&events_.back()); | 93 on_sent_data_.Run(&events_.back()); |
94 } | 94 } |
95 virtual void OnSpdyResponseHeadersUpdated( | 95 void OnSpdyResponseHeadersUpdated( |
96 const SpdyHeaderBlock& response_headers) override { | 96 const SpdyHeaderBlock& response_headers) override { |
97 events_.push_back( | 97 events_.push_back( |
98 SpdyWebSocketStreamEvent( | 98 SpdyWebSocketStreamEvent( |
99 SpdyWebSocketStreamEvent::EVENT_RECEIVED_HEADER, | 99 SpdyWebSocketStreamEvent::EVENT_RECEIVED_HEADER, |
100 response_headers, | 100 response_headers, |
101 OK, | 101 OK, |
102 std::string())); | 102 std::string())); |
103 if (!on_received_header_.is_null()) | 103 if (!on_received_header_.is_null()) |
104 on_received_header_.Run(&events_.back()); | 104 on_received_header_.Run(&events_.back()); |
105 } | 105 } |
106 virtual void OnSentSpdyData(size_t bytes_sent) override { | 106 void OnSentSpdyData(size_t bytes_sent) override { |
107 events_.push_back( | 107 events_.push_back( |
108 SpdyWebSocketStreamEvent( | 108 SpdyWebSocketStreamEvent( |
109 SpdyWebSocketStreamEvent::EVENT_SENT_DATA, | 109 SpdyWebSocketStreamEvent::EVENT_SENT_DATA, |
110 SpdyHeaderBlock(), | 110 SpdyHeaderBlock(), |
111 static_cast<int>(bytes_sent), | 111 static_cast<int>(bytes_sent), |
112 std::string())); | 112 std::string())); |
113 if (!on_sent_data_.is_null()) | 113 if (!on_sent_data_.is_null()) |
114 on_sent_data_.Run(&events_.back()); | 114 on_sent_data_.Run(&events_.back()); |
115 } | 115 } |
116 virtual void OnReceivedSpdyData(scoped_ptr<SpdyBuffer> buffer) override { | 116 void OnReceivedSpdyData(scoped_ptr<SpdyBuffer> buffer) override { |
117 std::string buffer_data; | 117 std::string buffer_data; |
118 size_t buffer_len = 0; | 118 size_t buffer_len = 0; |
119 if (buffer) { | 119 if (buffer) { |
120 buffer_len = buffer->GetRemainingSize(); | 120 buffer_len = buffer->GetRemainingSize(); |
121 buffer_data.append(buffer->GetRemainingData(), buffer_len); | 121 buffer_data.append(buffer->GetRemainingData(), buffer_len); |
122 } | 122 } |
123 events_.push_back( | 123 events_.push_back( |
124 SpdyWebSocketStreamEvent( | 124 SpdyWebSocketStreamEvent( |
125 SpdyWebSocketStreamEvent::EVENT_RECEIVED_DATA, | 125 SpdyWebSocketStreamEvent::EVENT_RECEIVED_DATA, |
126 SpdyHeaderBlock(), | 126 SpdyHeaderBlock(), |
127 buffer_len, | 127 buffer_len, |
128 buffer_data)); | 128 buffer_data)); |
129 if (!on_received_data_.is_null()) | 129 if (!on_received_data_.is_null()) |
130 on_received_data_.Run(&events_.back()); | 130 on_received_data_.Run(&events_.back()); |
131 } | 131 } |
132 virtual void OnCloseSpdyStream() override { | 132 void OnCloseSpdyStream() override { |
133 events_.push_back( | 133 events_.push_back( |
134 SpdyWebSocketStreamEvent( | 134 SpdyWebSocketStreamEvent( |
135 SpdyWebSocketStreamEvent::EVENT_CLOSE, | 135 SpdyWebSocketStreamEvent::EVENT_CLOSE, |
136 SpdyHeaderBlock(), | 136 SpdyHeaderBlock(), |
137 OK, | 137 OK, |
138 std::string())); | 138 std::string())); |
139 if (!on_close_.is_null()) | 139 if (!on_close_.is_null()) |
140 on_close_.Run(&events_.back()); | 140 on_close_.Run(&events_.back()); |
141 if (!callback_.is_null()) | 141 if (!callback_.is_null()) |
142 callback_.Run(OK); | 142 callback_.Run(OK); |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 EXPECT_EQ(OK, events[7].result); | 662 EXPECT_EQ(OK, events[7].result); |
663 | 663 |
664 // EOF close SPDY session. | 664 // EOF close SPDY session. |
665 EXPECT_FALSE( | 665 EXPECT_FALSE( |
666 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); | 666 HasSpdySession(http_session_->spdy_session_pool(), spdy_session_key_)); |
667 EXPECT_TRUE(data.at_read_eof()); | 667 EXPECT_TRUE(data.at_read_eof()); |
668 EXPECT_TRUE(data.at_write_eof()); | 668 EXPECT_TRUE(data.at_write_eof()); |
669 } | 669 } |
670 | 670 |
671 } // namespace net | 671 } // namespace net |
OLD | NEW |