mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
script: Refactor dom/headers to match spec better (#36943)
This includes removing an implementation of normalize for `ByteString`, because it is effectively duplicated in net under `trim_http_whitespace`. This is part of an attempt to cleanup and centralize code for header parsing and manipulation. Testing: Covered by existing WPT tests Signed-off-by: Sebastian C <sebsebmc@gmail.com>
This commit is contained in:
parent
aaacd61800
commit
cdf5fdd2b4
5 changed files with 121 additions and 231 deletions
|
@ -1,75 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use script::test::{ByteString, normalize_value};
|
||||
|
||||
#[test]
|
||||
fn test_normalize_empty_bytestring() {
|
||||
// empty ByteString test
|
||||
let empty_bytestring = ByteString::new(vec![]);
|
||||
let actual = normalize_value(empty_bytestring);
|
||||
let expected = ByteString::new(vec![]);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_all_whitespace_bytestring() {
|
||||
// All whitespace test. A horizontal tab, a line feed, a carriage return , and a space
|
||||
let all_whitespace_bytestring = ByteString::new(vec![b'\t', b'\n', b'\r', b' ']);
|
||||
let actual = normalize_value(all_whitespace_bytestring);
|
||||
let expected = ByteString::new(vec![]);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_non_empty_no_whitespace_bytestring() {
|
||||
// Non-empty, no whitespace ByteString test
|
||||
let no_whitespace_bytestring = ByteString::new(vec![b'S', b'!']);
|
||||
let actual = normalize_value(no_whitespace_bytestring);
|
||||
let expected = ByteString::new(vec![b'S', b'!']);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_non_empty_leading_whitespace_bytestring() {
|
||||
// Non-empty, leading whitespace, no trailing whitespace ByteString test
|
||||
let leading_whitespace_bytestring =
|
||||
ByteString::new(vec![b'\t', b'\n', b' ', b'\r', b'S', b'!']);
|
||||
let actual = normalize_value(leading_whitespace_bytestring);
|
||||
let expected = ByteString::new(vec![b'S', b'!']);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_non_empty_no_leading_whitespace_trailing_whitespace_bytestring() {
|
||||
// Non-empty, no leading whitespace, but with trailing whitespace ByteString test
|
||||
let trailing_whitespace_bytestring =
|
||||
ByteString::new(vec![b'S', b'!', b'\t', b'\n', b' ', b'\r']);
|
||||
let actual = normalize_value(trailing_whitespace_bytestring);
|
||||
let expected = ByteString::new(vec![b'S', b'!']);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_non_empty_leading_and_trailing_whitespace_bytestring() {
|
||||
// Non-empty, leading whitespace, and trailing whitespace ByteString test
|
||||
let whitespace_sandwich_bytestring = ByteString::new(vec![
|
||||
b'\t', b'\n', b' ', b'\r', b'S', b'!', b'\t', b'\n', b' ', b'\r',
|
||||
]);
|
||||
let actual = normalize_value(whitespace_sandwich_bytestring);
|
||||
let expected = ByteString::new(vec![b'S', b'!']);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_normalize_non_empty_leading_trailing_and_internal_whitespace_bytestring() {
|
||||
// Non-empty, leading whitespace, trailing whitespace,
|
||||
// and internal whitespace ByteString test
|
||||
let whitespace_bigmac_bytestring = ByteString::new(vec![
|
||||
b'\t', b'\n', b' ', b'\r', b'S', b'\t', b'\n', b' ', b'\r', b'!', b'\t', b'\n', b' ', b'\r',
|
||||
]);
|
||||
let actual = normalize_value(whitespace_bigmac_bytestring);
|
||||
let expected = ByteString::new(vec![b'S', b'\t', b'\n', b' ', b'\r', b'!']);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
|
@ -2,8 +2,6 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#[cfg(test)]
|
||||
mod headers;
|
||||
#[cfg(test)]
|
||||
mod htmlareaelement;
|
||||
#[cfg(test)]
|
||||
|
|
|
@ -1,19 +1,3 @@
|
|||
[request-headers.any.html]
|
||||
[Adding invalid request header "Set-Cookie: KO"]
|
||||
expected: FAIL
|
||||
|
||||
[Adding invalid request header "Access-Control-Request-Private-Network: KO"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[request-headers.any.worker.html]
|
||||
[Adding invalid request header "Set-Cookie: KO"]
|
||||
expected: FAIL
|
||||
|
||||
[Adding invalid request header "Access-Control-Request-Private-Network: KO"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[request-headers.any.serviceworker.html]
|
||||
expected: ERROR
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue