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

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

Issue 2572603002: ABANDONED CL: Rename readyState() to getReadyState(). (Closed)
Patch Set: Created 4 years 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/DOMWebSocket.h" 5 #include "modules/websockets/DOMWebSocket.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/V8Binding.h" 8 #include "bindings/core/v8/V8Binding.h"
9 #include "bindings/core/v8/V8BindingForTesting.h" 9 #include "bindings/core/v8/V8BindingForTesting.h"
10 #include "core/dom/DOMTypedArray.h" 10 #include "core/dom/DOMTypedArray.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 TEST(DOMWebSocketTest, connectToBadURL) { 133 TEST(DOMWebSocketTest, connectToBadURL) {
134 V8TestingScope scope; 134 V8TestingScope scope;
135 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 135 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
136 webSocketScope.socket().connect("xxx", Vector<String>(), 136 webSocketScope.socket().connect("xxx", Vector<String>(),
137 scope.getExceptionState()); 137 scope.getExceptionState());
138 138
139 EXPECT_TRUE(scope.getExceptionState().hadException()); 139 EXPECT_TRUE(scope.getExceptionState().hadException());
140 EXPECT_EQ(SyntaxError, scope.getExceptionState().code()); 140 EXPECT_EQ(SyntaxError, scope.getExceptionState().code());
141 EXPECT_EQ("The URL 'xxx' is invalid.", scope.getExceptionState().message()); 141 EXPECT_EQ("The URL 'xxx' is invalid.", scope.getExceptionState().message());
142 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 142 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
143 } 143 }
144 144
145 TEST(DOMWebSocketTest, connectToNonWsURL) { 145 TEST(DOMWebSocketTest, connectToNonWsURL) {
146 V8TestingScope scope; 146 V8TestingScope scope;
147 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 147 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
148 webSocketScope.socket().connect("http://example.com/", Vector<String>(), 148 webSocketScope.socket().connect("http://example.com/", Vector<String>(),
149 scope.getExceptionState()); 149 scope.getExceptionState());
150 150
151 EXPECT_TRUE(scope.getExceptionState().hadException()); 151 EXPECT_TRUE(scope.getExceptionState().hadException());
152 EXPECT_EQ(SyntaxError, scope.getExceptionState().code()); 152 EXPECT_EQ(SyntaxError, scope.getExceptionState().code());
153 EXPECT_EQ( 153 EXPECT_EQ(
154 "The URL's scheme must be either 'ws' or 'wss'. 'http' is not allowed.", 154 "The URL's scheme must be either 'ws' or 'wss'. 'http' is not allowed.",
155 scope.getExceptionState().message()); 155 scope.getExceptionState().message());
156 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 156 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
157 } 157 }
158 158
159 TEST(DOMWebSocketTest, connectToURLHavingFragmentIdentifier) { 159 TEST(DOMWebSocketTest, connectToURLHavingFragmentIdentifier) {
160 V8TestingScope scope; 160 V8TestingScope scope;
161 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 161 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
162 webSocketScope.socket().connect("ws://example.com/#fragment", 162 webSocketScope.socket().connect("ws://example.com/#fragment",
163 Vector<String>(), scope.getExceptionState()); 163 Vector<String>(), scope.getExceptionState());
164 164
165 EXPECT_TRUE(scope.getExceptionState().hadException()); 165 EXPECT_TRUE(scope.getExceptionState().hadException());
166 EXPECT_EQ(SyntaxError, scope.getExceptionState().code()); 166 EXPECT_EQ(SyntaxError, scope.getExceptionState().code());
167 EXPECT_EQ( 167 EXPECT_EQ(
168 "The URL contains a fragment identifier ('fragment'). Fragment " 168 "The URL contains a fragment identifier ('fragment'). Fragment "
169 "identifiers are not allowed in WebSocket URLs.", 169 "identifiers are not allowed in WebSocket URLs.",
170 scope.getExceptionState().message()); 170 scope.getExceptionState().message());
171 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 171 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
172 } 172 }
173 173
174 TEST(DOMWebSocketTest, invalidPort) { 174 TEST(DOMWebSocketTest, invalidPort) {
175 V8TestingScope scope; 175 V8TestingScope scope;
176 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 176 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
177 webSocketScope.socket().connect("ws://example.com:7", Vector<String>(), 177 webSocketScope.socket().connect("ws://example.com:7", Vector<String>(),
178 scope.getExceptionState()); 178 scope.getExceptionState());
179 179
180 EXPECT_TRUE(scope.getExceptionState().hadException()); 180 EXPECT_TRUE(scope.getExceptionState().hadException());
181 EXPECT_EQ(SecurityError, scope.getExceptionState().code()); 181 EXPECT_EQ(SecurityError, scope.getExceptionState().code());
182 EXPECT_EQ("The port 7 is not allowed.", scope.getExceptionState().message()); 182 EXPECT_EQ("The port 7 is not allowed.", scope.getExceptionState().message());
183 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 183 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
184 } 184 }
185 185
186 // FIXME: Add a test for Content Security Policy. 186 // FIXME: Add a test for Content Security Policy.
187 187
188 TEST(DOMWebSocketTest, invalidSubprotocols) { 188 TEST(DOMWebSocketTest, invalidSubprotocols) {
189 V8TestingScope scope; 189 V8TestingScope scope;
190 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 190 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
191 Vector<String> subprotocols; 191 Vector<String> subprotocols;
192 subprotocols.append("@subprotocol-|'\"x\x01\x02\x03x"); 192 subprotocols.append("@subprotocol-|'\"x\x01\x02\x03x");
193 193
194 webSocketScope.socket().connect("ws://example.com/", subprotocols, 194 webSocketScope.socket().connect("ws://example.com/", subprotocols,
195 scope.getExceptionState()); 195 scope.getExceptionState());
196 196
197 EXPECT_TRUE(scope.getExceptionState().hadException()); 197 EXPECT_TRUE(scope.getExceptionState().hadException());
198 EXPECT_EQ(SyntaxError, scope.getExceptionState().code()); 198 EXPECT_EQ(SyntaxError, scope.getExceptionState().code());
199 EXPECT_EQ( 199 EXPECT_EQ(
200 "The subprotocol '@subprotocol-|'\"x\\u0001\\u0002\\u0003x' is invalid.", 200 "The subprotocol '@subprotocol-|'\"x\\u0001\\u0002\\u0003x' is invalid.",
201 scope.getExceptionState().message()); 201 scope.getExceptionState().message());
202 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 202 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
203 } 203 }
204 204
205 TEST(DOMWebSocketTest, insecureRequestsUpgrade) { 205 TEST(DOMWebSocketTest, insecureRequestsUpgrade) {
206 V8TestingScope scope; 206 V8TestingScope scope;
207 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 207 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
208 { 208 {
209 InSequence s; 209 InSequence s;
210 EXPECT_CALL(webSocketScope.channel(), 210 EXPECT_CALL(webSocketScope.channel(),
211 connect(KURL(KURL(), "wss://example.com/endpoint"), String())) 211 connect(KURL(KURL(), "wss://example.com/endpoint"), String()))
212 .WillOnce(Return(true)); 212 .WillOnce(Return(true));
213 } 213 }
214 214
215 scope.document().setInsecureRequestPolicy(kUpgradeInsecureRequests); 215 scope.document().setInsecureRequestPolicy(kUpgradeInsecureRequests);
216 webSocketScope.socket().connect("ws://example.com/endpoint", Vector<String>(), 216 webSocketScope.socket().connect("ws://example.com/endpoint", Vector<String>(),
217 scope.getExceptionState()); 217 scope.getExceptionState());
218 218
219 EXPECT_FALSE(scope.getExceptionState().hadException()); 219 EXPECT_FALSE(scope.getExceptionState().hadException());
220 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 220 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
221 EXPECT_EQ(KURL(KURL(), "wss://example.com/endpoint"), 221 EXPECT_EQ(KURL(KURL(), "wss://example.com/endpoint"),
222 webSocketScope.socket().url()); 222 webSocketScope.socket().url());
223 } 223 }
224 224
225 TEST(DOMWebSocketTest, insecureRequestsDoNotUpgrade) { 225 TEST(DOMWebSocketTest, insecureRequestsDoNotUpgrade) {
226 V8TestingScope scope; 226 V8TestingScope scope;
227 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 227 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
228 { 228 {
229 InSequence s; 229 InSequence s;
230 EXPECT_CALL(webSocketScope.channel(), 230 EXPECT_CALL(webSocketScope.channel(),
231 connect(KURL(KURL(), "ws://example.com/endpoint"), String())) 231 connect(KURL(KURL(), "ws://example.com/endpoint"), String()))
232 .WillOnce(Return(true)); 232 .WillOnce(Return(true));
233 } 233 }
234 234
235 scope.document().setInsecureRequestPolicy(kLeaveInsecureRequestsAlone); 235 scope.document().setInsecureRequestPolicy(kLeaveInsecureRequestsAlone);
236 webSocketScope.socket().connect("ws://example.com/endpoint", Vector<String>(), 236 webSocketScope.socket().connect("ws://example.com/endpoint", Vector<String>(),
237 scope.getExceptionState()); 237 scope.getExceptionState());
238 238
239 EXPECT_FALSE(scope.getExceptionState().hadException()); 239 EXPECT_FALSE(scope.getExceptionState().hadException());
240 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 240 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
241 EXPECT_EQ(KURL(KURL(), "ws://example.com/endpoint"), 241 EXPECT_EQ(KURL(KURL(), "ws://example.com/endpoint"),
242 webSocketScope.socket().url()); 242 webSocketScope.socket().url());
243 } 243 }
244 244
245 TEST(DOMWebSocketTest, channelConnectSuccess) { 245 TEST(DOMWebSocketTest, channelConnectSuccess) {
246 V8TestingScope scope; 246 V8TestingScope scope;
247 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 247 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
248 Vector<String> subprotocols; 248 Vector<String> subprotocols;
249 subprotocols.append("aa"); 249 subprotocols.append("aa");
250 subprotocols.append("bb"); 250 subprotocols.append("bb");
251 251
252 { 252 {
253 InSequence s; 253 InSequence s;
254 EXPECT_CALL( 254 EXPECT_CALL(
255 webSocketScope.channel(), 255 webSocketScope.channel(),
256 connect(KURL(KURL(), "ws://example.com/hoge"), String("aa, bb"))) 256 connect(KURL(KURL(), "ws://example.com/hoge"), String("aa, bb")))
257 .WillOnce(Return(true)); 257 .WillOnce(Return(true));
258 } 258 }
259 259
260 webSocketScope.socket().connect("ws://example.com/hoge", 260 webSocketScope.socket().connect("ws://example.com/hoge",
261 Vector<String>(subprotocols), 261 Vector<String>(subprotocols),
262 scope.getExceptionState()); 262 scope.getExceptionState());
263 263
264 EXPECT_FALSE(scope.getExceptionState().hadException()); 264 EXPECT_FALSE(scope.getExceptionState().hadException());
265 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 265 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
266 EXPECT_EQ(KURL(KURL(), "ws://example.com/hoge"), 266 EXPECT_EQ(KURL(KURL(), "ws://example.com/hoge"),
267 webSocketScope.socket().url()); 267 webSocketScope.socket().url());
268 } 268 }
269 269
270 TEST(DOMWebSocketTest, channelConnectFail) { 270 TEST(DOMWebSocketTest, channelConnectFail) {
271 V8TestingScope scope; 271 V8TestingScope scope;
272 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 272 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
273 Vector<String> subprotocols; 273 Vector<String> subprotocols;
274 subprotocols.append("aa"); 274 subprotocols.append("aa");
275 subprotocols.append("bb"); 275 subprotocols.append("bb");
276 276
277 { 277 {
278 InSequence s; 278 InSequence s;
279 EXPECT_CALL(webSocketScope.channel(), 279 EXPECT_CALL(webSocketScope.channel(),
280 connect(KURL(KURL(), "ws://example.com/"), String("aa, bb"))) 280 connect(KURL(KURL(), "ws://example.com/"), String("aa, bb")))
281 .WillOnce(Return(false)); 281 .WillOnce(Return(false));
282 EXPECT_CALL(webSocketScope.channel(), disconnect()); 282 EXPECT_CALL(webSocketScope.channel(), disconnect());
283 } 283 }
284 284
285 webSocketScope.socket().connect("ws://example.com/", 285 webSocketScope.socket().connect("ws://example.com/",
286 Vector<String>(subprotocols), 286 Vector<String>(subprotocols),
287 scope.getExceptionState()); 287 scope.getExceptionState());
288 288
289 EXPECT_TRUE(scope.getExceptionState().hadException()); 289 EXPECT_TRUE(scope.getExceptionState().hadException());
290 EXPECT_EQ(SecurityError, scope.getExceptionState().code()); 290 EXPECT_EQ(SecurityError, scope.getExceptionState().code());
291 EXPECT_EQ( 291 EXPECT_EQ(
292 "An insecure WebSocket connection may not be initiated from a page " 292 "An insecure WebSocket connection may not be initiated from a page "
293 "loaded over HTTPS.", 293 "loaded over HTTPS.",
294 scope.getExceptionState().message()); 294 scope.getExceptionState().message());
295 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 295 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
296 } 296 }
297 297
298 TEST(DOMWebSocketTest, isValidSubprotocolString) { 298 TEST(DOMWebSocketTest, isValidSubprotocolString) {
299 EXPECT_TRUE(DOMWebSocket::isValidSubprotocolString("Helloworld!!")); 299 EXPECT_TRUE(DOMWebSocket::isValidSubprotocolString("Helloworld!!"));
300 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString("Hello, world!!")); 300 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString("Hello, world!!"));
301 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString(String())); 301 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString(String()));
302 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString("")); 302 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString(""));
303 303
304 const char validCharacters[] = 304 const char validCharacters[] =
305 "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`" 305 "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`"
(...skipping 24 matching lines...) Expand all
330 { 330 {
331 InSequence s; 331 InSequence s;
332 EXPECT_CALL(webSocketScope.channel(), 332 EXPECT_CALL(webSocketScope.channel(),
333 connect(KURL(KURL(), "ws://example.com/"), String("aa, bb"))) 333 connect(KURL(KURL(), "ws://example.com/"), String("aa, bb")))
334 .WillOnce(Return(true)); 334 .WillOnce(Return(true));
335 } 335 }
336 webSocketScope.socket().connect("ws://example.com/", subprotocols, 336 webSocketScope.socket().connect("ws://example.com/", subprotocols,
337 scope.getExceptionState()); 337 scope.getExceptionState());
338 338
339 EXPECT_FALSE(scope.getExceptionState().hadException()); 339 EXPECT_FALSE(scope.getExceptionState().hadException());
340 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 340 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
341 341
342 webSocketScope.socket().didConnect("bb", "cc"); 342 webSocketScope.socket().didConnect("bb", "cc");
343 343
344 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 344 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
345 EXPECT_EQ("bb", webSocketScope.socket().protocol()); 345 EXPECT_EQ("bb", webSocketScope.socket().protocol());
346 EXPECT_EQ("cc", webSocketScope.socket().extensions()); 346 EXPECT_EQ("cc", webSocketScope.socket().extensions());
347 } 347 }
348 348
349 TEST(DOMWebSocketTest, didClose) { 349 TEST(DOMWebSocketTest, didClose) {
350 V8TestingScope scope; 350 V8TestingScope scope;
351 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 351 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
352 { 352 {
353 InSequence s; 353 InSequence s;
354 EXPECT_CALL(webSocketScope.channel(), 354 EXPECT_CALL(webSocketScope.channel(),
355 connect(KURL(KURL(), "ws://example.com/"), String())) 355 connect(KURL(KURL(), "ws://example.com/"), String()))
356 .WillOnce(Return(true)); 356 .WillOnce(Return(true));
357 EXPECT_CALL(webSocketScope.channel(), disconnect()); 357 EXPECT_CALL(webSocketScope.channel(), disconnect());
358 } 358 }
359 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 359 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
360 scope.getExceptionState()); 360 scope.getExceptionState());
361 361
362 EXPECT_FALSE(scope.getExceptionState().hadException()); 362 EXPECT_FALSE(scope.getExceptionState().hadException());
363 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 363 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
364 364
365 webSocketScope.socket().didClose( 365 webSocketScope.socket().didClose(
366 WebSocketChannelClient::ClosingHandshakeIncomplete, 1006, ""); 366 WebSocketChannelClient::ClosingHandshakeIncomplete, 1006, "");
367 367
368 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 368 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
369 } 369 }
370 370
371 TEST(DOMWebSocketTest, maximumReasonSize) { 371 TEST(DOMWebSocketTest, maximumReasonSize) {
372 V8TestingScope scope; 372 V8TestingScope scope;
373 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 373 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
374 { 374 {
375 InSequence s; 375 InSequence s;
376 EXPECT_CALL(webSocketScope.channel(), 376 EXPECT_CALL(webSocketScope.channel(),
377 connect(KURL(KURL(), "ws://example.com/"), String())) 377 connect(KURL(KURL(), "ws://example.com/"), String()))
378 .WillOnce(Return(true)); 378 .WillOnce(Return(true));
379 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _)); 379 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _));
380 } 380 }
381 StringBuilder reason; 381 StringBuilder reason;
382 for (size_t i = 0; i < 123; ++i) 382 for (size_t i = 0; i < 123; ++i)
383 reason.append('a'); 383 reason.append('a');
384 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 384 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
385 scope.getExceptionState()); 385 scope.getExceptionState());
386 386
387 EXPECT_FALSE(scope.getExceptionState().hadException()); 387 EXPECT_FALSE(scope.getExceptionState().hadException());
388 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 388 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
389 389
390 webSocketScope.socket().close(1000, reason.toString(), 390 webSocketScope.socket().close(1000, reason.toString(),
391 scope.getExceptionState()); 391 scope.getExceptionState());
392 392
393 EXPECT_FALSE(scope.getExceptionState().hadException()); 393 EXPECT_FALSE(scope.getExceptionState().hadException());
394 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 394 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
395 } 395 }
396 396
397 TEST(DOMWebSocketTest, reasonSizeExceeding) { 397 TEST(DOMWebSocketTest, reasonSizeExceeding) {
398 V8TestingScope scope; 398 V8TestingScope scope;
399 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 399 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
400 { 400 {
401 InSequence s; 401 InSequence s;
402 EXPECT_CALL(webSocketScope.channel(), 402 EXPECT_CALL(webSocketScope.channel(),
403 connect(KURL(KURL(), "ws://example.com/"), String())) 403 connect(KURL(KURL(), "ws://example.com/"), String()))
404 .WillOnce(Return(true)); 404 .WillOnce(Return(true));
405 } 405 }
406 StringBuilder reason; 406 StringBuilder reason;
407 for (size_t i = 0; i < 124; ++i) 407 for (size_t i = 0; i < 124; ++i)
408 reason.append('a'); 408 reason.append('a');
409 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 409 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
410 scope.getExceptionState()); 410 scope.getExceptionState());
411 411
412 EXPECT_FALSE(scope.getExceptionState().hadException()); 412 EXPECT_FALSE(scope.getExceptionState().hadException());
413 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 413 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
414 414
415 webSocketScope.socket().close(1000, reason.toString(), 415 webSocketScope.socket().close(1000, reason.toString(),
416 scope.getExceptionState()); 416 scope.getExceptionState());
417 417
418 EXPECT_TRUE(scope.getExceptionState().hadException()); 418 EXPECT_TRUE(scope.getExceptionState().hadException());
419 EXPECT_EQ(SyntaxError, scope.getExceptionState().code()); 419 EXPECT_EQ(SyntaxError, scope.getExceptionState().code());
420 EXPECT_EQ("The message must not be greater than 123 bytes.", 420 EXPECT_EQ("The message must not be greater than 123 bytes.",
421 scope.getExceptionState().message()); 421 scope.getExceptionState().message());
422 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 422 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
423 } 423 }
424 424
425 TEST(DOMWebSocketTest, closeWhenConnecting) { 425 TEST(DOMWebSocketTest, closeWhenConnecting) {
426 V8TestingScope scope; 426 V8TestingScope scope;
427 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 427 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
428 { 428 {
429 InSequence s; 429 InSequence s;
430 EXPECT_CALL(webSocketScope.channel(), 430 EXPECT_CALL(webSocketScope.channel(),
431 connect(KURL(KURL(), "ws://example.com/"), String())) 431 connect(KURL(KURL(), "ws://example.com/"), String()))
432 .WillOnce(Return(true)); 432 .WillOnce(Return(true));
433 EXPECT_CALL( 433 EXPECT_CALL(
434 webSocketScope.channel(), 434 webSocketScope.channel(),
435 failMock( 435 failMock(
436 String("WebSocket is closed before the connection is established."), 436 String("WebSocket is closed before the connection is established."),
437 WarningMessageLevel, _)); 437 WarningMessageLevel, _));
438 } 438 }
439 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 439 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
440 scope.getExceptionState()); 440 scope.getExceptionState());
441 441
442 EXPECT_FALSE(scope.getExceptionState().hadException()); 442 EXPECT_FALSE(scope.getExceptionState().hadException());
443 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 443 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
444 444
445 webSocketScope.socket().close(1000, "bye", scope.getExceptionState()); 445 webSocketScope.socket().close(1000, "bye", scope.getExceptionState());
446 446
447 EXPECT_FALSE(scope.getExceptionState().hadException()); 447 EXPECT_FALSE(scope.getExceptionState().hadException());
448 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 448 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
449 } 449 }
450 450
451 TEST(DOMWebSocketTest, close) { 451 TEST(DOMWebSocketTest, close) {
452 V8TestingScope scope; 452 V8TestingScope scope;
453 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 453 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
454 { 454 {
455 InSequence s; 455 InSequence s;
456 EXPECT_CALL(webSocketScope.channel(), 456 EXPECT_CALL(webSocketScope.channel(),
457 connect(KURL(KURL(), "ws://example.com/"), String())) 457 connect(KURL(KURL(), "ws://example.com/"), String()))
458 .WillOnce(Return(true)); 458 .WillOnce(Return(true));
459 EXPECT_CALL(webSocketScope.channel(), close(3005, String("bye"))); 459 EXPECT_CALL(webSocketScope.channel(), close(3005, String("bye")));
460 } 460 }
461 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 461 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
462 scope.getExceptionState()); 462 scope.getExceptionState());
463 463
464 EXPECT_FALSE(scope.getExceptionState().hadException()); 464 EXPECT_FALSE(scope.getExceptionState().hadException());
465 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 465 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
466 466
467 webSocketScope.socket().didConnect("", ""); 467 webSocketScope.socket().didConnect("", "");
468 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 468 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
469 webSocketScope.socket().close(3005, "bye", scope.getExceptionState()); 469 webSocketScope.socket().close(3005, "bye", scope.getExceptionState());
470 470
471 EXPECT_FALSE(scope.getExceptionState().hadException()); 471 EXPECT_FALSE(scope.getExceptionState().hadException());
472 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 472 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
473 } 473 }
474 474
475 TEST(DOMWebSocketTest, closeWithoutReason) { 475 TEST(DOMWebSocketTest, closeWithoutReason) {
476 V8TestingScope scope; 476 V8TestingScope scope;
477 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 477 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
478 { 478 {
479 InSequence s; 479 InSequence s;
480 EXPECT_CALL(webSocketScope.channel(), 480 EXPECT_CALL(webSocketScope.channel(),
481 connect(KURL(KURL(), "ws://example.com/"), String())) 481 connect(KURL(KURL(), "ws://example.com/"), String()))
482 .WillOnce(Return(true)); 482 .WillOnce(Return(true));
483 EXPECT_CALL(webSocketScope.channel(), close(3005, String())); 483 EXPECT_CALL(webSocketScope.channel(), close(3005, String()));
484 } 484 }
485 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 485 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
486 scope.getExceptionState()); 486 scope.getExceptionState());
487 487
488 EXPECT_FALSE(scope.getExceptionState().hadException()); 488 EXPECT_FALSE(scope.getExceptionState().hadException());
489 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 489 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
490 490
491 webSocketScope.socket().didConnect("", ""); 491 webSocketScope.socket().didConnect("", "");
492 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 492 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
493 webSocketScope.socket().close(3005, scope.getExceptionState()); 493 webSocketScope.socket().close(3005, scope.getExceptionState());
494 494
495 EXPECT_FALSE(scope.getExceptionState().hadException()); 495 EXPECT_FALSE(scope.getExceptionState().hadException());
496 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 496 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
497 } 497 }
498 498
499 TEST(DOMWebSocketTest, closeWithoutCodeAndReason) { 499 TEST(DOMWebSocketTest, closeWithoutCodeAndReason) {
500 V8TestingScope scope; 500 V8TestingScope scope;
501 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 501 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
502 { 502 {
503 InSequence s; 503 InSequence s;
504 EXPECT_CALL(webSocketScope.channel(), 504 EXPECT_CALL(webSocketScope.channel(),
505 connect(KURL(KURL(), "ws://example.com/"), String())) 505 connect(KURL(KURL(), "ws://example.com/"), String()))
506 .WillOnce(Return(true)); 506 .WillOnce(Return(true));
507 EXPECT_CALL(webSocketScope.channel(), close(-1, String())); 507 EXPECT_CALL(webSocketScope.channel(), close(-1, String()));
508 } 508 }
509 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 509 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
510 scope.getExceptionState()); 510 scope.getExceptionState());
511 511
512 EXPECT_FALSE(scope.getExceptionState().hadException()); 512 EXPECT_FALSE(scope.getExceptionState().hadException());
513 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 513 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
514 514
515 webSocketScope.socket().didConnect("", ""); 515 webSocketScope.socket().didConnect("", "");
516 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 516 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
517 webSocketScope.socket().close(scope.getExceptionState()); 517 webSocketScope.socket().close(scope.getExceptionState());
518 518
519 EXPECT_FALSE(scope.getExceptionState().hadException()); 519 EXPECT_FALSE(scope.getExceptionState().hadException());
520 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 520 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
521 } 521 }
522 522
523 TEST(DOMWebSocketTest, closeWhenClosing) { 523 TEST(DOMWebSocketTest, closeWhenClosing) {
524 V8TestingScope scope; 524 V8TestingScope scope;
525 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 525 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
526 { 526 {
527 InSequence s; 527 InSequence s;
528 EXPECT_CALL(webSocketScope.channel(), 528 EXPECT_CALL(webSocketScope.channel(),
529 connect(KURL(KURL(), "ws://example.com/"), String())) 529 connect(KURL(KURL(), "ws://example.com/"), String()))
530 .WillOnce(Return(true)); 530 .WillOnce(Return(true));
531 EXPECT_CALL(webSocketScope.channel(), close(-1, String())); 531 EXPECT_CALL(webSocketScope.channel(), close(-1, String()));
532 } 532 }
533 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 533 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
534 scope.getExceptionState()); 534 scope.getExceptionState());
535 535
536 EXPECT_FALSE(scope.getExceptionState().hadException()); 536 EXPECT_FALSE(scope.getExceptionState().hadException());
537 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 537 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
538 538
539 webSocketScope.socket().didConnect("", ""); 539 webSocketScope.socket().didConnect("", "");
540 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 540 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
541 webSocketScope.socket().close(scope.getExceptionState()); 541 webSocketScope.socket().close(scope.getExceptionState());
542 EXPECT_FALSE(scope.getExceptionState().hadException()); 542 EXPECT_FALSE(scope.getExceptionState().hadException());
543 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 543 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
544 544
545 webSocketScope.socket().close(scope.getExceptionState()); 545 webSocketScope.socket().close(scope.getExceptionState());
546 546
547 EXPECT_FALSE(scope.getExceptionState().hadException()); 547 EXPECT_FALSE(scope.getExceptionState().hadException());
548 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 548 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
549 } 549 }
550 550
551 TEST(DOMWebSocketTest, closeWhenClosed) { 551 TEST(DOMWebSocketTest, closeWhenClosed) {
552 V8TestingScope scope; 552 V8TestingScope scope;
553 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 553 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
554 { 554 {
555 InSequence s; 555 InSequence s;
556 EXPECT_CALL(webSocketScope.channel(), 556 EXPECT_CALL(webSocketScope.channel(),
557 connect(KURL(KURL(), "ws://example.com/"), String())) 557 connect(KURL(KURL(), "ws://example.com/"), String()))
558 .WillOnce(Return(true)); 558 .WillOnce(Return(true));
559 EXPECT_CALL(webSocketScope.channel(), close(-1, String())); 559 EXPECT_CALL(webSocketScope.channel(), close(-1, String()));
560 EXPECT_CALL(webSocketScope.channel(), disconnect()); 560 EXPECT_CALL(webSocketScope.channel(), disconnect());
561 } 561 }
562 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 562 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
563 scope.getExceptionState()); 563 scope.getExceptionState());
564 564
565 EXPECT_FALSE(scope.getExceptionState().hadException()); 565 EXPECT_FALSE(scope.getExceptionState().hadException());
566 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 566 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
567 567
568 webSocketScope.socket().didConnect("", ""); 568 webSocketScope.socket().didConnect("", "");
569 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 569 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
570 webSocketScope.socket().close(scope.getExceptionState()); 570 webSocketScope.socket().close(scope.getExceptionState());
571 EXPECT_FALSE(scope.getExceptionState().hadException()); 571 EXPECT_FALSE(scope.getExceptionState().hadException());
572 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 572 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
573 573
574 webSocketScope.socket().didClose( 574 webSocketScope.socket().didClose(
575 WebSocketChannelClient::ClosingHandshakeComplete, 1000, String()); 575 WebSocketChannelClient::ClosingHandshakeComplete, 1000, String());
576 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 576 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
577 webSocketScope.socket().close(scope.getExceptionState()); 577 webSocketScope.socket().close(scope.getExceptionState());
578 578
579 EXPECT_FALSE(scope.getExceptionState().hadException()); 579 EXPECT_FALSE(scope.getExceptionState().hadException());
580 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 580 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
581 } 581 }
582 582
583 TEST(DOMWebSocketTest, sendStringWhenConnecting) { 583 TEST(DOMWebSocketTest, sendStringWhenConnecting) {
584 V8TestingScope scope; 584 V8TestingScope scope;
585 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 585 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
586 { 586 {
587 InSequence s; 587 InSequence s;
588 EXPECT_CALL(webSocketScope.channel(), 588 EXPECT_CALL(webSocketScope.channel(),
589 connect(KURL(KURL(), "ws://example.com/"), String())) 589 connect(KURL(KURL(), "ws://example.com/"), String()))
590 .WillOnce(Return(true)); 590 .WillOnce(Return(true));
591 } 591 }
592 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 592 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
593 scope.getExceptionState()); 593 scope.getExceptionState());
594 594
595 EXPECT_FALSE(scope.getExceptionState().hadException()); 595 EXPECT_FALSE(scope.getExceptionState().hadException());
596 596
597 webSocketScope.socket().send("hello", scope.getExceptionState()); 597 webSocketScope.socket().send("hello", scope.getExceptionState());
598 598
599 EXPECT_TRUE(scope.getExceptionState().hadException()); 599 EXPECT_TRUE(scope.getExceptionState().hadException());
600 EXPECT_EQ(InvalidStateError, scope.getExceptionState().code()); 600 EXPECT_EQ(InvalidStateError, scope.getExceptionState().code());
601 EXPECT_EQ("Still in CONNECTING state.", scope.getExceptionState().message()); 601 EXPECT_EQ("Still in CONNECTING state.", scope.getExceptionState().message());
602 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 602 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
603 } 603 }
604 604
605 TEST(DOMWebSocketTest, sendStringWhenClosing) { 605 TEST(DOMWebSocketTest, sendStringWhenClosing) {
606 V8TestingScope scope; 606 V8TestingScope scope;
607 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 607 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
608 Checkpoint checkpoint; 608 Checkpoint checkpoint;
609 { 609 {
610 InSequence s; 610 InSequence s;
611 EXPECT_CALL(webSocketScope.channel(), 611 EXPECT_CALL(webSocketScope.channel(),
612 connect(KURL(KURL(), "ws://example.com/"), String())) 612 connect(KURL(KURL(), "ws://example.com/"), String()))
613 .WillOnce(Return(true)); 613 .WillOnce(Return(true));
614 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _)); 614 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _));
615 } 615 }
616 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 616 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
617 scope.getExceptionState()); 617 scope.getExceptionState());
618 618
619 EXPECT_FALSE(scope.getExceptionState().hadException()); 619 EXPECT_FALSE(scope.getExceptionState().hadException());
620 620
621 webSocketScope.socket().close(scope.getExceptionState()); 621 webSocketScope.socket().close(scope.getExceptionState());
622 EXPECT_FALSE(scope.getExceptionState().hadException()); 622 EXPECT_FALSE(scope.getExceptionState().hadException());
623 623
624 webSocketScope.socket().send("hello", scope.getExceptionState()); 624 webSocketScope.socket().send("hello", scope.getExceptionState());
625 625
626 EXPECT_FALSE(scope.getExceptionState().hadException()); 626 EXPECT_FALSE(scope.getExceptionState().hadException());
627 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 627 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
628 } 628 }
629 629
630 TEST(DOMWebSocketTest, sendStringWhenClosed) { 630 TEST(DOMWebSocketTest, sendStringWhenClosed) {
631 V8TestingScope scope; 631 V8TestingScope scope;
632 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 632 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
633 Checkpoint checkpoint; 633 Checkpoint checkpoint;
634 { 634 {
635 InSequence s; 635 InSequence s;
636 EXPECT_CALL(webSocketScope.channel(), 636 EXPECT_CALL(webSocketScope.channel(),
637 connect(KURL(KURL(), "ws://example.com/"), String())) 637 connect(KURL(KURL(), "ws://example.com/"), String()))
638 .WillOnce(Return(true)); 638 .WillOnce(Return(true));
639 EXPECT_CALL(webSocketScope.channel(), disconnect()); 639 EXPECT_CALL(webSocketScope.channel(), disconnect());
640 EXPECT_CALL(checkpoint, Call(1)); 640 EXPECT_CALL(checkpoint, Call(1));
641 } 641 }
642 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 642 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
643 scope.getExceptionState()); 643 scope.getExceptionState());
644 644
645 EXPECT_FALSE(scope.getExceptionState().hadException()); 645 EXPECT_FALSE(scope.getExceptionState().hadException());
646 646
647 webSocketScope.socket().didClose( 647 webSocketScope.socket().didClose(
648 WebSocketChannelClient::ClosingHandshakeIncomplete, 1006, ""); 648 WebSocketChannelClient::ClosingHandshakeIncomplete, 1006, "");
649 checkpoint.Call(1); 649 checkpoint.Call(1);
650 650
651 webSocketScope.socket().send("hello", scope.getExceptionState()); 651 webSocketScope.socket().send("hello", scope.getExceptionState());
652 652
653 EXPECT_FALSE(scope.getExceptionState().hadException()); 653 EXPECT_FALSE(scope.getExceptionState().hadException());
654 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 654 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
655 } 655 }
656 656
657 TEST(DOMWebSocketTest, sendStringSuccess) { 657 TEST(DOMWebSocketTest, sendStringSuccess) {
658 V8TestingScope scope; 658 V8TestingScope scope;
659 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 659 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
660 { 660 {
661 InSequence s; 661 InSequence s;
662 EXPECT_CALL(webSocketScope.channel(), 662 EXPECT_CALL(webSocketScope.channel(),
663 connect(KURL(KURL(), "ws://example.com/"), String())) 663 connect(KURL(KURL(), "ws://example.com/"), String()))
664 .WillOnce(Return(true)); 664 .WillOnce(Return(true));
665 EXPECT_CALL(webSocketScope.channel(), send(CString("hello"))); 665 EXPECT_CALL(webSocketScope.channel(), send(CString("hello")));
666 } 666 }
667 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 667 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
668 scope.getExceptionState()); 668 scope.getExceptionState());
669 669
670 EXPECT_FALSE(scope.getExceptionState().hadException()); 670 EXPECT_FALSE(scope.getExceptionState().hadException());
671 671
672 webSocketScope.socket().didConnect("", ""); 672 webSocketScope.socket().didConnect("", "");
673 webSocketScope.socket().send("hello", scope.getExceptionState()); 673 webSocketScope.socket().send("hello", scope.getExceptionState());
674 674
675 EXPECT_FALSE(scope.getExceptionState().hadException()); 675 EXPECT_FALSE(scope.getExceptionState().hadException());
676 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 676 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
677 } 677 }
678 678
679 TEST(DOMWebSocketTest, sendNonLatin1String) { 679 TEST(DOMWebSocketTest, sendNonLatin1String) {
680 V8TestingScope scope; 680 V8TestingScope scope;
681 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 681 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
682 { 682 {
683 InSequence s; 683 InSequence s;
684 EXPECT_CALL(webSocketScope.channel(), 684 EXPECT_CALL(webSocketScope.channel(),
685 connect(KURL(KURL(), "ws://example.com/"), String())) 685 connect(KURL(KURL(), "ws://example.com/"), String()))
686 .WillOnce(Return(true)); 686 .WillOnce(Return(true));
687 EXPECT_CALL(webSocketScope.channel(), 687 EXPECT_CALL(webSocketScope.channel(),
688 send(CString("\xe7\x8b\x90\xe0\xa4\x94"))); 688 send(CString("\xe7\x8b\x90\xe0\xa4\x94")));
689 } 689 }
690 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 690 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
691 scope.getExceptionState()); 691 scope.getExceptionState());
692 692
693 EXPECT_FALSE(scope.getExceptionState().hadException()); 693 EXPECT_FALSE(scope.getExceptionState().hadException());
694 694
695 webSocketScope.socket().didConnect("", ""); 695 webSocketScope.socket().didConnect("", "");
696 UChar nonLatin1String[] = {0x72d0, 0x0914, 0x0000}; 696 UChar nonLatin1String[] = {0x72d0, 0x0914, 0x0000};
697 webSocketScope.socket().send(nonLatin1String, scope.getExceptionState()); 697 webSocketScope.socket().send(nonLatin1String, scope.getExceptionState());
698 698
699 EXPECT_FALSE(scope.getExceptionState().hadException()); 699 EXPECT_FALSE(scope.getExceptionState().hadException());
700 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 700 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
701 } 701 }
702 702
703 TEST(DOMWebSocketTest, sendArrayBufferWhenConnecting) { 703 TEST(DOMWebSocketTest, sendArrayBufferWhenConnecting) {
704 V8TestingScope scope; 704 V8TestingScope scope;
705 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 705 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
706 DOMArrayBufferView* view = DOMUint8Array::create(8); 706 DOMArrayBufferView* view = DOMUint8Array::create(8);
707 { 707 {
708 InSequence s; 708 InSequence s;
709 EXPECT_CALL(webSocketScope.channel(), 709 EXPECT_CALL(webSocketScope.channel(),
710 connect(KURL(KURL(), "ws://example.com/"), String())) 710 connect(KURL(KURL(), "ws://example.com/"), String()))
711 .WillOnce(Return(true)); 711 .WillOnce(Return(true));
712 } 712 }
713 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 713 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
714 scope.getExceptionState()); 714 scope.getExceptionState());
715 715
716 EXPECT_FALSE(scope.getExceptionState().hadException()); 716 EXPECT_FALSE(scope.getExceptionState().hadException());
717 717
718 webSocketScope.socket().send(view->buffer(), scope.getExceptionState()); 718 webSocketScope.socket().send(view->buffer(), scope.getExceptionState());
719 719
720 EXPECT_TRUE(scope.getExceptionState().hadException()); 720 EXPECT_TRUE(scope.getExceptionState().hadException());
721 EXPECT_EQ(InvalidStateError, scope.getExceptionState().code()); 721 EXPECT_EQ(InvalidStateError, scope.getExceptionState().code());
722 EXPECT_EQ("Still in CONNECTING state.", scope.getExceptionState().message()); 722 EXPECT_EQ("Still in CONNECTING state.", scope.getExceptionState().message());
723 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 723 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
724 } 724 }
725 725
726 TEST(DOMWebSocketTest, sendArrayBufferWhenClosing) { 726 TEST(DOMWebSocketTest, sendArrayBufferWhenClosing) {
727 V8TestingScope scope; 727 V8TestingScope scope;
728 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 728 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
729 DOMArrayBufferView* view = DOMUint8Array::create(8); 729 DOMArrayBufferView* view = DOMUint8Array::create(8);
730 { 730 {
731 InSequence s; 731 InSequence s;
732 EXPECT_CALL(webSocketScope.channel(), 732 EXPECT_CALL(webSocketScope.channel(),
733 connect(KURL(KURL(), "ws://example.com/"), String())) 733 connect(KURL(KURL(), "ws://example.com/"), String()))
734 .WillOnce(Return(true)); 734 .WillOnce(Return(true));
735 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _)); 735 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _));
736 } 736 }
737 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 737 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
738 scope.getExceptionState()); 738 scope.getExceptionState());
739 739
740 EXPECT_FALSE(scope.getExceptionState().hadException()); 740 EXPECT_FALSE(scope.getExceptionState().hadException());
741 741
742 webSocketScope.socket().close(scope.getExceptionState()); 742 webSocketScope.socket().close(scope.getExceptionState());
743 EXPECT_FALSE(scope.getExceptionState().hadException()); 743 EXPECT_FALSE(scope.getExceptionState().hadException());
744 744
745 webSocketScope.socket().send(view->buffer(), scope.getExceptionState()); 745 webSocketScope.socket().send(view->buffer(), scope.getExceptionState());
746 746
747 EXPECT_FALSE(scope.getExceptionState().hadException()); 747 EXPECT_FALSE(scope.getExceptionState().hadException());
748 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 748 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
749 } 749 }
750 750
751 TEST(DOMWebSocketTest, sendArrayBufferWhenClosed) { 751 TEST(DOMWebSocketTest, sendArrayBufferWhenClosed) {
752 V8TestingScope scope; 752 V8TestingScope scope;
753 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 753 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
754 Checkpoint checkpoint; 754 Checkpoint checkpoint;
755 DOMArrayBufferView* view = DOMUint8Array::create(8); 755 DOMArrayBufferView* view = DOMUint8Array::create(8);
756 { 756 {
757 InSequence s; 757 InSequence s;
758 EXPECT_CALL(webSocketScope.channel(), 758 EXPECT_CALL(webSocketScope.channel(),
759 connect(KURL(KURL(), "ws://example.com/"), String())) 759 connect(KURL(KURL(), "ws://example.com/"), String()))
760 .WillOnce(Return(true)); 760 .WillOnce(Return(true));
761 EXPECT_CALL(webSocketScope.channel(), disconnect()); 761 EXPECT_CALL(webSocketScope.channel(), disconnect());
762 EXPECT_CALL(checkpoint, Call(1)); 762 EXPECT_CALL(checkpoint, Call(1));
763 } 763 }
764 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 764 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
765 scope.getExceptionState()); 765 scope.getExceptionState());
766 766
767 EXPECT_FALSE(scope.getExceptionState().hadException()); 767 EXPECT_FALSE(scope.getExceptionState().hadException());
768 768
769 webSocketScope.socket().didClose( 769 webSocketScope.socket().didClose(
770 WebSocketChannelClient::ClosingHandshakeIncomplete, 1006, ""); 770 WebSocketChannelClient::ClosingHandshakeIncomplete, 1006, "");
771 checkpoint.Call(1); 771 checkpoint.Call(1);
772 772
773 webSocketScope.socket().send(view->buffer(), scope.getExceptionState()); 773 webSocketScope.socket().send(view->buffer(), scope.getExceptionState());
774 774
775 EXPECT_FALSE(scope.getExceptionState().hadException()); 775 EXPECT_FALSE(scope.getExceptionState().hadException());
776 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().readyState()); 776 EXPECT_EQ(DOMWebSocket::kClosed, webSocketScope.socket().getReadyState());
777 } 777 }
778 778
779 TEST(DOMWebSocketTest, sendArrayBufferSuccess) { 779 TEST(DOMWebSocketTest, sendArrayBufferSuccess) {
780 V8TestingScope scope; 780 V8TestingScope scope;
781 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 781 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
782 DOMArrayBufferView* view = DOMUint8Array::create(8); 782 DOMArrayBufferView* view = DOMUint8Array::create(8);
783 { 783 {
784 InSequence s; 784 InSequence s;
785 EXPECT_CALL(webSocketScope.channel(), 785 EXPECT_CALL(webSocketScope.channel(),
786 connect(KURL(KURL(), "ws://example.com/"), String())) 786 connect(KURL(KURL(), "ws://example.com/"), String()))
787 .WillOnce(Return(true)); 787 .WillOnce(Return(true));
788 EXPECT_CALL(webSocketScope.channel(), send(Ref(*view->buffer()), 0, 8)); 788 EXPECT_CALL(webSocketScope.channel(), send(Ref(*view->buffer()), 0, 8));
789 } 789 }
790 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 790 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
791 scope.getExceptionState()); 791 scope.getExceptionState());
792 792
793 EXPECT_FALSE(scope.getExceptionState().hadException()); 793 EXPECT_FALSE(scope.getExceptionState().hadException());
794 794
795 webSocketScope.socket().didConnect("", ""); 795 webSocketScope.socket().didConnect("", "");
796 webSocketScope.socket().send(view->buffer(), scope.getExceptionState()); 796 webSocketScope.socket().send(view->buffer(), scope.getExceptionState());
797 797
798 EXPECT_FALSE(scope.getExceptionState().hadException()); 798 EXPECT_FALSE(scope.getExceptionState().hadException());
799 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().readyState()); 799 EXPECT_EQ(DOMWebSocket::kOpen, webSocketScope.socket().getReadyState());
800 } 800 }
801 801
802 // FIXME: We should have Blob tests here. 802 // FIXME: We should have Blob tests here.
803 // We can't create a Blob because the blob registration cannot be mocked yet. 803 // We can't create a Blob because the blob registration cannot be mocked yet.
804 804
805 // FIXME: We should add tests for bufferedAmount. 805 // FIXME: We should add tests for bufferedAmount.
806 806
807 // FIXME: We should add tests for data receiving. 807 // FIXME: We should add tests for data receiving.
808 808
809 TEST(DOMWebSocketTest, binaryType) { 809 TEST(DOMWebSocketTest, binaryType) {
(...skipping 22 matching lines...) Expand all
832 InSequence s; 832 InSequence s;
833 EXPECT_CALL(webSocketScope.channel(), 833 EXPECT_CALL(webSocketScope.channel(),
834 connect(KURL(KURL(), "ws://example.com/"), String())) 834 connect(KURL(KURL(), "ws://example.com/"), String()))
835 .WillOnce(Return(true)); 835 .WillOnce(Return(true));
836 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _)); 836 EXPECT_CALL(webSocketScope.channel(), failMock(_, _, _));
837 } 837 }
838 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 838 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
839 scope.getExceptionState()); 839 scope.getExceptionState());
840 840
841 EXPECT_FALSE(scope.getExceptionState().hadException()); 841 EXPECT_FALSE(scope.getExceptionState().hadException());
842 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 842 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
843 843
844 webSocketScope.socket().close(GetParam(), "bye", scope.getExceptionState()); 844 webSocketScope.socket().close(GetParam(), "bye", scope.getExceptionState());
845 845
846 EXPECT_FALSE(scope.getExceptionState().hadException()); 846 EXPECT_FALSE(scope.getExceptionState().hadException());
847 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().readyState()); 847 EXPECT_EQ(DOMWebSocket::kClosing, webSocketScope.socket().getReadyState());
848 } 848 }
849 849
850 INSTANTIATE_TEST_CASE_P(DOMWebSocketValidClosing, 850 INSTANTIATE_TEST_CASE_P(DOMWebSocketValidClosing,
851 DOMWebSocketValidClosingTest, 851 DOMWebSocketValidClosingTest,
852 ::testing::Values(1000, 3000, 3001, 4998, 4999)); 852 ::testing::Values(1000, 3000, 3001, 4998, 4999));
853 853
854 class DOMWebSocketInvalidClosingCodeTest 854 class DOMWebSocketInvalidClosingCodeTest
855 : public ::testing::TestWithParam<unsigned short> {}; 855 : public ::testing::TestWithParam<unsigned short> {};
856 856
857 TEST_P(DOMWebSocketInvalidClosingCodeTest, test) { 857 TEST_P(DOMWebSocketInvalidClosingCodeTest, test) {
858 V8TestingScope scope; 858 V8TestingScope scope;
859 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); 859 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext());
860 { 860 {
861 InSequence s; 861 InSequence s;
862 EXPECT_CALL(webSocketScope.channel(), 862 EXPECT_CALL(webSocketScope.channel(),
863 connect(KURL(KURL(), "ws://example.com/"), String())) 863 connect(KURL(KURL(), "ws://example.com/"), String()))
864 .WillOnce(Return(true)); 864 .WillOnce(Return(true));
865 } 865 }
866 webSocketScope.socket().connect("ws://example.com/", Vector<String>(), 866 webSocketScope.socket().connect("ws://example.com/", Vector<String>(),
867 scope.getExceptionState()); 867 scope.getExceptionState());
868 868
869 EXPECT_FALSE(scope.getExceptionState().hadException()); 869 EXPECT_FALSE(scope.getExceptionState().hadException());
870 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 870 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
871 871
872 webSocketScope.socket().close(GetParam(), "bye", scope.getExceptionState()); 872 webSocketScope.socket().close(GetParam(), "bye", scope.getExceptionState());
873 873
874 EXPECT_TRUE(scope.getExceptionState().hadException()); 874 EXPECT_TRUE(scope.getExceptionState().hadException());
875 EXPECT_EQ(InvalidAccessError, scope.getExceptionState().code()); 875 EXPECT_EQ(InvalidAccessError, scope.getExceptionState().code());
876 EXPECT_EQ(String::format("The code must be either 1000, or between 3000 and " 876 EXPECT_EQ(String::format("The code must be either 1000, or between 3000 and "
877 "4999. %d is neither.", 877 "4999. %d is neither.",
878 GetParam()), 878 GetParam()),
879 scope.getExceptionState().message()); 879 scope.getExceptionState().message());
880 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().readyState()); 880 EXPECT_EQ(DOMWebSocket::kConnecting, webSocketScope.socket().getReadyState());
881 } 881 }
882 882
883 INSTANTIATE_TEST_CASE_P( 883 INSTANTIATE_TEST_CASE_P(
884 DOMWebSocketInvalidClosingCode, 884 DOMWebSocketInvalidClosingCode,
885 DOMWebSocketInvalidClosingCodeTest, 885 DOMWebSocketInvalidClosingCodeTest,
886 ::testing::Values(0, 1, 998, 999, 1001, 2999, 5000, 9999, 65535)); 886 ::testing::Values(0, 1, 998, 999, 1001, 2999, 5000, 9999, 65535));
887 887
888 } // namespace 888 } // namespace
889 889
890 } // namespace blink 890 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698