diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/htmlformelement.rs | 4 | ||||
-rw-r--r-- | components/script/dom/htmliframeelement.rs | 31 | ||||
-rw-r--r-- | components/script/dom/htmlmetaelement.rs | 4 | ||||
-rw-r--r-- | components/script/dom/location.rs | 16 | ||||
-rw-r--r-- | components/script/dom/window.rs | 8 | ||||
-rw-r--r-- | components/script/dom/windowproxy.rs | 13 | ||||
-rw-r--r-- | components/script/links.rs | 19 | ||||
-rw-r--r-- | components/script/script_thread.rs | 20 |
8 files changed, 60 insertions, 55 deletions
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index dd278cc8ad3..0467d30bdf6 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -15,7 +15,7 @@ use js::rust::HandleObject; use mime::{self, Mime}; use net_traits::http_percent_encode; use net_traits::request::Referrer; -use script_traits::{HistoryEntryReplacement, LoadData, LoadOrigin}; +use script_traits::{LoadData, LoadOrigin, NavigationHistoryBehavior}; use servo_atoms::Atom; use servo_rand::random; use style::attr::AttrValue; @@ -1030,7 +1030,7 @@ impl HTMLFormElement { window .root() .load_url( - HistoryEntryReplacement::Disabled, + NavigationHistoryBehavior::Push, false, load_data, CanGc::note(), diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index f12f7daea40..b3cf46343b5 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -13,8 +13,8 @@ use net_traits::ReferrerPolicy; use profile_traits::ipc as ProfiledIpc; use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed}; use script_traits::{ - HistoryEntryReplacement, IFrameLoadInfo, IFrameLoadInfoWithData, JsEvalResult, LoadData, - LoadOrigin, NewLayoutInfo, ScriptMsg, UpdatePipelineIdReason, WindowSizeData, + IFrameLoadInfo, IFrameLoadInfoWithData, JsEvalResult, LoadData, LoadOrigin, + NavigationHistoryBehavior, NewLayoutInfo, ScriptMsg, UpdatePipelineIdReason, WindowSizeData, }; use servo_atoms::Atom; use servo_url::ServoUrl; @@ -117,17 +117,22 @@ impl HTMLIFrameElement { pub fn navigate_or_reload_child_browsing_context( &self, load_data: LoadData, - replace: HistoryEntryReplacement, + history_handling: NavigationHistoryBehavior, can_gc: CanGc, ) { - self.start_new_pipeline(load_data, PipelineType::Navigation, replace, can_gc); + self.start_new_pipeline( + load_data, + PipelineType::Navigation, + history_handling, + can_gc, + ); } fn start_new_pipeline( &self, mut load_data: LoadData, pipeline_type: PipelineType, - replace: HistoryEntryReplacement, + history_handling: NavigationHistoryBehavior, can_gc: CanGc, ) { let sandboxed = if self.is_sandboxed() { @@ -191,7 +196,7 @@ impl HTMLIFrameElement { new_pipeline_id, is_private: false, // FIXME inherited_secure_context: load_data.inherited_secure_context, - replace, + history_handling, }; let window_size = WindowSizeData { @@ -269,7 +274,7 @@ impl HTMLIFrameElement { load_data.srcdoc = String::from(element.get_string_attribute(&local_name!("srcdoc"))); self.navigate_or_reload_child_browsing_context( load_data, - HistoryEntryReplacement::Disabled, + NavigationHistoryBehavior::Push, can_gc, ); return; @@ -361,12 +366,14 @@ impl HTMLIFrameElement { // see https://html.spec.whatwg.org/multipage/#the-iframe-element:about:blank-3 let is_about_blank = pipeline_id.is_some() && pipeline_id == self.about_blank_pipeline_id.get(); - let replace = if is_about_blank { - HistoryEntryReplacement::Enabled + + let history_handling = if is_about_blank { + NavigationHistoryBehavior::Replace } else { - HistoryEntryReplacement::Disabled + NavigationHistoryBehavior::Push }; - self.navigate_or_reload_child_browsing_context(load_data, replace, can_gc); + + self.navigate_or_reload_child_browsing_context(load_data, history_handling, can_gc); } fn create_nested_browsing_context(&self, can_gc: CanGc) { @@ -407,7 +414,7 @@ impl HTMLIFrameElement { self.start_new_pipeline( load_data, PipelineType::InitialAboutBlank, - HistoryEntryReplacement::Disabled, + NavigationHistoryBehavior::Push, can_gc, ); } diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index e3df38f9f91..6a8863cbf84 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -10,7 +10,7 @@ use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; use js::rust::HandleObject; use regex::bytes::Regex; -use script_traits::HistoryEntryReplacement; +use script_traits::NavigationHistoryBehavior; use servo_url::ServoUrl; use style::str::HTML_SPACE_CHARACTERS; @@ -49,7 +49,7 @@ impl RefreshRedirectDue { pub fn invoke(self, can_gc: CanGc) { self.window.Location().navigate( self.url.clone(), - HistoryEntryReplacement::Enabled, + NavigationHistoryBehavior::Replace, NavigationType::DeclarativeRefresh, can_gc, ); diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs index a0ad9f583d8..d8e5d823e3c 100644 --- a/components/script/dom/location.rs +++ b/components/script/dom/location.rs @@ -4,7 +4,7 @@ use dom_struct::dom_struct; use net_traits::request::Referrer; -use script_traits::{HistoryEntryReplacement, LoadData, LoadOrigin}; +use script_traits::{LoadData, LoadOrigin, NavigationHistoryBehavior}; use servo_url::{MutableOrigin, ServoUrl}; use crate::dom::bindings::codegen::Bindings::LocationBinding::LocationMethods; @@ -69,7 +69,7 @@ impl Location { pub fn navigate( &self, url: ServoUrl, - replacement_flag: HistoryEntryReplacement, + history_handling: NavigationHistoryBehavior, navigation_type: NavigationType, can_gc: CanGc, ) { @@ -131,7 +131,7 @@ impl Location { None, // Top navigation doesn't inherit secure context ); self.window - .load_url(replacement_flag, reload_triggered, load_data, can_gc); + .load_url(history_handling, reload_triggered, load_data, can_gc); } /// Get if this `Location`'s [relevant `Document`][1] is non-null. @@ -233,7 +233,7 @@ impl Location { // Step 6: Location-object navigate to copyURL. self.navigate( copy_url, - HistoryEntryReplacement::Disabled, + NavigationHistoryBehavior::Push, NavigationType::Normal, can_gc, ); @@ -254,7 +254,7 @@ impl Location { let url = self.window.get_url(); self.navigate( url, - HistoryEntryReplacement::Enabled, + NavigationHistoryBehavior::Replace, NavigationType::ReloadByConstellation, can_gc, ); @@ -290,7 +290,7 @@ impl LocationMethods<crate::DomTypeHolder> for Location { let url = self.get_url_if_same_origin()?; self.navigate( url, - HistoryEntryReplacement::Enabled, + NavigationHistoryBehavior::Replace, NavigationType::ReloadByScript, can_gc, ); @@ -312,7 +312,7 @@ impl LocationMethods<crate::DomTypeHolder> for Location { // the replacement flag set. self.navigate( url, - HistoryEntryReplacement::Enabled, + NavigationHistoryBehavior::Replace, NavigationType::Normal, can_gc, ); @@ -424,7 +424,7 @@ impl LocationMethods<crate::DomTypeHolder> for Location { // Step 3: Location-object navigate to the resulting URL record. self.navigate( url, - HistoryEntryReplacement::Disabled, + NavigationHistoryBehavior::Push, NavigationType::Normal, can_gc, ); diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 666762bc549..d9b2a86e855 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -56,7 +56,7 @@ use script_layout_interface::{ }; use script_traits::webdriver_msg::{WebDriverJSError, WebDriverJSResult}; use script_traits::{ - ConstellationControlMsg, DocumentState, HistoryEntryReplacement, IFrameSizeMsg, LoadData, + ConstellationControlMsg, DocumentState, IFrameSizeMsg, LoadData, NavigationHistoryBehavior, ScriptMsg, ScriptToConstellationChan, ScrollState, StructuredSerializedData, Theme, TimerSchedulerMsg, WindowSizeData, WindowSizeType, }; @@ -2387,7 +2387,7 @@ impl Window { /// <https://html.spec.whatwg.org/multipage/#navigating-across-documents> pub fn load_url( &self, - replace: HistoryEntryReplacement, + history_handling: NavigationHistoryBehavior, force_reload: bool, load_data: LoadData, can_gc: CanGc, @@ -2403,7 +2403,7 @@ impl Window { if let Some(fragment) = load_data.url.fragment() { self.send_to_constellation(ScriptMsg::NavigatedToFragment( load_data.url.clone(), - replace, + history_handling, )); doc.check_and_scroll_fragment(fragment, can_gc); let this = Trusted::new(self); @@ -2462,7 +2462,7 @@ impl Window { window_proxy.browsing_context_id(), pipeline_id, load_data, - replace, + history_handling, ); }; } diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs index 02267471930..a85ce40a919 100644 --- a/components/script/dom/windowproxy.rs +++ b/components/script/dom/windowproxy.rs @@ -31,8 +31,8 @@ use js::JSCLASS_IS_GLOBAL; use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use net_traits::request::Referrer; use script_traits::{ - AuxiliaryBrowsingContextLoadInfo, HistoryEntryReplacement, LoadData, LoadOrigin, NewLayoutInfo, - ScriptMsg, + AuxiliaryBrowsingContextLoadInfo, LoadData, LoadOrigin, NavigationHistoryBehavior, + NewLayoutInfo, ScriptMsg, }; use serde::{Deserialize, Serialize}; use servo_url::{ImmutableOrigin, ServoUrl}; @@ -526,12 +526,13 @@ impl WindowProxy { referrer_policy, Some(secure), ); - let replacement_flag = if new { - HistoryEntryReplacement::Enabled + let history_handling = if new { + NavigationHistoryBehavior::Replace } else { - HistoryEntryReplacement::Disabled + NavigationHistoryBehavior::Push }; - target_window.load_url(replacement_flag, false, load_data, can_gc); + + target_window.load_url(history_handling, false, load_data, can_gc); } if noopener { // Step 15 (Dis-owning has been done in create_auxiliary_browsing_context). diff --git a/components/script/links.rs b/components/script/links.rs index b004f0bcd52..8312bd13130 100644 --- a/components/script/links.rs +++ b/components/script/links.rs @@ -7,7 +7,7 @@ use html5ever::{local_name, namespace_url, ns}; use malloc_size_of::malloc_size_of_is_0; use net_traits::request::Referrer; -use script_traits::{HistoryEntryReplacement, LoadData, LoadOrigin}; +use script_traits::{LoadData, LoadOrigin, NavigationHistoryBehavior}; use style::str::HTML_SPACE_CHARACTERS; use crate::dom::bindings::codegen::Bindings::AttrBinding::Attr_Binding::AttrMethods; @@ -367,20 +367,17 @@ pub fn follow_hyperlink( let noopener = relations.get_element_noopener(target_attribute_value.as_ref()); // Step 7. - let (maybe_chosen, replace) = match target_attribute_value { + let (maybe_chosen, history_handling) = match target_attribute_value { Some(name) => { let (maybe_chosen, new) = source.choose_browsing_context(name, noopener); - let replace = if new { - HistoryEntryReplacement::Enabled + let history_handling = if new { + NavigationHistoryBehavior::Replace } else { - HistoryEntryReplacement::Disabled + NavigationHistoryBehavior::Push }; - (maybe_chosen, replace) + (maybe_chosen, history_handling) }, - None => ( - Some(window.window_proxy()), - HistoryEntryReplacement::Disabled, - ), + None => (Some(window.window_proxy()), NavigationHistoryBehavior::Push), }; // Step 8. @@ -433,7 +430,7 @@ pub fn follow_hyperlink( let target = Trusted::new(target_window); let task = task!(navigate_follow_hyperlink: move || { debug!("following hyperlink to {}", load_data.url); - target.root().load_url(replace, false, load_data, CanGc::note()); + target.root().load_url(history_handling, false, load_data, CanGc::note()); }); target_window .task_manager() diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 2a72c475688..97fa9c55af3 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -82,9 +82,9 @@ use script_layout_interface::{ use script_traits::webdriver_msg::WebDriverScriptCommand; use script_traits::{ CompositorEvent, ConstellationControlMsg, DiscardBrowsingContext, DocumentActivity, - EventResult, HistoryEntryReplacement, InitialScriptState, JsEvalResult, LayoutMsg, LoadData, - LoadOrigin, MediaSessionActionType, MouseButton, MouseEventType, NewLayoutInfo, Painter, - ProgressiveWebMetricType, ScriptMsg, ScriptToConstellationChan, ScrollState, + EventResult, InitialScriptState, JsEvalResult, LayoutMsg, LoadData, LoadOrigin, + MediaSessionActionType, MouseButton, MouseEventType, NavigationHistoryBehavior, NewLayoutInfo, + Painter, ProgressiveWebMetricType, ScriptMsg, ScriptToConstellationChan, ScrollState, StructuredSerializedData, Theme, TimerSchedulerMsg, TouchEventType, TouchId, UntrustedNodeAddress, UpdatePipelineIdReason, WheelDelta, WindowSizeData, WindowSizeType, }; @@ -915,7 +915,7 @@ impl ScriptThread { browsing_context: BrowsingContextId, pipeline_id: PipelineId, mut load_data: LoadData, - replace: HistoryEntryReplacement, + history_handling: NavigationHistoryBehavior, ) { with_script_thread(|script_thread| { let is_javascript = load_data.url.scheme() == "javascript"; @@ -936,7 +936,7 @@ impl ScriptThread { if ScriptThread::check_load_origin(&load_data.load_origin, &window.get_url().origin()) { ScriptThread::eval_js_url(&trusted_global.root(), &mut load_data, CanGc::note()); sender - .send((pipeline_id, ScriptMsg::LoadUrl(load_data, replace))) + .send((pipeline_id, ScriptMsg::LoadUrl(load_data, history_handling))) .unwrap(); } } @@ -955,7 +955,7 @@ impl ScriptThread { script_thread .script_sender - .send((pipeline_id, ScriptMsg::LoadUrl(load_data, replace))) + .send((pipeline_id, ScriptMsg::LoadUrl(load_data, history_handling))) .expect("Sending a LoadUrl message to the constellation failed"); } }); @@ -2242,12 +2242,12 @@ impl ScriptThread { parent_pipeline_id, browsing_context_id, load_data, - replace, + history_handling, ) => self.handle_navigate_iframe( parent_pipeline_id, browsing_context_id, load_data, - replace, + history_handling, can_gc, ), ConstellationControlMsg::UnloadDocument(pipeline_id) => { @@ -3923,7 +3923,7 @@ impl ScriptThread { parent_pipeline_id: PipelineId, browsing_context_id: BrowsingContextId, load_data: LoadData, - replace: HistoryEntryReplacement, + history_handling: NavigationHistoryBehavior, can_gc: CanGc, ) { let iframe = self @@ -3931,7 +3931,7 @@ impl ScriptThread { .borrow() .find_iframe(parent_pipeline_id, browsing_context_id); if let Some(iframe) = iframe { - iframe.navigate_or_reload_child_browsing_context(load_data, replace, can_gc); + iframe.navigate_or_reload_child_browsing_context(load_data, history_handling, can_gc); } } |