Auto merge of #12552 - ConnorGBrewster:history_interface, r=asajeffrey

History interface Go, Back, and Forward

<!-- Please describe your changes on the following line: -->
r? @asajeffrey

---
<!-- 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
- [X] These changes fix #5670 (github issue number if applicable).

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

implement go, forward, back

<!-- 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/12552)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-07-22 15:34:14 -05:00 committed by GitHub
commit 0e887ca8d3
18 changed files with 324 additions and 66 deletions

View file

@ -2,4 +2,3 @@
type: testharness
expected: CRASH
bug: https://github.com/servo/servo/issues/10539

View file

@ -1,5 +0,0 @@
[PopStateEvent.html]
type: testharness
[Dispatching a synthetic PopStateEvent]
expected: FAIL

View file

@ -1,5 +1,3 @@
[browsing_context_name_cross_origin.html]
type: testharness
[Restoring window.name on cross-origin history traversal]
expected: FAIL
disabled: see https://github.com/whatwg/html/issues/490

View file

@ -3,9 +3,6 @@
[Default value is "auto"]
expected: FAIL
[It is writable]
expected: FAIL
[Invalid values are ignored]
expected: FAIL

View file

@ -1,3 +1,101 @@
[001.html]
type: testharness
expected: TIMEOUT
[history.length should update when loading pages in an iframe]
expected: FAIL
[history.length should update when setting location.hash]
expected: FAIL
[history.pushState must exist]
expected: FAIL
[history.pushState must exist within iframes]
expected: FAIL
[initial history.state should be null]
expected: FAIL
[history.length should update when pushing a state]
expected: FAIL
[history.state should update after a state is pushed]
expected: FAIL
[traversing history must traverse pushed states]
expected: FAIL
[pushState must not be allowed to create invalid URLs]
expected: FAIL
[pushState must not be allowed to create cross-origin URLs]
expected: FAIL
[pushState must not be allowed to create cross-origin URLs (about:blank)]
expected: FAIL
[pushState must not be allowed to create cross-origin URLs (data:URI)]
expected: FAIL
[security errors are expected to be thrown in the context of the document that owns the history object]
expected: FAIL
[location.hash must be allowed to change (part 1)]
expected: FAIL
[location.hash must be allowed to change (part 2)]
expected: FAIL
[pushState must not alter location.hash when no URL is provided]
expected: FAIL
[pushState must remove all history after the current state]
expected: FAIL
[pushState must be able to set location.hash]
expected: FAIL
[pushState must remove any tasks queued by the history traversal task source]
expected: FAIL
[pushState must be able to set location.pathname]
expected: FAIL
[pushState must be able to set absolute URLs to the same host]
expected: FAIL
[pushState must not be able to use a function as data]
expected: FAIL
[pushState must not be able to use a DOM node as data]
expected: FAIL
[pushState must not be able to use an error object as data]
expected: FAIL
[security errors are expected to be thrown in the context of the document that owns the history object (2)]
expected: FAIL
[pushState must be able to make structured clones of complex objects]
expected: FAIL
[history.state should also reference a clone of the original object]
expected: FAIL
[popstate event should fire when navigation occurs]
expected: FAIL
[popstate event should pass the state data]
expected: FAIL
[state data should cope with circular object references]
expected: FAIL
[state data should be a clone of the original object, not a reference to it]
expected: FAIL
[history.state should also reference a clone of the original object (2)]
expected: FAIL
[history.state should be a separate clone of the object, not a reference to the object passed to the event handler]
expected: FAIL

View file

@ -1,3 +1,98 @@
[002.html]
type: testharness
expected: TIMEOUT
[history.length should update when loading pages in an iframe]
expected: FAIL
[history.length should update when setting location.hash]
expected: FAIL
[history.replaceState must exist]
expected: FAIL
[history.replaceState must exist within iframes]
expected: FAIL
[initial history.state should be null]
expected: FAIL
[history.length should not update when replacing a state with no URL]
expected: FAIL
[history.state should update after a state is pushed]
expected: FAIL
[hash should not change when replaceState is called without a URL]
expected: FAIL
[history.length should not update when replacing a state with a URL]
expected: FAIL
[hash should change when replaceState is called with a URL]
expected: FAIL
[replaceState must replace the existing state without altering the forward history]
expected: FAIL
[replaceState must not be allowed to create invalid URLs]
expected: FAIL
[replaceState must not be allowed to create cross-origin URLs]
expected: FAIL
[replaceState must not be allowed to create cross-origin URLs (about:blank)]
expected: FAIL
[replaceState must not be allowed to create cross-origin URLs (data:URI)]
expected: FAIL
[security errors are expected to be thrown in the context of the document that owns the history object]
expected: FAIL
[replaceState must be able to set location.pathname]
expected: FAIL
[replaceState must be able to set absolute URLs to the same host]
expected: FAIL
[replaceState must not remove any tasks queued by the history traversal task source]
expected: FAIL
[.go must queue a task with the history traversal task source (run asynchronously)]
expected: FAIL
[replaceState must not be able to use a function as data]
expected: FAIL
[replaceState must not be able to use a DOM node as data]
expected: FAIL
[replaceState must not be able to use an error object as data]
expected: FAIL
[security errors are expected to be thrown in the context of the document that owns the history object (2)]
expected: FAIL
[replaceState must be able to make structured clones of complex objects]
expected: FAIL
[history.state should also reference a clone of the original object]
expected: FAIL
[popstate event should fire when navigation occurs]
expected: FAIL
[popstate event should pass the state data]
expected: FAIL
[state data should cope with circular object references]
expected: FAIL
[state data should be a clone of the original object, not a reference to it]
expected: FAIL
[history.state should also reference a clone of the original object (2)]
expected: FAIL
[history.state should be a separate clone of the object, not a reference to the object passed to the event handler]
expected: FAIL

