diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-08-19 01:40:28 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-08-19 01:40:28 -0600 |
commit | 70b9922eb021a41ebdd9f54a4db0e9ddfb17786a (patch) | |
tree | d3e8a28e54cc3941a3126fcfd13f3be108dbc578 /components/script/script_task.rs | |
parent | 19d466b06250f10169e88fc7f0b447c7f2f8209e (diff) | |
parent | af31e8ed0f3f74908fb2c970e8b2f254ba0d70bd (diff) | |
download | servo-70b9922eb021a41ebdd9f54a4db0e9ddfb17786a.tar.gz servo-70b9922eb021a41ebdd9f54a4db0e9ddfb17786a.zip |
Auto merge of #7260 - notriddle:issue_7169, r=Ms2ger
Navigate to a new page even when there's a fragment.
Closes #7169
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7260)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/script_task.rs')
-rw-r--r-- | components/script/script_task.rs | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 8d342a9eaf5..438efaed0b1 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -82,6 +82,7 @@ use util::opts; use euclid::Rect; use euclid::point::Point2D; use hyper::header::{LastModified, Headers}; +use hyper::method::Method; use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::router::ROUTER; use js::glue::CollectServoSizes; @@ -1727,16 +1728,24 @@ impl ScriptTask { /// for the given pipeline (specifically the "navigate" algorithm). fn handle_navigate(&self, pipeline_id: PipelineId, subpage_id: Option<SubpageId>, load_data: LoadData) { // Step 8. - if let Some(fragment) = load_data.url.fragment { - let page = get_page(&self.root_page(), pipeline_id); - let document = page.document(); - match document.r().find_fragment_node(fragment) { - Some(ref node) => { - self.scroll_fragment_point(pipeline_id, node.r()); + { + let nurl = &load_data.url; + if let Some(ref fragment) = nurl.fragment { + let page = get_page(&self.root_page(), pipeline_id); + let document = page.document(); + let document = document.r(); + let url = document.url(); + if url.scheme == nurl.scheme && url.scheme_data == nurl.scheme_data && + url.query == nurl.query && load_data.method == Method::Get { + match document.find_fragment_node(&*fragment) { + Some(ref node) => { + self.scroll_fragment_point(pipeline_id, node.r()); + } + None => {} + } + return; } - None => {} } - return; } match subpage_id { @@ -1767,7 +1776,7 @@ impl ScriptTask { let document = page.document(); let fragment_node = window.r().steal_fragment_name() - .and_then(|name| document.r().find_fragment_node(name)); + .and_then(|name| document.r().find_fragment_node(&*name)); match fragment_node { Some(ref node) => self.scroll_fragment_point(pipeline_id, node.r()), None => {} |