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

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

Issue 10796107: WebSocketFrameChunk should use IOBuffer to hold data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reflect yutak's review Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/websockets/websocket_frame_parser.h" 5 #include "net/websockets/websocket_frame_parser.h"
6 6
7 #include <algorithm>
7 #include <vector> 8 #include <vector>
8 9
9 #include "base/basictypes.h" 10 #include "base/basictypes.h"
10 #include "base/memory/scoped_vector.h" 11 #include "base/memory/scoped_vector.h"
11 #include "base/port.h" 12 #include "base/port.h"
13 #include "net/base/io_buffer.h"
12 #include "net/websockets/websocket_frame.h" 14 #include "net/websockets/websocket_frame.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 16
15 namespace { 17 namespace {
16 18
17 const char kHello[] = "Hello, world!"; 19 const char kHello[] = "Hello, world!";
18 const uint64 kHelloLength = arraysize(kHello) - 1; 20 const uint64 kHelloLength = arraysize(kHello) - 1;
19 const char kHelloFrame[] = "\x81\x0DHello, world!"; 21 const char kHelloFrame[] = "\x81\x0DHello, world!";
20 const uint64 kHelloFrameLength = arraysize(kHelloFrame) - 1; 22 const uint64 kHelloFrameLength = arraysize(kHelloFrame) - 1;
21 const char kMaskedHelloFrame[] = 23 const char kMaskedHelloFrame[] =
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 EXPECT_TRUE(header->final); 61 EXPECT_TRUE(header->final);
60 EXPECT_FALSE(header->reserved1); 62 EXPECT_FALSE(header->reserved1);
61 EXPECT_FALSE(header->reserved2); 63 EXPECT_FALSE(header->reserved2);
62 EXPECT_FALSE(header->reserved3); 64 EXPECT_FALSE(header->reserved3);
63 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode); 65 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
64 EXPECT_FALSE(header->masked); 66 EXPECT_FALSE(header->masked);
65 EXPECT_EQ(kHelloLength, header->payload_length); 67 EXPECT_EQ(kHelloLength, header->payload_length);
66 } 68 }
67 EXPECT_TRUE(frame->final_chunk); 69 EXPECT_TRUE(frame->final_chunk);
68 70
69 std::vector<char> expected_data(kHello, kHello + kHelloLength); 71 std::vector<char> expected_data(kHello, kHello + kHelloLength);
Yuta Kitamura 2012/07/27 08:01:08 expected_data isn't used.
Takashi Toyoshima 2012/07/27 10:28:43 Oops. Thank you for catching this.
70 EXPECT_EQ(expected_data, frame->data); 72 EXPECT_EQ(kHelloLength, frame->size);
73 EXPECT_TRUE(std::equal(kHello, kHello + kHelloLength, frame->data->data()));
71 } 74 }
72 75
73 TEST(WebSocketFrameParserTest, DecodeMaskedFrame) { 76 TEST(WebSocketFrameParserTest, DecodeMaskedFrame) {
74 WebSocketFrameParser parser; 77 WebSocketFrameParser parser;
75 78
76 ScopedVector<WebSocketFrameChunk> frames; 79 ScopedVector<WebSocketFrameChunk> frames;
77 EXPECT_TRUE(parser.Decode(kMaskedHelloFrame, kMaskedHelloFrameLength, 80 EXPECT_TRUE(parser.Decode(kMaskedHelloFrame, kMaskedHelloFrameLength,
78 &frames)); 81 &frames));
79 EXPECT_FALSE(parser.failed()); 82 EXPECT_FALSE(parser.failed());
80 ASSERT_EQ(1u, frames.size()); 83 ASSERT_EQ(1u, frames.size());
81 WebSocketFrameChunk* frame = frames[0]; 84 WebSocketFrameChunk* frame = frames[0];
82 ASSERT_TRUE(frame != NULL); 85 ASSERT_TRUE(frame != NULL);
83 const WebSocketFrameHeader* header = frame->header.get(); 86 const WebSocketFrameHeader* header = frame->header.get();
84 EXPECT_TRUE(header != NULL); 87 EXPECT_TRUE(header != NULL);
85 if (header) { 88 if (header) {
86 EXPECT_TRUE(header->final); 89 EXPECT_TRUE(header->final);
87 EXPECT_FALSE(header->reserved1); 90 EXPECT_FALSE(header->reserved1);
88 EXPECT_FALSE(header->reserved2); 91 EXPECT_FALSE(header->reserved2);
89 EXPECT_FALSE(header->reserved3); 92 EXPECT_FALSE(header->reserved3);
90 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode); 93 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
91 EXPECT_TRUE(header->masked); 94 EXPECT_TRUE(header->masked);
92 EXPECT_EQ(kHelloLength, header->payload_length); 95 EXPECT_EQ(kHelloLength, header->payload_length);
93 } 96 }
94 EXPECT_TRUE(frame->final_chunk); 97 EXPECT_TRUE(frame->final_chunk);
95 98
96 std::vector<char> expected_data(kHello, kHello + kHelloLength); 99 EXPECT_EQ(kHelloLength, frame->size);
97 EXPECT_EQ(expected_data, frame->data); 100 EXPECT_TRUE(std::equal(kHello, kHello + kHelloLength, frame->data->data()));
98 } 101 }
99 102
100 TEST(WebSocketFrameParserTest, DecodeManyFrames) { 103 TEST(WebSocketFrameParserTest, DecodeManyFrames) {
101 struct Input { 104 struct Input {
102 const char* frame; 105 const char* frame;
103 size_t frame_length; 106 size_t frame_length;
104 const char* expected_payload; 107 const char* expected_payload;
105 size_t expected_payload_length; 108 size_t expected_payload_length;
106 }; 109 };
107 static const Input kInputs[] = { 110 static const Input kInputs[] = {
(...skipping 28 matching lines...) Expand all
136 EXPECT_TRUE(parser.Decode(&input.front(), input.size(), &frames)); 139 EXPECT_TRUE(parser.Decode(&input.front(), input.size(), &frames));
137 EXPECT_FALSE(parser.failed()); 140 EXPECT_FALSE(parser.failed());
138 ASSERT_EQ(static_cast<size_t>(kNumInputs), frames.size()); 141 ASSERT_EQ(static_cast<size_t>(kNumInputs), frames.size());
139 142
140 for (int i = 0; i < kNumInputs; ++i) { 143 for (int i = 0; i < kNumInputs; ++i) {
141 WebSocketFrameChunk* frame = frames[i]; 144 WebSocketFrameChunk* frame = frames[i];
142 EXPECT_TRUE(frame != NULL); 145 EXPECT_TRUE(frame != NULL);
143 if (!frame) 146 if (!frame)
144 continue; 147 continue;
145 EXPECT_TRUE(frame->final_chunk); 148 EXPECT_TRUE(frame->final_chunk);
146 std::vector<char> expected_data( 149 EXPECT_EQ(kInputs[i].expected_payload_length, frame->size);
150 EXPECT_TRUE(std::equal(
147 kInputs[i].expected_payload, 151 kInputs[i].expected_payload,
148 kInputs[i].expected_payload + kInputs[i].expected_payload_length); 152 kInputs[i].expected_payload + kInputs[i].expected_payload_length,
149 EXPECT_EQ(expected_data, frame->data); 153 frame->data->data()));
150 154
151 const WebSocketFrameHeader* header = frame->header.get(); 155 const WebSocketFrameHeader* header = frame->header.get();
152 EXPECT_TRUE(header != NULL); 156 EXPECT_TRUE(header != NULL);
153 if (!header) 157 if (!header)
154 continue; 158 continue;
155 EXPECT_TRUE(header->final); 159 EXPECT_TRUE(header->final);
156 EXPECT_FALSE(header->reserved1); 160 EXPECT_FALSE(header->reserved1);
157 EXPECT_FALSE(header->reserved2); 161 EXPECT_FALSE(header->reserved2);
158 EXPECT_FALSE(header->reserved3); 162 EXPECT_FALSE(header->reserved3);
159 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode); 163 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
(...skipping 20 matching lines...) Expand all
180 EXPECT_TRUE(parser.Decode(&input1.front(), input1.size(), &frames1)); 184 EXPECT_TRUE(parser.Decode(&input1.front(), input1.size(), &frames1));
181 EXPECT_FALSE(parser.failed()); 185 EXPECT_FALSE(parser.failed());
182 EXPECT_EQ(1u, frames1.size()); 186 EXPECT_EQ(1u, frames1.size());
183 if (frames1.size() != 1u) 187 if (frames1.size() != 1u)
184 continue; 188 continue;
185 WebSocketFrameChunk* frame1 = frames1[0]; 189 WebSocketFrameChunk* frame1 = frames1[0];
186 EXPECT_TRUE(frame1 != NULL); 190 EXPECT_TRUE(frame1 != NULL);
187 if (!frame1) 191 if (!frame1)
188 continue; 192 continue;
189 EXPECT_FALSE(frame1->final_chunk); 193 EXPECT_FALSE(frame1->final_chunk);
190 EXPECT_EQ(expected1, frame1->data); 194 EXPECT_EQ(cutting_pos, frame1->size);
195 EXPECT_TRUE(std::equal(expected1.data(),
196 expected1.data() + expected1.size(),
197 frame1->data->data()));
191 const WebSocketFrameHeader* header1 = frame1->header.get(); 198 const WebSocketFrameHeader* header1 = frame1->header.get();
192 EXPECT_TRUE(header1 != NULL); 199 EXPECT_TRUE(header1 != NULL);
193 if (!header1) 200 if (!header1)
194 continue; 201 continue;
195 EXPECT_TRUE(header1->final); 202 EXPECT_TRUE(header1->final);
196 EXPECT_FALSE(header1->reserved1); 203 EXPECT_FALSE(header1->reserved1);
197 EXPECT_FALSE(header1->reserved2); 204 EXPECT_FALSE(header1->reserved2);
198 EXPECT_FALSE(header1->reserved3); 205 EXPECT_FALSE(header1->reserved3);
199 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header1->opcode); 206 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header1->opcode);
200 EXPECT_FALSE(header1->masked); 207 EXPECT_FALSE(header1->masked);
201 EXPECT_EQ(kHelloLength, header1->payload_length); 208 EXPECT_EQ(kHelloLength, header1->payload_length);
202 209
203 ScopedVector<WebSocketFrameChunk> frames2; 210 ScopedVector<WebSocketFrameChunk> frames2;
204 EXPECT_TRUE(parser.Decode(&input2.front(), input2.size(), &frames2)); 211 EXPECT_TRUE(parser.Decode(&input2.front(), input2.size(), &frames2));
205 EXPECT_FALSE(parser.failed()); 212 EXPECT_FALSE(parser.failed());
206 EXPECT_EQ(1u, frames2.size()); 213 EXPECT_EQ(1u, frames2.size());
207 if (frames2.size() != 1u) 214 if (frames2.size() != 1u)
208 continue; 215 continue;
209 WebSocketFrameChunk* frame2 = frames2[0]; 216 WebSocketFrameChunk* frame2 = frames2[0];
210 EXPECT_TRUE(frame2 != NULL); 217 EXPECT_TRUE(frame2 != NULL);
211 if (!frame2) 218 if (!frame2)
212 continue; 219 continue;
213 EXPECT_TRUE(frame2->final_chunk); 220 EXPECT_TRUE(frame2->final_chunk);
214 EXPECT_EQ(expected2, frame2->data); 221 EXPECT_EQ(expected2.size(), frame2->size);
222 EXPECT_TRUE(std::equal(expected2.data(),
223 expected2.data() + expected2.size(),
224 frame2->data->data()));
215 const WebSocketFrameHeader* header2 = frame2->header.get(); 225 const WebSocketFrameHeader* header2 = frame2->header.get();
216 EXPECT_TRUE(header2 == NULL); 226 EXPECT_TRUE(header2 == NULL);
217 } 227 }
218 } 228 }
219 229
220 TEST(WebSocketFrameParserTest, DecodePartialMaskedFrame) { 230 TEST(WebSocketFrameParserTest, DecodePartialMaskedFrame) {
221 static const size_t kFrameHeaderSize = 6; 231 static const size_t kFrameHeaderSize = 6;
222 232
223 for (size_t cutting_pos = 0; cutting_pos < kHelloLength; ++cutting_pos) { 233 for (size_t cutting_pos = 0; cutting_pos < kHelloLength; ++cutting_pos) {
224 std::vector<char> input1( 234 std::vector<char> input1(
(...skipping 11 matching lines...) Expand all
236 EXPECT_TRUE(parser.Decode(&input1.front(), input1.size(), &frames1)); 246 EXPECT_TRUE(parser.Decode(&input1.front(), input1.size(), &frames1));
237 EXPECT_FALSE(parser.failed()); 247 EXPECT_FALSE(parser.failed());
238 EXPECT_EQ(1u, frames1.size()); 248 EXPECT_EQ(1u, frames1.size());
239 if (frames1.size() != 1u) 249 if (frames1.size() != 1u)
240 continue; 250 continue;
241 WebSocketFrameChunk* frame1 = frames1[0]; 251 WebSocketFrameChunk* frame1 = frames1[0];
242 EXPECT_TRUE(frame1 != NULL); 252 EXPECT_TRUE(frame1 != NULL);
243 if (!frame1) 253 if (!frame1)
244 continue; 254 continue;
245 EXPECT_FALSE(frame1->final_chunk); 255 EXPECT_FALSE(frame1->final_chunk);
246 EXPECT_EQ(expected1, frame1->data); 256 EXPECT_EQ(expected1.size(), frame1->size);
257 EXPECT_TRUE(std::equal(expected1.data(),
258 expected1.data() + expected1.size(),
259 frame1->data->data()));
247 const WebSocketFrameHeader* header1 = frame1->header.get(); 260 const WebSocketFrameHeader* header1 = frame1->header.get();
248 EXPECT_TRUE(header1 != NULL); 261 EXPECT_TRUE(header1 != NULL);
249 if (!header1) 262 if (!header1)
250 continue; 263 continue;
251 EXPECT_TRUE(header1->final); 264 EXPECT_TRUE(header1->final);
252 EXPECT_FALSE(header1->reserved1); 265 EXPECT_FALSE(header1->reserved1);
253 EXPECT_FALSE(header1->reserved2); 266 EXPECT_FALSE(header1->reserved2);
254 EXPECT_FALSE(header1->reserved3); 267 EXPECT_FALSE(header1->reserved3);
255 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header1->opcode); 268 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header1->opcode);
256 EXPECT_TRUE(header1->masked); 269 EXPECT_TRUE(header1->masked);
257 EXPECT_EQ(kHelloLength, header1->payload_length); 270 EXPECT_EQ(kHelloLength, header1->payload_length);
258 271
259 ScopedVector<WebSocketFrameChunk> frames2; 272 ScopedVector<WebSocketFrameChunk> frames2;
260 EXPECT_TRUE(parser.Decode(&input2.front(), input2.size(), &frames2)); 273 EXPECT_TRUE(parser.Decode(&input2.front(), input2.size(), &frames2));
261 EXPECT_FALSE(parser.failed()); 274 EXPECT_FALSE(parser.failed());
262 EXPECT_EQ(1u, frames2.size()); 275 EXPECT_EQ(1u, frames2.size());
263 if (frames2.size() != 1u) 276 if (frames2.size() != 1u)
264 continue; 277 continue;
265 WebSocketFrameChunk* frame2 = frames2[0]; 278 WebSocketFrameChunk* frame2 = frames2[0];
266 EXPECT_TRUE(frame2 != NULL); 279 EXPECT_TRUE(frame2 != NULL);
267 if (!frame2) 280 if (!frame2)
268 continue; 281 continue;
269 EXPECT_TRUE(frame2->final_chunk); 282 EXPECT_TRUE(frame2->final_chunk);
270 EXPECT_EQ(expected2, frame2->data); 283 EXPECT_EQ(expected2.size(), frame2->size);
284 EXPECT_TRUE(std::equal(expected2.data(),
285 expected2.data() + expected2.size(),
286 frame2->data->data()));
271 const WebSocketFrameHeader* header2 = frame2->header.get(); 287 const WebSocketFrameHeader* header2 = frame2->header.get();
272 EXPECT_TRUE(header2 == NULL); 288 EXPECT_TRUE(header2 == NULL);
273 } 289 }
274 } 290 }
275 291
276 TEST(WebSocketFrameParserTest, DecodeFramesOfVariousLengths) { 292 TEST(WebSocketFrameParserTest, DecodeFramesOfVariousLengths) {
277 for (int i = 0; i < kNumFrameHeaderTests; ++i) { 293 for (int i = 0; i < kNumFrameHeaderTests; ++i) {
278 const char* frame_header = kFrameHeaderTests[i].frame_header; 294 const char* frame_header = kFrameHeaderTests[i].frame_header;
279 size_t frame_header_length = kFrameHeaderTests[i].frame_header_length; 295 size_t frame_header_length = kFrameHeaderTests[i].frame_header_length;
280 uint64 frame_length = kFrameHeaderTests[i].frame_length; 296 uint64 frame_length = kFrameHeaderTests[i].frame_length;
(...skipping 14 matching lines...) Expand all
295 continue; 311 continue;
296 WebSocketFrameChunk* frame = frames[0]; 312 WebSocketFrameChunk* frame = frames[0];
297 EXPECT_TRUE(frame != NULL); 313 EXPECT_TRUE(frame != NULL);
298 if (!frame) 314 if (!frame)
299 continue; 315 continue;
300 if (frame_length == input_payload_size) 316 if (frame_length == input_payload_size)
301 EXPECT_TRUE(frame->final_chunk); 317 EXPECT_TRUE(frame->final_chunk);
302 else 318 else
303 EXPECT_FALSE(frame->final_chunk); 319 EXPECT_FALSE(frame->final_chunk);
304 std::vector<char> expected_payload(input_payload_size, 'a'); 320 std::vector<char> expected_payload(input_payload_size, 'a');
305 EXPECT_EQ(expected_payload, frame->data); 321 EXPECT_EQ(expected_payload.size(), frame->size);
322 EXPECT_TRUE(std::equal(
323 expected_payload.data(),
324 expected_payload.data() + expected_payload.size(),
325 frame->data->data()));
306 const WebSocketFrameHeader* header = frame->header.get(); 326 const WebSocketFrameHeader* header = frame->header.get();
307 EXPECT_TRUE(header != NULL); 327 EXPECT_TRUE(header != NULL);
308 if (!header) 328 if (!header)
309 continue; 329 continue;
310 EXPECT_TRUE(header->final); 330 EXPECT_TRUE(header->final);
311 EXPECT_FALSE(header->reserved1); 331 EXPECT_FALSE(header->reserved1);
312 EXPECT_FALSE(header->reserved2); 332 EXPECT_FALSE(header->reserved2);
313 EXPECT_FALSE(header->reserved3); 333 EXPECT_FALSE(header->reserved3);
314 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode); 334 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
315 EXPECT_FALSE(header->masked); 335 EXPECT_FALSE(header->masked);
(...skipping 23 matching lines...) Expand all
339 if (frames.size() != 1u) 359 if (frames.size() != 1u)
340 continue; 360 continue;
341 WebSocketFrameChunk* frame = frames[0]; 361 WebSocketFrameChunk* frame = frames[0];
342 EXPECT_TRUE(frame != NULL); 362 EXPECT_TRUE(frame != NULL);
343 if (!frame) 363 if (!frame)
344 continue; 364 continue;
345 if (frame_length == 0u) 365 if (frame_length == 0u)
346 EXPECT_TRUE(frame->final_chunk); 366 EXPECT_TRUE(frame->final_chunk);
347 else 367 else
348 EXPECT_FALSE(frame->final_chunk); 368 EXPECT_FALSE(frame->final_chunk);
349 EXPECT_EQ(std::vector<char>(), frame->data); 369 EXPECT_EQ(0u, frame->size);
350 const WebSocketFrameHeader* header = frame->header.get(); 370 const WebSocketFrameHeader* header = frame->header.get();
351 EXPECT_TRUE(header != NULL); 371 EXPECT_TRUE(header != NULL);
352 if (!header) 372 if (!header)
353 continue; 373 continue;
354 EXPECT_TRUE(header->final); 374 EXPECT_TRUE(header->final);
355 EXPECT_FALSE(header->reserved1); 375 EXPECT_FALSE(header->reserved1);
356 EXPECT_FALSE(header->reserved2); 376 EXPECT_FALSE(header->reserved2);
357 EXPECT_FALSE(header->reserved3); 377 EXPECT_FALSE(header->reserved3);
358 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode); 378 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
359 EXPECT_FALSE(header->masked); 379 EXPECT_FALSE(header->masked);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 EXPECT_TRUE(parser.Decode(frame_header, frame_header_length, &frames)); 457 EXPECT_TRUE(parser.Decode(frame_header, frame_header_length, &frames));
438 EXPECT_FALSE(parser.failed()); 458 EXPECT_FALSE(parser.failed());
439 EXPECT_EQ(1u, frames.size()); 459 EXPECT_EQ(1u, frames.size());
440 if (frames.size() != 1u) 460 if (frames.size() != 1u)
441 continue; 461 continue;
442 WebSocketFrameChunk* frame = frames[0]; 462 WebSocketFrameChunk* frame = frames[0];
443 EXPECT_TRUE(frame != NULL); 463 EXPECT_TRUE(frame != NULL);
444 if (!frame) 464 if (!frame)
445 continue; 465 continue;
446 EXPECT_TRUE(frame->final_chunk); 466 EXPECT_TRUE(frame->final_chunk);
447 EXPECT_EQ(std::vector<char>(), frame->data); 467 EXPECT_EQ(0u, frame->size);
448 const WebSocketFrameHeader* header = frame->header.get(); 468 const WebSocketFrameHeader* header = frame->header.get();
449 EXPECT_TRUE(header != NULL); 469 EXPECT_TRUE(header != NULL);
450 if (!header) 470 if (!header)
451 continue; 471 continue;
452 EXPECT_TRUE(header->final); 472 EXPECT_TRUE(header->final);
453 EXPECT_FALSE(header->reserved1); 473 EXPECT_FALSE(header->reserved1);
454 EXPECT_FALSE(header->reserved2); 474 EXPECT_FALSE(header->reserved2);
455 EXPECT_FALSE(header->reserved3); 475 EXPECT_FALSE(header->reserved3);
456 EXPECT_EQ(opcode, header->opcode); 476 EXPECT_EQ(opcode, header->opcode);
457 EXPECT_FALSE(header->masked); 477 EXPECT_FALSE(header->masked);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 EXPECT_TRUE(parser.Decode(frame_header, frame_header_length, &frames)); 513 EXPECT_TRUE(parser.Decode(frame_header, frame_header_length, &frames));
494 EXPECT_FALSE(parser.failed()); 514 EXPECT_FALSE(parser.failed());
495 EXPECT_EQ(1u, frames.size()); 515 EXPECT_EQ(1u, frames.size());
496 if (frames.size() != 1u) 516 if (frames.size() != 1u)
497 continue; 517 continue;
498 WebSocketFrameChunk* frame = frames[0]; 518 WebSocketFrameChunk* frame = frames[0];
499 EXPECT_TRUE(frame != NULL); 519 EXPECT_TRUE(frame != NULL);
500 if (!frame) 520 if (!frame)
501 continue; 521 continue;
502 EXPECT_TRUE(frame->final_chunk); 522 EXPECT_TRUE(frame->final_chunk);
503 EXPECT_EQ(std::vector<char>(), frame->data); 523 EXPECT_EQ(0u, frame->size);
504 const WebSocketFrameHeader* header = frame->header.get(); 524 const WebSocketFrameHeader* header = frame->header.get();
505 EXPECT_TRUE(header != NULL); 525 EXPECT_TRUE(header != NULL);
506 if (!header) 526 if (!header)
507 continue; 527 continue;
508 EXPECT_EQ(final, header->final); 528 EXPECT_EQ(final, header->final);
509 EXPECT_EQ(reserved1, header->reserved1); 529 EXPECT_EQ(reserved1, header->reserved1);
510 EXPECT_EQ(reserved2, header->reserved2); 530 EXPECT_EQ(reserved2, header->reserved2);
511 EXPECT_EQ(reserved3, header->reserved3); 531 EXPECT_EQ(reserved3, header->reserved3);
512 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode); 532 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, header->opcode);
513 EXPECT_FALSE(header->masked); 533 EXPECT_FALSE(header->masked);
514 EXPECT_EQ(0u, header->payload_length); 534 EXPECT_EQ(0u, header->payload_length);
515 } 535 }
516 } 536 }
517 537
518 } // namespace net 538 } // namespace net
OLDNEW
« net/websockets/websocket_frame.h ('K') | « net/websockets/websocket_frame_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698