-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Closed
Labels
A-constellationInvolves the constellationInvolves the constellation
Description
DOM APIs like History.replaceState cause active session history entries to be updated with a new URL. The constellation tracks this in
servo/components/constellation/constellation.rs
Lines 4210 to 4215 in ca254c1
| let webview_id = match self.pipelines.get_mut(&pipeline_id) { | |
| Some(pipeline) => { | |
| pipeline.history_state_id = Some(history_state_id); | |
| pipeline.url = url.clone(); | |
| pipeline.webview_id | |
| }, |
servo/components/constellation/constellation.rs
Lines 5479 to 5486 in ca254c1
| let load_data = match self.pipelines.get(&pipeline_id) { | |
| Some(pipeline) => pipeline.load_data.clone(), | |
| None => return warn!("{}: Discarding closed pipeline", pipeline_id), | |
| }; | |
| webview.session_history.replace_reloader( | |
| NeedsToReload::No(pipeline_id), | |
| NeedsToReload::Yes(pipeline_id, load_data), | |
| ); |
We already handle this properly when evicting session history entries when the session history reaches the maximum size:
servo/components/constellation/constellation.rs
Lines 5018 to 5027 in ca254c1
| let load_data = match self.pipelines.get(&evicted_id) { | |
| Some(pipeline) => { | |
| let mut load_data = pipeline.load_data.clone(); | |
| load_data.url = pipeline.url.clone(); | |
| load_data | |
| }, | |
| None => continue, | |
| }; | |
| dead_pipelines.push((evicted_id, NeedsToReload::Yes(evicted_id, load_data))); |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-constellationInvolves the constellationInvolves the constellation