aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/script_task.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-05-07 00:46:21 -0400
committerbors-servo <release+servo@mozilla.com>2014-05-07 00:46:21 -0400
commitdc49e7d1a021f0b1513492a9f01febae66796712 (patch)
treebb3c7141c9e994e558cfbcf0fd2442698ccd1c60 /src/components/script/script_task.rs
parent38bf7fd0982a71151630753982af36badd9c7c24 (diff)
parent87e6921d46e5c02c0a7b0f5a1e64a5e639929680 (diff)
downloadservo-dc49e7d1a021f0b1513492a9f01febae66796712.tar.gz
servo-dc49e7d1a021f0b1513492a9f01febae66796712.zip
auto merge of #2340 : glennw/servo/js-click-assert, r=jdm
Diffstat (limited to 'src/components/script/script_task.rs')
-rw-r--r--src/components/script/script_task.rs28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs
index 32a51f33c92..a46e31ce7aa 100644
--- a/src/components/script/script_task.rs
+++ b/src/components/script/script_task.rs
@@ -1125,25 +1125,19 @@ impl ScriptTask {
match page.hit_test(&point) {
Some(node_address) => {
debug!("node address is {:?}", node_address);
- let mut node =
- node::from_untrusted_node_address(self.js_runtime.deref().ptr,
- node_address).root();
- debug!("clicked on {:s}", node.deref().debug_str());
-
- // Traverse node generations until a node that is an element is
- // found.
- while !node.deref().is_element() {
- match node.deref().parent_node() {
- Some(parent) => node = parent.root(),
- None => break,
- }
- }
- if node.deref().is_element() {
- let element: &JSRef<Element> = ElementCast::to_ref(&*node).unwrap();
- if "a" == element.deref().local_name {
- self.load_url_from_element(page, element)
+ let temp_node =
+ node::from_untrusted_node_address(
+ self.js_runtime.deref().ptr, node_address);
+
+ let maybe_node = temp_node.root().ancestors().find(|node| node.is_anchor_element());
+ match maybe_node {
+ Some(node) => {
+ debug!("clicked on {:s}", node.debug_str());
+ let element: &JSRef<Element> = ElementCast::to_ref(&node).unwrap();
+ self.load_url_from_element(page, element);
}
+ None => {}
}
}