aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock53
-rw-r--r--Cargo.toml6
-rw-r--r--components/script/Cargo.toml1
-rw-r--r--components/script/dom/servoparser/async_html.rs10
-rw-r--r--components/script/dom/servoparser/html.rs3
-rw-r--r--components/script/dom/servoparser/mod.rs13
-rw-r--r--components/script/dom/servoparser/prefetch.rs3
-rw-r--r--components/script/dom/servoparser/xml.rs18
8 files changed, 53 insertions, 54 deletions
diff --git a/Cargo.lock b/Cargo.lock
index ee3c5dbad23..461ba94e96f 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]]
@@ -2049,7 +2049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2575,7 +2575,7 @@ dependencies = [
"gobject-sys",
"libc",
"system-deps",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -3280,9 +3280,9 @@ dependencies = [
[[package]]
name = "html5ever"
-version = "0.30.0"
+version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5bf3413d61499f71fe4f627bbecfbec2977ce280525701df788f47370b0c507"
+checksum = "953cbbe631aae7fc0a112702ad5d3aaf09da38beaf45ea84610d6e1c358f569c"
dependencies = [
"log",
"mac",
@@ -4037,7 +4037,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
dependencies = [
"hermit-abi 0.5.0",
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -4331,7 +4331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
dependencies = [
"cfg-if",
- "windows-targets 0.52.6",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -4530,9 +4530,9 @@ dependencies = [
[[package]]
name = "markup5ever"
-version = "0.15.0"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03a7b81dfb91586d0677086d40a6d755070e0799b71bb897485bac408dfd5c69"
+checksum = "0ba2225413ed418d540a2c8247d794f4b0527a021da36f69c05344d716dc44c1"
dependencies = [
"log",
"phf",
@@ -6210,7 +6210,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -6344,6 +6344,7 @@ dependencies = [
"libc",
"log",
"malloc_size_of_derive",
+ "markup5ever",
"media",
"metrics",
"mime",
@@ -6537,7 +6538,7 @@ dependencies = [
[[package]]
name = "selectors"
version = "0.27.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"bitflags 2.9.0",
"cssparser",
@@ -6822,7 +6823,7 @@ dependencies = [
[[package]]
name = "servo_arc"
version = "0.4.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"serde",
"stable_deref_trait",
@@ -7274,7 +7275,7 @@ dependencies = [
[[package]]
name = "stylo"
version = "0.2.1"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"app_units",
"arrayvec",
@@ -7332,7 +7333,7 @@ dependencies = [
[[package]]
name = "stylo_atoms"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"string_cache",
"string_cache_codegen",
@@ -7341,12 +7342,12 @@ dependencies = [
[[package]]
name = "stylo_config"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
[[package]]
name = "stylo_derive"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"darling",
"proc-macro2",
@@ -7358,7 +7359,7 @@ dependencies = [
[[package]]
name = "stylo_dom"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"bitflags 2.9.0",
"stylo_malloc_size_of",
@@ -7367,7 +7368,7 @@ dependencies = [
[[package]]
name = "stylo_malloc_size_of"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"app_units",
"cssparser",
@@ -7384,12 +7385,12 @@ dependencies = [
[[package]]
name = "stylo_static_prefs"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
[[package]]
name = "stylo_traits"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"app_units",
"bitflags 2.9.0",
@@ -7553,7 +7554,7 @@ dependencies = [
"getrandom",
"once_cell",
"rustix",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -7772,7 +7773,7 @@ dependencies = [
[[package]]
name = "to_shmem"
version = "0.2.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"cssparser",
"servo_arc",
@@ -7785,7 +7786,7 @@ dependencies = [
[[package]]
name = "to_shmem_derive"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#53bd9b280e15d8b55636b93001083d914ee2cb6b"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#c756a21864709dae8f85c564125bf92440aeaab5"
dependencies = [
"darling",
"proc-macro2",
@@ -8853,7 +8854,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]]
@@ -9430,9 +9431,9 @@ checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4"
[[package]]
name = "xml5ever"
-version = "0.21.0"
+version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9f61eba2105dcadbee9232cfcf75c96abea184bf3805a8bfe022cf7fe7fa11d"
+checksum = "0a91563ba5a5ab749488164063f1317e327ca1daa80f00e5bd1e670ad0d78154"
dependencies = [
"log",
"mac",
diff --git a/Cargo.toml b/Cargo.toml
index 9ed4ad4dda2..e4c13d3678e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -71,7 +71,7 @@ gstreamer-video = "0.23"
harfbuzz-sys = "0.6.1"
headers = "0.4"
hitrace = "0.1.4"
-html5ever = "0.30"
+html5ever = "0.31"
http = "1.3"
http-body-util = "0.1"
hyper = "1.6"
@@ -92,7 +92,7 @@ log = "0.4"
mach2 = "0.4"
malloc_size_of = { package = "servo_malloc_size_of", path = "components/malloc_size_of" }
malloc_size_of_derive = "0.1"
-markup5ever = "0.15"
+markup5ever = "0.16"
memmap2 = "0.9.5"
mime = "0.3.13"
mime_guess = "2.0.5"
@@ -174,7 +174,7 @@ windows-sys = "0.59"
wio = "0.2"
wr_malloc_size_of = { git = "https://github.com/servo/webrender", branch = "0.66" }
xi-unicode = "0.3.0"
-xml5ever = "0.21"
+xml5ever = "0.22"
[profile.release]
opt-level = 3
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml
index 691afd3935e..37e80d0e748 100644
--- a/components/script/Cargo.toml
+++ b/components/script/Cargo.toml
@@ -84,6 +84,7 @@ libc = { workspace = true }
log = { workspace = true }
malloc_size_of = { workspace = true }
malloc_size_of_derive = { workspace = true }
+markup5ever = { workspace = true }
media = { path = "../media" }
metrics = { path = "../metrics" }
mime = { workspace = true }
diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs
index 3b3df28d4a9..7ddc425678e 100644
--- a/components/script/dom/servoparser/async_html.rs
+++ b/components/script/dom/servoparser/async_html.rs
@@ -14,14 +14,14 @@ use crossbeam_channel::{Receiver, Sender, unbounded};
use html5ever::buffer_queue::BufferQueue;
use html5ever::tendril::fmt::UTF8;
use html5ever::tendril::{SendTendril, StrTendril, Tendril};
-use html5ever::tokenizer::{Tokenizer as HtmlTokenizer, TokenizerOpts, TokenizerResult};
+use html5ever::tokenizer::{Tokenizer as HtmlTokenizer, TokenizerOpts};
use html5ever::tree_builder::{
- ElementFlags, NextParserState, NodeOrText as HtmlNodeOrText, QuirksMode, TreeBuilder,
- TreeBuilderOpts, TreeSink,
+ ElementFlags, NodeOrText as HtmlNodeOrText, QuirksMode, TreeBuilder, TreeBuilderOpts, TreeSink,
};
use html5ever::{
Attribute as HtmlAttribute, ExpandedName, QualName, local_name, namespace_url, ns,
};
+use markup5ever::TokenizerResult;
use servo_url::ServoUrl;
use style::context::QuirksMode as ServoQuirksMode;
@@ -901,10 +901,6 @@ impl TreeSink for Sink {
self.send_op(ParseOperation::MarkScriptAlreadyStarted { node: node.id });
}
- fn complete_script(&self, _: &Self::Handle) -> NextParserState {
- panic!("complete_script should not be called here!");
- }
-
fn reparent_children(&self, parent: &Self::Handle, new_parent: &Self::Handle) {
self.send_op(ParseOperation::ReparentChildren {
parent: parent.id,
diff --git a/components/script/dom/servoparser/html.rs b/components/script/dom/servoparser/html.rs
index 14d75a355d4..3bd486b5cb7 100644
--- a/components/script/dom/servoparser/html.rs
+++ b/components/script/dom/servoparser/html.rs
@@ -10,9 +10,10 @@ use std::io;
use html5ever::buffer_queue::BufferQueue;
use html5ever::serialize::TraversalScope::IncludeNode;
use html5ever::serialize::{AttrRef, Serialize, Serializer, TraversalScope};
-use html5ever::tokenizer::{Tokenizer as HtmlTokenizer, TokenizerOpts, TokenizerResult};
+use html5ever::tokenizer::{Tokenizer as HtmlTokenizer, TokenizerOpts};
use html5ever::tree_builder::{TreeBuilder, TreeBuilderOpts};
use html5ever::{QualName, local_name, namespace_url, ns};
+use markup5ever::TokenizerResult;
use script_bindings::trace::CustomTraceable;
use servo_url::ServoUrl;
use xml5ever::LocalName;
diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs
index eb1e8d687bd..2652e44e02c 100644
--- a/components/script/dom/servoparser/mod.rs
+++ b/components/script/dom/servoparser/mod.rs
@@ -16,10 +16,10 @@ use encoding_rs::Encoding;
use html5ever::buffer_queue::BufferQueue;
use html5ever::tendril::fmt::UTF8;
use html5ever::tendril::{ByteTendril, StrTendril, TendrilSink};
-use html5ever::tokenizer::TokenizerResult;
-use html5ever::tree_builder::{ElementFlags, NextParserState, NodeOrText, QuirksMode, TreeSink};
+use html5ever::tree_builder::{ElementFlags, NodeOrText, QuirksMode, TreeSink};
use html5ever::{Attribute, ExpandedName, LocalName, QualName, local_name, namespace_url, ns};
use hyper_serde::Serde;
+use markup5ever::TokenizerResult;
use mime::{self, Mime};
use net_traits::request::RequestId;
use net_traits::{
@@ -1356,15 +1356,6 @@ impl TreeSink for Sink {
}
}
- fn complete_script(&self, node: &Dom<Node>) -> NextParserState {
- if let Some(script) = node.downcast() {
- self.script.set(Some(script));
- NextParserState::Suspend
- } else {
- NextParserState::Continue
- }
- }
-
fn reparent_children(&self, node: &Dom<Node>, new_parent: &Dom<Node>) {
while let Some(ref child) = node.GetFirstChild() {
new_parent.AppendChild(child, CanGc::note()).unwrap();
diff --git a/components/script/dom/servoparser/prefetch.rs b/components/script/dom/servoparser/prefetch.rs
index 250b92f8c8b..8191363bf20 100644
--- a/components/script/dom/servoparser/prefetch.rs
+++ b/components/script/dom/servoparser/prefetch.rs
@@ -10,10 +10,11 @@ use content_security_policy::Destination;
use html5ever::buffer_queue::BufferQueue;
use html5ever::tokenizer::states::RawKind;
use html5ever::tokenizer::{
- Tag, TagKind, Token, TokenSink, TokenSinkResult, Tokenizer as HtmlTokenizer, TokenizerResult,
+ Tag, TagKind, Token, TokenSink, TokenSinkResult, Tokenizer as HtmlTokenizer,
};
use html5ever::{Attribute, LocalName, local_name};
use js::jsapi::JSTracer;
+use markup5ever::TokenizerResult;
use net_traits::request::{
CorsSettings, CredentialsMode, InsecureRequestsPolicy, ParserMetadata, Referrer,
};
diff --git a/components/script/dom/servoparser/xml.rs b/components/script/dom/servoparser/xml.rs
index 218fdfaece5..f132cbcb3fd 100644
--- a/components/script/dom/servoparser/xml.rs
+++ b/components/script/dom/servoparser/xml.rs
@@ -6,13 +6,14 @@
use std::cell::Cell;
-use html5ever::tokenizer::TokenizerResult;
+use markup5ever::TokenizerResult;
use script_bindings::trace::CustomTraceable;
use servo_url::ServoUrl;
use xml5ever::buffer_queue::BufferQueue;
use xml5ever::tokenizer::XmlTokenizer;
use xml5ever::tree_builder::XmlTreeBuilder;
+use crate::dom::bindings::inheritance::Castable;
use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::document::Document;
use crate::dom::htmlscriptelement::HTMLScriptElement;
@@ -43,10 +44,17 @@ impl Tokenizer {
}
pub(crate) fn feed(&self, input: &BufferQueue) -> TokenizerResult<DomRoot<HTMLScriptElement>> {
- self.inner.run(input);
- match self.inner.sink.sink.script.take() {
- Some(script) => TokenizerResult::Script(script),
- None => TokenizerResult::Done,
+ loop {
+ match self.inner.run(input) {
+ TokenizerResult::Done => return TokenizerResult::Done,
+ TokenizerResult::Script(handle) => {
+ // Apparently the parser can sometimes create <script> elements without a namespace, resulting
+ // in them not being HTMLScriptElements.
+ if let Some(script) = handle.downcast::<HTMLScriptElement>() {
+ return TokenizerResult::Script(DomRoot::from_ref(script));
+ }
+ },
+ }
}
}