diff --git a/Cargo.lock b/Cargo.lock index 1719d55..bd67107 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,6 +48,17 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "ahash" version = "0.8.11" @@ -302,7 +313,7 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "background_hang_monitor" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "background_hang_monitor_api", "backtrace", @@ -320,7 +331,7 @@ dependencies = [ [[package]] name = "background_hang_monitor_api" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "ipc-channel", @@ -350,7 +361,7 @@ dependencies = [ [[package]] name = "base" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "crossbeam-channel", "ipc-channel", @@ -465,7 +476,7 @@ dependencies = [ [[package]] name = "bluetooth" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "bitflags 2.6.0", "bluetooth_traits", @@ -481,7 +492,7 @@ dependencies = [ [[package]] name = "bluetooth_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "embedder_traits", "ipc-channel", @@ -605,7 +616,7 @@ dependencies = [ [[package]] name = "canvas" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "app_units", "bitflags 2.6.0", @@ -644,7 +655,7 @@ dependencies = [ [[package]] name = "canvas_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "crossbeam-channel", @@ -751,6 +762,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clang-sys" version = "1.8.0" @@ -846,7 +867,7 @@ dependencies = [ [[package]] name = "compositing_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "crossbeam-channel", @@ -876,7 +897,7 @@ dependencies = [ [[package]] name = "constellation" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "background_hang_monitor", "background_hang_monitor_api", @@ -1170,7 +1191,7 @@ checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" [[package]] name = "deny_public_fields" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "syn", "synstructure", @@ -1212,7 +1233,7 @@ dependencies = [ [[package]] name = "devtools" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "chrono", @@ -1235,7 +1256,7 @@ dependencies = [ [[package]] name = "devtools_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "bitflags 2.6.0", @@ -1362,7 +1383,7 @@ dependencies = [ [[package]] name = "dom_struct" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "quote", "syn", @@ -1371,7 +1392,7 @@ dependencies = [ [[package]] name = "domobject_derive" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "proc-macro2", "quote", @@ -1428,7 +1449,7 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embedder_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "cfg-if", @@ -1657,7 +1678,7 @@ dependencies = [ [[package]] name = "fonts" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "app_units", "atomic_refcell", @@ -1682,7 +1703,9 @@ dependencies = [ "log", "malloc_size_of", "malloc_size_of_derive", + "memmap2", "net_traits", + "num-traits", "parking_lot", "range", "serde", @@ -1710,7 +1733,7 @@ dependencies = [ [[package]] name = "fonts_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "ipc-channel", "malloc_size_of", @@ -2355,7 +2378,7 @@ dependencies = [ [[package]] name = "hyper_serde" version = "0.13.2" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "cookie 0.18.1", "headers", @@ -2870,6 +2893,15 @@ dependencies = [ "serde", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "io-surface" version = "0.15.1" @@ -2983,7 +3015,7 @@ dependencies = [ [[package]] name = "jstraceable_derive" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "proc-macro2", "syn", @@ -3021,7 +3053,7 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "layout_2020" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "app_units", "atomic_refcell", @@ -3067,7 +3099,7 @@ dependencies = [ [[package]] name = "layout_thread_2020" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "app_units", "base", @@ -3324,7 +3356,7 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "media" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "euclid", "fnv", @@ -3384,7 +3416,7 @@ dependencies = [ [[package]] name = "metrics" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "fonts_traits", @@ -3507,7 +3539,7 @@ dependencies = [ [[package]] name = "naga" version = "22.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3d584f99edfc57055000fdc88c3131f5bacf3ee7#3d584f99edfc57055000fdc88c3131f5bacf3ee7" +source = "git+https://github.com/gfx-rs/wgpu?rev=2b15a2b24b69e105ebdbb5e8a859e2df75e441c1#2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" dependencies = [ "arrayvec", "bit-set", @@ -3567,7 +3599,7 @@ dependencies = [ [[package]] name = "net" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "async-compression", "async-recursion", @@ -3628,7 +3660,7 @@ dependencies = [ [[package]] name = "net_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "content-security-policy", @@ -4271,7 +4303,7 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pixels" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "euclid", "image 0.24.9", @@ -4376,7 +4408,7 @@ dependencies = [ [[package]] name = "profile" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "ipc-channel", @@ -4394,7 +4426,7 @@ dependencies = [ [[package]] name = "profile_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "crossbeam-channel", @@ -4481,7 +4513,7 @@ dependencies = [ [[package]] name = "range" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "malloc_size_of", "malloc_size_of_derive", @@ -4731,8 +4763,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "script" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ + "aes", "app_units", "arrayvec", "atomic_refcell", @@ -4832,7 +4865,7 @@ dependencies = [ [[package]] name = "script_layout_interface" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "app_units", "atomic_refcell", @@ -4867,7 +4900,7 @@ dependencies = [ [[package]] name = "script_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "background_hang_monitor_api", "base", @@ -5118,7 +5151,7 @@ dependencies = [ [[package]] name = "servo_allocator" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "libc", "tikv-jemalloc-sys", @@ -5147,7 +5180,7 @@ dependencies = [ [[package]] name = "servo_config" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "dirs", "embedder_traits", @@ -5167,7 +5200,7 @@ dependencies = [ [[package]] name = "servo_config_plugins" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "itertools 0.13.0", "proc-macro2", @@ -5178,7 +5211,7 @@ dependencies = [ [[package]] name = "servo_geometry" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "app_units", "euclid", @@ -5190,9 +5223,11 @@ dependencies = [ [[package]] name = "servo_rand" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "log", + "malloc_size_of", + "malloc_size_of_derive", "rand", "rand_core", "rand_isaac", @@ -5202,7 +5237,7 @@ dependencies = [ [[package]] name = "servo_url" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "malloc_size_of", "malloc_size_of_derive", @@ -5641,7 +5676,7 @@ dependencies = [ [[package]] name = "task_info" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "cc", ] @@ -6549,7 +6584,7 @@ dependencies = [ [[package]] name = "webdriver_server" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "base64", @@ -6577,7 +6612,7 @@ dependencies = [ [[package]] name = "webgpu" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "arrayvec", "base", @@ -6666,7 +6701,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.0.1" -source = "git+https://github.com/servo/servo.git?rev=f8933a5#f8933a57353aeca14a6cbc60b3cb0cf98cab6c5d" +source = "git+https://github.com/servo/servo.git?rev=fc0835b#fc0835bae3dc28b17e6002e0594d6112517ff61d" dependencies = [ "base", "crossbeam-channel", @@ -6714,7 +6749,7 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu-core" version = "22.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3d584f99edfc57055000fdc88c3131f5bacf3ee7#3d584f99edfc57055000fdc88c3131f5bacf3ee7" +source = "git+https://github.com/gfx-rs/wgpu?rev=2b15a2b24b69e105ebdbb5e8a859e2df75e441c1#2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" dependencies = [ "arrayvec", "bit-vec", @@ -6739,7 +6774,7 @@ dependencies = [ [[package]] name = "wgpu-hal" version = "22.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3d584f99edfc57055000fdc88c3131f5bacf3ee7#3d584f99edfc57055000fdc88c3131f5bacf3ee7" +source = "git+https://github.com/gfx-rs/wgpu?rev=2b15a2b24b69e105ebdbb5e8a859e2df75e441c1#2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" dependencies = [ "android_system_properties", "arrayvec", @@ -6747,6 +6782,7 @@ dependencies = [ "bit-set", "bitflags 2.6.0", "block", + "bytemuck", "cfg_aliases 0.1.1", "core-graphics-types", "glow", @@ -6781,7 +6817,7 @@ dependencies = [ [[package]] name = "wgpu-types" version = "22.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3d584f99edfc57055000fdc88c3131f5bacf3ee7#3d584f99edfc57055000fdc88c3131f5bacf3ee7" +source = "git+https://github.com/gfx-rs/wgpu?rev=2b15a2b24b69e105ebdbb5e8a859e2df75e441c1#2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" dependencies = [ "bitflags 2.6.0", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index 24b8ecb..c8b69a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,28 +63,28 @@ sparkle = "0.1.26" thiserror = "1.0" winit = { version = "0.30", features = ["rwh_06"] } # Servo repo crates -base = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -bluetooth = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -bluetooth_traits = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -canvas = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -compositing_traits = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -constellation = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -devtools = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -embedder_traits = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -fonts = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -layout_thread_2020 = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -media = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -net = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -profile = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -profile_traits = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -script = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -script_traits = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -servo_config = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -servo_geometry = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -servo_url = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -webdriver_server = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -webrender_traits = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } -webgpu = { git = "https://github.com/servo/servo.git", rev = "f8933a5" } +base = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +bluetooth = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +bluetooth_traits = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +canvas = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +compositing_traits = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +constellation = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +devtools = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +embedder_traits = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +fonts = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +layout_thread_2020 = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +media = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +net = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +profile = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +profile_traits = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +script = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +script_traits = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +servo_config = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +servo_geometry = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +servo_url = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +webdriver_server = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +webrender_traits = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } +webgpu = { git = "https://github.com/servo/servo.git", rev = "fc0835b" } # Servo org crates servo-media = { git = "https://github.com/servo/media" } servo-media-dummy = { git = "https://github.com/servo/media" } diff --git a/resources/prefs.json b/resources/prefs.json index 2204bca..6c24b64 100644 --- a/resources/prefs.json +++ b/resources/prefs.json @@ -7,6 +7,7 @@ "dom.canvas_capture.enabled": false, "dom.canvas_text.enabled": true, "dom.compositionevent.enabled": false, + "dom.crypto.subtle.enabled": false, "dom.customelements.enabled": true, "dom.document.dblclick_dist": 1, "dom.document.dblclick_timeout": 300, diff --git a/src/compositor.rs b/src/compositor.rs index b4608e6..7ef7121 100644 --- a/src/compositor.rs +++ b/src/compositor.rs @@ -9,7 +9,7 @@ use base::id::{PipelineId, TopLevelBrowsingContextId}; use base::{Epoch, WebRenderEpochToU16}; use compositing_traits::{ CompositionPipeline, CompositorMsg, CompositorProxy, CompositorReceiver, ConstellationMsg, - ForwardedToCompositorMsg, SendableFrameTree, + SendableFrameTree, }; use crossbeam_channel::Sender; use embedder_traits::Cursor; @@ -41,8 +41,7 @@ use webrender_api::{ }; use webrender_traits::display_list::{HitTestInfo, ScrollTree}; use webrender_traits::{ - CanvasToCompositorMsg, CompositorHitTestResult, FontToCompositorMsg, ImageUpdate, - NetToCompositorMsg, ScriptToCompositorMsg, SerializedImageUpdate, UntrustedNodeAddress, + CompositorHitTestResult, CrossProcessCompositorMessage, ImageUpdate, UntrustedNodeAddress }; use winit::window::WindowId; @@ -571,33 +570,9 @@ impl IOCompositor { self.pending_paint_metrics.insert(pipeline_id, epoch); } - CompositorMsg::GetClientWindow(req) => { - // TODO get real size - if let Err(e) = req.send((self.viewport, Point2D::new(0, 0))) { - warn!("Sending response to get client window failed ({:?}).", e); - } - } - - CompositorMsg::GetScreenSize(req) => { - // TODO get real size - if let Err(e) = req.send(self.viewport) { - warn!("Sending response to get screen size failed ({:?}).", e); - } - } - - CompositorMsg::GetScreenAvailSize(req) => { - // TODO get real size - if let Err(e) = req.send(self.viewport) { - warn!( - "Sending response to get screen avail size failed ({:?}).", - e - ); - } - } - - CompositorMsg::Forwarded(msg) => { - self.handle_webrender_message(msg); - } + CompositorMsg::CrossProcess(cross_proces_message) => { + self.handle_cross_process_message(cross_proces_message); + }, } true @@ -605,11 +580,9 @@ impl IOCompositor { /// Accept messages from content processes that need to be relayed to the WebRender /// instance in the parent process. - fn handle_webrender_message(&mut self, msg: ForwardedToCompositorMsg) { + fn handle_cross_process_message(&mut self, msg: CrossProcessCompositorMessage) { match msg { - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::SendInitialTransaction( - pipeline, - )) => { + CrossProcessCompositorMessage::SendInitialTransaction(pipeline) => { let mut txn = Transaction::new(); txn.set_display_list(WebRenderEpoch(0), (pipeline, Default::default())); self.generate_frame(&mut txn, RenderReasons::SCENE); @@ -617,11 +590,11 @@ impl IOCompositor { .send_transaction(self.webrender_document, txn); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::SendScrollNode( + CrossProcessCompositorMessage::SendScrollNode( pipeline_id, point, external_scroll_id, - )) => { + ) => { let pipeline_id = pipeline_id.into(); let pipeline_details = match self.pipeline_details.get_mut(&pipeline_id) { Some(details) => details, @@ -653,11 +626,11 @@ impl IOCompositor { .send_transaction(self.webrender_document, txn); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::SendDisplayList { + CrossProcessCompositorMessage::SendDisplayList { display_list_info, display_list_descriptor, display_list_receiver, - }) => { + } => { // This must match the order from the sender, currently in `shared/script/lib.rs`. let items_data = match display_list_receiver.recv() { Ok(display_list_data) => display_list_data, @@ -707,12 +680,7 @@ impl IOCompositor { .send_transaction(self.webrender_document, transaction); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::HitTest( - pipeline, - point, - flags, - sender, - )) => { + CrossProcessCompositorMessage::HitTest(pipeline, point, flags, sender) => { // When a display list is sent to WebRender, it starts scene building in a // separate thread and then that display list is available for hit testing. // Without flushing scene building, any hit test we do might be done against @@ -729,55 +697,48 @@ impl IOCompositor { let _ = sender.send(result); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::GenerateImageKey(sender)) - | ForwardedToCompositorMsg::Net(NetToCompositorMsg::GenerateImageKey(sender)) => { + CrossProcessCompositorMessage::GenerateImageKey(sender) => { let _ = sender.send(self.webrender_api.generate_image_key()); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::UpdateImages(updates)) => { + CrossProcessCompositorMessage::UpdateImages(updates) => { let mut txn = Transaction::new(); for update in updates { match update { - SerializedImageUpdate::AddImage(key, desc, data) => { - match data.to_image_data() { - Ok(data) => txn.add_image(key, desc, data, None), - Err(e) => warn!("error when sending image data: {:?}", e), - } - } - SerializedImageUpdate::DeleteImage(key) => txn.delete_image(key), - SerializedImageUpdate::UpdateImage(key, desc, data) => { - match data.to_image_data() { - Ok(data) => txn.update_image(key, desc, data, &DirtyRect::All), - Err(e) => warn!("error when sending image data: {:?}", e), - } - } + ImageUpdate::AddImage(key, desc, data) => { + txn.add_image(key, desc, data.into(), None) + }, + ImageUpdate::DeleteImage(key) => txn.delete_image(key), + ImageUpdate::UpdateImage(key, desc, data) => { + txn.update_image(key, desc, data.into(), &DirtyRect::All) + }, } } self.webrender_api .send_transaction(self.webrender_document, txn); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::AddFont( - font_key, - data, - index, - )) => { + CrossProcessCompositorMessage::AddFont(font_key, data, index) => { self.add_font(font_key, index, data); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::AddFontInstance( + CrossProcessCompositorMessage::AddSystemFont(font_key, native_handle) => { + let mut transaction = Transaction::new(); + transaction.add_native_font(font_key, native_handle); + self.webrender_api + .send_transaction(self.webrender_document, transaction); + }, + + CrossProcessCompositorMessage::AddFontInstance( font_instance_key, font_key, size, flags, - )) => { + ) => { self.add_font_instance(font_instance_key, font_key, size, flags); } - ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::RemoveFonts( - keys, - instance_keys, - )) => { + CrossProcessCompositorMessage::RemoveFonts(keys, instance_keys) => { let mut transaction = Transaction::new(); for instance in instance_keys.into_iter() { @@ -791,11 +752,18 @@ impl IOCompositor { .send_transaction(self.webrender_document, transaction); } - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::GenerateKeys( + CrossProcessCompositorMessage::AddImage(key, desc, data) => { + let mut txn = Transaction::new(); + txn.add_image(key, desc, data.into(), None); + self.webrender_api + .send_transaction(self.webrender_document, txn); + } + + CrossProcessCompositorMessage::GenerateFontKeys( number_of_font_keys, number_of_font_instance_keys, result_sender, - )) => { + ) => { let font_keys = (0..number_of_font_keys) .map(|_| self.webrender_api.generate_font_key()) .collect(); @@ -805,59 +773,25 @@ impl IOCompositor { let _ = result_sender.send((font_keys, font_instance_keys)); } - ForwardedToCompositorMsg::Net(NetToCompositorMsg::AddImage(key, desc, data)) => { - let mut txn = Transaction::new(); - txn.add_image(key, desc, data, None); - self.webrender_api - .send_transaction(self.webrender_document, txn); - } - - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::AddFontInstance( - font_instance_key, - font_key, - size, - flags, - )) => { - self.add_font_instance(font_instance_key, font_key, size, flags); - } - - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::AddFont( - font_key, - index, - data, - )) => { - self.add_font(font_key, index, data); - } - - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::AddSystemFont( - font_key, - native_handle, - )) => { - let mut transaction = Transaction::new(); - transaction.add_native_font(font_key, native_handle); - self.webrender_api - .send_transaction(self.webrender_document, transaction); - } + CrossProcessCompositorMessage::GetClientWindowRect(req) => { + if let Err(e) = req.send(self.viewport.into()) { + warn!("Sending response to get client window failed ({:?}).", e); + } + }, - ForwardedToCompositorMsg::Canvas(CanvasToCompositorMsg::GenerateKey(sender)) => { - let _ = sender.send(self.webrender_api.generate_image_key()); - } + CrossProcessCompositorMessage::GetScreenSize(req) => { + if let Err(e) = req.send(self.viewport) { + warn!("Sending response to get screen size failed ({:?}).", e); + } + }, - ForwardedToCompositorMsg::Canvas(CanvasToCompositorMsg::UpdateImages(updates)) => { - let mut txn = Transaction::new(); - for update in updates { - match update { - ImageUpdate::AddImage(key, descriptor, data) => { - txn.add_image(key, descriptor, data, None) - } - ImageUpdate::UpdateImage(key, descriptor, data) => { - txn.update_image(key, descriptor, data, &DirtyRect::All) - } - ImageUpdate::DeleteImage(key) => txn.delete_image(key), - } + CrossProcessCompositorMessage::GetAvailableScreenSize(req) => { + if let Err(e) = req.send(self.viewport) { + warn!( + "Sending response to get screen avail size failed ({:?}).", + e + ); } - self.webrender_api - .send_transaction(self.webrender_document, txn); } } } @@ -882,23 +816,40 @@ impl IOCompositor { self.remove_pipeline_root_layer(pipeline_id); let _ = sender.send(()); } - CompositorMsg::Forwarded(ForwardedToCompositorMsg::Canvas( - CanvasToCompositorMsg::GenerateKey(sender), + CompositorMsg::CrossProcess(CrossProcessCompositorMessage::GenerateImageKey( + sender, )) => { let _ = sender.send(self.webrender_api.generate_image_key()); } - CompositorMsg::GetClientWindow(sender) => { - if let Err(e) = sender.send((self.viewport, Point2D::new(0, 0))) { + CompositorMsg::CrossProcess(CrossProcessCompositorMessage::GenerateFontKeys( + number_of_font_keys, + number_of_font_instance_keys, + result_sender, + )) => { + let font_keys = (0..number_of_font_keys) + .map(|_| self.webrender_api.generate_font_key()) + .collect(); + let font_instance_keys = (0..number_of_font_instance_keys) + .map(|_| self.webrender_api.generate_font_instance_key()) + .collect(); + let _ = result_sender.send((font_keys, font_instance_keys)); + }, + CompositorMsg::CrossProcess(CrossProcessCompositorMessage::GetClientWindowRect( + req, + )) => { + if let Err(e) = req.send(self.viewport.into()) { warn!("Sending response to get client window failed ({:?}).", e); } } - CompositorMsg::GetScreenSize(sender) => { - if let Err(e) = sender.send(self.viewport) { + CompositorMsg::CrossProcess(CrossProcessCompositorMessage::GetScreenSize(req)) => { + if let Err(e) = req.send(self.viewport) { warn!("Sending response to get screen size failed ({:?}).", e); } } - CompositorMsg::GetScreenAvailSize(sender) => { - if let Err(e) = sender.send(self.viewport) { + CompositorMsg::CrossProcess(CrossProcessCompositorMessage::GetAvailableScreenSize( + req, + )) => { + if let Err(e) = req.send(self.viewport) { warn!( "Sending response to get screen avail size failed ({:?}).", e diff --git a/src/verso.rs b/src/verso.rs index 9a2ad3a..ff34907 100644 --- a/src/verso.rs +++ b/src/verso.rs @@ -9,9 +9,9 @@ use arboard::Clipboard; use base::id::WebViewId; use bluetooth::BluetoothThreadFactory; use bluetooth_traits::BluetoothRequest; -use canvas::canvas_paint_thread::{self, CanvasPaintThread}; +use canvas::canvas_paint_thread::CanvasPaintThread; use compositing_traits::{ - CompositorMsg, CompositorProxy, CompositorReceiver, ConstellationMsg, ForwardedToCompositorMsg, + CompositorMsg, CompositorProxy, CompositorReceiver, ConstellationMsg, }; use constellation::{Constellation, FromCompositorLogger, InitialConstellationState}; use crossbeam_channel::{unbounded, Sender}; @@ -19,7 +19,8 @@ use devtools; use embedder_traits::{EmbedderMsg, EmbedderProxy, EmbedderReceiver, EventLoopWaker}; use euclid::Scale; use fonts::SystemFontService; -use ipc_channel::ipc::{IpcSender, IpcSharedMemory}; +use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::router::ROUTER; use layout_thread_2020; use log::{Log, Metadata, Record}; use media::{GlApi, GlContext, NativeDisplay, WindowGLContext}; @@ -116,9 +117,22 @@ impl Verso { // Create compositor and embedder channels let (compositor_sender, compositor_receiver) = { let (sender, receiver) = unbounded(); + let (compositor_ipc_sender, compositor_ipc_receiver) = + ipc::channel().expect("ipc channel failure"); + let sender_clone = sender.clone(); + ROUTER.add_route( + compositor_ipc_receiver.to_opaque(), + Box::new(move |message| { + let _ = sender_clone.send(CompositorMsg::CrossProcess( + message.to().expect("Could not convert Compositor message"), + )); + }), + ); + let cross_process_compositor_api = CrossProcessCompositorApi(compositor_ipc_sender); ( CompositorProxy { sender, + cross_process_compositor_api, event_loop_waker: event_loop_waker.clone(), }, CompositorReceiver { receiver }, @@ -268,15 +282,12 @@ impl Verso { // Create font cache thread let system_font_service = Arc::new( - SystemFontService::spawn(Box::new(WebRenderFontApiCompositorProxy( - compositor_sender.clone(), - ))) - .to_proxy(), + SystemFontService::spawn(compositor_sender.cross_process_compositor_api.clone()).to_proxy(), ); // Create canvas thread let (canvas_create_sender, canvas_ipc_sender) = CanvasPaintThread::start( - Box::new(CanvasWebrenderApi(compositor_sender.clone())), + compositor_sender.cross_process_compositor_api.clone(), system_font_service.clone(), public_resource_threads.clone(), ); @@ -595,82 +606,6 @@ impl webrender::api::RenderNotifier for RenderNotifier { } } -struct WebRenderFontApiCompositorProxy(CompositorProxy); - -impl WebRenderFontApi for WebRenderFontApiCompositorProxy { - fn add_font_instance( - &self, - font_instance_key: FontInstanceKey, - font_key: FontKey, - size: f32, - flags: FontInstanceFlags, - ) { - self.0.send(CompositorMsg::Forwarded( - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::AddFontInstance( - font_instance_key, - font_key, - size, - flags, - )), - )); - } - - fn add_font(&self, font_key: FontKey, data: Arc, index: u32) { - self.0.send(CompositorMsg::Forwarded( - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::AddFont( - font_key, index, data, - )), - )); - } - - fn add_system_font(&self, font_key: FontKey, handle: NativeFontHandle) { - self.0.send(CompositorMsg::Forwarded( - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::AddSystemFont( - font_key, handle, - )), - )); - } - - fn fetch_font_keys( - &self, - number_of_font_keys: usize, - number_of_font_instance_keys: usize, - ) -> (Vec, Vec) { - let (sender, receiver) = unbounded(); - self.0.send(CompositorMsg::Forwarded( - ForwardedToCompositorMsg::SystemFontService(FontToCompositorMsg::GenerateKeys( - number_of_font_keys, - number_of_font_instance_keys, - sender, - )), - )); - receiver.recv().unwrap() - } -} - -#[derive(Clone)] -struct CanvasWebrenderApi(CompositorProxy); - -impl canvas_paint_thread::WebrenderApi for CanvasWebrenderApi { - fn generate_key(&self) -> Option { - let (sender, receiver) = unbounded(); - self.0 - .send(CompositorMsg::Forwarded(ForwardedToCompositorMsg::Canvas( - CanvasToCompositorMsg::GenerateKey(sender), - ))); - receiver.recv().ok() - } - fn update_images(&self, updates: Vec) { - self.0 - .send(CompositorMsg::Forwarded(ForwardedToCompositorMsg::Canvas( - CanvasToCompositorMsg::UpdateImages(updates), - ))); - } - fn clone(&self) -> Box { - Box::new(::clone(self)) - } -} - // A logger that logs to two downstream loggers. // This should probably be in the log crate. struct BothLogger(Log1, Log2);