aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/window.rs11
-rw-r--r--components/script/script_task.rs10
2 files changed, 12 insertions, 9 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 7ac5ebbc5b9..268819f008d 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -372,10 +372,13 @@ impl<'a> WindowHelpers for JSRef<'a, Window> {
let url = UrlParser::new().base_url(&base_url).parse(href.as_slice());
// FIXME: handle URL parse errors more gracefully.
let url = url.unwrap();
- if href.as_slice().starts_with("#") {
- self.script_chan.send(ScriptMsg::TriggerFragment(self.page.id, url));
- } else {
- self.script_chan.send(ScriptMsg::TriggerLoad(self.page.id, LoadData::new(url)));
+ match url.fragment {
+ Some(fragment) => {
+ self.script_chan.send(ScriptMsg::TriggerFragment(self.page.id, fragment));
+ },
+ None => {
+ self.script_chan.send(ScriptMsg::TriggerLoad(self.page.id, LoadData::new(url)));
+ }
}
}
diff --git a/components/script/script_task.rs b/components/script/script_task.rs
index 2b2b472f7c5..ada3de61e2a 100644
--- a/components/script/script_task.rs
+++ b/components/script/script_task.rs
@@ -108,7 +108,7 @@ pub trait Runnable {
pub enum ScriptMsg {
/// Acts on a fragment URL load on the specified pipeline (only dispatched
/// to ScriptTask).
- TriggerFragment(PipelineId, Url),
+ TriggerFragment(PipelineId, String),
/// Begins a content-initiated load on the specified pipeline (only
/// dispatched to ScriptTask).
TriggerLoad(PipelineId, LoadData),
@@ -609,8 +609,8 @@ impl ScriptTask {
match msg {
ScriptMsg::TriggerLoad(id, load_data) =>
self.trigger_load(id, load_data),
- ScriptMsg::TriggerFragment(id, url) =>
- self.trigger_fragment(id, url),
+ ScriptMsg::TriggerFragment(id, fragment) =>
+ self.trigger_fragment(id, fragment),
ScriptMsg::FireTimer(TimerSource::FromWindow(id), timer_id) =>
self.handle_fire_timer_msg(id, timer_id),
ScriptMsg::FireTimer(TimerSource::FromWorker, _) =>
@@ -1100,9 +1100,9 @@ impl ScriptTask {
/// The entry point for content to notify that a fragment url has been requested
/// for the given pipeline.
- fn trigger_fragment(&self, pipeline_id: PipelineId, url: Url) {
+ fn trigger_fragment(&self, pipeline_id: PipelineId, fragment: String) {
let page = get_page(&*self.page.borrow(), pipeline_id);
- match page.find_fragment_node(url.fragment.unwrap()).root() {
+ match page.find_fragment_node(fragment).root() {
Some(node) => {
self.scroll_fragment_point(pipeline_id, node.r());
}