| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/fetch/MultipartImageResourceParser.h" | 5 #include "core/fetch/MultipartImageResourceParser.h" |
| 6 | 6 |
| 7 #include "platform/network/ResourceResponse.h" | 7 #include "platform/network/ResourceResponse.h" |
| 8 #include "public/platform/Platform.h" | 8 #include "public/platform/Platform.h" |
| 9 #include "public/platform/WebURL.h" | 9 #include "public/platform/WebURL.h" |
| 10 #include "public/platform/WebURLResponse.h" | 10 #include "public/platform/WebURLResponse.h" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 { "Foo: bar\nBaz:\n\nAfter:\n", true, 15 }, | 82 { "Foo: bar\nBaz:\n\nAfter:\n", true, 15 }, |
| 83 { "Foo: bar\nBaz:\n", false, 0}, | 83 { "Foo: bar\nBaz:\n", false, 0}, |
| 84 { "Foo: bar\r\nBaz:\r\n\r\nAfter:\r\n", true, 18 }, | 84 { "Foo: bar\r\nBaz:\r\n\r\nAfter:\r\n", true, 18 }, |
| 85 { "Foo: bar\r\nBaz:\r\n", false, 0 }, | 85 { "Foo: bar\r\nBaz:\r\n", false, 0 }, |
| 86 { "Foo: bar\nBaz:\r\n\r\nAfter:\n\n", true, 17 }, | 86 { "Foo: bar\nBaz:\r\n\r\nAfter:\n\n", true, 17 }, |
| 87 { "Foo: bar\r\nBaz:\n", false, 0 }, | 87 { "Foo: bar\r\nBaz:\n", false, 0 }, |
| 88 { "\r\n", true, 2 }, | 88 { "\r\n", true, 2 }, |
| 89 }; | 89 }; |
| 90 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { | 90 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { |
| 91 WebURLResponse response; | 91 WebURLResponse response; |
| 92 response.initialize(); | |
| 93 size_t end = 0; | 92 size_t end = 0; |
| 94 bool result = Platform::current()->parseMultipartHeadersFromBody(tests[i
].data, strlen(tests[i].data), &response, &end); | 93 bool result = Platform::current()->parseMultipartHeadersFromBody(tests[i
].data, strlen(tests[i].data), &response, &end); |
| 95 EXPECT_EQ(tests[i].result, result); | 94 EXPECT_EQ(tests[i].result, result); |
| 96 EXPECT_EQ(tests[i].end, end); | 95 EXPECT_EQ(tests[i].end, end); |
| 97 } | 96 } |
| 98 } | 97 } |
| 99 | 98 |
| 100 TEST(MultipartResponseTest, ParseMultipartHeaders) | 99 TEST(MultipartResponseTest, ParseMultipartHeaders) |
| 101 { | 100 { |
| 102 WebURLResponse webResponse; | 101 WebURLResponse webResponse; |
| 103 webResponse.initialize(); | |
| 104 webResponse.addHTTPHeaderField(WebString::fromLatin1("foo"), WebString::from
Latin1("bar")); | 102 webResponse.addHTTPHeaderField(WebString::fromLatin1("foo"), WebString::from
Latin1("bar")); |
| 105 webResponse.addHTTPHeaderField(WebString::fromLatin1("range"), WebString::fr
omLatin1("piyo")); | 103 webResponse.addHTTPHeaderField(WebString::fromLatin1("range"), WebString::fr
omLatin1("piyo")); |
| 106 webResponse.addHTTPHeaderField(WebString::fromLatin1("content-length"), WebS
tring::fromLatin1("999")); | 104 webResponse.addHTTPHeaderField(WebString::fromLatin1("content-length"), WebS
tring::fromLatin1("999")); |
| 107 | 105 |
| 108 const char data[] = "content-type: image/png\ncontent-length: 10\n\n"; | 106 const char data[] = "content-type: image/png\ncontent-length: 10\n\n"; |
| 109 size_t end = 0; | 107 size_t end = 0; |
| 110 bool result = Platform::current()->parseMultipartHeadersFromBody(data, strle
n(data), &webResponse, &end); | 108 bool result = Platform::current()->parseMultipartHeadersFromBody(data, strle
n(data), &webResponse, &end); |
| 111 const ResourceResponse& response = webResponse.toResourceResponse(); | 109 const ResourceResponse& response = webResponse.toResourceResponse(); |
| 112 | 110 |
| 113 EXPECT_TRUE(result); | 111 EXPECT_TRUE(result); |
| 114 EXPECT_EQ(strlen(data), end); | 112 EXPECT_EQ(strlen(data), end); |
| 115 EXPECT_EQ("image/png", response.httpHeaderField("content-type")); | 113 EXPECT_EQ("image/png", response.httpHeaderField("content-type")); |
| 116 EXPECT_EQ("10", response.httpHeaderField("content-length")); | 114 EXPECT_EQ("10", response.httpHeaderField("content-length")); |
| 117 EXPECT_EQ("bar", response.httpHeaderField("foo")); | 115 EXPECT_EQ("bar", response.httpHeaderField("foo")); |
| 118 EXPECT_EQ(AtomicString(), response.httpHeaderField("range")); | 116 EXPECT_EQ(AtomicString(), response.httpHeaderField("range")); |
| 119 } | 117 } |
| 120 | 118 |
| 121 TEST(MultipartResponseTest, ParseMultipartHeadersContentCharset) | 119 TEST(MultipartResponseTest, ParseMultipartHeadersContentCharset) |
| 122 { | 120 { |
| 123 WebURLResponse webResponse; | 121 WebURLResponse webResponse; |
| 124 webResponse.initialize(); | |
| 125 | 122 |
| 126 const char data[] = "content-type: text/html; charset=utf-8\n\n"; | 123 const char data[] = "content-type: text/html; charset=utf-8\n\n"; |
| 127 size_t end = 0; | 124 size_t end = 0; |
| 128 bool result = Platform::current()->parseMultipartHeadersFromBody(data, strle
n(data), &webResponse, &end); | 125 bool result = Platform::current()->parseMultipartHeadersFromBody(data, strle
n(data), &webResponse, &end); |
| 129 const ResourceResponse& response = webResponse.toResourceResponse(); | 126 const ResourceResponse& response = webResponse.toResourceResponse(); |
| 130 | 127 |
| 131 EXPECT_TRUE(result); | 128 EXPECT_TRUE(result); |
| 132 EXPECT_EQ(strlen(data), end); | 129 EXPECT_EQ(strlen(data), end); |
| 133 EXPECT_EQ("text/html; charset=utf-8", response.httpHeaderField("content-type
")); | 130 EXPECT_EQ("text/html; charset=utf-8", response.httpHeaderField("content-type
")); |
| 134 EXPECT_EQ("utf-8", response.textEncodingName()); | 131 EXPECT_EQ("utf-8", response.textEncodingName()); |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 EXPECT_EQ("\r\ncontent-type: 1\r\n\r\n\r\n\r\n", toString(client->m_data[1])
); | 495 EXPECT_EQ("\r\ncontent-type: 1\r\n\r\n\r\n\r\n", toString(client->m_data[1])
); |
| 499 EXPECT_EQ(String(), client->m_responses[2].httpHeaderField("content-type")); | 496 EXPECT_EQ(String(), client->m_responses[2].httpHeaderField("content-type")); |
| 500 EXPECT_EQ("content-type: 2\r\n\r\n\r\n\r\n", toString(client->m_data[2])); | 497 EXPECT_EQ("content-type: 2\r\n\r\n\r\n\r\n", toString(client->m_data[2])); |
| 501 EXPECT_EQ("3", client->m_responses[3].httpHeaderField("content-type")); | 498 EXPECT_EQ("3", client->m_responses[3].httpHeaderField("content-type")); |
| 502 EXPECT_EQ("", toString(client->m_data[3])); | 499 EXPECT_EQ("", toString(client->m_data[3])); |
| 503 } | 500 } |
| 504 | 501 |
| 505 } // namespace | 502 } // namespace |
| 506 | 503 |
| 507 } // namespace blink | 504 } // namespace blink |
| OLD | NEW |