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

Side by Side Diff: third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannelTest.cpp

Issue 1666893003: [ABANDONED] WebSocket Blob receive in the browser process: renderer changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@websocket_blob_receive_host_merged
Patch Set: Created 4 years, 10 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
OLDNEW
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 "modules/websockets/WebSocketChannel.h" 5 #include "modules/websockets/WebSocketChannel.h"
6 6
7 #include "core/dom/DOMArrayBuffer.h" 7 #include "core/dom/DOMArrayBuffer.h"
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/fileapi/Blob.h" 9 #include "core/fileapi/Blob.h"
10 #include "core/frame/ConsoleTypes.h" 10 #include "core/frame/ConsoleTypes.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 { 45 {
46 return new testing::StrictMock<MockWebSocketChannelClient>(); 46 return new testing::StrictMock<MockWebSocketChannelClient>();
47 } 47 }
48 48
49 MockWebSocketChannelClient() { } 49 MockWebSocketChannelClient() { }
50 50
51 ~MockWebSocketChannelClient() override { } 51 ~MockWebSocketChannelClient() override { }
52 52
53 MOCK_METHOD2(didConnect, void(const String&, const String&)); 53 MOCK_METHOD2(didConnect, void(const String&, const String&));
54 MOCK_METHOD1(didReceiveTextMessage, void(const String&)); 54 MOCK_METHOD1(didReceiveTextMessage, void(const String&));
55 void didReceiveBinaryMessage(PassOwnPtr<Vector<char>> payload) override 55 void didReceiveArrayBuffer(PassOwnPtr<Vector<char>> payload) override
56 { 56 {
57 didReceiveBinaryMessageMock(*payload); 57 didReceiveArrayBufferMock(*payload);
58 } 58 }
59 MOCK_METHOD1(didReceiveBinaryMessageMock, void(const Vector<char>&)); 59 MOCK_METHOD1(didReceiveArrayBufferMock, void(const Vector<char>&));
60 void didReceiveBlob(PassRefPtr<BlobDataHandle> blobDataHandle) override
61 {
62 didReceiveBlobMock(*blobDataHandle);
63 }
64 MOCK_METHOD1(didReceiveBlobMock, void(const BlobDataHandle&));
60 MOCK_METHOD0(didError, void()); 65 MOCK_METHOD0(didError, void());
61 MOCK_METHOD1(didConsumeBufferedAmount, void(uint64_t)); 66 MOCK_METHOD1(didConsumeBufferedAmount, void(uint64_t));
62 MOCK_METHOD0(didStartClosingHandshake, void()); 67 MOCK_METHOD0(didStartClosingHandshake, void());
63 MOCK_METHOD3(didClose, void(ClosingHandshakeCompletionStatus, unsigned short , const String&)); 68 MOCK_METHOD3(didClose, void(ClosingHandshakeCompletionStatus, unsigned short , const String&));
64 69
65 DEFINE_INLINE_VIRTUAL_TRACE() 70 DEFINE_INLINE_VIRTUAL_TRACE()
66 { 71 {
67 WebSocketChannelClient::trace(visitor); 72 WebSocketChannelClient::trace(visitor);
68 } 73 }
69 74
70 }; 75 };
71 76
72 class MockWebSocketHandle : public WebSocketHandle { 77 class MockWebSocketHandle : public WebSocketHandle {
73 public: 78 public:
74 static MockWebSocketHandle* create() 79 static MockWebSocketHandle* create()
75 { 80 {
76 return new testing::StrictMock<MockWebSocketHandle>(); 81 return new testing::StrictMock<MockWebSocketHandle>();
77 } 82 }
78 83
79 MockWebSocketHandle() { } 84 MockWebSocketHandle() { }
80 85
81 ~MockWebSocketHandle() override { } 86 ~MockWebSocketHandle() override { }
82 87
83 MOCK_METHOD4(connect, void(const WebURL&, const WebVector<WebString>&, const WebSecurityOrigin&, WebSocketHandleClient*)); 88 MOCK_METHOD4(connect, void(const WebURL&, const WebVector<WebString>&, const WebSecurityOrigin&, WebSocketHandleClient*));
84 MOCK_METHOD4(send, void(bool, WebSocketHandle::MessageType, const char*, siz e_t)); 89 MOCK_METHOD4(send, void(bool, WebSocketHandle::MessageType, const char*, siz e_t));
85 MOCK_METHOD1(flowControl, void(int64_t)); 90 MOCK_METHOD1(flowControl, void(int64_t));
86 MOCK_METHOD2(close, void(unsigned short, const WebString&)); 91 MOCK_METHOD2(close, void(unsigned short, const WebString&));
92 MOCK_METHOD1(changeBinaryType, void(BinaryType));
93 MOCK_METHOD0(confirmBlob, void());
87 }; 94 };
88 95
89 class DocumentWebSocketChannelTest : public ::testing::Test { 96 class DocumentWebSocketChannelTest : public ::testing::Test {
90 public: 97 public:
91 DocumentWebSocketChannelTest() 98 DocumentWebSocketChannelTest()
92 : m_pageHolder(DummyPageHolder::create()) 99 : m_pageHolder(DummyPageHolder::create())
93 , m_channelClient(MockWebSocketChannelClient::create()) 100 , m_channelClient(MockWebSocketChannelClient::create())
94 , m_handle(MockWebSocketHandle::create()) 101 , m_handle(MockWebSocketHandle::create())
95 , m_channel(DocumentWebSocketChannel::create(&m_pageHolder->document(), m_channelClient.get(), String(), 0, handle())) 102 , m_channel(DocumentWebSocketChannel::create(&m_pageHolder->document(), m_channelClient.get(), String(), 0, handle()))
96 , m_sumOfConsumedBufferedAmount(0) 103 , m_sumOfConsumedBufferedAmount(0)
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\x90\xe0", 2); 522 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\x90\xe0", 2);
516 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\xa4", 1); 523 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\xa4", 1);
517 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeC ontinuation, "\x94", 1); 524 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeC ontinuation, "\x94", 1);
518 } 525 }
519 526
520 TEST_F(DocumentWebSocketChannelTest, receiveBinary) 527 TEST_F(DocumentWebSocketChannelTest, receiveBinary)
521 { 528 {
522 connect(); 529 connect();
523 Vector<char> fooVector; 530 Vector<char> fooVector;
524 fooVector.append("FOO", 3); 531 fooVector.append("FOO", 3);
525 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(fooVector)); 532 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(fooVector));
526 533
527 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "FOOx", 3); 534 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "FOOx", 3);
528 } 535 }
529 536
530 TEST_F(DocumentWebSocketChannelTest, receiveBinaryContinuation) 537 TEST_F(DocumentWebSocketChannelTest, receiveBinaryContinuation)
531 { 538 {
532 connect(); 539 connect();
533 Vector<char> bazVector; 540 Vector<char> bazVector;
534 bazVector.append("BAZ", 3); 541 bazVector.append("BAZ", 3);
535 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(bazVector)); 542 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(bazVector));
536 543
537 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Binary, "Bx", 1); 544 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Binary, "Bx", 1);
538 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "Ax", 1); 545 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "Ax", 1);
539 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeC ontinuation, "Zx", 1); 546 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeC ontinuation, "Zx", 1);
540 } 547 }
541 548
542 TEST_F(DocumentWebSocketChannelTest, receiveBinaryWithNullBytes) 549 TEST_F(DocumentWebSocketChannelTest, receiveBinaryWithNullBytes)
543 { 550 {
544 connect(); 551 connect();
545 { 552 {
546 InSequence s; 553 InSequence s;
547 { 554 {
548 Vector<char> v; 555 Vector<char> v;
549 v.append("\0AR", 3); 556 v.append("\0AR", 3);
550 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 557 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
551 } 558 }
552 { 559 {
553 Vector<char> v; 560 Vector<char> v;
554 v.append("B\0Z", 3); 561 v.append("B\0Z", 3);
555 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 562 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
556 } 563 }
557 { 564 {
558 Vector<char> v; 565 Vector<char> v;
559 v.append("QU\0", 3); 566 v.append("QU\0", 3);
560 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 567 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
561 } 568 }
562 { 569 {
563 Vector<char> v; 570 Vector<char> v;
564 v.append("\0\0\0", 3); 571 v.append("\0\0\0", 3);
565 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 572 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
566 } 573 }
567 } 574 }
568 575
569 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\0AR", 3); 576 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\0AR", 3);
570 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "B\0Z", 3); 577 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "B\0Z", 3);
571 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "QU\0", 3); 578 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "QU\0", 3);
572 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\0\0\0", 3); 579 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\0\0\0", 3);
573 } 580 }
574 581
575 TEST_F(DocumentWebSocketChannelTest, receiveBinaryNonLatin1UTF8) 582 TEST_F(DocumentWebSocketChannelTest, receiveBinaryNonLatin1UTF8)
576 { 583 {
577 connect(); 584 connect();
578 Vector<char> v; 585 Vector<char> v;
579 v.append("\xe7\x8b\x90\xe0\xa4\x94", 6); 586 v.append("\xe7\x8b\x90\xe0\xa4\x94", 6);
580 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 587 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
581 588
582 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\xe7\x8b\x90\xe0\xa4\x94", 6); 589 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\xe7\x8b\x90\xe0\xa4\x94", 6);
583 } 590 }
584 591
585 TEST_F(DocumentWebSocketChannelTest, receiveBinaryNonLatin1UTF8Continuation) 592 TEST_F(DocumentWebSocketChannelTest, receiveBinaryNonLatin1UTF8Continuation)
586 { 593 {
587 connect(); 594 connect();
588 Vector<char> v; 595 Vector<char> v;
589 v.append("\xe7\x8b\x90\xe0\xa4\x94", 6); 596 v.append("\xe7\x8b\x90\xe0\xa4\x94", 6);
590 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 597 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
591 598
592 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Binary, "\xe7\x8b", 2); 599 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Binary, "\xe7\x8b", 2);
593 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\x90\xe0", 2); 600 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\x90\xe0", 2);
594 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\xa4", 1); 601 handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageType Continuation, "\xa4", 1);
595 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeC ontinuation, "\x94", 1); 602 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeC ontinuation, "\x94", 1);
596 } 603 }
597 604
598 TEST_F(DocumentWebSocketChannelTest, receiveBinaryNonUTF8) 605 TEST_F(DocumentWebSocketChannelTest, receiveBinaryNonUTF8)
599 { 606 {
600 connect(); 607 connect();
601 Vector<char> v; 608 Vector<char> v;
602 v.append("\x80\xff", 2); 609 v.append("\x80\xff", 2);
603 EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); 610 EXPECT_CALL(*channelClient(), didReceiveArrayBufferMock(v));
604 611
605 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\x80\xff", 2); 612 handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeB inary, "\x80\xff", 2);
606 } 613 }
607 614
608 TEST_F(DocumentWebSocketChannelTest, closeFromBrowser) 615 TEST_F(DocumentWebSocketChannelTest, closeFromBrowser)
609 { 616 {
610 connect(); 617 connect();
611 Checkpoint checkpoint; 618 Checkpoint checkpoint;
612 { 619 {
613 InSequence s; 620 InSequence s;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 EXPECT_CALL(*channelClient(), didError()); 686 EXPECT_CALL(*channelClient(), didError());
680 EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHa ndshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String())); 687 EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHa ndshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String()));
681 } 688 }
682 689
683 channel()->fail("fail message from WebSocket", ErrorMessageLevel, "sourceURL ", 1234); 690 channel()->fail("fail message from WebSocket", ErrorMessageLevel, "sourceURL ", 1234);
684 } 691 }
685 692
686 } // namespace 693 } // namespace
687 694
688 } // namespace blink 695 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698