OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "modules/websockets/WebSocket.h" | 7 #include "modules/websockets/WebSocket.h" |
8 | 8 |
9 #include "bindings/v8/ExceptionState.h" | 9 #include "bindings/v8/ExceptionState.h" |
10 #include "bindings/v8/V8Binding.h" | 10 #include "bindings/v8/V8Binding.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 static PassRefPtrWillBeRawPtr<MockWebSocketChannel> create() | 39 static PassRefPtrWillBeRawPtr<MockWebSocketChannel> create() |
40 { | 40 { |
41 return adoptRefWillBeRefCountedGarbageCollected(new testing::StrictMock<
MockWebSocketChannel>()); | 41 return adoptRefWillBeRefCountedGarbageCollected(new testing::StrictMock<
MockWebSocketChannel>()); |
42 } | 42 } |
43 | 43 |
44 virtual ~MockWebSocketChannel() | 44 virtual ~MockWebSocketChannel() |
45 { | 45 { |
46 } | 46 } |
47 | 47 |
48 MOCK_METHOD2(connect, bool(const KURL&, const String&)); | 48 MOCK_METHOD2(connect, bool(const KURL&, const String&)); |
49 MOCK_METHOD0(subprotocol, String()); | |
50 MOCK_METHOD0(extensions, String()); | |
51 MOCK_METHOD1(send, SendResult(const String&)); | 49 MOCK_METHOD1(send, SendResult(const String&)); |
52 MOCK_METHOD3(send, SendResult(const ArrayBuffer&, unsigned, unsigned)); | 50 MOCK_METHOD3(send, SendResult(const ArrayBuffer&, unsigned, unsigned)); |
53 MOCK_METHOD1(send, SendResult(PassRefPtr<BlobDataHandle>)); | 51 MOCK_METHOD1(send, SendResult(PassRefPtr<BlobDataHandle>)); |
54 MOCK_METHOD1(send, SendResult(PassOwnPtr<Vector<char> >)); | 52 MOCK_METHOD1(send, SendResult(PassOwnPtr<Vector<char> >)); |
55 MOCK_CONST_METHOD0(bufferedAmount, unsigned long()); | 53 MOCK_CONST_METHOD0(bufferedAmount, unsigned long()); |
56 MOCK_METHOD2(close, void(int, const String&)); | 54 MOCK_METHOD2(close, void(int, const String&)); |
57 MOCK_METHOD4(fail, void(const String&, MessageLevel, const String&, unsigned
)); | 55 MOCK_METHOD4(fail, void(const String&, MessageLevel, const String&, unsigned
)); |
58 MOCK_METHOD0(disconnect, void()); | 56 MOCK_METHOD0(disconnect, void()); |
59 MOCK_METHOD0(suspend, void()); | 57 MOCK_METHOD0(suspend, void()); |
60 MOCK_METHOD0(resume, void()); | 58 MOCK_METHOD0(resume, void()); |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 } | 262 } |
265 | 263 |
266 TEST_F(WebSocketTest, connectSuccess) | 264 TEST_F(WebSocketTest, connectSuccess) |
267 { | 265 { |
268 Vector<String> subprotocols; | 266 Vector<String> subprotocols; |
269 subprotocols.append("aa"); | 267 subprotocols.append("aa"); |
270 subprotocols.append("bb"); | 268 subprotocols.append("bb"); |
271 { | 269 { |
272 InSequence s; | 270 InSequence s; |
273 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
("aa, bb"))).WillOnce(Return(true)); | 271 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
("aa, bb"))).WillOnce(Return(true)); |
274 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String("bb"))); | |
275 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String("cc"))); | |
276 } | 272 } |
277 m_websocket->connect("ws://example.com/", subprotocols, m_exceptionState); | 273 m_websocket->connect("ws://example.com/", subprotocols, m_exceptionState); |
278 | 274 |
279 EXPECT_FALSE(m_exceptionState.hadException()); | 275 EXPECT_FALSE(m_exceptionState.hadException()); |
280 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 276 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
281 | 277 |
282 m_websocket->didConnect(); | 278 m_websocket->didConnect("bb", "cc"); |
283 | 279 |
284 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 280 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
285 EXPECT_EQ("bb", m_websocket->protocol()); | 281 EXPECT_EQ("bb", m_websocket->protocol()); |
286 EXPECT_EQ("cc", m_websocket->extensions()); | 282 EXPECT_EQ("cc", m_websocket->extensions()); |
287 } | 283 } |
288 | 284 |
289 TEST_F(WebSocketTest, didClose) | 285 TEST_F(WebSocketTest, didClose) |
290 { | 286 { |
291 { | 287 { |
292 InSequence s; | 288 InSequence s; |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 | 358 |
363 EXPECT_FALSE(m_exceptionState.hadException()); | 359 EXPECT_FALSE(m_exceptionState.hadException()); |
364 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 360 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
365 } | 361 } |
366 | 362 |
367 TEST_F(WebSocketTest, close) | 363 TEST_F(WebSocketTest, close) |
368 { | 364 { |
369 { | 365 { |
370 InSequence s; | 366 InSequence s; |
371 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 367 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
372 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
373 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
374 EXPECT_CALL(channel(), close(3005, String("bye"))); | 368 EXPECT_CALL(channel(), close(3005, String("bye"))); |
375 } | 369 } |
376 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 370 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
377 | 371 |
378 EXPECT_FALSE(m_exceptionState.hadException()); | 372 EXPECT_FALSE(m_exceptionState.hadException()); |
379 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 373 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
380 | 374 |
381 m_websocket->didConnect(); | 375 m_websocket->didConnect("", ""); |
382 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 376 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
383 m_websocket->close(3005, "bye", m_exceptionState); | 377 m_websocket->close(3005, "bye", m_exceptionState); |
384 | 378 |
385 EXPECT_FALSE(m_exceptionState.hadException()); | 379 EXPECT_FALSE(m_exceptionState.hadException()); |
386 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 380 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
387 } | 381 } |
388 | 382 |
389 TEST_F(WebSocketTest, closeWithoutReason) | 383 TEST_F(WebSocketTest, closeWithoutReason) |
390 { | 384 { |
391 { | 385 { |
392 InSequence s; | 386 InSequence s; |
393 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 387 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
394 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
395 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
396 EXPECT_CALL(channel(), close(3005, String())); | 388 EXPECT_CALL(channel(), close(3005, String())); |
397 } | 389 } |
398 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 390 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
399 | 391 |
400 EXPECT_FALSE(m_exceptionState.hadException()); | 392 EXPECT_FALSE(m_exceptionState.hadException()); |
401 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 393 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
402 | 394 |
403 m_websocket->didConnect(); | 395 m_websocket->didConnect("", ""); |
404 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 396 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
405 m_websocket->close(3005, m_exceptionState); | 397 m_websocket->close(3005, m_exceptionState); |
406 | 398 |
407 EXPECT_FALSE(m_exceptionState.hadException()); | 399 EXPECT_FALSE(m_exceptionState.hadException()); |
408 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 400 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
409 } | 401 } |
410 | 402 |
411 TEST_F(WebSocketTest, closeWithoutCodeAndReason) | 403 TEST_F(WebSocketTest, closeWithoutCodeAndReason) |
412 { | 404 { |
413 { | 405 { |
414 InSequence s; | 406 InSequence s; |
415 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 407 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
416 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
417 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
418 EXPECT_CALL(channel(), close(-1, String())); | 408 EXPECT_CALL(channel(), close(-1, String())); |
419 } | 409 } |
420 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 410 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
421 | 411 |
422 EXPECT_FALSE(m_exceptionState.hadException()); | 412 EXPECT_FALSE(m_exceptionState.hadException()); |
423 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 413 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
424 | 414 |
425 m_websocket->didConnect(); | 415 m_websocket->didConnect("", ""); |
426 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 416 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
427 m_websocket->close(m_exceptionState); | 417 m_websocket->close(m_exceptionState); |
428 | 418 |
429 EXPECT_FALSE(m_exceptionState.hadException()); | 419 EXPECT_FALSE(m_exceptionState.hadException()); |
430 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 420 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
431 } | 421 } |
432 | 422 |
433 TEST_F(WebSocketTest, closeWhenClosing) | 423 TEST_F(WebSocketTest, closeWhenClosing) |
434 { | 424 { |
435 { | 425 { |
436 InSequence s; | 426 InSequence s; |
437 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 427 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
438 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
439 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
440 EXPECT_CALL(channel(), close(-1, String())); | 428 EXPECT_CALL(channel(), close(-1, String())); |
441 } | 429 } |
442 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 430 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
443 | 431 |
444 EXPECT_FALSE(m_exceptionState.hadException()); | 432 EXPECT_FALSE(m_exceptionState.hadException()); |
445 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 433 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
446 | 434 |
447 m_websocket->didConnect(); | 435 m_websocket->didConnect("", ""); |
448 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 436 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
449 m_websocket->close(m_exceptionState); | 437 m_websocket->close(m_exceptionState); |
450 EXPECT_FALSE(m_exceptionState.hadException()); | 438 EXPECT_FALSE(m_exceptionState.hadException()); |
451 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 439 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
452 | 440 |
453 m_websocket->close(m_exceptionState); | 441 m_websocket->close(m_exceptionState); |
454 | 442 |
455 EXPECT_FALSE(m_exceptionState.hadException()); | 443 EXPECT_FALSE(m_exceptionState.hadException()); |
456 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 444 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
457 } | 445 } |
458 | 446 |
459 TEST_F(WebSocketTest, closeWhenClosed) | 447 TEST_F(WebSocketTest, closeWhenClosed) |
460 { | 448 { |
461 { | 449 { |
462 InSequence s; | 450 InSequence s; |
463 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 451 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
464 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
465 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
466 EXPECT_CALL(channel(), close(-1, String())); | 452 EXPECT_CALL(channel(), close(-1, String())); |
467 EXPECT_CALL(channel(), disconnect()); | 453 EXPECT_CALL(channel(), disconnect()); |
468 } | 454 } |
469 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 455 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
470 | 456 |
471 EXPECT_FALSE(m_exceptionState.hadException()); | 457 EXPECT_FALSE(m_exceptionState.hadException()); |
472 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 458 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
473 | 459 |
474 m_websocket->didConnect(); | 460 m_websocket->didConnect("", ""); |
475 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 461 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
476 m_websocket->close(m_exceptionState); | 462 m_websocket->close(m_exceptionState); |
477 EXPECT_FALSE(m_exceptionState.hadException()); | 463 EXPECT_FALSE(m_exceptionState.hadException()); |
478 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); | 464 EXPECT_EQ(WebSocket::CLOSING, m_websocket->readyState()); |
479 | 465 |
480 m_websocket->didClose(0, WebSocketChannelClient::ClosingHandshakeComplete, 1
000, String()); | 466 m_websocket->didClose(0, WebSocketChannelClient::ClosingHandshakeComplete, 1
000, String()); |
481 EXPECT_EQ(WebSocket::CLOSED, m_websocket->readyState()); | 467 EXPECT_EQ(WebSocket::CLOSED, m_websocket->readyState()); |
482 m_websocket->close(m_exceptionState); | 468 m_websocket->close(m_exceptionState); |
483 | 469 |
484 EXPECT_FALSE(m_exceptionState.hadException()); | 470 EXPECT_FALSE(m_exceptionState.hadException()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 | 530 |
545 EXPECT_FALSE(m_exceptionState.hadException()); | 531 EXPECT_FALSE(m_exceptionState.hadException()); |
546 EXPECT_EQ(WebSocket::CLOSED, m_websocket->readyState()); | 532 EXPECT_EQ(WebSocket::CLOSED, m_websocket->readyState()); |
547 } | 533 } |
548 | 534 |
549 TEST_F(WebSocketTest, sendStringSuccess) | 535 TEST_F(WebSocketTest, sendStringSuccess) |
550 { | 536 { |
551 { | 537 { |
552 InSequence s; | 538 InSequence s; |
553 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 539 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
554 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
555 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
556 EXPECT_CALL(channel(), send(String("hello"))).WillOnce(Return(WebSocketC
hannel::SendSuccess)); | 540 EXPECT_CALL(channel(), send(String("hello"))).WillOnce(Return(WebSocketC
hannel::SendSuccess)); |
557 } | 541 } |
558 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 542 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
559 | 543 |
560 EXPECT_FALSE(m_exceptionState.hadException()); | 544 EXPECT_FALSE(m_exceptionState.hadException()); |
561 | 545 |
562 m_websocket->didConnect(); | 546 m_websocket->didConnect("", ""); |
563 m_websocket->send("hello", m_exceptionState); | 547 m_websocket->send("hello", m_exceptionState); |
564 | 548 |
565 EXPECT_FALSE(m_exceptionState.hadException()); | 549 EXPECT_FALSE(m_exceptionState.hadException()); |
566 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 550 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
567 } | 551 } |
568 | 552 |
569 TEST_F(WebSocketTest, sendStringFail) | 553 TEST_F(WebSocketTest, sendStringFail) |
570 { | 554 { |
571 { | 555 { |
572 InSequence s; | 556 InSequence s; |
573 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 557 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
574 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
575 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
576 EXPECT_CALL(channel(), send(String("hello"))).WillOnce(Return(WebSocketC
hannel::SendFail)); | 558 EXPECT_CALL(channel(), send(String("hello"))).WillOnce(Return(WebSocketC
hannel::SendFail)); |
577 } | 559 } |
578 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 560 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
579 | 561 |
580 EXPECT_FALSE(m_exceptionState.hadException()); | 562 EXPECT_FALSE(m_exceptionState.hadException()); |
581 | 563 |
582 m_websocket->didConnect(); | 564 m_websocket->didConnect("", ""); |
583 m_websocket->send("hello", m_exceptionState); | 565 m_websocket->send("hello", m_exceptionState); |
584 | 566 |
585 EXPECT_FALSE(m_exceptionState.hadException()); | 567 EXPECT_FALSE(m_exceptionState.hadException()); |
586 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 568 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
587 } | 569 } |
588 | 570 |
589 TEST_F(WebSocketTest, sendStringInvalidMessage) | 571 TEST_F(WebSocketTest, sendStringInvalidMessage) |
590 { | 572 { |
591 { | 573 { |
592 InSequence s; | 574 InSequence s; |
593 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 575 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
594 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
595 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
596 EXPECT_CALL(channel(), send(String("hello"))).WillOnce(Return(WebSocketC
hannel::InvalidMessage)); | 576 EXPECT_CALL(channel(), send(String("hello"))).WillOnce(Return(WebSocketC
hannel::InvalidMessage)); |
597 } | 577 } |
598 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 578 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
599 | 579 |
600 EXPECT_FALSE(m_exceptionState.hadException()); | 580 EXPECT_FALSE(m_exceptionState.hadException()); |
601 | 581 |
602 m_websocket->didConnect(); | 582 m_websocket->didConnect("", ""); |
603 m_websocket->send("hello", m_exceptionState); | 583 m_websocket->send("hello", m_exceptionState); |
604 | 584 |
605 EXPECT_TRUE(m_exceptionState.hadException()); | 585 EXPECT_TRUE(m_exceptionState.hadException()); |
606 EXPECT_EQ(SyntaxError, m_exceptionState.code()); | 586 EXPECT_EQ(SyntaxError, m_exceptionState.code()); |
607 EXPECT_EQ("The message contains invalid characters.", m_exceptionState.messa
ge()); | 587 EXPECT_EQ("The message contains invalid characters.", m_exceptionState.messa
ge()); |
608 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 588 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
609 } | 589 } |
610 | 590 |
611 TEST_F(WebSocketTest, sendArrayBufferWhenConnecting) | 591 TEST_F(WebSocketTest, sendArrayBufferWhenConnecting) |
612 { | 592 { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 EXPECT_FALSE(m_exceptionState.hadException()); | 650 EXPECT_FALSE(m_exceptionState.hadException()); |
671 EXPECT_EQ(WebSocket::CLOSED, m_websocket->readyState()); | 651 EXPECT_EQ(WebSocket::CLOSED, m_websocket->readyState()); |
672 } | 652 } |
673 | 653 |
674 TEST_F(WebSocketTest, sendArrayBufferSuccess) | 654 TEST_F(WebSocketTest, sendArrayBufferSuccess) |
675 { | 655 { |
676 RefPtr<ArrayBufferView> view = Uint8Array::create(8); | 656 RefPtr<ArrayBufferView> view = Uint8Array::create(8); |
677 { | 657 { |
678 InSequence s; | 658 InSequence s; |
679 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 659 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
680 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
681 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
682 EXPECT_CALL(channel(), send(Ref(*view->buffer()), 0, 8)).WillOnce(Return
(WebSocketChannel::SendSuccess)); | 660 EXPECT_CALL(channel(), send(Ref(*view->buffer()), 0, 8)).WillOnce(Return
(WebSocketChannel::SendSuccess)); |
683 } | 661 } |
684 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 662 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
685 | 663 |
686 EXPECT_FALSE(m_exceptionState.hadException()); | 664 EXPECT_FALSE(m_exceptionState.hadException()); |
687 | 665 |
688 m_websocket->didConnect(); | 666 m_websocket->didConnect("", ""); |
689 m_websocket->send(view->buffer().get(), m_exceptionState); | 667 m_websocket->send(view->buffer().get(), m_exceptionState); |
690 | 668 |
691 EXPECT_FALSE(m_exceptionState.hadException()); | 669 EXPECT_FALSE(m_exceptionState.hadException()); |
692 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 670 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
693 } | 671 } |
694 | 672 |
695 TEST_F(WebSocketTest, sendArrayBufferFail) | 673 TEST_F(WebSocketTest, sendArrayBufferFail) |
696 { | 674 { |
697 RefPtr<ArrayBufferView> view = Uint8Array::create(8); | 675 RefPtr<ArrayBufferView> view = Uint8Array::create(8); |
698 { | 676 { |
699 InSequence s; | 677 InSequence s; |
700 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 678 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
701 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
702 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
703 EXPECT_CALL(channel(), send(Ref(*view->buffer()), 0, 8)).WillOnce(Return
(WebSocketChannel::SendFail)); | 679 EXPECT_CALL(channel(), send(Ref(*view->buffer()), 0, 8)).WillOnce(Return
(WebSocketChannel::SendFail)); |
704 } | 680 } |
705 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 681 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
706 | 682 |
707 EXPECT_FALSE(m_exceptionState.hadException()); | 683 EXPECT_FALSE(m_exceptionState.hadException()); |
708 | 684 |
709 m_websocket->didConnect(); | 685 m_websocket->didConnect("", ""); |
710 m_websocket->send(view->buffer().get(), m_exceptionState); | 686 m_websocket->send(view->buffer().get(), m_exceptionState); |
711 | 687 |
712 EXPECT_FALSE(m_exceptionState.hadException()); | 688 EXPECT_FALSE(m_exceptionState.hadException()); |
713 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 689 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
714 } | 690 } |
715 | 691 |
716 TEST_F(WebSocketTest, sendArrayBufferInvalidMessage) | 692 TEST_F(WebSocketTest, sendArrayBufferInvalidMessage) |
717 { | 693 { |
718 RefPtr<ArrayBufferView> view = Uint8Array::create(8); | 694 RefPtr<ArrayBufferView> view = Uint8Array::create(8); |
719 { | 695 { |
720 InSequence s; | 696 InSequence s; |
721 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); | 697 EXPECT_CALL(channel(), connect(KURL(KURL(), "ws://example.com/"), String
())).WillOnce(Return(true)); |
722 EXPECT_CALL(channel(), subprotocol()).WillOnce(Return(String())); | |
723 EXPECT_CALL(channel(), extensions()).WillOnce(Return(String())); | |
724 EXPECT_CALL(channel(), send(Ref(*view->buffer()), 0, 8)).WillOnce(Return
(WebSocketChannel::InvalidMessage)); | 698 EXPECT_CALL(channel(), send(Ref(*view->buffer()), 0, 8)).WillOnce(Return
(WebSocketChannel::InvalidMessage)); |
725 } | 699 } |
726 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); | 700 m_websocket->connect("ws://example.com/", Vector<String>(), m_exceptionState
); |
727 | 701 |
728 EXPECT_FALSE(m_exceptionState.hadException()); | 702 EXPECT_FALSE(m_exceptionState.hadException()); |
729 | 703 |
730 m_websocket->didConnect(); | 704 m_websocket->didConnect("", ""); |
731 m_websocket->send(view->buffer().get(), m_exceptionState); | 705 m_websocket->send(view->buffer().get(), m_exceptionState); |
732 | 706 |
733 EXPECT_TRUE(m_exceptionState.hadException()); | 707 EXPECT_TRUE(m_exceptionState.hadException()); |
734 EXPECT_EQ(SyntaxError, m_exceptionState.code()); | 708 EXPECT_EQ(SyntaxError, m_exceptionState.code()); |
735 EXPECT_EQ("The message contains invalid characters.", m_exceptionState.messa
ge()); | 709 EXPECT_EQ("The message contains invalid characters.", m_exceptionState.messa
ge()); |
736 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); | 710 EXPECT_EQ(WebSocket::OPEN, m_websocket->readyState()); |
737 } | 711 } |
738 | 712 |
739 // FIXME: We should have Blob tests here. | 713 // FIXME: We should have Blob tests here. |
740 // We can't create a Blob because the blob registration cannot be mocked yet. | 714 // We can't create a Blob because the blob registration cannot be mocked yet. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 EXPECT_EQ(InvalidAccessError, m_exceptionState.code()); | 785 EXPECT_EQ(InvalidAccessError, m_exceptionState.code()); |
812 EXPECT_EQ(String::format("The code must be either 1000, or between 3000 and
4999. %d is neither.", GetParam()), m_exceptionState.message()); | 786 EXPECT_EQ(String::format("The code must be either 1000, or between 3000 and
4999. %d is neither.", GetParam()), m_exceptionState.message()); |
813 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); | 787 EXPECT_EQ(WebSocket::CONNECTING, m_websocket->readyState()); |
814 } | 788 } |
815 | 789 |
816 INSTANTIATE_TEST_CASE_P(WebSocketInvalidClosingCode, WebSocketInvalidClosingCode
Test, ::testing::Values(0, 1, 998, 999, 1001, 2999, 5000, 9999, 65535)); | 790 INSTANTIATE_TEST_CASE_P(WebSocketInvalidClosingCode, WebSocketInvalidClosingCode
Test, ::testing::Values(0, 1, 998, 999, 1001, 2999, 5000, 9999, 65535)); |
817 | 791 |
818 } // namespace | 792 } // namespace |
819 | 793 |
820 } // namespace WebCore | 794 } // namespace WebCore |
OLD | NEW |