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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 header_field_value->append("mA=1111"); | 81 header_field_value->append("mA=1111"); |
82 if (i & 2 << 2) { | 82 if (i & 2 << 2) { |
83 header_field_value->append(" "); | 83 header_field_value->append(" "); |
84 } | 84 } |
85 } | 85 } |
86 if (i & 1 << 4) { | 86 if (i & 1 << 4) { |
87 header_field_value->append("; J=s"); | 87 header_field_value->append("; J=s"); |
88 } | 88 } |
89 if (i & 1 << 5) { | 89 if (i & 1 << 5) { |
90 expected_altsvc->probability = 0.33; | 90 expected_altsvc->probability = 0.33; |
91 header_field_value->append("; P=.33"); | 91 header_field_value->append("; P=\".33\""); |
92 } | 92 } |
93 if (i & 1 << 6) { | 93 if (i & 1 << 6) { |
94 expected_altsvc->probability = 0.0; | 94 expected_altsvc->probability = 0.0; |
95 expected_altsvc->version = 24; | 95 expected_altsvc->version = 24; |
96 header_field_value->append("; p=0;v=24"); | 96 header_field_value->append("; p=\"0\";v=24"); |
97 } | 97 } |
98 if (i & 1 << 7) { | 98 if (i & 1 << 7) { |
99 expected_altsvc->max_age = 999999999; | 99 expected_altsvc->max_age = 999999999; |
100 header_field_value->append("; Ma=999999999"); | 100 header_field_value->append("; Ma=999999999"); |
101 } | 101 } |
102 if (i & 1 << 8) { | 102 if (i & 1 << 8) { |
103 expected_altsvc->probability = 0.0; | 103 expected_altsvc->probability = 0.0; |
104 header_field_value->append("; P=0."); | 104 header_field_value->append("; P=\"0.\""); |
105 } | 105 } |
106 if (i & 1 << 9) { | 106 if (i & 1 << 9) { |
107 header_field_value->append(";"); | 107 header_field_value->append(";"); |
108 } | 108 } |
109 if (i & 1 << 10) { | 109 if (i & 1 << 10) { |
110 header_field_value->append(" "); | 110 header_field_value->append(" "); |
111 } | 111 } |
112 if (i & 1 << 11) { | 112 if (i & 1 << 11) { |
113 header_field_value->append(","); | 113 header_field_value->append(","); |
114 } | 114 } |
(...skipping 19 matching lines...) Expand all Loading... |
134 if (i & 1 << 1) { | 134 if (i & 1 << 1) { |
135 altsvc->version = 24; | 135 altsvc->version = 24; |
136 expected_header_field_value->append("; v=24"); | 136 expected_header_field_value->append("; v=24"); |
137 } | 137 } |
138 if (i & 1 << 2) { | 138 if (i & 1 << 2) { |
139 altsvc->max_age = 1111; | 139 altsvc->max_age = 1111; |
140 expected_header_field_value->append("; ma=1111"); | 140 expected_header_field_value->append("; ma=1111"); |
141 } | 141 } |
142 if (i & 1 << 3) { | 142 if (i & 1 << 3) { |
143 altsvc->probability = 0.33; | 143 altsvc->probability = 0.33; |
144 expected_header_field_value->append("; p=0.33"); | 144 expected_header_field_value->append("; p=\"0.33\""); |
145 } | 145 } |
146 } | 146 } |
147 | 147 |
148 class SpdyAltSvcWireFormatTest : public ::testing::Test {}; | 148 class SpdyAltSvcWireFormatTest : public ::testing::Test {}; |
149 | 149 |
150 // Tests of public API. | 150 // Tests of public API. |
151 | 151 |
152 TEST(SpdyAltSvcWireFormatTest, DefaultValues) { | 152 TEST(SpdyAltSvcWireFormatTest, DefaultValues) { |
153 SpdyAltSvcWireFormat::AlternativeService altsvc; | 153 SpdyAltSvcWireFormat::AlternativeService altsvc; |
154 EXPECT_EQ("", altsvc.protocol_id); | 154 EXPECT_EQ("", altsvc.protocol_id); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 | 261 |
262 // ParseHeaderFieldValue() should return false on malformed field values: | 262 // ParseHeaderFieldValue() should return false on malformed field values: |
263 // invalid percent encoding, unmatched quotation mark, empty port, non-numeric | 263 // invalid percent encoding, unmatched quotation mark, empty port, non-numeric |
264 // characters in numeric fields, negative or larger than 1.0 probability. | 264 // characters in numeric fields, negative or larger than 1.0 probability. |
265 TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValueInvalid) { | 265 TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValueInvalid) { |
266 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; | 266 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; |
267 const char* invalid_field_value_array[] = {"a%", "a%x", "a%b", "a%9z", | 267 const char* invalid_field_value_array[] = {"a%", "a%x", "a%b", "a%9z", |
268 "a=", "a=\"", "a=\"b\"", "a=\":\"", "a=\"c:\"", "a=\"c:foo\"", | 268 "a=", "a=\"", "a=\"b\"", "a=\":\"", "a=\"c:\"", "a=\"c:foo\"", |
269 "a=\"c:42foo\"", "a=\"b:42\"bar", "a=\"b:42\" ; m", | 269 "a=\"c:42foo\"", "a=\"b:42\"bar", "a=\"b:42\" ; m", |
270 "a=\"b:42\" ; min-age", "a=\"b:42\" ; ma", "a=\"b:42\" ; ma=", | 270 "a=\"b:42\" ; min-age", "a=\"b:42\" ; ma", "a=\"b:42\" ; ma=", |
271 "a=\"b:42\" ; ma=ma", "a=\"b:42\" ; ma=123bar", "a=\"b:42\" ; p=-2", | 271 "a=\"b:42\" ; ma=ma", "a=\"b:42\" ; ma=123bar", "a=\"b:42\" ; p=\"-2\"", |
272 "a=\"b:42\" ; p=..", "a=\"b:42\" ; p=1.05", | 272 "a=\"b:42\" ; p=\"..\"", "a=\"b:42\" ; p=\"1.05\"", "a=\"b:42\" ; p=0.4", |
273 "a=\"b:42\" ; v=-3", "a=\"b:42\" ; v=1.2"}; | 273 "a=\"b:42\" ; p=\" 1.0\"", "a=\"b:42\" ; v=-3", "a=\"b:42\" ; v=1.2"}; |
274 for (const char* invalid_field_value : invalid_field_value_array) { | 274 for (const char* invalid_field_value : invalid_field_value_array) { |
275 EXPECT_FALSE(SpdyAltSvcWireFormat::ParseHeaderFieldValue( | 275 EXPECT_FALSE(SpdyAltSvcWireFormat::ParseHeaderFieldValue( |
276 invalid_field_value, &altsvc_vector)) | 276 invalid_field_value, &altsvc_vector)) |
277 << invalid_field_value; | 277 << invalid_field_value; |
278 } | 278 } |
279 } | 279 } |
280 | 280 |
281 // ParseHeaderFieldValue() should return false on a field values truncated | 281 // ParseHeaderFieldValue() should return false on a field values truncated |
282 // before closing quotation mark, without trying to access memory beyond the end | 282 // before closing quotation mark, without trying to access memory beyond the end |
283 // of the input. | 283 // of the input. |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 StringPiece input(invalid_input); | 503 StringPiece input(invalid_input); |
504 double probability; | 504 double probability; |
505 EXPECT_FALSE(test::SpdyAltSvcWireFormatPeer::ParseProbability( | 505 EXPECT_FALSE(test::SpdyAltSvcWireFormatPeer::ParseProbability( |
506 input.begin(), input.end(), &probability)); | 506 input.begin(), input.end(), &probability)); |
507 } | 507 } |
508 } | 508 } |
509 | 509 |
510 } // namespace | 510 } // namespace |
511 | 511 |
512 } // namespace net | 512 } // namespace net |
OLD | NEW |