Upgrade stylo to 2024-09-02 (#33370)

* Upgrade stylo to 2024-09-02

Signed-off-by: Oriol Brufau <obrufau@igalia.com>

* Fixup for https://phabricator.services.mozilla.com/D217308

Signed-off-by: Oriol Brufau <obrufau@igalia.com>

* Fixup for https://phabricator.services.mozilla.com/D217626

Signed-off-by: Oriol Brufau <obrufau@igalia.com>

* Fixup for https://phabricator.services.mozilla.com/D218488

Signed-off-by: Oriol Brufau <obrufau@igalia.com>

* Fixup for https://phabricator.services.mozilla.com/D219537

Signed-off-by: Oriol Brufau <obrufau@igalia.com>

* Update test expectations

Signed-off-by: Oriol Brufau <obrufau@igalia.com>

---------

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Oriol Brufau 2024-09-13 17:59:57 +02:00 committed by GitHub
parent 261d60e456
commit a76daaf04c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 68 additions and 63 deletions

28
Cargo.lock generated
View file

@ -1298,7 +1298,7 @@ dependencies = [
[[package]]
name = "derive_common"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"darling",
"proc-macro2",
@ -1486,7 +1486,7 @@ dependencies = [
[[package]]
name = "dom"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"bitflags 2.6.0",
]
@ -4118,7 +4118,7 @@ dependencies = [
[[package]]
name = "malloc_size_of"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"accountable-refcell",
"app_units",
@ -5911,7 +5911,7 @@ dependencies = [
[[package]]
name = "selectors"
version = "0.24.0"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"bitflags 2.6.0",
"cssparser",
@ -6199,7 +6199,7 @@ dependencies = [
[[package]]
name = "servo_arc"
version = "0.2.0"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"serde",
"stable_deref_trait",
@ -6208,7 +6208,7 @@ dependencies = [
[[package]]
name = "servo_atoms"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"string_cache",
"string_cache_codegen",
@ -6426,7 +6426,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
[[package]]
name = "size_of_test"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"static_assertions",
]
@ -6567,7 +6567,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "static_prefs"
version = "0.1.0"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
[[package]]
name = "strck"
@ -6620,7 +6620,7 @@ dependencies = [
[[package]]
name = "style"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"app_units",
"arrayvec",
@ -6678,7 +6678,7 @@ dependencies = [
[[package]]
name = "style_config"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"lazy_static",
]
@ -6686,7 +6686,7 @@ dependencies = [
[[package]]
name = "style_derive"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"darling",
"derive_common",
@ -6717,7 +6717,7 @@ dependencies = [
[[package]]
name = "style_traits"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"app_units",
"bitflags 2.6.0",
@ -7084,7 +7084,7 @@ dependencies = [
[[package]]
name = "to_shmem"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"cssparser",
"servo_arc",
@ -7097,7 +7097,7 @@ dependencies = [
[[package]]
name = "to_shmem_derive"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#f1f1ce0e737ae8f99522cc52c47e2c6363789e28"
source = "git+https://github.com/servo/stylo?branch=2024-09-02#89bbdff5ad80cf0a9814a7102379b5eeca89363e"
dependencies = [
"darling",
"derive_common",

View file

@ -76,7 +76,7 @@ keyboard-types = "0.7"
libc = "0.2"
log = "0.4"
mach2 = "0.4"
malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2024-07-16", features = ["servo"] }
malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2024-09-02", features = ["servo"] }
malloc_size_of_derive = "0.1"
mime = "0.3.13"
mime_guess = "2.0.5"
@ -99,31 +99,31 @@ rustls = { version = "0.21.12", features = ["dangerous_configuration"] }
rustls-pemfile = "1.0.4"
script_layout_interface = { path = "components/shared/script_layout" }
script_traits = { path = "components/shared/script" }
selectors = { git = "https://github.com/servo/stylo", branch = "2024-07-16" }
selectors = { git = "https://github.com/servo/stylo", branch = "2024-09-02" }
serde = "1.0.209"
serde_bytes = "0.11"
serde_json = "1.0"
servo-media = { git = "https://github.com/servo/media" }
servo-media-dummy = { git = "https://github.com/servo/media" }
servo-media-gstreamer = { git = "https://github.com/servo/media" }
servo_arc = { git = "https://github.com/servo/stylo", branch = "2024-07-16", features = ["servo"] }
servo_atoms = { git = "https://github.com/servo/stylo", branch = "2024-07-16" }
size_of_test = { git = "https://github.com/servo/stylo", branch = "2024-07-16" }
servo_arc = { git = "https://github.com/servo/stylo", branch = "2024-09-02", features = ["servo"] }
servo_atoms = { git = "https://github.com/servo/stylo", branch = "2024-09-02" }
size_of_test = { git = "https://github.com/servo/stylo", branch = "2024-09-02" }
smallbitvec = "2.5.3"
smallvec = "1.13"
sparkle = "0.1.26"
string_cache = "0.8"
string_cache_codegen = "0.5"
style = { git = "https://github.com/servo/stylo", branch = "2024-07-16", features = ["servo"] }
style_config = { git = "https://github.com/servo/stylo", branch = "2024-07-16" }
style_dom = { git = "https://github.com/servo/stylo", package = "dom", branch = "2024-07-16" }
style_traits = { git = "https://github.com/servo/stylo", branch = "2024-07-16", features = ["servo"] }
style = { git = "https://github.com/servo/stylo", branch = "2024-09-02", features = ["servo"] }
style_config = { git = "https://github.com/servo/stylo", branch = "2024-09-02" }
style_dom = { git = "https://github.com/servo/stylo", package = "dom", branch = "2024-09-02" }
style_traits = { git = "https://github.com/servo/stylo", branch = "2024-09-02", features = ["servo"] }
surfman = { version = "0.9.8", features = ["chains"] }
syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] }
synstructure = "0.13"
thin-vec = "0.2.13"
time_03 = { package = "time", version = "0.3", features = ["large-dates", "local-offset", "serde"] }
to_shmem = { git = "https://github.com/servo/stylo", branch = "2024-07-16" }
to_shmem = { git = "https://github.com/servo/stylo", branch = "2024-09-02" }
tokio = "1"
tokio-rustls = "0.24"
tungstenite = "0.20"

View file

@ -119,6 +119,7 @@ impl CSSRule {
StyleCssRule::Margin(_) => unimplemented!(), // TODO
StyleCssRule::Scope(_) => unimplemented!(), // TODO
StyleCssRule::StartingStyle(_) => unimplemented!(), // TODO
StyleCssRule::PositionTry(_) => unimplemented!(), // TODO
}
}

View file

@ -1297,16 +1297,7 @@ where
/// returns it.
#[allow(unsafe_code)]
pub unsafe fn from_untrusted_node_address(candidate: UntrustedNodeAddress) -> DomRoot<Node> {
// https://github.com/servo/servo/issues/6383
let candidate = candidate.0 as usize;
// let object: *mut JSObject = jsfriendapi::bindgen::JS_GetAddressableObject(runtime,
// candidate);
let object = candidate as *mut JSObject;
if object.is_null() {
panic!("Attempted to create a `Dom<Node>` from an invalid pointer!")
}
let boxed_node = conversions::private_from_object(object) as *const Node;
DomRoot::from_ref(&*boxed_node)
DomRoot::from_ref(Node::from_untrusted_node_address(candidate))
}
#[allow(unsafe_code)]
@ -2430,6 +2421,24 @@ impl Node {
.map_or(ns!(), |elem| elem.locate_namespace(prefix)),
}
}
/// If the given untrusted node address represents a valid DOM node in the given runtime,
/// returns it.
///
/// # Safety
///
/// Callers should ensure they pass an UntrustedNodeAddress that points to a valid `JSObject`
/// in memory that represents a `Node`.
#[allow(unsafe_code)]
pub unsafe fn from_untrusted_node_address(candidate: UntrustedNodeAddress) -> &'static Self {
// https://github.com/servo/servo/issues/6383
let candidate = candidate.0 as usize;
let object = candidate as *mut JSObject;
if object.is_null() {
panic!("Attempted to create a `Node` from an invalid pointer!")
}
&*(conversions::private_from_object(object) as *const Self)
}
}
impl NodeMethods for Node {

View file

@ -8,10 +8,12 @@ use std::sync::atomic::Ordering;
use atomic_refcell::{AtomicRef, AtomicRefMut};
use html5ever::{local_name, namespace_url, ns, LocalName, Namespace};
use js::jsapi::JSObject;
use script_layout_interface::wrapper_traits::{
LayoutNode, PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
};
use script_layout_interface::{LayoutNodeType, StyleData};
use script_traits::UntrustedNodeAddress;
use selectors::attr::{AttrSelectorOperation, CaseSensitivity, NamespaceConstraint};
use selectors::bloom::{BloomFilter, BLOOM_HASH_MASK};
use selectors::matching::{ElementSelectorFlags, MatchingContext, VisitedHandlingMode};
@ -44,7 +46,7 @@ use crate::dom::bindings::inheritance::{
use crate::dom::bindings::root::LayoutDom;
use crate::dom::characterdata::LayoutCharacterDataHelpers;
use crate::dom::element::{Element, LayoutElementHelpers};
use crate::dom::node::{LayoutNodeHelpers, NodeFlags};
use crate::dom::node::{LayoutNodeHelpers, Node, NodeFlags};
use crate::layout_dom::{ServoLayoutNode, ServoShadowRoot, ServoThreadSafeLayoutNode};
/// A wrapper around elements that ensures layout can only ever access safe properties.
@ -429,6 +431,18 @@ impl<'dom> style::dom::TElement for ServoLayoutElement<'dom> {
F: FnMut(&AtomIdent),
{
}
/// Convert an opaque element back into the element.
fn unopaque(opaque: ::selectors::OpaqueElement) -> Self {
unsafe {
let ptr = opaque.as_const_ptr::<JSObject>();
let untrusted_address = UntrustedNodeAddress::from_id(ptr as usize);
let node = Node::from_untrusted_node_address(untrusted_address);
let trusted_address = node.to_trusted_node_address();
let servo_layout_node = ServoLayoutNode::new(&trusted_address);
servo_layout_node.as_element().unwrap()
}
}
}
impl<'dom> ::selectors::Element for ServoLayoutElement<'dom> {

View file

@ -3,11 +3,16 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use style::color::{AbsoluteColor, ColorSpace};
use style::values::animated::{Animate, Procedure, ToAnimatedValue};
use style::properties::style_structs::Font;
use style::properties::ComputedValues;
use style::values::animated::{Animate, Context, Procedure, ToAnimatedValue};
fn interpolate_color(from: AbsoluteColor, to: AbsoluteColor, progress: f64) -> AbsoluteColor {
let from = from.to_animated_value();
let to = to.to_animated_value();
let context = Context {
style: &ComputedValues::initial_values_with_font_override(Font::initial_values()),
};
let from = from.to_animated_value(&context);
let to = to.to_animated_value(&context);
AbsoluteColor::from_animated_value(
from.animate(&to, Procedure::Interpolate { progress })
.unwrap(),

View file

@ -134,7 +134,7 @@ fn test_report_error_stylesheet() {
(
14,
52,
"Unsupported keyframe property declaration: 'margin: 0 invalid 0;'",
"Unsupported property declaration: 'margin: 0 invalid 0;'",
),
]);

View file

@ -1,7 +1,4 @@
[calc-infinity-nan-computed.html]
[Property width value 'calc(min(NaN * 1px, infinity * 1px) + max(infinity * 1px, -infinity * 1px))']
expected: FAIL
[Property rotate(calc(infinity * 1deg)) value expected same with rotate(0deg) in +/-0.0001]
expected: FAIL
@ -38,12 +35,6 @@
[Property rotate(calc(NaN * 1grad)) value expected same with rotate(0grad) in +/-0.0001]
expected: FAIL
[Property width value 'max(15px, NaN * 1px)']
expected: FAIL
[Property width value 'max(NaN * 1px, 15px)']
expected: FAIL
[Property rotate(calc(infinity * 1turn)) value expected same with rotate(0deg) in +/-0.0001]
expected: FAIL

View file

@ -1,15 +0,0 @@
[calc-infinity-nan-serialize-length.html]
['calc(1 * max(nAn*2px, 0px))' as a specified value should serialize as 'calc(NaN * 1px)'.]
expected: FAIL
['calc(1 * min(nan*3px, 0px))' as a specified value should serialize as 'calc(NaN * 1px)'.]
expected: FAIL
['calc(1 * min(NaN * 1pt, NaN * 1cm))' as a specified value should serialize as 'calc(NaN * 1px)'.]
expected: FAIL
['calc(1 * max(NaN * 1cm, NaN * 2Q))' as a specified value should serialize as 'calc(NaN * 1px)'.]
expected: FAIL
['calc(1 * min(NaN * 2px, NaN * 4em))' as a specified value should serialize as 'calc(NaN * 1px)'.]
expected: FAIL