Skip to content

Commit

Permalink
Make Document::DefaultView return a null value when there's no browsi…
Browse files Browse the repository at this point in the history
…ng context
  • Loading branch information
kevgs committed Jun 8, 2016
1 parent a807679 commit 3bb093c
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 28 deletions.
8 changes: 6 additions & 2 deletions components/script/dom/document.rs
Expand Up @@ -2551,8 +2551,12 @@ impl DocumentMethods for Document {
}

// https://html.spec.whatwg.org/multipage/#dom-document-defaultview
fn DefaultView(&self) -> Root<Window> {
Root::from_ref(&*self.window)
fn GetDefaultView(&self) -> Option<Root<Window>> {
if self.browsing_context.is_none() {
None
} else {
Some(Root::from_ref(&*self.window))
}
}

// https://html.spec.whatwg.org/multipage/#dom-document-cookie
Expand Down
25 changes: 20 additions & 5 deletions components/script/dom/element.rs
Expand Up @@ -1297,7 +1297,10 @@ impl Element {
}

// Step 5
let win = doc.DefaultView();
let win = match doc.GetDefaultView() {
None => return,
Some(win) => win,
};

// Step 7
if *self.root_element() == *self {
Expand Down Expand Up @@ -1635,7 +1638,10 @@ impl ElementMethods for Element {
}

// Step 3
let win = doc.DefaultView();
let win = match doc.GetDefaultView() {
None => return 0.0,
Some(win) => win,
};

// Step 5
if *self.root_element() == *self {
Expand Down Expand Up @@ -1683,7 +1689,10 @@ impl ElementMethods for Element {
}

// Step 5
let win = doc.DefaultView();
let win = match doc.GetDefaultView() {
None => return,
Some(win) => win,
};

// Step 7
if *self.root_element() == *self {
Expand Down Expand Up @@ -1721,7 +1730,10 @@ impl ElementMethods for Element {
}

// Step 3
let win = doc.DefaultView();
let win = match doc.GetDefaultView() {
None => return 0.0,
Some(win) => win,
};

// Step 5
if *self.root_element() == *self {
Expand Down Expand Up @@ -1769,7 +1781,10 @@ impl ElementMethods for Element {
}

// Step 5
let win = doc.DefaultView();
let win = match doc.GetDefaultView() {
None => return,
Some(win) => win,
};

// Step 7
if *self.root_element() == *self {
Expand Down
2 changes: 1 addition & 1 deletion components/script/dom/webidls/Document.webidl
Expand Up @@ -118,7 +118,7 @@ partial /*sealed*/ interface Document {
// void writeln(DOMString... text);

// user interaction
readonly attribute Window/*Proxy?*/ defaultView;
readonly attribute Window?/*Proxy?*/ defaultView;
readonly attribute Element? activeElement;
boolean hasFocus();
// attribute DOMString designMode;
Expand Down
6 changes: 6 additions & 0 deletions tests/wpt/metadata/MANIFEST.json
Expand Up @@ -36030,6 +36030,12 @@
"deleted_reftests": {},
"items": {
"testharness": {
"cssom-view/scrolling-no-browsing-context.html": [
{
"path": "cssom-view/scrolling-no-browsing-context.html",
"url": "/cssom-view/scrolling-no-browsing-context.html"
}
],
"url/url-domainToUnicode.html": [
{
"path": "url/url-domainToUnicode.html",
Expand Down
Expand Up @@ -9,9 +9,6 @@
[readyState]
expected: FAIL

[defaultView]
expected: FAIL

[body]
expected: FAIL

Expand Down

This file was deleted.

@@ -0,0 +1,33 @@
<!doctype html>
<meta charset="utf-8">
<title>cssom-view scrolling-no-browsing-context</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
setup({explicit_done:true});
window.onload = function () {
test(function () {
var doc = document.implementation.createDocument("http://example.com/", "html", null);

var element = doc.createElement("tag")
assert_equals(element.scrollTop, 0, "scrollTop should be always 0");
assert_equals(element.scrollLeft, 0, "scrollLeft should be always 0");

element.scrollTop = 10;
element.scrollLeft = 10;
assert_equals(element.scrollTop, 0, "scrollTop should be always 0");
assert_equals(element.scrollLeft, 0, "scrollLeft should be always 0");

element.scroll(10, 10);
assert_equals(element.scrollTop, 0, "scrollTop should be always 0");
assert_equals(element.scrollLeft, 0, "scrollLeft should be always 0");

element.scrollTo(10, 10);
assert_equals(element.scrollTop, 0, "scrollTop should be always 0");
assert_equals(element.scrollLeft, 0, "scrollLeft should be always 0");

}, "Element get and set scrollTop, scrollLeft, scroll() and scrollTo() test");

done();
};
</script>

0 comments on commit 3bb093c

Please sign in to comment.