| 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 |