mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Auto merge of #11548 - kevgs:default_view2, r=Ms2ger
Make Document::DefaultView return a null value when there's no browsing context Fixes #11469. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11548) <!-- Reviewable:end -->
This commit is contained in:
commit
77e0089c12
7 changed files with 66 additions and 28 deletions
|
@ -2551,8 +2551,12 @@ impl DocumentMethods for Document {
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-document-defaultview
|
// https://html.spec.whatwg.org/multipage/#dom-document-defaultview
|
||||||
fn DefaultView(&self) -> Root<Window> {
|
fn GetDefaultView(&self) -> Option<Root<Window>> {
|
||||||
Root::from_ref(&*self.window)
|
if self.browsing_context.is_none() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(Root::from_ref(&*self.window))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-document-cookie
|
// https://html.spec.whatwg.org/multipage/#dom-document-cookie
|
||||||
|
|
|
@ -1315,7 +1315,10 @@ impl Element {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 5
|
// Step 5
|
||||||
let win = doc.DefaultView();
|
let win = match doc.GetDefaultView() {
|
||||||
|
None => return,
|
||||||
|
Some(win) => win,
|
||||||
|
};
|
||||||
|
|
||||||
// Step 7
|
// Step 7
|
||||||
if *self.root_element() == *self {
|
if *self.root_element() == *self {
|
||||||
|
@ -1653,7 +1656,10 @@ impl ElementMethods for Element {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 3
|
// Step 3
|
||||||
let win = doc.DefaultView();
|
let win = match doc.GetDefaultView() {
|
||||||
|
None => return 0.0,
|
||||||
|
Some(win) => win,
|
||||||
|
};
|
||||||
|
|
||||||
// Step 5
|
// Step 5
|
||||||
if *self.root_element() == *self {
|
if *self.root_element() == *self {
|
||||||
|
@ -1701,7 +1707,10 @@ impl ElementMethods for Element {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 5
|
// Step 5
|
||||||
let win = doc.DefaultView();
|
let win = match doc.GetDefaultView() {
|
||||||
|
None => return,
|
||||||
|
Some(win) => win,
|
||||||
|
};
|
||||||
|
|
||||||
// Step 7
|
// Step 7
|
||||||
if *self.root_element() == *self {
|
if *self.root_element() == *self {
|
||||||
|
@ -1739,7 +1748,10 @@ impl ElementMethods for Element {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 3
|
// Step 3
|
||||||
let win = doc.DefaultView();
|
let win = match doc.GetDefaultView() {
|
||||||
|
None => return 0.0,
|
||||||
|
Some(win) => win,
|
||||||
|
};
|
||||||
|
|
||||||
// Step 5
|
// Step 5
|
||||||
if *self.root_element() == *self {
|
if *self.root_element() == *self {
|
||||||
|
@ -1787,7 +1799,10 @@ impl ElementMethods for Element {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 5
|
// Step 5
|
||||||
let win = doc.DefaultView();
|
let win = match doc.GetDefaultView() {
|
||||||
|
None => return,
|
||||||
|
Some(win) => win,
|
||||||
|
};
|
||||||
|
|
||||||
// Step 7
|
// Step 7
|
||||||
if *self.root_element() == *self {
|
if *self.root_element() == *self {
|
||||||
|
|
|
@ -118,7 +118,7 @@ partial /*sealed*/ interface Document {
|
||||||
// void writeln(DOMString... text);
|
// void writeln(DOMString... text);
|
||||||
|
|
||||||
// user interaction
|
// user interaction
|
||||||
readonly attribute Window/*Proxy?*/ defaultView;
|
readonly attribute Window?/*Proxy?*/ defaultView;
|
||||||
readonly attribute Element? activeElement;
|
readonly attribute Element? activeElement;
|
||||||
boolean hasFocus();
|
boolean hasFocus();
|
||||||
// attribute DOMString designMode;
|
// attribute DOMString designMode;
|
||||||
|
|
|
@ -36030,6 +36030,12 @@
|
||||||
"deleted_reftests": {},
|
"deleted_reftests": {},
|
||||||
"items": {
|
"items": {
|
||||||
"testharness": {
|
"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": [
|
"url/url-domainToUnicode.html": [
|
||||||
{
|
{
|
||||||
"path": "url/url-domainToUnicode.html",
|
"path": "url/url-domainToUnicode.html",
|
||||||
|
|
|
@ -9,9 +9,6 @@
|
||||||
[readyState]
|
[readyState]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[defaultView]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[body]
|
[body]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
[Document-defaultView.html]
|
|
||||||
type: testharness
|
|
||||||
[Document created with the Document constructor]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document created with createDocument]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document created with createHTMLDocument]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document created with XML DOMParser]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document created with HTML DOMParser]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue