Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / websockets / WebSocketPerMessageDeflateTest.cpp
index cebd4ef..f78dba8 100644 (file)
 #include "config.h"
 #include "modules/websockets/WebSocketPerMessageDeflate.h"
 
-#include "wtf/Vector.h"
 #include "wtf/text/StringHash.h"
 
 #include <algorithm>
 #include <gtest/gtest.h>
 #include <iterator>
 
-using namespace WebCore;
-
+namespace blink {
 namespace {
 
 TEST(WebSocketPerMessageDeflateTest, TestDeflateHelloTakeOver)
@@ -188,8 +186,8 @@ TEST(WebSocketPerMessageDeflateTest, TestDeflateEmptyMessages)
 
     c.resetDeflateBuffer();
     ASSERT_TRUE(c.deflate(f2));
-    EXPECT_EQ(2u, f2.payloadLength);
-    EXPECT_EQ(0, memcmp("\x02\x00", f2.payload, f2.payloadLength));
+    EXPECT_EQ(1u, f2.payloadLength);
+    EXPECT_EQ(0, memcmp("\x00", f2.payload, f2.payloadLength));
     EXPECT_TRUE(f2.final);
     EXPECT_FALSE(f2.compress);
 
@@ -292,6 +290,31 @@ TEST(WebSocketPerMessageDeflateTest, TestInflate)
     EXPECT_TRUE(f3.final);
 }
 
+TEST(WebSocketPerMessageDeflateTest, TestInflateMultipleBlocksOverMultipleFrames)
+{
+    WebSocketPerMessageDeflate c;
+    c.enable(8, WebSocketDeflater::TakeOverContext);
+    WebSocketFrame::OpCode opcode = WebSocketFrame::OpCodeText;
+    WebSocketFrame::OpCode continuation = WebSocketFrame::OpCodeContinuation;
+    std::string expected = "HelloHello";
+    std::string actual;
+    WebSocketFrame f1(opcode, "\xf2\x48\xcd\xc9\xc9\x07\x00\x00\x00\xff\xff", 11, WebSocketFrame::Compress);
+    WebSocketFrame f2(continuation, "\xf2\x00\x11\x00\x00", 5, WebSocketFrame::Final);
+
+    ASSERT_TRUE(c.inflate(f1));
+    EXPECT_FALSE(f1.compress);
+    EXPECT_FALSE(f1.final);
+    actual += std::string(f1.payload, f1.payloadLength);
+
+    c.resetInflateBuffer();
+    ASSERT_TRUE(c.inflate(f2));
+    EXPECT_FALSE(f2.compress);
+    EXPECT_TRUE(f2.final);
+    actual += std::string(f2.payload, f2.payloadLength);
+
+    EXPECT_EQ(expected, actual);
+}
+
 TEST(WebSocketPerMessageDeflateTest, TestInflateEmptyFrame)
 {
     WebSocketPerMessageDeflate c;
@@ -484,4 +507,6 @@ TEST(WebSocketPerMessageDeflateTest, TestNegotiationRequest)
     String actual = WebSocketPerMessageDeflate().createExtensionProcessor()->handshakeString();
     EXPECT_EQ(String("permessage-deflate; client_max_window_bits"), actual);
 }
+
 } // namespace
+} // namespace blink