Rewild Your Web
13
fork

Configure Feed

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

chore: update to Servo 74c16ffd8aa7909c55fa70d6098cd745651ff791

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

+100 -91
+26 -19
Cargo.lock
··· 4959 4959 "rgb", 4960 4960 "tiff", 4961 4961 "zune-core 0.5.1", 4962 - "zune-jpeg 0.5.12", 4962 + "zune-jpeg 0.5.13", 4963 4963 ] 4964 4964 4965 4965 [[package]] ··· 7803 7803 7804 7804 [[package]] 7805 7805 name = "quick_cache" 7806 - version = "0.6.18" 7806 + version = "0.6.19" 7807 7807 source = "registry+https://github.com/rust-lang/crates.io-index" 7808 - checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3" 7808 + checksum = "530e84778a55de0f52645a51d4e3b9554978acd6a1e7cd50b6a6784692b3029e" 7809 7809 dependencies = [ 7810 7810 "ahash", 7811 7811 "equivalent", ··· 8674 8674 [[package]] 8675 8675 name = "selectors" 8676 8676 version = "0.36.0" 8677 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 8677 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 8678 8678 dependencies = [ 8679 8679 "bitflags 2.11.0", 8680 8680 "cssparser", ··· 9391 9391 "tracing", 9392 9392 "unicode-bidi", 9393 9393 "unicode-script", 9394 + "unicode_categories", 9394 9395 "url", 9395 9396 "webrender_api", 9396 9397 "xi-unicode", ··· 10298 10299 [[package]] 10299 10300 name = "servo_arc" 10300 10301 version = "0.4.3" 10301 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10302 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10302 10303 dependencies = [ 10303 10304 "serde", 10304 10305 "stable_deref_trait", ··· 10763 10764 [[package]] 10764 10765 name = "stylo" 10765 10766 version = "0.13.0" 10766 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10767 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10767 10768 dependencies = [ 10768 10769 "app_units", 10769 10770 "arrayvec", ··· 10819 10820 [[package]] 10820 10821 name = "stylo_atoms" 10821 10822 version = "0.13.0" 10822 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10823 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10823 10824 dependencies = [ 10824 10825 "string_cache", 10825 10826 "string_cache_codegen", ··· 10828 10829 [[package]] 10829 10830 name = "stylo_derive" 10830 10831 version = "0.13.0" 10831 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10832 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10832 10833 dependencies = [ 10833 10834 "darling", 10834 10835 "proc-macro2", ··· 10840 10841 [[package]] 10841 10842 name = "stylo_dom" 10842 10843 version = "0.13.0" 10843 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10844 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10844 10845 dependencies = [ 10845 10846 "bitflags 2.11.0", 10846 10847 "stylo_malloc_size_of", ··· 10849 10850 [[package]] 10850 10851 name = "stylo_malloc_size_of" 10851 10852 version = "0.13.0" 10852 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10853 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10853 10854 dependencies = [ 10854 10855 "app_units", 10855 10856 "cssparser", ··· 10866 10867 [[package]] 10867 10868 name = "stylo_static_prefs" 10868 10869 version = "0.13.0" 10869 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10870 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10870 10871 10871 10872 [[package]] 10872 10873 name = "stylo_traits" 10873 10874 version = "0.13.0" 10874 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 10875 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 10875 10876 dependencies = [ 10876 10877 "app_units", 10877 10878 "bitflags 2.11.0", ··· 11081 11082 11082 11083 [[package]] 11083 11084 name = "tempfile" 11084 - version = "3.26.0" 11085 + version = "3.27.0" 11085 11086 source = "registry+https://github.com/rust-lang/crates.io-index" 11086 - checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" 11087 + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" 11087 11088 dependencies = [ 11088 11089 "fastrand", 11089 11090 "getrandom 0.4.2", ··· 11220 11221 "half", 11221 11222 "quick-error", 11222 11223 "weezl", 11223 - "zune-jpeg 0.5.12", 11224 + "zune-jpeg 0.5.13", 11224 11225 ] 11225 11226 11226 11227 [[package]] ··· 11351 11352 [[package]] 11352 11353 name = "to_shmem" 11353 11354 version = "0.3.0" 11354 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 11355 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 11355 11356 dependencies = [ 11356 11357 "cssparser", 11357 11358 "servo_arc", ··· 11364 11365 [[package]] 11365 11366 name = "to_shmem_derive" 11366 11367 version = "0.1.0" 11367 - source = "git+https://github.com/servo/stylo?rev=f00c109074832b7fa7be52bbbf8f4987d24e323b#f00c109074832b7fa7be52bbbf8f4987d24e323b" 11368 + source = "git+https://github.com/servo/stylo?rev=dca3934667dae76c49bb579b268c5eb142d09c6a#dca3934667dae76c49bb579b268c5eb142d09c6a" 11368 11369 dependencies = [ 11369 11370 "darling", 11370 11371 "proc-macro2", ··· 11886 11887 version = "0.2.6" 11887 11888 source = "registry+https://github.com/rust-lang/crates.io-index" 11888 11889 checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 11890 + 11891 + [[package]] 11892 + name = "unicode_categories" 11893 + version = "0.1.1" 11894 + source = "registry+https://github.com/rust-lang/crates.io-index" 11895 + checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 11889 11896 11890 11897 [[package]] 11891 11898 name = "universal-hash" ··· 14022 14029 14023 14030 [[package]] 14024 14031 name = "zune-jpeg" 14025 - version = "0.5.12" 14032 + version = "0.5.13" 14026 14033 source = "registry+https://github.com/rust-lang/crates.io-index" 14027 - checksum = "410e9ecef634c709e3831c2cfdb8d9c32164fae1c67496d5b68fff728eec37fe" 14034 + checksum = "ec5f41c76397b7da451efd19915684f727d7e1d516384ca6bd0ec43ec94de23c" 14028 14035 dependencies = [ 14029 14036 "zune-core 0.5.1", 14030 14037 ]
+10 -9
Cargo.toml
··· 167 167 sea-query = { version = "1.0.0-rc.30", default-features = false, features = ["backend-sqlite", "derive"] } 168 168 sea-query-rusqlite = { version = "0.8.0-rc.15" } 169 169 sec1 = "0.7" 170 - selectors = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 170 + selectors = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 171 171 serde = "1.0.228" 172 172 serde_bytes = "0.11" 173 173 serde_core = "1.0.226" ··· 176 176 servo-media-dummy = { path = "source/components/media/backends/dummy" } 177 177 servo-media-gstreamer = { path = "source/components/media/backends/gstreamer" } 178 178 servo-tracing = { path = "source/components/servo_tracing" } 179 - servo_arc = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 179 + servo_arc = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 180 180 sha1 = "0.10" 181 181 sha2 = "0.10" 182 182 sha3 = "0.10" ··· 185 185 storage_traits = { package = "servo-storage-traits", path = "source/components/shared/storage" } 186 186 string_cache = "0.9" 187 187 strum = { version = "0.27", features = ["derive"] } 188 - stylo = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 189 - stylo_atoms = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 190 - stylo_config = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 191 - stylo_dom = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 192 - stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 193 - stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 194 - stylo_traits = { git = "https://github.com/servo/stylo", rev = "f00c109074832b7fa7be52bbbf8f4987d24e323b" } 188 + stylo = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 189 + stylo_atoms = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 190 + stylo_config = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 191 + stylo_dom = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 192 + stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 193 + stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 194 + stylo_traits = { git = "https://github.com/servo/stylo", rev = "dca3934667dae76c49bb579b268c5eb142d09c6a" } 195 195 surfman = { version = "0.11.0", features = ["chains"] } 196 196 syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } 197 197 synstructure = "0.13" ··· 210 210 tracing-subscriber = "0.3.22" 211 211 tungstenite = "0.28" 212 212 unicode-bidi = "0.3.18" 213 + unicode_categories = "0.1.1" 213 214 unicode-properties = { version = "0.1.4", features = ["emoji"] } 214 215 unicode-script = "0.5" 215 216 unicode-segmentation = "1.12.0"
+1 -1
forkme.lock
··· 1 - 517262fb34643d624d73eafa1ab7d6aa653f3b64 1 + 74c16ffd8aa7909c55fa70d6098cd745651ff791
+15 -15
patches/components/constellation/constellation.rs.patch
··· 13 13 use embedder_traits::user_contents::{UserContentManagerId, UserContents}; 14 14 use embedder_traits::{ 15 15 - AnimationState, EmbedderControlId, EmbedderControlResponse, EmbedderMsg, EmbedderProxy, 16 - - FocusSequenceNumber, InputEvent, InputEventAndId, JSValue, JavaScriptEvaluationError, 17 - - JavaScriptEvaluationId, KeyboardEvent, MediaSessionActionType, MediaSessionEvent, 18 - - MediaSessionPlaybackState, MouseButton, MouseButtonAction, MouseButtonEvent, NewWebViewDetails, 19 - - PaintHitTestResult, Theme, ViewportDetails, WebDriverCommandMsg, WebDriverLoadStatus, 20 - - WebDriverScriptCommand, 16 + - FocusSequenceNumber, InputEvent, InputEventAndId, InputEventOutcome, JSValue, 17 + - JavaScriptEvaluationError, JavaScriptEvaluationId, KeyboardEvent, MediaSessionActionType, 18 + - MediaSessionEvent, MediaSessionPlaybackState, MouseButton, MouseButtonAction, MouseButtonEvent, 19 + - NewWebViewDetails, PaintHitTestResult, Theme, ViewportDetails, WebDriverCommandMsg, 20 + - WebDriverLoadStatus, WebDriverScriptCommand, 21 21 + AnimationState, EmbedderControlId, EmbedderControlRequest, EmbedderControlResponse, 22 - + EmbedderMsg, EmbedderProxy, FocusSequenceNumber, InputEvent, InputEventAndId, JSValue, 23 - + JavaScriptEvaluationError, JavaScriptEvaluationId, KeyboardEvent, MediaSessionActionType, 24 - + MediaSessionEvent, MediaSessionPlaybackState, MouseButton, MouseButtonAction, MouseButtonEvent, 25 - + NewWebViewDetails, PaintHitTestResult, Theme, ViewportDetails, WebDriverCommandMsg, 26 - + WebDriverLoadStatus, WebDriverScriptCommand, 22 + + EmbedderMsg, EmbedderProxy, FocusSequenceNumber, InputEvent, InputEventAndId, 23 + + InputEventOutcome, JSValue, JavaScriptEvaluationError, JavaScriptEvaluationId, KeyboardEvent, 24 + + MediaSessionActionType, MediaSessionEvent, MediaSessionPlaybackState, MouseButton, 25 + + MouseButtonAction, MouseButtonEvent, NewWebViewDetails, PaintHitTestResult, Theme, 26 + + ViewportDetails, WebDriverCommandMsg, WebDriverLoadStatus, WebDriverScriptCommand, 27 27 }; 28 28 use euclid::Size2D; 29 29 use euclid::default::Size2D as UntypedSize2D; ··· 393 393 /// Check the origin of a message against that of the pipeline it came from. 394 394 /// Note: this is still limited as a security check, 395 395 /// see <https://github.com/servo/servo/issues/11722> 396 - @@ -3174,6 +3419,13 @@ 396 + @@ -3178,6 +3423,13 @@ 397 397 /// <https://html.spec.whatwg.org/multipage/#destroy-a-top-level-traversable> 398 398 fn handle_close_top_level_browsing_context(&mut self, webview_id: WebViewId) { 399 399 debug!("{webview_id}: Closing"); ··· 407 407 let browsing_context_id = BrowsingContextId::from(webview_id); 408 408 // Step 5. Remove traversable from the user agent's top-level traversable set. 409 409 let browsing_context = 410 - @@ -3450,8 +3702,27 @@ 410 + @@ -3454,8 +3706,27 @@ 411 411 opener_webview_id, 412 412 opener_pipeline_id, 413 413 response_sender, ··· 435 435 let Some((webview_id_sender, webview_id_receiver)) = generic_channel::channel() else { 436 436 warn!("Failed to create channel"); 437 437 let _ = response_sender.send(None); 438 - @@ -3550,6 +3821,361 @@ 438 + @@ -3554,6 +3825,361 @@ 439 439 }); 440 440 } 441 441 ··· 797 797 #[servo_tracing::instrument(skip_all)] 798 798 fn handle_refresh_cursor(&self, pipeline_id: PipelineId) { 799 799 let Some(pipeline) = self.pipelines.get(&pipeline_id) else { 800 - @@ -4676,7 +5302,7 @@ 800 + @@ -4680,7 +5306,7 @@ 801 801 } 802 802 803 803 #[servo_tracing::instrument(skip_all)] ··· 806 806 // Send a flat projection of the history to embedder. 807 807 // The final vector is a concatenation of the URLs of the past 808 808 // entries, the current entry and the future entries. 809 - @@ -4779,9 +5405,23 @@ 809 + @@ -4783,9 +5409,23 @@ 810 810 ); 811 811 self.embedder_proxy.send(EmbedderMsg::HistoryChanged( 812 812 webview_id,
+1 -1
patches/components/paint/webview_renderer.rs.patch
··· 364 364 } 365 365 366 366 /// Set the `hidpi_scale_factor` for this renderer, returning `true` if the value actually changed. 367 - @@ -1085,8 +1259,21 @@ 367 + @@ -1083,8 +1257,21 @@ 368 368 if let Some(wheel_event) = self.pending_wheel_events.remove(&id) { 369 369 if !result.contains(InputEventResult::DefaultPrevented) { 370 370 // A scroll delta for a wheel event is the inverse of the wheel delta.
+1 -1
patches/components/script/dom/debuggerglobalscope.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -105,9 +105,11 @@ 3 + @@ -106,9 +106,11 @@ 4 4 None, 5 5 #[cfg(feature = "webgpu")] 6 6 gpu_id_hub,
+29 -26
patches/components/script/dom/document_event_handler.rs.patch
··· 10 10 + EmbeddedWebViewEventType, KeyboardScroll, ScriptToConstellationMessage, 11 11 +}; 12 12 use embedder_traits::{ 13 - Cursor, EditingActionEvent, EmbedderMsg, ImeEvent, InputEvent, InputEventAndId, 14 - InputEventResult, KeyboardEvent as EmbedderKeyboardEvent, MouseButton, MouseButtonAction, 15 - MouseButtonEvent, MouseLeftViewportEvent, TouchEvent as EmbedderTouchEvent, TouchEventType, 13 + - Cursor, EditingActionEvent, EmbedderMsg, ImeEvent, InputEvent, InputEventOutcome, 14 + - InputEventResult, KeyboardEvent as EmbedderKeyboardEvent, MouseButton, MouseButtonAction, 15 + - MouseButtonEvent, MouseLeftViewportEvent, TouchEvent as EmbedderTouchEvent, TouchEventType, 16 16 - TouchId, UntrustedNodeAddress, WheelEvent as EmbedderWheelEvent, 17 - + TouchId, UntrustedNodeAddress, WebViewPoint, WheelEvent as EmbedderWheelEvent, 17 + + Cursor, EditingActionEvent, EmbedderMsg, ImeEvent, InputEvent, InputEventAndId, 18 + + InputEventOutcome, InputEventResult, KeyboardEvent as EmbedderKeyboardEvent, MouseButton, 19 + + MouseButtonAction, MouseButtonEvent, MouseLeftViewportEvent, TouchEvent as EmbedderTouchEvent, 20 + + TouchEventType, TouchId, UntrustedNodeAddress, WebViewPoint, WheelEvent as EmbedderWheelEvent, 18 21 }; 19 22 #[cfg(feature = "gamepad")] 20 23 use embedder_traits::{ ··· 42 45 +use crate::dom::html::htmliframeelement::HTMLIFrameElement; 43 46 use crate::dom::inputevent::HitTestResult; 44 47 use crate::dom::interactive_element_command::InteractiveElementCommand; 45 - use crate::dom::node::{self, Node, NodeTraits, ShadowIncluding}; 46 - @@ -72,6 +78,7 @@ 48 + use crate::dom::keyboardevent::KeyboardEvent; 49 + @@ -73,6 +79,7 @@ 47 50 }; 48 51 use crate::drag_data_store::{DragDataStore, Kind, Mode}; 49 52 use crate::realms::enter_realm; ··· 51 54 52 55 /// A data structure used for tracking the current click count. This can be 53 56 /// reset to 0 if a mouse button event happens at a sufficient distance or time 54 - @@ -135,6 +142,56 @@ 57 + @@ -136,6 +143,56 @@ 55 58 } 56 59 } 57 60 ··· 108 111 /// The [`DocumentEventHandler`] is a structure responsible for handling input events for 109 112 /// the [`crate::Document`] and storing data related to event handling. It exists to 110 113 /// decrease the size of the [`crate::Document`] structure. 111 - @@ -180,6 +237,20 @@ 114 + @@ -181,6 +238,20 @@ 112 115 next_touch_pointer_id: Cell<i32>, 113 116 /// A map holding information about currently registered access key handlers. 114 117 access_key_handlers: DomRefCell<FxHashMap<char, Dom<HTMLElement>>>, ··· 129 132 } 130 133 131 134 impl DocumentEventHandler { 132 - @@ -201,6 +272,9 @@ 135 + @@ -202,6 +273,9 @@ 133 136 active_pointer_ids: Default::default(), 134 137 next_touch_pointer_id: Cell::new(1), 135 138 access_key_handlers: Default::default(), ··· 139 142 } 140 143 } 141 144 142 - @@ -491,6 +565,198 @@ 145 + @@ -497,6 +571,198 @@ 143 146 } 144 147 } 145 148 ··· 338 341 /// <https://w3c.github.io/uievents/#handle-native-mouse-move> 339 342 fn handle_native_mouse_move_event(&self, input_event: &ConstellationInputEvent, can_gc: CanGc) { 340 343 // Ignore all incoming events without a hit test. 341 - @@ -505,6 +771,57 @@ 344 + @@ -511,6 +777,57 @@ 342 345 return; 343 346 } 344 347 ··· 396 399 // Update the cursor when the mouse moves, if it has changed. 397 400 self.set_cursor(Some(hit_test_result.cursor)); 398 401 399 - @@ -730,6 +1047,12 @@ 402 + @@ -736,6 +1053,12 @@ 400 403 return; 401 404 }; 402 405 ··· 409 412 debug!( 410 413 "{:?}: at {:?}", 411 414 event.action, hit_test_result.point_in_frame 412 - @@ -822,18 +1145,25 @@ 415 + @@ -828,18 +1151,25 @@ 413 416 let target_el = element.find_click_focusable_shadow_host_if_necessary(); 414 417 415 418 let document = self.window.Document(); ··· 421 424 + // Skip focus handling for hidefocus webviews - no blur/focus events 422 425 + // should be fired and focus should not be transferred. 423 426 + let hide_focus = self.window.as_global_scope().hide_focus(); 424 - + 427 + 425 428 + if !hide_focus { 426 429 + document.begin_focus_transaction(); 427 - 430 + + 428 431 + // Try to focus `el`. If it's not focusable, focus the document instead. 429 432 + document.request_focus(None, FocusInitiator::Click, can_gc); 430 433 + document.request_focus(target_el.as_deref(), FocusInitiator::Click, can_gc); ··· 440 443 document.commit_focus_transaction(FocusInitiator::Click, can_gc); 441 444 } 442 445 443 - @@ -843,7 +1173,7 @@ 446 + @@ -849,7 +1179,7 @@ 444 447 self.maybe_show_context_menu( 445 448 node.upcast(), 446 449 &hit_test_result, ··· 449 452 can_gc, 450 453 ); 451 454 } 452 - @@ -967,9 +1297,30 @@ 455 + @@ -973,9 +1303,30 @@ 453 456 &self, 454 457 target: &EventTarget, 455 458 hit_test_result: &HitTestResult, ··· 481 484 // <https://w3c.github.io/uievents/#contextmenu> 482 485 let menu_event = PointerEvent::new( 483 486 &self.window, // window 484 - @@ -983,25 +1334,25 @@ 487 + @@ -989,25 +1340,25 @@ 485 488 hit_test_result 486 489 .point_relative_to_initial_containing_block 487 490 .to_i32(), ··· 526 529 can_gc, 527 530 ); 528 531 529 - @@ -1017,6 +1368,89 @@ 532 + @@ -1023,6 +1374,89 @@ 530 533 }; 531 534 } 532 535 ··· 616 619 fn handle_touch_event( 617 620 &self, 618 621 event: EmbedderTouchEvent, 619 - @@ -1023,6 +1457,29 @@ 622 + @@ -1029,6 +1463,29 @@ 620 623 input_event: &ConstellationInputEvent, 621 624 can_gc: CanGc, 622 625 ) -> InputEventResult { ··· 646 649 // Ignore all incoming events without a hit test. 647 650 let Some(hit_test_result) = self.window.hit_test_from_input_event(input_event) else { 648 651 self.update_active_touch_points_when_early_return(event); 649 - @@ -1029,6 +1486,16 @@ 652 + @@ -1035,6 +1492,16 @@ 650 653 return Default::default(); 651 654 }; 652 655 ··· 663 666 let TouchId(identifier) = event.touch_id; 664 667 665 668 let Some(element) = hit_test_result 666 - @@ -1160,6 +1627,10 @@ 669 + @@ -1166,6 +1633,10 @@ 667 670 // <https://html.spec.whatwg.org/multipage/#selector-active> 668 671 // If the element is being actively pointed at the element is being activated. 669 672 self.element_for_activation(element).set_active_state(true); ··· 674 677 (current_target, pointer_touch) 675 678 }, 676 679 _ => { 677 - @@ -1192,10 +1663,31 @@ 680 + @@ -1198,10 +1669,31 @@ 678 681 can_gc, 679 682 ); 680 683 ··· 707 710 }, 708 711 TouchEventType::Up | TouchEventType::Cancel => { 709 712 active_touch_points.swap_remove(index); 710 - @@ -1203,6 +1695,17 @@ 713 + @@ -1209,6 +1701,17 @@ 711 714 // <https://html.spec.whatwg.org/multipage/#selector-active> 712 715 // If the element is being actively pointed at the element is being activated. 713 716 self.element_for_activation(element).set_active_state(false); ··· 725 728 }, 726 729 TouchEventType::Down => unreachable!("Should have been handled above"), 727 730 } 728 - @@ -1246,6 +1749,19 @@ 731 + @@ -1252,6 +1755,19 @@ 729 732 ); 730 733 let event = touch_event.upcast::<Event>(); 731 734 event.fire(&touch_dispatch_target, can_gc); ··· 745 748 event.flags().into() 746 749 } 747 750 748 - @@ -1432,6 +1948,16 @@ 751 + @@ -1416,6 +1932,16 @@ 749 752 return Default::default(); 750 753 }; 751 754
+4 -4
patches/components/script/dom/globalscope.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -369,6 +369,16 @@ 3 + @@ -371,6 +371,16 @@ 4 4 /// Is considered in a secure context 5 5 inherited_secure_context: Option<bool>, 6 6 ··· 17 17 /// Directory to store unminified scripts for this window if unminify-js 18 18 /// opt is enabled. 19 19 unminified_js_dir: Option<String>, 20 - @@ -769,6 +779,8 @@ 20 + @@ -771,6 +781,8 @@ 21 21 #[cfg(feature = "webgpu")] gpu_id_hub: Arc<IdentityHub>, 22 22 inherited_secure_context: Option<bool>, 23 23 unminify_js: bool, ··· 26 26 font_context: Option<Arc<FontContext>>, 27 27 ) -> Self { 28 28 Self { 29 - @@ -813,6 +825,8 @@ 29 + @@ -815,6 +827,8 @@ 30 30 console_group_stack: DomRefCell::new(Vec::new()), 31 31 console_count_map: Default::default(), 32 32 inherited_secure_context, ··· 35 35 unminified_js_dir: unminify_js.then(|| unminified_path("unminified-js")), 36 36 byte_length_queuing_strategy_size_function: OnceCell::new(), 37 37 count_queuing_strategy_size_function: OnceCell::new(), 38 - @@ -3112,6 +3126,16 @@ 38 + @@ -3129,6 +3143,16 @@ 39 39 self.inherited_secure_context 40 40 } 41 41
+1 -1
patches/components/script/dom/html/htmliframeelement.rs.patch
··· 53 53 use crate::dom::node::{BindContext, Node, NodeDamage, NodeTraits, UnbindContext}; 54 54 use crate::dom::performance::performanceresourcetiming::InitiatorType; 55 55 +use crate::dom::promise::Promise; 56 - use crate::dom::trustedhtml::TrustedHTML; 56 + use crate::dom::trustedtypes::trustedhtml::TrustedHTML; 57 57 use crate::dom::virtualmethods::VirtualMethods; 58 58 use crate::dom::windowproxy::WindowProxy; 59 59 @@ -76,6 +82,12 @@
+5 -7
patches/components/script/script_thread.rs.patch
··· 13 13 }; 14 14 use crossbeam_channel::unbounded; 15 15 use data_url::mime::Mime; 16 - @@ -54,8 +54,8 @@ 17 - use embedder_traits::user_contents::{UserContentManagerId, UserContents, UserScript}; 16 + @@ -55,7 +55,7 @@ 18 17 use embedder_traits::{ 19 18 EmbedderControlId, EmbedderControlResponse, EmbedderMsg, FocusSequenceNumber, 20 - - JavaScriptEvaluationError, JavaScriptEvaluationId, MediaSessionActionType, Theme, 21 - - ViewportDetails, WebDriverScriptCommand, 22 - + JavaScriptEvaluationError, JavaScriptEvaluationId, MediaSessionActionType, ServoErrorType, 23 - + Theme, ViewportDetails, WebDriverScriptCommand, 19 + InputEventOutcome, JavaScriptEvaluationError, JavaScriptEvaluationId, MediaSessionActionType, 20 + - Theme, ViewportDetails, WebDriverScriptCommand, 21 + + ServoErrorType, Theme, ViewportDetails, WebDriverScriptCommand, 24 22 }; 25 23 use encoding_rs::Encoding; 26 24 use fonts::{FontContext, SystemFontServiceProxy}; ··· 190 188 ); 191 189 if window_proxy.parent().is_some() { 192 190 // https://html.spec.whatwg.org/multipage/#navigating-across-documents:delaying-load-events-mode-2 193 - @@ -4271,6 +4363,24 @@ 191 + @@ -4273,6 +4365,24 @@ 194 192 document.event_handler().handle_refresh_cursor(); 195 193 } 196 194
+3 -3
patches/components/servo/servo.rs.patch
··· 73 73 EmbedderMsg::WebViewClosed(webview_id) => { 74 74 if let Some(webview) = self.get_webview_handle(webview_id) { 75 75 webview.delegate().notify_closed(webview); 76 - @@ -566,10 +598,7 @@ 76 + @@ -574,10 +606,7 @@ 77 77 .delegate 78 78 .borrow() 79 79 .notify_devtools_server_started(port, token), ··· 85 85 }, 86 86 EmbedderMsg::RequestDevtoolsConnection(response_sender) => { 87 87 self.delegate 88 - @@ -694,6 +723,47 @@ 88 + @@ -702,6 +731,47 @@ 89 89 .notify_accessibility_tree_update(webview, tree_update); 90 90 } 91 91 }, ··· 133 133 } 134 134 } 135 135 } 136 - @@ -936,6 +1006,14 @@ 136 + @@ -944,6 +1014,14 @@ 137 137 )); 138 138 } 139 139
+3 -3
patches/components/shared/embedder/input_events.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -57,6 +57,17 @@ 3 + @@ -63,6 +63,17 @@ 4 4 pub id: InputEventId, 5 5 } 6 6 ··· 18 18 impl From<InputEvent> for InputEventAndId { 19 19 fn from(event: InputEvent) -> Self { 20 20 Self { 21 - @@ -89,6 +100,31 @@ 21 + @@ -95,6 +106,31 @@ 22 22 InputEvent::Wheel(event) => Some(event.point), 23 23 } 24 24 } ··· 50 50 } 51 51 52 52 #[derive(Clone, Debug, Default, Deserialize, Serialize)] 53 - @@ -223,7 +259,7 @@ 53 + @@ -229,7 +265,7 @@ 54 54 } 55 55 56 56 /// The type of input represented by a multi-touch event.
+1 -1
patches/components/shared/embedder/lib.rs.patch
··· 126 126 WebViewClosed(WebViewId), 127 127 /// A webview potentially gained focus for keyboard events. 128 128 @@ -518,6 +578,24 @@ 129 - InputEventHandled(WebViewId, InputEventId, InputEventResult), 129 + InputEventsHandled(WebViewId, Vec<InputEventOutcome>), 130 130 /// Send the embedder an accessibility tree update. 131 131 AccessibilityTreeUpdate(WebViewId, accesskit::TreeUpdate), 132 132 + /// Request from web content (via `navigator.embedder.openNewOSWindow()`) to open a new