From 8995b83bcbfbb68245f779b64e5517627c6cc6ea Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 17 Oct 2012 16:21:14 +0200 Subject: Imported WebKit commit cf4f8fc6f19b0629f51860cb2d4b25e139d07e00 (http://svn.webkit.org/repository/webkit/trunk@131592) New snapshot that includes the build fixes for Mac OS X 10.6 and earlier as well as the previously cherry-picked changes --- .../tests/WebSocketExtensionDispatcherTest.cpp | 44 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) (limited to 'Source/WebKit/chromium/tests/WebSocketExtensionDispatcherTest.cpp') diff --git a/Source/WebKit/chromium/tests/WebSocketExtensionDispatcherTest.cpp b/Source/WebKit/chromium/tests/WebSocketExtensionDispatcherTest.cpp index 358983b83..52905bab1 100644 --- a/Source/WebKit/chromium/tests/WebSocketExtensionDispatcherTest.cpp +++ b/Source/WebKit/chromium/tests/WebSocketExtensionDispatcherTest.cpp @@ -27,9 +27,11 @@ #include "WebSocketExtensionDispatcher.h" +#include "WebSocketExtensionParser.h" #include "WebSocketExtensionProcessor.h" #include +#include #include using namespace WebCore; @@ -103,10 +105,10 @@ TEST_F(WebSocketExtensionDispatcherTest, TestParameters) EXPECT_EQ(2, m_parsedParameters[0].size()); HashMap::iterator parameter = m_parsedParameters[0].find("max-channels"); EXPECT_TRUE(parameter != m_parsedParameters[0].end()); - EXPECT_EQ("4", parameter->second); + EXPECT_EQ("4", parameter->value); parameter = m_parsedParameters[0].find("flow-control"); EXPECT_TRUE(parameter != m_parsedParameters[0].end()); - EXPECT_TRUE(parameter->second.isNull()); + EXPECT_TRUE(parameter->value.isNull()); } TEST_F(WebSocketExtensionDispatcherTest, TestMultiple) @@ -131,12 +133,12 @@ TEST_F(WebSocketExtensionDispatcherTest, TestMultiple) const HashMap& parsedParameters = m_parsedParameters[i]; EXPECT_EQ(expected[i].parameters.size(), m_parsedParameters[i].size()); for (HashMap::const_iterator iterator = expectedParameters.begin(); iterator != expectedParameters.end(); ++iterator) { - HashMap::const_iterator parsed = parsedParameters.find(iterator->first); + HashMap::const_iterator parsed = parsedParameters.find(iterator->key); EXPECT_TRUE(parsed != parsedParameters.end()); - if (iterator->second.isNull()) - EXPECT_TRUE(parsed->second.isNull()); + if (iterator->value.isNull()) + EXPECT_TRUE(parsed->value.isNull()); else - EXPECT_EQ(iterator->second, parsed->second); + EXPECT_EQ(iterator->value, parsed->value); } } } @@ -176,4 +178,34 @@ TEST_F(WebSocketExtensionDispatcherTest, TestInvalid) } } +// Tests for the most complex example at http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-01#section-3.1 +TEST_F(WebSocketExtensionDispatcherTest, TestPerMessageCompressExample) +{ + addMockProcessor("permessage-compress"); + addMockProcessor("bar"); + EXPECT_TRUE(m_extensions.processHeaderValue("permessage-compress; method=\"foo; x=\\\"Hello World\\\", bar\"")); + EXPECT_EQ(1U, m_parsedExtensionTokens.size()); + EXPECT_EQ("permessage-compress", m_parsedExtensionTokens[0]); + String methodParameter = m_parsedParameters[0].find("method")->value; + EXPECT_EQ("foo; x=\"Hello World\", bar", methodParameter); + + CString methodValue = methodParameter.ascii(); + WebSocketExtensionParser parser(methodValue.data(), methodValue.data() + methodValue.length()); + + String token1; + HashMap parameters1; + EXPECT_TRUE(parser.parseExtension(token1, parameters1)); + EXPECT_EQ("foo", token1); + EXPECT_EQ(1, parameters1.size()); + HashMap::iterator xparameter = parameters1.find("x"); + EXPECT_EQ("x", xparameter->key); + EXPECT_EQ("Hello World", xparameter->value); + + String token2; + HashMap parameters2; + EXPECT_TRUE(parser.parseExtension(token2, parameters2)); + EXPECT_EQ("bar", token2); + EXPECT_EQ(0, parameters2.size()); +} + } -- cgit v1.2.1