| 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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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().readyState()); |
| 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.push_back("@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().readyState()); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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().readyState()); |
| 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.push_back("aa"); |
| 250 subprotocols.append("bb"); | 250 subprotocols.push_back("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().readyState()); |
| 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.push_back("aa"); |
| 275 subprotocols.append("bb"); | 275 subprotocols.push_back("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/", |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 String s; | 318 String s; |
| 319 s.append(static_cast<UChar>(i)); | 319 s.append(static_cast<UChar>(i)); |
| 320 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString(s)); | 320 EXPECT_FALSE(DOMWebSocket::isValidSubprotocolString(s)); |
| 321 } | 321 } |
| 322 } | 322 } |
| 323 | 323 |
| 324 TEST(DOMWebSocketTest, connectSuccess) { | 324 TEST(DOMWebSocketTest, connectSuccess) { |
| 325 V8TestingScope scope; | 325 V8TestingScope scope; |
| 326 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); | 326 DOMWebSocketTestScope webSocketScope(scope.getExecutionContext()); |
| 327 Vector<String> subprotocols; | 327 Vector<String> subprotocols; |
| 328 subprotocols.append("aa"); | 328 subprotocols.push_back("aa"); |
| 329 subprotocols.append("bb"); | 329 subprotocols.push_back("bb"); |
| 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()); |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 |