aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ohos.yml5
-rw-r--r--Cargo.lock43
-rw-r--r--components/layout/dom.rs14
-rw-r--r--components/layout/flexbox/mod.rs6
-rw-r--r--components/layout/flow/inline/construct.rs2
-rw-r--r--components/layout/flow/inline/mod.rs23
-rw-r--r--components/layout/flow/mod.rs22
-rw-r--r--components/layout/formatting_contexts.rs16
-rw-r--r--components/layout/table/mod.rs5
-rw-r--r--components/layout/taffy/mod.rs6
-rw-r--r--components/layout/traversal.rs5
-rw-r--r--components/net/fetch/methods.rs29
-rw-r--r--components/script/dom/blob.rs71
-rw-r--r--components/script/dom/headers.rs73
-rw-r--r--components/script/dom/xmlhttprequest.rs155
-rw-r--r--components/script/stylesheet_loader.rs14
-rw-r--r--components/script_bindings/codegen/Bindings.conf2
-rw-r--r--components/shared/net/Cargo.toml1
-rw-r--r--components/shared/net/fetch/headers.rs93
-rw-r--r--components/shared/net/response.rs10
-rw-r--r--components/webdriver_server/actions.rs185
-rw-r--r--tests/wpt/meta/encoding/single-byte-decoder.window.js.ini2
-rw-r--r--tests/wpt/meta/fetch/content-type/response.window.js.ini111
-rw-r--r--tests/wpt/meta/fetch/content-type/script.window.js.ini57
-rw-r--r--tests/wpt/meta/fetch/nosniff/script.html.ini3
-rw-r--r--tests/wpt/meta/fetch/nosniff/stylesheet.html.ini6
-rw-r--r--tests/wpt/meta/fetch/nosniff/worker.html.ini3
-rw-r--r--tests/wpt/meta/mimesniff/mime-types/charset-parameter.window.js.ini30
-rw-r--r--tests/wpt/meta/mimesniff/mime-types/parsing.any.js.ini780
-rw-r--r--tests/wpt/meta/workers/importscripts_mime.any.js.ini3
30 files changed, 454 insertions, 1321 deletions
diff --git a/.github/workflows/ohos.yml b/.github/workflows/ohos.yml
index 0fe92dcf5c7..404e305f61b 100644
--- a/.github/workflows/ohos.yml
+++ b/.github/workflows/ohos.yml
@@ -243,6 +243,9 @@ jobs:
run: hitrace-bench --bencher -b "org.servo.servo" -p "https://www.servo.org" -n 5
- name: Getting bencher
uses: bencherdev/bencher@main
+ - name: Getting model name
+ run: |
+ echo "MODEL_NAME=$(hdc bugreport | head -n 20 | grep MarketName | awk '{for (i=2; i<NF; i++) printf $i " "; print $NF}' -)" >> $GITHUB_ENV
- name: Uploading to bencher.dev
run: |
- bencher run --adapter json --file bench.json --project '${{ env.BENCHER_PROJECT }}' --token '${{ secrets.BENCHER_API_TOKEN }}' --github-actions '${{ secrets.GITHUB_TOKEN }}'
+ bencher run --adapter json --file bench.json --project '${{ env.BENCHER_PROJECT }}' --token '${{ secrets.BENCHER_API_TOKEN }}' --github-actions '${{ secrets.GITHUB_TOKEN }}' --testbed="$MODEL_NAME"
diff --git a/Cargo.lock b/Cargo.lock
index a8d3f512d61..8e56aa33ed9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1065,7 +1065,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
dependencies = [
"lazy_static",
- "windows-sys 0.59.0",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -1224,7 +1224,7 @@ dependencies = [
[[package]]
name = "content-security-policy"
version = "0.5.4"
-source = "git+https://github.com/servo/rust-content-security-policy/?branch=servo-csp#334bfcbf0a3f503b21c90aee6aee30d4b8c9558a"
+source = "git+https://github.com/servo/rust-content-security-policy/?branch=servo-csp#58a09ee320fd6fbb828748ae04255e4c8d3f9c9e"
dependencies = [
"base64 0.22.1",
"bitflags 2.9.1",
@@ -2033,7 +2033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2560,7 +2560,7 @@ dependencies = [
"gobject-sys",
"libc",
"system-deps",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -4002,7 +4002,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
dependencies = [
"hermit-abi 0.5.0",
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -4255,7 +4255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c"
dependencies = [
"cfg-if",
- "windows-targets 0.52.6",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -4864,6 +4864,7 @@ dependencies = [
"content-security-policy",
"cookie 0.18.1",
"crossbeam-channel",
+ "data-url",
"embedder_traits",
"headers 0.4.0",
"http 1.3.1",
@@ -6177,7 +6178,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -6509,7 +6510,7 @@ dependencies = [
[[package]]
name = "selectors"
version = "0.28.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"bitflags 2.9.1",
"cssparser",
@@ -6804,7 +6805,7 @@ dependencies = [
[[package]]
name = "servo_arc"
version = "0.4.1"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"serde",
"stable_deref_trait",
@@ -7265,7 +7266,7 @@ dependencies = [
[[package]]
name = "stylo"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"app_units",
"arrayvec",
@@ -7323,7 +7324,7 @@ dependencies = [
[[package]]
name = "stylo_atoms"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"string_cache",
"string_cache_codegen",
@@ -7332,12 +7333,12 @@ dependencies = [
[[package]]
name = "stylo_config"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
[[package]]
name = "stylo_derive"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"darling",
"proc-macro2",
@@ -7349,7 +7350,7 @@ dependencies = [
[[package]]
name = "stylo_dom"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"bitflags 2.9.1",
"stylo_malloc_size_of",
@@ -7358,7 +7359,7 @@ dependencies = [
[[package]]
name = "stylo_malloc_size_of"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"app_units",
"cssparser",
@@ -7375,12 +7376,12 @@ dependencies = [
[[package]]
name = "stylo_static_prefs"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
[[package]]
name = "stylo_traits"
version = "0.3.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"app_units",
"bitflags 2.9.1",
@@ -7544,7 +7545,7 @@ dependencies = [
"getrandom",
"once_cell",
"rustix",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -7763,7 +7764,7 @@ dependencies = [
[[package]]
name = "to_shmem"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"cssparser",
"servo_arc",
@@ -7776,7 +7777,7 @@ dependencies = [
[[package]]
name = "to_shmem_derive"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-05-01#bc815af4b5ae01768eaef64d21cebe6d66be06ea"
+source = "git+https://github.com/servo/stylo?branch=2025-05-01#fb74b958cc7bb93a9335766130d6711ad3e071ce"
dependencies = [
"darling",
"proc-macro2",
@@ -8901,7 +8902,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.48.0",
]
[[package]]
diff --git a/components/layout/dom.rs b/components/layout/dom.rs
index e3a22eb5197..88176ffbbb0 100644
--- a/components/layout/dom.rs
+++ b/components/layout/dom.rs
@@ -126,15 +126,15 @@ impl LayoutBox {
.repair_style(context, node, new_style);
}
},
- LayoutBox::FlexLevel(flex_level_box) => {
- flex_level_box.borrow_mut().repair_style(context, new_style)
- },
+ LayoutBox::FlexLevel(flex_level_box) => flex_level_box
+ .borrow_mut()
+ .repair_style(context, node, new_style),
LayoutBox::TableLevelBox(table_level_box) => {
- table_level_box.repair_style(context, new_style)
- },
- LayoutBox::TaffyItemBox(taffy_item_box) => {
- taffy_item_box.borrow_mut().repair_style(context, new_style)
+ table_level_box.repair_style(context, node, new_style)
},
+ LayoutBox::TaffyItemBox(taffy_item_box) => taffy_item_box
+ .borrow_mut()
+ .repair_style(context, node, new_style),
}
}
}
diff --git a/components/layout/flexbox/mod.rs b/components/layout/flexbox/mod.rs
index 91a12b31812..96a311ee2b5 100644
--- a/components/layout/flexbox/mod.rs
+++ b/components/layout/flexbox/mod.rs
@@ -4,6 +4,7 @@
use geom::{FlexAxis, MainStartCrossStart};
use malloc_size_of_derive::MallocSizeOf;
+use script::layout_dom::ServoLayoutNode;
use servo_arc::Arc as ServoArc;
use style::context::SharedStyleContext;
use style::logical_geometry::WritingMode;
@@ -154,16 +155,17 @@ impl FlexLevelBox {
pub(crate) fn repair_style(
&mut self,
context: &SharedStyleContext,
+ node: &ServoLayoutNode,
new_style: &ServoArc<ComputedValues>,
) {
match self {
FlexLevelBox::FlexItem(flex_item_box) => flex_item_box
.independent_formatting_context
- .repair_style(context, new_style),
+ .repair_style(context, node, new_style),
FlexLevelBox::OutOfFlowAbsolutelyPositionedBox(positioned_box) => positioned_box
.borrow_mut()
.context
- .repair_style(context, new_style),
+ .repair_style(context, node, new_style),
}
}
diff --git a/components/layout/flow/inline/construct.rs b/components/layout/flow/inline/construct.rs
index a99de1679a4..600da9b721a 100644
--- a/components/layout/flow/inline/construct.rs
+++ b/components/layout/flow/inline/construct.rs
@@ -31,7 +31,7 @@ pub(crate) struct InlineFormattingContextBuilder {
/// inline box stack, and importantly, one for every `display: contents` element that we are
/// currently processing. Normally `display: contents` elements don't affect the structure of
/// the [`InlineFormattingContext`], but the styles they provide do style their children.
- shared_inline_styles_stack: Vec<SharedInlineStyles>,
+ pub shared_inline_styles_stack: Vec<SharedInlineStyles>,
/// The collection of text strings that make up this [`InlineFormattingContext`] under
/// construction.
diff --git a/components/layout/flow/inline/mod.rs b/components/layout/flow/inline/mod.rs
index 7e69aa1aaae..74d42ca6fb4 100644
--- a/components/layout/flow/inline/mod.rs
+++ b/components/layout/flow/inline/mod.rs
@@ -91,6 +91,7 @@ use line_breaker::LineBreaker;
use malloc_size_of_derive::MallocSizeOf;
use range::Range;
use script::layout_dom::ServoLayoutNode;
+use script_layout_interface::wrapper_traits::{LayoutNode, ThreadSafeLayoutNode};
use servo_arc::Arc;
use style::Zero;
use style::computed_values::text_wrap_mode::T as TextWrapMode;
@@ -158,6 +159,10 @@ pub(crate) struct InlineFormattingContext {
/// context in order to avoid duplicating this information.
pub font_metrics: Vec<FontKeyAndMetrics>,
+ /// The [`SharedInlineStyles`] for the root of this [`InlineFormattingContext`] that are used to
+ /// share styles with all [`TextRun`] children.
+ pub(super) shared_inline_styles: SharedInlineStyles,
+
pub(super) text_decoration_line: TextDecorationLine,
/// Whether this IFC contains the 1st formatted line of an element:
@@ -237,12 +242,14 @@ impl InlineItem {
InlineItem::OutOfFlowAbsolutelyPositionedBox(positioned_box, ..) => positioned_box
.borrow_mut()
.context
- .repair_style(context, new_style),
+ .repair_style(context, node, new_style),
InlineItem::OutOfFlowFloatBox(float_box) => float_box
.borrow_mut()
.contents
- .repair_style(context, new_style),
- InlineItem::Atomic(atomic, ..) => atomic.borrow_mut().repair_style(context, new_style),
+ .repair_style(context, node, new_style),
+ InlineItem::Atomic(atomic, ..) => {
+ atomic.borrow_mut().repair_style(context, node, new_style)
+ },
}
}
@@ -1699,6 +1706,11 @@ impl InlineFormattingContext {
inline_items: builder.inline_items,
inline_boxes: builder.inline_boxes,
font_metrics,
+ shared_inline_styles: builder
+ .shared_inline_styles_stack
+ .last()
+ .expect("Should have at least one SharedInlineStyle for the root of an IFC")
+ .clone(),
text_decoration_line: propagated_data.text_decoration,
has_first_formatted_line,
contains_floats: builder.contains_floats,
@@ -1707,6 +1719,11 @@ impl InlineFormattingContext {
}
}
+ pub(crate) fn repair_style(&self, node: &ServoLayoutNode, new_style: &Arc<ComputedValues>) {
+ *self.shared_inline_styles.style.borrow_mut() = new_style.clone();
+ *self.shared_inline_styles.selected.borrow_mut() = node.to_threadsafe().selected_style();
+ }
+
pub(super) fn layout(
&self,
layout_context: &LayoutContext,
diff --git a/components/layout/flow/mod.rs b/components/layout/flow/mod.rs
index 99b84d088e5..4776b65771c 100644
--- a/components/layout/flow/mod.rs
+++ b/components/layout/flow/mod.rs
@@ -78,6 +78,15 @@ impl BlockContainer {
BlockContainer::InlineFormattingContext(context) => context.contains_floats,
}
}
+
+ pub(crate) fn repair_style(&mut self, node: &ServoLayoutNode, new_style: &Arc<ComputedValues>) {
+ match self {
+ BlockContainer::BlockLevelBoxes(..) => {},
+ BlockContainer::InlineFormattingContext(inline_formatting_context) => {
+ inline_formatting_context.repair_style(node, new_style)
+ },
+ }
+ }
}
#[derive(Debug, MallocSizeOf)]
@@ -106,20 +115,21 @@ impl BlockLevelBox {
match self {
BlockLevelBox::Independent(independent_formatting_context) => {
- independent_formatting_context.repair_style(context, new_style)
+ independent_formatting_context.repair_style(context, node, new_style)
},
BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(positioned_box) => positioned_box
.borrow_mut()
.context
- .repair_style(context, new_style),
+ .repair_style(context, node, new_style),
BlockLevelBox::OutOfFlowFloatBox(float_box) => {
- float_box.contents.repair_style(context, new_style)
+ float_box.contents.repair_style(context, node, new_style)
},
BlockLevelBox::OutsideMarker(outside_marker) => {
outside_marker.repair_style(context, node, new_style)
},
- BlockLevelBox::SameFormattingContextBlock { base, .. } => {
+ BlockLevelBox::SameFormattingContextBlock { base, contents, .. } => {
base.repair_style(new_style);
+ contents.repair_style(node, new_style);
},
}
}
@@ -477,6 +487,10 @@ impl BlockFormattingContext {
pub(crate) fn layout_style<'a>(&self, base: &'a LayoutBoxBase) -> LayoutStyle<'a> {
LayoutStyle::Default(&base.style)
}
+
+ pub(crate) fn repair_style(&mut self, node: &ServoLayoutNode, new_style: &Arc<ComputedValues>) {
+ self.contents.repair_style(node, new_style);
+ }
}
/// Finds the min/max-content inline size of the block-level children of a block container.
diff --git a/components/layout/formatting_contexts.rs b/components/layout/formatting_contexts.rs
index a489df2b663..2b242c00361 100644
--- a/components/layout/formatting_contexts.rs
+++ b/components/layout/formatting_contexts.rs
@@ -4,7 +4,7 @@
use app_units::Au;
use malloc_size_of_derive::MallocSizeOf;
-use script::layout_dom::ServoLayoutElement;
+use script::layout_dom::{ServoLayoutElement, ServoLayoutNode};
use servo_arc::Arc;
use style::context::SharedStyleContext;
use style::properties::ComputedValues;
@@ -223,12 +223,13 @@ impl IndependentFormattingContext {
pub(crate) fn repair_style(
&mut self,
context: &SharedStyleContext,
+ node: &ServoLayoutNode,
new_style: &Arc<ComputedValues>,
) {
self.base.repair_style(new_style);
match &mut self.contents {
IndependentFormattingContextContents::NonReplaced(content) => {
- content.repair_style(context, new_style);
+ content.repair_style(context, node, new_style);
},
IndependentFormattingContextContents::Replaced(..) => {},
}
@@ -356,9 +357,16 @@ impl IndependentNonReplacedContents {
matches!(self, Self::Table(_))
}
- fn repair_style(&mut self, context: &SharedStyleContext, new_style: &Arc<ComputedValues>) {
+ fn repair_style(
+ &mut self,
+ context: &SharedStyleContext,
+ node: &ServoLayoutNode,
+ new_style: &Arc<ComputedValues>,
+ ) {
match self {
- IndependentNonReplacedContents::Flow(..) => {},
+ IndependentNonReplacedContents::Flow(block_formatting_context) => {
+ block_formatting_context.repair_style(node, new_style);
+ },
IndependentNonReplacedContents::Flex(flex_container) => {
flex_container.repair_style(new_style)
},
diff --git a/components/layout/table/mod.rs b/components/layout/table/mod.rs
index 72b67863e7d..78884c377e9 100644
--- a/components/layout/table/mod.rs
+++ b/components/layout/table/mod.rs
@@ -76,7 +76,7 @@ pub(crate) use construct::AnonymousTableContent;
pub use construct::TableBuilder;
use euclid::{Point2D, Size2D, UnknownUnit, Vector2D};
use malloc_size_of_derive::MallocSizeOf;
-use script::layout_dom::ServoLayoutElement;
+use script::layout_dom::{ServoLayoutElement, ServoLayoutNode};
use servo_arc::Arc;
use style::context::SharedStyleContext;
use style::properties::ComputedValues;
@@ -425,13 +425,14 @@ impl TableLevelBox {
pub(crate) fn repair_style(
&self,
context: &SharedStyleContext<'_>,
+ node: &ServoLayoutNode,
new_style: &Arc<ComputedValues>,
) {
match self {
TableLevelBox::Caption(caption) => caption
.borrow_mut()
.context
- .repair_style(context, new_style),
+ .repair_style(context, node, new_style),
TableLevelBox::Cell(cell) => cell.borrow_mut().repair_style(new_style),
TableLevelBox::TrackGroup(track_group) => {
track_group.borrow_mut().repair_style(new_style);
diff --git a/components/layout/taffy/mod.rs b/components/layout/taffy/mod.rs
index ba80824fa99..2bc7a598d08 100644
--- a/components/layout/taffy/mod.rs
+++ b/components/layout/taffy/mod.rs
@@ -7,6 +7,7 @@ use std::fmt;
use app_units::Au;
use malloc_size_of_derive::MallocSizeOf;
+use script::layout_dom::ServoLayoutNode;
use servo_arc::Arc;
use style::context::SharedStyleContext;
use style::properties::ComputedValues;
@@ -152,17 +153,18 @@ impl TaffyItemBox {
pub(crate) fn repair_style(
&mut self,
context: &SharedStyleContext,
+ node: &ServoLayoutNode,
new_style: &Arc<ComputedValues>,
) {
self.style = new_style.clone();
match &mut self.taffy_level_box {
TaffyItemBoxInner::InFlowBox(independent_formatting_context) => {
- independent_formatting_context.repair_style(context, new_style)
+ independent_formatting_context.repair_style(context, node, new_style)
},
TaffyItemBoxInner::OutOfFlowAbsolutelyPositionedBox(positioned_box) => positioned_box
.borrow_mut()
.context
- .repair_style(context, new_style),
+ .repair_style(context, node, new_style),
}
}
}
diff --git a/components/layout/traversal.rs b/components/layout/traversal.rs
index 17c3d0b1c20..d05deb24bfa 100644
--- a/components/layout/traversal.rs
+++ b/components/layout/traversal.rs
@@ -112,15 +112,14 @@ pub(crate) fn compute_damage_and_repair_style_inner(
.element_data
.borrow_mut();
+ original_damage = std::mem::take(&mut element_data.damage);
if let Some(ref style) = element_data.styles.primary {
if style.get_box().display == Display::None {
return parent_restyle_damage;
}
}
- original_damage = std::mem::take(&mut element_data.damage);
- element_data.damage |= parent_restyle_damage;
- element_data.damage
+ original_damage | parent_restyle_damage
};
let mut propagated_damage = damage;
diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs
index 65c173fce3b..33d0da952fb 100644
--- a/components/net/fetch/methods.rs
+++ b/components/net/fetch/methods.rs
@@ -18,6 +18,7 @@ use http::{HeaderValue, Method, StatusCode};
use ipc_channel::ipc;
use log::{debug, trace, warn};
use mime::{self, Mime};
+use net_traits::fetch::headers::extract_mime_type_as_mime;
use net_traits::filemanager_thread::{FileTokenCheck, RelativePos};
use net_traits::http_status::HttpStatus;
use net_traits::policy_container::{PolicyContainer, RequestPolicyContainer};
@@ -886,7 +887,7 @@ pub fn should_be_blocked_due_to_nosniff(
// Step 2
// Note: an invalid MIME type will produce a `None`.
- let content_type_header = response_headers.typed_get::<ContentType>();
+ let mime_type = extract_mime_type_as_mime(response_headers);
/// <https://html.spec.whatwg.org/multipage/#scriptingLanguages>
#[inline]
@@ -915,16 +916,12 @@ pub fn should_be_blocked_due_to_nosniff(
.any(|mime| mime.type_() == mime_type.type_() && mime.subtype() == mime_type.subtype())
}
- match content_type_header {
+ match mime_type {
// Step 4
- Some(ref ct) if destination.is_script_like() => {
- !is_javascript_mime_type(&ct.clone().into())
- },
-
+ Some(ref mime_type) if destination.is_script_like() => !is_javascript_mime_type(mime_type),
// Step 5
- Some(ref ct) if destination == Destination::Style => {
- let m: mime::Mime = ct.clone().into();
- m.type_() != mime::TEXT && m.subtype() != mime::CSS
+ Some(ref mime_type) if destination == Destination::Style => {
+ mime_type.type_() != mime::TEXT && mime_type.subtype() != mime::CSS
},
None if destination == Destination::Style || destination.is_script_like() => true,
@@ -938,18 +935,22 @@ fn should_be_blocked_due_to_mime_type(
destination: Destination,
response_headers: &HeaderMap,
) -> bool {
- // Step 1
- let mime_type: mime::Mime = match response_headers.typed_get::<ContentType>() {
- Some(header) => header.into(),
+ // Step 1: Let mimeType be the result of extracting a MIME type from response’s header list.
+ let mime_type: mime::Mime = match extract_mime_type_as_mime(response_headers) {
+ Some(mime_type) => mime_type,
+ // Step 2: If mimeType is failure, then return allowed.
None => return false,
};
- // Step 2-3
+ // Step 3: Let destination be request’s destination.
+ // Step 4: If destination is script-like and one of the following is true, then return blocked:
+ // - mimeType’s essence starts with "audio/", "image/", or "video/".
+ // - mimeType’s essence is "text/csv".
+ // Step 5: Return allowed.
destination.is_script_like() &&
match mime_type.type_() {
mime::AUDIO | mime::VIDEO | mime::IMAGE => true,
mime::TEXT if mime_type.subtype() == mime::CSV => true,
- // Step 4
_ => false,
}
}
diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs
index c5c5c480707..18e968aaa70 100644
--- a/components/script/dom/blob.rs
+++ b/components/script/dom/blob.rs
@@ -12,11 +12,10 @@ use dom_struct::dom_struct;
use encoding_rs::UTF_8;
use js::jsapi::JSObject;
use js::rust::HandleObject;
-use js::typedarray::Uint8;
+use js::typedarray::{ArrayBufferU8, Uint8};
use net_traits::filemanager_thread::RelativePos;
use uuid::Uuid;
-use crate::body::{FetchedData, run_array_buffer_data_algorithm};
use crate::dom::bindings::buffer_source::create_buffer_source;
use crate::dom::bindings::codegen::Bindings::BlobBinding;
use crate::dom::bindings::codegen::Bindings::BlobBinding::BlobMethods;
@@ -226,7 +225,7 @@ impl BlobMethods<crate::DomTypeHolder> for Blob {
Blob::new(&global, blob_impl, can_gc)
}
- // https://w3c.github.io/FileAPI/#text-method-algo
+ /// <https://w3c.github.io/FileAPI/#text-method-algo>
fn Text(&self, can_gc: CanGc) -> Rc<Promise> {
let global = self.global();
let in_realm_proof = AlreadyInRealm::assert::<crate::DomTypeHolder>();
@@ -250,35 +249,51 @@ impl BlobMethods<crate::DomTypeHolder> for Blob {
}
// https://w3c.github.io/FileAPI/#arraybuffer-method-algo
- fn ArrayBuffer(&self, can_gc: CanGc) -> Rc<Promise> {
- let global = self.global();
- let in_realm_proof = AlreadyInRealm::assert::<crate::DomTypeHolder>();
- let p = Promise::new_in_current_realm(InRealm::Already(&in_realm_proof), can_gc);
+ fn ArrayBuffer(&self, in_realm: InRealm, can_gc: CanGc) -> Rc<Promise> {
+ let cx = GlobalScope::get_cx();
+ let global = GlobalScope::from_safe_context(cx, in_realm);
+ let promise = Promise::new_in_current_realm(in_realm, can_gc);
- let id = self.get_blob_url_id();
+ // 1. Let stream be the result of calling get stream on this.
+ let stream = self.get_stream(can_gc);
- global.read_file_async(
- id,
- p.clone(),
- Box::new(|promise, bytes| {
- match bytes {
- Ok(b) => {
- let cx = GlobalScope::get_cx();
- let result = run_array_buffer_data_algorithm(cx, b, CanGc::note());
-
- match result {
- Ok(FetchedData::ArrayBuffer(a)) => {
- promise.resolve_native(&a, CanGc::note())
- },
- Err(e) => promise.reject_error(e, CanGc::note()),
- _ => panic!("Unexpected result from run_array_buffer_data_algorithm"),
- }
- },
- Err(e) => promise.reject_error(e, CanGc::note()),
- };
+ // 2. Let reader be the result of getting a reader from stream.
+ // If that threw an exception, return a new promise rejected with that exception.
+ let reader = match stream.and_then(|s| s.acquire_default_reader(can_gc)) {
+ Ok(reader) => reader,
+ Err(error) => {
+ promise.reject_error(error, can_gc);
+ return promise;
+ },
+ };
+
+ // 3. Let promise be the result of reading all bytes from stream with reader.
+ let success_promise = promise.clone();
+ let failure_promise = promise.clone();
+ reader.read_all_bytes(
+ cx,
+ &global,
+ Rc::new(move |bytes| {
+ rooted!(in(*cx) let mut js_object = ptr::null_mut::<JSObject>());
+ // 4. Return the result of transforming promise by a fulfillment handler that returns a new
+ // [ArrayBuffer]
+ let array_buffer = create_buffer_source::<ArrayBufferU8>(
+ cx,
+ bytes,
+ js_object.handle_mut(),
+ can_gc,
+ )
+ .expect("Converting input to ArrayBufferU8 should never fail");
+ success_promise.resolve_native(&array_buffer, can_gc);
}),
+ Rc::new(move |cx, value| {
+ failure_promise.reject(cx, value, can_gc);
+ }),
+ in_realm,
+ can_gc,
);
- p
+
+ promise
}
/// <https://w3c.github.io/FileAPI/#dom-blob-bytes>
diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs
index 10a8be731bf..0e8dcf92ccd 100644
--- a/components/script/dom/headers.rs
+++ b/components/script/dom/headers.rs
@@ -5,12 +5,12 @@
use std::cell::Cell;
use std::str::{self, FromStr};
-use data_url::mime::Mime as DataUrlMime;
use dom_struct::dom_struct;
use http::header::{HeaderMap as HyperHeaders, HeaderName, HeaderValue};
use js::rust::HandleObject;
use net_traits::fetch::headers::{
- get_decode_and_split_header_value, get_value_from_header_list, is_forbidden_method,
+ extract_mime_type, get_decode_and_split_header_value, get_value_from_header_list,
+ is_forbidden_method,
};
use net_traits::request::is_cors_safelisted_request_header;
@@ -564,72 +564,3 @@ pub(crate) fn is_vchar(x: u8) -> bool {
pub(crate) fn is_obs_text(x: u8) -> bool {
matches!(x, 0x80..=0xFF)
}
-
-// https://fetch.spec.whatwg.org/#concept-header-extract-mime-type
-// This function uses data_url::Mime to parse the MIME Type because
-// mime::Mime does not provide a parser following the Fetch spec
-// see https://github.com/hyperium/mime/issues/106
-pub(crate) fn extract_mime_type(headers: &HyperHeaders) -> Option<Vec<u8>> {
- let mut charset: Option<String> = None;
- let mut essence: String = "".to_string();
- let mut mime_type: Option<DataUrlMime> = None;
-
- // Step 4
- let headers_values = headers.get_all(http::header::CONTENT_TYPE).iter();
-
- // Step 5
- if headers_values.size_hint() == (0, Some(0)) {
- return None;
- }
-
- // Step 6
- for header_value in headers_values {
- // Step 6.1
- match DataUrlMime::from_str(header_value.to_str().unwrap_or("")) {
- // Step 6.2
- Err(_) => continue,
- Ok(temp_mime) => {
- let temp_essence = format!("{}/{}", temp_mime.type_, temp_mime.subtype);
-
- // Step 6.2
- if temp_essence == "*/*" {
- continue;
- }
-
- let temp_charset = &temp_mime.get_parameter("charset");
-
- // Step 6.3
- mime_type = Some(DataUrlMime {
- type_: temp_mime.type_.to_string(),
- subtype: temp_mime.subtype.to_string(),
- parameters: temp_mime.parameters.clone(),
- });
-
- // Step 6.4
- if temp_essence != essence {
- charset = temp_charset.map(|c| c.to_string());
- temp_essence.clone_into(&mut essence);
- } else {
- // Step 6.5
- if temp_charset.is_none() && charset.is_some() {
- let DataUrlMime {
- type_: t,
- subtype: st,
- parameters: p,
- } = mime_type.unwrap();
- let mut params = p;
- params.push(("charset".to_string(), charset.clone().unwrap()));
- mime_type = Some(DataUrlMime {
- type_: t.to_string(),
- subtype: st.to_string(),
- parameters: params,
- })
- }
- }
- },
- }
- }
-
- // Step 7, 8
- mime_type.map(|m| format!("{}", m).into_bytes())
-}
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index ca5bb72a1dc..4e7c136f42b 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -26,6 +26,7 @@ use js::jsval::{JSVal, NullValue};
use js::rust::wrappers::JS_ParseJSON;
use js::rust::{HandleObject, MutableHandleValue};
use js::typedarray::{ArrayBuffer, ArrayBufferU8};
+use net_traits::fetch::headers::extract_mime_type_as_dataurl_mime;
use net_traits::http_status::HttpStatus;
use net_traits::request::{CredentialsMode, Referrer, RequestBuilder, RequestId, RequestMode};
use net_traits::{
@@ -59,7 +60,7 @@ use crate::dom::document::{Document, DocumentSource, HasBrowsingContext, IsHTMLD
use crate::dom::event::{Event, EventBubbles, EventCancelable};
use crate::dom::eventtarget::EventTarget;
use crate::dom::globalscope::GlobalScope;
-use crate::dom::headers::{extract_mime_type, is_forbidden_request_header};
+use crate::dom::headers::is_forbidden_request_header;
use crate::dom::node::Node;
use crate::dom::performanceresourcetiming::InitiatorType;
use crate::dom::progressevent::ProgressEvent;
@@ -1324,11 +1325,7 @@ impl XMLHttpRequest {
return response;
}
// Step 2
- let mime = self
- .final_mime_type()
- .as_ref()
- .map(|m| normalize_type_string(&m.to_string()))
- .unwrap_or("".to_owned());
+ let mime = normalize_type_string(&self.final_mime_type().to_string());
// Step 3, 4
let bytes = self.response.borrow().to_vec();
@@ -1366,64 +1363,77 @@ impl XMLHttpRequest {
return response;
}
- // Step 1
+ // Step 1: If xhr’s response’s body is null, then return.
if self.response_status.get().is_err() {
return None;
}
- // Step 2
- let mime_type = self.final_mime_type();
- // Step 5.3, 7
- let charset = self.final_charset().unwrap_or(UTF_8);
- let temp_doc: DomRoot<Document>;
- match mime_type {
- Some(ref mime) if mime.matches(TEXT, HTML) => {
- // Step 4
- if self.response_type.get() == XMLHttpRequestResponseType::_empty {
- return None;
- } else {
- // TODO Step 5.2 "If charset is null, prescan the first 1024 bytes of xhr’s received bytes"
- // Step 5
- temp_doc = self.document_text_html(can_gc);
- }
- },
- // Step 7
- None => {
- temp_doc = self.handle_xml(can_gc);
- // Not sure it the parser should throw an error for this case
- // The specification does not indicates this test,
- // but for now we check the document has no child nodes
- let has_no_child_nodes = temp_doc.upcast::<Node>().children().next().is_none();
- if has_no_child_nodes {
- return None;
- }
- },
- Some(ref mime)
- if mime.matches(TEXT, XML) ||
- mime.matches(APPLICATION, XML) ||
- mime.has_suffix(XML) =>
- {
- temp_doc = self.handle_xml(can_gc);
- // Not sure it the parser should throw an error for this case
- // The specification does not indicates this test,
- // but for now we check the document has no child nodes
- let has_no_child_nodes = temp_doc.upcast::<Node>().children().next().is_none();
- if has_no_child_nodes {
- return None;
- }
- },
- // Step 3
- _ => {
+ // Step 2: Let finalMIME be the result of get a final MIME type for xhr.
+ let final_mime = self.final_mime_type();
+
+ // Step 3: If finalMIME is not an HTML MIME type or an XML MIME type, then return.
+ let is_xml_mime_type = final_mime.matches(TEXT, XML) ||
+ final_mime.matches(APPLICATION, XML) ||
+ final_mime.has_suffix(XML);
+ if !final_mime.matches(TEXT, HTML) && !is_xml_mime_type {
+ return None;
+ }
+
+ // Step 4: If xhr’s response type is the empty string and finalMIME is an HTML MIME
+ // type, then return.
+ let charset;
+ let temp_doc;
+ if final_mime.matches(TEXT, HTML) {
+ if self.response_type.get() == XMLHttpRequestResponseType::_empty {
return None;
- },
+ }
+
+ // Step 5: If finalMIME is an HTML MIME type, then:
+ // Step 5.1: Let charset be the result of get a final encoding for xhr.
+ // Step 5.2: If charset is null, prescan the first 1024 bytes of xhr’s received bytes
+ // and if that does not terminate unsuccessfully then let charset be the return value.
+ // TODO: This isn't happening right now.
+ // Step 5.3. If charset is null, then set charset to UTF-8.
+ charset = Some(self.final_charset().unwrap_or(UTF_8));
+
+ // Step 5.4: Let document be a document that represents the result parsing xhr’s
+ // received bytes following the rules set forth in the HTML Standard for an HTML parser
+ // with scripting disabled and a known definite encoding charset. [HTML]
+ temp_doc = self.document_text_html(can_gc);
+ } else {
+ assert!(is_xml_mime_type);
+
+ // Step 6: Otherwise, let document be a document that represents the result of running
+ // the XML parser with XML scripting support disabled on xhr’s received bytes. If that
+ // fails (unsupported character encoding, namespace well-formedness error, etc.), then
+ // return null. [HTML]
+ //
+ // TODO: The spec seems to suggest the charset should come from the XML parser here.
+ temp_doc = self.handle_xml(can_gc);
+ charset = self.final_charset();
+
+ // Not sure it the parser should throw an error for this case
+ // The specification does not indicates this test,
+ // but for now we check the document has no child nodes
+ let has_no_child_nodes = temp_doc.upcast::<Node>().children().next().is_none();
+ if has_no_child_nodes {
+ return None;
+ }
}
- // Step 8
+
+ // Step 7: If charset is null, then set charset to UTF-8.
+ let charset = charset.unwrap_or(UTF_8);
+
+ // Step 8: Set document’s encoding to charset.
temp_doc.set_encoding(charset);
- // Step 9 to 11
- // Done by handle_text_html and handle_xml
+ // Step 9: Set document’s content type to finalMIME.
+ // Step 10: Set document’s URL to xhr’s response’s URL.
+ // Step 11: Set document’s origin to xhr’s relevant settings object’s origin.
+ //
+ // Done by `handle_text_html()` and `handle_xml()`.
- // Step 12
+ // Step 12: Set xhr’s response object to document.
self.response_xml.set(Some(&temp_doc));
self.response_xml.get()
}
@@ -1507,7 +1517,7 @@ impl XMLHttpRequest {
Ok(parsed) => Some(parsed),
Err(_) => None, // Step 7
};
- let content_type = self.final_mime_type();
+ let content_type = Some(self.final_mime_type());
Document::new(
win,
HasBrowsingContext::No,
@@ -1598,14 +1608,16 @@ impl XMLHttpRequest {
// 3. If responseMIME’s parameters["charset"] exists, then set label to it.
let response_charset = self
.response_mime_type()
- .and_then(|mime| mime.get_parameter(CHARSET).map(|c| c.to_string()));
+ .get_parameter(CHARSET)
+ .map(ToString::to_string);
// 4. If xhr’s override MIME type’s parameters["charset"] exists, then set label to it.
let override_charset = self
.override_mime_type
.borrow()
.as_ref()
- .and_then(|mime| mime.get_parameter(CHARSET).map(|c| c.to_string()));
+ .and_then(|mime| mime.get_parameter(CHARSET))
+ .map(ToString::to_string);
// 5. If label is null, then return null.
// 6. Let encoding be the result of getting an encoding from label.
@@ -1617,23 +1629,22 @@ impl XMLHttpRequest {
}
/// <https://xhr.spec.whatwg.org/#response-mime-type>
- fn response_mime_type(&self) -> Option<Mime> {
- return extract_mime_type(&self.response_headers.borrow())
- .and_then(|mime_as_bytes| {
- String::from_utf8(mime_as_bytes)
- .unwrap_or_default()
- .parse()
- .ok()
- })
- .or(Some(Mime::new(TEXT, XML)));
+ fn response_mime_type(&self) -> Mime {
+ // 1. Let mimeType be the result of extracting a MIME type from xhr’s response’s
+ // header list.
+ // 2. If mimeType is failure, then set mimeType to text/xml.
+ // 3. Return mimeType.
+ extract_mime_type_as_dataurl_mime(&self.response_headers.borrow())
+ .unwrap_or_else(|| Mime::new(TEXT, XML))
}
/// <https://xhr.spec.whatwg.org/#final-mime-type>
- fn final_mime_type(&self) -> Option<Mime> {
- match *self.override_mime_type.borrow() {
- Some(ref override_mime) => Some(override_mime.clone()),
- None => self.response_mime_type(),
- }
+ fn final_mime_type(&self) -> Mime {
+ self.override_mime_type
+ .borrow()
+ .as_ref()
+ .map(MimeExt::clone)
+ .unwrap_or_else(|| self.response_mime_type())
}
}
diff --git a/components/script/stylesheet_loader.rs b/components/script/stylesheet_loader.rs
index a18d63e323b..5efaf78e542 100644
--- a/components/script/stylesheet_loader.rs
+++ b/components/script/stylesheet_loader.rs
@@ -163,7 +163,8 @@ impl FetchResponseListener for StylesheetContext {
Some(meta) => meta,
None => return,
};
- let is_css = metadata.content_type.is_some_and(|ct| {
+
+ let mut is_css = metadata.content_type.is_some_and(|ct| {
let mime: Mime = ct.into_inner().into();
mime.type_() == mime::TEXT && mime.subtype() == mime::CSS
}) || (
@@ -177,6 +178,17 @@ impl FetchResponseListener for StylesheetContext {
document.origin().immutable().clone() == metadata.final_url.origin()
);
+ // From <https://html.spec.whatwg.org/multipage/#link-type-stylesheet>:
+ // > Quirk: If the document has been set to quirks mode, has the same origin as
+ // > the URL of the external resource, and the Content-Type metadata of the
+ // > external resource is not a supported style sheet type, the user agent must
+ // > instead assume it to be text/css.
+ if document.quirks_mode() == QuirksMode::Quirks &&
+ document.url().origin() == self.url.origin()
+ {
+ is_css = true;
+ }
+
let data = if is_css {
let data = std::mem::take(&mut self.data);
self.unminify_css(data, metadata.final_url.clone())
diff --git a/components/script_bindings/codegen/Bindings.conf b/components/script_bindings/codegen/Bindings.conf
index 92871bc54aa..d89b65c646d 100644
--- a/components/script_bindings/codegen/Bindings.conf
+++ b/components/script_bindings/codegen/Bindings.conf
@@ -39,7 +39,7 @@ DOMInterfaces = {
'Blob': {
'weakReferenceable': True,
'canGc': ['Slice', 'Text', 'ArrayBuffer', 'Stream', 'Bytes'],
- 'inRealms': ['Bytes'],
+ 'inRealms': ['Bytes', 'ArrayBuffer'],
},
'Bluetooth': {
diff --git a/components/shared/net/Cargo.toml b/components/shared/net/Cargo.toml
index 79ea936a688..0dfad486455 100644
--- a/components/shared/net/Cargo.toml
+++ b/components/shared/net/Cargo.toml
@@ -19,6 +19,7 @@ compositing_traits = { workspace = true }
content-security-policy = { workspace = true }
cookie = { workspace = true }
crossbeam-channel = { workspace = true }
+data-url = { workspace = true }
embedder_traits = { workspace = true }
headers = { workspace = true }
http = { workspace = true }
diff --git a/components/shared/net/fetch/headers.rs b/components/shared/net/fetch/headers.rs
index 11bb68d5d0a..5ffd537adf8 100644
--- a/components/shared/net/fetch/headers.rs
+++ b/components/shared/net/fetch/headers.rs
@@ -3,8 +3,9 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use std::iter::Peekable;
-use std::str::Chars;
+use std::str::{Chars, FromStr};
+use data_url::mime::Mime as DataUrlMime;
use headers::HeaderMap;
/// <https://fetch.spec.whatwg.org/#http-tab-or-space>
@@ -184,3 +185,93 @@ fn collect_http_quoted_string(position: &mut Peekable<Chars>, extract_value: boo
// Step 6, 7
value
}
+
+/// <https://fetch.spec.whatwg.org/#concept-header-extract-mime-type>
+/// This function uses data_url::Mime to parse the MIME Type because
+/// mime::Mime does not provide a parser following the Fetch spec
+/// see <https://github.com/hyperium/mime/issues/106>
+pub fn extract_mime_type_as_dataurl_mime(headers: &HeaderMap) -> Option<DataUrlMime> {
+ // > 1: Let charset be null.
+ let mut charset = None;
+ // > 2: Let essence be null.
+ let mut essence = String::new();
+ // > 3: Let mimeType be null.
+ let mut mime_type = None;
+
+ // > 4: Let values be the result of getting, decoding, and splitting `Content-Type`
+ // from headers.
+ // > 5: If values is null, then return failure.
+ let headers_values = get_decode_and_split_header_name("content-type", headers)?;
+
+ // > 6: For each value of values:
+ for header_value in headers_values.iter() {
+ // > 6.1: Let temporaryMimeType be the result of parsing value.
+ match DataUrlMime::from_str(header_value) {
+ // > 6.2: If temporaryMimeType is failure or its essence is "*/*", then continue.
+ Err(_) => continue,
+ Ok(temp_mime) => {
+ let temp_essence = format!("{}/{}", temp_mime.type_, temp_mime.subtype);
+
+ // > 6.2: If temporaryMimeType is failure or its essence is "*/*", then
+ // continue.
+ if temp_essence == "*/*" {
+ continue;
+ }
+
+ // > 6.3: Set mimeType to temporaryMimeType.
+ mime_type = Some(DataUrlMime {
+ type_: temp_mime.type_.to_string(),
+ subtype: temp_mime.subtype.to_string(),
+ parameters: temp_mime.parameters.clone(),
+ });
+
+ // > 6.4: If mimeType’s essence is not essence, then:
+ let temp_charset = &temp_mime.get_parameter("charset");
+ if temp_essence != essence {
+ // > 6.4.1: Set charset to null.
+ // > 6.4.2: If mimeType’s parameters["charset"] exists, then set
+ // charset to mimeType’s parameters["charset"].
+ charset = temp_charset.map(|c| c.to_string());
+ // > 6.4.3: Set essence to mimeType’s essence.
+ essence = temp_essence.to_owned();
+ } else {
+ // > 6.5: Otherwise, if mimeType’s parameters["charset"] does not exist,
+ // and charset is non-null, set mimeType’s parameters["charset"] to charset.
+ if temp_charset.is_none() && charset.is_some() {
+ let DataUrlMime {
+ type_: t,
+ subtype: st,
+ parameters: p,
+ } = mime_type.unwrap();
+ let mut params = p;
+ params.push(("charset".to_string(), charset.clone().unwrap()));
+ mime_type = Some(DataUrlMime {
+ type_: t.to_string(),
+ subtype: st.to_string(),
+ parameters: params,
+ })
+ }
+ }
+ },
+ }
+ }
+
+ // > 7: If mimeType is null, then return failure.
+ // > 8: Return mimeType.
+ mime_type
+}
+
+pub fn extract_mime_type(headers: &HeaderMap) -> Option<Vec<u8>> {
+ extract_mime_type_as_dataurl_mime(headers).map(|m| format!("{}", m).into_bytes())
+}
+
+pub fn extract_mime_type_as_mime(headers: &HeaderMap) -> Option<mime::Mime> {
+ extract_mime_type_as_dataurl_mime(headers).and_then(|mime: DataUrlMime| {
+ // Try to transform a data-url::mime::Mime into a mime::Mime
+ let mut mime_as_str = format!("{}/{}", mime.type_, mime.subtype);
+ for p in mime.parameters {
+ mime_as_str.push_str(format!("; {}={}", p.0, p.1).as_str());
+ }
+ mime_as_str.parse().ok()
+ })
+}
diff --git a/components/shared/net/response.rs b/components/shared/net/response.rs
index f91993ddccb..9a01fbbf965 100644
--- a/components/shared/net/response.rs
+++ b/components/shared/net/response.rs
@@ -7,7 +7,6 @@
use std::sync::Mutex;
use std::sync::atomic::AtomicBool;
-use headers::{ContentType, HeaderMapExt};
use http::HeaderMap;
use hyper_serde::Serde;
use malloc_size_of_derive::MallocSizeOf;
@@ -15,6 +14,7 @@ use serde::{Deserialize, Serialize};
use servo_arc::Arc;
use servo_url::ServoUrl;
+use crate::fetch::headers::extract_mime_type_as_mime;
use crate::http_status::HttpStatus;
use crate::{
FetchMetadata, FilteredMetadata, Metadata, NetworkError, ReferrerPolicy, ResourceFetchTiming,
@@ -300,13 +300,7 @@ impl Response {
pub fn metadata(&self) -> Result<FetchMetadata, NetworkError> {
fn init_metadata(response: &Response, url: &ServoUrl) -> Metadata {
let mut metadata = Metadata::default(url.clone());
- metadata.set_content_type(
- response
- .headers
- .typed_get::<ContentType>()
- .map(|v| v.into())
- .as_ref(),
- );
+ metadata.set_content_type(extract_mime_type_as_mime(&response.headers).as_ref());
metadata.location_url.clone_from(&response.location_url);
metadata.headers = Some(Serde(response.headers.clone()));
metadata.status.clone_from(&response.status);
diff --git a/components/webdriver_server/actions.rs b/components/webdriver_server/actions.rs
index 43dd0e183dc..7965120b0fd 100644
--- a/components/webdriver_server/actions.rs
+++ b/components/webdriver_server/actions.rs
@@ -33,6 +33,9 @@ pub(crate) enum InputSourceState {
}
// https://w3c.github.io/webdriver/#dfn-pointer-input-source
+// TODO: subtype is used for https://w3c.github.io/webdriver/#dfn-get-a-pointer-id
+// Need to add pointer-id to the following struct
+#[allow(dead_code)]
pub(crate) struct PointerInputState {
subtype: PointerType,
pressed: HashSet<u64>,
@@ -142,7 +145,22 @@ impl Handler {
.or_insert(InputSourceState::Key(KeyInputState::new()));
match action {
KeyAction::Down(action) => {
- self.dispatch_keydown_action(source_id, action)
+ self.dispatch_keydown_action(source_id, action);
+ // Step 9. If subtype is "keyDown", append a copy of action
+ // object with the subtype property changed to "keyUp" to
+ // input state's input cancel list.
+ self.session_mut().unwrap().input_cancel_list.push(
+ ActionSequence {
+ id: source_id.into(),
+ actions: ActionsType::Key {
+ actions: vec![KeyActionItem::Key(KeyAction::Up(
+ KeyUpAction {
+ value: action.value.clone(),
+ },
+ ))],
+ },
+ },
+ );
},
KeyAction::Up(action) => {
self.dispatch_keyup_action(source_id, action)
@@ -172,7 +190,27 @@ impl Handler {
match action {
PointerAction::Cancel => (),
PointerAction::Down(action) => {
- self.dispatch_pointerdown_action(source_id, action)
+ self.dispatch_pointerdown_action(source_id, action);
+
+ // Step 10. If subtype is "pointerDown", append a copy of action
+ // object with the subtype property changed to "pointerUp" to
+ // input state's input cancel list.
+ self.session_mut().unwrap().input_cancel_list.push(
+ ActionSequence {
+ id: source_id.into(),
+ actions: ActionsType::Pointer {
+ parameters: PointerActionParameters {
+ pointer_type: parameters.pointer_type,
+ },
+ actions: vec![PointerActionItem::Pointer(
+ PointerAction::Up(PointerUpAction {
+ button: action.button,
+ ..Default::default()
+ }),
+ )],
+ },
+ },
+ );
},
PointerAction::Move(action) => self.dispatch_pointermove_action(
source_id,
@@ -215,26 +253,18 @@ impl Handler {
// https://w3c.github.io/webdriver/#dfn-dispatch-a-keydown-action
fn dispatch_keydown_action(&mut self, source_id: &str, action: &KeyDownAction) {
- let session = self.session.as_mut().unwrap();
-
+ // Step 1
let raw_key = action.value.chars().next().unwrap();
- let key_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
- InputSourceState::Key(key_input_state) => key_input_state,
- _ => unreachable!(),
- };
-
- session.input_cancel_list.push(ActionSequence {
- id: source_id.into(),
- actions: ActionsType::Key {
- actions: vec![KeyActionItem::Key(KeyAction::Up(KeyUpAction {
- value: action.value.clone(),
- }))],
- },
- });
+ let key_input_state = self.get_key_input_state_mut(source_id);
+ // Step 2 - 11. Done by `keyboard-types` crate.
let keyboard_event = key_input_state.dispatch_keydown(raw_key);
- let cmd_msg =
- WebDriverCommandMsg::KeyboardAction(session.browsing_context_id, keyboard_event);
+
+ // Step 12
+ let cmd_msg = WebDriverCommandMsg::KeyboardAction(
+ self.session().unwrap().browsing_context_id,
+ keyboard_event,
+ );
self.constellation_chan
.send(EmbedderToConstellationMessage::WebDriverCommand(cmd_msg))
.unwrap();
@@ -242,71 +272,57 @@ impl Handler {
// https://w3c.github.io/webdriver/#dfn-dispatch-a-keyup-action
fn dispatch_keyup_action(&mut self, source_id: &str, action: &KeyUpAction) {
- let session = self.session.as_mut().unwrap();
-
+ // Step 1
let raw_key = action.value.chars().next().unwrap();
- let key_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
- InputSourceState::Key(key_input_state) => key_input_state,
- _ => unreachable!(),
- };
-
- session.input_cancel_list.push(ActionSequence {
- id: source_id.into(),
- actions: ActionsType::Key {
- actions: vec![KeyActionItem::Key(KeyAction::Up(KeyUpAction {
- value: action.value.clone(),
- }))],
- },
- });
+ let key_input_state = self.get_key_input_state_mut(source_id);
+ // Step 2 - 11. Done by `keyboard-types` crate.
if let Some(keyboard_event) = key_input_state.dispatch_keyup(raw_key) {
- let cmd_msg =
- WebDriverCommandMsg::KeyboardAction(session.browsing_context_id, keyboard_event);
+ // Step 12
+ let cmd_msg = WebDriverCommandMsg::KeyboardAction(
+ self.session().unwrap().browsing_context_id,
+ keyboard_event,
+ );
self.constellation_chan
.send(EmbedderToConstellationMessage::WebDriverCommand(cmd_msg))
.unwrap();
}
}
+ fn get_pointer_input_state_mut(&mut self, source_id: &str) -> &mut PointerInputState {
+ let session = self.session_mut().unwrap();
+ let pointer_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
+ InputSourceState::Pointer(pointer_input_state) => pointer_input_state,
+ _ => unreachable!(),
+ };
+ pointer_input_state
+ }
+
+ fn get_key_input_state_mut(&mut self, source_id: &str) -> &mut KeyInputState {
+ let session = self.session_mut().unwrap();
+ let key_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
+ InputSourceState::Key(key_input_state) => key_input_state,
+ _ => unreachable!(),
+ };
+ key_input_state
+ }
+
// https://w3c.github.io/webdriver/#dfn-dispatch-a-pointerdown-action
pub(crate) fn dispatch_pointerdown_action(
&mut self,
source_id: &str,
action: &PointerDownAction,
) {
- let session = self.session.as_mut().unwrap();
-
- let pointer_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
- InputSourceState::Pointer(pointer_input_state) => pointer_input_state,
- _ => unreachable!(),
- };
+ let webview_id = self.session().unwrap().webview_id;
+ let pointer_input_state = self.get_pointer_input_state_mut(source_id);
if pointer_input_state.pressed.contains(&action.button) {
return;
}
pointer_input_state.pressed.insert(action.button);
- session.input_cancel_list.push(ActionSequence {
- id: source_id.into(),
- actions: ActionsType::Pointer {
- parameters: PointerActionParameters {
- pointer_type: match pointer_input_state.subtype {
- PointerType::Mouse => PointerType::Mouse,
- PointerType::Pen => PointerType::Pen,
- PointerType::Touch => PointerType::Touch,
- },
- },
- actions: vec![PointerActionItem::Pointer(PointerAction::Up(
- PointerUpAction {
- button: action.button,
- ..Default::default()
- },
- ))],
- },
- });
-
let cmd_msg = WebDriverCommandMsg::MouseButtonAction(
- session.webview_id,
+ webview_id,
MouseButtonAction::Down,
action.button.into(),
pointer_input_state.x as f32,
@@ -319,39 +335,16 @@ impl Handler {
// https://w3c.github.io/webdriver/#dfn-dispatch-a-pointerup-action
pub(crate) fn dispatch_pointerup_action(&mut self, source_id: &str, action: &PointerUpAction) {
- let session = self.session.as_mut().unwrap();
-
- let pointer_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
- InputSourceState::Pointer(pointer_input_state) => pointer_input_state,
- _ => unreachable!(),
- };
+ let webview_id = self.session().unwrap().webview_id;
+ let pointer_input_state = self.get_pointer_input_state_mut(source_id);
if !pointer_input_state.pressed.contains(&action.button) {
return;
}
pointer_input_state.pressed.remove(&action.button);
- session.input_cancel_list.push(ActionSequence {
- id: source_id.into(),
- actions: ActionsType::Pointer {
- parameters: PointerActionParameters {
- pointer_type: match pointer_input_state.subtype {
- PointerType::Mouse => PointerType::Mouse,
- PointerType::Pen => PointerType::Pen,
- PointerType::Touch => PointerType::Touch,
- },
- },
- actions: vec![PointerActionItem::Pointer(PointerAction::Down(
- PointerDownAction {
- button: action.button,
- ..Default::default()
- },
- ))],
- },
- });
-
let cmd_msg = WebDriverCommandMsg::MouseButtonAction(
- session.webview_id,
+ webview_id,
MouseButtonAction::Up,
action.button.into(),
pointer_input_state.x as f32,
@@ -432,12 +425,9 @@ impl Handler {
target_y: f64,
tick_start: Instant,
) {
- let session = self.session.as_mut().unwrap();
- let pointer_input_state = match session.input_state_table.get_mut(source_id).unwrap() {
- InputSourceState::Pointer(pointer_input_state) => pointer_input_state,
- _ => unreachable!(),
- };
-
+ let webview_id = self.session().unwrap().webview_id;
+ let constellation_chan = self.constellation_chan.clone();
+ let pointer_input_state = self.get_pointer_input_state_mut(source_id);
loop {
// Step 1
let time_delta = tick_start.elapsed().as_millis();
@@ -469,10 +459,9 @@ impl Handler {
// Step 7
if x != current_x || y != current_y {
// Step 7.2
- let cmd_msg =
- WebDriverCommandMsg::MouseMoveAction(session.webview_id, x as f32, y as f32);
+ let cmd_msg = WebDriverCommandMsg::MouseMoveAction(webview_id, x as f32, y as f32);
//TODO: Need Synchronization here before updating `pointer_input_state`
- self.constellation_chan
+ constellation_chan
.send(EmbedderToConstellationMessage::WebDriverCommand(cmd_msg))
.unwrap();
// Step 7.3
@@ -567,7 +556,7 @@ impl Handler {
mut curr_delta_y: i64,
tick_start: Instant,
) {
- let session = self.session.as_mut().unwrap();
+ let session = self.session_mut().unwrap();
// Step 1
let time_delta = tick_start.elapsed().as_millis();
diff --git a/tests/wpt/meta/encoding/single-byte-decoder.window.js.ini b/tests/wpt/meta/encoding/single-byte-decoder.window.js.ini
index d71939b82b5..2ee12a08ed4 100644
--- a/tests/wpt/meta/encoding/single-byte-decoder.window.js.ini
+++ b/tests/wpt/meta/encoding/single-byte-decoder.window.js.ini
@@ -1,7 +1,5 @@
[single-byte-decoder.window.html?XMLHttpRequest]
-[single-byte-decoder.window.html?TextDecoder]
-
[single-byte-decoder.window.html?document]
[ISO-8859-2: iso_8859-2:1987 (document.characterSet and document.inputEncoding)]
expected: FAIL
diff --git a/tests/wpt/meta/fetch/content-type/response.window.js.ini b/tests/wpt/meta/fetch/content-type/response.window.js.ini
index fb99623b59d..07b9bbfe08e 100644
--- a/tests/wpt/meta/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/meta/fetch/content-type/response.window.js.ini
@@ -1,49 +1,10 @@
[response.window.html]
- [fetch(): combined response Content-Type: text/plain ]
- expected: FAIL
-
- [fetch(): separate response Content-Type: text/html;" \\" text/plain]
- expected: FAIL
-
- [fetch(): separate response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/plain */*;charset=gbk]
- expected: FAIL
-
- [fetch(): separate response Content-Type: text/html;x=" text/plain]
- expected: FAIL
-
- [fetch(): combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
- expected: FAIL
-
[Request: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain]
- expected: FAIL
-
[fetch(): combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [fetch(): combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
- expected: FAIL
-
- [fetch(): combined response Content-Type: text/html;charset=gbk text/plain text/html]
- expected: FAIL
-
- [fetch(): combined response Content-Type: text/html text/plain]
- expected: FAIL
-
- [fetch(): combined response Content-Type: */* text/html]
- expected: FAIL
-
- [fetch(): combined response Content-Type: text/html */*;charset=gbk]
- expected: FAIL
-
- [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain]
- expected: FAIL
-
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
expected: FAIL
@@ -53,110 +14,38 @@
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
expected: FAIL
- [fetch(): combined response Content-Type: text/plain;charset=gbk text/html]
- expected: FAIL
-
[fetch(): separate response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain]
expected: FAIL
- [Request: combined response Content-Type: text/html;x=" text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
expected: FAIL
- [fetch(): combined response Content-Type: text/html */*]
- expected: FAIL
-
- [Request: combined response Content-Type: text/html;" \\" text/plain]
- expected: FAIL
-
- [Response: combined response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html;" " text/plain]
- expected: FAIL
-
[<iframe>: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
- [Response: combined response Content-Type: text/html;x=" text/plain]
- expected: FAIL
-
[<iframe>: combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/plain ]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html text/plain]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;" " text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html text/plain]
- expected: FAIL
-
- [Response: combined response Content-Type: text/html;" \\" text/plain]
- expected: FAIL
-
[<iframe>: combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
expected: FAIL
- [fetch(): combined response Content-Type: text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/plain;charset=gbk;x=foo text/plain]
expected: FAIL
- [fetch(): combined response Content-Type: text/plain */*]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
expected: FAIL
- [fetch(): combined response Content-Type: text/plain */*;charset=gbk]
- expected: FAIL
-
- [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/plain */*]
- expected: FAIL
-
- [Request: combined response Content-Type: text/html;" text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
- [fetch(): combined response Content-Type: text/html;" " text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
expected: FAIL
- [fetch(): combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
- expected: FAIL
-
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
-
- [<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: */* text/html]
- expected: FAIL
diff --git a/tests/wpt/meta/fetch/content-type/script.window.js.ini b/tests/wpt/meta/fetch/content-type/script.window.js.ini
deleted file mode 100644
index be7494e9c52..00000000000
--- a/tests/wpt/meta/fetch/content-type/script.window.js.ini
+++ /dev/null
@@ -1,57 +0,0 @@
-[script.window.html]
- [separate text/javascript;charset=windows-1252 x/x text/javascript]
- expected: FAIL
-
- [combined text/javascript;" x/x]
- expected: FAIL
-
- [combined x/x;charset=windows-1252 text/javascript]
- expected: FAIL
-
- [combined text/javascript;charset=windows-1252;" \\" x/x]
- expected: FAIL
-
- [separate x/x text/javascript]
- expected: FAIL
-
- [combined x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
- expected: FAIL
-
- [combined x/x text/javascript]
- expected: FAIL
-
- [separate text/javascript;charset=windows-1252;" \\" x/x]
- expected: FAIL
-
- [combined text/javascript error]
- expected: FAIL
-
- [combined text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
- [combined text/javascript;charset=windows-1252 text/javascript]
- expected: FAIL
-
- [separate x/x;charset=windows-1252 text/javascript]
- expected: FAIL
-
- [combined text/javascript;charset=windows-1252 x/x text/javascript]
- expected: FAIL
-
- [separate x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
- expected: FAIL
-
- [separate text/javascript;";charset=windows-1252]
- expected: FAIL
-
- [combined text/javascript; charset=windows-1252 text/javascript]
- expected: FAIL
-
- [separate text/javascript;" x/x]
- expected: FAIL
-
- [combined text/javascript ]
- expected: FAIL
-
- [separate text/javascript x/x]
- expected: FAIL
diff --git a/tests/wpt/meta/fetch/nosniff/script.html.ini b/tests/wpt/meta/fetch/nosniff/script.html.ini
deleted file mode 100644
index a7c14e36ada..00000000000
--- a/tests/wpt/meta/fetch/nosniff/script.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[script.html]
- [URL query: text/ecmascript;blah]
- expected: FAIL
diff --git a/tests/wpt/meta/fetch/nosniff/stylesheet.html.ini b/tests/wpt/meta/fetch/nosniff/stylesheet.html.ini
index e7469064e26..3b01619aeca 100644
--- a/tests/wpt/meta/fetch/nosniff/stylesheet.html.ini
+++ b/tests/wpt/meta/fetch/nosniff/stylesheet.html.ini
@@ -10,9 +10,3 @@
[Revalidated URL query: text/json]
expected: FAIL
-
- [URL query: text/css;blah]
- expected: FAIL
-
- [Revalidated URL query: text/css;blah]
- expected: FAIL
diff --git a/tests/wpt/meta/fetch/nosniff/worker.html.ini b/tests/wpt/meta/fetch/nosniff/worker.html.ini
deleted file mode 100644
index a2f0564a334..00000000000
--- a/tests/wpt/meta/fetch/nosniff/worker.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[worker.html]
- [URL query: ?type=text/ecmascript;yay]
- expected: FAIL
diff --git a/tests/wpt/meta/mimesniff/mime-types/charset-parameter.window.js.ini b/tests/wpt/meta/mimesniff/mime-types/charset-parameter.window.js.ini
index 82cfd1dfe2d..4e653d68af1 100644
--- a/tests/wpt/meta/mimesniff/mime-types/charset-parameter.window.js.ini
+++ b/tests/wpt/meta/mimesniff/mime-types/charset-parameter.window.js.ini
@@ -2,41 +2,23 @@
[text/html;x=(;charset=gbk]
expected: FAIL
- [text/html ;charset=gbk]
- expected: FAIL
-
[text/html;charset= gbk]
expected: FAIL
- [text/html;test;charset=gbk]
- expected: FAIL
-
- [text/html;test=;charset=gbk]
- expected: FAIL
-
- [text/html;';charset=gbk]
- expected: FAIL
-
- [text/html;";charset=gbk]
- expected: FAIL
-
- [text/html ; ; charset=gbk]
- expected: FAIL
-
- [text/html;;;;charset=gbk]
- expected: FAIL
-
[text/html;charset= ";charset=GBK]
expected: FAIL
[text/html;charset=";charset=foo";charset=GBK]
expected: FAIL
- [text/html;charset="gbk]
+ [text/html;test=ÿ;charset=gbk]
expected: FAIL
- [text/html;charset="gbk"x]
+ [text/html;charset=" gbk"]
expected: FAIL
- [text/html;test=ÿ;charset=gbk]
+ [text/html;charset="gbk "]
+ expected: FAIL
+
+ [text/html;charset="\\ gbk"]
expected: FAIL
diff --git a/tests/wpt/meta/mimesniff/mime-types/parsing.any.js.ini b/tests/wpt/meta/mimesniff/mime-types/parsing.any.js.ini
index 38798229d89..f89d4952468 100644
--- a/tests/wpt/meta/mimesniff/mime-types/parsing.any.js.ini
+++ b/tests/wpt/meta/mimesniff/mime-types/parsing.any.js.ini
@@ -950,9 +950,6 @@
[x/x;€=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;€=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=€;bonus=x (Blob/File)]
expected: FAIL
@@ -968,9 +965,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -986,9 +980,6 @@
[x/x;‚=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‚=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‚;bonus=x (Blob/File)]
expected: FAIL
@@ -1004,9 +995,6 @@
[x/x;ƒ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ƒ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ƒ;bonus=x (Blob/File)]
expected: FAIL
@@ -1022,9 +1010,6 @@
[x/x;„=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;„=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=„;bonus=x (Blob/File)]
expected: FAIL
@@ -1040,9 +1025,6 @@
[x/x;…=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;…=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=…;bonus=x (Blob/File)]
expected: FAIL
@@ -1058,9 +1040,6 @@
[x/x;†=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;†=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=†;bonus=x (Blob/File)]
expected: FAIL
@@ -1076,9 +1055,6 @@
[x/x;‡=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‡=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‡;bonus=x (Blob/File)]
expected: FAIL
@@ -1094,9 +1070,6 @@
[x/x;ˆ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ˆ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ˆ;bonus=x (Blob/File)]
expected: FAIL
@@ -1112,9 +1085,6 @@
[x/x;‰=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‰=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‰;bonus=x (Blob/File)]
expected: FAIL
@@ -1130,9 +1100,6 @@
[x/x;Š=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Š=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Š;bonus=x (Blob/File)]
expected: FAIL
@@ -1148,9 +1115,6 @@
[x/x;‹=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‹=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‹;bonus=x (Blob/File)]
expected: FAIL
@@ -1166,9 +1130,6 @@
[x/x;Œ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Œ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Œ;bonus=x (Blob/File)]
expected: FAIL
@@ -1184,9 +1145,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -1202,9 +1160,6 @@
[x/x;Ž=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ž=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ž;bonus=x (Blob/File)]
expected: FAIL
@@ -1220,9 +1175,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -1238,9 +1190,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -1256,9 +1205,6 @@
[x/x;‘=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‘=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‘;bonus=x (Blob/File)]
expected: FAIL
@@ -1274,9 +1220,6 @@
[x/x;’=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;’=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=’;bonus=x (Blob/File)]
expected: FAIL
@@ -1292,9 +1235,6 @@
[x/x;“=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;“=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=“;bonus=x (Blob/File)]
expected: FAIL
@@ -1310,9 +1250,6 @@
[x/x;”=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;”=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=”;bonus=x (Blob/File)]
expected: FAIL
@@ -1328,9 +1265,6 @@
[x/x;•=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;•=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=•;bonus=x (Blob/File)]
expected: FAIL
@@ -1346,9 +1280,6 @@
[x/x;–=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;–=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=–;bonus=x (Blob/File)]
expected: FAIL
@@ -1364,9 +1295,6 @@
[x/x;—=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;—=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=—;bonus=x (Blob/File)]
expected: FAIL
@@ -1382,9 +1310,6 @@
[x/x;˜=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;˜=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=˜;bonus=x (Blob/File)]
expected: FAIL
@@ -1400,9 +1325,6 @@
[x/x;™=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;™=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=™;bonus=x (Blob/File)]
expected: FAIL
@@ -1418,9 +1340,6 @@
[x/x;š=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;š=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=š;bonus=x (Blob/File)]
expected: FAIL
@@ -1436,9 +1355,6 @@
[x/x;›=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;›=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=›;bonus=x (Blob/File)]
expected: FAIL
@@ -1454,9 +1370,6 @@
[x/x;œ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;œ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=œ;bonus=x (Blob/File)]
expected: FAIL
@@ -1472,9 +1385,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -1490,9 +1400,6 @@
[x/x;ž=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ž=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ž;bonus=x (Blob/File)]
expected: FAIL
@@ -1508,9 +1415,6 @@
[x/x;Ÿ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ÿ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ÿ;bonus=x (Blob/File)]
expected: FAIL
@@ -1526,9 +1430,6 @@
[x/x; =x;bonus=x (Blob/File)]
expected: FAIL
- [x/x; =x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x= ;bonus=x (Blob/File)]
expected: FAIL
@@ -1544,9 +1445,6 @@
[x/x;¡=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¡=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¡;bonus=x (Blob/File)]
expected: FAIL
@@ -1562,9 +1460,6 @@
[x/x;¢=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¢=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¢;bonus=x (Blob/File)]
expected: FAIL
@@ -1580,9 +1475,6 @@
[x/x;£=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;£=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=£;bonus=x (Blob/File)]
expected: FAIL
@@ -1598,9 +1490,6 @@
[x/x;¤=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¤=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¤;bonus=x (Blob/File)]
expected: FAIL
@@ -1616,9 +1505,6 @@
[x/x;¥=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¥=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¥;bonus=x (Blob/File)]
expected: FAIL
@@ -1634,9 +1520,6 @@
[x/x;¦=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¦=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¦;bonus=x (Blob/File)]
expected: FAIL
@@ -1652,9 +1535,6 @@
[x/x;§=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;§=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=§;bonus=x (Blob/File)]
expected: FAIL
@@ -1670,9 +1550,6 @@
[x/x;¨=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¨=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¨;bonus=x (Blob/File)]
expected: FAIL
@@ -1688,9 +1565,6 @@
[x/x;©=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;©=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=©;bonus=x (Blob/File)]
expected: FAIL
@@ -1706,9 +1580,6 @@
[x/x;ª=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ª=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ª;bonus=x (Blob/File)]
expected: FAIL
@@ -1724,9 +1595,6 @@
[x/x;«=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;«=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=«;bonus=x (Blob/File)]
expected: FAIL
@@ -1742,9 +1610,6 @@
[x/x;¬=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¬=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¬;bonus=x (Blob/File)]
expected: FAIL
@@ -1760,9 +1625,6 @@
[x/x;­=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;­=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=­;bonus=x (Blob/File)]
expected: FAIL
@@ -1778,9 +1640,6 @@
[x/x;®=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;®=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=®;bonus=x (Blob/File)]
expected: FAIL
@@ -1796,9 +1655,6 @@
[x/x;¯=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¯=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¯;bonus=x (Blob/File)]
expected: FAIL
@@ -1814,9 +1670,6 @@
[x/x;°=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;°=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=°;bonus=x (Blob/File)]
expected: FAIL
@@ -1832,9 +1685,6 @@
[x/x;±=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;±=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=±;bonus=x (Blob/File)]
expected: FAIL
@@ -1850,9 +1700,6 @@
[x/x;²=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;²=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=²;bonus=x (Blob/File)]
expected: FAIL
@@ -1868,9 +1715,6 @@
[x/x;³=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;³=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=³;bonus=x (Blob/File)]
expected: FAIL
@@ -1886,9 +1730,6 @@
[x/x;´=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;´=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=´;bonus=x (Blob/File)]
expected: FAIL
@@ -1904,9 +1745,6 @@
[x/x;µ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;µ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=µ;bonus=x (Blob/File)]
expected: FAIL
@@ -1922,9 +1760,6 @@
[x/x;¶=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¶=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¶;bonus=x (Blob/File)]
expected: FAIL
@@ -1940,9 +1775,6 @@
[x/x;·=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;·=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=·;bonus=x (Blob/File)]
expected: FAIL
@@ -1958,9 +1790,6 @@
[x/x;¸=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¸=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¸;bonus=x (Blob/File)]
expected: FAIL
@@ -1976,9 +1805,6 @@
[x/x;¹=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¹=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¹;bonus=x (Blob/File)]
expected: FAIL
@@ -1994,9 +1820,6 @@
[x/x;º=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;º=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=º;bonus=x (Blob/File)]
expected: FAIL
@@ -2012,9 +1835,6 @@
[x/x;»=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;»=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=»;bonus=x (Blob/File)]
expected: FAIL
@@ -2030,9 +1850,6 @@
[x/x;¼=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¼=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¼;bonus=x (Blob/File)]
expected: FAIL
@@ -2048,9 +1865,6 @@
[x/x;½=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;½=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=½;bonus=x (Blob/File)]
expected: FAIL
@@ -2066,9 +1880,6 @@
[x/x;¾=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¾=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¾;bonus=x (Blob/File)]
expected: FAIL
@@ -2084,9 +1895,6 @@
[x/x;¿=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¿=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¿;bonus=x (Blob/File)]
expected: FAIL
@@ -2102,9 +1910,6 @@
[x/x;À=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;À=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=À;bonus=x (Blob/File)]
expected: FAIL
@@ -2120,9 +1925,6 @@
[x/x;Á=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Á=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Á;bonus=x (Blob/File)]
expected: FAIL
@@ -2138,9 +1940,6 @@
[x/x;Â=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Â=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Â;bonus=x (Blob/File)]
expected: FAIL
@@ -2156,9 +1955,6 @@
[x/x;Ã=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ã=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ã;bonus=x (Blob/File)]
expected: FAIL
@@ -2174,9 +1970,6 @@
[x/x;Ä=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ä=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ä;bonus=x (Blob/File)]
expected: FAIL
@@ -2192,9 +1985,6 @@
[x/x;Å=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Å=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Å;bonus=x (Blob/File)]
expected: FAIL
@@ -2210,9 +2000,6 @@
[x/x;Æ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Æ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Æ;bonus=x (Blob/File)]
expected: FAIL
@@ -2228,9 +2015,6 @@
[x/x;Ç=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ç=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ç;bonus=x (Blob/File)]
expected: FAIL
@@ -2246,9 +2030,6 @@
[x/x;È=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;È=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=È;bonus=x (Blob/File)]
expected: FAIL
@@ -2264,9 +2045,6 @@
[x/x;É=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;É=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=É;bonus=x (Blob/File)]
expected: FAIL
@@ -2282,9 +2060,6 @@
[x/x;Ê=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ê=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ê;bonus=x (Blob/File)]
expected: FAIL
@@ -2300,9 +2075,6 @@
[x/x;Ë=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ë=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ë;bonus=x (Blob/File)]
expected: FAIL
@@ -2318,9 +2090,6 @@
[x/x;Ì=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ì=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ì;bonus=x (Blob/File)]
expected: FAIL
@@ -2336,9 +2105,6 @@
[x/x;Í=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Í=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Í;bonus=x (Blob/File)]
expected: FAIL
@@ -2354,9 +2120,6 @@
[x/x;Î=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Î=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Î;bonus=x (Blob/File)]
expected: FAIL
@@ -2372,9 +2135,6 @@
[x/x;Ï=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ï=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ï;bonus=x (Blob/File)]
expected: FAIL
@@ -2390,9 +2150,6 @@
[x/x;Ð=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ð=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ð;bonus=x (Blob/File)]
expected: FAIL
@@ -2408,9 +2165,6 @@
[x/x;Ñ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ñ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ñ;bonus=x (Blob/File)]
expected: FAIL
@@ -2426,9 +2180,6 @@
[x/x;Ò=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ò=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ò;bonus=x (Blob/File)]
expected: FAIL
@@ -2444,9 +2195,6 @@
[x/x;Ó=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ó=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ó;bonus=x (Blob/File)]
expected: FAIL
@@ -2462,9 +2210,6 @@
[x/x;Ô=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ô=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ô;bonus=x (Blob/File)]
expected: FAIL
@@ -2480,9 +2225,6 @@
[x/x;Õ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Õ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Õ;bonus=x (Blob/File)]
expected: FAIL
@@ -2498,9 +2240,6 @@
[x/x;Ö=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ö=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ö;bonus=x (Blob/File)]
expected: FAIL
@@ -2516,9 +2255,6 @@
[x/x;×=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;×=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=×;bonus=x (Blob/File)]
expected: FAIL
@@ -2534,9 +2270,6 @@
[x/x;Ø=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ø=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ø;bonus=x (Blob/File)]
expected: FAIL
@@ -2552,9 +2285,6 @@
[x/x;Ù=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ù=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ù;bonus=x (Blob/File)]
expected: FAIL
@@ -2570,9 +2300,6 @@
[x/x;Ú=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ú=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ú;bonus=x (Blob/File)]
expected: FAIL
@@ -2588,9 +2315,6 @@
[x/x;Û=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Û=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Û;bonus=x (Blob/File)]
expected: FAIL
@@ -2606,9 +2330,6 @@
[x/x;Ü=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ü=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ü;bonus=x (Blob/File)]
expected: FAIL
@@ -2624,9 +2345,6 @@
[x/x;Ý=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ý=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ý;bonus=x (Blob/File)]
expected: FAIL
@@ -2642,9 +2360,6 @@
[x/x;Þ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Þ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Þ;bonus=x (Blob/File)]
expected: FAIL
@@ -2660,9 +2375,6 @@
[x/x;ß=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ß=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ß;bonus=x (Blob/File)]
expected: FAIL
@@ -2678,9 +2390,6 @@
[x/x;à=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;à=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=à;bonus=x (Blob/File)]
expected: FAIL
@@ -2696,9 +2405,6 @@
[x/x;á=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;á=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=á;bonus=x (Blob/File)]
expected: FAIL
@@ -2714,9 +2420,6 @@
[x/x;â=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;â=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=â;bonus=x (Blob/File)]
expected: FAIL
@@ -2732,9 +2435,6 @@
[x/x;ã=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ã=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ã;bonus=x (Blob/File)]
expected: FAIL
@@ -2750,9 +2450,6 @@
[x/x;ä=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ä=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ä;bonus=x (Blob/File)]
expected: FAIL
@@ -2768,9 +2465,6 @@
[x/x;å=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;å=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=å;bonus=x (Blob/File)]
expected: FAIL
@@ -2786,9 +2480,6 @@
[x/x;æ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;æ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=æ;bonus=x (Blob/File)]
expected: FAIL
@@ -2804,9 +2495,6 @@
[x/x;ç=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ç=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ç;bonus=x (Blob/File)]
expected: FAIL
@@ -2822,9 +2510,6 @@
[x/x;è=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;è=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=è;bonus=x (Blob/File)]
expected: FAIL
@@ -2840,9 +2525,6 @@
[x/x;é=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;é=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=é;bonus=x (Blob/File)]
expected: FAIL
@@ -2858,9 +2540,6 @@
[x/x;ê=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ê=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ê;bonus=x (Blob/File)]
expected: FAIL
@@ -2876,9 +2555,6 @@
[x/x;ë=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ë=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ë;bonus=x (Blob/File)]
expected: FAIL
@@ -2894,9 +2570,6 @@
[x/x;ì=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ì=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ì;bonus=x (Blob/File)]
expected: FAIL
@@ -2912,9 +2585,6 @@
[x/x;í=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;í=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=í;bonus=x (Blob/File)]
expected: FAIL
@@ -2930,9 +2600,6 @@
[x/x;î=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;î=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=î;bonus=x (Blob/File)]
expected: FAIL
@@ -2948,9 +2615,6 @@
[x/x;ï=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ï=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ï;bonus=x (Blob/File)]
expected: FAIL
@@ -2966,9 +2630,6 @@
[x/x;ð=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ð=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ð;bonus=x (Blob/File)]
expected: FAIL
@@ -2984,9 +2645,6 @@
[x/x;ñ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ñ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ñ;bonus=x (Blob/File)]
expected: FAIL
@@ -3002,9 +2660,6 @@
[x/x;ò=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ò=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ò;bonus=x (Blob/File)]
expected: FAIL
@@ -3020,9 +2675,6 @@
[x/x;ó=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ó=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ó;bonus=x (Blob/File)]
expected: FAIL
@@ -3038,9 +2690,6 @@
[x/x;ô=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ô=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ô;bonus=x (Blob/File)]
expected: FAIL
@@ -3056,9 +2705,6 @@
[x/x;õ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;õ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=õ;bonus=x (Blob/File)]
expected: FAIL
@@ -3074,9 +2720,6 @@
[x/x;ö=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ö=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ö;bonus=x (Blob/File)]
expected: FAIL
@@ -3092,9 +2735,6 @@
[x/x;÷=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;÷=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=÷;bonus=x (Blob/File)]
expected: FAIL
@@ -3110,9 +2750,6 @@
[x/x;ø=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ø=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ø;bonus=x (Blob/File)]
expected: FAIL
@@ -3128,9 +2765,6 @@
[x/x;ù=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ù=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ù;bonus=x (Blob/File)]
expected: FAIL
@@ -3146,9 +2780,6 @@
[x/x;ú=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ú=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ú;bonus=x (Blob/File)]
expected: FAIL
@@ -3164,9 +2795,6 @@
[x/x;û=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;û=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=û;bonus=x (Blob/File)]
expected: FAIL
@@ -3182,9 +2810,6 @@
[x/x;ü=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ü=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ü;bonus=x (Blob/File)]
expected: FAIL
@@ -3200,9 +2825,6 @@
[x/x;ý=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ý=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ý;bonus=x (Blob/File)]
expected: FAIL
@@ -3218,9 +2840,6 @@
[x/x;þ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;þ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=þ;bonus=x (Blob/File)]
expected: FAIL
@@ -3236,9 +2855,6 @@
[x/x;ÿ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ÿ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ÿ;bonus=x (Blob/File)]
expected: FAIL
@@ -3251,6 +2867,12 @@
[x/x;x="ÿ";bonus=x (Request/Response)]
expected: FAIL
+ [x/x;,=x;bonus=x (Request/Response)]
+ expected: FAIL
+
+ [x/x;x=,;bonus=x (Request/Response)]
+ expected: FAIL
+
[parsing.any.html]
[TEXT/HTML;CHARSET=GBK (Blob/File)]
@@ -4204,9 +3826,6 @@
[x/x;€=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;€=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=€;bonus=x (Blob/File)]
expected: FAIL
@@ -4222,9 +3841,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -4240,9 +3856,6 @@
[x/x;‚=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‚=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‚;bonus=x (Blob/File)]
expected: FAIL
@@ -4258,9 +3871,6 @@
[x/x;ƒ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ƒ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ƒ;bonus=x (Blob/File)]
expected: FAIL
@@ -4276,9 +3886,6 @@
[x/x;„=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;„=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=„;bonus=x (Blob/File)]
expected: FAIL
@@ -4294,9 +3901,6 @@
[x/x;…=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;…=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=…;bonus=x (Blob/File)]
expected: FAIL
@@ -4312,9 +3916,6 @@
[x/x;†=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;†=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=†;bonus=x (Blob/File)]
expected: FAIL
@@ -4330,9 +3931,6 @@
[x/x;‡=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‡=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‡;bonus=x (Blob/File)]
expected: FAIL
@@ -4348,9 +3946,6 @@
[x/x;ˆ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ˆ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ˆ;bonus=x (Blob/File)]
expected: FAIL
@@ -4366,9 +3961,6 @@
[x/x;‰=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‰=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‰;bonus=x (Blob/File)]
expected: FAIL
@@ -4384,9 +3976,6 @@
[x/x;Š=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Š=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Š;bonus=x (Blob/File)]
expected: FAIL
@@ -4402,9 +3991,6 @@
[x/x;‹=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‹=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‹;bonus=x (Blob/File)]
expected: FAIL
@@ -4420,9 +4006,6 @@
[x/x;Œ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Œ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Œ;bonus=x (Blob/File)]
expected: FAIL
@@ -4438,9 +4021,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -4456,9 +4036,6 @@
[x/x;Ž=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ž=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ž;bonus=x (Blob/File)]
expected: FAIL
@@ -4474,9 +4051,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -4492,9 +4066,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -4510,9 +4081,6 @@
[x/x;‘=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;‘=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=‘;bonus=x (Blob/File)]
expected: FAIL
@@ -4528,9 +4096,6 @@
[x/x;’=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;’=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=’;bonus=x (Blob/File)]
expected: FAIL
@@ -4546,9 +4111,6 @@
[x/x;“=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;“=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=“;bonus=x (Blob/File)]
expected: FAIL
@@ -4564,9 +4126,6 @@
[x/x;”=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;”=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=”;bonus=x (Blob/File)]
expected: FAIL
@@ -4582,9 +4141,6 @@
[x/x;•=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;•=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=•;bonus=x (Blob/File)]
expected: FAIL
@@ -4600,9 +4156,6 @@
[x/x;–=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;–=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=–;bonus=x (Blob/File)]
expected: FAIL
@@ -4618,9 +4171,6 @@
[x/x;—=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;—=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=—;bonus=x (Blob/File)]
expected: FAIL
@@ -4636,9 +4186,6 @@
[x/x;˜=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;˜=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=˜;bonus=x (Blob/File)]
expected: FAIL
@@ -4654,9 +4201,6 @@
[x/x;™=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;™=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=™;bonus=x (Blob/File)]
expected: FAIL
@@ -4672,9 +4216,6 @@
[x/x;š=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;š=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=š;bonus=x (Blob/File)]
expected: FAIL
@@ -4690,9 +4231,6 @@
[x/x;›=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;›=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=›;bonus=x (Blob/File)]
expected: FAIL
@@ -4708,9 +4246,6 @@
[x/x;œ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;œ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=œ;bonus=x (Blob/File)]
expected: FAIL
@@ -4726,9 +4261,6 @@
[x/x;=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=;bonus=x (Blob/File)]
expected: FAIL
@@ -4744,9 +4276,6 @@
[x/x;ž=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ž=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ž;bonus=x (Blob/File)]
expected: FAIL
@@ -4762,9 +4291,6 @@
[x/x;Ÿ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ÿ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ÿ;bonus=x (Blob/File)]
expected: FAIL
@@ -4780,9 +4306,6 @@
[x/x; =x;bonus=x (Blob/File)]
expected: FAIL
- [x/x; =x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x= ;bonus=x (Blob/File)]
expected: FAIL
@@ -4798,9 +4321,6 @@
[x/x;¡=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¡=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¡;bonus=x (Blob/File)]
expected: FAIL
@@ -4816,9 +4336,6 @@
[x/x;¢=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¢=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¢;bonus=x (Blob/File)]
expected: FAIL
@@ -4834,9 +4351,6 @@
[x/x;£=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;£=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=£;bonus=x (Blob/File)]
expected: FAIL
@@ -4852,9 +4366,6 @@
[x/x;¤=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¤=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¤;bonus=x (Blob/File)]
expected: FAIL
@@ -4870,9 +4381,6 @@
[x/x;¥=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¥=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¥;bonus=x (Blob/File)]
expected: FAIL
@@ -4888,9 +4396,6 @@
[x/x;¦=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¦=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¦;bonus=x (Blob/File)]
expected: FAIL
@@ -4906,9 +4411,6 @@
[x/x;§=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;§=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=§;bonus=x (Blob/File)]
expected: FAIL
@@ -4924,9 +4426,6 @@
[x/x;¨=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¨=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¨;bonus=x (Blob/File)]
expected: FAIL
@@ -4942,9 +4441,6 @@
[x/x;©=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;©=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=©;bonus=x (Blob/File)]
expected: FAIL
@@ -4960,9 +4456,6 @@
[x/x;ª=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ª=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ª;bonus=x (Blob/File)]
expected: FAIL
@@ -4978,9 +4471,6 @@
[x/x;«=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;«=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=«;bonus=x (Blob/File)]
expected: FAIL
@@ -4996,9 +4486,6 @@
[x/x;¬=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¬=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¬;bonus=x (Blob/File)]
expected: FAIL
@@ -5014,9 +4501,6 @@
[x/x;­=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;­=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=­;bonus=x (Blob/File)]
expected: FAIL
@@ -5032,9 +4516,6 @@
[x/x;®=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;®=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=®;bonus=x (Blob/File)]
expected: FAIL
@@ -5050,9 +4531,6 @@
[x/x;¯=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¯=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¯;bonus=x (Blob/File)]
expected: FAIL
@@ -5068,9 +4546,6 @@
[x/x;°=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;°=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=°;bonus=x (Blob/File)]
expected: FAIL
@@ -5086,9 +4561,6 @@
[x/x;±=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;±=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=±;bonus=x (Blob/File)]
expected: FAIL
@@ -5104,9 +4576,6 @@
[x/x;²=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;²=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=²;bonus=x (Blob/File)]
expected: FAIL
@@ -5122,9 +4591,6 @@
[x/x;³=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;³=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=³;bonus=x (Blob/File)]
expected: FAIL
@@ -5140,9 +4606,6 @@
[x/x;´=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;´=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=´;bonus=x (Blob/File)]
expected: FAIL
@@ -5158,9 +4621,6 @@
[x/x;µ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;µ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=µ;bonus=x (Blob/File)]
expected: FAIL
@@ -5176,9 +4636,6 @@
[x/x;¶=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¶=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¶;bonus=x (Blob/File)]
expected: FAIL
@@ -5194,9 +4651,6 @@
[x/x;·=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;·=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=·;bonus=x (Blob/File)]
expected: FAIL
@@ -5212,9 +4666,6 @@
[x/x;¸=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¸=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¸;bonus=x (Blob/File)]
expected: FAIL
@@ -5230,9 +4681,6 @@
[x/x;¹=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¹=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¹;bonus=x (Blob/File)]
expected: FAIL
@@ -5248,9 +4696,6 @@
[x/x;º=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;º=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=º;bonus=x (Blob/File)]
expected: FAIL
@@ -5266,9 +4711,6 @@
[x/x;»=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;»=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=»;bonus=x (Blob/File)]
expected: FAIL
@@ -5284,9 +4726,6 @@
[x/x;¼=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¼=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¼;bonus=x (Blob/File)]
expected: FAIL
@@ -5302,9 +4741,6 @@
[x/x;½=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;½=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=½;bonus=x (Blob/File)]
expected: FAIL
@@ -5320,9 +4756,6 @@
[x/x;¾=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¾=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¾;bonus=x (Blob/File)]
expected: FAIL
@@ -5338,9 +4771,6 @@
[x/x;¿=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;¿=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=¿;bonus=x (Blob/File)]
expected: FAIL
@@ -5356,9 +4786,6 @@
[x/x;À=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;À=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=À;bonus=x (Blob/File)]
expected: FAIL
@@ -5374,9 +4801,6 @@
[x/x;Á=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Á=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Á;bonus=x (Blob/File)]
expected: FAIL
@@ -5392,9 +4816,6 @@
[x/x;Â=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Â=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Â;bonus=x (Blob/File)]
expected: FAIL
@@ -5410,9 +4831,6 @@
[x/x;Ã=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ã=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ã;bonus=x (Blob/File)]
expected: FAIL
@@ -5428,9 +4846,6 @@
[x/x;Ä=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ä=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ä;bonus=x (Blob/File)]
expected: FAIL
@@ -5446,9 +4861,6 @@
[x/x;Å=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Å=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Å;bonus=x (Blob/File)]
expected: FAIL
@@ -5464,9 +4876,6 @@
[x/x;Æ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Æ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Æ;bonus=x (Blob/File)]
expected: FAIL
@@ -5482,9 +4891,6 @@
[x/x;Ç=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ç=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ç;bonus=x (Blob/File)]
expected: FAIL
@@ -5500,9 +4906,6 @@
[x/x;È=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;È=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=È;bonus=x (Blob/File)]
expected: FAIL
@@ -5518,9 +4921,6 @@
[x/x;É=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;É=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=É;bonus=x (Blob/File)]
expected: FAIL
@@ -5536,9 +4936,6 @@
[x/x;Ê=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ê=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ê;bonus=x (Blob/File)]
expected: FAIL
@@ -5554,9 +4951,6 @@
[x/x;Ë=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ë=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ë;bonus=x (Blob/File)]
expected: FAIL
@@ -5572,9 +4966,6 @@
[x/x;Ì=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ì=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ì;bonus=x (Blob/File)]
expected: FAIL
@@ -5590,9 +4981,6 @@
[x/x;Í=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Í=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Í;bonus=x (Blob/File)]
expected: FAIL
@@ -5608,9 +4996,6 @@
[x/x;Î=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Î=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Î;bonus=x (Blob/File)]
expected: FAIL
@@ -5626,9 +5011,6 @@
[x/x;Ï=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ï=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ï;bonus=x (Blob/File)]
expected: FAIL
@@ -5644,9 +5026,6 @@
[x/x;Ð=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ð=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ð;bonus=x (Blob/File)]
expected: FAIL
@@ -5662,9 +5041,6 @@
[x/x;Ñ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ñ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ñ;bonus=x (Blob/File)]
expected: FAIL
@@ -5680,9 +5056,6 @@
[x/x;Ò=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ò=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ò;bonus=x (Blob/File)]
expected: FAIL
@@ -5698,9 +5071,6 @@
[x/x;Ó=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ó=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ó;bonus=x (Blob/File)]
expected: FAIL
@@ -5716,9 +5086,6 @@
[x/x;Ô=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ô=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ô;bonus=x (Blob/File)]
expected: FAIL
@@ -5734,9 +5101,6 @@
[x/x;Õ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Õ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Õ;bonus=x (Blob/File)]
expected: FAIL
@@ -5752,9 +5116,6 @@
[x/x;Ö=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ö=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ö;bonus=x (Blob/File)]
expected: FAIL
@@ -5770,9 +5131,6 @@
[x/x;×=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;×=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=×;bonus=x (Blob/File)]
expected: FAIL
@@ -5788,9 +5146,6 @@
[x/x;Ø=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ø=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ø;bonus=x (Blob/File)]
expected: FAIL
@@ -5806,9 +5161,6 @@
[x/x;Ù=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ù=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ù;bonus=x (Blob/File)]
expected: FAIL
@@ -5824,9 +5176,6 @@
[x/x;Ú=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ú=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ú;bonus=x (Blob/File)]
expected: FAIL
@@ -5842,9 +5191,6 @@
[x/x;Û=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Û=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Û;bonus=x (Blob/File)]
expected: FAIL
@@ -5860,9 +5206,6 @@
[x/x;Ü=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ü=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ü;bonus=x (Blob/File)]
expected: FAIL
@@ -5878,9 +5221,6 @@
[x/x;Ý=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Ý=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Ý;bonus=x (Blob/File)]
expected: FAIL
@@ -5896,9 +5236,6 @@
[x/x;Þ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;Þ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=Þ;bonus=x (Blob/File)]
expected: FAIL
@@ -5914,9 +5251,6 @@
[x/x;ß=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ß=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ß;bonus=x (Blob/File)]
expected: FAIL
@@ -5932,9 +5266,6 @@
[x/x;à=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;à=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=à;bonus=x (Blob/File)]
expected: FAIL
@@ -5950,9 +5281,6 @@
[x/x;á=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;á=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=á;bonus=x (Blob/File)]
expected: FAIL
@@ -5968,9 +5296,6 @@
[x/x;â=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;â=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=â;bonus=x (Blob/File)]
expected: FAIL
@@ -5986,9 +5311,6 @@
[x/x;ã=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ã=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ã;bonus=x (Blob/File)]
expected: FAIL
@@ -6004,9 +5326,6 @@
[x/x;ä=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ä=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ä;bonus=x (Blob/File)]
expected: FAIL
@@ -6022,9 +5341,6 @@
[x/x;å=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;å=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=å;bonus=x (Blob/File)]
expected: FAIL
@@ -6040,9 +5356,6 @@
[x/x;æ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;æ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=æ;bonus=x (Blob/File)]
expected: FAIL
@@ -6058,9 +5371,6 @@
[x/x;ç=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ç=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ç;bonus=x (Blob/File)]
expected: FAIL
@@ -6076,9 +5386,6 @@
[x/x;è=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;è=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=è;bonus=x (Blob/File)]
expected: FAIL
@@ -6094,9 +5401,6 @@
[x/x;é=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;é=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=é;bonus=x (Blob/File)]
expected: FAIL
@@ -6112,9 +5416,6 @@
[x/x;ê=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ê=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ê;bonus=x (Blob/File)]
expected: FAIL
@@ -6130,9 +5431,6 @@
[x/x;ë=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ë=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ë;bonus=x (Blob/File)]
expected: FAIL
@@ -6148,9 +5446,6 @@
[x/x;ì=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ì=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ì;bonus=x (Blob/File)]
expected: FAIL
@@ -6166,9 +5461,6 @@
[x/x;í=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;í=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=í;bonus=x (Blob/File)]
expected: FAIL
@@ -6184,9 +5476,6 @@
[x/x;î=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;î=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=î;bonus=x (Blob/File)]
expected: FAIL
@@ -6202,9 +5491,6 @@
[x/x;ï=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ï=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ï;bonus=x (Blob/File)]
expected: FAIL
@@ -6220,9 +5506,6 @@
[x/x;ð=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ð=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ð;bonus=x (Blob/File)]
expected: FAIL
@@ -6238,9 +5521,6 @@
[x/x;ñ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ñ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ñ;bonus=x (Blob/File)]
expected: FAIL
@@ -6256,9 +5536,6 @@
[x/x;ò=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ò=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ò;bonus=x (Blob/File)]
expected: FAIL
@@ -6274,9 +5551,6 @@
[x/x;ó=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ó=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ó;bonus=x (Blob/File)]
expected: FAIL
@@ -6292,9 +5566,6 @@
[x/x;ô=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ô=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ô;bonus=x (Blob/File)]
expected: FAIL
@@ -6310,9 +5581,6 @@
[x/x;õ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;õ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=õ;bonus=x (Blob/File)]
expected: FAIL
@@ -6328,9 +5596,6 @@
[x/x;ö=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ö=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ö;bonus=x (Blob/File)]
expected: FAIL
@@ -6346,9 +5611,6 @@
[x/x;÷=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;÷=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=÷;bonus=x (Blob/File)]
expected: FAIL
@@ -6364,9 +5626,6 @@
[x/x;ø=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ø=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ø;bonus=x (Blob/File)]
expected: FAIL
@@ -6382,9 +5641,6 @@
[x/x;ù=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ù=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ù;bonus=x (Blob/File)]
expected: FAIL
@@ -6400,9 +5656,6 @@
[x/x;ú=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ú=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ú;bonus=x (Blob/File)]
expected: FAIL
@@ -6418,9 +5671,6 @@
[x/x;û=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;û=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=û;bonus=x (Blob/File)]
expected: FAIL
@@ -6436,9 +5686,6 @@
[x/x;ü=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ü=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ü;bonus=x (Blob/File)]
expected: FAIL
@@ -6454,9 +5701,6 @@
[x/x;ý=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ý=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ý;bonus=x (Blob/File)]
expected: FAIL
@@ -6472,9 +5716,6 @@
[x/x;þ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;þ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=þ;bonus=x (Blob/File)]
expected: FAIL
@@ -6490,9 +5731,6 @@
[x/x;ÿ=x;bonus=x (Blob/File)]
expected: FAIL
- [x/x;ÿ=x;bonus=x (Request/Response)]
- expected: FAIL
-
[x/x;x=ÿ;bonus=x (Blob/File)]
expected: FAIL
@@ -6504,3 +5742,9 @@
[x/x;x="ÿ";bonus=x (Request/Response)]
expected: FAIL
+
+ [x/x;,=x;bonus=x (Request/Response)]
+ expected: FAIL
+
+ [x/x;x=,;bonus=x (Request/Response)]
+ expected: FAIL
diff --git a/tests/wpt/meta/workers/importscripts_mime.any.js.ini b/tests/wpt/meta/workers/importscripts_mime.any.js.ini
index cb62c5c212b..88a88174237 100644
--- a/tests/wpt/meta/workers/importscripts_mime.any.js.ini
+++ b/tests/wpt/meta/workers/importscripts_mime.any.js.ini
@@ -23,9 +23,6 @@
[importScripts() requires scripty MIME types: zzz/zzz is blocked.]
expected: FAIL
- [importScripts() requires scripty MIME types: text/csv;bla;bla is blocked.]
- expected: FAIL
-
[importScripts() requires scripty MIME types: Text/html is blocked.]
expected: FAIL