| 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/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |