OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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 "net/spdy/spdy_alt_svc_wire_format.h" | 5 #include "net/spdy/spdy_alt_svc_wire_format.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
9 #include "testing/platform_test.h" | 9 #include "testing/platform_test.h" |
10 | 10 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 if (i & 2 << 2) { | 83 if (i & 2 << 2) { |
84 header_field_value->append(" "); | 84 header_field_value->append(" "); |
85 } | 85 } |
86 } | 86 } |
87 if (i & 1 << 4) { | 87 if (i & 1 << 4) { |
88 header_field_value->append("; J=s"); | 88 header_field_value->append("; J=s"); |
89 } | 89 } |
90 expected_altsvc->p = 1.0; | 90 expected_altsvc->p = 1.0; |
91 if (i & 1 << 5) { | 91 if (i & 1 << 5) { |
92 expected_altsvc->p = 0.33; | 92 expected_altsvc->p = 0.33; |
93 header_field_value->append("; P=.33"); | 93 header_field_value->append("; P=\".33\""); |
94 } | 94 } |
95 if (i & 1 << 6) { | 95 if (i & 1 << 6) { |
96 expected_altsvc->p = 0.0; | 96 expected_altsvc->p = 0.0; |
97 header_field_value->append("; p=0"); | 97 header_field_value->append("; p=\"0\""); |
98 } | 98 } |
99 if (i & 1 << 7) { | 99 if (i & 1 << 7) { |
100 expected_altsvc->max_age = 999999999; | 100 expected_altsvc->max_age = 999999999; |
101 header_field_value->append("; Ma=999999999"); | 101 header_field_value->append("; Ma=999999999"); |
102 } | 102 } |
103 if (i & 1 << 8) { | 103 if (i & 1 << 8) { |
104 expected_altsvc->p = 0.0; | 104 expected_altsvc->p = 0.0; |
105 header_field_value->append("; P=0."); | 105 header_field_value->append("; P=\"0.\""); |
106 } | 106 } |
107 if (i & 1 << 9) { | 107 if (i & 1 << 9) { |
108 header_field_value->append(";"); | 108 header_field_value->append(";"); |
109 } | 109 } |
110 if (i & 1 << 10) { | 110 if (i & 1 << 10) { |
111 header_field_value->append(" "); | 111 header_field_value->append(" "); |
112 } | 112 } |
113 if (i & 1 << 11) { | 113 if (i & 1 << 11) { |
114 header_field_value->append(","); | 114 header_field_value->append(","); |
115 } | 115 } |
(...skipping 17 matching lines...) Expand all Loading... |
133 } | 133 } |
134 expected_header_field_value->append(":42\""); | 134 expected_header_field_value->append(":42\""); |
135 altsvc->max_age = 86400; | 135 altsvc->max_age = 86400; |
136 if (i & 1 << 1) { | 136 if (i & 1 << 1) { |
137 altsvc->max_age = 1111; | 137 altsvc->max_age = 1111; |
138 expected_header_field_value->append("; ma=1111"); | 138 expected_header_field_value->append("; ma=1111"); |
139 } | 139 } |
140 altsvc->p = 1.0; | 140 altsvc->p = 1.0; |
141 if (i & 1 << 2) { | 141 if (i & 1 << 2) { |
142 altsvc->p = 0.33; | 142 altsvc->p = 0.33; |
143 expected_header_field_value->append("; p=0.33"); | 143 expected_header_field_value->append("; p=\"0.33\""); |
144 } | 144 } |
145 } | 145 } |
146 | 146 |
147 class SpdyAltSvcWireFormatTest : public ::testing::Test {}; | 147 class SpdyAltSvcWireFormatTest : public ::testing::Test {}; |
148 | 148 |
149 // Tests of public API. | 149 // Tests of public API. |
150 | 150 |
151 TEST(SpdyAltSvcWireFormatTest, ParseEmptyHeaderFieldValue) { | 151 TEST(SpdyAltSvcWireFormatTest, ParseEmptyHeaderFieldValue) { |
152 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; | 152 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; |
153 ASSERT_TRUE(SpdyAltSvcWireFormat::ParseHeaderFieldValue("", &altsvc_vector)); | 153 ASSERT_TRUE(SpdyAltSvcWireFormat::ParseHeaderFieldValue("", &altsvc_vector)); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 | 240 |
241 // ParseHeaderFieldValue() should return false on malformed field values: | 241 // ParseHeaderFieldValue() should return false on malformed field values: |
242 // invalid percent encoding, unmatched quotation mark, empty port, non-numeric | 242 // invalid percent encoding, unmatched quotation mark, empty port, non-numeric |
243 // characters in numeric fields, negative or larger than 1.0 probability. | 243 // characters in numeric fields, negative or larger than 1.0 probability. |
244 TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValueInvalid) { | 244 TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValueInvalid) { |
245 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; | 245 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; |
246 const char* invalid_field_value_array[] = {"a%", "a%x", "a%b", "a%9z", | 246 const char* invalid_field_value_array[] = {"a%", "a%x", "a%b", "a%9z", |
247 "a=", "a=\"", "a=\"b\"", "a=\":\"", "a=\"c:\"", "a=\"c:foo\"", | 247 "a=", "a=\"", "a=\"b\"", "a=\":\"", "a=\"c:\"", "a=\"c:foo\"", |
248 "a=\"c:42foo\"", "a=\"b:42\"bar", "a=\"b:42\" ; m", | 248 "a=\"c:42foo\"", "a=\"b:42\"bar", "a=\"b:42\" ; m", |
249 "a=\"b:42\" ; min-age", "a=\"b:42\" ; ma", "a=\"b:42\" ; ma=", | 249 "a=\"b:42\" ; min-age", "a=\"b:42\" ; ma", "a=\"b:42\" ; ma=", |
250 "a=\"b:42\" ; ma=ma", "a=\"b:42\" ; ma=123bar", "a=\"b:42\" ; p=-2", | 250 "a=\"b:42\" ; ma=ma", "a=\"b:42\" ; ma=123bar", "a=\"b:42\" ; p=\"-2\"", |
251 "a=\"b:42\" ; p=..", "a=\"b:42\" ; p=1.05"}; | 251 "a=\"b:42\" ; p=\"..\"", "a=\"b:42\" ; p=\"1.05\"", "a=\"b:42\" ; p=0.4", |
| 252 "a=\"b:42\" ; p=\" 1.0\""}; |
252 for (const char* invalid_field_value : invalid_field_value_array) { | 253 for (const char* invalid_field_value : invalid_field_value_array) { |
253 EXPECT_FALSE(SpdyAltSvcWireFormat::ParseHeaderFieldValue( | 254 EXPECT_FALSE(SpdyAltSvcWireFormat::ParseHeaderFieldValue( |
254 invalid_field_value, &altsvc_vector)) | 255 invalid_field_value, &altsvc_vector)) |
255 << invalid_field_value; | 256 << invalid_field_value; |
256 } | 257 } |
257 } | 258 } |
258 | 259 |
259 // ParseHeaderFieldValue() should return false on a field values truncated | 260 // ParseHeaderFieldValue() should return false on a field values truncated |
260 // before closing quotation mark, without trying to access memory beyond the end | 261 // before closing quotation mark, without trying to access memory beyond the end |
261 // of the input. | 262 // of the input. |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 StringPiece input(invalid_input); | 482 StringPiece input(invalid_input); |
482 double probability; | 483 double probability; |
483 EXPECT_FALSE(test::SpdyAltSvcWireFormatPeer::ParseProbability( | 484 EXPECT_FALSE(test::SpdyAltSvcWireFormatPeer::ParseProbability( |
484 input.begin(), input.end(), &probability)); | 485 input.begin(), input.end(), &probability)); |
485 } | 486 } |
486 } | 487 } |
487 | 488 |
488 } // namespace | 489 } // namespace |
489 | 490 |
490 } // namespace net | 491 } // namespace net |
OLD | NEW |