Rewild Your Web
18
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: update Servo to 60af5f68abc301208058002a0e30341cfb07d5b2

Signed-off-by: webbeef <me@webbeef.org>

webbeef 052b0ff9 c1ad205c

+275 -385
+50 -49
Cargo.lock
··· 65 65 66 66 [[package]] 67 67 name = "adblock" 68 - version = "0.12.2" 68 + version = "0.12.3" 69 69 source = "registry+https://github.com/rust-lang/crates.io-index" 70 - checksum = "1bc4a2c7fe914856e08e7c8d8f3dadac82425a0339163548f810450bf42c7adc" 70 + checksum = "748aff5b2e2be717eaaf63b74c5cf75227941614f058db53dcdb65936ba70fd5" 71 71 dependencies = [ 72 72 "addr", 73 73 "arrayvec", ··· 3216 3216 3217 3217 [[package]] 3218 3218 name = "glib" 3219 - version = "0.22.6" 3219 + version = "0.22.7" 3220 3220 source = "registry+https://github.com/rust-lang/crates.io-index" 3221 - checksum = "0f075bd737d1fa842a944a4a1dc209838caa7e0e2ddf8aefb9ddf76538bc3ed7" 3221 + checksum = "c207e04e51605dcf7b2924c41591b3a10e1438eaac5bcf448fb91f325381104a" 3222 3222 dependencies = [ 3223 3223 "bitflags 2.11.1", 3224 3224 "futures-channel", ··· 3458 3458 "futures-channel", 3459 3459 "futures-core", 3460 3460 "futures-util", 3461 - "glib 0.22.6", 3461 + "glib 0.22.7", 3462 3462 "gstreamer-sys", 3463 3463 "itertools 0.14.0", 3464 3464 "kstring", ··· 3481 3481 dependencies = [ 3482 3482 "futures-core", 3483 3483 "futures-sink", 3484 - "glib 0.22.6", 3484 + "glib 0.22.7", 3485 3485 "gstreamer", 3486 3486 "gstreamer-app-sys", 3487 3487 "gstreamer-base", ··· 3508 3508 checksum = "46e64660e1963ff3b6a4a5175f917524254a6ae36ac7b83e29b760d879a33073" 3509 3509 dependencies = [ 3510 3510 "cfg-if", 3511 - "glib 0.22.6", 3511 + "glib 0.22.7", 3512 3512 "gstreamer", 3513 3513 "gstreamer-audio-sys", 3514 3514 "gstreamer-base", ··· 3538 3538 dependencies = [ 3539 3539 "atomic_refcell", 3540 3540 "cfg-if", 3541 - "glib 0.22.6", 3541 + "glib 0.22.7", 3542 3542 "gstreamer", 3543 3543 "gstreamer-base-sys", 3544 3544 "libc", ··· 3563 3563 source = "registry+https://github.com/rust-lang/crates.io-index" 3564 3564 checksum = "94f83397da547ce27d7b912980ecb21c99c6aedee4015765355fe66cdf0bd9b9" 3565 3565 dependencies = [ 3566 - "glib 0.22.6", 3566 + "glib 0.22.7", 3567 3567 "gstreamer", 3568 3568 "gstreamer-base", 3569 3569 "gstreamer-gl-sys", ··· 3577 3577 source = "registry+https://github.com/rust-lang/crates.io-index" 3578 3578 checksum = "ff3c29e6d4b92ef22b0bacc2cff02902d40516942fead63c656d7fccc75221e8" 3579 3579 dependencies = [ 3580 - "glib 0.22.6", 3580 + "glib 0.22.7", 3581 3581 "gstreamer", 3582 3582 "gstreamer-gl", 3583 3583 "gstreamer-gl-egl-sys", ··· 3617 3617 source = "registry+https://github.com/rust-lang/crates.io-index" 3618 3618 checksum = "9a83ca3d2030846f01be738b8b867ecb4b95269497bcfa459b8fc1ce897ad9f4" 3619 3619 dependencies = [ 3620 - "glib 0.22.6", 3620 + "glib 0.22.7", 3621 3621 "gstreamer", 3622 3622 "gstreamer-gl", 3623 3623 "gstreamer-gl-wayland-sys", ··· 3642 3642 source = "registry+https://github.com/rust-lang/crates.io-index" 3643 3643 checksum = "642d86fed827466e2d1ff4f430313fdab5d113bc2bf1e9c9736a873e8832c6ca" 3644 3644 dependencies = [ 3645 - "glib 0.22.6", 3645 + "glib 0.22.7", 3646 3646 "gstreamer", 3647 3647 "gstreamer-gl", 3648 3648 "gstreamer-gl-x11-sys", ··· 3667 3667 source = "registry+https://github.com/rust-lang/crates.io-index" 3668 3668 checksum = "3355c2c37bfd824cbd974bf0b8c004d71ca3755f825065957bc16356d79e6e34" 3669 3669 dependencies = [ 3670 - "glib 0.22.6", 3670 + "glib 0.22.7", 3671 3671 "gstreamer", 3672 3672 "gstreamer-play-sys", 3673 3673 "gstreamer-video", ··· 3694 3694 source = "registry+https://github.com/rust-lang/crates.io-index" 3695 3695 checksum = "11650b5fbc5994877bc525519c554cb66166f155f9cc3119b0fe88a33dc5176e" 3696 3696 dependencies = [ 3697 - "glib 0.22.6", 3697 + "glib 0.22.7", 3698 3698 "gstreamer", 3699 3699 "gstreamer-sdp-sys", 3700 3700 ] ··· 3732 3732 dependencies = [ 3733 3733 "cfg-if", 3734 3734 "futures-channel", 3735 - "glib 0.22.6", 3735 + "glib 0.22.7", 3736 3736 "gstreamer", 3737 3737 "gstreamer-base", 3738 3738 "gstreamer-video-sys", ··· 3760 3760 source = "registry+https://github.com/rust-lang/crates.io-index" 3761 3761 checksum = "7def31f08759da6f658462d7def7138e00346e5345958ba291926e9511e97d16" 3762 3762 dependencies = [ 3763 - "glib 0.22.6", 3763 + "glib 0.22.7", 3764 3764 "gstreamer", 3765 3765 "gstreamer-sdp", 3766 3766 "gstreamer-webrtc-sys", ··· 5033 5033 5034 5034 [[package]] 5035 5035 name = "imgref" 5036 - version = "1.12.0" 5036 + version = "1.12.1" 5037 5037 source = "registry+https://github.com/rust-lang/crates.io-index" 5038 - checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" 5038 + checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2" 5039 5039 5040 5040 [[package]] 5041 5041 name = "imsz" ··· 5098 5098 5099 5099 [[package]] 5100 5100 name = "ipc-channel" 5101 - version = "0.21.0" 5101 + version = "0.22.0" 5102 5102 source = "registry+https://github.com/rust-lang/crates.io-index" 5103 - checksum = "a441490012d80e9aea75fb27503df8e87e9557dcfc6fe4244dde86bfc12e94e3" 5103 + checksum = "347ef783e380784658248bdb0b87ca1293e3e3df3fc7dee061e129aa5f013d61" 5104 5104 dependencies = [ 5105 5105 "crossbeam-channel", 5106 5106 "libc", ··· 7193 7193 7194 7194 [[package]] 7195 7195 name = "orbclient" 7196 - version = "0.3.53" 7196 + version = "0.3.54" 7197 7197 source = "registry+https://github.com/rust-lang/crates.io-index" 7198 - checksum = "12c6933ddbbd16539a7672e697bb8d41ac3a4e99ac43eeb40c07236bd7fcb2dd" 7198 + checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329" 7199 7199 dependencies = [ 7200 7200 "libc", 7201 7201 "libredox", ··· 7922 7922 7923 7923 [[package]] 7924 7924 name = "psl" 7925 - version = "2.1.205" 7925 + version = "2.1.206" 7926 7926 source = "registry+https://github.com/rust-lang/crates.io-index" 7927 - checksum = "194b4aac978e4e46f782a95ecdb06bc69919c935e783984e5f5b817545881beb" 7927 + checksum = "f0fd5dad387c0ff76cf1ac9f0f90ee4f1d966c969edfe7325e73141bf4352e0a" 7928 7928 dependencies = [ 7929 7929 "psl-types", 7930 7930 ] ··· 8615 8615 8616 8616 [[package]] 8617 8617 name = "rustls" 8618 - version = "0.23.39" 8618 + version = "0.23.40" 8619 8619 source = "registry+https://github.com/rust-lang/crates.io-index" 8620 - checksum = "7c2c118cb077cca2822033836dfb1b975355dfb784b5e8da48f7b6c5db74e60e" 8620 + checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" 8621 8621 dependencies = [ 8622 8622 "aws-lc-rs", 8623 8623 "log", ··· 8875 8875 [[package]] 8876 8876 name = "selectors" 8877 8877 version = "0.37.0" 8878 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 8878 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 8879 8879 dependencies = [ 8880 8880 "bitflags 2.11.1", 8881 8881 "cssparser", ··· 9755 9755 version = "0.1.0" 9756 9756 dependencies = [ 9757 9757 "byte-slice-cast", 9758 - "glib 0.22.6", 9758 + "glib 0.22.7", 9759 9759 "glib-sys 0.22.6", 9760 9760 "gstreamer", 9761 9761 "gstreamer-app", ··· 9794 9794 name = "servo-media-gstreamer-render-android" 9795 9795 version = "0.1.0" 9796 9796 dependencies = [ 9797 - "glib 0.22.6", 9797 + "glib 0.22.7", 9798 9798 "gstreamer", 9799 9799 "gstreamer-gl", 9800 9800 "gstreamer-gl-egl", ··· 9807 9807 name = "servo-media-gstreamer-render-unix" 9808 9808 version = "0.1.0" 9809 9809 dependencies = [ 9810 - "glib 0.22.6", 9810 + "glib 0.22.7", 9811 9811 "gstreamer", 9812 9812 "gstreamer-gl", 9813 9813 "gstreamer-gl-egl", ··· 10298 10298 "wgpu-types", 10299 10299 "x25519-dalek", 10300 10300 "xml5ever", 10301 + "zeroize", 10301 10302 ] 10302 10303 10303 10304 [[package]] ··· 10557 10558 [[package]] 10558 10559 name = "servo_arc" 10559 10560 version = "0.4.3" 10560 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 10561 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 10561 10562 dependencies = [ 10562 10563 "serde", 10563 10564 "stable_deref_trait", ··· 11042 11043 [[package]] 11043 11044 name = "stylo" 11044 11045 version = "0.16.0" 11045 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11046 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11046 11047 dependencies = [ 11047 11048 "app_units", 11048 11049 "arrayvec", ··· 11098 11099 [[package]] 11099 11100 name = "stylo_atoms" 11100 11101 version = "0.16.0" 11101 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11102 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11102 11103 dependencies = [ 11103 11104 "string_cache", 11104 11105 "string_cache_codegen", ··· 11107 11108 [[package]] 11108 11109 name = "stylo_derive" 11109 11110 version = "0.16.0" 11110 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11111 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11111 11112 dependencies = [ 11112 11113 "darling", 11113 11114 "proc-macro2", ··· 11119 11120 [[package]] 11120 11121 name = "stylo_dom" 11121 11122 version = "0.16.0" 11122 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11123 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11123 11124 dependencies = [ 11124 11125 "bitflags 2.11.1", 11125 11126 "stylo_malloc_size_of", ··· 11128 11129 [[package]] 11129 11130 name = "stylo_malloc_size_of" 11130 11131 version = "0.16.0" 11131 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11132 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11132 11133 dependencies = [ 11133 11134 "app_units", 11134 11135 "cssparser", ··· 11145 11146 [[package]] 11146 11147 name = "stylo_static_prefs" 11147 11148 version = "0.16.0" 11148 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11149 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11149 11150 11150 11151 [[package]] 11151 11152 name = "stylo_traits" 11152 11153 version = "0.16.0" 11153 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11154 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11154 11155 dependencies = [ 11155 11156 "app_units", 11156 11157 "bitflags 2.11.1", ··· 11456 11457 11457 11458 [[package]] 11458 11459 name = "thin-vec" 11459 - version = "0.2.16" 11460 + version = "0.2.18" 11460 11461 source = "registry+https://github.com/rust-lang/crates.io-index" 11461 - checksum = "259cdf8ed4e4aca6f1e9d011e10bd53f524a2d0637d7b28450f6c64ac298c4c6" 11462 + checksum = "b0f7e269b48f0a7dd0146680fa24b50cc67fc0373f086a5b2f99bd084639b482" 11462 11463 11463 11464 [[package]] 11464 11465 name = "thiserror" ··· 11687 11688 [[package]] 11688 11689 name = "to_shmem" 11689 11690 version = "0.3.0" 11690 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11691 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11691 11692 dependencies = [ 11692 11693 "cssparser", 11693 11694 "servo_arc", ··· 11700 11701 [[package]] 11701 11702 name = "to_shmem_derive" 11702 11703 version = "0.1.0" 11703 - source = "git+https://github.com/servo/stylo?rev=bfa746c957ce12bf12936e118b78a806d9ae0d66#bfa746c957ce12bf12936e118b78a806d9ae0d66" 11704 + source = "git+https://github.com/servo/stylo?rev=40aa59d7f3b2bce517c480c95a80d639843e1449#40aa59d7f3b2bce517c480c95a80d639843e1449" 11704 11705 dependencies = [ 11705 11706 "darling", 11706 11707 "proc-macro2", ··· 12028 12029 12029 12030 [[package]] 12030 12031 name = "tray-icon" 12031 - version = "0.22.1" 12032 + version = "0.22.2" 12032 12033 source = "registry+https://github.com/rust-lang/crates.io-index" 12033 - checksum = "7f9eb1da86bd0ab8931fad00650d2ba7473260c5bab06d6f24d04339edb88faa" 12034 + checksum = "76b42a907631429634f9f57ef72f9e7aec3e12e74050636138acb3752ecb8df3" 12034 12035 dependencies = [ 12035 12036 "crossbeam-channel", 12036 12037 "dirs", ··· 12044 12045 "once_cell", 12045 12046 "png 0.18.1", 12046 12047 "thiserror 2.0.18", 12047 - "windows-sys 0.60.2", 12048 + "windows-sys 0.61.2", 12048 12049 ] 12049 12050 12050 12051 [[package]] ··· 13952 13953 13953 13954 [[package]] 13954 13955 name = "yeslogic-fontconfig-sys" 13955 - version = "6.0.0" 13956 + version = "6.0.1" 13956 13957 source = "registry+https://github.com/rust-lang/crates.io-index" 13957 - checksum = "503a066b4c037c440169d995b869046827dbc71263f6e8f3be6d77d4f3229dbd" 13958 + checksum = "1d8b8abf912b9a29ff112e1671c97c33636903d13a69712037190e6805af4f76" 13958 13959 dependencies = [ 13959 13960 "dlib", 13960 13961 "once_cell", ··· 14010 14011 14011 14012 [[package]] 14012 14013 name = "yuv" 14013 - version = "0.8.13" 14014 + version = "0.8.14" 14014 14015 source = "registry+https://github.com/rust-lang/crates.io-index" 14015 - checksum = "47d3a7e2cda3061858987ee2fb028f61695f5ee13f9490d75be6c3900df9a4ea" 14016 + checksum = "89c90da4fb561f9750984de2c5e7f0ba01035d2eb29d69a7f375b1caef37fdf4" 14016 14017 dependencies = [ 14017 14018 "num-traits", 14018 14019 "rayon",
+11 -10
Cargo.toml
··· 111 111 imsz = "0.4" 112 112 indexmap = { version = "2.11.4", features = ["std"] } 113 113 inventory = { version = "0.3.24" } 114 - ipc-channel = "0.21" 114 + ipc-channel = "0.22" 115 115 iroh = { version = "0.98", default-features = false, features = ["address-lookup-mdns", "tls-aws-lc-rs"] } 116 116 iroh-persist = { git = "https://github.com/webbeef/iroh-persist.git", branch = "iroh-0.98" } 117 117 itertools = "0.14" ··· 188 188 sea-query = { version = "1.0.0-rc.30", default-features = false, features = ["backend-sqlite", "derive"] } 189 189 sea-query-rusqlite = { version = "0.8.0-rc.15" } 190 190 sec1 = "0.7" 191 - selectors = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 191 + selectors = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 192 192 serde = "1.0.228" 193 193 serde_bytes = "0.11" 194 194 serde_core = "1.0.226" ··· 224 224 servo-wakelock = { version = "0.1.0", path = "source/components/wakelock" } 225 225 servo_allocator = { package = "servo-allocator", version = "0.1.0", path = "source/components/allocator" } 226 226 servo-tracing = { path = "source/components/servo_tracing" } 227 - servo_arc = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 227 + servo_arc = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 228 228 servo-url = { version = "0.1.0", path = "source/components/url" } 229 229 sha1 = "0.10" 230 230 sha2 = "0.10" ··· 236 236 storage_traits = { package = "servo-storage-traits", path = "source/components/shared/storage" } 237 237 string_cache = "0.9" 238 238 strum = { version = "0.27", features = ["derive"] } 239 - stylo = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 240 - stylo_atoms = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 241 - stylo_config = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 242 - stylo_dom = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 243 - stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 244 - stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 245 - stylo_traits = { git = "https://github.com/servo/stylo", rev = "bfa746c957ce12bf12936e118b78a806d9ae0d66" } 239 + stylo = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 240 + stylo_atoms = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 241 + stylo_config = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 242 + stylo_dom = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 243 + stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 244 + stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 245 + stylo_traits = { git = "https://github.com/servo/stylo", rev = "40aa59d7f3b2bce517c480c95a80d639843e1449" } 246 246 surfman = { version = "0.12.0", features = ["chains"] } 247 247 syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } 248 248 synstructure = "0.13" ··· 294 294 xml5ever = "0.39" 295 295 xpath = { package = "servo-xpath", path = "source/components/xpath" } 296 296 yuv = { version = "0.8.13", features = ["rayon"] } 297 + zeroize = "1.8" 297 298 298 299 # RSA key generation could be very slow without compilation 299 300 # optimizations, in development mode. Without optimizations, WPT might
+1 -1
forkme.lock
··· 1 - 33ea0ebfa7a3825687becf5c300d3d3eb4f9abdf 1 + 60af5f68abc301208058002a0e30341cfb07d5b2
+15 -15
patches/Cargo.lock.patch
··· 786 786 + 787 787 +[[package]] 788 788 name = "servo" 789 - version = "0.1.0" 789 + version = "0.2.0" 790 790 dependencies = [ 791 791 @@ -7703,6 +8194,7 @@ 792 792 "rand 0.9.2", ··· 807 807 808 808 @@ -8353,9 +8847,11 @@ 809 809 name = "servo-net" 810 - version = "0.1.0" 810 + version = "0.2.0" 811 811 dependencies = [ 812 812 + "anyhow", 813 813 "async-compression", ··· 864 864 "url", 865 865 "uuid", 866 866 "webrender_api", 867 - @@ -9032,6 +9535,7 @@ 867 + @@ -9033,6 +9536,7 @@ 868 868 "bpaf", 869 869 "cc", 870 870 "cfg-if", ··· 872 872 "crossbeam-channel", 873 873 "dirs", 874 874 "dpi", 875 - @@ -9046,6 +9550,7 @@ 875 + @@ -9047,6 +9551,7 @@ 876 876 "headers", 877 877 "hilog", 878 878 "hitrace", ··· 880 880 "image", 881 881 "ipc-channel", 882 882 "jni 0.22.4", 883 - @@ -9066,6 +9571,7 @@ 883 + @@ -9067,6 +9572,7 @@ 884 884 "ohos-window-manager-sys", 885 885 "raw-window-handle", 886 886 "rustls", ··· 888 888 "serde_json", 889 889 "servo", 890 890 "servo-allocator", 891 - @@ -9072,6 +9578,7 @@ 891 + @@ -9073,6 +9579,7 @@ 892 892 "servo-base", 893 893 "servo-webdriver-server", 894 894 "signal-hook-registry", ··· 896 896 "surfman", 897 897 "tokio", 898 898 "tracing", 899 - @@ -9643,6 +10150,9 @@ 899 + @@ -9644,6 +10151,9 @@ 900 900 version = "1.0.2" 901 901 source = "registry+https://github.com/rust-lang/crates.io-index" 902 902 checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" ··· 906 906 907 907 [[package]] 908 908 name = "synstructure" 909 - @@ -9677,6 +10187,27 @@ 909 + @@ -9678,6 +10188,27 @@ 910 910 ] 911 911 912 912 [[package]] ··· 934 934 name = "system-deps" 935 935 version = "6.2.2" 936 936 source = "registry+https://github.com/rust-lang/crates.io-index" 937 - @@ -9715,6 +10246,12 @@ 937 + @@ -9716,6 +10247,12 @@ 938 938 ] 939 939 940 940 [[package]] ··· 947 947 name = "tar" 948 948 version = "0.4.45" 949 949 source = "registry+https://github.com/rust-lang/crates.io-index" 950 - @@ -10022,6 +10559,16 @@ 950 + @@ -10023,6 +10560,16 @@ 951 951 ] 952 952 953 953 [[package]] ··· 964 964 name = "tokio-rustls" 965 965 version = "0.26.4" 966 966 source = "registry+https://github.com/rust-lang/crates.io-index" 967 - @@ -10143,11 +10690,30 @@ 967 + @@ -10144,11 +10691,30 @@ 968 968 "futures-util", 969 969 "pin-project-lite", 970 970 "sync_wrapper", ··· 995 995 name = "tower-layer" 996 996 version = "0.3.3" 997 997 source = "registry+https://github.com/rust-lang/crates.io-index" 998 - @@ -10426,6 +10992,12 @@ 998 + @@ -10427,6 +10993,12 @@ 999 999 ] 1000 1000 1001 1001 [[package]] ··· 1008 1008 name = "untrusted" 1009 1009 version = "0.9.0" 1010 1010 source = "registry+https://github.com/rust-lang/crates.io-index" 1011 - @@ -10445,6 +11017,12 @@ 1011 + @@ -10446,6 +11018,12 @@ 1012 1012 ] 1013 1013 1014 1014 [[package]] ··· 1021 1021 name = "urlpattern" 1022 1022 version = "0.3.0" 1023 1023 source = "registry+https://github.com/rust-lang/crates.io-index" 1024 - @@ -11235,6 +11813,12 @@ 1024 + @@ -11236,6 +11814,12 @@ 1025 1025 ] 1026 1026 1027 1027 [[package]] ··· 1034 1034 name = "winapi" 1035 1035 version = "0.3.9" 1036 1036 source = "registry+https://github.com/rust-lang/crates.io-index" 1037 - @@ -11456,6 +12040,17 @@ 1037 + @@ -11457,6 +12041,17 @@ 1038 1038 ] 1039 1039 1040 1040 [[package]]
+13
patches/components/config/opts.rs.patch
··· 1 + --- original 2 + +++ modified 3 + @@ -131,6 +131,10 @@ 4 + /// In non-production builds, this will automatically read and parse the 5 + /// SERVO_DIAGNOSTICS environment variable if it is set. 6 + pub fn new() -> Self { 7 + + #[cfg(not(debug_assertions))] 8 + + let config: DiagnosticsLogging = Default::default(); 9 + + 10 + + #[cfg(debug_assertions)] 11 + let mut config: DiagnosticsLogging = Default::default(); 12 + 13 + // Disabled for production builds
+50 -52
patches/components/constellation/constellation.rs.patch
··· 36 36 }; 37 37 use euclid::Size2D; 38 38 use euclid::default::Size2D as UntypedSize2D; 39 - @@ -159,13 +162,14 @@ 39 + @@ -159,13 +162,15 @@ 40 40 use servo_canvas_traits::webgl::WebGLThreads; 41 41 use servo_config::{opts, pref}; 42 42 use servo_constellation_traits::{ 43 43 - AuxiliaryWebViewCreationRequest, AuxiliaryWebViewCreationResponse, ConstellationInterest, 44 44 - DocumentState, EmbedderToConstellationMessage, IFrameLoadInfo, IFrameLoadInfoWithData, 45 45 - IFrameSizeMsg, Job, LoadData, LogEntry, MessagePortMsg, NavigationHistoryBehavior, 46 - - PaintMetricEvent, PortMessageTask, PortTransferInfo, SWManagerMsg, SWManagerSenders, 47 - - ScreenshotReadinessResponse, ScriptToConstellationMessage, ScrollStateUpdate, 46 + - PaintMetricEvent, PortMessageTask, PortTransferInfo, RemoteFocusOperation, SWManagerMsg, 47 + - SWManagerSenders, ScreenshotReadinessResponse, ScriptToConstellationMessage, ScrollStateUpdate, 48 48 - ServiceWorkerManagerFactory, ServiceWorkerMsg, StructuredSerializedData, TargetSnapshotParams, 49 49 - TraversalDirection, UserContentManagerAction, WindowSizeType, 50 50 + AuxiliaryWebViewCreationRequest, AuxiliaryWebViewCreationResponse, BroadcastChannelMsg, ··· 52 52 + EmbeddedWebViewCreationResponse, EmbeddedWebViewEventType, EmbedderToConstellationMessage, 53 53 + IFrameLoadInfo, IFrameLoadInfoWithData, IFrameSizeMsg, Job, LoadData, LogEntry, MessagePortMsg, 54 54 + NavigationHistoryBehavior, PaintMetricEvent, PairingEvent, PortMessageTask, PortTransferInfo, 55 - + SWManagerMsg, SWManagerSenders, ScreenshotReadinessResponse, ScriptToConstellationMessage, 56 - + ScrollStateUpdate, ServiceWorkerManagerFactory, ServiceWorkerMsg, StructuredSerializedData, 57 - + TargetSnapshotParams, TraversalDirection, UserContentManagerAction, WindowSizeType, 55 + + RemoteFocusOperation, SWManagerMsg, SWManagerSenders, ScreenshotReadinessResponse, 56 + + ScriptToConstellationMessage, ScrollStateUpdate, ServiceWorkerManagerFactory, ServiceWorkerMsg, 57 + + StructuredSerializedData, TargetSnapshotParams, TraversalDirection, UserContentManagerAction, 58 + + WindowSizeType, 58 59 }; 59 60 use servo_url::{Host, ImmutableOrigin, ServoUrl}; 60 61 use storage_traits::StorageThreads; 61 - @@ -179,6 +183,7 @@ 62 + @@ -179,6 +184,7 @@ 62 63 use webgpu_traits::{WebGPU, WebGPURequest}; 63 64 64 65 use super::embedder::ConstellationToEmbedderMsg; ··· 66 67 use crate::broadcastchannel::BroadcastChannels; 67 68 use crate::browsingcontext::{ 68 69 AllBrowsingContextsIterator, BrowsingContext, FullyActiveBrowsingContextsIterator, 69 - @@ -186,10 +191,12 @@ 70 + @@ -186,10 +192,12 @@ 70 71 }; 71 72 use crate::constellation_webview::ConstellationWebView; 72 73 use crate::event_loop::EventLoop; ··· 79 80 80 81 struct PendingApprovalNavigation { 81 82 load_data: LoadData, 82 - @@ -220,6 +227,12 @@ 83 + @@ -220,6 +228,12 @@ 83 84 /// While a completion failed, another global requested to complete the transfer. 84 85 /// We are still buffering messages, and awaiting the return of the buffer from the global who failed. 85 86 CompletionRequested(MessagePortRouterId, VecDeque<PortMessageTask>), ··· 92 93 } 93 94 94 95 #[derive(Debug)] 95 - @@ -531,6 +544,31 @@ 96 + @@ -531,6 +545,31 @@ 96 97 /// to the `UserContents` need to be forwared to all the `ScriptThread`s that host 97 98 /// the relevant `WebView`. 98 99 pub(crate) user_contents_for_manager_id: FxHashMap<UserContentManagerId, UserContents>, ··· 124 125 } 125 126 126 127 /// State needed to construct a constellation. 127 - @@ -594,6 +632,9 @@ 128 + @@ -594,6 +633,9 @@ 128 129 129 130 /// The wake lock provider for acquiring and releasing OS-level screen wake locks. 130 131 pub wake_lock_provider: Box<dyn WakeLockDelegate>, ··· 134 135 } 135 136 136 137 /// When we are exiting a pipeline, we can either force exiting or not. A normal exit 137 - @@ -703,7 +744,7 @@ 138 + @@ -703,7 +745,7 @@ 138 139 script_to_devtools_callback: Default::default(), 139 140 #[cfg(feature = "bluetooth")] 140 141 bluetooth_ipc_sender: state.bluetooth_thread, ··· 143 144 private_resource_threads: state.private_resource_threads, 144 145 public_storage_threads: state.public_storage_threads, 145 146 private_storage_threads: state.private_storage_threads, 146 - @@ -758,6 +799,15 @@ 147 + @@ -758,6 +800,15 @@ 147 148 pending_viewport_changes: Default::default(), 148 149 screenshot_readiness_requests: Vec::new(), 149 150 user_contents_for_manager_id: Default::default(), ··· 159 160 }; 160 161 161 162 constellation.run(); 162 - @@ -783,6 +833,18 @@ 163 + @@ -783,6 +834,18 @@ 163 164 fn clean_up_finished_script_event_loops(&mut self) { 164 165 self.event_loop_join_handles 165 166 .retain(|join_handle| !join_handle.is_finished()); ··· 178 179 self.event_loops 179 180 .retain(|event_loop| event_loop.upgrade().is_some()); 180 181 } 181 - @@ -1071,6 +1133,11 @@ 182 + @@ -1071,6 +1134,11 @@ 182 183 .get(&webview_id) 183 184 .and_then(|webview| webview.user_content_manager_id); 184 185 ··· 190 191 let new_pipeline_info = NewPipelineInfo { 191 192 parent_info: parent_pipeline_id, 192 193 new_pipeline_id, 193 - @@ -1082,6 +1149,13 @@ 194 + @@ -1082,6 +1150,13 @@ 194 195 user_content_manager_id, 195 196 theme, 196 197 target_snapshot_params, ··· 204 205 }; 205 206 let pipeline = match Pipeline::spawn(new_pipeline_info, event_loop, self, throttled) { 206 207 Ok(pipeline) => pipeline, 207 - @@ -1248,6 +1322,7 @@ 208 + @@ -1248,6 +1323,7 @@ 208 209 BackgroundHangMonitor(HangMonitorAlert), 209 210 Embedder(EmbedderToConstellationMessage), 210 211 FromSWManager(SWManagerMsg), ··· 212 213 RemoveProcess(usize), 213 214 } 214 215 // Get one incoming request. 215 - @@ -1268,6 +1343,15 @@ 216 + @@ -1268,6 +1344,15 @@ 216 217 sel.recv(&self.embedder_to_constellation_receiver); 217 218 sel.recv(&self.swmanager_receiver); 218 219 ··· 228 229 self.process_manager.register(&mut sel); 229 230 230 231 let request = { 231 - @@ -1298,9 +1382,13 @@ 232 + @@ -1298,9 +1383,13 @@ 232 233 .recv(&self.swmanager_receiver) 233 234 .expect("Unexpected SW channel panic in constellation") 234 235 .map(Request::FromSWManager), ··· 243 244 let _ = oper.recv(self.process_manager.receiver_at(process_index)); 244 245 Ok(Request::RemoveProcess(process_index)) 245 246 }, 246 - @@ -1326,6 +1414,9 @@ 247 + @@ -1326,6 +1415,9 @@ 247 248 Request::FromSWManager(message) => { 248 249 self.handle_request_from_swmanager(message); 249 250 }, ··· 253 254 Request::RemoveProcess(index) => self.process_manager.remove(index), 254 255 } 255 256 } 256 - @@ -1567,11 +1658,7 @@ 257 + @@ -1567,11 +1659,7 @@ 257 258 } 258 259 }, 259 260 EmbedderToConstellationMessage::PreferencesUpdated(updates) => { ··· 266 267 let _ = event_loop.send(ScriptThreadMessage::PreferencesUpdated( 267 268 updates 268 269 .iter() 269 - @@ -1598,6 +1685,18 @@ 270 + @@ -1598,6 +1686,18 @@ 270 271 EmbedderToConstellationMessage::SetAccessibilityActive(webview_id, active) => { 271 272 self.set_accessibility_active(webview_id, active); 272 273 }, ··· 285 286 } 286 287 } 287 288 288 - @@ -1795,7 +1894,13 @@ 289 + @@ -1795,7 +1895,13 @@ 289 290 return warn!("Attempt to add channel name from an unexpected origin."); 290 291 } 291 292 self.broadcast_channels ··· 300 301 }, 301 302 ScriptToConstellationMessage::RemoveBroadcastChannelNameInRouter( 302 303 router_id, 303 - @@ -1809,7 +1914,13 @@ 304 + @@ -1809,7 +1915,13 @@ 304 305 return warn!("Attempt to remove channel name from an unexpected origin."); 305 306 } 306 307 self.broadcast_channels ··· 315 316 }, 316 317 ScriptToConstellationMessage::RemoveBroadcastChannelRouter(router_id, origin) => { 317 318 if self 318 - @@ -1821,6 +1932,12 @@ 319 + @@ -1821,6 +1933,12 @@ 319 320 self.broadcast_channels 320 321 .remove_broadcast_channel_router(router_id); 321 322 }, ··· 328 329 ScriptToConstellationMessage::ScheduleBroadcast(router_id, message) => { 329 330 if self 330 331 .check_origin_against_pipeline(&source_pipeline_id, &message.origin) 331 - @@ -1830,8 +1947,15 @@ 332 + @@ -1830,8 +1948,15 @@ 332 333 "Attempt to schedule broadcast from an origin not matching the origin of the msg." 333 334 ); 334 335 } ··· 345 346 }, 346 347 ScriptToConstellationMessage::PipelineExited => { 347 348 self.handle_pipeline_exited(source_pipeline_id); 348 - @@ -1851,6 +1975,12 @@ 349 + @@ -1851,6 +1976,12 @@ 349 350 ScriptToConstellationMessage::CreateAuxiliaryWebView(load_info) => { 350 351 self.handle_script_new_auxiliary(load_info); 351 352 }, ··· 358 359 ScriptToConstellationMessage::ChangeRunningAnimationsState(animation_state) => { 359 360 self.handle_change_running_animations_state(source_pipeline_id, animation_state) 360 361 }, 361 - @@ -1902,7 +2032,7 @@ 362 + @@ -1902,7 +2033,7 @@ 362 363 ScriptToConstellationMessage::SetFinalUrl(final_url) => { 363 364 // The script may have finished loading after we already started shutting down. 364 365 if let Some(ref mut pipeline) = self.pipelines.get_mut(&source_pipeline_id) { ··· 367 368 } else { 368 369 warn!("constellation got set final url message for dead pipeline"); 369 370 } 370 - @@ -2048,6 +2178,29 @@ 371 + @@ -2052,6 +2183,29 @@ 371 372 new_value, 372 373 ); 373 374 }, ··· 397 398 ScriptToConstellationMessage::MediaSessionEvent(pipeline_id, event) => { 398 399 // Unlikely at this point, but we may receive events coming from 399 400 // different media sessions, so we set the active media session based 400 - @@ -2067,8 +2220,13 @@ 401 + @@ -2071,8 +2225,13 @@ 401 402 } 402 403 self.active_media_session = Some(pipeline_id); 403 404 self.constellation_to_embedder_proxy.send( ··· 412 413 }, 413 414 #[cfg(feature = "webgpu")] 414 415 ScriptToConstellationMessage::RequestAdapter(response_sender, options, ids) => self 415 - @@ -2142,9 +2300,894 @@ 416 + @@ -2146,6 +2305,891 @@ 416 417 } 417 418 }, 418 419 }, ··· 982 983 + let _ = callback.send(None); 983 984 + } 984 985 + }, 985 - } 986 - } 987 - 986 + + } 987 + + } 988 + + 988 989 + fn handle_pairing_event(&mut self, event: PairingEvent) { 989 990 + if let PairingEvent::MessageReceived { ref from, ref data } = event { 990 991 + debug!("P2P message received from {from}, {} bytes", data.len()); ··· 1301 1302 + if self.embedder_error_listeners.contains(&event_loop.id()) { 1302 1303 + let _ = event_loop.send(ScriptThreadMessage::DispatchPairingEvent(event.clone())); 1303 1304 + } 1304 - + } 1305 - + } 1306 - + 1307 - /// Check the origin of a message against that of the pipeline it came from. 1308 - /// Note: this is still limited as a security check, 1309 - /// see <https://github.com/servo/servo/issues/11722> 1310 - @@ -2461,6 +3504,55 @@ 1305 + } 1306 + } 1307 + 1308 + @@ -2465,6 +3509,55 @@ 1311 1309 TransferState::TransferInProgress(queue) => queue.push_back(task), 1312 1310 TransferState::CompletionFailed(queue) => queue.push_back(task), 1313 1311 TransferState::CompletionRequested(_, queue) => queue.push_back(task), ··· 1363 1361 } 1364 1362 } 1365 1363 1366 - @@ -3360,6 +4452,40 @@ 1364 + @@ -3364,6 +4457,40 @@ 1367 1365 /// <https://html.spec.whatwg.org/multipage/#destroy-a-top-level-traversable> 1368 1366 fn handle_close_top_level_browsing_context(&mut self, webview_id: WebViewId) { 1369 1367 debug!("{webview_id}: Closing"); ··· 1404 1402 let browsing_context_id = BrowsingContextId::from(webview_id); 1405 1403 // Step 5. Remove traversable from the user agent's top-level traversable set. 1406 1404 let browsing_context = 1407 - @@ -3636,8 +4762,27 @@ 1405 + @@ -3640,8 +4767,27 @@ 1408 1406 opener_webview_id, 1409 1407 opener_pipeline_id, 1410 1408 response_sender, ··· 1432 1430 let Some((webview_id_sender, webview_id_receiver)) = generic_channel::channel() else { 1433 1431 warn!("Failed to create channel"); 1434 1432 let _ = response_sender.send(None); 1435 - @@ -3736,6 +4881,395 @@ 1433 + @@ -3740,6 +4886,395 @@ 1436 1434 }); 1437 1435 } 1438 1436 ··· 1828 1826 #[servo_tracing::instrument(skip_all)] 1829 1827 fn handle_refresh_cursor(&self, pipeline_id: PipelineId) { 1830 1828 let Some(pipeline) = self.pipelines.get(&pipeline_id) else { 1831 - @@ -4285,7 +5819,7 @@ 1829 + @@ -4289,7 +5824,7 @@ 1832 1830 }, 1833 1831 }; 1834 1832 ··· 1837 1835 match self.browsing_contexts.get_mut(&browsing_context_id) { 1838 1836 Some(browsing_context) => { 1839 1837 let old_pipeline_id = browsing_context.pipeline_id; 1840 - @@ -4294,6 +5828,7 @@ 1838 + @@ -4298,6 +5833,7 @@ 1841 1839 old_pipeline_id, 1842 1840 browsing_context.parent_pipeline_id, 1843 1841 browsing_context.webview_id, ··· 1845 1843 ) 1846 1844 }, 1847 1845 None => { 1848 - @@ -4303,6 +5838,15 @@ 1846 + @@ -4307,6 +5843,15 @@ 1849 1847 1850 1848 self.unload_document(old_pipeline_id); 1851 1849 ··· 1861 1859 if let Some(new_pipeline) = self.pipelines.get(&new_pipeline_id) { 1862 1860 if let Some(ref chan) = self.devtools_sender { 1863 1861 let state = NavigationState::Start(new_pipeline.url.clone()); 1864 - @@ -4861,7 +6405,7 @@ 1862 + @@ -4872,7 +6417,7 @@ 1865 1863 } 1866 1864 1867 1865 #[servo_tracing::instrument(skip_all)] ··· 1870 1868 // Send a flat projection of the history to embedder. 1871 1869 // The final vector is a concatenation of the URLs of the past 1872 1870 // entries, the current entry and the future entries. 1873 - @@ -4965,9 +6509,22 @@ 1871 + @@ -4976,9 +6521,22 @@ 1874 1872 self.constellation_to_embedder_proxy 1875 1873 .send(ConstellationToEmbedderMsg::HistoryChanged( 1876 1874 webview_id, ··· 1894 1892 } 1895 1893 1896 1894 #[servo_tracing::instrument(skip_all)] 1897 - @@ -4986,7 +6543,7 @@ 1895 + @@ -4997,7 +6555,7 @@ 1898 1896 } 1899 1897 } 1900 1898 ··· 1903 1901 match self.browsing_contexts.get_mut(&change.browsing_context_id) { 1904 1902 Some(browsing_context) => { 1905 1903 debug!("Adding pipeline to existing browsing context."); 1906 - @@ -4993,11 +6550,15 @@ 1904 + @@ -5004,11 +6562,15 @@ 1907 1905 let old_pipeline_id = browsing_context.pipeline_id; 1908 1906 browsing_context.pipelines.insert(change.new_pipeline_id); 1909 1907 browsing_context.update_current_entry(change.new_pipeline_id); ··· 1921 1919 }, 1922 1920 }; 1923 1921 1924 - @@ -5005,6 +6566,18 @@ 1922 + @@ -5016,6 +6578,18 @@ 1925 1923 self.unload_document(old_pipeline_id); 1926 1924 } 1927 1925
+1 -1
patches/components/layout/layout_impl.rs.patch
··· 41 41 device.set_viewport_size(viewport_details.size); 42 42 device.set_device_pixel_ratio(device_pixel_ratio); 43 43 self.device_has_changed = true; 44 - @@ -799,6 +816,7 @@ 44 + @@ -789,6 +806,7 @@ 45 45 user_stylesheets: config.user_stylesheets, 46 46 accessibility_tree: Default::default(), 47 47 needs_accessibility_update: Cell::new(false),
-17
patches/components/media/backends/gstreamer/audio_decoder.rs.patch
··· 1 - --- original 2 - +++ modified 3 - @@ -6,11 +6,13 @@ 4 - use std::sync::{Arc, Mutex, mpsc}; 5 - 6 - use byte_slice_cast::*; 7 - +use gstreamer; 8 - use gstreamer::prelude::*; 9 - +use gstreamer_app; 10 - +use gstreamer_audio; 11 - use servo_media_audio::decoder::{ 12 - AudioDecoder, AudioDecoderCallbacks, AudioDecoderError, AudioDecoderOptions, 13 - }; 14 - -use {gstreamer, gstreamer_app, gstreamer_audio}; 15 - 16 - pub struct GStreamerAudioDecoderProgress( 17 - gstreamer::buffer::MappedBuffer<gstreamer::buffer::Readable>,
-18
patches/components/media/backends/gstreamer/audio_sink.rs.patch
··· 1 - --- original 2 - +++ modified 3 - @@ -8,13 +8,14 @@ 4 - use std::thread::Builder; 5 - 6 - use byte_slice_cast::*; 7 - +use gstreamer; 8 - use gstreamer::prelude::*; 9 - use gstreamer_app::{AppSrc, AppSrcCallbacks}; 10 - +use gstreamer_audio; 11 - use servo_media_audio::block::{Chunk, FRAMES_PER_BLOCK}; 12 - use servo_media_audio::render_thread::AudioRenderThreadMsg; 13 - use servo_media_audio::sink::{AudioSink, AudioSinkError}; 14 - use servo_media_streams::MediaSocket; 15 - -use {gstreamer, gstreamer_audio}; 16 - 17 - use crate::media_stream::GstreamerMediaSocket; 18 -
-22
patches/components/media/backends/gstreamer/player.rs.patch
··· 1 - --- original 2 - +++ modified 3 - @@ -10,7 +10,11 @@ 4 - use std::time; 5 - 6 - use byte_slice_cast::AsSliceOf; 7 - +use glib; 8 - use glib::prelude::*; 9 - +use gstreamer; 10 - +use gstreamer_app; 11 - +use gstreamer_play; 12 - use gstreamer_play::prelude::*; 13 - use ipc_channel::ipc::{IpcReceiver, IpcSender, channel}; 14 - use servo_media::MediaInstanceError; 15 - @@ -23,7 +27,6 @@ 16 - }; 17 - use servo_media_streams::registry::{MediaStreamId, get_stream}; 18 - use servo_media_traits::{BackendMsg, ClientContextId, MediaInstance}; 19 - -use {glib, gstreamer, gstreamer_app, gstreamer_play}; 20 - 21 - use super::BACKEND_BASE_TIME; 22 - use crate::media_stream::GStreamerMediaStream;
-23
patches/components/media/backends/gstreamer/webrtc.rs.patch
··· 1 - --- original 2 - +++ modified 3 - @@ -7,8 +7,12 @@ 4 - use std::sync::{Arc, Mutex}; 5 - use std::{cmp, mem}; 6 - 7 - +use glib; 8 - use glib::prelude::*; 9 - +use gstreamer; 10 - use gstreamer::prelude::*; 11 - +use gstreamer_sdp; 12 - +use gstreamer_webrtc; 13 - use log::warn; 14 - use servo_media_streams::MediaStreamType; 15 - use servo_media_streams::registry::{MediaStreamId, get_stream}; 16 - @@ -15,7 +19,6 @@ 17 - use servo_media_webrtc::datachannel::DataChannelId; 18 - use servo_media_webrtc::thread::InternalEvent; 19 - use servo_media_webrtc::{WebRtcController as WebRtcThread, *}; 20 - -use {glib, gstreamer, gstreamer_sdp, gstreamer_webrtc}; 21 - 22 - use super::BACKEND_BASE_TIME; 23 - use crate::datachannel::GStreamerWebRtcDataChannel;
+1 -1
patches/components/net/resource_thread.rs.patch
··· 64 64 }; 65 65 66 66 (Arc::new(http_state), Arc::new(private_http_state)) 67 - @@ -661,9 +672,16 @@ 67 + @@ -665,9 +676,16 @@ 68 68 return false; 69 69 }, 70 70 // Ignore these messages as they are only sent on very specific channels.
+1 -1
patches/components/script/dom/dissimilaroriginwindow.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -68,7 +68,9 @@ 3 + @@ -70,7 +70,9 @@ 4 4 #[cfg(feature = "webgpu")] 5 5 global_to_clone_from.wgpu_id_hub(), 6 6 Some(global_to_clone_from.is_secure_context()),
+14 -14
patches/components/script/dom/document/document.rs.patch
··· 8 8 use fonts::WebFontDocumentContext; 9 9 use html5ever::{LocalName, Namespace, QualName, local_name, ns}; 10 10 use hyper_serde::Serde; 11 - @@ -52,11 +53,13 @@ 11 + @@ -53,11 +54,13 @@ 12 12 use script_traits::{DocumentActivity, ProgressiveWebMetricType}; 13 13 use servo_arc::Arc; 14 14 use servo_base::cross_process_instant::CrossProcessInstant; ··· 24 24 use servo_media::{ClientContextId, ServoMedia}; 25 25 use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl}; 26 26 use style::attr::AttrValue; 27 - @@ -611,6 +614,9 @@ 27 + @@ -614,6 +617,9 @@ 28 28 #[no_trace] 29 29 favicon: RefCell<Option<Image>>, 30 30 ··· 34 34 /// All websockets created that are associated with this document. 35 35 websockets: DOMTracker<WebSocket>, 36 36 37 - @@ -638,6 +644,11 @@ 37 + @@ -641,6 +647,11 @@ 38 38 39 39 /// <https://w3c.github.io/editing/docs/execCommand/#css-styling-flag> 40 40 css_styling_flag: Cell<bool>, ··· 46 46 } 47 47 48 48 impl Document { 49 - @@ -863,6 +874,12 @@ 49 + @@ -866,6 +877,12 @@ 50 50 51 51 // Set the document's activity level, reflow if necessary, and suspend or resume timers. 52 52 self.activity.set(activity); ··· 59 59 let media = ServoMedia::get(); 60 60 let pipeline_id = self.window().pipeline_id(); 61 61 let client_context_id = 62 - @@ -876,6 +893,7 @@ 62 + @@ -879,6 +896,7 @@ 63 63 64 64 self.title_changed(); 65 65 self.notify_embedder_favicon(); ··· 67 67 self.dirty_all_nodes(); 68 68 self.window().resume(CanGc::from_cx(cx)); 69 69 media.resume(&client_context_id); 70 - @@ -1278,6 +1296,9 @@ 70 + @@ -1281,6 +1299,9 @@ 71 71 LoadStatus::Started, 72 72 )); 73 73 self.send_to_embedder(EmbedderMsg::Status(self.webview_id(), None)); ··· 77 77 } 78 78 }, 79 79 DocumentReadyState::Complete => { 80 - @@ -1286,6 +1307,9 @@ 80 + @@ -1289,6 +1310,9 @@ 81 81 self.webview_id(), 82 82 LoadStatus::Complete, 83 83 )); ··· 87 87 } 88 88 update_with_current_instant(&self.dom_complete); 89 89 }, 90 - @@ -1364,7 +1388,13 @@ 90 + @@ -1367,7 +1391,13 @@ 91 91 let window = self.window(); 92 92 if window.is_top_level() { 93 93 let title = self.title().map(String::from); ··· 102 102 } 103 103 } 104 104 105 - @@ -1373,6 +1403,18 @@ 105 + @@ -1376,6 +1406,18 @@ 106 106 window.send_to_embedder(msg); 107 107 } 108 108 ··· 121 121 pub(crate) fn dirty_all_nodes(&self) { 122 122 let root = match self.GetDocumentElement() { 123 123 Some(root) => root, 124 - @@ -2926,9 +2968,59 @@ 124 + @@ -2924,9 +2966,59 @@ 125 125 current_rendering_epoch, 126 126 ); 127 127 ··· 181 181 pub(crate) fn handle_no_longer_waiting_on_asynchronous_image_updates(&self) { 182 182 self.waiting_on_canvas_image_updates.set(false); 183 183 } 184 - @@ -3643,6 +3735,7 @@ 184 + @@ -3642,6 +3734,7 @@ 185 185 active_sandboxing_flag_set: Cell::new(creation_sandboxing_flag_set), 186 186 creation_sandboxing_flag_set: Cell::new(creation_sandboxing_flag_set), 187 187 favicon: RefCell::new(None), ··· 189 189 websockets: DOMTracker::new(), 190 190 details_name_groups: Default::default(), 191 191 protocol_handler_automation_mode: Default::default(), 192 - @@ -3651,6 +3744,7 @@ 192 + @@ -3650,6 +3743,7 @@ 193 193 value_override: Default::default(), 194 194 default_single_line_container_name: Default::default(), 195 195 css_styling_flag: Default::default(), ··· 197 197 } 198 198 } 199 199 200 - @@ -4594,6 +4688,36 @@ 200 + @@ -4599,6 +4693,36 @@ 201 201 202 202 pub(crate) fn notify_embedder_favicon(&self) { 203 203 if let Some(ref image) = *self.favicon.borrow() { ··· 234 234 self.send_to_embedder(EmbedderMsg::NewFavicon(self.webview_id(), image.clone())); 235 235 } 236 236 } 237 - @@ -4664,6 +4788,30 @@ 237 + @@ -4669,6 +4793,30 @@ 238 238 pub(crate) fn set_css_styling_flag(&self, value: bool) { 239 239 self.css_styling_flag.set(value) 240 240 }
+42 -42
patches/components/script/dom/document/document_event_handler.rs.patch
··· 25 25 use script_bindings::codegen::GenericBindings::PerformanceBinding::PerformanceMethods; 26 26 use script_bindings::codegen::GenericBindings::ShadowRootBinding::ShadowRootMethods; 27 27 use script_bindings::codegen::GenericBindings::TouchBinding::TouchMethods; 28 - @@ -47,8 +49,11 @@ 28 + @@ -47,9 +49,11 @@ 29 29 use script_bindings::str::DOMString; 30 30 use script_traits::ConstellationInputEvent; 31 31 use servo_base::generic_channel::GenericCallback; 32 32 +use servo_base::id::WebViewId; 33 33 use servo_config::pref; 34 - -use servo_constellation_traits::{KeyboardScroll, ScriptToConstellationMessage}; 35 - +use servo_constellation_traits::{ 34 + use servo_constellation_traits::{ 35 + - KeyboardScroll, ScriptToConstellationMessage, SequentialFocusDirection, 36 36 + EmbeddedWebViewEventType, KeyboardScroll, ScriptToConstellationMessage, 37 - +}; 37 + + SequentialFocusDirection, 38 + }; 38 39 use style::Atom; 39 40 use style_traits::CSSPixel; 40 - use webrender_api::ExternalScrollId; 41 - @@ -59,13 +64,14 @@ 41 + @@ -61,10 +65,10 @@ 42 42 use crate::dom::bindings::root::MutNullableDom; 43 43 use crate::dom::bindings::trace::NoTrace; 44 44 use crate::dom::clipboardevent::ClipboardEventType; 45 45 -use crate::dom::document::FireMouseEventType; 46 - use crate::dom::document::focus::FocusableArea; 46 + use crate::dom::document::focus::{ 47 + FocusableArea, SequentialFocusNavigationMechanism, SequentialFocusNavigationSearch, 48 + }; 47 49 +use crate::dom::document::{Document, FireMouseEventType}; 48 50 use crate::dom::event::{EventBubbles, EventCancelable, EventComposed, EventFlags}; 49 51 #[cfg(feature = "gamepad")] 50 52 use crate::dom::gamepad::gamepad::{Gamepad, contains_user_gesture}; 51 - #[cfg(feature = "gamepad")] 52 - use crate::dom::gamepad::gamepadevent::GamepadEventType; 53 - +use crate::dom::html::htmliframeelement::HTMLIFrameElement; 54 - use crate::dom::inputevent::HitTestResult; 55 - use crate::dom::interactive_element_command::InteractiveElementCommand; 56 - use crate::dom::keyboardevent::KeyboardEvent; 57 - @@ -79,6 +85,7 @@ 53 + @@ -83,6 +87,7 @@ 58 54 }; 59 55 use crate::drag_data_store::{DragDataStore, Kind, Mode}; 60 56 use crate::realms::enter_realm; ··· 62 58 63 59 /// A data structure used for tracking the current click count. This can be 64 60 /// reset to 0 if a mouse button event happens at a sufficient distance or time 65 - @@ -142,6 +149,56 @@ 61 + @@ -146,6 +151,56 @@ 66 62 } 67 63 } 68 64 ··· 119 115 /// The [`DocumentEventHandler`] is a structure responsible for handling input events for 120 116 /// the [`crate::Document`] and storing data related to event handling. It exists to 121 117 /// decrease the size of the [`crate::Document`] structure. 122 - @@ -200,6 +257,20 @@ 118 + @@ -205,6 +260,20 @@ 123 119 access_key_handlers: DomRefCell<FxHashMap<NoTrace<Code>, Dom<HTMLElement>>>, 124 120 /// <https://html.spec.whatwg.org/multipage/#sequential-focus-navigation-starting-point> 125 121 sequential_focus_navigation_starting_point: MutNullableDom<Node>, ··· 140 136 } 141 137 142 138 impl DocumentEventHandler { 143 - @@ -224,6 +295,9 @@ 139 + @@ -229,6 +298,9 @@ 144 140 next_touch_pointer_id: Cell::new(1), 145 141 access_key_handlers: Default::default(), 146 142 sequential_focus_navigation_starting_point: Default::default(), ··· 150 146 } 151 147 } 152 148 153 - @@ -566,6 +640,198 @@ 149 + @@ -571,6 +643,198 @@ 154 150 } 155 151 } 156 152 ··· 349 345 /// <https://w3c.github.io/uievents/#handle-native-mouse-move> 350 346 fn handle_native_mouse_move_event( 351 347 &self, 352 - @@ -584,6 +850,57 @@ 348 + @@ -589,6 +853,57 @@ 353 349 return; 354 350 } 355 351 ··· 407 403 // Update the cursor when the mouse moves, if it has changed. 408 404 self.set_cursor(Some(hit_test_result.cursor)); 409 405 410 - @@ -821,6 +1138,12 @@ 406 + @@ -824,6 +1139,12 @@ 411 407 return; 412 408 }; 413 409 ··· 420 416 debug!( 421 417 "{:?}: at {:?}", 422 418 event.action, hit_test_result.point_in_frame 423 - @@ -935,7 +1258,7 @@ 424 - self.maybe_show_context_menu( 425 - node.upcast(), 426 - &hit_test_result, 427 - - input_event, 419 + @@ -941,7 +1262,12 @@ 420 + // Step 9. If mbutton is the secondary mouse button, then 421 + // Maybe show context menu with native, target. 422 + if let MouseButton::Right = event.button { 423 + - self.maybe_show_context_menu(cx, node.upcast(), &hit_test_result, input_event); 424 + + self.maybe_show_context_menu( 425 + + cx, 426 + + node.upcast(), 427 + + &hit_test_result, 428 428 + ContextMenuSource::Mouse(input_event), 429 - CanGc::from_cx(cx), 430 - ); 429 + + ); 431 430 } 432 - @@ -1066,9 +1389,30 @@ 433 - &self, 431 + }, 432 + // https://w3c.github.io/pointerevents/#dfn-handle-native-mouse-up 433 + @@ -1075,8 +1401,29 @@ 434 + cx: &mut js::context::JSContext, 434 435 target: &EventTarget, 435 436 hit_test_result: &HitTestResult, 436 437 - input_event: &ConstellationInputEvent, 437 438 + source: ContextMenuSource, 438 - can_gc: CanGc, 439 439 ) { 440 440 + // Get pointer-specific values based on the source 441 441 + let (button, pressed_buttons, pointer_id, pointer_type, modifiers) = match source { ··· 461 461 // <https://w3c.github.io/pointerevents/#contextmenu> 462 462 let menu_event = PointerEvent::new( 463 463 &self.window, // window 464 - @@ -1082,25 +1426,25 @@ 464 + @@ -1090,25 +1437,25 @@ 465 465 hit_test_result 466 466 .point_relative_to_initial_containing_block 467 467 .to_i32(), ··· 503 503 + true, // is_primary 504 504 + vec![], // coalesced_events 505 505 + vec![], // predicted_events 506 - can_gc, 506 + CanGc::from_cx(cx), 507 507 ); 508 508 menu_event.upcast::<Event>().set_composed(true); 509 - @@ -1117,6 +1461,89 @@ 509 + @@ -1127,6 +1474,89 @@ 510 510 }; 511 511 } 512 512 ··· 586 586 + 587 587 + // Fire the contextmenu PointerEvent with touch-specific values. 588 588 + self.maybe_show_context_menu( 589 + + cx, 589 590 + el.upcast(), 590 591 + &hit_test_result, 591 592 + ContextMenuSource::Touch(touch_id), 592 - + CanGc::from_cx(cx), 593 593 + ); 594 594 + } 595 595 + 596 596 fn handle_touch_event( 597 597 &self, 598 598 cx: &mut JSContext, 599 - @@ -1123,6 +1550,29 @@ 599 + @@ -1133,6 +1563,29 @@ 600 600 event: EmbedderTouchEvent, 601 601 input_event: &ConstellationInputEvent, 602 602 ) -> InputEventResult { ··· 626 626 // Ignore all incoming events without a hit test. 627 627 let Some(hit_test_result) = self.window.hit_test_from_input_event(input_event) else { 628 628 self.update_active_touch_points_when_early_return(event); 629 - @@ -1129,6 +1579,16 @@ 629 + @@ -1139,6 +1592,16 @@ 630 630 return Default::default(); 631 631 }; 632 632 ··· 643 643 let TouchId(identifier) = event.touch_id; 644 644 645 645 let Some(element) = hit_test_result 646 - @@ -1264,6 +1724,10 @@ 646 + @@ -1274,6 +1737,10 @@ 647 647 // <https://html.spec.whatwg.org/multipage/#selector-active> 648 648 // If the element is being actively pointed at the element is being activated. 649 649 self.element_for_activation(element).set_active_state(true); ··· 654 654 (current_target, pointer_touch) 655 655 }, 656 656 _ => { 657 - @@ -1296,10 +1760,31 @@ 657 + @@ -1306,10 +1773,31 @@ 658 658 CanGc::from_cx(cx), 659 659 ); 660 660 ··· 687 687 }, 688 688 TouchEventType::Up | TouchEventType::Cancel => { 689 689 active_touch_points.swap_remove(index); 690 - @@ -1307,6 +1792,17 @@ 690 + @@ -1317,6 +1805,17 @@ 691 691 // <https://html.spec.whatwg.org/multipage/#selector-active> 692 692 // If the element is being actively pointed at the element is being activated. 693 693 self.element_for_activation(element).set_active_state(false); ··· 705 705 }, 706 706 TouchEventType::Down => unreachable!("Should have been handled above"), 707 707 } 708 - @@ -1354,6 +1850,19 @@ 708 + @@ -1364,6 +1863,19 @@ 709 709 ); 710 710 let event = touch_event.upcast::<Event>(); 711 711 event.fire(&touch_dispatch_target, CanGc::from_cx(cx)); ··· 725 725 event.flags().into() 726 726 } 727 727 728 - @@ -1488,6 +1997,16 @@ 728 + @@ -1498,6 +2010,16 @@ 729 729 return Default::default(); 730 730 }; 731 731 ··· 742 742 let Some(el) = hit_test_result 743 743 .node 744 744 .inclusive_ancestors(ShadowIncluding::Yes) 745 - @@ -1950,6 +2469,28 @@ 745 + @@ -1959,6 +2481,28 @@ 746 746 return; 747 747 } 748 748
+1 -1
patches/components/script/dom/document/focus.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -298,6 +298,11 @@ 3 + @@ -307,6 +307,11 @@ 4 4 mut old_focus_chain: Vec<FocusableArea>, 5 5 new_focus_target: &FocusableArea, 6 6 ) {
+2 -3
patches/components/script/dom/document/spatial_navigation.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -0,0 +1,323 @@ 3 + @@ -0,0 +1,322 @@ 4 4 +/* SPDX Id: AGPL-3.0-or-later */ 5 5 + 6 6 +//! Spatial navigation: navigate to the nearest focusable element using arrow keys. ··· 21 21 +use script_bindings::codegen::GenericBindings::WindowBinding::ScrollBehavior; 22 22 +use script_bindings::inheritance::Castable; 23 23 +use script_bindings::root::DomRoot; 24 - +use script_bindings::script_runtime::CanGc; 25 24 +use style_traits::CSSPixel; 26 25 + 27 26 +use crate::dom::document::Document; ··· 101 100 + // Simulate click on the focused element 102 101 + if let Some(html_element) = focused.downcast::<HTMLElement>() { 103 102 + debug!("[SpatialNav] Enter: clicking <{}>", focused.local_name()); 104 - + html_element.Click(CanGc::from_cx(cx)); 103 + + html_element.Click(cx); 105 104 + return true; 106 105 + } 107 106 +
+1 -1
patches/components/script/dom/html/htmlbodyelement.rs.patch
··· 8 8 use style::attr::AttrValue; 9 9 use style::color::AbsoluteColor; 10 10 11 - @@ -134,6 +135,12 @@ 11 + @@ -130,6 +131,12 @@ 12 12 window.webview_id(), 13 13 LoadStatus::HeadParsed, 14 14 ));
+1 -1
patches/components/script/dom/html/htmlformelement.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -880,7 +880,7 @@ 3 + @@ -877,7 +877,7 @@ 4 4 // form's node navigable, and noopener. 5 5 let source = doc.browsing_context().unwrap(); 6 6 let (maybe_chosen, _new) =
+11 -24
patches/components/script/dom/html/htmliframeelement.rs.patch
··· 269 269 fn destroy_nested_browsing_context(&self) { 270 270 self.pipeline_id.set(None); 271 271 self.pending_pipeline_id.set(None); 272 - @@ -681,6 +872,13 @@ 272 + @@ -685,6 +876,13 @@ 273 273 lazy_load_resumption_steps: Default::default(), 274 274 pending_navigation: Default::default(), 275 275 already_fired_synchronous_load_event: Default::default(), ··· 283 283 } 284 284 } 285 285 286 - @@ -716,7 +914,158 @@ 286 + @@ -720,6 +918,145 @@ 287 287 self.webview_id.get() 288 288 } 289 289 ··· 358 358 + 359 359 + // Remove the adopt attributes now that we've used them 360 360 + let element = self.upcast::<Element>(); 361 - + element.remove_attribute( 362 - + &ns!(), 363 - + &LocalName::from("adopt-webview-id"), 364 - + CanGc::from_cx(cx), 365 - + ); 366 - + element.remove_attribute( 367 - + &ns!(), 368 - + &LocalName::from("adopt-browsing-context-id"), 369 - + CanGc::from_cx(cx), 370 - + ); 371 - + element.remove_attribute( 372 - + &ns!(), 373 - + &LocalName::from("adopt-pipeline-id"), 374 - + CanGc::from_cx(cx), 375 - + ); 361 + + element.remove_attribute(cx, &ns!(), &LocalName::from("adopt-webview-id")); 362 + + element.remove_attribute(cx, &ns!(), &LocalName::from("adopt-browsing-context-id")); 363 + + element.remove_attribute(cx, &ns!(), &LocalName::from("adopt-pipeline-id")); 376 364 + } 377 365 + 378 366 + /// Get the effective webview ID, taking into account embedded webview mode. 379 367 + /// Returns the embedded webview ID if in embed mode, otherwise the parent webview ID. 380 - #[inline] 368 + + #[inline] 381 369 + pub(crate) fn embedded_webview_id(&self) -> Option<WebViewId> { 382 370 + if self.is_embedded_webview.get() { 383 371 + self.embedded_webview_id.get() ··· 438 426 + self.page_zoom.set(zoom); 439 427 + } 440 428 + 441 - + #[inline] 429 + #[inline] 442 430 pub(crate) fn sandboxing_flag_set(&self) -> SandboxingFlagSet { 443 431 self.sandboxing_flag_set 444 - .get() 445 - @@ -1084,6 +1433,97 @@ 432 + @@ -1088,6 +1425,97 @@ 446 433 447 434 // https://html.spec.whatwg.org/multipage/#dom-iframe-longdesc 448 435 make_url_setter!(cx, SetLongDesc, "longdesc"); ··· 540 527 } 541 528 542 529 impl VirtualMethods for HTMLIFrameElement { 543 - @@ -1134,9 +1574,54 @@ 530 + @@ -1138,9 +1566,54 @@ 544 531 // may be in a different script thread. Instead, we check to see if the parent 545 532 // is in a document tree and has a browsing context, which is what causes 546 533 // the child browsing context to be created. ··· 597 584 } 598 585 }, 599 586 local_name!("loading") => { 600 - @@ -1201,6 +1686,23 @@ 587 + @@ -1205,6 +1678,23 @@ 601 588 602 589 debug!("<iframe> running post connection steps"); 603 590 ··· 621 608 // Step 1. Create a new child navigable for insertedNode. 622 609 self.create_nested_browsing_context(cx); 623 610 624 - @@ -1223,8 +1725,22 @@ 611 + @@ -1227,8 +1717,22 @@ 625 612 fn unbind_from_tree(&self, cx: &mut JSContext, context: &UnbindContext) { 626 613 self.super_type().unwrap().unbind_from_tree(cx, context); 627 614
+1 -1
patches/components/script/dom/html/input_element/mod.rs.patch
··· 11 11 use encoding_rs::Encoding; 12 12 use fonts::{ByteIndex, TextByteRange}; 13 13 use html5ever::{LocalName, Prefix, local_name}; 14 - @@ -1959,10 +1961,25 @@ 14 + @@ -1952,10 +1954,25 @@ 15 15 .hide_embedder_control(self.upcast()); 16 16 } else if *event_type == *"focus" { 17 17 let input_type = &*self.input_type();
+7 -7
patches/components/script/dom/window.rs.patch
··· 26 26 use crate::messaging::{MainThreadScriptMsg, ScriptEventLoopReceiver, ScriptEventLoopSender}; 27 27 use crate::microtask::{Microtask, UserMicrotask}; 28 28 use crate::network_listener::{ResourceTimingListener, submit_timing}; 29 - -use crate::realms::enter_realm; 30 - +use crate::realms::{InRealm, enter_realm}; 29 + -use crate::realms::{enter_auto_realm, enter_realm}; 30 + +use crate::realms::{InRealm, enter_auto_realm, enter_realm}; 31 31 use crate::script_runtime::{CanGc, JSContext as SafeJSContext, Runtime}; 32 32 use crate::script_thread::ScriptThread; 33 33 use crate::script_window_proxies::ScriptWindowProxies; ··· 132 132 /// <https://developer.mozilla.org/en-US/docs/Web/API/Window/screen> 133 133 fn Screen(&self, can_gc: CanGc) -> DomRoot<Screen> { 134 134 self.screen.or_init(|| Screen::new(self, can_gc)) 135 - @@ -3111,9 +3161,33 @@ 135 + @@ -3109,9 +3159,33 @@ 136 136 &self, 137 137 input_event: &ConstellationInputEvent, 138 138 ) -> Option<HitTestResult> { ··· 169 169 } 170 170 171 171 #[expect(unsafe_code)] 172 - @@ -3132,8 +3206,25 @@ 172 + @@ -3130,8 +3204,25 @@ 173 173 // SAFETY: This is safe because `Window::query_elements_from_point` has ensured that 174 174 // layout has run and any OpaqueNodes that no longer refer to real nodes are gone. 175 175 let address = UntrustedNodeAddress(result.node.0 as *const c_void); ··· 196 196 cursor: result.cursor, 197 197 point_in_node: result.point_in_target, 198 198 point_in_frame, 199 - @@ -3676,6 +3767,8 @@ 199 + @@ -3680,6 +3771,8 @@ 200 200 player_context: WindowGLContext, 201 201 #[cfg(feature = "webgpu")] gpu_id_hub: Arc<IdentityHub>, 202 202 inherited_secure_context: Option<bool>, ··· 205 205 theme: Theme, 206 206 weak_script_thread: Weak<ScriptThread>, 207 207 initial_https_state: HttpsState, 208 - @@ -3703,6 +3796,8 @@ 208 + @@ -3707,6 +3800,8 @@ 209 209 gpu_id_hub, 210 210 inherited_secure_context, 211 211 unminify_js, ··· 214 214 Some(font_context), 215 215 initial_https_state, 216 216 ), 217 - @@ -3989,3 +4084,115 @@ 217 + @@ -3993,3 +4088,115 @@ 218 218 Self::create_named_properties_object(cx, proto, object) 219 219 } 220 220 }
+2 -2
patches/components/script/navigation.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -186,6 +186,10 @@ 3 + @@ -185,6 +185,10 @@ 4 4 /// The [`TargetSnapshotParams`] to use when creating this document. 5 5 #[no_trace] 6 6 pub(crate) target_snapshot_params: TargetSnapshotParams, ··· 11 11 } 12 12 13 13 impl InProgressLoad { 14 - @@ -208,6 +212,8 @@ 14 + @@ -207,6 +211,8 @@ 15 15 user_content_manager_id: new_pipeline_info.user_content_manager_id, 16 16 theme: new_pipeline_info.theme, 17 17 target_snapshot_params: new_pipeline_info.target_snapshot_params,
+29 -28
patches/components/script/script_thread.rs.patch
··· 9 9 }; 10 10 use encoding_rs::Encoding; 11 11 use fonts::{FontContext, SystemFontServiceProxy}; 12 - @@ -82,16 +82,18 @@ 12 + @@ -82,17 +82,18 @@ 13 13 use servo_base::cross_process_instant::CrossProcessInstant; 14 14 use servo_base::generic_channel::GenericSender; 15 15 use servo_base::id::{ ··· 23 23 +use servo_config::pref_util::PrefValue; 24 24 use servo_config::{opts, pref, prefs}; 25 25 use servo_constellation_traits::{ 26 - - LoadData, LoadOrigin, NavigationHistoryBehavior, ScreenshotReadinessResponse, 27 - - ScriptToConstellationChan, ScriptToConstellationMessage, ScrollStateUpdate, 28 - - StructuredSerializedData, TargetSnapshotParams, TraversalDirection, WindowSizeType, 26 + - LoadData, LoadOrigin, NavigationHistoryBehavior, RemoteFocusOperation, 27 + - ScreenshotReadinessResponse, ScriptToConstellationChan, ScriptToConstellationMessage, 28 + - ScrollStateUpdate, StructuredSerializedData, TargetSnapshotParams, TraversalDirection, 29 + - WindowSizeType, 29 30 + EmbeddedWebViewEventType, LoadData, LoadOrigin, NavigationHistoryBehavior, PairingEvent, 30 - + ScreenshotReadinessResponse, ScriptToConstellationChan, ScriptToConstellationMessage, 31 - + ScrollStateUpdate, StructuredSerializedData, TargetSnapshotParams, TraversalDirection, 32 - + WindowSizeType, 31 + + RemoteFocusOperation, ScreenshotReadinessResponse, ScriptToConstellationChan, 32 + + ScriptToConstellationMessage, ScrollStateUpdate, StructuredSerializedData, 33 + + TargetSnapshotParams, TraversalDirection, WindowSizeType, 33 34 }; 34 35 use servo_url::{ImmutableOrigin, MutableOrigin, OriginSnapshot, ServoUrl}; 35 36 use storage_traits::StorageThreads; 36 - @@ -115,6 +117,8 @@ 37 + @@ -116,6 +117,8 @@ 37 38 use crate::dom::bindings::codegen::Bindings::DocumentBinding::{ 38 39 DocumentMethods, DocumentReadyState, 39 40 }; ··· 42 43 use crate::dom::bindings::codegen::Bindings::NavigatorBinding::NavigatorMethods; 43 44 use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; 44 45 use crate::dom::bindings::conversions::{ 45 - @@ -133,9 +137,13 @@ 46 + @@ -134,9 +137,13 @@ 46 47 Document, DocumentSource, HasBrowsingContext, IsHTMLDocument, RenderingUpdateReason, 47 48 }; 48 49 use crate::dom::element::Element; ··· 56 57 use crate::dom::servoparser::{ParserContext, ServoParser}; 57 58 use crate::dom::types::DebuggerGlobalScope; 58 59 #[cfg(feature = "webgpu")] 59 - @@ -1941,11 +1949,50 @@ 60 + @@ -1944,11 +1951,50 @@ 60 61 self.handle_refresh_cursor(pipeline_id); 61 62 }, 62 63 ScriptThreadMessage::PreferencesUpdated(updates) => { ··· 111 112 }, 112 113 ScriptThreadMessage::ForwardKeyboardScroll(pipeline_id, scroll) => { 113 114 if let Some(document) = self.documents.borrow().find_document(pipeline_id) { 114 - @@ -1981,6 +2028,40 @@ 115 + @@ -1984,6 +2030,40 @@ 115 116 ScriptThreadMessage::TriggerGarbageCollection => unsafe { 116 117 JS_GC(*GlobalScope::get_cx(), GCReason::API); 117 118 }, ··· 152 153 } 153 154 } 154 155 155 - @@ -2989,6 +3070,9 @@ 156 + @@ -3003,6 +3083,9 @@ 156 157 .documents 157 158 .borrow() 158 159 .find_iframe(parent_pipeline_id, browsing_context_id); 159 160 + let is_embedded_webview = frame_element 160 161 + .as_ref() 161 162 + .is_some_and(|iframe| iframe.is_embedded_webview()); 162 - if let Some(frame_element) = frame_element { 163 - frame_element.update_pipeline_id(new_pipeline_id, reason, cx); 164 - } 165 - @@ -3008,6 +3092,7 @@ 166 - // is no need to pass along existing opener information that 167 - // will be discarded. 168 - None, 169 - + is_embedded_webview, 170 - ); 171 - } 163 + let Some(frame_element) = frame_element else { 164 + return; 165 + }; 166 + @@ -3027,6 +3110,7 @@ 167 + // is no need to pass along existing opener information that 168 + // will be discarded. 169 + None, 170 + + is_embedded_webview, 171 + ); 172 172 } 173 - @@ -3290,6 +3375,155 @@ 173 + 174 + @@ -3308,6 +3392,155 @@ 174 175 } 175 176 } 176 177 ··· 326 327 fn ask_constellation_for_top_level_info( 327 328 &self, 328 329 sender_webview_id: WebViewId, 329 - @@ -3398,7 +3632,13 @@ 330 + @@ -3416,7 +3649,13 @@ 330 331 self.senders.pipeline_to_embedder_sender.clone(), 331 332 self.senders.constellation_sender.clone(), 332 333 incomplete.pipeline_id, ··· 341 342 incomplete.viewport_details, 342 343 origin.clone(), 343 344 final_url.clone(), 344 - @@ -3420,6 +3660,8 @@ 345 + @@ -3438,6 +3677,8 @@ 345 346 #[cfg(feature = "webgpu")] 346 347 self.gpu_id_hub.clone(), 347 348 incomplete.load_data.inherited_secure_context, ··· 350 351 incomplete.theme, 351 352 self.this.clone(), 352 353 metadata.https_state, 353 - @@ -3440,6 +3682,7 @@ 354 + @@ -3458,6 +3699,7 @@ 354 355 incomplete.webview_id, 355 356 incomplete.parent_info, 356 357 incomplete.opener, ··· 358 359 ); 359 360 if window_proxy.parent().is_some() { 360 361 // https://html.spec.whatwg.org/multipage/#navigating-across-documents:delaying-load-events-mode-2 361 - @@ -4276,10 +4519,78 @@ 362 + @@ -4294,10 +4536,78 @@ 362 363 document.event_handler().handle_refresh_cursor(); 363 364 } 364 365 ··· 437 438 fn handle_request_screenshot_readiness( 438 439 &self, 439 440 webview_id: WebViewId, 440 - @@ -4320,7 +4631,7 @@ 441 + @@ -4338,7 +4648,7 @@ 441 442 can_gc: CanGc, 442 443 ) { 443 444 let Some(window) = self.documents.borrow().find_window(pipeline_id) else {
+8 -8
patches/components/script_bindings/codegen/Bindings.conf.patch
··· 12 12 'Attr': { 13 13 'implicitCxSetters': True, 14 14 }, 15 - @@ -116,6 +121,11 @@ 15 + @@ -117,6 +122,11 @@ 16 16 'cx': ['Constructor'], 17 17 }, 18 18 ··· 24 24 'CookieStore': { 25 25 'cx': ['Set', 'Set_', 'Get', 'Get_', 'GetAll', 'GetAll_', 'Delete', 'Delete_'], 26 26 }, 27 - @@ -323,6 +333,11 @@ 27 + @@ -326,6 +336,11 @@ 28 28 'cx': ['CheckValidity', 'ReportValidity'], 29 29 }, 30 30 ··· 36 36 'EventSource': { 37 37 'weakReferenceable': True, 38 38 }, 39 - @@ -751,9 +766,9 @@ 39 + @@ -752,9 +767,9 @@ 40 40 }, 41 41 42 42 'Navigator': { ··· 48 48 + 'cx': ['Atproto', 'Clipboard', 'Embedder', 'Keyboard', 'SendBeacon', 'Storage', 'WakeLock'], 49 49 }, 50 50 51 - 'WakeLock': { 52 - @@ -793,6 +808,11 @@ 51 + 'CredentialsContainer': { 52 + @@ -799,6 +814,11 @@ 53 53 'cx': ['RegisterPaint'], 54 54 }, 55 55 ··· 58 58 + 'canGc': ['Start', 'Stop', 'Local', 'Peers', 'RequestPairing', 'SetName', 'AcceptPairing', 'RejectPairing', 'RemovePeer', 'EnableGuestMode', 'DisableGuestMode', 'RequestGuestPairing'], 59 59 +}, 60 60 + 61 - 'PerformanceObserver': { 62 - 'canGc': ['SupportedEntryTypes'], 61 + 'Performance': { 62 + 'cx': ['Mark', 'Measure'], 63 63 }, 64 - @@ -966,7 +986,8 @@ 64 + @@ -969,7 +989,8 @@ 65 65 }, 66 66 67 67 'Window': {
+2 -2
patches/components/shared/constellation/from_script_message.rs.patch
··· 199 199 /// Indicates whether this pipeline is currently running animations. 200 200 ChangeRunningAnimationsState(AnimationState), 201 201 /// Requests that a new 2D canvas thread be created. (This is done in the constellation because 202 - @@ -697,6 +825,10 @@ 202 + @@ -701,6 +829,10 @@ 203 203 ScriptNewIFrame(IFrameLoadInfoWithData), 204 204 /// Script has opened a new auxiliary browsing context. 205 205 CreateAuxiliaryWebView(AuxiliaryWebViewCreationRequest), ··· 210 210 /// Mark a new document as active 211 211 ActivateDocument, 212 212 /// Set the document state for a pipeline (used by screenshot / reftests) 213 - @@ -754,6 +886,131 @@ 213 + @@ -758,6 +890,131 @@ 214 214 /// aggregate lock count and notify the provider only when the count transitions from N to 0. 215 215 /// <https://w3c.github.io/screen-wake-lock/#dfn-release-wake-lock> 216 216 ReleaseWakeLock(WakeLockType),
+2 -2
patches/components/shared/net/lib.rs.patch
··· 26 26 } 27 27 28 28 /// A loading context, for context-specific sniffing, as defined in 29 - @@ -669,6 +674,58 @@ 29 + @@ -677,6 +682,58 @@ 30 30 Prefetch, 31 31 } 32 32 ··· 85 85 #[derive(Debug, Deserialize, Serialize)] 86 86 pub enum CoreResourceMsg { 87 87 Fetch(RequestBuilder, FetchChannels), 88 - @@ -748,6 +805,10 @@ 88 + @@ -758,6 +815,10 @@ 89 89 CollectMemoryReport(ReportsChan), 90 90 RevokeTokenForFile(BlobTokenRevocationRequest), 91 91 RefreshTokenForFile(BlobTokenRefreshRequest),
+9 -8
patches/components/shared/script/lib.rs.patch
··· 9 9 }; 10 10 use euclid::{Scale, Size2D}; 11 11 use fonts_traits::SystemFontServiceProxySender; 12 - @@ -42,8 +42,9 @@ 12 + @@ -42,9 +42,9 @@ 13 13 use servo_canvas_traits::webgl::WebGLPipeline; 14 14 use servo_config::prefs::PrefValue; 15 15 use servo_constellation_traits::{ 16 - - KeyboardScroll, LoadData, NavigationHistoryBehavior, ScriptToConstellationSender, 17 - - ScrollStateUpdate, StructuredSerializedData, TargetSnapshotParams, WindowSizeType, 16 + - KeyboardScroll, LoadData, NavigationHistoryBehavior, RemoteFocusOperation, 17 + - ScriptToConstellationSender, ScrollStateUpdate, StructuredSerializedData, TargetSnapshotParams, 18 + - WindowSizeType, 18 19 + EmbeddedWebViewEventType, KeyboardScroll, LoadData, NavigationHistoryBehavior, PairingEvent, 19 - + ScriptToConstellationSender, ScrollStateUpdate, StructuredSerializedData, TargetSnapshotParams, 20 - + WindowSizeType, 20 + + RemoteFocusOperation, ScriptToConstellationSender, ScrollStateUpdate, StructuredSerializedData, 21 + + TargetSnapshotParams, WindowSizeType, 21 22 }; 22 23 use servo_url::{ImmutableOrigin, ServoUrl}; 23 24 use storage_traits::StorageThreads; 24 - @@ -80,6 +81,14 @@ 25 + @@ -81,6 +81,14 @@ 25 26 pub theme: Theme, 26 27 /// A snapshot of the navigation parameters of the target of this navigation. 27 28 pub target_snapshot_params: TargetSnapshotParams, ··· 36 37 } 37 38 38 39 /// When a pipeline is closed, should its browsing context be discarded too? 39 - @@ -292,6 +301,15 @@ 40 + @@ -295,6 +303,15 @@ 40 41 SendImageKeysBatch(PipelineId, Vec<ImageKey>), 41 42 /// Preferences were updated in the parent process. 42 43 PreferencesUpdated(Vec<(String, PrefValue)>), ··· 52 53 /// Notify the `ScriptThread` that the Servo renderer is no longer waiting on 53 54 /// asynchronous image uploads for the given `Pipeline`. These are mainly used 54 55 /// by canvas to perform uploads while the display list is being built. 55 - @@ -326,6 +344,26 @@ 56 + @@ -329,6 +346,26 @@ 56 57 SetAccessibilityActive(PipelineId, bool, Epoch), 57 58 /// Force a garbage collection in this script thread. 58 59 TriggerGarbageCollection,
-13
patches/components/webgpu/lib.rs.patch
··· 1 - --- original 2 - +++ modified 3 - @@ -7,8 +7,9 @@ 4 - use log::warn; 5 - use servo_base::generic_channel::{self, GenericReceiver}; 6 - use webgpu_traits::{WebGPU, WebGPUMsg}; 7 - +pub use wgpu_core as wgc; 8 - use wgpu_thread::WGPU; 9 - -pub use {wgpu_core as wgc, wgpu_types as wgt}; 10 - +pub use wgpu_types as wgt; 11 - 12 - mod poll_thread; 13 - mod wgpu_thread;
-18
patches/components/webgpu/wgpu_thread.rs.patch
··· 1 - --- original 2 - +++ modified 3 - @@ -26,13 +26,14 @@ 4 - use wgc::id::DeviceId; 5 - use wgc::pipeline::ShaderModuleDescriptor; 6 - use wgc::resource::BufferMapOperation; 7 - +pub use wgpu_core as wgc; 8 - use wgpu_core::command::RenderPassDescriptor; 9 - use wgpu_core::device::DeviceError; 10 - use wgpu_core::pipeline::{CreateComputePipelineError, CreateRenderPipelineError}; 11 - use wgpu_core::resource::BufferAccessResult; 12 - +pub use wgpu_types as wgt; 13 - use wgpu_types::MemoryHints; 14 - use wgt::InstanceDescriptor; 15 - -pub use {wgpu_core as wgc, wgpu_types as wgt}; 16 - 17 - use crate::canvas_context::WebGpuExternalImageMap; 18 - use crate::poll_thread::Poller;