Rewild Your Web

chore: update to Servo 853fcf4fda0c31ab418c21eac4323d9e91d2b912

+156 -155
+25 -33
Cargo.lock
··· 20 20 21 21 [[package]] 22 22 name = "accesskit" 23 - version = "0.21.1" 23 + version = "0.24.0" 24 24 source = "registry+https://github.com/rust-lang/crates.io-index" 25 - checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" 25 + checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a" 26 26 dependencies = [ 27 27 "enumn", 28 28 "serde", 29 + "uuid", 29 30 ] 30 31 31 32 [[package]] ··· 358 359 359 360 [[package]] 360 361 name = "async-compression" 361 - version = "0.4.39" 362 + version = "0.4.40" 362 363 source = "registry+https://github.com/rust-lang/crates.io-index" 363 - checksum = "68650b7df54f0293fd061972a0fb05aaf4fc0879d3b3d21a638a182c5c543b9f" 364 + checksum = "7d67d43201f4d20c78bcda740c142ca52482d81da80681533d33bf3f0596c8e2" 364 365 dependencies = [ 365 366 "compression-codecs", 366 367 "compression-core", ··· 485 486 486 487 [[package]] 487 488 name = "aws-lc-rs" 488 - version = "1.15.4" 489 + version = "1.16.0" 489 490 source = "registry+https://github.com/rust-lang/crates.io-index" 490 - checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" 491 + checksum = "d9a7b350e3bb1767102698302bc37256cbd48422809984b98d292c40e2579aa9" 491 492 dependencies = [ 492 493 "aws-lc-sys", 493 494 "zeroize", ··· 914 915 915 916 [[package]] 916 917 name = "bumpalo" 917 - version = "3.19.1" 918 + version = "3.20.1" 918 919 source = "registry+https://github.com/rust-lang/crates.io-index" 919 - checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" 920 + checksum = "5c6f81257d10a0f602a294ae4182251151ff97dbb504ef9afcdda4a64b24d9b4" 920 921 921 922 [[package]] 922 923 name = "byte-slice-cast" ··· 1349 1350 1350 1351 [[package]] 1351 1352 name = "compression-codecs" 1352 - version = "0.4.36" 1353 + version = "0.4.37" 1353 1354 source = "registry+https://github.com/rust-lang/crates.io-index" 1354 - checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" 1355 + checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7" 1355 1356 dependencies = [ 1356 1357 "brotli", 1357 1358 "compression-core", ··· 5056 5057 5057 5058 [[package]] 5058 5059 name = "libc" 5059 - version = "0.2.181" 5060 + version = "0.2.182" 5060 5061 source = "registry+https://github.com/rust-lang/crates.io-index" 5061 - checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5" 5062 + checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" 5062 5063 5063 5064 [[package]] 5064 5065 name = "libdbus-sys" ··· 8092 8093 [[package]] 8093 8094 name = "selectors" 8094 8095 version = "0.35.0" 8095 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8096 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8096 8097 dependencies = [ 8097 8098 "bitflags 2.11.0", 8098 8099 "cssparser", ··· 8408 8409 [[package]] 8409 8410 name = "servo_arc" 8410 8411 version = "0.4.3" 8411 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8412 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8412 8413 dependencies = [ 8413 8414 "serde", 8414 8415 "stable_deref_trait", ··· 8422 8423 "serde_json", 8423 8424 "servo_config_macro", 8424 8425 "servo_url", 8425 - "stylo_config", 8426 + "stylo_static_prefs", 8426 8427 ] 8427 8428 8428 8429 [[package]] ··· 8847 8848 [[package]] 8848 8849 name = "stylo" 8849 8850 version = "0.12.0" 8850 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8851 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8851 8852 dependencies = [ 8852 8853 "app_units", 8853 8854 "arrayvec", ··· 8885 8886 "strum", 8886 8887 "strum_macros", 8887 8888 "stylo_atoms", 8888 - "stylo_config", 8889 8889 "stylo_derive", 8890 8890 "stylo_dom", 8891 8891 "stylo_malloc_size_of", ··· 8904 8904 [[package]] 8905 8905 name = "stylo_atoms" 8906 8906 version = "0.12.0" 8907 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8907 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8908 8908 dependencies = [ 8909 8909 "string_cache", 8910 8910 "string_cache_codegen", 8911 8911 ] 8912 8912 8913 8913 [[package]] 8914 - name = "stylo_config" 8915 - version = "0.12.0" 8916 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8917 - 8918 - [[package]] 8919 8914 name = "stylo_derive" 8920 8915 version = "0.12.0" 8921 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8916 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8922 8917 dependencies = [ 8923 8918 "darling", 8924 8919 "proc-macro2", ··· 8930 8925 [[package]] 8931 8926 name = "stylo_dom" 8932 8927 version = "0.12.0" 8933 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8928 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8934 8929 dependencies = [ 8935 8930 "bitflags 2.11.0", 8936 8931 "stylo_malloc_size_of", ··· 8939 8934 [[package]] 8940 8935 name = "stylo_malloc_size_of" 8941 8936 version = "0.12.0" 8942 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8937 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8943 8938 dependencies = [ 8944 8939 "app_units", 8945 8940 "cssparser", ··· 8956 8951 [[package]] 8957 8952 name = "stylo_static_prefs" 8958 8953 version = "0.12.0" 8959 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8960 - dependencies = [ 8961 - "stylo_config", 8962 - ] 8954 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8963 8955 8964 8956 [[package]] 8965 8957 name = "stylo_traits" 8966 8958 version = "0.12.0" 8967 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 8959 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 8968 8960 dependencies = [ 8969 8961 "app_units", 8970 8962 "bitflags 2.11.0", ··· 9397 9389 [[package]] 9398 9390 name = "to_shmem" 9399 9391 version = "0.3.0" 9400 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 9392 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 9401 9393 dependencies = [ 9402 9394 "cssparser", 9403 9395 "servo_arc", ··· 9410 9402 [[package]] 9411 9403 name = "to_shmem_derive" 9412 9404 version = "0.1.0" 9413 - source = "git+https://github.com/servo/stylo?rev=97a72fc80cd28bf70c55421468b017a84ded00ab#97a72fc80cd28bf70c55421468b017a84ded00ab" 9405 + source = "git+https://github.com/servo/stylo?rev=9a413b4d05d899c3baedd7b648dbf2c23dc9b879#9a413b4d05d899c3baedd7b648dbf2c23dc9b879" 9414 9406 dependencies = [ 9415 9407 "darling", 9416 9408 "proc-macro2",
+10 -9
Cargo.toml
··· 13 13 rust-version = "1.86.0" 14 14 15 15 [workspace.dependencies] 16 - accesskit = { version = "0.21.1", features = ["serde"] } 16 + accesskit = { version = "0.24.0", features = ["serde"] } 17 17 accountable-refcell = "0.2.2" 18 18 aes = "0.8.4" 19 19 aes-gcm = "0.10.3" ··· 166 166 sea-query = { version = "1.0.0-rc.30", default-features = false, features = ["backend-sqlite", "derive"] } 167 167 sea-query-rusqlite = { version = "0.8.0-rc.15" } 168 168 sec1 = "0.7" 169 - selectors = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 169 + selectors = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 170 170 serde = "1.0.228" 171 171 serde_bytes = "0.11" 172 172 serde_core = "1.0.226" ··· 175 175 servo-media-dummy = { path = "source/components/media/backends/dummy" } 176 176 servo-media-gstreamer = { path = "source/components/media/backends/gstreamer" } 177 177 servo-tracing = { path = "source/components/servo_tracing" } 178 - servo_arc = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 178 + servo_arc = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 179 179 sha1 = "0.10" 180 180 sha2 = "0.10" 181 181 sha3 = "0.10" ··· 184 184 storage_traits = { path = "source/components/shared/storage" } 185 185 string_cache = "0.9" 186 186 strum = { version = "0.27", features = ["derive"] } 187 - stylo = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 188 - stylo_atoms = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 189 - stylo_config = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 190 - stylo_dom = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 191 - stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 192 - stylo_traits = { git = "https://github.com/servo/stylo", rev = "97a72fc80cd28bf70c55421468b017a84ded00ab" } 187 + stylo = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 188 + stylo_atoms = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 189 + stylo_config = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 190 + stylo_dom = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 191 + stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 192 + stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 193 + stylo_traits = { git = "https://github.com/servo/stylo", rev = "9a413b4d05d899c3baedd7b648dbf2c23dc9b879" } 193 194 surfman = { version = "0.11.0", features = ["chains"] } 194 195 syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } 195 196 synstructure = "0.13"
+1 -1
forkme.lock
··· 1 - fe02b0490452fecebcc8d69ae01ac607136086a8 1 + 853fcf4fda0c31ab418c21eac4323d9e91d2b912
+1 -1
htmlshell/src/main.rs
··· 697 697 let preferences = Preferences { 698 698 viewport_meta_enabled: true, 699 699 devtools_server_enabled: true, 700 - devtools_server_port: 6222, 700 + devtools_server_listen_address: "0.0.0.0:6222".to_owned(), 701 701 shell_background_color_rgba: [0.0, 0.0, 0.0, 0.0], 702 702 ..Default::default() 703 703 };
+22 -22
patches/components/constellation/constellation.rs.patch
··· 27 27 }; 28 28 use euclid::Size2D; 29 29 use euclid::default::Size2D as UntypedSize2D; 30 - @@ -509,6 +510,19 @@ 31 - /// to the `UserContents` need to be forwared to all the `ScriptThread`s that host 32 - /// the relevant `WebView`. 33 - pub(crate) user_contents_for_manager_id: FxHashMap<UserContentManagerId, UserContents>, 30 + @@ -512,6 +513,19 @@ 31 + 32 + /// Whether accessibility trees are being built and sent to the underlying platform. 33 + pub(crate) accessibility_active: bool, 34 34 + 35 35 + /// Map from embedded WebView ID to the parent iframe's (browsing_context_id, pipeline_id). 36 36 + /// Used to route events from the embedded webview back to the iframe element. ··· 47 47 } 48 48 49 49 /// State needed to construct a constellation. 50 - @@ -727,6 +741,9 @@ 51 - pending_viewport_changes: Default::default(), 50 + @@ -731,6 +745,9 @@ 52 51 screenshot_readiness_requests: Vec::new(), 53 52 user_contents_for_manager_id: Default::default(), 53 + accessibility_active: false, 54 54 + embedded_webview_to_iframe: FxHashMap::default(), 55 55 + active_ime_webview: None, 56 56 + embedder_error_listeners: Default::default(), 57 57 }; 58 58 59 59 constellation.run(); 60 - @@ -752,6 +769,18 @@ 60 + @@ -756,6 +773,18 @@ 61 61 fn clean_up_finished_script_event_loops(&mut self) { 62 62 self.event_loop_join_handles 63 63 .retain(|join_handle| !join_handle.is_finished()); ··· 76 76 self.event_loops 77 77 .retain(|event_loop| event_loop.upgrade().is_some()); 78 78 } 79 - @@ -1043,6 +1072,11 @@ 79 + @@ -1047,6 +1076,11 @@ 80 80 .get(&webview_id) 81 81 .and_then(|webview| webview.user_content_manager_id); 82 82 ··· 88 88 let new_pipeline_info = NewPipelineInfo { 89 89 parent_info: parent_pipeline_id, 90 90 new_pipeline_id, 91 - @@ -1053,6 +1087,13 @@ 91 + @@ -1057,6 +1091,13 @@ 92 92 viewport_details: initial_viewport_details, 93 93 user_content_manager_id, 94 94 theme, ··· 102 102 }; 103 103 let pipeline = match Pipeline::spawn(new_pipeline_info, event_loop, self, throttled) { 104 104 Ok(pipeline) => pipeline, 105 - @@ -1524,11 +1565,7 @@ 105 + @@ -1536,11 +1577,7 @@ 106 106 } 107 107 }, 108 108 EmbedderToConstellationMessage::PreferencesUpdated(updates) => { ··· 115 115 let _ = event_loop.send(ScriptThreadMessage::PreferencesUpdated( 116 116 updates 117 117 .iter() 118 - @@ -1552,6 +1589,18 @@ 119 - EmbedderToConstellationMessage::UpdatePinchZoomInfos(pipeline_id, pinch_zoom) => { 120 - self.handle_update_pinch_zoom_infos(pipeline_id, pinch_zoom); 118 + @@ -1567,6 +1604,18 @@ 119 + EmbedderToConstellationMessage::SetAccessibilityActive(active) => { 120 + self.set_accessibility_active(active); 121 121 }, 122 122 + EmbedderToConstellationMessage::NotifyServoError(error_type, message) => { 123 123 + // Broadcast error only to script threads that have registered ··· 134 134 } 135 135 } 136 136 137 - @@ -1775,6 +1824,12 @@ 137 + @@ -1790,6 +1839,12 @@ 138 138 self.broadcast_channels 139 139 .remove_broadcast_channel_router(router_id); 140 140 }, ··· 147 147 ScriptToConstellationMessage::ScheduleBroadcast(router_id, message) => { 148 148 if self 149 149 .check_origin_against_pipeline(&source_pipeline_id, &message.origin) 150 - @@ -1805,6 +1860,12 @@ 150 + @@ -1820,6 +1875,12 @@ 151 151 ScriptToConstellationMessage::CreateAuxiliaryWebView(load_info) => { 152 152 self.handle_script_new_auxiliary(load_info); 153 153 }, ··· 160 160 ScriptToConstellationMessage::ChangeRunningAnimationsState(animation_state) => { 161 161 self.handle_change_running_animations_state(source_pipeline_id, animation_state) 162 162 }, 163 - @@ -1971,6 +2032,23 @@ 163 + @@ -1986,6 +2047,23 @@ 164 164 new_value, 165 165 ); 166 166 }, ··· 184 184 ScriptToConstellationMessage::MediaSessionEvent(pipeline_id, event) => { 185 185 // Unlikely at this point, but we may receive events coming from 186 186 // different media sessions, so we set the active media session based 187 - @@ -2039,6 +2117,129 @@ 187 + @@ -2054,6 +2132,129 @@ 188 188 ScriptToConstellationMessage::RespondToScreenshotReadinessRequest(response) => { 189 189 self.handle_screenshot_readiness_response(source_pipeline_id, response); 190 190 }, ··· 314 314 } 315 315 } 316 316 317 - @@ -3137,6 +3338,13 @@ 317 + @@ -3166,6 +3367,13 @@ 318 318 /// <https://html.spec.whatwg.org/multipage/#destroy-a-top-level-traversable> 319 319 fn handle_close_top_level_browsing_context(&mut self, webview_id: WebViewId) { 320 320 debug!("{webview_id}: Closing"); ··· 328 328 let browsing_context_id = BrowsingContextId::from(webview_id); 329 329 // Step 5. Remove traversable from the user agent's top-level traversable set. 330 330 let browsing_context = 331 - @@ -3413,8 +3621,27 @@ 331 + @@ -3442,8 +3650,27 @@ 332 332 opener_webview_id, 333 333 opener_pipeline_id, 334 334 response_sender, ··· 356 356 let Some((webview_id_sender, webview_id_receiver)) = generic_channel::channel() else { 357 357 warn!("Failed to create channel"); 358 358 let _ = response_sender.send(None); 359 - @@ -3512,6 +3739,359 @@ 359 + @@ -3541,6 +3768,359 @@ 360 360 }); 361 361 } 362 362 ··· 716 716 #[servo_tracing::instrument(skip_all)] 717 717 fn handle_refresh_cursor(&self, pipeline_id: PipelineId) { 718 718 let Some(pipeline) = self.pipelines.get(&pipeline_id) else { 719 - @@ -4638,7 +5218,7 @@ 719 + @@ -4667,7 +5247,7 @@ 720 720 } 721 721 722 722 #[servo_tracing::instrument(skip_all)] ··· 725 725 // Send a flat projection of the history to embedder. 726 726 // The final vector is a concatenation of the URLs of the past 727 727 // entries, the current entry and the future entries. 728 - @@ -4741,9 +5321,23 @@ 728 + @@ -4770,9 +5350,23 @@ 729 729 ); 730 730 self.embedder_proxy.send(EmbedderMsg::HistoryChanged( 731 731 webview_id,
+6 -6
patches/components/constellation/tracing.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -83,6 +83,7 @@ 4 - Self::EmbedderControlResponse(..) => target!("EmbedderControlResponse"), 3 + @@ -84,6 +84,7 @@ 5 4 Self::UserContentManagerAction(..) => target!("UserContentManagerAction"), 6 5 Self::UpdatePinchZoomInfos(..) => target!("UpdatePinchZoomInfos"), 6 + Self::SetAccessibilityActive(..) => target!("SetAccessibilityActive"), 7 7 + Self::NotifyServoError(..) => target!("NotifyServoError"), 8 8 } 9 9 } 10 10 } 11 - @@ -134,6 +135,10 @@ 11 + @@ -135,6 +136,10 @@ 12 12 Self::DisentanglePorts(..) => target!("DisentanglePorts"), 13 13 Self::NewBroadcastChannelRouter(..) => target!("NewBroadcastChannelRouter"), 14 14 Self::RemoveBroadcastChannelRouter(..) => target!("RemoveBroadcastChannelRouter"), ··· 19 19 Self::NewBroadcastChannelNameInRouter(..) => { 20 20 target!("NewBroadcastChannelNameInRouter") 21 21 }, 22 - @@ -142,6 +147,7 @@ 22 + @@ -143,6 +148,7 @@ 23 23 }, 24 24 Self::ScheduleBroadcast(..) => target!("ScheduleBroadcast"), 25 25 Self::BroadcastStorageEvent(..) => target!("BroadcastStorageEvent"), ··· 27 27 Self::ChangeRunningAnimationsState(..) => target!("ChangeRunningAnimationsState"), 28 28 Self::CreateCanvasPaintThread(..) => target!("CreateCanvasPaintThread"), 29 29 Self::Focus(..) => target!("Focus"), 30 - @@ -163,6 +169,8 @@ 30 + @@ -164,6 +170,8 @@ 31 31 Self::ScriptLoadedURLInIFrame(..) => target!("ScriptLoadedURLInIFrame"), 32 32 Self::ScriptNewIFrame(..) => target!("ScriptNewIFrame"), 33 33 Self::CreateAuxiliaryWebView(..) => target!("ScriptNewAuxiliary"), ··· 36 36 Self::ActivateDocument => target!("ActivateDocument"), 37 37 Self::SetDocumentState(..) => target!("SetDocumentState"), 38 38 Self::SetFinalUrl(..) => target!("SetFinalUrl"), 39 - @@ -185,6 +193,35 @@ 39 + @@ -186,6 +194,35 @@ 40 40 Self::RespondToScreenshotReadinessRequest(..) => { 41 41 target!("RespondToScreenshotReadinessRequest") 42 42 },
+7 -7
patches/components/layout/layout_impl.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -208,6 +208,10 @@ 4 - 5 - /// Handler for all Paint Timings 6 - paint_timing_handler: RefCell<Option<PaintTimingHandler>>, 3 + @@ -212,6 +212,10 @@ 4 + /// Whether accessibility is active in this layout. 5 + /// (Note: this is a temporary field which will be replaced with an optional accessibility tree member.) 6 + accessibility_active: Cell<bool>, 7 7 + 8 8 + /// The current page zoom for rendering (used by embedded webviews). 9 9 + /// When this changes, we need to trigger a new stacking context tree build. ··· 11 11 } 12 12 13 13 pub struct LayoutFactoryImpl(); 14 - @@ -248,12 +252,25 @@ 14 + @@ -252,12 +256,25 @@ 15 15 fn set_viewport_details(&mut self, viewport_details: ViewportDetails) -> bool { 16 16 let device = self.stylist.device_mut(); 17 17 let device_pixel_ratio = Scale::new(viewport_details.hidpi_scale_factor.get()); ··· 41 41 device.set_viewport_size(viewport_details.size); 42 42 device.set_device_pixel_ratio(device_pixel_ratio); 43 43 self.device_has_changed = true; 44 - @@ -764,6 +781,7 @@ 45 - previously_highlighted_dom_node: Cell::new(None), 44 + @@ -777,6 +794,7 @@ 46 45 paint_timing_handler: Default::default(), 47 46 user_stylesheets: config.user_stylesheets, 47 + accessibility_active: Cell::new(config.accessibility_active), 48 48 + page_zoom_for_rendering: Cell::new(config.viewport_details.page_zoom_for_rendering), 49 49 } 50 50 }
+1 -1
patches/components/script/dom/debuggerglobalscope.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -103,9 +103,11 @@ 3 + @@ -104,9 +104,11 @@ 4 4 None, 5 5 #[cfg(feature = "webgpu")] 6 6 gpu_id_hub,
+55 -47
patches/components/script/dom/document_event_handler.rs.patch
··· 663 663 + } 664 664 + 665 665 let TouchId(identifier) = event.touch_id; 666 - let event_name = match event.event_type { 667 - TouchEventType::Down => "touchstart", 668 - @@ -994,8 +1461,31 @@ 666 + 667 + let Some(element) = hit_test_result 668 + @@ -998,6 +1465,10 @@ 669 669 self.active_touch_points 670 670 .borrow_mut() 671 - .push(Dom::from_ref(&*touch)); 671 + .push(Dom::from_ref(&*pointer_touch)); 672 672 + 673 673 + // Start the long-press timer for context menu detection 674 674 + self.start_long_press_timer(event.touch_id, hit_test_result.point_in_frame); 675 - }, 676 - TouchEventType::Move => { 677 - + // Check if this is the tracked touch and if moved too far 678 - + let should_cancel = self 679 - + .long_press_state 680 - + .borrow() 681 - + .as_ref() 682 - + .is_some_and(|state| { 683 - + if state.touch_id == event.touch_id { 684 - + let dx = hit_test_result.point_in_frame.x - state.start_point.x; 685 - + let dy = hit_test_result.point_in_frame.y - state.start_point.y; 686 - + let distance = dx * dx + dy * dy; 687 - + distance > LONG_PRESS_MOVE_THRESHOLD 688 - + } else { 689 - + false 690 - + } 691 - + }); 692 675 + 693 - + if should_cancel { 694 - + self.cancel_long_press_timer(); 695 - + } 696 - + 697 - // Replace an existing touch point 698 - let mut active_touch_points = self.active_touch_points.borrow_mut(); 699 - match active_touch_points 700 - @@ -1007,6 +1497,17 @@ 701 - } 676 + (current_target, pointer_touch) 702 677 }, 703 - TouchEventType::Up | TouchEventType::Cancel => { 704 - + // Cancel the long-press timer if this is the tracked touch 705 - + let should_cancel = self 706 - + .long_press_state 707 - + .borrow() 708 - + .as_ref() 709 - + .is_some_and(|state| state.touch_id == event.touch_id); 678 + _ => { 679 + @@ -1030,14 +1501,45 @@ 680 + can_gc, 681 + ); 682 + 683 + - // Update or remove the stored touch 684 + + // Update or remove the stored touch and update the long-press timer state. 685 + match event.event_type { 686 + TouchEventType::Move => { 687 + active_touch_points[index] = Dom::from_ref(&*touch_with_touchstart_target); 688 + + // Check if this is the tracked touch and if moved too far 689 + + let should_cancel = 690 + + self.long_press_state 691 + + .borrow() 692 + + .as_ref() 693 + + .is_some_and(|state| { 694 + + if state.touch_id == event.touch_id { 695 + + let dx = 696 + + hit_test_result.point_in_frame.x - state.start_point.x; 697 + + let dy = 698 + + hit_test_result.point_in_frame.y - state.start_point.y; 699 + + let distance = dx * dx + dy * dy; 700 + + distance > LONG_PRESS_MOVE_THRESHOLD 701 + + } else { 702 + + false 703 + + } 704 + + }); 710 705 + 711 - + if should_cancel { 712 - + self.cancel_long_press_timer(); 713 - + } 706 + + if should_cancel { 707 + + self.cancel_long_press_timer(); 708 + + } 709 + }, 710 + TouchEventType::Up | TouchEventType::Cancel => { 711 + active_touch_points.swap_remove(index); 712 + self.remove_pointer_id_for_touch(identifier); 713 + + // Cancel the long-press timer if this is the tracked touch 714 + + let should_cancel = self 715 + + .long_press_state 716 + + .borrow() 717 + + .as_ref() 718 + + .is_some_and(|state| state.touch_id == event.touch_id); 714 719 + 715 - // Remove an existing touch point 716 - let mut active_touch_points = self.active_touch_points.borrow_mut(); 717 - match active_touch_points 718 - @@ -1051,6 +1552,19 @@ 719 - 720 + + if should_cancel { 721 + + self.cancel_long_press_timer(); 722 + + } 723 + }, 724 + TouchEventType::Down => unreachable!("Should have been handled above"), 725 + } 726 + @@ -1081,6 +1583,19 @@ 727 + ); 720 728 let event = touch_event.upcast::<Event>(); 721 - event.fire(&target, can_gc); 729 + event.fire(&touch_dispatch_target, can_gc); 722 730 + 723 731 + // If this touch triggered a context menu via long-press, prevent click synthesis 724 732 + if let InputEvent::Touch(ref touch_ev) = input_event.event.event { ··· 735 743 event.flags().into() 736 744 } 737 745 738 - @@ -1238,6 +1752,16 @@ 746 + @@ -1268,6 +1783,16 @@ 739 747 return Default::default(); 740 748 }; 741 749
+1 -1
patches/components/script/dom/globalscope.rs.patch
··· 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 - @@ -3092,6 +3106,16 @@ 38 + @@ -3091,6 +3105,16 @@ 39 39 self.inherited_secure_context 40 40 } 41 41
+1 -1
patches/components/script/dom/notification.rs.patch
··· 36 36 } 37 37 38 38 // TODO: step 7: If shown is false or oldNotification is non-null, 39 - @@ -854,6 +866,11 @@ 39 + @@ -859,6 +871,11 @@ 40 40 for (request, resource_type) in pending_requests { 41 41 self.fetch_and_show_when_ready(request, resource_type); 42 42 }
+3 -3
patches/components/script/dom/permissions.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -312,6 +312,7 @@ 3 + @@ -319,6 +319,7 @@ 4 4 if pref!(dom_permissions_testing_allowed_in_nonsecure_contexts) { 5 5 return PermissionState::Granted; 6 6 } ··· 8 8 return PermissionState::Denied; 9 9 } 10 10 11 - @@ -324,6 +325,10 @@ 11 + @@ -331,6 +332,10 @@ 12 12 // 2. If document is not allowed to use feature, return "denied". 13 13 if let Some(window) = global_scope.downcast::<Window>() { 14 14 if !window.Document().allowed_to_use_feature(feature) { ··· 19 19 return PermissionState::Denied; 20 20 } 21 21 } 22 - @@ -354,12 +359,24 @@ 22 + @@ -361,12 +366,24 @@ 23 23 return PermissionState::Denied; 24 24 }; 25 25 let (sender, receiver) = generic_channel::channel().expect("Failed to create IPC channel!");
+2 -2
patches/components/script/messaging.rs.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -106,6 +106,8 @@ 4 - ScriptThreadMessage::DestroyUserContentManager(..) => None, 3 + @@ -107,6 +107,8 @@ 5 4 ScriptThreadMessage::AccessibilityTreeUpdate(..) => None, 6 5 ScriptThreadMessage::UpdatePinchZoomInfos(id, _) => Some(*id), 6 + ScriptThreadMessage::SetAccessibilityActive(..) => None, 7 7 + ScriptThreadMessage::DispatchEmbeddedWebViewEvent { parent, .. } => Some(*parent), 8 8 + ScriptThreadMessage::DispatchServoError(..) => None, 9 9 },
+12 -12
patches/components/script/script_thread.rs.patch
··· 29 29 }; 30 30 use servo_arc::Arc as ServoArc; 31 31 +use servo_config::pref_util::PrefValue; 32 - use servo_config::{opts, prefs}; 32 + use servo_config::{opts, pref, prefs}; 33 33 use servo_url::{ImmutableOrigin, MutableOrigin, OriginSnapshot, ServoUrl}; 34 34 use storage_traits::StorageThreads; 35 - @@ -1924,11 +1925,22 @@ 35 + @@ -1932,11 +1933,22 @@ 36 36 self.handle_refresh_cursor(pipeline_id); 37 37 }, 38 38 ScriptThreadMessage::PreferencesUpdated(updates) => { ··· 59 59 }, 60 60 ScriptThreadMessage::ForwardKeyboardScroll(pipeline_id, scroll) => { 61 61 if let Some(document) = self.documents.borrow().find_document(pipeline_id) { 62 - @@ -1963,6 +1975,16 @@ 63 - ScriptThreadMessage::UpdatePinchZoomInfos(id, pinch_zoom_infos) => { 64 - self.handle_update_pinch_zoom_infos(id, pinch_zoom_infos, CanGc::from_cx(cx)); 62 + @@ -1974,6 +1986,16 @@ 63 + ScriptThreadMessage::SetAccessibilityActive(active) => { 64 + self.set_accessibility_active(active); 65 65 }, 66 66 + ScriptThreadMessage::DispatchEmbeddedWebViewEvent { 67 67 + target, ··· 76 76 } 77 77 } 78 78 79 - @@ -2930,6 +2952,9 @@ 79 + @@ -2963,6 +2985,9 @@ 80 80 .documents 81 81 .borrow() 82 82 .find_iframe(parent_pipeline_id, browsing_context_id); ··· 86 86 if let Some(frame_element) = frame_element { 87 87 frame_element.update_pipeline_id(new_pipeline_id, reason, can_gc); 88 88 } 89 - @@ -2948,6 +2973,7 @@ 89 + @@ -2981,6 +3006,7 @@ 90 90 // is no need to pass along existing opener information that 91 91 // will be discarded. 92 92 None, ··· 94 94 ); 95 95 } 96 96 } 97 - @@ -3227,6 +3253,44 @@ 97 + @@ -3260,6 +3286,44 @@ 98 98 } 99 99 } 100 100 ··· 139 139 fn ask_constellation_for_top_level_info( 140 140 &self, 141 141 sender_webview_id: WebViewId, 142 - @@ -3339,7 +3403,13 @@ 142 + @@ -3373,7 +3437,13 @@ 143 143 self.senders.pipeline_to_embedder_sender.clone(), 144 144 self.senders.constellation_sender.clone(), 145 145 incomplete.pipeline_id, ··· 154 154 incomplete.viewport_details, 155 155 origin.clone(), 156 156 final_url.clone(), 157 - @@ -3361,6 +3431,8 @@ 157 + @@ -3395,6 +3465,8 @@ 158 158 #[cfg(feature = "webgpu")] 159 159 self.gpu_id_hub.clone(), 160 160 incomplete.load_data.inherited_secure_context, ··· 163 163 incomplete.theme, 164 164 self.this.clone(), 165 165 ); 166 - @@ -3382,6 +3454,7 @@ 166 + @@ -3416,6 +3488,7 @@ 167 167 incomplete.webview_id, 168 168 incomplete.parent_info, 169 169 incomplete.opener, ··· 171 171 ); 172 172 if window_proxy.parent().is_some() { 173 173 // https://html.spec.whatwg.org/multipage/#navigating-across-documents:delaying-load-events-mode-2 174 - @@ -4083,6 +4156,24 @@ 174 + @@ -4132,6 +4205,24 @@ 175 175 document.event_handler().handle_refresh_cursor(); 176 176 } 177 177
+1 -1
patches/components/script_bindings/codegen/Bindings.conf.patch
··· 1 1 --- original 2 2 +++ modified 3 - @@ -259,6 +259,10 @@ 3 + @@ -261,6 +261,10 @@ 4 4 'canGc': ['CheckValidity', 'GetLabels', 'GetValidity', 'SetValidity', 'ReportValidity', 'States'], 5 5 }, 6 6
+2 -2
patches/components/servo/servo.rs.patch
··· 133 133 } 134 134 } 135 135 } 136 - @@ -929,6 +999,14 @@ 137 - self.0.site_data_manager.borrow() 136 + @@ -936,6 +1006,14 @@ 137 + )); 138 138 } 139 139 140 140 + pub fn spawn_task<F>(task: F)
+3 -3
patches/components/shared/constellation/lib.rs.patch
··· 93 93 /// Messages to the Constellation from the embedding layer, whether from `ServoRenderer` or 94 94 /// from `libservo` itself. 95 95 #[derive(IntoStaticStr)] 96 - @@ -116,6 +178,9 @@ 97 - UserContentManagerAction(UserContentManagerId, UserContentManagerAction), 98 - /// Update pinch zoom details stored in the top level window 96 + @@ -118,6 +180,9 @@ 99 97 UpdatePinchZoomInfos(PipelineId, PinchZoomInfos), 98 + /// Activate or deactivate accessibility features. 99 + SetAccessibilityActive(bool), 100 100 + /// Notify all script threads about a Servo error, so they can dispatch `servoerror` events 101 101 + /// to all `navigator.embedder` instances. 102 102 + NotifyServoError(ServoErrorType, String),
+3 -3
patches/components/shared/script/lib.rs.patch
··· 35 35 } 36 36 37 37 /// When a pipeline is closed, should its browsing context be discarded too? 38 - @@ -306,6 +314,19 @@ 39 - /// Update the pinch zoom details of a pipeline. Each `Window` stores a `VisualViewport` DOM 40 - /// instance that gets updated according to the changes from the `Compositor``. 38 + @@ -308,6 +316,19 @@ 41 39 UpdatePinchZoomInfos(PipelineId, PinchZoomInfos), 40 + /// Activate or deactivate accessibility features. 41 + SetAccessibilityActive(bool), 42 42 + /// Dispatch an event on an embedded webview's iframe element. 43 43 + /// This is sent from the constellation when it receives an `EmbeddedWebViewNotification` 44 44 + /// from an embedded webview's script thread.