aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-06-14 11:59:23 -0400
committerGitHub <noreply@github.com>2018-06-14 11:59:23 -0400
commit3279d1fe85d3aa8dbb99c59b4184e4bc3cc6c54b (patch)
tree860a179e55bf345cf4569e1f4ea6410955ce8db1
parentd6edd5b4381168d76e7a58c3991c8896eba74eb2 (diff)
parentba9975e0991b700e7560dfc81c00ae4d77136aa2 (diff)
downloadservo-3279d1fe85d3aa8dbb99c59b4184e4bc3cc6c54b.tar.gz
servo-3279d1fe85d3aa8dbb99c59b4184e4bc3cc6c54b.zip
Auto merge of #21051 - jonathanKingston:window-length, r=jdm
Implement window.length DOM attribute. Implements the `window.length` DOM attribute for enumerating frames on the document. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors <!-- Either: --> - [X] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21051) <!-- Reviewable:end -->
-rw-r--r--components/script/dom/webidls/Window.webidl2
-rw-r--r--components/script/dom/window.rs6
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini14
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini3
5 files changed, 7 insertions, 21 deletions
diff --git a/components/script/dom/webidls/Window.webidl b/components/script/dom/webidls/Window.webidl
index 0cda7d2d800..8416cd49334 100644
--- a/components/script/dom/webidls/Window.webidl
+++ b/components/script/dom/webidls/Window.webidl
@@ -31,7 +31,7 @@
// other browsing contexts
[Replaceable] readonly attribute WindowProxy frames;
- //[Replaceable] readonly attribute unsigned long length;
+ [Replaceable] readonly attribute unsigned long length;
// Note that this can return null in the case that the browsing context has been discarded.
// https://github.com/whatwg/html/issues/2115
[Unforgeable] readonly attribute WindowProxy? top;
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 756bfb5a555..2db7609bec4 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -694,6 +694,12 @@ impl WindowMethods for Window {
self.window_proxy()
}
+ // https://html.spec.whatwg.org/multipage/#accessing-other-browsing-contexts
+ fn Length(&self) -> u32 {
+ let doc = self.Document();
+ doc.iter_iframes().count() as u32
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-parent
fn GetParent(&self) -> Option<DomRoot<WindowProxy>> {
// Steps 1-3.
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini
index cb2181467b2..14c025aa804 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini
@@ -1,19 +1,5 @@
[window_length.html]
type: testharness
- [No child browsing contexts]
- expected: FAIL
-
- [iframe not inserted into the document]
- expected: FAIL
-
- [One iframe inserted into the document]
- expected: FAIL
-
- [Child browsing context has a child browsing context]
- expected: FAIL
-
- [window.length in child frame]
- expected: FAIL
[Opened window]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini
index 09988facd1b..c18a4adb31e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini
@@ -335,9 +335,6 @@
[A SecurityError exception must be thrown when window.stop is accessed from a different origin.]
expected: FAIL
- [A SecurityError exception should not be thrown when window.length is accessed from a different origin.]
- expected: FAIL
-
[A SecurityError exception should not be thrown when window.opener is accessed from a different origin.]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini
index 69a79de6c40..a3d1d406971 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini
@@ -53,9 +53,6 @@
[Window replaceable attribute: external]
expected: FAIL
- [Window replaceable attribute: length]
- expected: FAIL
-
[Window replaceable attribute: screen]
expected: FAIL