| 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 "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/testing/DummyPageHolder.h" | 10 #include "core/testing/DummyPageHolder.h" |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 InSequence s; | 270 InSequence s; |
| 271 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 271 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 272 MemEq("foo", 3), 3)); | 272 MemEq("foo", 3), 3)); |
| 273 } | 273 } |
| 274 | 274 |
| 275 handleClient()->didReceiveFlowControl(handle(), 16); | 275 handleClient()->didReceiveFlowControl(handle(), 16); |
| 276 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); | 276 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
| 277 | 277 |
| 278 Vector<char> fooVector; | 278 Vector<char> fooVector; |
| 279 fooVector.append("foo", 3); | 279 fooVector.append("foo", 3); |
| 280 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(fooVector)); | 280 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(fooVector)); |
| 281 | 281 |
| 282 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); | 282 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
| 283 } | 283 } |
| 284 | 284 |
| 285 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorWithNullBytes) { | 285 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorWithNullBytes) { |
| 286 connect(); | 286 connect(); |
| 287 { | 287 { |
| 288 InSequence s; | 288 InSequence s; |
| 289 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 289 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 290 MemEq("\0ar", 3), 3)); | 290 MemEq("\0ar", 3), 3)); |
| 291 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 291 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 292 MemEq("b\0z", 3), 3)); | 292 MemEq("b\0z", 3), 3)); |
| 293 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 293 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 294 MemEq("qu\0", 3), 3)); | 294 MemEq("qu\0", 3), 3)); |
| 295 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 295 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 296 MemEq("\0\0\0", 3), 3)); | 296 MemEq("\0\0\0", 3), 3)); |
| 297 } | 297 } |
| 298 | 298 |
| 299 handleClient()->didReceiveFlowControl(handle(), 16); | 299 handleClient()->didReceiveFlowControl(handle(), 16); |
| 300 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); | 300 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
| 301 | 301 |
| 302 { | 302 { |
| 303 Vector<char> v; | 303 Vector<char> v; |
| 304 v.append("\0ar", 3); | 304 v.append("\0ar", 3); |
| 305 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 305 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 306 } | 306 } |
| 307 { | 307 { |
| 308 Vector<char> v; | 308 Vector<char> v; |
| 309 v.append("b\0z", 3); | 309 v.append("b\0z", 3); |
| 310 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 310 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 311 } | 311 } |
| 312 { | 312 { |
| 313 Vector<char> v; | 313 Vector<char> v; |
| 314 v.append("qu\0", 3); | 314 v.append("qu\0", 3); |
| 315 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 315 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 316 } | 316 } |
| 317 { | 317 { |
| 318 Vector<char> v; | 318 Vector<char> v; |
| 319 v.append("\0\0\0", 3); | 319 v.append("\0\0\0", 3); |
| 320 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 320 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 321 } | 321 } |
| 322 | 322 |
| 323 EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); | 323 EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); |
| 324 } | 324 } |
| 325 | 325 |
| 326 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8) { | 326 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8) { |
| 327 connect(); | 327 connect(); |
| 328 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 328 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 329 MemEq("\xe7\x8b\x90", 3), 3)); | 329 MemEq("\xe7\x8b\x90", 3), 3)); |
| 330 | 330 |
| 331 handleClient()->didReceiveFlowControl(handle(), 16); | 331 handleClient()->didReceiveFlowControl(handle(), 16); |
| 332 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); | 332 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
| 333 | 333 |
| 334 Vector<char> v; | 334 Vector<char> v; |
| 335 v.append("\xe7\x8b\x90", 3); | 335 v.append("\xe7\x8b\x90", 3); |
| 336 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 336 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 337 | 337 |
| 338 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); | 338 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
| 339 } | 339 } |
| 340 | 340 |
| 341 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonUTF8) { | 341 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonUTF8) { |
| 342 connect(); | 342 connect(); |
| 343 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, | 343 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, |
| 344 MemEq("\x80\xff\xe7", 3), 3)); | 344 MemEq("\x80\xff\xe7", 3), 3)); |
| 345 | 345 |
| 346 handleClient()->didReceiveFlowControl(handle(), 16); | 346 handleClient()->didReceiveFlowControl(handle(), 16); |
| 347 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); | 347 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
| 348 | 348 |
| 349 Vector<char> v; | 349 Vector<char> v; |
| 350 v.append("\x80\xff\xe7", 3); | 350 v.append("\x80\xff\xe7", 3); |
| 351 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 351 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 352 | 352 |
| 353 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); | 353 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
| 354 } | 354 } |
| 355 | 355 |
| 356 TEST_F(DocumentWebSocketChannelTest, | 356 TEST_F(DocumentWebSocketChannelTest, |
| 357 sendBinaryInVectorNonLatin1UTF8Continuation) { | 357 sendBinaryInVectorNonLatin1UTF8Continuation) { |
| 358 connect(); | 358 connect(); |
| 359 Checkpoint checkpoint; | 359 Checkpoint checkpoint; |
| 360 { | 360 { |
| 361 InSequence s; | 361 InSequence s; |
| 362 EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, | 362 EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, |
| 363 MemEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7" | 363 MemEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7" |
| 364 "\x8b\x90\xe7\x8b\x90\xe7", | 364 "\x8b\x90\xe7\x8b\x90\xe7", |
| 365 16), | 365 16), |
| 366 16)); | 366 16)); |
| 367 EXPECT_CALL(checkpoint, Call(1)); | 367 EXPECT_CALL(checkpoint, Call(1)); |
| 368 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, | 368 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, |
| 369 MemEq("\x8b\x90", 2), 2)); | 369 MemEq("\x8b\x90", 2), 2)); |
| 370 } | 370 } |
| 371 | 371 |
| 372 handleClient()->didReceiveFlowControl(handle(), 16); | 372 handleClient()->didReceiveFlowControl(handle(), 16); |
| 373 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); | 373 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
| 374 | 374 |
| 375 Vector<char> v; | 375 Vector<char> v; |
| 376 v.append( | 376 v.append( |
| 377 "\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b" | 377 "\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b" |
| 378 "\x90", | 378 "\x90", |
| 379 18); | 379 18); |
| 380 channel()->sendBinaryAsCharVector(makeUnique<Vector<char>>(v)); | 380 channel()->sendBinaryAsCharVector(WTF::makeUnique<Vector<char>>(v)); |
| 381 checkpoint.Call(1); | 381 checkpoint.Call(1); |
| 382 | 382 |
| 383 handleClient()->didReceiveFlowControl(handle(), 16); | 383 handleClient()->didReceiveFlowControl(handle(), 16); |
| 384 | 384 |
| 385 EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); | 385 EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); |
| 386 } | 386 } |
| 387 | 387 |
| 388 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBuffer) { | 388 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBuffer) { |
| 389 connect(); | 389 connect(); |
| 390 { | 390 { |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 WebSocketChannel::CloseEventCodeAbnormalClosure, String())); | 766 WebSocketChannel::CloseEventCodeAbnormalClosure, String())); |
| 767 } | 767 } |
| 768 | 768 |
| 769 channel()->fail("fail message from WebSocket", ErrorMessageLevel, | 769 channel()->fail("fail message from WebSocket", ErrorMessageLevel, |
| 770 SourceLocation::create(String(), 0, 0, nullptr)); | 770 SourceLocation::create(String(), 0, 0, nullptr)); |
| 771 } | 771 } |
| 772 | 772 |
| 773 } // namespace | 773 } // namespace |
| 774 | 774 |
| 775 } // namespace blink | 775 } // namespace blink |
| OLD | NEW |