mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
auto merge of #5111 : KiChjang/servo/step-1-anchor, r=Manishearth
Fixes #4871
This commit is contained in:
commit
fed878710c
2 changed files with 21 additions and 2 deletions
|
@ -189,6 +189,7 @@ pub trait DocumentHelpers<'a> {
|
|||
fn window(self) -> Temporary<Window>;
|
||||
fn encoding_name(self) -> Ref<'a, DOMString>;
|
||||
fn is_html_document(self) -> bool;
|
||||
fn is_fully_active(self) -> bool;
|
||||
fn url(self) -> Url;
|
||||
fn quirks_mode(self) -> QuirksMode;
|
||||
fn set_quirks_mode(self, mode: QuirksMode);
|
||||
|
@ -232,6 +233,21 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
|||
self.is_html_document
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/browsers.html#fully-active
|
||||
fn is_fully_active(self) -> bool {
|
||||
let window = self.window.root();
|
||||
let window = window.r();
|
||||
let browser_context = window.browser_context();
|
||||
let browser_context = browser_context.as_ref().unwrap();
|
||||
let active_document = browser_context.active_document().root();
|
||||
|
||||
if self.clone() != active_document.r() {
|
||||
return false;
|
||||
}
|
||||
// FIXME: It should also check whether the browser context is top-level or not
|
||||
true
|
||||
}
|
||||
|
||||
// http://dom.spec.whatwg.org/#dom-document-url
|
||||
fn url(self) -> Url {
|
||||
self.url.clone()
|
||||
|
|
|
@ -113,7 +113,11 @@ impl<'a> Activatable for JSRef<'a, HTMLAnchorElement> {
|
|||
|
||||
//https://html.spec.whatwg.org/multipage/semantics.html#the-a-element:activation-behaviour
|
||||
fn activation_behavior(&self) {
|
||||
//TODO: Step 1. If the node document is not fully active, abort.
|
||||
//Step 1. If the node document is not fully active, abort.
|
||||
let doc = document_from_node(*self).root();
|
||||
if !doc.r().is_fully_active() {
|
||||
return;
|
||||
}
|
||||
//TODO: Step 2. Check if browsing context is specified and act accordingly.
|
||||
//TODO: Step 3. Handle <img ismap/>.
|
||||
//TODO: Step 4. Download the link is `download` attribute is set.
|
||||
|
@ -123,7 +127,6 @@ impl<'a> Activatable for JSRef<'a, HTMLAnchorElement> {
|
|||
Some(ref href) => {
|
||||
let value = href.r().Value();
|
||||
debug!("clicked on link to {}", value);
|
||||
let doc = document_from_node(*self).root();
|
||||
doc.r().load_anchor_href(value);
|
||||
}
|
||||
None => ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue