Rewild Your Web
18
fork

Configure Feed

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

chore: update Servo to 9dbe608558d2a2fd89e764b6fb042dc1b9159308

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

webbeef 758e2857 8bd4fb36

+216 -211
+32 -29
Cargo.lock
··· 1254 1254 1255 1255 [[package]] 1256 1256 name = "cc" 1257 - version = "1.2.57" 1257 + version = "1.2.58" 1258 1258 source = "registry+https://github.com/rust-lang/crates.io-index" 1259 - checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" 1259 + checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" 1260 1260 dependencies = [ 1261 1261 "find-msvc-tools", 1262 1262 "jobserver", ··· 1505 1505 1506 1506 [[package]] 1507 1507 name = "cmake" 1508 - version = "0.1.57" 1508 + version = "0.1.58" 1509 1509 source = "registry+https://github.com/rust-lang/crates.io-index" 1510 - checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" 1510 + checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" 1511 1511 dependencies = [ 1512 1512 "cc", 1513 1513 ] ··· 5152 5152 "rgb", 5153 5153 "tiff", 5154 5154 "zune-core 0.5.1", 5155 - "zune-jpeg 0.5.14", 5155 + "zune-jpeg 0.5.15", 5156 5156 ] 5157 5157 5158 5158 [[package]] ··· 6218 6218 6219 6219 [[package]] 6220 6220 name = "mio" 6221 - version = "1.1.1" 6221 + version = "1.2.0" 6222 6222 source = "registry+https://github.com/rust-lang/crates.io-index" 6223 - checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" 6223 + checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" 6224 6224 dependencies = [ 6225 6225 "libc", 6226 6226 "wasi 0.11.1+wasi-snapshot-preview1", ··· 9056 9056 [[package]] 9057 9057 name = "selectors" 9058 9058 version = "0.36.1" 9059 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 9059 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 9060 9060 dependencies = [ 9061 9061 "bitflags 2.11.0", 9062 9062 "cssparser", ··· 9452 9452 name = "servo-constellation" 9453 9453 version = "0.0.6" 9454 9454 dependencies = [ 9455 + "accesskit", 9455 9456 "backtrace", 9456 9457 "beaver-p2p", 9457 9458 "content-security-policy", ··· 9505 9506 name = "servo-constellation-traits" 9506 9507 version = "0.0.6" 9507 9508 dependencies = [ 9509 + "beaver-p2p", 9508 9510 "content-security-policy", 9509 9511 "encoding_rs", 9510 9512 "euclid", ··· 9856 9858 "stylo_malloc_size_of", 9857 9859 "taffy", 9858 9860 "tendril", 9861 + "time", 9859 9862 "tokio", 9860 9863 "unicode-bidi", 9861 9864 "unicode-script", ··· 10692 10695 [[package]] 10693 10696 name = "servo_arc" 10694 10697 version = "0.4.3" 10695 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 10698 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 10696 10699 dependencies = [ 10697 10700 "serde", 10698 10701 "stable_deref_trait", ··· 10790 10793 10791 10794 [[package]] 10792 10795 name = "simd-adler32" 10793 - version = "0.3.8" 10796 + version = "0.3.9" 10794 10797 source = "registry+https://github.com/rust-lang/crates.io-index" 10795 - checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 10798 + checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" 10796 10799 10797 10800 [[package]] 10798 10801 name = "simd_cesu8" ··· 11167 11170 [[package]] 11168 11171 name = "stylo" 11169 11172 version = "0.14.0" 11170 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11173 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11171 11174 dependencies = [ 11172 11175 "app_units", 11173 11176 "arrayvec", ··· 11223 11226 [[package]] 11224 11227 name = "stylo_atoms" 11225 11228 version = "0.14.0" 11226 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11229 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11227 11230 dependencies = [ 11228 11231 "string_cache", 11229 11232 "string_cache_codegen", ··· 11232 11235 [[package]] 11233 11236 name = "stylo_derive" 11234 11237 version = "0.14.0" 11235 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11238 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11236 11239 dependencies = [ 11237 11240 "darling", 11238 11241 "proc-macro2", ··· 11244 11247 [[package]] 11245 11248 name = "stylo_dom" 11246 11249 version = "0.14.0" 11247 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11250 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11248 11251 dependencies = [ 11249 11252 "bitflags 2.11.0", 11250 11253 "stylo_malloc_size_of", ··· 11253 11256 [[package]] 11254 11257 name = "stylo_malloc_size_of" 11255 11258 version = "0.14.0" 11256 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11259 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11257 11260 dependencies = [ 11258 11261 "app_units", 11259 11262 "cssparser", ··· 11270 11273 [[package]] 11271 11274 name = "stylo_static_prefs" 11272 11275 version = "0.14.0" 11273 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11276 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11274 11277 11275 11278 [[package]] 11276 11279 name = "stylo_traits" 11277 11280 version = "0.14.0" 11278 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11281 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11279 11282 dependencies = [ 11280 11283 "app_units", 11281 11284 "bitflags 2.11.0", ··· 11645 11648 "half", 11646 11649 "quick-error", 11647 11650 "weezl", 11648 - "zune-jpeg 0.5.14", 11651 + "zune-jpeg 0.5.15", 11649 11652 ] 11650 11653 11651 11654 [[package]] ··· 11777 11780 [[package]] 11778 11781 name = "to_shmem" 11779 11782 version = "0.3.0" 11780 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11783 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11781 11784 dependencies = [ 11782 11785 "cssparser", 11783 11786 "servo_arc", ··· 11790 11793 [[package]] 11791 11794 name = "to_shmem_derive" 11792 11795 version = "0.1.0" 11793 - source = "git+https://github.com/servo/stylo?rev=1e32f24e7eec55f45c5be6c6cd090c38e8318e96#1e32f24e7eec55f45c5be6c6cd090c38e8318e96" 11796 + source = "git+https://github.com/servo/stylo?rev=ad3ef1d5d2b7108706e9f4849bc34af95d6204f6#ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" 11794 11797 dependencies = [ 11795 11798 "darling", 11796 11799 "proc-macro2", ··· 12301 12304 12302 12305 [[package]] 12303 12306 name = "unicode-segmentation" 12304 - version = "1.13.1" 12307 + version = "1.13.2" 12305 12308 source = "registry+https://github.com/rust-lang/crates.io-index" 12306 - checksum = "da36089a805484bcccfffe0739803392c8298778a2d2f09febf76fac5ad9025b" 12309 + checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" 12307 12310 12308 12311 [[package]] 12309 12312 name = "unicode-vo" ··· 12439 12442 12440 12443 [[package]] 12441 12444 name = "uuid" 12442 - version = "1.22.0" 12445 + version = "1.23.0" 12443 12446 source = "registry+https://github.com/rust-lang/crates.io-index" 12444 - checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" 12447 + checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" 12445 12448 dependencies = [ 12446 12449 "getrandom 0.4.2", 12447 12450 "js-sys", ··· 13915 13918 13916 13919 [[package]] 13917 13920 name = "wmi" 13918 - version = "0.18.3" 13921 + version = "0.18.4" 13919 13922 source = "registry+https://github.com/rust-lang/crates.io-index" 13920 - checksum = "003e65f4934cf9449b9ce913ad822cd054a5af669d24f93db101fdb02856bb23" 13923 + checksum = "7c81b85c57a57500e56669586496bf2abd5cf082b9d32995251185d105208b64" 13921 13924 dependencies = [ 13922 13925 "chrono", 13923 13926 "futures", ··· 14412 14415 14413 14416 [[package]] 14414 14417 name = "zune-jpeg" 14415 - version = "0.5.14" 14418 + version = "0.5.15" 14416 14419 source = "registry+https://github.com/rust-lang/crates.io-index" 14417 - checksum = "0b7a1c0af6e5d8d1363f4994b7a091ccf963d8b694f7da5b0b9cceb82da2c0a6" 14420 + checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" 14418 14421 dependencies = [ 14419 14422 "zune-core 0.5.1", 14420 14423 ]
+9 -9
Cargo.toml
··· 179 179 sea-query = { version = "1.0.0-rc.30", default-features = false, features = ["backend-sqlite", "derive"] } 180 180 sea-query-rusqlite = { version = "0.8.0-rc.15" } 181 181 sec1 = "0.7" 182 - selectors = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 182 + selectors = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 183 183 serde = "1.0.228" 184 184 serde_bytes = "0.11" 185 185 serde_core = "1.0.226" ··· 212 212 servo-media-webrtc = { version = "0.0.6", path = "source/components/media/webrtc" } 213 213 servo_allocator = { package = "servo-allocator", version = "0.0.6", path = "source/components/allocator" } 214 214 servo-tracing = { path = "source/components/servo_tracing" } 215 - servo_arc = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 215 + servo_arc = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 216 216 servo-url = { version = "0.0.6", path = "source/components/url" } 217 217 sha1 = "0.10" 218 218 sha2 = "0.10" ··· 223 223 storage_traits = { package = "servo-storage-traits", path = "source/components/shared/storage" } 224 224 string_cache = "0.9" 225 225 strum = { version = "0.27", features = ["derive"] } 226 - stylo = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 227 - stylo_atoms = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 228 - stylo_config = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 229 - stylo_dom = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 230 - stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 231 - stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 232 - stylo_traits = { git = "https://github.com/servo/stylo", rev = "1e32f24e7eec55f45c5be6c6cd090c38e8318e96" } 226 + stylo = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 227 + stylo_atoms = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 228 + stylo_config = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 229 + stylo_dom = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 230 + stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 231 + stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 232 + stylo_traits = { git = "https://github.com/servo/stylo", rev = "ad3ef1d5d2b7108706e9f4849bc34af95d6204f6" } 233 233 surfman = { version = "0.11.0", features = ["chains"] } 234 234 syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } 235 235 synstructure = "0.13"
+1 -1
forkme.lock
··· 1 - 627f2dfe7f5d9c1ce12e6b8bbfca46328313e2fd 1 + 9dbe608558d2a2fd89e764b6fb042dc1b9159308
+30 -30
patches/Cargo.lock.patch
··· 814 814 name = "servo" 815 815 version = "0.0.6" 816 816 dependencies = [ 817 - @@ -7647,6 +8154,7 @@ 817 + @@ -7648,6 +8155,7 @@ 818 818 "rand 0.9.2", 819 819 "rustc-hash 2.1.1", 820 820 "serde", ··· 822 822 "servo-background-hang-monitor", 823 823 "servo-background-hang-monitor-api", 824 824 "servo-base", 825 - @@ -7673,6 +8181,8 @@ 825 + @@ -7674,6 +8182,8 @@ 826 826 "servo-webxr-api", 827 827 "stylo", 828 828 "stylo_traits", ··· 831 831 "tracing", 832 832 ] 833 833 834 - @@ -8260,9 +8770,11 @@ 834 + @@ -8262,9 +8772,11 @@ 835 835 name = "servo-net" 836 836 version = "0.0.6" 837 837 dependencies = [ ··· 843 843 "base64 0.22.1", 844 844 "bytes", 845 845 "chrono", 846 - @@ -8293,6 +8805,7 @@ 846 + @@ -8295,6 +8807,7 @@ 847 847 "parking_lot", 848 848 "quick_cache", 849 849 "regex", ··· 851 851 "resvg", 852 852 "rustc-hash 2.1.1", 853 853 "rustls", 854 - @@ -8299,8 +8812,10 @@ 854 + @@ -8301,8 +8814,10 @@ 855 855 "rustls-pki-types", 856 856 "rustls-platform-verifier", 857 857 "serde", ··· 862 862 "servo-devtools-traits", 863 863 "servo-embedder-traits", 864 864 "servo-hyper-serde", 865 - @@ -8313,6 +8828,7 @@ 865 + @@ -8315,6 +8830,7 @@ 866 866 "servo-url", 867 867 "servo_arc", 868 868 "sha2", ··· 870 870 "time", 871 871 "tokio", 872 872 "tokio-rustls", 873 - @@ -8348,6 +8864,7 @@ 873 + @@ -8350,6 +8866,7 @@ 874 874 "rustc-hash 2.1.1", 875 875 "rustls-pki-types", 876 876 "serde", ··· 878 878 "servo-base", 879 879 "servo-config", 880 880 "servo-embedder-traits", 881 - @@ -8358,8 +8875,10 @@ 881 + @@ -8360,8 +8877,10 @@ 882 882 "servo-profile-traits", 883 883 "servo-url", 884 884 "servo_arc", ··· 889 889 "url", 890 890 "uuid", 891 891 "webrender_api", 892 - @@ -8918,6 +9437,7 @@ 892 + @@ -8920,6 +9439,7 @@ 893 893 "bpaf", 894 894 "cc", 895 895 "cfg-if", ··· 897 897 "crossbeam-channel", 898 898 "dirs", 899 899 "dpi", 900 - @@ -8932,6 +9452,7 @@ 900 + @@ -8934,6 +9454,7 @@ 901 901 "headers 0.4.1", 902 902 "hilog", 903 903 "hitrace", ··· 905 905 "image", 906 906 "ipc-channel", 907 907 "jni 0.21.1", 908 - @@ -8952,11 +9473,13 @@ 908 + @@ -8954,11 +9475,13 @@ 909 909 "ohos-window-manager-sys", 910 910 "raw-window-handle", 911 911 "rustls", ··· 919 919 "sig", 920 920 "surfman", 921 921 "tokio", 922 - @@ -9522,6 +10045,9 @@ 922 + @@ -9524,6 +10047,9 @@ 923 923 version = "1.0.2" 924 924 source = "registry+https://github.com/rust-lang/crates.io-index" 925 925 checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" ··· 929 929 930 930 [[package]] 931 931 name = "synstructure" 932 - @@ -9556,6 +10082,27 @@ 932 + @@ -9558,6 +10084,27 @@ 933 933 ] 934 934 935 935 [[package]] ··· 957 957 name = "system-deps" 958 958 version = "6.2.2" 959 959 source = "registry+https://github.com/rust-lang/crates.io-index" 960 - @@ -9594,6 +10141,12 @@ 960 + @@ -9596,6 +10143,12 @@ 961 961 ] 962 962 963 963 [[package]] ··· 970 970 name = "tar" 971 971 version = "0.4.45" 972 972 source = "registry+https://github.com/rust-lang/crates.io-index" 973 - @@ -9901,6 +10454,16 @@ 973 + @@ -9903,6 +10456,16 @@ 974 974 ] 975 975 976 976 [[package]] ··· 987 987 name = "tokio-rustls" 988 988 version = "0.26.4" 989 989 source = "registry+https://github.com/rust-lang/crates.io-index" 990 - @@ -10022,11 +10585,30 @@ 990 + @@ -10024,11 +10587,30 @@ 991 991 "futures-util", 992 992 "pin-project-lite", 993 993 "sync_wrapper", ··· 1018 1018 name = "tower-layer" 1019 1019 version = "0.3.3" 1020 1020 source = "registry+https://github.com/rust-lang/crates.io-index" 1021 - @@ -10305,6 +10887,12 @@ 1021 + @@ -10307,6 +10889,12 @@ 1022 1022 ] 1023 1023 1024 1024 [[package]] ··· 1031 1031 name = "untrusted" 1032 1032 version = "0.9.0" 1033 1033 source = "registry+https://github.com/rust-lang/crates.io-index" 1034 - @@ -10324,6 +10912,12 @@ 1034 + @@ -10326,6 +10914,12 @@ 1035 1035 ] 1036 1036 1037 1037 [[package]] ··· 1044 1044 name = "urlpattern" 1045 1045 version = "0.3.0" 1046 1046 source = "registry+https://github.com/rust-lang/crates.io-index" 1047 - @@ -11092,6 +11686,12 @@ 1047 + @@ -11094,6 +11688,12 @@ 1048 1048 ] 1049 1049 1050 1050 [[package]] ··· 1057 1057 name = "winapi" 1058 1058 version = "0.3.9" 1059 1059 source = "registry+https://github.com/rust-lang/crates.io-index" 1060 - @@ -11313,6 +11913,17 @@ 1060 + @@ -11315,6 +11915,17 @@ 1061 1061 ] 1062 1062 1063 1063 [[package]] ··· 1075 1075 name = "windows-result" 1076 1076 version = "0.2.0" 1077 1077 source = "registry+https://github.com/rust-lang/crates.io-index" 1078 - @@ -11378,6 +11989,15 @@ 1078 + @@ -11380,6 +11991,15 @@ 1079 1079 1080 1080 [[package]] 1081 1081 name = "windows-sys" ··· 1091 1091 version = "0.52.0" 1092 1092 source = "registry+https://github.com/rust-lang/crates.io-index" 1093 1093 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1094 - @@ -11429,6 +12049,21 @@ 1094 + @@ -11431,6 +12051,21 @@ 1095 1095 1096 1096 [[package]] 1097 1097 name = "windows-targets" ··· 1113 1113 version = "0.52.6" 1114 1114 source = "registry+https://github.com/rust-lang/crates.io-index" 1115 1115 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 1116 - @@ -11486,6 +12121,12 @@ 1116 + @@ -11488,6 +12123,12 @@ 1117 1117 1118 1118 [[package]] 1119 1119 name = "windows_aarch64_gnullvm" ··· 1126 1126 version = "0.52.6" 1127 1127 source = "registry+https://github.com/rust-lang/crates.io-index" 1128 1128 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 1129 - @@ -11504,6 +12145,12 @@ 1129 + @@ -11506,6 +12147,12 @@ 1130 1130 1131 1131 [[package]] 1132 1132 name = "windows_aarch64_msvc" ··· 1139 1139 version = "0.52.6" 1140 1140 source = "registry+https://github.com/rust-lang/crates.io-index" 1141 1141 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 1142 - @@ -11522,6 +12169,12 @@ 1142 + @@ -11524,6 +12171,12 @@ 1143 1143 1144 1144 [[package]] 1145 1145 name = "windows_i686_gnu" ··· 1152 1152 version = "0.52.6" 1153 1153 source = "registry+https://github.com/rust-lang/crates.io-index" 1154 1154 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 1155 - @@ -11552,6 +12205,12 @@ 1155 + @@ -11554,6 +12207,12 @@ 1156 1156 1157 1157 [[package]] 1158 1158 name = "windows_i686_msvc" ··· 1165 1165 version = "0.52.6" 1166 1166 source = "registry+https://github.com/rust-lang/crates.io-index" 1167 1167 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 1168 - @@ -11570,6 +12229,12 @@ 1168 + @@ -11572,6 +12231,12 @@ 1169 1169 1170 1170 [[package]] 1171 1171 name = "windows_x86_64_gnu" ··· 1178 1178 version = "0.52.6" 1179 1179 source = "registry+https://github.com/rust-lang/crates.io-index" 1180 1180 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 1181 - @@ -11588,6 +12253,12 @@ 1181 + @@ -11590,6 +12255,12 @@ 1182 1182 1183 1183 [[package]] 1184 1184 name = "windows_x86_64_gnullvm" ··· 1191 1191 version = "0.52.6" 1192 1192 source = "registry+https://github.com/rust-lang/crates.io-index" 1193 1193 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 1194 - @@ -11606,6 +12277,12 @@ 1194 + @@ -11608,6 +12279,12 @@ 1195 1195 1196 1196 [[package]] 1197 1197 name = "windows_x86_64_msvc" ··· 1204 1204 version = "0.52.6" 1205 1205 source = "registry+https://github.com/rust-lang/crates.io-index" 1206 1206 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 1207 - @@ -11678,6 +12355,16 @@ 1207 + @@ -11680,6 +12357,16 @@ 1208 1208 ] 1209 1209 1210 1210 [[package]]
+5 -5
patches/components/constellation/Cargo.toml.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -27,6 +27,7 @@ 4 - 3 + @@ -28,6 +28,7 @@ 5 4 [dependencies] 5 + accesskit = { workspace = true } 6 6 backtrace = { workspace = true } 7 7 +beaver-p2p = { path = "../../../crates/beaver_p2p" } 8 8 content-security-policy = { workspace = true } 9 9 crossbeam-channel = { workspace = true } 10 10 devtools_traits = { workspace = true } 11 - @@ -34,6 +35,8 @@ 11 + @@ -35,6 +36,8 @@ 12 12 euclid = { workspace = true } 13 13 fonts = { workspace = true } 14 14 ipc-channel = { workspace = true } ··· 17 17 keyboard-types = { workspace = true } 18 18 layout_api = { workspace = true } 19 19 log = { workspace = true } 20 - @@ -42,11 +45,14 @@ 20 + @@ -43,11 +46,14 @@ 21 21 net_traits = { workspace = true } 22 22 paint_api = { workspace = true } 23 23 parking_lot = { workspace = true } ··· 32 32 servo-background-hang-monitor = { workspace = true } 33 33 servo-background-hang-monitor-api = { workspace = true } 34 34 servo-base = { workspace = true } 35 - @@ -60,6 +66,8 @@ 35 + @@ -61,6 +67,8 @@ 36 36 storage_traits = { workspace = true } 37 37 stylo = { workspace = true } 38 38 stylo_traits = { workspace = true }
+59 -57
patches/components/constellation/constellation.rs.patch
··· 12 12 use embedder_traits::resources::{self, Resource}; 13 13 use embedder_traits::user_contents::{UserContentManagerId, UserContents}; 14 14 use embedder_traits::{ 15 - - AnimationState, EmbedderControlId, EmbedderControlResponse, EmbedderMsg, EmbedderProxy, 16 - - FocusSequenceNumber, InputEvent, InputEventAndId, InputEventOutcome, JSValue, 15 + - AnimationState, EmbedderControlId, EmbedderControlResponse, EmbedderProxy, FocusSequenceNumber, 16 + - GenericEmbedderProxy, InputEvent, InputEventAndId, InputEventOutcome, JSValue, 17 17 - JavaScriptEvaluationError, JavaScriptEvaluationId, KeyboardEvent, MediaSessionActionType, 18 18 - MediaSessionEvent, MediaSessionPlaybackState, MouseButton, MouseButtonAction, MouseButtonEvent, 19 19 - NewWebViewDetails, PaintHitTestResult, Theme, ViewportDetails, WebDriverCommandMsg, 20 20 - WebDriverLoadStatus, WebDriverScriptCommand, 21 21 + AnimationState, EmbedderControlId, EmbedderControlRequest, EmbedderControlResponse, 22 - + EmbedderMsg, EmbedderProxy, FocusSequenceNumber, InputEvent, InputEventAndId, 23 - + InputEventOutcome, JSValue, JavaScriptEvaluationError, JavaScriptEvaluationId, KeyboardEvent, 24 - + MediaSessionActionType, MediaSessionEvent, MediaSessionPlaybackState, MouseButton, 25 - + MouseButtonAction, MouseButtonEvent, NewWebViewDetails, PaintHitTestResult, Theme, 22 + + EmbedderMsg, EmbedderProxy, FocusSequenceNumber, GenericEmbedderProxy, InputEvent, 23 + + InputEventAndId, InputEventOutcome, JSValue, JavaScriptEvaluationError, JavaScriptEvaluationId, 24 + + KeyboardEvent, MediaSessionActionType, MediaSessionEvent, MediaSessionPlaybackState, 25 + + MouseButton, MouseButtonAction, MouseButtonEvent, NewWebViewDetails, PaintHitTestResult, Theme, 26 26 + ViewportDetails, WebDriverCommandMsg, WebDriverLoadStatus, WebDriverScriptCommand, 27 27 }; 28 28 use euclid::Size2D; ··· 48 48 }; 49 49 use servo_url::{Host, ImmutableOrigin, ServoUrl}; 50 50 use storage_traits::StorageThreads; 51 - @@ -176,6 +179,7 @@ 52 - #[cfg(feature = "webgpu")] 51 + @@ -177,6 +180,7 @@ 53 52 use webgpu_traits::{WebGPU, WebGPURequest}; 54 53 54 + use super::embedder::ConstellationToEmbedderMsg; 55 55 +use crate::atproto::AtProtoManager; 56 56 use crate::broadcastchannel::BroadcastChannels; 57 57 use crate::browsingcontext::{ 58 58 AllBrowsingContextsIterator, BrowsingContext, FullyActiveBrowsingContextsIterator, 59 - @@ -183,6 +187,7 @@ 59 + @@ -184,6 +188,7 @@ 60 60 }; 61 61 use crate::constellation_webview::ConstellationWebView; 62 62 use crate::event_loop::EventLoop; ··· 64 64 use crate::pipeline::Pipeline; 65 65 use crate::process_manager::ProcessManager; 66 66 use crate::serviceworker::ServiceWorkerUnprivilegedContent; 67 - @@ -211,6 +216,9 @@ 67 + @@ -212,6 +217,9 @@ 68 68 /// While a completion failed, another global requested to complete the transfer. 69 69 /// We are still buffering messages, and awaiting the return of the buffer from the global who failed. 70 70 CompletionRequested(MessagePortRouterId, VecDeque<PortMessageTask>), ··· 74 74 } 75 75 76 76 #[derive(Debug)] 77 - @@ -507,6 +515,25 @@ 77 + @@ -513,6 +521,25 @@ 78 78 /// to the `UserContents` need to be forwared to all the `ScriptThread`s that host 79 79 /// the relevant `WebView`. 80 80 pub(crate) user_contents_for_manager_id: FxHashMap<UserContentManagerId, UserContents>, ··· 100 100 } 101 101 102 102 /// State needed to construct a constellation. 103 - @@ -562,6 +589,9 @@ 103 + @@ -573,6 +600,9 @@ 104 104 105 105 /// The async runtime. 106 106 pub async_runtime: Box<dyn AsyncRuntime>, ··· 110 110 } 111 111 112 112 /// When we are exiting a pipeline, we can either force exiting or not. A normal exit 113 - @@ -671,7 +701,7 @@ 113 + @@ -683,7 +713,7 @@ 114 114 script_to_devtools_callback: Default::default(), 115 115 #[cfg(feature = "bluetooth")] 116 116 bluetooth_ipc_sender: state.bluetooth_thread, ··· 119 119 private_resource_threads: state.private_resource_threads, 120 120 public_storage_threads: state.public_storage_threads, 121 121 private_storage_threads: state.private_storage_threads, 122 - @@ -725,6 +755,13 @@ 122 + @@ -737,6 +767,13 @@ 123 123 pending_viewport_changes: Default::default(), 124 124 screenshot_readiness_requests: Vec::new(), 125 125 user_contents_for_manager_id: Default::default(), ··· 133 133 }; 134 134 135 135 constellation.run(); 136 - @@ -750,6 +787,18 @@ 136 + @@ -762,6 +799,18 @@ 137 137 fn clean_up_finished_script_event_loops(&mut self) { 138 138 self.event_loop_join_handles 139 139 .retain(|join_handle| !join_handle.is_finished()); ··· 152 152 self.event_loops 153 153 .retain(|event_loop| event_loop.upgrade().is_some()); 154 154 } 155 - @@ -1041,6 +1090,11 @@ 155 + @@ -1054,6 +1103,11 @@ 156 156 .get(&webview_id) 157 157 .and_then(|webview| webview.user_content_manager_id); 158 158 ··· 164 164 let new_pipeline_info = NewPipelineInfo { 165 165 parent_info: parent_pipeline_id, 166 166 new_pipeline_id, 167 - @@ -1051,6 +1105,13 @@ 167 + @@ -1064,6 +1118,13 @@ 168 168 viewport_details: initial_viewport_details, 169 169 user_content_manager_id, 170 170 theme, ··· 178 178 }; 179 179 let pipeline = match Pipeline::spawn(new_pipeline_info, event_loop, self, throttled) { 180 180 Ok(pipeline) => pipeline, 181 - @@ -1217,6 +1278,7 @@ 181 + @@ -1230,6 +1291,7 @@ 182 182 BackgroundHangMonitor(HangMonitorAlert), 183 183 Embedder(EmbedderToConstellationMessage), 184 184 FromSWManager(SWManagerMsg), ··· 186 186 RemoveProcess(usize), 187 187 } 188 188 // Get one incoming request. 189 - @@ -1237,6 +1299,15 @@ 189 + @@ -1250,6 +1312,15 @@ 190 190 sel.recv(&self.embedder_to_constellation_receiver); 191 191 sel.recv(&self.swmanager_receiver); 192 192 ··· 202 202 self.process_manager.register(&mut sel); 203 203 204 204 let request = { 205 - @@ -1265,9 +1336,13 @@ 205 + @@ -1278,9 +1349,13 @@ 206 206 .recv(&self.swmanager_receiver) 207 207 .expect("Unexpected SW channel panic in constellation") 208 208 .map(Request::FromSWManager), ··· 217 217 let _ = oper.recv(self.process_manager.receiver_at(process_index)); 218 218 Ok(Request::RemoveProcess(process_index)) 219 219 }, 220 - @@ -1293,6 +1368,9 @@ 220 + @@ -1306,6 +1381,9 @@ 221 221 Request::FromSWManager(message) => { 222 222 self.handle_request_from_swmanager(message); 223 223 }, ··· 227 227 Request::RemoveProcess(index) => self.process_manager.remove(index), 228 228 } 229 229 } 230 - @@ -1522,11 +1600,7 @@ 230 + @@ -1534,11 +1612,7 @@ 231 231 } 232 232 }, 233 233 EmbedderToConstellationMessage::PreferencesUpdated(updates) => { ··· 240 240 let _ = event_loop.send(ScriptThreadMessage::PreferencesUpdated( 241 241 updates 242 242 .iter() 243 - @@ -1553,6 +1627,18 @@ 243 + @@ -1565,6 +1639,18 @@ 244 244 EmbedderToConstellationMessage::SetAccessibilityActive(webview_id, active) => { 245 245 self.set_accessibility_active(webview_id, active); 246 246 }, ··· 259 259 } 260 260 } 261 261 262 - @@ -1750,7 +1836,13 @@ 262 + @@ -1762,7 +1848,13 @@ 263 263 return warn!("Attempt to add channel name from an unexpected origin."); 264 264 } 265 265 self.broadcast_channels ··· 274 274 }, 275 275 ScriptToConstellationMessage::RemoveBroadcastChannelNameInRouter( 276 276 router_id, 277 - @@ -1764,7 +1856,13 @@ 277 + @@ -1776,7 +1868,13 @@ 278 278 return warn!("Attempt to remove channel name from an unexpected origin."); 279 279 } 280 280 self.broadcast_channels ··· 289 289 }, 290 290 ScriptToConstellationMessage::RemoveBroadcastChannelRouter(router_id, origin) => { 291 291 if self 292 - @@ -1776,6 +1874,12 @@ 292 + @@ -1788,6 +1886,12 @@ 293 293 self.broadcast_channels 294 294 .remove_broadcast_channel_router(router_id); 295 295 }, ··· 302 302 ScriptToConstellationMessage::ScheduleBroadcast(router_id, message) => { 303 303 if self 304 304 .check_origin_against_pipeline(&source_pipeline_id, &message.origin) 305 - @@ -1785,8 +1889,15 @@ 305 + @@ -1797,8 +1901,15 @@ 306 306 "Attempt to schedule broadcast from an origin not matching the origin of the msg." 307 307 ); 308 308 } ··· 319 319 }, 320 320 ScriptToConstellationMessage::PipelineExited => { 321 321 self.handle_pipeline_exited(source_pipeline_id); 322 - @@ -1806,6 +1917,12 @@ 322 + @@ -1818,6 +1929,12 @@ 323 323 ScriptToConstellationMessage::CreateAuxiliaryWebView(load_info) => { 324 324 self.handle_script_new_auxiliary(load_info); 325 325 }, ··· 332 332 ScriptToConstellationMessage::ChangeRunningAnimationsState(animation_state) => { 333 333 self.handle_change_running_animations_state(source_pipeline_id, animation_state) 334 334 }, 335 - @@ -1972,6 +2089,29 @@ 335 + @@ -1984,6 +2101,29 @@ 336 336 new_value, 337 337 ); 338 338 }, ··· 362 362 ScriptToConstellationMessage::MediaSessionEvent(pipeline_id, event) => { 363 363 // Unlikely at this point, but we may receive events coming from 364 364 // different media sessions, so we set the active media session based 365 - @@ -1991,7 +2131,12 @@ 365 + @@ -2003,7 +2143,12 @@ 366 366 } 367 367 self.active_media_session = Some(pipeline_id); 368 - self.embedder_proxy 369 - - .send(EmbedderMsg::MediaSessionEvent(webview_id, event)); 370 - + .send(EmbedderMsg::MediaSessionEvent(webview_id, event.clone())); 368 + self.constellation_to_embedder_proxy.send( 369 + - ConstellationToEmbedderMsg::MediaSessionEvent(webview_id, event), 370 + + ConstellationToEmbedderMsg::MediaSessionEvent(webview_id, event.clone()), 371 + + ); 371 372 + // Also route to embedded webview parent iframe. 372 373 + self.handle_embedded_webview_notification( 373 374 + webview_id, 374 375 + EmbeddedWebViewEventType::MediaSessionEvent(event), 375 - + ); 376 + ); 376 377 }, 377 378 #[cfg(feature = "webgpu")] 378 - ScriptToConstellationMessage::RequestAdapter(response_sender, options, ids) => self 379 - @@ -2045,6 +2190,409 @@ 379 + @@ -2058,9 +2203,412 @@ 380 380 let _ = event_loop.send(ScriptThreadMessage::TriggerGarbageCollection); 381 381 } 382 382 }, ··· 611 611 + ScriptToConstellationMessage::AtProto(request, response) => { 612 612 + self.at_proto.process_request(request, response); 613 613 + }, 614 - + } 615 - + } 616 - + 614 + } 615 + } 616 + 617 617 + fn handle_pairing_event(&mut self, event: PairingEvent) { 618 618 + if let PairingEvent::MessageReceived { ref from, ref data } = event { 619 619 + debug!("P2P message received from {from}, {} bytes", data.len()); ··· 783 783 + if self.embedder_error_listeners.contains(&event_loop.id()) { 784 784 + let _ = event_loop.send(ScriptThreadMessage::DispatchPairingEvent(event.clone())); 785 785 + } 786 - } 787 - } 788 - 789 - @@ -2364,6 +2912,29 @@ 786 + + } 787 + + } 788 + + 789 + /// Check the origin of a message against that of the pipeline it came from. 790 + /// Note: this is still limited as a security check, 791 + /// see <https://github.com/servo/servo/issues/11722> 792 + @@ -2377,6 +2925,29 @@ 790 793 TransferState::TransferInProgress(queue) => queue.push_back(task), 791 794 TransferState::CompletionFailed(queue) => queue.push_back(task), 792 795 TransferState::CompletionRequested(_, queue) => queue.push_back(task), ··· 816 819 } 817 820 } 818 821 819 - @@ -3249,6 +3820,13 @@ 822 + @@ -3268,6 +3839,13 @@ 820 823 /// <https://html.spec.whatwg.org/multipage/#destroy-a-top-level-traversable> 821 824 fn handle_close_top_level_browsing_context(&mut self, webview_id: WebViewId) { 822 825 debug!("{webview_id}: Closing"); ··· 830 833 let browsing_context_id = BrowsingContextId::from(webview_id); 831 834 // Step 5. Remove traversable from the user agent's top-level traversable set. 832 835 let browsing_context = 833 - @@ -3525,8 +4103,27 @@ 836 + @@ -3542,8 +4120,27 @@ 834 837 opener_webview_id, 835 838 opener_pipeline_id, 836 839 response_sender, ··· 858 861 let Some((webview_id_sender, webview_id_receiver)) = generic_channel::channel() else { 859 862 warn!("Failed to create channel"); 860 863 let _ = response_sender.send(None); 861 - @@ -3626,6 +4223,397 @@ 864 + @@ -3644,6 +4241,397 @@ 862 865 }); 863 866 } 864 867 ··· 1155 1158 + self.webviews.insert( 1156 1159 + new_webview_id, 1157 1160 + ConstellationWebView::new( 1158 - + &self.embedder_proxy, 1161 + + &self.constellation_to_embedder_proxy, 1159 1162 + new_webview_id, 1160 1163 + new_pipeline_id, 1161 1164 + new_browsing_context_id, ··· 1256 1259 #[servo_tracing::instrument(skip_all)] 1257 1260 fn handle_refresh_cursor(&self, pipeline_id: PipelineId) { 1258 1261 let Some(pipeline) = self.pipelines.get(&pipeline_id) else { 1259 - @@ -4752,7 +5740,7 @@ 1262 + @@ -4771,7 +5759,7 @@ 1260 1263 } 1261 1264 1262 1265 #[servo_tracing::instrument(skip_all)] ··· 1265 1268 // Send a flat projection of the history to embedder. 1266 1269 // The final vector is a concatenation of the URLs of the past 1267 1270 // entries, the current entry and the future entries. 1268 - @@ -4855,9 +5843,23 @@ 1269 - ); 1270 - self.embedder_proxy.send(EmbedderMsg::HistoryChanged( 1271 - webview_id, 1272 - - entries, 1273 - + entries.clone(), 1274 - current_index, 1275 - )); 1276 - + 1271 + @@ -4875,9 +5863,22 @@ 1272 + self.constellation_to_embedder_proxy 1273 + .send(ConstellationToEmbedderMsg::HistoryChanged( 1274 + webview_id, 1275 + - entries, 1276 + + entries.clone(), 1277 + current_index, 1278 + )); 1277 1279 + // Notify embedded webview parent if this is an embedded webview 1278 1280 + // First send the full history for tracking can_go_back/can_go_forward 1279 1281 + self.handle_embedded_webview_notification(
+5 -5
patches/components/constellation/constellation_webview.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -56,6 +56,11 @@ 3 + @@ -57,6 +57,11 @@ 4 4 /// via [`ScriptThreadMessage::SetAccessibilityActive`] in `set_accessibility_active()` 5 5 /// and [`crate::Constellation::set_frame_tree_for_webview()`]. 6 6 pub accessibility_active: bool, ··· 12 12 } 13 13 14 14 impl ConstellationWebView { 15 - @@ -71,6 +76,22 @@ 15 + @@ -72,6 +77,22 @@ 16 16 active_top_level_pipeline_id.into(), 17 17 )); 18 18 ··· 35 35 Self { 36 36 webview_id, 37 37 user_content_manager_id, 38 - @@ -81,6 +102,7 @@ 38 + @@ -82,6 +103,7 @@ 39 39 session_history: JointSessionHistory::new(), 40 40 theme: Theme::Light, 41 41 accessibility_active: false, ··· 43 43 } 44 44 } 45 45 46 - @@ -100,12 +122,41 @@ 46 + @@ -101,12 +123,41 @@ 47 47 event: &ConstellationInputEvent, 48 48 browsing_contexts: &FxHashMap<BrowsingContextId, BrowsingContext>, 49 49 ) -> Option<PipelineId> { ··· 87 87 let browsing_context_id = if matches!(event.event.event, InputEvent::MouseLeftViewport(_)) { 88 88 self.hovered_browsing_context_id 89 89 .unwrap_or(self.focused_browsing_context_id) 90 - @@ -175,11 +226,9 @@ 90 + @@ -176,11 +227,9 @@ 91 91 92 92 if let InputEvent::MouseMove(_) = &event.event.event { 93 93 update_hovered_browsing_context(Some(pipeline.browsing_context_id), true);
+2 -2
patches/components/constellation/lib.rs.patch
··· 8 8 mod broadcastchannel; 9 9 mod browsingcontext; 10 10 mod constellation; 11 - @@ -13,6 +14,7 @@ 12 - mod constellation_webview; 11 + @@ -14,6 +15,7 @@ 12 + mod embedder; 13 13 mod event_loop; 14 14 mod logging; 15 15 +mod pairing;
+11 -11
patches/components/script/dom/document/document.rs.patch
··· 24 24 use servo_media::{ClientContextId, ServoMedia}; 25 25 use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl}; 26 26 use style::attr::AttrValue; 27 - @@ -635,6 +638,9 @@ 27 + @@ -643,6 +646,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 - @@ -882,6 +888,12 @@ 37 + @@ -890,6 +896,12 @@ 38 38 39 39 // Set the document's activity level, reflow if necessary, and suspend or resume timers. 40 40 self.activity.set(activity); ··· 47 47 let media = ServoMedia::get(); 48 48 let pipeline_id = self.window().pipeline_id(); 49 49 let client_context_id = 50 - @@ -895,6 +907,7 @@ 50 + @@ -903,6 +915,7 @@ 51 51 52 52 self.title_changed(); 53 53 self.notify_embedder_favicon(); ··· 55 55 self.dirty_all_nodes(); 56 56 self.window().resume(CanGc::from_cx(cx)); 57 57 media.resume(&client_context_id); 58 - @@ -1307,6 +1320,9 @@ 58 + @@ -1315,6 +1328,9 @@ 59 59 LoadStatus::Started, 60 60 )); 61 61 self.send_to_embedder(EmbedderMsg::Status(self.webview_id(), None)); ··· 65 65 } 66 66 }, 67 67 DocumentReadyState::Complete => { 68 - @@ -1315,6 +1331,9 @@ 68 + @@ -1323,6 +1339,9 @@ 69 69 self.webview_id(), 70 70 LoadStatus::Complete, 71 71 )); ··· 75 75 } 76 76 update_with_current_instant(&self.dom_complete); 77 77 }, 78 - @@ -1721,7 +1740,13 @@ 78 + @@ -1729,7 +1748,13 @@ 79 79 let window = self.window(); 80 80 if window.is_top_level() { 81 81 let title = self.title().map(String::from); ··· 90 90 } 91 91 } 92 92 93 - @@ -1730,6 +1755,18 @@ 93 + @@ -1738,6 +1763,18 @@ 94 94 window.send_to_embedder(msg); 95 95 } 96 96 ··· 109 109 pub(crate) fn dirty_all_nodes(&self) { 110 110 let root = match self.GetDocumentElement() { 111 111 Some(root) => root, 112 - @@ -3315,9 +3352,59 @@ 112 + @@ -3323,9 +3360,59 @@ 113 113 current_rendering_epoch, 114 114 ); 115 115 ··· 169 169 pub(crate) fn handle_no_longer_waiting_on_asynchronous_image_updates(&self) { 170 170 self.waiting_on_canvas_image_updates.set(false); 171 171 } 172 - @@ -4060,6 +4147,7 @@ 172 + @@ -4065,6 +4152,7 @@ 173 173 active_sandboxing_flag_set: Cell::new(SandboxingFlagSet::empty()), 174 174 creation_sandboxing_flag_set: Cell::new(creation_sandboxing_flag_set), 175 175 favicon: RefCell::new(None), ··· 177 177 websockets: DOMTracker::new(), 178 178 details_name_groups: Default::default(), 179 179 protocol_handler_automation_mode: Default::default(), 180 - @@ -5174,6 +5262,36 @@ 180 + @@ -5182,6 +5270,36 @@ 181 181 182 182 pub(crate) fn notify_embedder_favicon(&self) { 183 183 if let Some(ref image) = *self.favicon.borrow() { ··· 214 214 self.send_to_embedder(EmbedderMsg::NewFavicon(self.webview_id(), image.clone())); 215 215 } 216 216 } 217 - @@ -5233,6 +5351,20 @@ 217 + @@ -5241,6 +5359,20 @@ 218 218 pub(crate) fn set_css_styling_flag(&self, value: bool) { 219 219 self.css_styling_flag.set(value) 220 220 }
+8 -8
patches/components/script/dom/document/document_embedder_controls.rs.patch
··· 37 37 + HTMLSelectElement, HTMLTextAreaElement, Window, 38 38 }; 39 39 use crate::messaging::MainThreadScriptMsg; 40 - 41 - @@ -47,6 +50,7 @@ 40 + use crate::navigation::navigate; 41 + @@ -48,6 +51,7 @@ 42 42 FileInput(DomRoot<HTMLInputElement>), 43 43 Ime(DomRoot<HTMLElement>), 44 44 ContextMenu(ContextMenuNodes), ··· 46 46 } 47 47 48 48 impl ControlElement { 49 - @@ -57,6 +61,7 @@ 49 + @@ -58,6 +62,7 @@ 50 50 ControlElement::FileInput(element) => element.upcast::<Node>(), 51 51 ControlElement::Ime(element) => element.upcast::<Node>(), 52 52 ControlElement::ContextMenu(context_menu_nodes) => &context_menu_nodes.node, ··· 54 54 } 55 55 } 56 56 } 57 - @@ -129,36 +134,74 @@ 57 + @@ -130,36 +135,74 @@ 58 58 EmbedderControlRequest::SelectElement(..) | 59 59 EmbedderControlRequest::ColorPicker(..) | 60 60 EmbedderControlRequest::InputMethod(..) | ··· 157 157 }, 158 158 } 159 159 160 - @@ -177,10 +220,65 @@ 160 + @@ -178,10 +221,65 @@ 161 161 pipeline_id: self.window.pipeline_id(), 162 162 index: index.0, 163 163 }; ··· 225 225 } 226 226 227 227 pub(crate) fn handle_embedder_control_response( 228 - @@ -226,6 +324,10 @@ 228 + @@ -227,6 +325,10 @@ 229 229 ) => { 230 230 context_menu_nodes.handle_context_menu_action(action, cx); 231 231 }, ··· 236 236 (_, _) => unreachable!( 237 237 "The response to a form control should always match it's originating type." 238 238 ), 239 - @@ -232,6 +334,36 @@ 239 + @@ -233,6 +335,36 @@ 240 240 } 241 241 } 242 242 ··· 273 273 pub(crate) fn show_context_menu(&self, hit_test_result: &HitTestResult) { 274 274 { 275 275 let mut visible_elements = self.visible_elements.borrow_mut(); 276 - @@ -425,8 +557,11 @@ 276 + @@ -426,8 +558,11 @@ 277 277 let Some(browsing_context) = document.browsing_context() else { 278 278 return; 279 279 };
+1 -1
patches/components/script/dom/html/htmlformelement.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -870,7 +870,7 @@ 3 + @@ -871,7 +871,7 @@ 4 4 // form's node navigable, and noopener. 5 5 let source = doc.browsing_context().unwrap(); 6 6 let (maybe_chosen, _new) =
+6 -6
patches/components/script/dom/mod.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -214,6 +214,7 @@ 4 - #[expect(dead_code)] 5 - pub(crate) mod abstractrange; 3 + @@ -216,6 +216,7 @@ 6 4 pub(crate) mod activation; 5 + pub(crate) mod animations; 6 + pub(crate) use self::animations::*; 7 7 +pub(crate) mod atproto; 8 8 pub(crate) mod attr; 9 9 pub(crate) mod audio; 10 10 pub(crate) use self::audio::*; 11 - @@ -272,6 +273,7 @@ 11 + @@ -273,6 +274,7 @@ 12 12 pub(crate) mod elementinternals; 13 13 pub(crate) mod encoding; 14 14 pub(crate) use self::encoding::*; ··· 16 16 pub(crate) mod event; 17 17 pub(crate) use self::event::*; 18 18 pub(crate) mod execcommand; 19 - @@ -295,6 +297,7 @@ 19 + @@ -296,6 +298,7 @@ 20 20 pub(crate) use self::indexeddb::*; 21 21 pub(crate) mod intersectionobserver; 22 22 pub(crate) mod intersectionobserverentry; ··· 24 24 pub(crate) mod location; 25 25 pub(crate) mod media; 26 26 pub(crate) use self::media::*; 27 - @@ -316,6 +319,10 @@ 27 + @@ -317,6 +320,10 @@ 28 28 pub(crate) mod origin; 29 29 pub(crate) mod paintsize; 30 30 pub(crate) mod paintworkletglobalscope;
+2 -2
patches/components/script/dom/window.rs.patch
··· 157 157 cursor: result.cursor, 158 158 point_in_node: result.point_in_target, 159 159 point_in_frame, 160 - @@ -3755,6 +3827,8 @@ 160 + @@ -3663,6 +3735,8 @@ 161 161 player_context: WindowGLContext, 162 162 #[cfg(feature = "webgpu")] gpu_id_hub: Arc<IdentityHub>, 163 163 inherited_secure_context: Option<bool>, ··· 166 166 theme: Theme, 167 167 weak_script_thread: Weak<ScriptThread>, 168 168 ) -> DomRoot<Self> { 169 - @@ -3781,6 +3855,8 @@ 169 + @@ -3689,6 +3763,8 @@ 170 170 gpu_id_hub, 171 171 inherited_secure_context, 172 172 unminify_js,
+8 -8
patches/components/script/dom/windowproxy.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -298,6 +298,7 @@ 3 + @@ -299,6 +299,7 @@ 4 4 &self, 5 5 name: DOMString, 6 6 noopener: bool, ··· 8 8 ) -> Option<DomRoot<WindowProxy>> { 9 9 let (response_sender, response_receiver) = generic_channel::channel().unwrap(); 10 10 let window = self 11 - @@ -333,6 +334,7 @@ 11 + @@ -334,6 +335,7 @@ 12 12 opener_webview_id: window.webview_id(), 13 13 opener_pipeline_id: self.currently_active.get().unwrap(), 14 14 response_sender, ··· 16 16 }; 17 17 let constellation_msg = ScriptToConstellationMessage::CreateAuxiliaryWebView(load_info); 18 18 window.send_to_constellation(constellation_msg); 19 - @@ -351,6 +353,8 @@ 19 + @@ -352,6 +354,8 @@ 20 20 // Use the current `WebView`'s theme initially, but the embedder may 21 21 // change this later. 22 22 theme: window.theme(), ··· 25 25 }; 26 26 27 27 with_script_thread(|script_thread| { 28 - @@ -503,14 +507,32 @@ 28 + @@ -504,14 +508,32 @@ 29 29 // (TODO) Step 11. Let referrerPolicy be the empty string. 30 30 // (TODO) Step 12. If noreferrer is true, then set referrerPolicy to "no-referrer". 31 31 ··· 62 62 // TODO Step 15.2, Set up browsing context features for targetNavigable's 63 63 // active browsing context given tokenizedFeatures. 64 64 let target_document = match chosen.document() { 65 - @@ -525,16 +547,12 @@ 65 + @@ -526,16 +548,12 @@ 66 66 let target_window = target_document.window(); 67 67 // Step 15.3 and 15.4 will have happened elsewhere, 68 68 // since we've created a new browsing context and loaded it with about:blank. ··· 80 80 let referrer = if noreferrer { 81 81 Referrer::NoReferrer 82 82 } else { 83 - @@ -598,6 +616,7 @@ 83 + @@ -605,6 +623,7 @@ 84 84 &self, 85 85 name: DOMString, 86 86 noopener: bool, ··· 88 88 ) -> (Option<DomRoot<WindowProxy>>, bool) { 89 89 match name.to_lowercase().as_ref() { 90 90 "" | "_self" => { 91 - @@ -615,7 +634,10 @@ 91 + @@ -622,7 +641,10 @@ 92 92 // Step 5 93 93 (Some(DomRoot::from_ref(self.top())), false) 94 94 }, ··· 100 100 _ => { 101 101 // Step 6. 102 102 // TODO: expand the search to all 'familiar' bc, 103 - @@ -623,7 +645,10 @@ 103 + @@ -630,7 +652,10 @@ 104 104 // See https://html.spec.whatwg.org/multipage/#familiar-with 105 105 match ScriptThread::find_window_proxy_by_name(&name) { 106 106 Some(proxy) => (Some(proxy), false),
+1 -1
patches/components/script/links.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -434,7 +434,7 @@ 3 + @@ -435,7 +435,7 @@ 4 4 let source = document.browsing_context().unwrap(); 5 5 let (maybe_chosen, history_handling) = match target_attribute_value { 6 6 Some(name) => {
+2 -2
patches/components/script/navigation.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -169,6 +169,10 @@ 3 + @@ -177,6 +177,10 @@ 4 4 /// The [`Theme`] to use for this page, once it loads. 5 5 #[no_trace] 6 6 pub(crate) theme: Theme, ··· 11 11 } 12 12 13 13 impl InProgressLoad { 14 - @@ -191,6 +195,8 @@ 14 + @@ -199,6 +203,8 @@ 15 15 url_list: vec![url], 16 16 user_content_manager_id: new_pipeline_info.user_content_manager_id, 17 17 theme: new_pipeline_info.theme,
+11 -11
patches/components/script/script_thread.rs.patch
··· 40 40 use crate::dom::bindings::codegen::Bindings::NavigatorBinding::NavigatorMethods; 41 41 use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; 42 42 use crate::dom::bindings::conversions::{ 43 - @@ -133,9 +136,13 @@ 43 + @@ -132,9 +135,13 @@ 44 44 RenderingUpdateReason, 45 45 }; 46 46 use crate::dom::element::Element; ··· 54 54 use crate::dom::servoparser::{ParserContext, ServoParser}; 55 55 use crate::dom::types::DebuggerGlobalScope; 56 56 #[cfg(feature = "webgpu")] 57 - @@ -1977,11 +1984,22 @@ 57 + @@ -1917,11 +1924,22 @@ 58 58 self.handle_refresh_cursor(pipeline_id); 59 59 }, 60 60 ScriptThreadMessage::PreferencesUpdated(updates) => { ··· 81 81 }, 82 82 ScriptThreadMessage::ForwardKeyboardScroll(pipeline_id, scroll) => { 83 83 if let Some(document) = self.documents.borrow().find_document(pipeline_id) { 84 - @@ -2022,6 +2040,35 @@ 84 + @@ -1962,6 +1980,35 @@ 85 85 ScriptThreadMessage::TriggerGarbageCollection => unsafe { 86 86 JS_GC(*GlobalScope::get_cx(), GCReason::API); 87 87 }, ··· 117 117 } 118 118 } 119 119 120 - @@ -3062,6 +3109,9 @@ 120 + @@ -3002,6 +3049,9 @@ 121 121 .documents 122 122 .borrow() 123 123 .find_iframe(parent_pipeline_id, browsing_context_id); ··· 127 127 if let Some(frame_element) = frame_element { 128 128 frame_element.update_pipeline_id(new_pipeline_id, reason, cx); 129 129 } 130 - @@ -3081,6 +3131,7 @@ 130 + @@ -3021,6 +3071,7 @@ 131 131 // is no need to pass along existing opener information that 132 132 // will be discarded. 133 133 None, ··· 135 135 ); 136 136 } 137 137 } 138 - @@ -3359,6 +3410,155 @@ 138 + @@ -3299,6 +3350,155 @@ 139 139 } 140 140 } 141 141 ··· 291 291 fn ask_constellation_for_top_level_info( 292 292 &self, 293 293 sender_webview_id: WebViewId, 294 - @@ -3472,7 +3672,13 @@ 294 + @@ -3412,7 +3612,13 @@ 295 295 self.senders.pipeline_to_embedder_sender.clone(), 296 296 self.senders.constellation_sender.clone(), 297 297 incomplete.pipeline_id, ··· 306 306 incomplete.viewport_details, 307 307 origin.clone(), 308 308 final_url.clone(), 309 - @@ -3494,6 +3700,8 @@ 309 + @@ -3434,6 +3640,8 @@ 310 310 #[cfg(feature = "webgpu")] 311 311 self.gpu_id_hub.clone(), 312 312 incomplete.load_data.inherited_secure_context, ··· 315 315 incomplete.theme, 316 316 self.this.clone(), 317 317 ); 318 - @@ -3517,6 +3725,7 @@ 318 + @@ -3457,6 +3665,7 @@ 319 319 incomplete.webview_id, 320 320 incomplete.parent_info, 321 321 incomplete.opener, ··· 323 323 ); 324 324 if window_proxy.parent().is_some() { 325 325 // https://html.spec.whatwg.org/multipage/#navigating-across-documents:delaying-load-events-mode-2 326 - @@ -4331,6 +4540,24 @@ 326 + @@ -4271,6 +4480,24 @@ 327 327 document.event_handler().handle_refresh_cursor(); 328 328 } 329 329 ··· 348 348 pub(crate) fn is_servo_privileged(url: ServoUrl) -> bool { 349 349 with_script_thread(|script_thread| script_thread.privileged_urls.contains(&url)) 350 350 } 351 - @@ -4375,7 +4602,7 @@ 351 + @@ -4315,7 +4542,7 @@ 352 352 can_gc: CanGc, 353 353 ) { 354 354 let Some(window) = self.documents.borrow().find_window(pipeline_id) else {
+13 -13
patches/components/servo/servo.rs.patch
··· 17 17 #[cfg(all( 18 18 not(target_os = "windows"), 19 19 not(target_os = "ios"), 20 - @@ -229,9 +230,7 @@ 20 + @@ -235,9 +236,7 @@ 21 21 } 22 22 23 23 if self.constellation_proxy.disconnected() { ··· 28 28 } 29 29 30 30 self.paint.borrow_mut().perform_updates(); 31 - @@ -283,10 +282,39 @@ 31 + @@ -296,10 +295,39 @@ 32 32 33 33 fn handle_delegate_errors(&self) { 34 34 while let Some(error) = self.servo_errors.try_recv() { ··· 69 69 fn clean_up_destroyed_webview_handles(&self) { 70 70 // Remove any webview handles that have been destroyed and would not be upgradable. 71 71 // Note that `retain` is O(capacity) because it visits empty buckets, so it may be worth 72 - @@ -444,6 +472,11 @@ 73 - webview.request_create_new(response_sender); 72 + @@ -440,6 +468,11 @@ 73 + ); 74 74 } 75 75 }, 76 76 + EmbedderMsg::AllowOpeningEmbeddedWebView(webview_id, response_sender) => { ··· 78 78 + webview.request_create_embedded(response_sender); 79 79 + } 80 80 + }, 81 - EmbedderMsg::WebViewClosed(webview_id) => { 81 + EmbedderMsg::AllowUnload(webview_id, response_sender) => { 82 82 if let Some(webview) = self.get_webview_handle(webview_id) { 83 - webview.delegate().notify_closed(webview); 84 - @@ -596,10 +629,7 @@ 83 + let request = AllowOrDenyRequest::new( 84 + @@ -538,10 +571,7 @@ 85 85 .delegate 86 86 .borrow() 87 87 .notify_devtools_server_started(port, token), ··· 93 93 }, 94 94 EmbedderMsg::RequestDevtoolsConnection(response_sender) => { 95 95 self.delegate 96 - @@ -729,6 +759,47 @@ 96 + @@ -666,6 +696,47 @@ 97 97 .notify_accessibility_tree_update(webview, tree_update); 98 98 } 99 99 }, ··· 140 140 + }, 141 141 } 142 142 } 143 - } 144 - @@ -867,6 +938,7 @@ 143 + 144 + @@ -917,6 +988,7 @@ 145 145 async_runtime, 146 146 public_storage_threads.clone(), 147 147 private_storage_threads.clone(), ··· 149 149 ); 150 150 151 151 if opts::get().multiprocess { 152 - @@ -963,6 +1035,14 @@ 152 + @@ -1014,6 +1086,14 @@ 153 153 self.0.site_data_manager.borrow() 154 154 } 155 155 ··· 164 164 pub(crate) fn paint<'a>(&'a self) -> Ref<'a, Paint> { 165 165 self.0.paint.borrow() 166 166 } 167 - @@ -1064,6 +1144,7 @@ 167 + @@ -1116,6 +1196,7 @@ 168 168 async_runtime: Box<dyn net_traits::AsyncRuntime>, 169 169 public_storage_threads: StorageThreads, 170 170 private_storage_threads: StorageThreads, ··· 172 172 ) { 173 173 // Global configuration options, parsed from the command line. 174 174 let opts = opts::get(); 175 - @@ -1105,6 +1186,7 @@ 175 + @@ -1158,6 +1239,7 @@ 176 176 wgpu_image_map: paint.webgpu_image_map(), 177 177 async_runtime, 178 178 privileged_urls,
+10 -10
patches/components/shared/embedder/lib.rs.patch
··· 96 96 /// Messages towards the embedder. 97 97 #[derive(Deserialize, IntoStaticStr, Serialize)] 98 98 pub enum EmbedderMsg { 99 - @@ -456,6 +501,21 @@ 99 + @@ -452,6 +497,21 @@ 100 + ProtocolHandlerUpdateRegistration, 101 + GenericSender<AllowOrDeny>, 100 102 ), 101 - /// Whether or not to allow script to open a new tab/browser 102 - AllowOpeningWebView(WebViewId, GenericSender<Option<NewWebViewDetails>>), 103 103 + /// Whether or not to allow an iframe with "embed" attribute to create an embedded webview. 104 104 + AllowOpeningEmbeddedWebView(WebViewId, GenericSender<Option<NewWebViewDetails>>), 105 105 + /// An embedded webview has opened a new embedded webview via `window.open()`. ··· 115 115 + PipelineId, 116 116 + ServoUrl, 117 117 + ), 118 - /// A webview was destroyed. 119 - WebViewClosed(WebViewId), 120 - /// A webview potentially gained focus for keyboard events. 121 - @@ -544,6 +604,24 @@ 122 - AccessibilityTreeIdChanged(WebViewId, TreeId), 118 + /// Wether or not to unload a document 119 + AllowUnload(WebViewId, GenericSender<AllowOrDeny>), 120 + /// Inform embedder to clear the clipboard 121 + @@ -509,6 +569,24 @@ 122 + InputEventsHandled(WebViewId, Vec<InputEventOutcome>), 123 123 /// Send the embedder an accessibility tree update. 124 124 AccessibilityTreeUpdate(WebViewId, TreeUpdate), 125 125 + /// Request from web content (via `navigator.embedder.openNewOSWindow()`) to open a new ··· 143 143 } 144 144 145 145 impl Debug for EmbedderMsg { 146 - @@ -1100,6 +1178,54 @@ 146 + @@ -1065,6 +1143,54 @@ 147 147 WebViewDoesNotExist, 148 148 } 149 149 ··· 198 198 #[derive(Clone, Copy, Debug, Deserialize, Serialize)] 199 199 pub struct RgbColor { 200 200 pub red: u8, 201 - @@ -1146,3 +1272,26 @@ 201 + @@ -1111,3 +1237,26 @@ 202 202 pub viewport_details: ViewportDetails, 203 203 pub user_content_manager_id: Option<UserContentManagerId>, 204 204 }