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

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

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 years, 6 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/testing/DummyPageHolder.h" 10 #include "core/testing/DummyPageHolder.h"
11 #include "modules/websockets/DocumentWebSocketChannel.h" 11 #include "modules/websockets/DocumentWebSocketChannel.h"
12 #include "modules/websockets/WebSocketChannelClient.h" 12 #include "modules/websockets/WebSocketChannelClient.h"
13 #include "platform/heap/Handle.h" 13 #include "platform/heap/Handle.h"
14 #include "platform/v8_inspector/public/ConsoleTypes.h" 14 #include "platform/v8_inspector/public/ConsoleTypes.h"
15 #include "platform/weborigin/KURL.h" 15 #include "platform/weborigin/KURL.h"
16 #include "public/platform/WebSecurityOrigin.h" 16 #include "public/platform/WebSecurityOrigin.h"
17 #include "public/platform/WebString.h" 17 #include "public/platform/WebString.h"
18 #include "public/platform/WebURL.h" 18 #include "public/platform/WebURL.h"
19 #include "public/platform/WebVector.h" 19 #include "public/platform/WebVector.h"
20 #include "public/platform/modules/websockets/WebSocketHandle.h" 20 #include "public/platform/modules/websockets/WebSocketHandle.h"
21 #include "public/platform/modules/websockets/WebSocketHandleClient.h" 21 #include "public/platform/modules/websockets/WebSocketHandleClient.h"
22 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 #include "wtf/OwnPtr.h" 24 #include "wtf/PtrUtil.h"
25 #include "wtf/Vector.h" 25 #include "wtf/Vector.h"
26 #include "wtf/text/WTFString.h" 26 #include "wtf/text/WTFString.h"
27 #include <memory>
27 #include <stdint.h> 28 #include <stdint.h>
28 29
29 using testing::_; 30 using testing::_;
30 using testing::InSequence; 31 using testing::InSequence;
31 using testing::PrintToString; 32 using testing::PrintToString;
32 using testing::AnyNumber; 33 using testing::AnyNumber;
33 34
34 35
35 namespace blink { 36 namespace blink {
36 37
37 namespace { 38 namespace {
38 39
39 typedef testing::StrictMock< testing::MockFunction<void(int)>> Checkpoint; 40 typedef testing::StrictMock< testing::MockFunction<void(int)>> Checkpoint;
40 41
41 class MockWebSocketChannelClient : public GarbageCollectedFinalized<MockWebSocke tChannelClient>, public WebSocketChannelClient { 42 class MockWebSocketChannelClient : public GarbageCollectedFinalized<MockWebSocke tChannelClient>, public WebSocketChannelClient {
42 USING_GARBAGE_COLLECTED_MIXIN(MockWebSocketChannelClient); 43 USING_GARBAGE_COLLECTED_MIXIN(MockWebSocketChannelClient);
43 public: 44 public:
44 static MockWebSocketChannelClient* create() 45 static MockWebSocketChannelClient* create()
45 { 46 {
46 return new testing::StrictMock<MockWebSocketChannelClient>(); 47 return new testing::StrictMock<MockWebSocketChannelClient>();
47 } 48 }
48 49
49 MockWebSocketChannelClient() { } 50 MockWebSocketChannelClient() { }
50 51
51 ~MockWebSocketChannelClient() override { } 52 ~MockWebSocketChannelClient() override { }
52 53
53 MOCK_METHOD2(didConnect, void(const String&, const String&)); 54 MOCK_METHOD2(didConnect, void(const String&, const String&));
54 MOCK_METHOD1(didReceiveTextMessage, void(const String&)); 55 MOCK_METHOD1(didReceiveTextMessage, void(const String&));
55 void didReceiveBinaryMessage(PassOwnPtr<Vector<char>> payload) override 56 void didReceiveBinaryMessage(std::unique_ptr<Vector<char>> payload) override
56 { 57 {
57 didReceiveBinaryMessageMock(*payload); 58 didReceiveBinaryMessageMock(*payload);
58 } 59 }
59 MOCK_METHOD1(didReceiveBinaryMessageMock, void(const Vector<char>&)); 60 MOCK_METHOD1(didReceiveBinaryMessageMock, void(const Vector<char>&));
60 MOCK_METHOD0(didError, void()); 61 MOCK_METHOD0(didError, void());
61 MOCK_METHOD1(didConsumeBufferedAmount, void(uint64_t)); 62 MOCK_METHOD1(didConsumeBufferedAmount, void(uint64_t));
62 MOCK_METHOD0(didStartClosingHandshake, void()); 63 MOCK_METHOD0(didStartClosingHandshake, void());
63 MOCK_METHOD3(didClose, void(ClosingHandshakeCompletionStatus, unsigned short , const String&)); 64 MOCK_METHOD3(didClose, void(ClosingHandshakeCompletionStatus, unsigned short , const String&));
64 65
65 DEFINE_INLINE_VIRTUAL_TRACE() 66 DEFINE_INLINE_VIRTUAL_TRACE()
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 InSequence s; 135 InSequence s;
135 EXPECT_CALL(*handle(), connect(WebURL(KURL(KURL(), "ws://localhost/" )), _, _, handleClient())); 136 EXPECT_CALL(*handle(), connect(WebURL(KURL(KURL(), "ws://localhost/" )), _, _, handleClient()));
136 EXPECT_CALL(*handle(), flowControl(65536)); 137 EXPECT_CALL(*handle(), flowControl(65536));
137 EXPECT_CALL(*channelClient(), didConnect(String("a"), String("b"))); 138 EXPECT_CALL(*channelClient(), didConnect(String("a"), String("b")));
138 } 139 }
139 EXPECT_TRUE(channel()->connect(KURL(KURL(), "ws://localhost/"), "x")); 140 EXPECT_TRUE(channel()->connect(KURL(KURL(), "ws://localhost/"), "x"));
140 handleClient()->didConnect(handle(), WebString("a"), WebString("b")); 141 handleClient()->didConnect(handle(), WebString("a"), WebString("b"));
141 ::testing::Mock::VerifyAndClearExpectations(this); 142 ::testing::Mock::VerifyAndClearExpectations(this);
142 } 143 }
143 144
144 OwnPtr<DummyPageHolder> m_pageHolder; 145 std::unique_ptr<DummyPageHolder> m_pageHolder;
145 Persistent<MockWebSocketChannelClient> m_channelClient; 146 Persistent<MockWebSocketChannelClient> m_channelClient;
146 MockWebSocketHandle* m_handle; 147 MockWebSocketHandle* m_handle;
147 Persistent<DocumentWebSocketChannel> m_channel; 148 Persistent<DocumentWebSocketChannel> m_channel;
148 unsigned long m_sumOfConsumedBufferedAmount; 149 unsigned long m_sumOfConsumedBufferedAmount;
149 }; 150 };
150 151
151 MATCHER_P2(MemEq, p, len, 152 MATCHER_P2(MemEq, p, len,
152 std::string("pointing to memory") 153 std::string("pointing to memory")
153 + (negation ? " not" : "") 154 + (negation ? " not" : "")
154 + " equal to \"" 155 + " equal to \""
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 { 234 {
234 InSequence s; 235 InSequence s;
235 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("foo", 3), 3)); 236 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("foo", 3), 3));
236 } 237 }
237 238
238 handleClient()->didReceiveFlowControl(handle(), 16); 239 handleClient()->didReceiveFlowControl(handle(), 16);
239 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() ); 240 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() );
240 241
241 Vector<char> fooVector; 242 Vector<char> fooVector;
242 fooVector.append("foo", 3); 243 fooVector.append("foo", 3);
243 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(fooVector))); 244 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(fooVector)));
244 245
245 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); 246 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount);
246 } 247 }
247 248
248 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorWithNullBytes) 249 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorWithNullBytes)
249 { 250 {
250 connect(); 251 connect();
251 { 252 {
252 InSequence s; 253 InSequence s;
253 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("\0ar", 3), 3)); 254 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("\0ar", 3), 3));
254 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("b\0z", 3), 3)); 255 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("b\0z", 3), 3));
255 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("qu\0", 3), 3)); 256 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("qu\0", 3), 3));
256 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("\0\0\0", 3), 3)); 257 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, Me mEq("\0\0\0", 3), 3));
257 } 258 }
258 259
259 handleClient()->didReceiveFlowControl(handle(), 16); 260 handleClient()->didReceiveFlowControl(handle(), 16);
260 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() ); 261 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() );
261 262
262 { 263 {
263 Vector<char> v; 264 Vector<char> v;
264 v.append("\0ar", 3); 265 v.append("\0ar", 3);
265 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 266 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
266 } 267 }
267 { 268 {
268 Vector<char> v; 269 Vector<char> v;
269 v.append("b\0z", 3); 270 v.append("b\0z", 3);
270 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 271 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
271 } 272 }
272 { 273 {
273 Vector<char> v; 274 Vector<char> v;
274 v.append("qu\0", 3); 275 v.append("qu\0", 3);
275 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 276 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
276 } 277 }
277 { 278 {
278 Vector<char> v; 279 Vector<char> v;
279 v.append("\0\0\0", 3); 280 v.append("\0\0\0", 3);
280 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 281 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
281 } 282 }
282 283
283 EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); 284 EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount);
284 } 285 }
285 286
286 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8) 287 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8)
287 { 288 {
288 connect(); 289 connect();
289 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq( "\xe7\x8b\x90", 3), 3)); 290 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq( "\xe7\x8b\x90", 3), 3));
290 291
291 handleClient()->didReceiveFlowControl(handle(), 16); 292 handleClient()->didReceiveFlowControl(handle(), 16);
292 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() ); 293 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() );
293 294
294 Vector<char> v; 295 Vector<char> v;
295 v.append("\xe7\x8b\x90", 3); 296 v.append("\xe7\x8b\x90", 3);
296 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 297 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
297 298
298 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); 299 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount);
299 } 300 }
300 301
301 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonUTF8) 302 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonUTF8)
302 { 303 {
303 connect(); 304 connect();
304 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq( "\x80\xff\xe7", 3), 3)); 305 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq( "\x80\xff\xe7", 3), 3));
305 306
306 handleClient()->didReceiveFlowControl(handle(), 16); 307 handleClient()->didReceiveFlowControl(handle(), 16);
307 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() ); 308 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() );
308 309
309 Vector<char> v; 310 Vector<char> v;
310 v.append("\x80\xff\xe7", 3); 311 v.append("\x80\xff\xe7", 3);
311 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 312 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
312 313
313 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); 314 EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount);
314 } 315 }
315 316
316 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8Continuation ) 317 TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8Continuation )
317 { 318 {
318 connect(); 319 connect();
319 Checkpoint checkpoint; 320 Checkpoint checkpoint;
320 { 321 {
321 InSequence s; 322 InSequence s;
322 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 )); 323 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 ));
323 EXPECT_CALL(checkpoint, Call(1)); 324 EXPECT_CALL(checkpoint, Call(1));
324 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuati on, MemEq("\x8b\x90", 2), 2)); 325 EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuati on, MemEq("\x8b\x90", 2), 2));
325 } 326 }
326 327
327 handleClient()->didReceiveFlowControl(handle(), 16); 328 handleClient()->didReceiveFlowControl(handle(), 16);
328 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() ); 329 EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber() );
329 330
330 Vector<char> v; 331 Vector<char> v;
331 v.append("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x 8b\x90", 18); 332 v.append("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x 8b\x90", 18);
332 channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); 333 channel()->sendBinaryAsCharVector(wrapUnique(new Vector<char>(v)));
333 checkpoint.Call(1); 334 checkpoint.Call(1);
334 335
335 handleClient()->didReceiveFlowControl(handle(), 16); 336 handleClient()->didReceiveFlowControl(handle(), 16);
336 337
337 EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); 338 EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount);
338 } 339 }
339 340
340 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBuffer) 341 TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBuffer)
341 { 342 {
342 connect(); 343 connect();
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 EXPECT_CALL(*channelClient(), didError()); 680 EXPECT_CALL(*channelClient(), didError());
680 EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHa ndshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String())); 681 EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHa ndshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String()));
681 } 682 }
682 683
683 channel()->fail("fail message from WebSocket", ErrorMessageLevel, SourceLoca tion::create(String(), 0, 0, nullptr)); 684 channel()->fail("fail message from WebSocket", ErrorMessageLevel, SourceLoca tion::create(String(), 0, 0, nullptr));
684 } 685 }
685 686
686 } // namespace 687 } // namespace
687 688
688 } // namespace blink 689 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698