View file

@ -1,3 +1,11 @@
[004.html]
type: testharness
expected: TIMEOUT
[.go commands should be queued until the thread has ended]
expected: FAIL
[browser needs to support hashchange events for this testcase]
expected: FAIL
[queued .go commands should all be executed when the queue is processed]
expected: FAIL

View file

@ -1,6 +1,11 @@
[005.html]
type: testharness
expected: TIMEOUT
[history.pushState support is needed for this testcase]
expected: FAIL
[<body onpopstate="..."> should register a listener for the popstate event]
expected: FAIL
[window.onpopstate should register a listener for the popstate event]
expected: FAIL

View file

@ -1,6 +1,5 @@
[007.html]
type: testharness
expected: TIMEOUT
[history.state should initially be null]
expected: FAIL
@ -10,3 +9,15 @@
[history.state should reflect pushed state]
expected: FAIL
[popstate event should fire before onload fires]
expected: FAIL
[the correct state should be restored when navigating during initial load]
expected: FAIL
[history.state should reflect the navigated state onload]
expected: FAIL
[history.state should reflect the navigated state after onload]
expected: FAIL

View file

@ -1,5 +0,0 @@
[location_assign_about_blank.html]
type: testharness
[location.assign with initial about:blank browsing context]
expected: FAIL

View file

@ -5613,45 +5613,18 @@
[BarProp interface: attribute visible]
expected: FAIL
[History interface: existence and properties of interface object]
expected: FAIL
[History interface object length]
expected: FAIL
[History interface: existence and properties of interface prototype object]
expected: FAIL
[History interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[History interface: attribute length]
expected: FAIL
[History interface: attribute state]
expected: FAIL
[History interface: operation go(long)]
expected: FAIL
[History interface: operation back()]
expected: FAIL
[History interface: operation forward()]
expected: FAIL
[History interface: operation pushState(any,DOMString,DOMString)]
expected: FAIL
[History interface: operation replaceState(any,DOMString,DOMString)]
expected: FAIL
[History must be primary interface of window.history]
expected: FAIL
[Stringification of window.history]
expected: FAIL
[History interface: window.history must inherit property "length" with the proper type (0)]
expected: FAIL
@ -5661,9 +5634,6 @@
[History interface: window.history must inherit property "go" with the proper type (2)]
expected: FAIL
[History interface: calling go(long) on window.history with too few arguments must throw TypeError]
expected: FAIL
[History interface: window.history must inherit property "back" with the proper type (3)]
expected: FAIL
@ -7236,9 +7206,6 @@
[BarProp interface object name]
expected: FAIL
[History interface object name]
expected: FAIL
[ApplicationCache interface object name]
expected: FAIL
@ -7290,15 +7257,6 @@
[History interface: window.history must inherit property "state" with the proper type (2)]
expected: FAIL
[History interface: window.history must inherit property "go" with the proper type (3)]
expected: FAIL
[History interface: window.history must inherit property "back" with the proper type (4)]
expected: FAIL
[History interface: window.history must inherit property "forward" with the proper type (5)]
expected: FAIL
[History interface: window.history must inherit property "pushState" with the proper type (6)]
expected: FAIL

View file

@ -49,6 +49,7 @@ test_interfaces([
"FormData",
"HashChangeEvent",
"Headers",
"History",
"HTMLAnchorElement",
"HTMLAppletElement",
"HTMLAreaElement",

View file

@ -44,7 +44,8 @@ test_interfaces([
"FocusEvent",
"FormData",
"HashChangeEvent",
"Headers",
"Headers",
"History",
"HTMLAnchorElement",
"HTMLAppletElement",
"HTMLAreaElement",