| 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 #include "modules/websockets/WebSocketChannel.h" | 6 #include "modules/websockets/WebSocketChannel.h" |
| 7 | 7 |
| 8 #include "core/dom/DOMArrayBuffer.h" | 8 #include "core/dom/DOMArrayBuffer.h" |
| 9 #include "core/dom/Document.h" | 9 #include "core/dom/Document.h" |
| 10 #include "core/fileapi/Blob.h" | 10 #include "core/fileapi/Blob.h" |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 { | 343 { |
| 344 connect(); | 344 connect(); |
| 345 { | 345 { |
| 346 InSequence s; | 346 InSequence s; |
| 347 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("foo", 3), 3)); | 347 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("foo", 3), 3)); |
| 348 } | 348 } |
| 349 | 349 |
| 350 handleClient()->didReceiveFlowControl(handle(), 16); | 350 handleClient()->didReceiveFlowControl(handle(), 16); |
| 351 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); | 351 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); |
| 352 | 352 |
| 353 RefPtr<DOMArrayBuffer> fooBuffer = DOMArrayBuffer::create("foo", 3); | 353 RefPtr<DOMArrayBuffer> fooBuffer = DOMArrayBuffer::deprecatedCreateOrCrash("
foo", 3); |
| 354 channel()->send(*fooBuffer, 0, 3); | 354 channel()->send(*fooBuffer, 0, 3); |
| 355 | 355 |
| 356 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); | 356 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
| 357 } | 357 } |
| 358 | 358 |
| 359 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferPartial) | 359 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferPartial) |
| 360 { | 360 { |
| 361 connect(); | 361 connect(); |
| 362 { | 362 { |
| 363 InSequence s; | 363 InSequence s; |
| 364 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("foo", 3), 3)); | 364 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("foo", 3), 3)); |
| 365 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("bar", 3), 3)); | 365 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("bar", 3), 3)); |
| 366 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("baz", 3), 3)); | 366 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("baz", 3), 3)); |
| 367 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("a", 1), 1)); | 367 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("a", 1), 1)); |
| 368 } | 368 } |
| 369 | 369 |
| 370 handleClient()->didReceiveFlowControl(handle(), 16); | 370 handleClient()->didReceiveFlowControl(handle(), 16); |
| 371 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); | 371 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); |
| 372 | 372 |
| 373 RefPtr<DOMArrayBuffer> foobarBuffer = DOMArrayBuffer::create("foobar", 6); | 373 RefPtr<DOMArrayBuffer> foobarBuffer = DOMArrayBuffer::deprecatedCreateOrCras
h("foobar", 6); |
| 374 RefPtr<DOMArrayBuffer> qbazuxBuffer = DOMArrayBuffer::create("qbazux", 6); | 374 RefPtr<DOMArrayBuffer> qbazuxBuffer = DOMArrayBuffer::deprecatedCreateOrCras
h("qbazux", 6); |
| 375 channel()->send(*foobarBuffer, 0, 3); | 375 channel()->send(*foobarBuffer, 0, 3); |
| 376 channel()->send(*foobarBuffer, 3, 3); | 376 channel()->send(*foobarBuffer, 3, 3); |
| 377 channel()->send(*qbazuxBuffer, 1, 3); | 377 channel()->send(*qbazuxBuffer, 1, 3); |
| 378 channel()->send(*qbazuxBuffer, 2, 1); | 378 channel()->send(*qbazuxBuffer, 2, 1); |
| 379 | 379 |
| 380 EXPECT_EQ(10ul, m_sumOfConsumedBufferedAmount); | 380 EXPECT_EQ(10ul, m_sumOfConsumedBufferedAmount); |
| 381 } | 381 } |
| 382 | 382 |
| 383 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferWithNullBytes) | 383 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferWithNullBytes) |
| 384 { | 384 { |
| 385 connect(); | 385 connect(); |
| 386 { | 386 { |
| 387 InSequence s; | 387 InSequence s; |
| 388 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("\0ar", 3), 3)); | 388 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("\0ar", 3), 3)); |
| 389 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("b\0z", 3), 3)); | 389 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("b\0z", 3), 3)); |
| 390 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("qu\0", 3), 3)); | 390 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("qu\0", 3), 3)); |
| 391 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("\0\0\0", 3), 3)); | 391 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me
mEq("\0\0\0", 3), 3)); |
| 392 } | 392 } |
| 393 | 393 |
| 394 handleClient()->didReceiveFlowControl(handle(), 16); | 394 handleClient()->didReceiveFlowControl(handle(), 16); |
| 395 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); | 395 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); |
| 396 | 396 |
| 397 { | 397 { |
| 398 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\0ar", 3); | 398 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("\0ar
", 3); |
| 399 channel()->send(*b, 0, 3); | 399 channel()->send(*b, 0, 3); |
| 400 } | 400 } |
| 401 { | 401 { |
| 402 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("b\0z", 3); | 402 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("b\0z
", 3); |
| 403 channel()->send(*b, 0, 3); | 403 channel()->send(*b, 0, 3); |
| 404 } | 404 } |
| 405 { | 405 { |
| 406 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("qu\0", 3); | 406 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("qu\0
", 3); |
| 407 channel()->send(*b, 0, 3); | 407 channel()->send(*b, 0, 3); |
| 408 } | 408 } |
| 409 { | 409 { |
| 410 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\0\0\0", 3); | 410 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("\0\0
\0", 3); |
| 411 channel()->send(*b, 0, 3); | 411 channel()->send(*b, 0, 3); |
| 412 } | 412 } |
| 413 | 413 |
| 414 EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); | 414 EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); |
| 415 } | 415 } |
| 416 | 416 |
| 417 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonLatin1UTF8) | 417 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonLatin1UTF8) |
| 418 { | 418 { |
| 419 connect(); | 419 connect(); |
| 420 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq(
"\xe7\x8b\x90", 3), 3)); | 420 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq(
"\xe7\x8b\x90", 3), 3)); |
| 421 | 421 |
| 422 handleClient()->didReceiveFlowControl(handle(), 16); | 422 handleClient()->didReceiveFlowControl(handle(), 16); |
| 423 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); | 423 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); |
| 424 | 424 |
| 425 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\xe7\x8b\x90", 3); | 425 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("\xe7\x8b
\x90", 3); |
| 426 channel()->send(*b, 0, 3); | 426 channel()->send(*b, 0, 3); |
| 427 | 427 |
| 428 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); | 428 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
| 429 } | 429 } |
| 430 | 430 |
| 431 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonUTF8) | 431 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonUTF8) |
| 432 { | 432 { |
| 433 connect(); | 433 connect(); |
| 434 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq(
"\x80\xff\xe7", 3), 3)); | 434 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq(
"\x80\xff\xe7", 3), 3)); |
| 435 | 435 |
| 436 handleClient()->didReceiveFlowControl(handle(), 16); | 436 handleClient()->didReceiveFlowControl(handle(), 16); |
| 437 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); | 437 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); |
| 438 | 438 |
| 439 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\x80\xff\xe7", 3); | 439 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("\x80\xff
\xe7", 3); |
| 440 channel()->send(*b, 0, 3); | 440 channel()->send(*b, 0, 3); |
| 441 | 441 |
| 442 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); | 442 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
| 443 } | 443 } |
| 444 | 444 |
| 445 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonLatin1UTF8Continu
ation) | 445 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonLatin1UTF8Continu
ation) |
| 446 { | 446 { |
| 447 connect(); | 447 connect(); |
| 448 Checkpoint checkpoint; | 448 Checkpoint checkpoint; |
| 449 { | 449 { |
| 450 InSequence s; | 450 InSequence s; |
| 451 EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, M
emEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7", 16), 16
)); | 451 EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, M
emEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7", 16), 16
)); |
| 452 EXPECT_CALL(checkpoint, Call(1)); | 452 EXPECT_CALL(checkpoint, Call(1)); |
| 453 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuati
on, MemEq("\x8b\x90", 2), 2)); | 453 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuati
on, MemEq("\x8b\x90", 2), 2)); |
| 454 } | 454 } |
| 455 | 455 |
| 456 handleClient()->didReceiveFlowControl(handle(), 16); | 456 handleClient()->didReceiveFlowControl(handle(), 16); |
| 457 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); | 457 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()
); |
| 458 | 458 |
| 459 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\xe7\x8b\x90\xe7\x8b\x90\
xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90", 18); | 459 RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::deprecatedCreateOrCrash("\xe7\x8b
\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90", 18); |
| 460 channel()->send(*b, 0, 18); | 460 channel()->send(*b, 0, 18); |
| 461 checkpoint.Call(1); | 461 checkpoint.Call(1); |
| 462 | 462 |
| 463 handleClient()->didReceiveFlowControl(handle(), 16); | 463 handleClient()->didReceiveFlowControl(handle(), 16); |
| 464 | 464 |
| 465 EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); | 465 EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); |
| 466 } | 466 } |
| 467 | 467 |
| 468 // FIXME: Add tests for WebSocketChannel::send(PassRefPtr<BlobDataHandle>) | 468 // FIXME: Add tests for WebSocketChannel::send(PassRefPtr<BlobDataHandle>) |
| 469 | 469 |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 EXPECT_CALL(*channelClient(), didError()); | 681 EXPECT_CALL(*channelClient(), didError()); |
| 682 EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHa
ndshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String())); | 682 EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHa
ndshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String())); |
| 683 } | 683 } |
| 684 | 684 |
| 685 channel()->fail("fail message from WebSocket", ErrorMessageLevel, "sourceURL
", 1234); | 685 channel()->fail("fail message from WebSocket", ErrorMessageLevel, "sourceURL
", 1234); |
| 686 } | 686 } |
| 687 | 687 |
| 688 } // namespace | 688 } // namespace |
| 689 | 689 |
| 690 } // namespace blink | 690 } // namespace blink |
| OLD | NEW |